vici: Add option to query a specific pool
authorTobias Brunner <tobias@strongswan.org>
Wed, 9 Nov 2016 09:18:01 +0000 (10:18 +0100)
committerTobias Brunner <tobias@strongswan.org>
Thu, 16 Feb 2017 18:21:12 +0000 (19:21 +0100)
src/libcharon/plugins/vici/README.md
src/libcharon/plugins/vici/vici_attribute.c

index 4e53d7c..be0eff5 100644 (file)
@@ -569,6 +569,7 @@ List the currently loaded pools.
 
        {
                leases = <set to yes to include leases>
+               name = <optional name of the pool to query>
        } => {
                <pool name>* = {
                        base = <virtual IP pool base address>
index e0d9b4a..4e1fa97 100644 (file)
@@ -1,6 +1,6 @@
 /*
- * Copyright (C) 2014-2015 Tobias Brunner
- * Hochschule fuer Technik Rapperswil
+ * Copyright (C) 2014-2016 Tobias Brunner
+ * HSR Hochschule fuer Technik Rapperswil
  *
  * Copyright (C) 2014 Martin Willi
  * Copyright (C) 2014 revosec AG
@@ -668,10 +668,11 @@ CALLBACK(get_pools, vici_message_t*,
        identification_t *uid;
        host_t *lease;
        bool list_leases, on;
-       char buf[32];
+       char buf[32], *filter;
        int i;
 
        list_leases = message->get_bool(message, FALSE, "leases");
+       filter = message->get_str(message, NULL, "name");
 
        builder = vici_builder_create();
 
@@ -679,6 +680,11 @@ CALLBACK(get_pools, vici_message_t*,
        enumerator = this->pools->create_enumerator(this->pools);
        while (enumerator->enumerate(enumerator, &name, &pool))
        {
+               if (filter && !streq(name, filter))
+               {
+                       continue;
+               }
+
                vips = pool->vips;
 
                builder->begin_section(builder, name);