diff options
author | David Ahern <dsahern@gmail.com> | 2019-03-28 04:53:53 +0100 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2019-03-29 18:48:04 +0100 |
commit | 6d3d07b45c86f984424ccbad110ca500397fd18c (patch) | |
tree | 7aac7cce0700beb2e4e0e01cb50c00968cabf1f3 /include/net/addrconf.h | |
parent | ipv6: Move gateway checks to a fib6_nh setting (diff) | |
download | linux-6d3d07b45c86f984424ccbad110ca500397fd18c.tar.xz linux-6d3d07b45c86f984424ccbad110ca500397fd18c.zip |
ipv6: Refactor fib6_ignore_linkdown
fib6_ignore_linkdown takes a fib6_info but only looks at the net_device
and its IPv6 config. Change it to take a net_device over a fib6_info as
its input argument.
In addition, move it to a header file to make the check inline and usable
later with IPv4 code without going through the ipv6 stub, and rename to
ip6_ignore_linkdown since it is only checking the setting based on the
ipv6 struct on a device.
Signed-off-by: David Ahern <dsahern@gmail.com>
Reviewed-by: Ido Schimmel <idosch@mellanox.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/addrconf.h')
-rw-r--r-- | include/net/addrconf.h | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/include/net/addrconf.h b/include/net/addrconf.h index 269ec27385e9..ec8e6784a6f7 100644 --- a/include/net/addrconf.h +++ b/include/net/addrconf.h @@ -425,6 +425,14 @@ static inline void in6_dev_hold(struct inet6_dev *idev) refcount_inc(&idev->refcnt); } +/* called with rcu_read_lock held */ +static inline bool ip6_ignore_linkdown(const struct net_device *dev) +{ + const struct inet6_dev *idev = __in6_dev_get(dev); + + return !!idev->cnf.ignore_routes_with_linkdown; +} + void inet6_ifa_finish_destroy(struct inet6_ifaddr *ifp); static inline void in6_ifa_put(struct inet6_ifaddr *ifp) |