14 #ifndef _INET6_HASHTABLES_H
15 #define _INET6_HASHTABLES_H
18 #if IS_ENABLED(CONFIG_IPV6)
19 #include <linux/in6.h>
20 #include <linux/ipv6.h>
21 #include <linux/types.h>
32 static inline unsigned int inet6_ehashfn(
struct net *
net,
38 return jhash_3words((
__force u32)laddr->s6_addr32[3],
39 (
__force u32)faddr->s6_addr32[3],
40 ports, inet_ehash_secret + net_hash_mix(net));
43 static inline int inet6_sk_ehashfn(
const struct sock *
sk)
45 const struct inet_sock *inet = inet_sk(sk);
51 struct net *net = sock_net(sk);
53 return inet6_ehashfn(net, laddr, lport, faddr, fport);
75 const unsigned short hnum,
78 static inline struct sock *__inet6_lookup(
struct net *net,
87 sport, daddr, hnum, dif);
99 struct sock *sk = skb_steal_sock(skb);
104 return __inet6_lookup(dev_net(skb_dst(skb)->
dev), hashinfo,
105 &ipv6_hdr(skb)->saddr, sport,
106 &ipv6_hdr(skb)->daddr,
ntohs(dport),