Added mapping between unix and windows sockaddr_in6(_old) and
sockaddr_in. Added address family, socket type mappers.
diff --git a/include/ws2tcpip.h b/include/ws2tcpip.h
index 45128fc..8e58bcd 100644
--- a/include/ws2tcpip.h
+++ b/include/ws2tcpip.h
@@ -84,19 +84,31 @@
u_char s6_addr[16]; /* IPv6 address */
} IN6_ADDR, *PIN6_ADDR, *LPIN6_ADDR;
+/* check for sockaddr_in6 / sockaddr_in6_old madness:
+ * http://msdn.microsoft.com/library/en-us/winsock/winsock/sockaddr_2.asp
+ */
typedef struct WS(sockaddr_in6)
{
short sin6_family; /* AF_INET6 */
u_short sin6_port; /* Transport level port number */
u_long sin6_flowinfo; /* IPv6 flow information */
struct WS(in_addr6) sin6_addr; /* IPv6 address */
+ u_long sin6_scope_id; /* IPv6 scope id */
} SOCKADDR_IN6,*PSOCKADDR_IN6, *LPSOCKADDR_IN6;
+typedef struct WS(sockaddr_in6_old)
+{
+ short sin6_family; /* AF_INET6 */
+ u_short sin6_port; /* Transport level port number */
+ u_long sin6_flowinfo; /* IPv6 flow information */
+ struct WS(in_addr6) sin6_addr; /* IPv6 address */
+} SOCKADDR_IN6_OLD,*PSOCKADDR_IN6_OLD, *LPSOCKADDR_IN6_OLD;
+
typedef union sockaddr_gen
{
struct WS(sockaddr) Address;
struct WS(sockaddr_in) AddressIn;
- struct WS(sockaddr_in6) AddressIn6;
+ struct WS(sockaddr_in6_old) AddressIn6;
} WS(sockaddr_gen);
/* Structure to keep interface specific information */