int hash = tcp_hashfn(daddr, hnum, saddr, sport); 
const int hash = inet_ehashfn(daddr, hnum, saddr, sport, tcp_ehash_size); 
static inline struct sock *__tcp_v4_lookup_established(u32 saddr, u16 sport,						       u32 daddr, u16 hnum,						       int dif){	struct tcp_ehash_bucket *head;	TCP_V4_ADDR_COOKIE(acookie, saddr, daddr)	__u32 ports = TCP_COMBINED_PORTS(sport, hnum);	struct sock *sk;	struct hlist_node *node;	/* Optimize here for direct hit, only listening connections can	 * have wildcards anyways.	 */	int hash = tcp_hashfn(daddr, hnum, saddr, sport);	head = &tcp_ehash[hash];	read_lock(&head->lock);	sk_for_each(sk, node, &head->chain) {		if (TCP_IPV4_MATCH(sk, acookie, saddr, daddr, ports, dif))			goto hit; /* You sunk my battleship! */	}	/* Must check for a TIME_WAIT'er before going to listener hash. */	sk_for_each(sk, node, &(head + tcp_ehash_size)->chain) {		if (TCP_IPV4_TW_MATCH(sk, acookie, saddr, daddr, ports, dif))			goto hit;	}	sk = NULL;out:	read_unlock(&head->lock);	return sk;hit:	sock_hold(sk);	goto out;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/304a16180fb6d2b153b45f6fbbcec1fa814496e5/tcp_ipv4.c/clean/net/ipv4/tcp_ipv4.c