diff options
-rw-r--r-- | lib/netdev-vport.c | 6 | ||||
-rw-r--r-- | vswitchd/bridge.c | 2 |
2 files changed, 8 insertions, 0 deletions
diff --git a/lib/netdev-vport.c b/lib/netdev-vport.c index 499c0291c..64331f74b 100644 --- a/lib/netdev-vport.c +++ b/lib/netdev-vport.c @@ -1151,6 +1151,12 @@ netdev_vport_get_ifindex(const struct netdev *netdev_) { char buf[NETDEV_VPORT_NAME_BUFSIZE]; const char *name = netdev_vport_get_dpif_port(netdev_, buf, sizeof(buf)); + const char *dpif_type = netdev_get_dpif_type(netdev_); + + if (dpif_type && strcmp(dpif_type, "system")) { + /* Not a system device. */ + return -ENODEV; + } return linux_get_ifindex(name); } diff --git a/vswitchd/bridge.c b/vswitchd/bridge.c index 5223aa897..513ef7ea9 100644 --- a/vswitchd/bridge.c +++ b/vswitchd/bridge.c @@ -2052,6 +2052,8 @@ iface_do_create(const struct bridge *br, goto error; } + netdev_set_dpif_type(netdev, br->ofproto->type); + error = iface_set_netdev_config(iface_cfg, netdev, errp); if (error) { goto error; |