X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=utilities%2Fovs-dpctl.c;h=e724e745b2316787c5c396cb2cf20733e94f0138;hb=f613a0d72c521ca3a4eeb2c29ac523f6fdf72667;hp=3b4749c7fd6278d228732138ca07db0bc4eb5365;hpb=de5cdb90f7c02d22b0595c7dc311c5306291b02f;p=sliver-openvswitch.git diff --git a/utilities/ovs-dpctl.c b/utilities/ovs-dpctl.c index 3b4749c7f..e724e745b 100644 --- a/utilities/ovs-dpctl.c +++ b/utilities/ovs-dpctl.c @@ -166,7 +166,7 @@ static int if_up(const char *netdev_name) struct netdev *netdev; int retval; - retval = netdev_open_default(netdev_name, &netdev); + retval = netdev_open(netdev_name, "system", &netdev); if (!retval) { retval = netdev_turn_flags_on(netdev, NETDEV_UP, true); netdev_close(netdev); @@ -222,17 +222,17 @@ do_add_if(int argc OVS_UNUSED, char *argv[]) run(parsed_dpif_open(argv[1], false, &dpif), "opening datapath"); for (i = 2; i < argc; i++) { + const char *name, *type; char *save_ptr = NULL; - struct netdev_options options; struct netdev *netdev = NULL; struct shash args; char *option; int error; - options.name = strtok_r(argv[i], ",", &save_ptr); - options.type = "system"; + name = strtok_r(argv[i], ",", &save_ptr); + type = "system"; - if (!options.name) { + if (!name) { ovs_error(0, "%s is not a valid network device name", argv[i]); continue; } @@ -249,33 +249,31 @@ do_add_if(int argc OVS_UNUSED, char *argv[]) } if (!strcmp(key, "type")) { - options.type = value; + type = value; } else if (!shash_add_once(&args, key, value)) { ovs_error(0, "duplicate \"%s\" option", key); } } - error = netdev_open(&options, &netdev); + error = netdev_open(name, type, &netdev); if (error) { - ovs_error(error, "%s: failed to open network device", - options.name); + ovs_error(error, "%s: failed to open network device", name); goto next; } error = netdev_set_config(netdev, &args); if (error) { - ovs_error(error, "%s: failed to configure network device", - options.name); + ovs_error(error, "%s: failed to configure network device", name); goto next; } error = dpif_port_add(dpif, netdev, NULL); if (error) { - ovs_error(error, "adding %s to %s failed", options.name, argv[1]); + ovs_error(error, "adding %s to %s failed", name, argv[1]); goto next; } - error = if_up(options.name); + error = if_up(name); next: netdev_close(netdev); @@ -368,7 +366,8 @@ show_dpif(struct dpif *dpif) { struct dpif_port_dump dump; struct dpif_port dpif_port; - struct odp_stats stats; + struct ovs_dp_stats stats; + struct netdev *netdev; printf("%s:\n", dpif_name(dpif)); if (!dpif_get_dp_stats(dpif, &stats)) { @@ -383,15 +382,11 @@ show_dpif(struct dpif *dpif) printf("\tport %u: %s", dpif_port.port_no, dpif_port.name); if (strcmp(dpif_port.type, "system")) { - struct netdev_options netdev_options; - struct netdev *netdev; int error; printf (" (%s", dpif_port.type); - netdev_options.name = dpif_port.name; - netdev_options.type = dpif_port.type; - error = netdev_open(&netdev_options, &netdev); + error = netdev_open(dpif_port.name, dpif_port.type, &netdev); if (!error) { struct shash config; @@ -423,29 +418,42 @@ show_dpif(struct dpif *dpif) putchar('\n'); if (print_statistics) { - const struct netdev_stats *s = &dpif_port.stats; + struct netdev_stats s; + int error; + + error = netdev_open(dpif_port.name, dpif_port.type, &netdev); + if (error) { + printf(", open failed (%s)", strerror(error)); + continue; + } + error = netdev_get_stats(netdev, &s); + if (error) { + printf(", could not retrieve stats (%s)", strerror(error)); + continue; + } - print_stat("\t\tRX packets:", s->rx_packets); - print_stat(" errors:", s->rx_errors); - print_stat(" dropped:", s->rx_dropped); - print_stat(" overruns:", s->rx_over_errors); - print_stat(" frame:", s->rx_frame_errors); + netdev_close(netdev); + print_stat("\t\tRX packets:", s.rx_packets); + print_stat(" errors:", s.rx_errors); + print_stat(" dropped:", s.rx_dropped); + print_stat(" overruns:", s.rx_over_errors); + print_stat(" frame:", s.rx_frame_errors); printf("\n"); - print_stat("\t\tTX packets:", s->tx_packets); - print_stat(" errors:", s->tx_errors); - print_stat(" dropped:", s->tx_dropped); - print_stat(" aborted:", s->tx_aborted_errors); - print_stat(" carrier:", s->tx_carrier_errors); + print_stat("\t\tTX packets:", s.tx_packets); + print_stat(" errors:", s.tx_errors); + print_stat(" dropped:", s.tx_dropped); + print_stat(" aborted:", s.tx_aborted_errors); + print_stat(" carrier:", s.tx_carrier_errors); printf("\n"); - print_stat("\t\tcollisions:", s->collisions); + print_stat("\t\tcollisions:", s.collisions); printf("\n"); - print_stat("\t\tRX bytes:", s->rx_bytes); - print_human_size(s->rx_bytes); - print_stat(" TX bytes:", s->tx_bytes); - print_human_size(s->tx_bytes); + print_stat("\t\tRX bytes:", s.rx_bytes); + print_human_size(s.rx_bytes); + print_stat(" TX bytes:", s.tx_bytes); + print_human_size(s.tx_bytes); printf("\n"); } }