Looks good. Ethan
On Fri, Aug 5, 2011 at 14:42, Ben Pfaff <[email protected]> wrote: > Now that netdev_options only has two members, we might as well pass them > directly as parameters. > --- > lib/bond.c | 2 +- > lib/dpif-netdev.c | 9 +++------ > lib/netdev-vport.c | 2 +- > lib/netdev.c | 32 +++++++++++--------------------- > lib/netdev.h | 8 +------- > ofproto/in-band.c | 4 ++-- > ofproto/ofproto-dpif-sflow.c | 4 ++-- > ofproto/ofproto.c | 7 +------ > tests/test-openflowd.c | 2 +- > utilities/ovs-dpctl.c | 29 ++++++++++++----------------- > vswitchd/bridge.c | 10 ++-------- > vswitchd/ovs-brcompatd.c | 2 +- > 12 files changed, 38 insertions(+), 73 deletions(-) > > diff --git a/lib/bond.c b/lib/bond.c > index 9a13874..ae914dd 100644 > --- a/lib/bond.c > +++ b/lib/bond.c > @@ -1507,7 +1507,7 @@ bond_update_fake_slave_stats(struct bond *bond) > } > } > > - if (!netdev_open_default(bond->name, &bond_dev)) { > + if (!netdev_open(bond->name, "system", &bond_dev)) { > netdev_set_stats(bond_dev, &bond_stats); > netdev_close(bond_dev); > } > diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c > index fa6b549..9f281c2 100644 > --- a/lib/dpif-netdev.c > +++ b/lib/dpif-netdev.c > @@ -331,7 +331,6 @@ do_add_port(struct dp_netdev *dp, const char *devname, > const char *type, > uint16_t port_no) > { > struct dp_netdev_port *port; > - struct netdev_options netdev_options; > struct netdev *netdev; > bool internal; > int mtu; > @@ -348,15 +347,13 @@ do_add_port(struct dp_netdev *dp, const char *devname, > const char *type, > } > > /* Open and validate network device. */ > - memset(&netdev_options, 0, sizeof netdev_options); > - netdev_options.name = devname; > if (dp->class == &dpif_dummy_class) { > - netdev_options.type = "dummy"; > + type = "dummy"; > } else if (internal) { > - netdev_options.type = "tap"; > + type = "tap"; > } > > - error = netdev_open(&netdev_options, &netdev); > + error = netdev_open(devname, type, &netdev); > if (error) { > return error; > } > diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c > index fc20232..8e5b5b5 100644 > --- a/lib/netdev-vport.c > +++ b/lib/netdev-vport.c > @@ -435,7 +435,7 @@ netdev_vport_get_status(const struct netdev *netdev, > struct shash *sh) > > shash_add(sh, "tunnel_egress_iface", xstrdup(iface)); > > - if (!netdev_open_default(iface, &egress_netdev)) { > + if (!netdev_open(iface, "system", &egress_netdev)) { > shash_add(sh, "tunnel_egress_iface_carrier", > xstrdup(netdev_get_carrier(egress_netdev) > ? "up" : "down")); > diff --git a/lib/netdev.c b/lib/netdev.c > index ec8ae4f..cd824f8 100644 > --- a/lib/netdev.c > +++ b/lib/netdev.c > @@ -192,14 +192,15 @@ netdev_enumerate_types(struct sset *types) > } > } > > -/* Opens the network device named 'name' (e.g. "eth0") and returns zero if > - * successful, otherwise a positive errno value. On success, sets '*netdevp' > - * to the new network device, otherwise to null. > +/* Opens the network device named 'name' (e.g. "eth0") of the specified > 'type' > + * (e.g. "system") and returns zero if successful, otherwise a positive errno > + * value. On success, sets '*netdevp' to the new network device, otherwise > to > + * null. > * > * Some network devices may need to be configured (with netdev_set_config()) > * before they can be used. */ > int > -netdev_open(struct netdev_options *options, struct netdev **netdevp) > +netdev_open(const char *name, const char *type, struct netdev **netdevp) > { > struct netdev_dev *netdev_dev; > int error; > @@ -207,18 +208,18 @@ netdev_open(struct netdev_options *options, struct > netdev **netdevp) > *netdevp = NULL; > netdev_initialize(); > > - netdev_dev = shash_find_data(&netdev_dev_shash, options->name); > + netdev_dev = shash_find_data(&netdev_dev_shash, name); > > if (!netdev_dev) { > const struct netdev_class *class; > > - class = netdev_lookup_provider(options->type); > + class = netdev_lookup_provider(type); > if (!class) { > VLOG_WARN("could not create netdev %s of unknown type %s", > - options->name, options->type); > + name, type); > return EAFNOSUPPORT; > } > - error = class->create(class, options->name, &netdev_dev); > + error = class->create(class, name, &netdev_dev); > if (error) { > return error; > } > @@ -239,17 +240,6 @@ netdev_open(struct netdev_options *options, struct > netdev **netdevp) > return error; > } > > -int > -netdev_open_default(const char *name, struct netdev **netdevp) > -{ > - struct netdev_options options; > - > - memset(&options, 0, sizeof options); > - options.name = name; > - > - return netdev_open(&options, netdevp); > -} > - > /* Reconfigures the device 'netdev' with 'args'. 'args' may be empty > * or NULL if none are needed. */ > int > @@ -321,7 +311,7 @@ netdev_exists(const char *name) > struct netdev *netdev; > int error; > > - error = netdev_open_default(name, &netdev); > + error = netdev_open(name, "system", &netdev); > if (!error) { > netdev_close(netdev); > return true; > @@ -1265,7 +1255,7 @@ netdev_find_dev_by_in4(const struct in_addr *in4) > SSET_FOR_EACH (name, &dev_list) { > struct in_addr dev_in4; > > - if (!netdev_open_default(name, &netdev) > + if (!netdev_open(name, "system", &netdev) > && !netdev_get_in4(netdev, &dev_in4, NULL) > && dev_in4.s_addr == in4->s_addr) { > goto exit; > diff --git a/lib/netdev.h b/lib/netdev.h > index bcbd8b0..13d2ee7 100644 > --- a/lib/netdev.h > +++ b/lib/netdev.h > @@ -75,11 +75,6 @@ struct netdev_stats { > uint64_t tx_window_errors; > }; > > -struct netdev_options { > - const char *name; > - const char *type; > -}; > - > struct netdev; > struct netdev_class; > > @@ -89,8 +84,7 @@ void netdev_wait(void); > void netdev_enumerate_types(struct sset *types); > > /* Open and close. */ > -int netdev_open(struct netdev_options *, struct netdev **); > -int netdev_open_default(const char *name, struct netdev **); > +int netdev_open(const char *name, const char *type, struct netdev **); > void netdev_close(struct netdev *); > > bool netdev_exists(const char *name); > diff --git a/ofproto/in-band.c b/ofproto/in-band.c > index 764b252..f9dd218 100644 > --- a/ofproto/in-band.c > +++ b/ofproto/in-band.c > @@ -131,7 +131,7 @@ refresh_remote(struct in_band *ib, struct in_band_remote > *r) > { > netdev_close(r->remote_netdev); > > - retval = netdev_open_default(next_hop_dev, &r->remote_netdev); > + retval = netdev_open(next_hop_dev, "system", &r->remote_netdev); > if (retval) { > VLOG_WARN_RL(&rl, "cannot open netdev %s (next hop " > "to controller "IP_FMT"): %s", > @@ -472,7 +472,7 @@ in_band_create(struct ofproto *ofproto, const char > *local_name, > int error; > > *in_bandp = NULL; > - error = netdev_open_default(local_name, &local_netdev); > + error = netdev_open(local_name, "system", &local_netdev); > if (error) { > VLOG_ERR("failed to initialize in-band control: cannot open " > "datapath local port %s (%s)", local_name, strerror(error)); > diff --git a/ofproto/ofproto-dpif-sflow.c b/ofproto/ofproto-dpif-sflow.c > index d2da42b..303623c 100644 > --- a/ofproto/ofproto-dpif-sflow.c > +++ b/ofproto/ofproto-dpif-sflow.c > @@ -235,7 +235,7 @@ sflow_choose_agent_address(const char *agent_device, > const char *control_ip, > if (agent_device) { > struct netdev *netdev; > > - if (!netdev_open_default(agent_device, &netdev)) { > + if (!netdev_open(agent_device, "system", &netdev)) { > int error = netdev_get_in4(netdev, &in4, NULL); > netdev_close(netdev); > if (!error) { > @@ -337,7 +337,7 @@ dpif_sflow_add_port(struct dpif_sflow *ds, uint16_t > odp_port, > dpif_sflow_del_port(ds, odp_port); > > /* Open network device. */ > - error = netdev_open_default(netdev_name, &netdev); > + error = netdev_open(netdev_name, "system", &netdev); > if (error) { > VLOG_WARN_RL(&rl, "failed to open network device \"%s\": %s", > netdev_name, strerror(error)); > diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c > index 8054d05..6203676 100644 > --- a/ofproto/ofproto.c > +++ b/ofproto/ofproto.c > @@ -1107,16 +1107,11 @@ static struct netdev * > ofport_open(const struct ofproto_port *ofproto_port, struct ofp_phy_port > *opp) > { > uint32_t curr, advertised, supported, peer; > - struct netdev_options netdev_options; > enum netdev_flags flags; > struct netdev *netdev; > int error; > > - memset(&netdev_options, 0, sizeof netdev_options); > - netdev_options.name = ofproto_port->name; > - netdev_options.type = ofproto_port->type; > - > - error = netdev_open(&netdev_options, &netdev); > + error = netdev_open(ofproto_port->name, ofproto_port->type, &netdev); > if (error) { > VLOG_WARN_RL(&rl, "ignoring port %s (%"PRIu16") because netdev %s " > "cannot be opened (%s)", > diff --git a/tests/test-openflowd.c b/tests/test-openflowd.c > index 2c91310..016e1cb 100644 > --- a/tests/test-openflowd.c > +++ b/tests/test-openflowd.c > @@ -124,7 +124,7 @@ main(int argc, char *argv[]) > SSET_FOR_EACH (port, &s.ports) { > struct netdev *netdev; > > - error = netdev_open_default(port, &netdev); > + error = netdev_open(port, "system", &netdev); > if (error) { > VLOG_FATAL("%s: failed to open network device (%s)", > port, strerror(error)); > diff --git a/utilities/ovs-dpctl.c b/utilities/ovs-dpctl.c > index 3b4749c..e084868 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); > @@ -383,15 +381,12 @@ 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; > > diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c > index f417859..bc153fc 100644 > --- a/vswitchd/bridge.c > +++ b/vswitchd/bridge.c > @@ -850,10 +850,7 @@ bridge_add_ofproto_ports(struct bridge *br) > > /* Open the netdev. */ > if (!iface->netdev) { > - struct netdev_options options; > - options.name = iface->name; > - options.type = iface->type; > - error = netdev_open(&options, &iface->netdev); > + error = netdev_open(iface->name, iface->type, > &iface->netdev); > if (error) { > VLOG_WARN("could not open network device %s (%s)", > iface->name, strerror(error)); > @@ -928,13 +925,10 @@ bridge_add_ofproto_ports(struct bridge *br) > if (port_is_bond_fake_iface(port)) { > if (ofproto_port_query_by_name(br->ofproto, port->name, > &ofproto_port)) { > - struct netdev_options options; > struct netdev *netdev; > int error; > > - options.name = port->name; > - options.type = "internal"; > - error = netdev_open(&options, &netdev); > + error = netdev_open(port->name, "internal", &netdev); > if (!error) { > ofproto_port_add(br->ofproto, netdev, NULL); > netdev_close(netdev); > diff --git a/vswitchd/ovs-brcompatd.c b/vswitchd/ovs-brcompatd.c > index d9b3bc3..c1cc817 100644 > --- a/vswitchd/ovs-brcompatd.c > +++ b/vswitchd/ovs-brcompatd.c > @@ -488,7 +488,7 @@ handle_fdb_query_cmd(struct ofpbuf *buffer) > struct mac *mac = &local_macs[n_local_macs]; > struct netdev *netdev; > > - error = netdev_open_default(iface_name, &netdev); > + error = netdev_open(iface_name, "system", &netdev); > if (!error) { > if (!netdev_get_etheraddr(netdev, mac->addr)) { > n_local_macs++; > -- > 1.7.4.4 > > _______________________________________________ > dev mailing list > [email protected] > http://openvswitch.org/mailman/listinfo/dev > _______________________________________________ dev mailing list [email protected] http://openvswitch.org/mailman/listinfo/dev
