On 2005-05-11, Vincent Vanwynsberghe <vvanwynsberghe@ccncsi.net> wrote:
> The AIX 5.3 provide the structure sockaddr_storage :
>
> struct sockaddr_storage {
> ushort_t __ss_family; /* address family */
> char __ss_pad1[_SS_PAD1SIZE]; /* pad up to alignment
> field */
> #if defined(__64BIT__) || (defined(_ALL_SOURCE) && defined(_LONG_LONG))
> int64_t __ss_align; /* field to force desired structure
> */
> /* storage alignment */
> #else
> int __ss_align[2];
> #endif
> char __ss_pad2[_SS_PAD2SIZE];
> /* pad to achieve desired size */
> };
If the size of sockaddr_storage is less than the size of sockaddr_un
(or any sockaddr_* structure) then this is a bug in AIX, because the
Unix standards clearly specify that sockaddr_storage must be both sized
and aligned such that a sockaddr_* struct for any supported protocol
can be stored there.
See the entry for <sys/socket.h> in the Headers chapter of the
Base Definitions volume of the SUSv3.
--
Andrew, Supernews
http://www.supernews.com - individual and corporate NNTP services