Include manual policy priorities and restriction to interfaces in vici list-conn...
authorAndreas Steffen <andreas.steffen@strongswan.org>
Mon, 28 Mar 2016 07:03:21 +0000 (09:03 +0200)
committerAndreas Steffen <andreas.steffen@strongswan.org>
Sat, 9 Apr 2016 14:51:02 +0000 (16:51 +0200)
src/libcharon/plugins/vici/vici_query.c
src/swanctl/commands/list_conns.c

index 3a005ea..4bad889 100644 (file)
@@ -682,7 +682,8 @@ CALLBACK(list_conns, vici_message_t*,
        peer_cfg_t *peer_cfg;
        ike_cfg_t *ike_cfg;
        child_cfg_t *child_cfg;
-       char *ike, *str;
+       char *ike, *str, *interface;
+       uint32_t manual_prio;
        linked_list_t *list;
        traffic_selector_t *ts;
        vici_builder_t *b;
@@ -761,6 +762,18 @@ CALLBACK(list_conns, vici_message_t*,
                        list->destroy_offset(list, offsetof(traffic_selector_t, destroy));
                        b->end_list(b /* remote-ts */);
 
+                       interface = child_cfg->get_interface(child_cfg);
+                       if (interface)
+                       {
+                               b->add_kv(b, "interface", "%s", interface);
+                       }
+
+                       manual_prio = child_cfg->get_manual_prio(child_cfg);
+                       if (manual_prio)
+                       {
+                               b->add_kv(b, "priority", "%u", manual_prio);
+                       }
+
                        b->end_section(b);
                }
                children->destroy(children);
index 019c888..22a5633 100644 (file)
@@ -80,6 +80,7 @@ CALLBACK(children_sn, int,
        hashtable_t *ike, vici_res_t *res, char *name)
 {
        hashtable_t *child;
+       char *interface, *priority;
        int ret;
 
        child = hashtable_create(hashtable_hash_str, hashtable_equals_str, 1);
@@ -89,6 +90,18 @@ CALLBACK(children_sn, int,
                printf("  %s: %s\n", name, child->get(child, "mode"));
                printf("    local:  %s\n", child->get(child, "local-ts"));
                printf("    remote: %s\n", child->get(child, "remote-ts"));
+
+               interface = child->get(child, "interface");
+               if (interface)
+               {
+                       printf("    interface: %s\n", interface);
+               }
+
+               priority = child->get(child, "priority");
+               if (priority)
+               {
+                       printf("    priority: %s\n", priority);
+               }
        }
        free_hashtable(child);
        return ret;