diff options
author | Eric Dumazet <edumazet@google.com> | 2015-03-18 17:05:35 -0400 |
---|---|---|
committer | David S. Miller <davem@davemloft.net> | 2015-03-18 22:00:34 -0400 |
commit | d1e559d0b1b0d02f76a6bd5b768a99dc834ae926 (patch) | |
tree | 283048c1921aeec1c2dfb25e72e6e67cddffcb23 /include/net | |
parent | 5b441f76f1b83591e8cd9d60ba1df3a2aacde27f (diff) |
inet: add IPv6 support to sk_ehashfn()
Intent is to converge IPv4 & IPv6 inet_hash functions to
factorize code.
IPv4 sockets initialize sk_rcv_saddr and sk_v6_daddr
in this patch, thanks to new sk_daddr_set() and sk_rcv_saddr_set()
helpers.
__inet6_hash can now use sk_ehashfn() instead of a private
inet6_sk_ehashfn() and will simply use __inet_hash() in a
following patch.
Signed-off-by: Eric Dumazet <edumazet@google.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net')
-rw-r--r-- | include/net/inet_hashtables.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h index ef993ef571ea..06ad42182ec2 100644 --- a/include/net/inet_hashtables.h +++ b/include/net/inet_hashtables.h | |||
@@ -384,6 +384,25 @@ static inline struct sock *__inet_lookup_skb(struct inet_hashinfo *hashinfo, | |||
384 | } | 384 | } |
385 | 385 | ||
386 | u32 sk_ehashfn(const struct sock *sk); | 386 | u32 sk_ehashfn(const struct sock *sk); |
387 | u32 inet6_ehashfn(const struct net *net, | ||
388 | const struct in6_addr *laddr, const u16 lport, | ||
389 | const struct in6_addr *faddr, const __be16 fport); | ||
390 | |||
391 | static inline void sk_daddr_set(struct sock *sk, __be32 addr) | ||
392 | { | ||
393 | sk->sk_daddr = addr; /* alias of inet_daddr */ | ||
394 | #if IS_ENABLED(CONFIG_IPV6) | ||
395 | ipv6_addr_set_v4mapped(addr, &sk->sk_v6_daddr); | ||
396 | #endif | ||
397 | } | ||
398 | |||
399 | static inline void sk_rcv_saddr_set(struct sock *sk, __be32 addr) | ||
400 | { | ||
401 | sk->sk_rcv_saddr = addr; /* alias of inet_rcv_saddr */ | ||
402 | #if IS_ENABLED(CONFIG_IPV6) | ||
403 | ipv6_addr_set_v4mapped(addr, &sk->sk_v6_rcv_saddr); | ||
404 | #endif | ||
405 | } | ||
387 | 406 | ||
388 | int __inet_hash_connect(struct inet_timewait_death_row *death_row, | 407 | int __inet_hash_connect(struct inet_timewait_death_row *death_row, |
389 | struct sock *sk, u32 port_offset, | 408 | struct sock *sk, u32 port_offset, |