diff options
author | Vincent Bernat <vincent@bernat.im> | 2018-07-31 22:18:11 +0300 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2018-08-01 19:50:04 +0300 |
commit | 83ba4645152d1177c161750e1064e3a8e7cee19b (patch) | |
tree | 7209c851dda98efb2aa1e7a42ff738d3fe560c38 /include/net/ipv6.h | |
parent | d39db3b4d60c9bc4282b36753a7255d2a5ef0384 (diff) | |
download | linux-83ba4645152d1177c161750e1064e3a8e7cee19b.tar.xz |
net: add helpers checking if socket can be bound to nonlocal address
The construction "net->ipv4.sysctl_ip_nonlocal_bind || inet->freebind
|| inet->transparent" is present three times and its IPv6 counterpart
is also present three times. We introduce two small helpers to
characterize these tests uniformly.
Signed-off-by: Vincent Bernat <vincent@bernat.im>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/ipv6.h')
-rw-r--r-- | include/net/ipv6.h | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/include/net/ipv6.h b/include/net/ipv6.h index a44509f4e985..82deb684ba73 100644 --- a/include/net/ipv6.h +++ b/include/net/ipv6.h @@ -766,6 +766,13 @@ static inline int ip6_sk_dst_hoplimit(struct ipv6_pinfo *np, struct flowi6 *fl6, return hlimit; } +static inline bool ipv6_can_nonlocal_bind(struct net *net, + struct inet_sock *inet) +{ + return net->ipv6.sysctl.ip_nonlocal_bind || + inet->freebind || inet->transparent; +} + /* copy IPv6 saddr & daddr to flow_keys, possibly using 64bit load/store * Equivalent to : flow->v6addrs.src = iph->saddr; * flow->v6addrs.dst = iph->daddr; |