130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef _UAPI_LINUX_SOCKET_H 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _UAPI_LINUX_SOCKET_H 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Desired design of maximum size and alignment (see RFC2553) 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _K_SS_MAXSIZE 128 /* Implementation specific max size */ 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define _K_SS_ALIGNSIZE (__alignof__ (struct sockaddr *)) 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Implementation specific desired alignment */ 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1130692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef unsigned short __kernel_sa_family_t; 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 1330692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct __kernel_sockaddr_storage { 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __kernel_sa_family_t ss_family; /* address family */ 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* Following field(s) are implementation specific */ 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng char __data[_K_SS_MAXSIZE - sizeof(unsigned short)]; 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* space to achieve desired size, */ 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* _SS_MAXSIZE value minus size of ss_family */ 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng} __attribute__ ((aligned(_K_SS_ALIGNSIZE))); /* force desired alignment */ 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* _UAPI_LINUX_SOCKET_H */ 22