diff options
Diffstat (limited to 'include/linux/udp.h')
| -rw-r--r-- | include/linux/udp.h | 15 | 
1 files changed, 12 insertions, 3 deletions
diff --git a/include/linux/udp.h b/include/linux/udp.h index 0cf5c4c0ec81..03f72a2ba028 100644 --- a/include/linux/udp.h +++ b/include/linux/udp.h @@ -45,16 +45,19 @@ static inline struct udphdr *udp_hdr(const struct sk_buff *skb)  	return (struct udphdr *)skb_transport_header(skb);  } -#define UDP_HTABLE_SIZE		128 +#define UDP_HTABLE_SIZE_MIN		(CONFIG_BASE_SMALL ? 128 : 256) -static inline int udp_hashfn(struct net *net, const unsigned num) +static inline int udp_hashfn(struct net *net, unsigned num, unsigned mask)  { -	return (num + net_hash_mix(net)) & (UDP_HTABLE_SIZE - 1); +	return (num + net_hash_mix(net)) & mask;  }  struct udp_sock {  	/* inet_sock has to be the first member */  	struct inet_sock inet; +#define udp_port_hash		inet.sk.__sk_common.skc_u16hashes[0] +#define udp_portaddr_hash	inet.sk.__sk_common.skc_u16hashes[1] +#define udp_portaddr_node	inet.sk.__sk_common.skc_portaddr_node  	int		 pending;	/* Any pending frames ? */  	unsigned int	 corkflag;	/* Cork is required */    	__u16		 encap_type;	/* Is this an Encapsulation socket? */ @@ -85,6 +88,12 @@ static inline struct udp_sock *udp_sk(const struct sock *sk)  	return (struct udp_sock *)sk;  } +#define udp_portaddr_for_each_entry(__sk, node, list) \ +	hlist_nulls_for_each_entry(__sk, node, list, __sk_common.skc_portaddr_node) + +#define udp_portaddr_for_each_entry_rcu(__sk, node, list) \ +	hlist_nulls_for_each_entry_rcu(__sk, node, list, __sk_common.skc_portaddr_node) +  #define IS_UDPLITE(__sk) (udp_sk(__sk)->pcflag)  #endif  | 
