From 9e9d385daafd6f9a8c7b1540e957363cc644b059 Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Thu, 30 Dec 1999 02:22:54 +0000 Subject: [PATCH] (sockaddr_storage): change padding so that we have one char[] of pad and then an unsigned long[] (for alignment and padding). this works much better in practice. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7685 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/roken/roken.h.in | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/lib/roken/roken.h.in b/lib/roken/roken.h.in index 3c2ad8af7..9a615e3f8 100644 --- a/lib/roken/roken.h.in +++ b/lib/roken/roken.h.in @@ -448,27 +448,29 @@ typedef unsigned short sa_family_t; #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)) +typedef unsigned char roken_sa_family_t; + +#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (roken_sa_family_t) - sizeof(unsigned char)) +#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (roken_sa_family_t) + sizeof(unsigned char) + _SS_PAD1SIZE + _SS_ALIGNSIZE)) struct sockaddr_storage { unsigned char ss_len; - sa_family_t ss_family; + roken_sa_family_t ss_family; char __ss_pad1[_SS_PAD1SIZE]; - unsigned long __ss_align; - char __ss_pad2[_SS_PAD2SIZE]; + unsigned long __ss_align[_SS_PAD2SIZE / sizeof(unsigned long) + 1]; }; #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)) +typedef unsigned short roken_sa_family_t; + +#define _SS_PAD1SIZE (_SS_ALIGNSIZE - sizeof (roken_sa_family_t)) +#define _SS_PAD2SIZE (_SS_MAXSIZE - (sizeof (roken_sa_family_t) + _SS_PAD1SIZE + _SS_ALIGNSIZE)) struct sockaddr_storage { - sa_family_t ss_family; + roken_sa_family_t ss_family; char __ss_pad1[_SS_PAD1SIZE]; - unsigned long __ss_align; - char __ss_pad2[_SS_PAD2SIZE]; + unsigned long __ss_align[_SS_PAD2SIZE / sizeof(unsigned long) + 1]; }; #endif /* HAVE_STRUCT_SOCKADDR_SA_LEN */