From 692ae2c6cb419bded1135487f9cd19208e4e8fdf Mon Sep 17 00:00:00 2001 From: Ulf Lamping Date: Mon, 19 Sep 2005 20:59:50 +0000 Subject: fix #340: define the missing sockaddr_storage struct to be able to use Packet32.h even with WinPcap 3.1 and without the platform SDK svn path=/trunk/; revision=15878 --- gtk/capture_if_details_dlg.c | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) (limited to 'gtk/capture_if_details_dlg.c') diff --git a/gtk/capture_if_details_dlg.c b/gtk/capture_if_details_dlg.c index 963e0ead6b..87741c6e4e 100644 --- a/gtk/capture_if_details_dlg.c +++ b/gtk/capture_if_details_dlg.c @@ -49,6 +49,40 @@ #include #include +#ifndef HAVE_SOCKADDR_STORAGE +/* packet32.h requires sockaddr_storage (usually defined in Platform SDK) + * copied from RFC2553 (and slightly modified because of datatypes) ... */ +/* + * Desired design of maximum size and alignment + */ +#define ETH_SS_MAXSIZE 128 /* Implementation specific max size */ +#define ETH_SS_ALIGNSIZE (sizeof (gint64 /*int64_t*/)) + /* Implementation specific desired alignment */ +/* + * Definitions used for sockaddr_storage structure paddings design. + */ +#define ETH_SS_PAD1SIZE (ETH_SS_ALIGNSIZE - sizeof (sa_family_t)) +#define ETH_SS_PAD2SIZE (ETH_SS_MAXSIZE - (sizeof (sa_family_t) + \ + ETH_SS_PAD1SIZE + ETH_SS_ALIGNSIZE)) + +struct sockaddr_storage { + sa_family_t __ss_family; /* address family */ + /* Following fields are implementation specific */ + char __ss_pad1[ETH_SS_PAD1SIZE]; + /* 6 byte pad, this is to make implementation + /* specific pad up to alignment field that */ + /* follows explicit in the data structure */ + gint64 /*int64_t*/ __ss_align; /* field to force desired structure */ + /* storage alignment */ + char __ss_pad2[ETH_SS_PAD2SIZE]; + /* 112 byte pad to achieve desired size, */ + /* _SS_MAXSIZE value minus size of ss_family */ + /* __ss_pad1, __ss_align fields is 112 */ +}; +/* ... copied from RFC2553 */ +#endif + + #include #include #include -- cgit v1.2.3