From 5c1322ccdd9ede82384026f8b32157c5c43cb899 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Thu, 16 Dec 1999 15:45:18 +0000 Subject: [PATCH] (struct sockaddr_storage): redefine with the example code from rfc2553 git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7614 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/roken/roken.h.in | 38 ++++++++++++++++++++++---------------- 1 file changed, 22 insertions(+), 16 deletions(-) diff --git a/lib/roken/roken.h.in b/lib/roken/roken.h.in index 412ec7f6b..95a4564ca 100644 --- a/lib/roken/roken.h.in +++ b/lib/roken/roken.h.in @@ -438,34 +438,40 @@ typedef int socklen_t; typedef unsigned short sa_family_t; #endif +#ifdef HAVE_IPV6 +#define _SS_MAXSIZE sizeof(struct sockaddr_in6) +#else +#define _SS_MAXSIZE sizeof(struct sockaddr_in) +#endif + +#define _SS_ALIGNSIZE sizeof(unsigned long) + #if HAVE_STRUCT_SOCKADDR_SA_LEN +#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (sa_family_t) - sizeof(unsigned char)) +#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (sa_family_t) + _SS_PAD1SIZE + _SS_ALIGNSIZE)) + struct sockaddr_storage { unsigned char __ss_len; sa_family_t __ss_family; - char pad[ -#ifdef HAVE_IPV6 - sizeof(struct sockaddr_in6) -#else - sizeof(struct sockaddr_in) -#endif - - sizeof(unsigned char) - sizeof(sa_family_t)]; + char __ss_pad1[_SS_PAD1SIZE]; + unsigned long __ss_align; + char __ss_pad2[_SS_PAD2SIZE]; }; -#else +#else /* !HAVE_STRUCT_SOCKADDR_SA_LEN */ + +#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (sa_family_t)) +#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (sa_family_t) + _SS_PAD1SIZE + _SS_ALIGNSIZE)) struct sockaddr_storage { sa_family_t __ss_family; - char pad[ -#ifdef HAVE_IPV6 - sizeof(struct sockaddr_in6) -#else - sizeof(struct sockaddr_in) -#endif - - sizeof(sa_family_t)]; + char __ss_pad1[_SS_PAD1SIZE]; + unsigned long __ss_align; + char __ss_pad2[_SS_PAD2SIZE]; }; -#endif +#endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */ #endif /* HAVE_STRUCT_SOCKADDR_STORAGE */