diff options
Diffstat (limited to 'include/net/inet_hashtables.h')
| -rw-r--r-- | include/net/inet_hashtables.h | 107 | 
1 files changed, 47 insertions, 60 deletions
diff --git a/include/net/inet_hashtables.h b/include/net/inet_hashtables.h index ef83d9e844b..dd1950a7e27 100644 --- a/include/net/inet_hashtables.h +++ b/include/net/inet_hashtables.h @@ -37,12 +37,11 @@  #include <asm/byteorder.h>  /* This is for all connections with a full identity, no wildcards. - * One chain is dedicated to TIME_WAIT sockets. - * I'll experiment with dynamic table growth later. + * The 'e' prefix stands for Establish, but we really put all sockets + * but LISTEN ones.   */  struct inet_ehash_bucket {  	struct hlist_nulls_head chain; -	struct hlist_nulls_head twchain;  };  /* There are a few simple rules, which allow for local port reuse by @@ -123,7 +122,6 @@ struct inet_hashinfo {  	 *  	 *          TCP_ESTABLISHED <= sk->sk_state < TCP_CLOSE  	 * -	 * TIME_WAIT sockets use a separate chain (twchain).  	 */  	struct inet_ehash_bucket	*ehash;  	spinlock_t			*ehash_locks; @@ -218,22 +216,21 @@ static inline void inet_ehash_locks_free(struct inet_hashinfo *hashinfo)  	}  } -extern struct inet_bind_bucket * -		    inet_bind_bucket_create(struct kmem_cache *cachep, -					    struct net *net, -					    struct inet_bind_hashbucket *head, -					    const unsigned short snum); -extern void inet_bind_bucket_destroy(struct kmem_cache *cachep, -				     struct inet_bind_bucket *tb); +struct inet_bind_bucket * +inet_bind_bucket_create(struct kmem_cache *cachep, struct net *net, +			struct inet_bind_hashbucket *head, +			const unsigned short snum); +void inet_bind_bucket_destroy(struct kmem_cache *cachep, +			      struct inet_bind_bucket *tb); -static inline int inet_bhashfn(struct net *net, -		const __u16 lport, const int bhash_size) +static inline int inet_bhashfn(struct net *net, const __u16 lport, +			       const int bhash_size)  {  	return (lport + net_hash_mix(net)) & (bhash_size - 1);  } -extern void inet_bind_hash(struct sock *sk, struct inet_bind_bucket *tb, -			   const unsigned short snum); +void inet_bind_hash(struct sock *sk, struct inet_bind_bucket *tb, +		    const unsigned short snum);  /* These can have wildcards, don't try too hard. */  static inline int inet_lhashfn(struct net *net, const unsigned short num) @@ -247,23 +244,22 @@ static inline int inet_sk_listen_hashfn(const struct sock *sk)  }  /* Caller must disable local BH processing. */ -extern int __inet_inherit_port(struct sock *sk, struct sock *child); +int __inet_inherit_port(struct sock *sk, struct sock *child); -extern void inet_put_port(struct sock *sk); +void inet_put_port(struct sock *sk);  void inet_hashinfo_init(struct inet_hashinfo *h); -extern int __inet_hash_nolisten(struct sock *sk, struct inet_timewait_sock *tw); -extern void inet_hash(struct sock *sk); -extern void inet_unhash(struct sock *sk); +int __inet_hash_nolisten(struct sock *sk, struct inet_timewait_sock *tw); +void inet_hash(struct sock *sk); +void inet_unhash(struct sock *sk); -extern struct sock *__inet_lookup_listener(struct net *net, -					   struct inet_hashinfo *hashinfo, -					   const __be32 saddr, -					   const __be16 sport, -					   const __be32 daddr, -					   const unsigned short hnum, -					   const int dif); +struct sock *__inet_lookup_listener(struct net *net, +				    struct inet_hashinfo *hashinfo, +				    const __be32 saddr, const __be16 sport, +				    const __be32 daddr, +				    const unsigned short hnum, +				    const int dif);  static inline struct sock *inet_lookup_listener(struct net *net,  		struct inet_hashinfo *hashinfo, @@ -296,38 +292,27 @@ static inline struct sock *inet_lookup_listener(struct net *net,  #define INET_ADDR_COOKIE(__name, __saddr, __daddr) \  	const __addrpair __name = (__force __addrpair) ( \  				   (((__force __u64)(__be32)(__saddr)) << 32) | \ -				   ((__force __u64)(__be32)(__daddr))); +				   ((__force __u64)(__be32)(__daddr)))  #else /* __LITTLE_ENDIAN */  #define INET_ADDR_COOKIE(__name, __saddr, __daddr) \  	const __addrpair __name = (__force __addrpair) ( \  				   (((__force __u64)(__be32)(__daddr)) << 32) | \ -				   ((__force __u64)(__be32)(__saddr))); +				   ((__force __u64)(__be32)(__saddr)))  #endif /* __BIG_ENDIAN */  #define INET_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif)	\ -	((inet_sk(__sk)->inet_portpair == (__ports))		&&	\ -	 (inet_sk(__sk)->inet_addrpair == (__cookie))		&&	\ +	(((__sk)->sk_portpair == (__ports))			&&	\ +	 ((__sk)->sk_addrpair == (__cookie))			&&	\  	 (!(__sk)->sk_bound_dev_if	||				\  	   ((__sk)->sk_bound_dev_if == (__dif))) 		&& 	\  	 net_eq(sock_net(__sk), (__net))) -#define INET_TW_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif)\ -	((inet_twsk(__sk)->tw_portpair == (__ports))	&&		\ -	 (inet_twsk(__sk)->tw_addrpair == (__cookie))	&&		\ -	 (!(__sk)->sk_bound_dev_if	||				\ -	   ((__sk)->sk_bound_dev_if == (__dif)))	&&		\ -	 net_eq(sock_net(__sk), (__net)))  #else /* 32-bit arch */ -#define INET_ADDR_COOKIE(__name, __saddr, __daddr) +#define INET_ADDR_COOKIE(__name, __saddr, __daddr) \ +	const int __name __deprecated __attribute__((unused)) +  #define INET_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif) \ -	((inet_sk(__sk)->inet_portpair == (__ports))	&&		\ -	 (inet_sk(__sk)->inet_daddr	== (__saddr))	&&		\ -	 (inet_sk(__sk)->inet_rcv_saddr	== (__daddr))	&&		\ -	 (!(__sk)->sk_bound_dev_if	||				\ -	   ((__sk)->sk_bound_dev_if == (__dif))) 	&&		\ -	 net_eq(sock_net(__sk), (__net))) -#define INET_TW_MATCH(__sk, __net, __cookie, __saddr, __daddr, __ports, __dif) \ -	((inet_twsk(__sk)->tw_portpair == (__ports))	&&		\ -	 (inet_twsk(__sk)->tw_daddr	== (__saddr))	&&		\ -	 (inet_twsk(__sk)->tw_rcv_saddr	== (__daddr))	&&		\ +	(((__sk)->sk_portpair == (__ports))		&&		\ +	 ((__sk)->sk_daddr	== (__saddr))		&&		\ +	 ((__sk)->sk_rcv_saddr	== (__daddr))		&&		\  	 (!(__sk)->sk_bound_dev_if	||				\  	   ((__sk)->sk_bound_dev_if == (__dif))) 	&&		\  	 net_eq(sock_net(__sk), (__net))) @@ -339,10 +324,11 @@ static inline struct sock *inet_lookup_listener(struct net *net,   *   * Local BH must be disabled here.   */ -extern struct sock * __inet_lookup_established(struct net *net, -		struct inet_hashinfo *hashinfo, -		const __be32 saddr, const __be16 sport, -		const __be32 daddr, const u16 hnum, const int dif); +struct sock *__inet_lookup_established(struct net *net, +				       struct inet_hashinfo *hashinfo, +				       const __be32 saddr, const __be16 sport, +				       const __be32 daddr, const u16 hnum, +				       const int dif);  static inline struct sock *  	inet_lookup_established(struct net *net, struct inet_hashinfo *hashinfo, @@ -399,13 +385,14 @@ static inline struct sock *__inet_lookup_skb(struct inet_hashinfo *hashinfo,  				     iph->daddr, dport, inet_iif(skb));  } -extern int __inet_hash_connect(struct inet_timewait_death_row *death_row, -		struct sock *sk, -		u32 port_offset, -		int (*check_established)(struct inet_timewait_death_row *, -			struct sock *, __u16, struct inet_timewait_sock **), -		int (*hash)(struct sock *sk, struct inet_timewait_sock *twp)); +int __inet_hash_connect(struct inet_timewait_death_row *death_row, +			struct sock *sk, u32 port_offset, +			int (*check_established)(struct inet_timewait_death_row *, +						 struct sock *, __u16, +						 struct inet_timewait_sock **), +			int (*hash)(struct sock *sk, +				    struct inet_timewait_sock *twp)); -extern int inet_hash_connect(struct inet_timewait_death_row *death_row, -			     struct sock *sk); +int inet_hash_connect(struct inet_timewait_death_row *death_row, +		      struct sock *sk);  #endif /* _INET_HASHTABLES_H */  | 
