aboutsummaryrefslogtreecommitdiffstats
path: root/include/net/inet_hashtables.h
diff options
context:
space:
mode:
authorHerbert Xu <herbert@gondor.apana.org.au>2006-08-09 18:47:12 -0400
committerDavid S. Miller <davem@sunset.davemloft.net>2006-09-22 17:54:14 -0400
commit8f491069b40be5d627007a343f99759e9da6a178 (patch)
treeba2be735de32fa30015fe22febf4329c8e79ca25 /include/net/inet_hashtables.h
parent832b4c5e184391773e462653aa862a8cab71f38d (diff)
[IPV4]: Use network-order dport for all visible inet_lookup_*
Right now most inet_lookup_* functions take a host-order hnum instead of a network-order dport because that's how it is represented internally. This means that users of these functions have to be careful about using the right byte-order. To add more confusion, inet_lookup takes a network-order dport unlike all other functions. So this patch changes all visible inet_lookup functions to take a dport and move all dport->hnum conversion inside them. Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'include/net/inet_hashtables.h')
-rw-r--r--include/net/inet_hashtables.h31
1 files changed, 24 insertions, 7 deletions
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h
index bd513f3b9c7e..b4491c9e2a5a 100644
--- a/include/net/inet_hashtables.h
+++ b/include/net/inet_hashtables.h
@@ -271,10 +271,16 @@ static inline int inet_iif(const struct sk_buff *skb)
271 return ((struct rtable *)skb->dst)->rt_iif; 271 return ((struct rtable *)skb->dst)->rt_iif;
272} 272}
273 273
274extern struct sock * 274extern struct sock *__inet_lookup_listener(struct inet_hashinfo *hashinfo,
275 inet_lookup_listener(struct inet_hashinfo *hashinfo, 275 const u32 daddr,
276 const u32 daddr, 276 const unsigned short hnum,
277 const unsigned short hnum, const int dif); 277 const int dif);
278
279static inline struct sock *inet_lookup_listener(struct inet_hashinfo *hashinfo,
280 u32 daddr, u16 dport, int dif)
281{
282 return __inet_lookup_listener(hashinfo, daddr, ntohs(dport), dif);
283}
278 284
279/* Socket demux engine toys. */ 285/* Socket demux engine toys. */
280#ifdef __BIG_ENDIAN 286#ifdef __BIG_ENDIAN
@@ -362,14 +368,25 @@ hit:
362 goto out; 368 goto out;
363} 369}
364 370
371static inline struct sock *
372 inet_lookup_established(struct inet_hashinfo *hashinfo,
373 const u32 saddr, const u16 sport,
374 const u32 daddr, const u16 dport,
375 const int dif)
376{
377 return __inet_lookup_established(hashinfo, saddr, sport, daddr,
378 ntohs(dport), dif);
379}
380
365static inline struct sock *__inet_lookup(struct inet_hashinfo *hashinfo, 381static inline struct sock *__inet_lookup(struct inet_hashinfo *hashinfo,
366 const u32 saddr, const u16 sport, 382 const u32 saddr, const u16 sport,
367 const u32 daddr, const u16 hnum, 383 const u32 daddr, const u16 dport,
368 const int dif) 384 const int dif)
369{ 385{
386 u16 hnum = ntohs(dport);
370 struct sock *sk = __inet_lookup_established(hashinfo, saddr, sport, daddr, 387 struct sock *sk = __inet_lookup_established(hashinfo, saddr, sport, daddr,
371 hnum, dif); 388 hnum, dif);
372 return sk ? : inet_lookup_listener(hashinfo, daddr, hnum, dif); 389 return sk ? : __inet_lookup_listener(hashinfo, daddr, hnum, dif);
373} 390}
374 391
375static inline struct sock *inet_lookup(struct inet_hashinfo *hashinfo, 392static inline struct sock *inet_lookup(struct inet_hashinfo *hashinfo,
@@ -380,7 +397,7 @@ static inline struct sock *inet_lookup(struct inet_hashinfo *hashinfo,
380 struct sock *sk; 397 struct sock *sk;
381 398
382 local_bh_disable(); 399 local_bh_disable();
383 sk = __inet_lookup(hashinfo, saddr, sport, daddr, ntohs(dport), dif); 400 sk = __inet_lookup(hashinfo, saddr, sport, daddr, dport, dif);
384 local_bh_enable(); 401 local_bh_enable();
385 402
386 return sk; 403 return sk;