aboutsummaryrefslogtreecommitdiffstats
path: root/include/net
diff options
context:
space:
mode:
authorEric Dumazet <edumazet@google.com>2015-03-18 17:05:35 -0400
committerDavid S. Miller <davem@davemloft.net>2015-03-18 22:00:34 -0400
commitd1e559d0b1b0d02f76a6bd5b768a99dc834ae926 (patch)
tree283048c1921aeec1c2dfb25e72e6e67cddffcb23 /include/net
parent5b441f76f1b83591e8cd9d60ba1df3a2aacde27f (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.h19
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
386u32 sk_ehashfn(const struct sock *sk); 386u32 sk_ehashfn(const struct sock *sk);
387u32 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
391static 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
399static 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
388int __inet_hash_connect(struct inet_timewait_death_row *death_row, 407int __inet_hash_connect(struct inet_timewait_death_row *death_row,
389 struct sock *sk, u32 port_offset, 408 struct sock *sk, u32 port_offset,