diff --git a/src/libcglue/sys/socket.h b/src/libcglue/sys/socket.h index aa1036c8..bc4371ef 100644 --- a/src/libcglue/sys/socket.h +++ b/src/libcglue/sys/socket.h @@ -169,6 +169,22 @@ struct sockaddr { char sa_data[14]; /* actually longer; address value */ }; +/* + * RFC 2553: protocol-independent placeholder for socket addresses + */ +#define _SS_MAXSIZE 128 +#define _SS_ALIGNSIZE (sizeof(int64_t)) +#define _SS_PAD1SIZE (_SS_ALIGNSIZE - 2) +#define _SS_PAD2SIZE (_SS_MAXSIZE - 2 - _SS_PAD1SIZE - _SS_ALIGNSIZE) + +struct sockaddr_storage { + uint8_t ss_len; /* address length */ + sa_family_t ss_family; /* address family */ + char __ss_pad1[_SS_PAD1SIZE]; + int64_t __ss_align;/* force desired structure storage alignment */ + char __ss_pad2[_SS_PAD2SIZE]; +}; + /* * Protocol families, same as address families for now. */