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 */