ipv4: Move IN_DEV_IGNORE_ROUTES_WITH_LINKDOWN to helper
in_dev lookup followed by IN_DEV_IGNORE_ROUTES_WITH_LINKDOWN check is called in several places, some with the rcu lock and others with the rtnl held. Move the check to a helper similar to what IPv6 has. Since the helper can be invoked from either context use rcu_dereference_rtnl to dereference ip_ptr. Signed-off-by: David Ahern <dsahern@gmail.com> Reviewed-by: Ido Schimmel <idosch@mellanox.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
8373c6c84e
commit
331c7a4023
@@ -237,6 +237,20 @@ static inline struct in_device *__in_dev_get_rtnl(const struct net_device *dev)
|
||||
return rtnl_dereference(dev->ip_ptr);
|
||||
}
|
||||
|
||||
/* called with rcu_read_lock or rtnl held */
|
||||
static inline bool ip_ignore_linkdown(const struct net_device *dev)
|
||||
{
|
||||
struct in_device *in_dev;
|
||||
bool rc = false;
|
||||
|
||||
in_dev = rcu_dereference_rtnl(dev->ip_ptr);
|
||||
if (in_dev &&
|
||||
IN_DEV_IGNORE_ROUTES_WITH_LINKDOWN(in_dev))
|
||||
rc = true;
|
||||
|
||||
return rc;
|
||||
}
|
||||
|
||||
static inline struct neigh_parms *__in_dev_arp_parms_get_rcu(const struct net_device *dev)
|
||||
{
|
||||
struct in_device *in_dev = __in_dev_get_rcu(dev);
|
||||
|
Reference in New Issue
Block a user