summaryrefslogtreecommitdiff
path: root/include/uapi/linux/socket.h
diff options
context:
space:
mode:
authorTony Lindgren <tony@atomide.com>2019-09-23 10:38:20 -0700
committerTony Lindgren <tony@atomide.com>2019-09-23 10:38:20 -0700
commitc01f5120ca7cf2994336c42b8a9cae697121ffb3 (patch)
treed0ac4ed8e3bc4c11203f31b984d300b0f4127978 /include/uapi/linux/socket.h
parenta4c8723a162e6244fb01944fbf446750575dba59 (diff)
parentf1f028ff89cb0d37db299d48e7b2ce19be040d52 (diff)
Merge branch 'fixes-merge-window-pt2' into fixes
Diffstat (limited to 'include/uapi/linux/socket.h')
-rw-r--r--include/uapi/linux/socket.h19
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 */