diff options
author | Herbert Xu <herbert@gondor.apana.org.au> | 2006-08-09 18:47:12 -0400 |
---|---|---|
committer | David S. Miller <davem@sunset.davemloft.net> | 2006-09-22 17:54:14 -0400 |
commit | 8f491069b40be5d627007a343f99759e9da6a178 (patch) | |
tree | ba2be735de32fa30015fe22febf4329c8e79ca25 /include/net | |
parent | 832b4c5e184391773e462653aa862a8cab71f38d (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')
-rw-r--r-- | include/net/inet_hashtables.h | 31 |
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 | ||
274 | extern struct sock * | 274 | extern 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 | |||
279 | static 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 | ||
371 | static 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 | |||
365 | static inline struct sock *__inet_lookup(struct inet_hashinfo *hashinfo, | 381 | static 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 | ||
375 | static inline struct sock *inet_lookup(struct inet_hashinfo *hashinfo, | 392 | static 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; |