X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=utilities%2Fovs-dpctl.c;h=658f6ba106b3f6c0da6b7790edea15acc20e5037;hb=e7009c364026d69381cdda23941f99ff040d4948;hp=2e2197ed5e999e6dd4d9184b21132563fc6a0fa7;hpb=ea7bd5973fb426f3a6ea66b0953c6000980e77ec;p=openvswitch diff --git a/utilities/ovs-dpctl.c b/utilities/ovs-dpctl.c index 2e2197ed..658f6ba1 100644 --- a/utilities/ovs-dpctl.c +++ b/utilities/ovs-dpctl.c @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -241,7 +241,7 @@ do_add_if(int argc OVS_UNUSED, char *argv[]) } shash_init(&args); - while ((option = strtok_r(NULL, "", &save_ptr)) != NULL) { + while ((option = strtok_r(NULL, ",", &save_ptr)) != NULL) { char *save_ptr_2 = NULL; char *key, *value; @@ -338,15 +338,11 @@ show_dpif(struct dpif *dpif) printf("%s:\n", dpif_name(dpif)); if (!dpif_get_dp_stats(dpif, &stats)) { - printf("\tports: cur:%"PRIu32", max:%"PRIu32"\n", - stats.n_ports, stats.max_ports); 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); } DPIF_PORT_FOR_EACH (&dpif_port, &dump, dpif) { printf("\tport %u: %s", dpif_port.port_no, dpif_port.name); @@ -484,32 +480,27 @@ do_dump_dps(int argc OVS_UNUSED, char *argv[] OVS_UNUSED) static void do_dump_flows(int argc OVS_UNUSED, char *argv[]) { + const struct dpif_flow_stats *stats; + const struct nlattr *actions; struct dpif_flow_dump dump; + const struct nlattr *key; + size_t actions_len; struct dpif *dpif; + size_t key_len; struct ds ds; run(parsed_dpif_open(argv[1], false, &dpif), "opening datapath"); ds_init(&ds); dpif_flow_dump_start(&dump, dpif); - for (;;) { - enum { MAX_ACTIONS = 4096 }; /* An arbitrary but large number. */ - uint32_t actions[MAX_ACTIONS * sizeof(struct nlattr) / 4]; - uint32_t keybuf[ODPUTIL_FLOW_KEY_U32S]; - struct odp_flow f; - - memset(&f, 0, sizeof f); - f.actions = (struct nlattr *) actions; - f.actions_len = sizeof actions; - f.key = (struct nlattr *) keybuf; - f.key_len = sizeof keybuf; - - if (!dpif_flow_dump_next(&dump, &f)) { - break; - } - + while (dpif_flow_dump_next(&dump, &key, &key_len, + &actions, &actions_len, &stats)) { ds_clear(&ds); - format_odp_flow(&ds, &f); + odp_flow_key_format(key, key_len, &ds); + ds_put_cstr(&ds, ", "); + dpif_flow_stats_format(stats, &ds); + ds_put_cstr(&ds, ", actions:"); + format_odp_actions(&ds, actions, actions_len); printf("%s\n", ds_cstr(&ds)); } dpif_flow_dump_done(&dump);