+do_dump_dps(int argc OVS_UNUSED, char *argv[] OVS_UNUSED)
+{
+ struct svec dpif_names, dpif_types;
+ unsigned int i;
+ int error = 0;
+
+ svec_init(&dpif_names);
+ svec_init(&dpif_types);
+ dp_enumerate_types(&dpif_types);
+
+ for (i = 0; i < dpif_types.n; i++) {
+ unsigned int j;
+ int retval;
+
+ retval = dp_enumerate_names(dpif_types.names[i], &dpif_names);
+ if (retval) {
+ error = retval;
+ }
+
+ for (j = 0; j < dpif_names.n; j++) {
+ struct dpif *dpif;
+ if (!dpif_open(dpif_names.names[j], dpif_types.names[i], &dpif)) {
+ printf("%s\n", dpif_name(dpif));
+ dpif_close(dpif);
+ }
+ }
+ }
+
+ svec_destroy(&dpif_names);
+ svec_destroy(&dpif_types);
+ if (error) {
+ exit(EXIT_FAILURE);
+ }
+}
+
+static void
+do_dump_flows(int argc OVS_UNUSED, char *argv[])