diff options
author | Justin Pettit <jpettit@ovn.org> | 2018-07-01 23:33:48 -0700 |
---|---|---|
committer | Justin Pettit <jpettit@ovn.org> | 2018-07-30 17:57:13 -0700 |
commit | 441fef6bf89178735ac0c3eeddedd385ae812e94 (patch) | |
tree | ac27cbf7fa7fe5e21ba1ca72479cfbf97032b9e2 /ovn/controller | |
parent | 1aa1d9889a968658ec44f532c195124cb6571ae9 (diff) | |
download | openvswitch-441fef6bf89178735ac0c3eeddedd385ae812e94.tar.gz |
ovn-controller: Add "group-table-list" ovs-appctl command.
Signed-off-by: Justin Pettit <jpettit@ovn.org>
Acked-by: Ben Pfaff <blp@ovn.org>
Diffstat (limited to 'ovn/controller')
-rw-r--r-- | ovn/controller/ovn-controller.8.xml | 5 | ||||
-rw-r--r-- | ovn/controller/ovn-controller.c | 30 |
2 files changed, 35 insertions, 0 deletions
diff --git a/ovn/controller/ovn-controller.8.xml b/ovn/controller/ovn-controller.8.xml index 7d8fa66d7..2e4e53d6b 100644 --- a/ovn/controller/ovn-controller.8.xml +++ b/ovn/controller/ovn-controller.8.xml @@ -374,6 +374,11 @@ Lists each meter table entry and its local meter id. </dd> + <dt><code>group-table-list</code></dt> + <dd> + Lists each group table entry and its local group id. + </dd> + <dt><code>inject-pkt</code> <var>microflow</var></dt> <dd> <p> diff --git a/ovn/controller/ovn-controller.c b/ovn/controller/ovn-controller.c index 62caace24..008f81d70 100644 --- a/ovn/controller/ovn-controller.c +++ b/ovn/controller/ovn-controller.c @@ -66,6 +66,7 @@ VLOG_DEFINE_THIS_MODULE(main); static unixctl_cb_func ovn_controller_exit; static unixctl_cb_func ct_zone_list; static unixctl_cb_func meter_table_list; +static unixctl_cb_func group_table_list; static unixctl_cb_func inject_pkt; #define DEFAULT_BRIDGE_NAME "br-int" @@ -566,6 +567,8 @@ main(int argc, char *argv[]) /* Initialize group ids for loadbalancing. */ struct ovn_extend_table group_table; ovn_extend_table_init(&group_table); + unixctl_command_register("group-table-list", "", 0, 0, + group_table_list, &group_table); /* Initialize meter ids for QoS. */ struct ovn_extend_table meter_table; @@ -1055,6 +1058,33 @@ meter_table_list(struct unixctl_conn *conn, int argc OVS_UNUSED, } static void +group_table_list(struct unixctl_conn *conn, int argc OVS_UNUSED, + const char *argv[] OVS_UNUSED, void *group_table_) +{ + struct ovn_extend_table *group_table = group_table_; + struct ds ds = DS_EMPTY_INITIALIZER; + struct simap groups = SIMAP_INITIALIZER(&groups); + + struct ovn_extend_table_info *m_installed, *next_group; + EXTEND_TABLE_FOR_EACH_INSTALLED (m_installed, next_group, group_table) { + simap_put(&groups, m_installed->name, m_installed->table_id); + } + + const struct simap_node **nodes = simap_sort(&groups); + size_t n_nodes = simap_count(&groups); + for (size_t i = 0; i < n_nodes; i++) { + const struct simap_node *node = nodes[i]; + ds_put_format(&ds, "%s: %d\n", node->name, node->data); + } + + free(nodes); + simap_destroy(&groups); + + unixctl_command_reply(conn, ds_cstr(&ds)); + ds_destroy(&ds); +} + +static void inject_pkt(struct unixctl_conn *conn, int argc OVS_UNUSED, const char *argv[], void *pending_pkt_) { |