diff options
Diffstat (limited to 'include/net/sock.h')
| -rw-r--r-- | include/net/sock.h | 30 | 
1 files changed, 24 insertions, 6 deletions
| diff --git a/include/net/sock.h b/include/net/sock.h index c945fba4f543..93a6745bfdb2 100644 --- a/include/net/sock.h +++ b/include/net/sock.h @@ -126,12 +126,17 @@ struct sock;  struct proto;  struct net; +typedef __u32 __bitwise __portpair; +typedef __u64 __bitwise __addrpair; +  /**   *	struct sock_common - minimal network layer representation of sockets   *	@skc_daddr: Foreign IPv4 addr   *	@skc_rcv_saddr: Bound local IPv4 addr   *	@skc_hash: hash value used with various protocol lookup tables   *	@skc_u16hashes: two u16 hash values used by UDP lookup tables + *	@skc_dport: placeholder for inet_dport/tw_dport + *	@skc_num: placeholder for inet_num/tw_num   *	@skc_family: network address family   *	@skc_state: Connection state   *	@skc_reuse: %SO_REUSEADDR setting @@ -149,16 +154,29 @@ struct net;   *	for struct sock and struct inet_timewait_sock.   */  struct sock_common { -	/* skc_daddr and skc_rcv_saddr must be grouped : -	 * cf INET_MATCH() and INET_TW_MATCH() +	/* skc_daddr and skc_rcv_saddr must be grouped on a 8 bytes aligned +	 * address on 64bit arches : cf INET_MATCH() and INET_TW_MATCH()  	 */ -	__be32			skc_daddr; -	__be32			skc_rcv_saddr; - +	union { +		__addrpair	skc_addrpair; +		struct { +			__be32	skc_daddr; +			__be32	skc_rcv_saddr; +		}; +	};  	union  {  		unsigned int	skc_hash;  		__u16		skc_u16hashes[2];  	}; +	/* skc_dport && skc_num must be grouped as well */ +	union { +		__portpair	skc_portpair; +		struct { +			__be16	skc_dport; +			__u16	skc_num; +		}; +	}; +  	unsigned short		skc_family;  	volatile unsigned char	skc_state;  	unsigned char		skc_reuse; @@ -213,7 +231,7 @@ struct cg_proto;    *	@sk_sndbuf: size of send buffer in bytes    *	@sk_flags: %SO_LINGER (l_onoff), %SO_BROADCAST, %SO_KEEPALIVE,    *		   %SO_OOBINLINE settings, %SO_TIMESTAMPING settings -  *	@sk_no_check: %SO_NO_CHECK setting, wether or not checkup packets +  *	@sk_no_check: %SO_NO_CHECK setting, whether or not checkup packets    *	@sk_route_caps: route capabilities (e.g. %NETIF_F_TSO)    *	@sk_route_nocaps: forbidden route capabilities (e.g NETIF_F_GSO_MASK)    *	@sk_gso_type: GSO type (e.g. %SKB_GSO_TCPV4) |