aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPavel Emelyanov <xemul@openvz.org>2008-06-16 20:13:48 -0400
committerDavid S. Miller <davem@davemloft.net>2008-06-16 20:13:48 -0400
commit33de014c63646f69f36f3673e3b4676f931dc878 (patch)
treec4f3afa3224fdb887b8606a7327424bf407bff93
parent9f26b3add3783c0af869ea2207871da5dafefffa (diff)
inet6: add struct net argument to inet6_ehashfn
Same as for inet_hashfn, prepare its ipv6 incarnation. Signed-off-by: Pavel Emelyanov <xemul@openvz.org> Signed-off-by: David S. Miller <davem@davemloft.net>
-rw-r--r--include/net/inet6_hashtables.h7
-rw-r--r--net/ipv6/inet6_hashtables.c6
2 files changed, 8 insertions, 5 deletions
diff --git a/include/net/inet6_hashtables.h b/include/net/inet6_hashtables.h
index 62a5b691858e..72f13a9928e4 100644
--- a/include/net/inet6_hashtables.h
+++ b/include/net/inet6_hashtables.h
@@ -28,7 +28,8 @@
28struct inet_hashinfo; 28struct inet_hashinfo;
29 29
30/* I have no idea if this is a good hash for v6 or not. -DaveM */ 30/* I have no idea if this is a good hash for v6 or not. -DaveM */
31static inline unsigned int inet6_ehashfn(const struct in6_addr *laddr, const u16 lport, 31static inline unsigned int inet6_ehashfn(struct net *net,
32 const struct in6_addr *laddr, const u16 lport,
32 const struct in6_addr *faddr, const __be16 fport) 33 const struct in6_addr *faddr, const __be16 fport)
33{ 34{
34 u32 ports = (lport ^ (__force u16)fport); 35 u32 ports = (lport ^ (__force u16)fport);
@@ -46,7 +47,9 @@ static inline int inet6_sk_ehashfn(const struct sock *sk)
46 const struct in6_addr *faddr = &np->daddr; 47 const struct in6_addr *faddr = &np->daddr;
47 const __u16 lport = inet->num; 48 const __u16 lport = inet->num;
48 const __be16 fport = inet->dport; 49 const __be16 fport = inet->dport;
49 return inet6_ehashfn(laddr, lport, faddr, fport); 50 struct net *net = sock_net(sk);
51
52 return inet6_ehashfn(net, laddr, lport, faddr, fport);
50} 53}
51 54
52extern void __inet6_hash(struct sock *sk); 55extern void __inet6_hash(struct sock *sk);
diff --git a/net/ipv6/inet6_hashtables.c b/net/ipv6/inet6_hashtables.c
index b940156ca4f5..a9cc8ab33a49 100644
--- a/net/ipv6/inet6_hashtables.c
+++ b/net/ipv6/inet6_hashtables.c
@@ -68,7 +68,7 @@ struct sock *__inet6_lookup_established(struct net *net,
68 /* Optimize here for direct hit, only listening connections can 68 /* Optimize here for direct hit, only listening connections can
69 * have wildcards anyways. 69 * have wildcards anyways.
70 */ 70 */
71 unsigned int hash = inet6_ehashfn(daddr, hnum, saddr, sport); 71 unsigned int hash = inet6_ehashfn(net, daddr, hnum, saddr, sport);
72 struct inet_ehash_bucket *head = inet_ehash_bucket(hashinfo, hash); 72 struct inet_ehash_bucket *head = inet_ehash_bucket(hashinfo, hash);
73 rwlock_t *lock = inet_ehash_lockp(hashinfo, hash); 73 rwlock_t *lock = inet_ehash_lockp(hashinfo, hash);
74 74
@@ -166,14 +166,14 @@ static int __inet6_check_established(struct inet_timewait_death_row *death_row,
166 const struct in6_addr *saddr = &np->daddr; 166 const struct in6_addr *saddr = &np->daddr;
167 const int dif = sk->sk_bound_dev_if; 167 const int dif = sk->sk_bound_dev_if;
168 const __portpair ports = INET_COMBINED_PORTS(inet->dport, lport); 168 const __portpair ports = INET_COMBINED_PORTS(inet->dport, lport);
169 const unsigned int hash = inet6_ehashfn(daddr, lport, saddr, 169 struct net *net = sock_net(sk);
170 const unsigned int hash = inet6_ehashfn(net, daddr, lport, saddr,
170 inet->dport); 171 inet->dport);
171 struct inet_ehash_bucket *head = inet_ehash_bucket(hinfo, hash); 172 struct inet_ehash_bucket *head = inet_ehash_bucket(hinfo, hash);
172 rwlock_t *lock = inet_ehash_lockp(hinfo, hash); 173 rwlock_t *lock = inet_ehash_lockp(hinfo, hash);
173 struct sock *sk2; 174 struct sock *sk2;
174 const struct hlist_node *node; 175 const struct hlist_node *node;
175 struct inet_timewait_sock *tw; 176 struct inet_timewait_sock *tw;
176 struct net *net = sock_net(sk);
177 177
178 prefetch(head->chain.first); 178 prefetch(head->chain.first);
179 write_lock(lock); 179 write_lock(lock);