-dpif_linux_open(const char *name UNUSED, char *suffix, bool create,
+dpif_linux_enumerate(struct svec *all_dps)
+{
+ int major;
+ int error;
+ int i;
+
+ /* Check that the Open vSwitch module is loaded. */
+ major = get_openvswitch_major();
+ if (major < 0) {
+ return -major;
+ }
+
+ error = 0;
+ for (i = 0; i < ODP_MAX; i++) {
+ struct dpif *dpif;
+ char devname[16];
+ int retval;
+
+ sprintf(devname, "dp%d", i);
+ retval = dpif_open(devname, "system", &dpif);
+ if (!retval) {
+ svec_add(all_dps, devname);
+ dpif_uninit(dpif, true);
+ } else if (retval != ENODEV && !error) {
+ error = retval;
+ }
+ }
+ return error;
+}
+
+static int
+dpif_linux_open(const char *name, const char *type OVS_UNUSED, bool create,