From: Ben Pfaff Date: Sat, 22 Jan 2011 00:56:26 +0000 (-0800) Subject: dpif: Remove dpif_get_all_names(). X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3d8c95357fc8fa657c5ed176a464d0c9d33622e9;p=openvswitch dpif: Remove dpif_get_all_names(). None of the remaining dpif implementations have more than one name per dpif, so there's no need for this function anymore. Suggested-by: Jesse Gross Acked-by: Jesse Gross --- diff --git a/lib/dpif-linux.c b/lib/dpif-linux.c index dc59fe07..f08a2589 100644 --- a/lib/dpif-linux.c +++ b/lib/dpif-linux.c @@ -912,7 +912,6 @@ const struct dpif_class dpif_linux_class = { dpif_linux_enumerate, dpif_linux_open, dpif_linux_close, - NULL, /* get_all_names */ dpif_linux_destroy, dpif_linux_get_stats, dpif_linux_get_drop_frags, diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 6b2df7d1..5f722084 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -1412,7 +1412,6 @@ const struct dpif_class dpif_netdev_class = { NULL, /* enumerate */ dpif_netdev_open, dpif_netdev_close, - NULL, /* get_all_names */ dpif_netdev_destroy, dpif_netdev_get_stats, dpif_netdev_get_drop_frags, diff --git a/lib/dpif-provider.h b/lib/dpif-provider.h index 98a890a4..61bc872c 100644 --- a/lib/dpif-provider.h +++ b/lib/dpif-provider.h @@ -102,23 +102,6 @@ struct dpif_class { /* Closes 'dpif' and frees associated memory. */ void (*close)(struct dpif *dpif); - /* Enumerates all names that may be used to open 'dpif' into 'all_names'. - * The Linux datapath, for example, supports opening a datapath both by - * number, e.g. "dp0", and by the name of the datapath's local port. For - * some datapaths, this might be an infinite set (e.g. in a file name, - * slashes may be duplicated any number of times), in which case only the - * names most likely to be used should be enumerated. - * - * The caller has already initialized 'all_names' and might already have - * added some names to it. This function should not disturb any existing - * names in 'all_names'. - * - * If a datapath class does not support multiple names for a datapath, this - * function may be a null pointer. - * - * This is used by the vswitch at startup, */ - int (*get_all_names)(const struct dpif *dpif, struct svec *all_names); - /* Attempts to destroy the dpif underlying 'dpif'. * * If successful, 'dpif' will not be used again except as an argument for diff --git a/lib/dpif.c b/lib/dpif.c index 3afc9924..3a705b91 100644 --- a/lib/dpif.c +++ b/lib/dpif.c @@ -363,33 +363,6 @@ dpif_base_name(const struct dpif *dpif) return dpif->base_name; } -/* Enumerates all names that may be used to open 'dpif' into 'all_names'. The - * Linux datapath, for example, supports opening a datapath both by number, - * e.g. "dp0", and by the name of the datapath's local port. For some - * datapaths, this might be an infinite set (e.g. in a file name, slashes may - * be duplicated any number of times), in which case only the names most likely - * to be used will be enumerated. - * - * The caller must already have initialized 'all_names'. Any existing names in - * 'all_names' will not be disturbed. */ -int -dpif_get_all_names(const struct dpif *dpif, struct svec *all_names) -{ - if (dpif->dpif_class->get_all_names) { - int error = dpif->dpif_class->get_all_names(dpif, all_names); - if (error) { - VLOG_WARN_RL(&error_rl, - "failed to retrieve names for datpath %s: %s", - dpif_name(dpif), strerror(error)); - } - return error; - } else { - svec_add(all_names, dpif_base_name(dpif)); - return 0; - } -} - - /* Destroys the datapath that 'dpif' is connected to, first removing all of its * ports. After calling this function, it does not make sense to pass 'dpif' * to any functions other than dpif_name() or dpif_close(). */ diff --git a/lib/dpif.h b/lib/dpif.h index d25d20f3..f5b74934 100644 --- a/lib/dpif.h +++ b/lib/dpif.h @@ -54,7 +54,6 @@ void dpif_close(struct dpif *); const char *dpif_name(const struct dpif *); const char *dpif_base_name(const struct dpif *); -int dpif_get_all_names(const struct dpif *, struct svec *); int dpif_delete(struct dpif *); diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index c69557bd..463a8b51 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -373,34 +373,22 @@ bridge_configure_once(const struct ovsrec_open_vswitch *cfg) svec_init(&dpif_types); dp_enumerate_types(&dpif_types); for (i = 0; i < dpif_types.n; i++) { - struct dpif *dpif; - int retval; size_t j; dp_enumerate_names(dpif_types.names[i], &dpif_names); - /* For each dpif... */ + /* Delete each dpif whose name is not in 'bridge_names'. */ for (j = 0; j < dpif_names.n; j++) { - retval = dpif_open(dpif_names.names[j], dpif_types.names[i], &dpif); - if (!retval) { - struct svec all_names; - size_t k; - - /* ...check whether any of its names is in 'bridge_names'. */ - svec_init(&all_names); - dpif_get_all_names(dpif, &all_names); - for (k = 0; k < all_names.n; k++) { - if (svec_contains(&bridge_names, all_names.names[k])) { - goto found; - } + if (!svec_contains(&bridge_names, dpif_names.names[j])) { + struct dpif *dpif; + int retval; + + retval = dpif_open(dpif_names.names[j], dpif_types.names[i], + &dpif); + if (!retval) { + dpif_delete(dpif); + dpif_close(dpif); } - - /* No. Delete the dpif. */ - dpif_delete(dpif); - - found: - svec_destroy(&all_names); - dpif_close(dpif); } } }