diff options
Diffstat (limited to 'include/uapi/linux/socket.h')
| -rw-r--r-- | include/uapi/linux/socket.h | 19 | 
1 files changed, 13 insertions, 6 deletions
diff --git a/include/uapi/linux/socket.h b/include/uapi/linux/socket.h index 8eb96021709c..c3409c8ec0dd 100644 --- a/include/uapi/linux/socket.h +++ b/include/uapi/linux/socket.h @@ -6,17 +6,24 @@   * Desired design of maximum size and alignment (see RFC2553)   */  #define _K_SS_MAXSIZE	128	/* Implementation specific max size */ -#define _K_SS_ALIGNSIZE	(__alignof__ (struct sockaddr *)) -				/* Implementation specific desired alignment */  typedef unsigned short __kernel_sa_family_t; +/* + * The definition uses anonymous union and struct in order to control the + * default alignment. + */  struct __kernel_sockaddr_storage { -	__kernel_sa_family_t	ss_family;		/* address family */ -	/* Following field(s) are implementation specific */ -	char		__data[_K_SS_MAXSIZE - sizeof(unsigned short)]; +	union { +		struct { +			__kernel_sa_family_t	ss_family; /* address family */ +			/* Following field(s) are implementation specific */ +			char __data[_K_SS_MAXSIZE - sizeof(unsigned short)];  				/* space to achieve desired size, */  				/* _SS_MAXSIZE value minus size of ss_family */ -} __attribute__ ((aligned(_K_SS_ALIGNSIZE)));	/* force desired alignment */ +		}; +		void *__align; /* implementation specific desired alignment */ +	}; +};  #endif /* _UAPI_LINUX_SOCKET_H */  | 
