diff options
author | Alexandru Copot <alex.mihai.c@gmail.com> | 2013-09-07 12:35:15 +0300 |
---|---|---|
committer | Ben Pfaff <blp@nicira.com> | 2013-09-07 09:34:16 -0700 |
commit | 2499a8ce82400cbcb1ac330aad131bf21c25db25 (patch) | |
tree | 434b2b293e9666108369182aa9bdedf7cd87ae0b /lib/dpif-netdev.c | |
parent | 7ba19d412a0e8dc762a86f7ccbbdf4e39133cc71 (diff) |
dpif-netdev: Do not allow adding loopback devices
Signed-off-by: Alexandru Copot <alex.mihai.c@gmail.com>
Signed-off-by: Ben Pfaff <blp@nicira.com>
Diffstat (limited to 'lib/dpif-netdev.c')
-rw-r--r-- | lib/dpif-netdev.c | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 46eb743a..0d489ba2 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))) { |