dev: introduce dev_get_iflink()
The goal of this patch is to prepare the removal of the iflink field. It introduces a new ndo function, which will be implemented by virtual interfaces. There is no functional change into this patch. All readers of iflink field now call dev_get_iflink(). Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
033f46b3c1
commit
a54acb3a6f
@@ -659,6 +659,23 @@ __setup("netdev=", netdev_boot_setup);
|
||||
|
||||
*******************************************************************************/
|
||||
|
||||
/**
|
||||
* dev_get_iflink - get 'iflink' value of a interface
|
||||
* @dev: targeted interface
|
||||
*
|
||||
* Indicates the ifindex the interface is linked to.
|
||||
* Physical interfaces have the same 'ifindex' and 'iflink' values.
|
||||
*/
|
||||
|
||||
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);
|
||||
|
||||
return dev->iflink;
|
||||
}
|
||||
EXPORT_SYMBOL(dev_get_iflink);
|
||||
|
||||
/**
|
||||
* __dev_get_by_name - find a device by its name
|
||||
* @net: the applicable net namespace
|
||||
@@ -6345,7 +6362,7 @@ int register_netdevice(struct net_device *dev)
|
||||
else if (__dev_get_by_index(net, dev->ifindex))
|
||||
goto err_uninit;
|
||||
|
||||
if (dev->iflink == -1)
|
||||
if (dev_get_iflink(dev) == -1)
|
||||
dev->iflink = dev->ifindex;
|
||||
|
||||
/* Transfer changeable features to wanted_features and enable
|
||||
@@ -7061,7 +7078,7 @@ int dev_change_net_namespace(struct net_device *dev, struct net *net, const char
|
||||
|
||||
/* If there is an ifindex conflict assign a new one */
|
||||
if (__dev_get_by_index(net, dev->ifindex)) {
|
||||
int iflink = (dev->iflink == dev->ifindex);
|
||||
int iflink = (dev_get_iflink(dev) == dev->ifindex);
|
||||
dev->ifindex = dev_new_index(net);
|
||||
if (iflink)
|
||||
dev->iflink = dev->ifindex;
|
||||
|
||||
Reference in New Issue
Block a user