X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fdpif-netdev.c;h=461e0dc09c7337471ec9ec5489d55eafaccc5f16;hb=03f976b173e2e670eb2fa77eae8eacd2abf4bf84;hp=07c14677538b84504c348a7c5cc64e310099bd51;hpb=fa04edcedfe5285fd8ad3a4d70fecb38df18293d;p=sliver-openvswitch.git diff --git a/lib/dpif-netdev.c b/lib/dpif-netdev.c index 07c146775..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))) { @@ -616,10 +623,10 @@ dpif_netdev_port_query_by_name(const struct dpif *dpif, const char *devname, return error; } -static odp_port_t +static uint32_t dpif_netdev_get_max_ports(const struct dpif *dpif OVS_UNUSED) { - return u32_to_odp(MAX_PORTS); + return MAX_PORTS; } static void