From: Alexandru Copot Date: Sat, 7 Sep 2013 09:35:15 +0000 (+0300) Subject: dpif-netdev: Do not allow adding loopback devices X-Git-Tag: sliver-openvswitch-2.0.90-1~15^2~23 X-Git-Url: http://git.onelab.eu/?a=commitdiff_plain;h=2499a8ce82400cbcb1ac330aad131bf21c25db25;p=sliver-openvswitch.git dpif-netdev: Do not allow adding loopback devices Signed-off-by: Alexandru Copot Signed-off-by: Ben Pfaff --- diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 46eb743aa..0d489ba2d 100644 --- a/lib/dpif-netdev.c +++ b/lib/dpif-netdev.c @@ -407,6 +407,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; @@ -419,9 +420,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))) {