dev: set iflink to 0 for virtual interfaces
authorNicolas Dichtel <nicolas.dichtel@6wind.com>
Thu, 2 Apr 2015 15:07:10 +0000 (17:07 +0200)
committerDavid S. Miller <davem@davemloft.net>
Thu, 2 Apr 2015 18:05:01 +0000 (14:05 -0400)
Virtual interfaces are supposed to set an iflink value != of their ifindex.
It was not the case for some of them, like vxlan, bond or bridge.
Let's set iflink to 0 when dev->rtnl_link_ops is set.

Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
net/core/dev.c

index 3be107e0bc934c7be71b90d11644dee18762057f..26622d614f81ef7226f036b0146d59077e52530e 100644 (file)
@@ -672,6 +672,10 @@ int dev_get_iflink(const struct net_device *dev)
        if (dev->netdev_ops && dev->netdev_ops->ndo_get_iflink)
                return dev->netdev_ops->ndo_get_iflink(dev);
 
+       /* If dev->rtnl_link_ops is set, it's a virtual interface. */
+       if (dev->rtnl_link_ops)
+               return 0;
+
        return dev->ifindex;
 }
 EXPORT_SYMBOL(dev_get_iflink);
This page took 0.03251 seconds and 5 git commands to generate.