X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=utilities%2Fovs-dpctl.c;h=8e9ed3dea8f21df1b74bcff3a9eefabc10f45e16;hb=refs%2Fheads%2Fxs5.7;hp=270281832d94362ba81e8d7de4dcb5ef671db164;hpb=baa905d36b831881ceb20686f567dead3ec0bf14;p=sliver-openvswitch.git diff --git a/utilities/ovs-dpctl.c b/utilities/ovs-dpctl.c index 270281832..8e9ed3dea 100644 --- a/utilities/ovs-dpctl.c +++ b/utilities/ovs-dpctl.c @@ -36,6 +36,7 @@ #include "dynamic-string.h" #include "netdev.h" #include "odp-util.h" +#include "svec.h" #include "timeval.h" #include "util.h" @@ -157,6 +158,7 @@ usage(void) " del-dp DP delete local datapath DP\n" " add-if DP IFACE... add each IFACE as a port on DP\n" " del-if DP IFACE... delete each IFACE from DP\n" + " dump-dps display names of all datapaths\n" " show show basic info on all datapaths\n" " show DP... show basic info on each DP\n" " dump-flows DP display flows in DP\n" @@ -369,9 +371,11 @@ show_dpif(struct dpif *dpif) printf("\tports: cur:%"PRIu32", max:%"PRIu32"\n", stats.n_ports, stats.max_ports); printf("\tgroups: max:%"PRIu16"\n", stats.max_groups); - printf("\tlookups: frags:%"PRIu64", hit:%"PRIu64", missed:%"PRIu64", " - "lost:%"PRIu64"\n", - stats.n_frags, stats.n_hit, stats.n_missed, stats.n_lost); + printf("\tlookups: frags:%llu, hit:%llu, missed:%llu, lost:%llu\n", + (unsigned long long int) stats.n_frags, + (unsigned long long int) stats.n_hit, + (unsigned long long int) stats.n_missed, + (unsigned long long int) stats.n_lost); printf("\tqueues: max-miss:%"PRIu16", max-action:%"PRIu16"\n", stats.max_miss_queue, stats.max_action_queue); } @@ -388,7 +392,7 @@ show_dpif(struct dpif *dpif) } static void -do_show(int argc UNUSED, char *argv[]) +do_show(int argc, char *argv[]) { bool failure = false; if (argc > 1) { @@ -428,6 +432,30 @@ do_show(int argc UNUSED, char *argv[]) } } +static void +do_dump_dps(int argc UNUSED, char *argv[] UNUSED) +{ + struct svec all_dps; + unsigned int i; + int error; + + svec_init(&all_dps); + error = dp_enumerate(&all_dps); + + for (i = 0; i < all_dps.n; i++) { + struct dpif *dpif; + if (!dpif_open(all_dps.names[i], &dpif)) { + printf("%s\n", dpif_name(dpif)); + dpif_close(dpif); + } + } + + svec_destroy(&all_dps); + if (error) { + exit(EXIT_FAILURE); + } +} + static void do_dump_flows(int argc UNUSED, char *argv[]) { @@ -506,6 +534,7 @@ static struct command all_commands[] = { { "del-dp", 1, 1, do_del_dp }, { "add-if", 2, INT_MAX, do_add_if }, { "del-if", 2, INT_MAX, do_del_if }, + { "dump-dps", 0, 0, do_dump_dps }, { "show", 0, INT_MAX, do_show }, { "dump-flows", 1, 1, do_dump_flows }, { "del-flows", 1, 1, do_del_flows },