From b485ed2346b07afe7d3212f065610d8f20beb678 Mon Sep 17 00:00:00 2001 From: Jeff Latimer Date: Wed, 22 Apr 2009 23:09:14 +1000 Subject: [PATCH] include: Bring in6_addr into line with the MS definition. --- include/Makefile.in | 1 + include/in6addr.h | 52 +++++++++++++++++++++++++++++++++++++++++++++ include/ws2ipdef.h | 29 +++++++++---------------- include/ws2tcpip.h | 3 --- 4 files changed, 63 insertions(+), 22 deletions(-) create mode 100644 include/in6addr.h diff --git a/include/Makefile.in b/include/Makefile.in index 795e55ce611..5f7aacccc03 100644 --- a/include/Makefile.in +++ b/include/Makefile.in @@ -244,6 +244,7 @@ SRCDIR_INCLUDES = \ idispids.h \ imagehlp.h \ imm.h \ + in6addr.h \ initguid.h \ intshcut.h \ ipexport.h \ diff --git a/include/in6addr.h b/include/in6addr.h new file mode 100644 index 00000000000..042e8d2dd6b --- /dev/null +++ b/include/in6addr.h @@ -0,0 +1,52 @@ +/* + * Copyright (C) 2009 Jeff Latimer + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA + */ + +#ifndef __IN6ADDR__ +#define __IN6ADDR__ + +#ifdef USE_WS_PREFIX +#define WS(x) WS_##x +#else +#define WS(x) x +#endif + +typedef struct WS(in6_addr) { + union { + WS(u_char) Byte[16]; + WS(u_short) Word[8]; + } u; +} IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR; + +#define in_addr6 WS(in6_addr) + +#ifdef USE_WS_PREFIX +#define WS__S6_un u +#define WS__S6_u8 Byte +#define WS_s6_addr WS__S6_un.WS__S6_u8 +#else +#define _S6_un u +#define _S6_u8 Byte +#define s6_addr _S6_un._S6_u8 +#endif + +#define s6_bytes u.Byte +#define s6_words u.Word + +#undef WS + +#endif /* __IN6ADDR__ */ diff --git a/include/ws2ipdef.h b/include/ws2ipdef.h index c9c09709f58..ff2b2019c63 100644 --- a/include/ws2ipdef.h +++ b/include/ws2ipdef.h @@ -19,7 +19,7 @@ #ifndef __WS2IPDEF__ #define __WS2IPDEF__ -/* FIXME: #include */ +#include #ifdef USE_WS_PREFIX #define WS(x) WS_##x @@ -27,21 +27,12 @@ #define WS(x) x #endif -/* FIXME: This gets defined by some Unix (Linux) header and messes things */ -#undef s6_addr - -/* FIXME: should be in in6addr.h */ -typedef struct WS(in_addr6) -{ - WS(u_char) s6_addr[16]; /* IPv6 address */ -} IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR; - typedef struct WS(sockaddr_in6_old) { - short sin6_family; /* AF_INET6 */ - WS(u_short) sin6_port; /* Transport level port number */ - WS(u_long) sin6_flowinfo; /* IPv6 flow information */ - struct WS(in_addr6) sin6_addr; /* IPv6 address */ + SHORT sin6_family; + USHORT sin6_port; + ULONG sin6_flowinfo; + IN6_ADDR sin6_addr; } SOCKADDR_IN6_OLD,*PSOCKADDR_IN6_OLD, *LPSOCKADDR_IN6_OLD; typedef union sockaddr_gen @@ -131,11 +122,11 @@ typedef struct _INTERFACE_INFO typedef struct WS(sockaddr_in6) { - short sin6_family; /* AF_INET6 */ - WS(u_short) sin6_port; /* Transport level port number */ - WS(u_long) sin6_flowinfo; /* IPv6 flow information */ - struct WS(in_addr6) sin6_addr; /* IPv6 address */ - WS(u_long) sin6_scope_id; /* IPv6 scope id */ + SHORT sin6_family; + USHORT sin6_port; + ULONG sin6_flowinfo; + IN6_ADDR sin6_addr; + ULONG sin6_scope_id; } SOCKADDR_IN6,*PSOCKADDR_IN6, *LPSOCKADDR_IN6; /* diff --git a/include/ws2tcpip.h b/include/ws2tcpip.h index fc9f2587d26..6f1293f7c27 100644 --- a/include/ws2tcpip.h +++ b/include/ws2tcpip.h @@ -29,9 +29,6 @@ #define WS(x) x #endif -/* FIXME: This gets defined by some Unix (Linux) header and messes things */ -#undef s6_addr - /* for addrinfo calls */ typedef struct WS(addrinfo) {