Module: wine
Branch: master
Commit: b485ed2346b07afe7d3212f065610d8f20beb678
URL: http://source.winehq.org/git/wine.git/?a=commit;h=b485ed2346b07afe7d3212f06…
Author: Jeff Latimer <lats(a)yless4u.com.au>
Date: Wed Apr 22 23:09:14 2009 +1000
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(-)
diff --git a/include/Makefile.in b/include/Makefile.in
index 795e55c..5f7aacc 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 0000000..042e8d2
--- /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 c9c0970..ff2b201 100644
--- a/include/ws2ipdef.h
+++ b/include/ws2ipdef.h
@@ -19,7 +19,7 @@
#ifndef __WS2IPDEF__
#define __WS2IPDEF__
-/* FIXME: #include <in6addr.h> */
+#include <in6addr.h>
#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 fc9f258..6f1293f 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)
{