2
0
mirror of https://github.com/openvswitch/ovs synced 2025-08-31 14:25:26 +00:00

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 <ethan@nicira.com>
This commit is contained in:
Ethan Jackson
2013-01-08 14:37:23 -08:00
parent 8f73d5377d
commit add90f6f20

View File

@@ -180,11 +180,17 @@ dpif_netdev_enumerate(struct sset *all_dps)
return 0; return 0;
} }
static bool
dpif_netdev_class_is_dummy(const struct dpif_class *class)
{
return class != &dpif_netdev_class;
}
static const char * static const char *
dpif_netdev_port_open_type(const struct dpif_class *class, const char *type) dpif_netdev_port_open_type(const struct dpif_class *class, const char *type)
{ {
return strcmp(type, "internal") ? type return strcmp(type, "internal") ? type
: class != &dpif_netdev_class ? "dummy" : dpif_netdev_class_is_dummy(class) ? "dummy"
: "tap"; : "tap";
} }
@@ -385,7 +391,8 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type,
/* XXX reject non-Ethernet devices */ /* XXX reject non-Ethernet devices */
error = netdev_listen(netdev); 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)", VLOG_ERR("%s: cannot receive packets on this network device (%s)",
devname, strerror(errno)); devname, strerror(errno));
netdev_close(netdev); netdev_close(netdev);