X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdpif-netdev.c;h=461e0dc09c7337471ec9ec5489d55eafaccc5f16;hb=03f976b173e2e670eb2fa77eae8eacd2abf4bf84;hp=ee60dcd245792b753538265b5aa70cfa7839860c;hpb=3442636d01d2a73a557952ad9140de07418c28c2;p=sliver-openvswitch.git diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index ee60dcd24..461e0dc09 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -415,6 +415,7 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type, struct dp_netdev_port *port; struct netdev *netdev; struct netdev_rx *rx; + enum netdev_flags flags; const char *open_type; int mtu; int error; @@ -427,9 +428,15 @@ do_add_port(struct dp_netdev *dp, const char *devname, const char *type, if (error) { return error; } - /* XXX reject loopback devices */ /* XXX reject non-Ethernet devices */ + netdev_get_flags(netdev, &flags); + if (flags & NETDEV_LOOPBACK) { + VLOG_ERR("%s: cannot add a loopback device", devname); + netdev_close(netdev); + return EINVAL; + } + error = netdev_rx_open(netdev, &rx); if (error && !(error == EOPNOTSUPP && dpif_netdev_class_is_dummy(dp->class))) {