X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fnetdev-dummy.c;h=57962d10e273242d7a5af7421fb6920c425fe7e9;hb=dd1ba5b3f4425c8eba008d1a93b044da63466812;hp=d94af415669f9b37470eedaa7ecfd0cbc91bb25b;hpb=78945f19d7147096294cb8557f3eafbb809017a3;p=openvswitch diff --git a/lib/netdev-dummy.c b/lib/netdev-dummy.c index d94af415..57962d10 100644 --- a/lib/netdev-dummy.c +++ b/lib/netdev-dummy.c @@ -29,6 +29,7 @@ #include "packets.h" #include "poll-loop.h" #include "shash.h" +#include "sset.h" #include "unixctl.h" #include "vlog.h" @@ -443,9 +444,28 @@ netdev_dummy_receive(struct unixctl_conn *conn, } void -netdev_dummy_register(void) +netdev_dummy_register(bool override) { - netdev_register_provider(&dummy_class); unixctl_command_register("netdev-dummy/receive", "NAME PACKET|FLOW...", 2, INT_MAX, netdev_dummy_receive, NULL); + + if (override) { + struct sset types; + const char *type; + + sset_init(&types); + netdev_enumerate_types(&types); + SSET_FOR_EACH (type, &types) { + if (!netdev_unregister_provider(type)) { + struct netdev_class *class; + + class = xmalloc(sizeof *class); + *class = dummy_class; + class->type = xstrdup(type); + netdev_register_provider(class); + } + } + sset_destroy(&types); + } + netdev_register_provider(&dummy_class); }