From: Ethan Jackson Date: Tue, 8 Jan 2013 22:37:23 +0000 (-0800) Subject: dpif-netdev: Allow stub interfaces on the dummy datapath. X-Git-Tag: sliver-openvswitch-1.9.90-3~3^2~7 X-Git-Url: http://git.onelab.eu/?p=sliver-openvswitch.git;a=commitdiff_plain;h=add90f6f205a65c2569bb240683c0a70cc249c6b dpif-netdev: Allow stub interfaces on the dummy datapath. Future patches will need to add netdevs to the dummy datapath which can't actually send or receive packets. Signed-off-by: Ethan Jackson --- diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 1d924c401..2cf226562 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -180,11 +180,17 @@ dpif_netdev_enumerate(struct sset *all_dps) return 0; } +static bool +dpif_netdev_class_is_dummy(const struct dpif_class *class) +{ + return class != &dpif_netdev_class; +} + static const char * dpif_netdev_port_open_type(const struct dpif_class *class, const char *type) { return strcmp(type, "internal") ? type - : class != &dpif_netdev_class ? "dummy" + : dpif_netdev_class_is_dummy(class) ? "dummy" : "tap"; } @@ -385,7 +391,8 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type, /* XXX reject non-Ethernet devices */ error = netdev_listen(netdev); - if (error) { + if (error + && !(error == EOPNOTSUPP && dpif_netdev_class_is_dummy(dp->class))) { VLOG_ERR("%s: cannot receive packets on this network device (%s)", devname, strerror(errno)); netdev_close(netdev);