X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=include%2Fnet%2Finet_sock.h;h=89cd011edb998402912543b4486309055f267b8f;hb=8281db3b52c1b0e0bd249e8700cf35e64c1e13bd;hp=ce6da97bc8489d4fc1e5d8838f0dd3541a78cfc5;hpb=946b92437e550d6ed80213bf54a1f383e141aede;p=linux-2.6-omap-h63xx.git diff --git a/include/net/inet_sock.h b/include/net/inet_sock.h index ce6da97bc84..89cd011edb9 100644 --- a/include/net/inet_sock.h +++ b/include/net/inet_sock.h @@ -19,10 +19,12 @@ #include #include +#include #include #include #include +#include /** struct ip_options - IP Options * @@ -167,13 +169,16 @@ static inline void inet_sk_copy_descendant(struct sock *sk_to, extern int inet_sk_rebuild_header(struct sock *sk); +extern u32 inet_ehash_secret; +extern void build_ehash_secret(void); + static inline unsigned int inet_ehashfn(const __be32 laddr, const __u16 lport, const __be32 faddr, const __be16 fport) { - unsigned int h = ((__force __u32)laddr ^ lport) ^ ((__force __u32)faddr ^ (__force __u32)fport); - h ^= h >> 16; - h ^= h >> 8; - return h; + return jhash_3words((__force __u32) laddr, + (__force __u32) faddr, + ((__u32) lport) << 16 | (__force __u32)fport, + inet_ehash_secret); } static inline int inet_sk_ehashfn(const struct sock *sk) @@ -187,4 +192,10 @@ static inline int inet_sk_ehashfn(const struct sock *sk) return inet_ehashfn(laddr, lport, faddr, fport); } + +static inline int inet_iif(const struct sk_buff *skb) +{ + return ((struct rtable *)skb->dst)->rt_iif; +} + #endif /* _INET_SOCK_H */