- Add missing ws2ipdef.h definitions.
- Group related definitions.
svn path=/branches/header-work/; revision=46591
OUT char FAR *buf,
IN int len,
IN OUT int FAR *flags);
-#else //(_WIN32_WINNT < 0x0600)
+#else
INT
PASCAL
FAR
OUT CHAR FAR *buf,
IN INT len,
IN OUT INT FAR *flags);
-#endif //(_WIN32_WINNT < 0x0600)
+#endif /* (_WIN32_WINNT < 0x0600) */
BOOL
PASCAL
#define INADDR_BROADCAST (u_long)0xffffffff
#define INADDR_NONE 0xffffffff
-struct sockaddr_in {
- short sin_family;
- u_short sin_port;
- struct in_addr sin_addr;
- char sin_zero[8];
-};
-
#define WSADESCRIPTION_LEN 256
#define WSASYS_STATUS_LEN 128
-typedef struct WSAData {
- WORD wVersion;
- WORD wHighVersion;
-#ifdef _WIN64
- unsigned short iMaxSockets;
- unsigned short iMaxUdpDg;
- char *lpVendorInfo;
- char szDescription[WSADESCRIPTION_LEN+1];
- char szSystemStatus[WSASYS_STATUS_LEN+1];
-#else
- char szDescription[WSADESCRIPTION_LEN+1];
- char szSystemStatus[WSASYS_STATUS_LEN+1];
- unsigned short iMaxSockets;
- unsigned short iMaxUdpDg;
- char *lpVendorInfo;
-} WSADATA, FAR *LPWSADATA;
-
-/*
- * Note that the next 5 IP defines are specific to WinSock 1.1 (wsock32.dll).
- * They will cause errors or unexpected results if used with the
- * (gs)etsockopts exported from the WinSock 2 lib, ws2_32.dll. Refer ws2tcpip.h.
- */
#define IP_MULTICAST_IF 2
#define IP_MULTICAST_TTL 3
#define IP_MULTICAST_LOOP 4
#define IP_DEFAULT_MULTICAST_LOOP 1
#define IP_MAX_MEMBERSHIPS 20
-struct ip_mreq {
- struct in_addr imr_multiaddr;
- struct in_addr imr_interface;
-};
-
#define INVALID_SOCKET (SOCKET)(~0)
#define SOCKET_ERROR (-1)
#define AF_ATM 22
#define AF_INET6 23
-struct sockproto {
- u_short sp_family;
- u_short sp_protocol;
-};
-
#define PF_UNSPEC AF_UNSPEC
#define PF_UNIX AF_UNIX
#define PF_INET AF_INET
#define WSANO_ADDRESS WSANO_DATA
+#define TF_DISCONNECT 0x01
+#define TF_REUSE_SOCKET 0x02
+#define TF_WRITE_BEHIND 0x04
+
+#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e)
+#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error)
+#define WSAGETASYNCBUFLEN(l) LOWORD(l)
+#define WSAGETASYNCERROR(l) HIWORD(l)
+#define WSAGETSELECTEVENT(l) LOWORD(l)
+#define WSAGETSELECTERROR(l) HIWORD(l)
+
+typedef struct sockaddr SOCKADDR;
+typedef struct sockaddr *PSOCKADDR;
+typedef struct sockaddr *LPSOCKADDR;
+typedef struct sockaddr_in SOCKADDR_IN;
+typedef struct sockaddr_in *PSOCKADDR_IN;
+typedef struct sockaddr_in *LPSOCKADDR_IN;
+typedef struct linger LINGER;
+typedef struct linger *PLINGER;
+typedef struct linger *LPLINGER;
+typedef struct in_addr IN_ADDR;
+typedef struct in_addr *PIN_ADDR;
+typedef struct in_addr *LPIN_ADDR;
+typedef struct fd_set FD_SET;
+typedef struct fd_set *PFD_SET;
+typedef struct fd_set *LPFD_SET;
+typedef struct hostent HOSTENT;
+typedef struct hostent *PHOSTENT;
+typedef struct hostent *LPHOSTENT;
+typedef struct servent SERVENT;
+typedef struct servent *PSERVENT;
+typedef struct servent *LPSERVENT;
+typedef struct protoent PROTOENT;
+typedef struct protoent *PPROTOENT;
+typedef struct protoent *LPPROTOENT;
+typedef struct timeval TIMEVAL;
+typedef struct timeval *PTIMEVAL;
+typedef struct timeval *LPTIMEVAL;
+
+struct sockaddr_in {
+ short sin_family;
+ u_short sin_port;
+ struct in_addr sin_addr;
+ char sin_zero[8];
+};
+
+typedef struct WSAData {
+ WORD wVersion;
+ WORD wHighVersion;
+#ifdef _WIN64
+ unsigned short iMaxSockets;
+ unsigned short iMaxUdpDg;
+ char *lpVendorInfo;
+ char szDescription[WSADESCRIPTION_LEN+1];
+ char szSystemStatus[WSASYS_STATUS_LEN+1];
+#else
+ char szDescription[WSADESCRIPTION_LEN+1];
+ char szSystemStatus[WSASYS_STATUS_LEN+1];
+ unsigned short iMaxSockets;
+ unsigned short iMaxUdpDg;
+ char *lpVendorInfo;
+} WSADATA, FAR *LPWSADATA;
+
+struct ip_mreq {
+ struct in_addr imr_multiaddr;
+ struct in_addr imr_interface;
+};
+
+struct sockproto {
+ u_short sp_family;
+ u_short sp_protocol;
+};
+
SOCKET
PASCAL FAR
accept(
DWORD TailLength;
} TRANSMIT_FILE_BUFFERS, *PTRANSMIT_FILE_BUFFERS, *LPTRANSMIT_FILE_BUFFERS;
-#define TF_DISCONNECT 0x01
-#define TF_REUSE_SOCKET 0x02
-#define TF_WRITE_BEHIND 0x04
-
BOOL
PASCAL FAR
TransmitFile(
OUT struct sockaddr **RemoteSockaddr,
OUT LPINT RemoteSockaddrLength);
-#define WSAMAKEASYNCREPLY(b,e) MAKELONG(b,e)
-#define WSAMAKESELECTREPLY(e,error) MAKELONG(e,error)
-#define WSAGETASYNCBUFLEN(l) LOWORD(l)
-#define WSAGETASYNCERROR(l) HIWORD(l)
-#define WSAGETSELECTEVENT(l) LOWORD(l)
-#define WSAGETSELECTERROR(l) HIWORD(l)
-
-typedef struct sockaddr SOCKADDR;
-typedef struct sockaddr *PSOCKADDR;
-typedef struct sockaddr *LPSOCKADDR;
-typedef struct sockaddr_in SOCKADDR_IN;
-typedef struct sockaddr_in *PSOCKADDR_IN;
-typedef struct sockaddr_in *LPSOCKADDR_IN;
-typedef struct linger LINGER;
-typedef struct linger *PLINGER;
-typedef struct linger *LPLINGER;
-typedef struct in_addr IN_ADDR;
-typedef struct in_addr *PIN_ADDR;
-typedef struct in_addr *LPIN_ADDR;
-typedef struct fd_set FD_SET;
-typedef struct fd_set *PFD_SET;
-typedef struct fd_set *LPFD_SET;
-typedef struct hostent HOSTENT;
-typedef struct hostent *PHOSTENT;
-typedef struct hostent *LPHOSTENT;
-typedef struct servent SERVENT;
-typedef struct servent *PSERVENT;
-typedef struct servent *LPSERVENT;
-typedef struct protoent PROTOENT;
-typedef struct protoent *PPROTOENT;
-typedef struct protoent *LPPROTOENT;
-typedef struct timeval TIMEVAL;
-typedef struct timeval *PTIMEVAL;
-typedef struct timeval *LPTIMEVAL;
-
#if(_WIN32_WINNT >= 0x0501)
#ifdef IPV6STRICT
#define IMPLINK_LOWEXPER 156
#define IMPLINK_HIGHEXPER 158
-#ifndef s_addr
-
-#define s_addr S_un.S_addr
-#define s_host S_un.S_un_b.s_b2
-#define s_net S_un.S_un_b.s_b1
-#define s_imp S_un.S_un_w.s_w2
-#define s_impno S_un.S_un_b.s_b4
-#define s_lh S_un.S_un_b.s_b3
-
-typedef struct in_addr {
- union {
- struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
- struct { u_short s_w1,s_w2; } S_un_w;
- u_long S_addr;
- } S_un;
-} IN_ADDR, *PIN_ADDR;
-
-#endif /* s_addr */
-
#define ADDR_ANY INADDR_ANY
#define WSADESCRIPTION_LEN 256
#define WSASYS_STATUS_LEN 128
-typedef struct WSAData {
- WORD wVersion;
- WORD wHighVersion;
-#ifdef _WIN64
- unsigned short iMaxSockets;
- unsigned short iMaxUdpDg;
- char *lpVendorInfo;
- char szDescription[WSADESCRIPTION_LEN+1];
- char szSystemStatus[WSASYS_STATUS_LEN+1];
-#else
- char szDescription[WSADESCRIPTION_LEN+1];
- char szSystemStatus[WSASYS_STATUS_LEN+1];
- unsigned short iMaxSockets;
- unsigned short iMaxUdpDg;
- char *lpVendorInfo;
-} WSADATA, FAR *LPWSADATA;
-
#define INVALID_SOCKET (SOCKET)(~0)
#define SOCKET_ERROR (-1)
#endif
#define PVD_CONFIG 0x3001
-struct sockproto {
- u_short sp_family;
- u_short sp_protocol;
-};
-
#define PF_UNSPEC AF_UNSPEC
#define PF_UNIX AF_UNIX
#define PF_INET AF_INET
#endif /* !WSABASEERR */
+#define CF_ACCEPT 0x0000
+#define CF_REJECT 0x0001
+#define CF_DEFER 0x0002
+#define SD_RECEIVE 0x00
+#define SD_SEND 0x01
+#define SD_BOTH 0x02
+
+#define SG_UNCONSTRAINED_GROUP 0x01
+#define SG_CONSTRAINED_GROUP 0x02
+
+#define MAX_PROTOCOL_CHAIN 7
+
+#define BASE_PROTOCOL 1
+#define LAYERED_PROTOCOL 0
+
+#define WSAPROTOCOL_LEN 255
+
+#define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
+#define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
+#define PFL_HIDDEN 0x00000004
+#define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
+#define PFL_NETWORKDIRECT_PROVIDER 0x00000010
+
+#define XP1_CONNECTIONLESS 0x00000001
+#define XP1_GUARANTEED_DELIVERY 0x00000002
+#define XP1_GUARANTEED_ORDER 0x00000004
+#define XP1_MESSAGE_ORIENTED 0x00000008
+#define XP1_PSEUDO_STREAM 0x00000010
+#define XP1_GRACEFUL_CLOSE 0x00000020
+#define XP1_EXPEDITED_DATA 0x00000040
+#define XP1_CONNECT_DATA 0x00000080
+#define XP1_DISCONNECT_DATA 0x00000100
+#define XP1_SUPPORT_BROADCAST 0x00000200
+#define XP1_SUPPORT_MULTIPOINT 0x00000400
+#define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
+#define XP1_MULTIPOINT_DATA_PLANE 0x00001000
+#define XP1_QOS_SUPPORTED 0x00002000
+#define XP1_INTERRUPT 0x00004000
+#define XP1_UNI_SEND 0x00008000
+#define XP1_UNI_RECV 0x00010000
+#define XP1_IFS_HANDLES 0x00020000
+#define XP1_PARTIAL_MESSAGE 0x00040000
+#define XP1_SAN_SUPPORT_SDP 0x00080000
+
+#define BIGENDIAN 0x0000
+#define LITTLEENDIAN 0x0001
+
+#define SECURITY_PROTOCOL_NONE 0x0000
+
+#define JL_SENDER_ONLY 0x01
+#define JL_RECEIVER_ONLY 0x02
+#define JL_BOTH 0x04
+
+#define WSA_FLAG_OVERLAPPED 0x01
+#define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
+#define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
+#define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
+#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
+#define WSA_FLAG_ACCESS_SYSTEM_SECURITY 0x40
+
+#define TH_NETDEV 0x00000001
+#define TH_TAPI 0x00000002
+
+#define SERVICE_MULTIPLE 0x00000001
+
+#define NS_ALL 0
+#define NS_SAP 1
+#define NS_NDS 2
+#define NS_PEER_BROWSE 3
+#define NS_SLP 5
+#define NS_DHCP 6
+#define NS_TCPIP_LOCAL 10
+#define NS_TCPIP_HOSTS 11
+#define NS_DNS 12
+#define NS_NETBT 13
+#define NS_WINS 14
+#if(_WIN32_WINNT >= 0x0501)
+#define NS_NLA 15
+#endif
+#if(_WIN32_WINNT >= 0x0600)
+#define NS_BTH 16
+#endif
+#define NS_NBP 20
+#define NS_MS 30
+#define NS_STDA 31
+#define NS_NTDS 32
+#if(_WIN32_WINNT >= 0x0600)
+#define NS_EMAIL 37
+#define NS_PNRPNAME 38
+#define NS_PNRPCLOUD 39
+#endif
+#define NS_X500 40
+#define NS_NIS 41
+#define NS_NISPLUS 42
+#define NS_WRQ 50
+#define NS_NETDES 60
+
+#define RES_UNUSED_1 0x00000001
+#define RES_FLUSH_CACHE 0x00000002
+#ifndef RES_SERVICE
+#define RES_SERVICE 0x00000004
+#endif
+
+#define SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket"
+#define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket"
+#define SERVICE_TYPE_VALUE_SAPIDA "SapId"
+#define SERVICE_TYPE_VALUE_SAPIDW L"SapId"
+
+#define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
+#define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
+
+#define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
+#define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
+
+#define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId"
+#define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId"
+
+#ifdef UNICODE
+#define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDW
+#define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTW
+#define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTW
+#define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDW
+#else
+#define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDA
+#define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTA
+#define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTA
+#define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDA
+#endif
+
+#define LUP_DEEP 0x0001
+#define LUP_CONTAINERS 0x0002
+#define LUP_NOCONTAINERS 0x0004
+#define LUP_NEAREST 0x0008
+#define LUP_RETURN_NAME 0x0010
+#define LUP_RETURN_TYPE 0x0020
+#define LUP_RETURN_VERSION 0x0040
+#define LUP_RETURN_COMMENT 0x0080
+#define LUP_RETURN_ADDR 0x0100
+#define LUP_RETURN_BLOB 0x0200
+#define LUP_RETURN_ALIASES 0x0400
+#define LUP_RETURN_QUERY_STRING 0x0800
+#define LUP_RETURN_ALL 0x0FF0
+#define LUP_RES_SERVICE 0x8000
+#define LUP_FLUSHCACHE 0x1000
+#define LUP_FLUSHPREVIOUS 0x2000
+#define LUP_NON_AUTHORITATIVE 0x4000
+#define LUP_SECURE 0x8000
+#define LUP_RETURN_PREFERRED_NAMES 0x10000
+#define LUP_ADDRCONFIG 0x00100000
+#define LUP_DUAL_ADDR 0x00200000
+#define LUP_FILESERVER 0x00400000
+
+#define RESULT_IS_ALIAS 0x0001
+#if(_WIN32_WINNT >= 0x0501)
+#define RESULT_IS_ADDED 0x0010
+#define RESULT_IS_CHANGED 0x0020
+#define RESULT_IS_DELETED 0x0040
+#endif
+
+
+
+
+
+
+#ifndef s_addr
+
+#define s_addr S_un.S_addr
+#define s_host S_un.S_un_b.s_b2
+#define s_net S_un.S_un_b.s_b1
+#define s_imp S_un.S_un_w.s_w2
+#define s_impno S_un.S_un_b.s_b4
+#define s_lh S_un.S_un_b.s_b3
+
+typedef struct in_addr {
+ union {
+ struct { u_char s_b1,s_b2,s_b3,s_b4; } S_un_b;
+ struct { u_short s_w1,s_w2; } S_un_w;
+ u_long S_addr;
+ } S_un;
+} IN_ADDR, *PIN_ADDR;
+
+#endif /* s_addr */
+
+typedef struct WSAData {
+ WORD wVersion;
+ WORD wHighVersion;
+#ifdef _WIN64
+ unsigned short iMaxSockets;
+ unsigned short iMaxUdpDg;
+ char *lpVendorInfo;
+ char szDescription[WSADESCRIPTION_LEN+1];
+ char szSystemStatus[WSASYS_STATUS_LEN+1];
+#else
+ char szDescription[WSADESCRIPTION_LEN+1];
+ char szSystemStatus[WSASYS_STATUS_LEN+1];
+ unsigned short iMaxSockets;
+ unsigned short iMaxUdpDg;
+ char *lpVendorInfo;
+} WSADATA, FAR *LPWSADATA;
+
+struct sockproto {
+ u_short sp_family;
+ u_short sp_protocol;
+};
+
#ifdef WIN32
#define WSAAPI FAR PASCAL
WSABUF ProviderSpecific;
} QOS, *LPQOS;
-#define CF_ACCEPT 0x0000
-#define CF_REJECT 0x0001
-#define CF_DEFER 0x0002
-#define SD_RECEIVE 0x00
-#define SD_SEND 0x01
-#define SD_BOTH 0x02
-
typedef unsigned int GROUP;
-#define SG_UNCONSTRAINED_GROUP 0x01
-#define SG_CONSTRAINED_GROUP 0x02
-
typedef struct _WSANETWORKEVENTS {
LONG lNetworkEvents;
int iErrorCode[FD_MAX_EVENTS];
#include <guiddef.h>
#endif
-#define MAX_PROTOCOL_CHAIN 7
-
-#define BASE_PROTOCOL 1
-#define LAYERED_PROTOCOL 0
-
typedef struct _WSAPROTOCOLCHAIN {
int ChainLen;
DWORD ChainEntries[MAX_PROTOCOL_CHAIN];
} WSAPROTOCOLCHAIN, *LPWSAPROTOCOLCHAIN;
-#define WSAPROTOCOL_LEN 255
-
typedef struct _WSAPROTOCOL_INFOA {
DWORD dwServiceFlags1;
DWORD dwServiceFlags2;
typedef LPWSAPROTOCOL_INFOA LPWSAPROTOCOL_INFO;
#endif
-#define PFL_MULTIPLE_PROTO_ENTRIES 0x00000001
-#define PFL_RECOMMENDED_PROTO_ENTRY 0x00000002
-#define PFL_HIDDEN 0x00000004
-#define PFL_MATCHES_PROTOCOL_ZERO 0x00000008
-#define PFL_NETWORKDIRECT_PROVIDER 0x00000010
-
-#define XP1_CONNECTIONLESS 0x00000001
-#define XP1_GUARANTEED_DELIVERY 0x00000002
-#define XP1_GUARANTEED_ORDER 0x00000004
-#define XP1_MESSAGE_ORIENTED 0x00000008
-#define XP1_PSEUDO_STREAM 0x00000010
-#define XP1_GRACEFUL_CLOSE 0x00000020
-#define XP1_EXPEDITED_DATA 0x00000040
-#define XP1_CONNECT_DATA 0x00000080
-#define XP1_DISCONNECT_DATA 0x00000100
-#define XP1_SUPPORT_BROADCAST 0x00000200
-#define XP1_SUPPORT_MULTIPOINT 0x00000400
-#define XP1_MULTIPOINT_CONTROL_PLANE 0x00000800
-#define XP1_MULTIPOINT_DATA_PLANE 0x00001000
-#define XP1_QOS_SUPPORTED 0x00002000
-#define XP1_INTERRUPT 0x00004000
-#define XP1_UNI_SEND 0x00008000
-#define XP1_UNI_RECV 0x00010000
-#define XP1_IFS_HANDLES 0x00020000
-#define XP1_PARTIAL_MESSAGE 0x00040000
-#define XP1_SAN_SUPPORT_SDP 0x00080000
-
-#define BIGENDIAN 0x0000
-#define LITTLEENDIAN 0x0001
-
-#define SECURITY_PROTOCOL_NONE 0x0000
-
-#define JL_SENDER_ONLY 0x01
-#define JL_RECEIVER_ONLY 0x02
-#define JL_BOTH 0x04
-
-#define WSA_FLAG_OVERLAPPED 0x01
-#define WSA_FLAG_MULTIPOINT_C_ROOT 0x02
-#define WSA_FLAG_MULTIPOINT_C_LEAF 0x04
-#define WSA_FLAG_MULTIPOINT_D_ROOT 0x08
-#define WSA_FLAG_MULTIPOINT_D_LEAF 0x10
-#define WSA_FLAG_ACCESS_SYSTEM_SECURITY 0x40
-
typedef int
(CALLBACK *LPCONDITIONPROC)(
IN LPWSABUF lpCallerId,
#endif /* (_WIN32_WINNT >= 0x0501) */
-#define TH_NETDEV 0x00000001
-#define TH_TAPI 0x00000002
-
#ifndef __BLOB_T_DEFINED /* also in wtypes.h and nspapi.h */
#define __BLOB_T_DEFINED
/* wine is using a diff define */
#endif /* __BLOB_T_DEFINED */
-#define SERVICE_MULTIPLE 0x00000001
-
-#define NS_ALL 0
-#define NS_SAP 1
-#define NS_NDS 2
-#define NS_PEER_BROWSE 3
-#define NS_SLP 5
-#define NS_DHCP 6
-#define NS_TCPIP_LOCAL 10
-#define NS_TCPIP_HOSTS 11
-#define NS_DNS 12
-#define NS_NETBT 13
-#define NS_WINS 14
-#if(_WIN32_WINNT >= 0x0501)
-#define NS_NLA 15
-#endif
-#if(_WIN32_WINNT >= 0x0600)
-#define NS_BTH 16
-#endif
-#define NS_NBP 20
-#define NS_MS 30
-#define NS_STDA 31
-#define NS_NTDS 32
-#if(_WIN32_WINNT >= 0x0600)
-#define NS_EMAIL 37
-#define NS_PNRPNAME 38
-#define NS_PNRPCLOUD 39
-#endif
-#define NS_X500 40
-#define NS_NIS 41
-#define NS_NISPLUS 42
-#define NS_WRQ 50
-#define NS_NETDES 60
-
-#define RES_UNUSED_1 0x00000001
-#define RES_FLUSH_CACHE 0x00000002
-#ifndef RES_SERVICE
-#define RES_SERVICE 0x00000004
-#endif
-
-#define SERVICE_TYPE_VALUE_IPXPORTA "IpxSocket"
-#define SERVICE_TYPE_VALUE_IPXPORTW L"IpxSocket"
-#define SERVICE_TYPE_VALUE_SAPIDA "SapId"
-#define SERVICE_TYPE_VALUE_SAPIDW L"SapId"
-
-#define SERVICE_TYPE_VALUE_TCPPORTA "TcpPort"
-#define SERVICE_TYPE_VALUE_TCPPORTW L"TcpPort"
-
-#define SERVICE_TYPE_VALUE_UDPPORTA "UdpPort"
-#define SERVICE_TYPE_VALUE_UDPPORTW L"UdpPort"
-
-#define SERVICE_TYPE_VALUE_OBJECTIDA "ObjectId"
-#define SERVICE_TYPE_VALUE_OBJECTIDW L"ObjectId"
-
-#ifdef UNICODE
-#define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDW
-#define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTW
-#define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTW
-#define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDW
-#else
-#define SERVICE_TYPE_VALUE_SAPID SERVICE_TYPE_VALUE_SAPIDA
-#define SERVICE_TYPE_VALUE_TCPPORT SERVICE_TYPE_VALUE_TCPPORTA
-#define SERVICE_TYPE_VALUE_UDPPORT SERVICE_TYPE_VALUE_UDPPORTA
-#define SERVICE_TYPE_VALUE_OBJECTID SERVICE_TYPE_VALUE_OBJECTIDA
-#endif
-
typedef struct _AFPROTOCOLS {
INT iAddressFamily;
INT iProtocol;
typedef LPWSAQUERYSET2A LPWSAQUERYSET2;
#endif /* UNICODE */
-#define LUP_DEEP 0x0001
-#define LUP_CONTAINERS 0x0002
-#define LUP_NOCONTAINERS 0x0004
-#define LUP_NEAREST 0x0008
-#define LUP_RETURN_NAME 0x0010
-#define LUP_RETURN_TYPE 0x0020
-#define LUP_RETURN_VERSION 0x0040
-#define LUP_RETURN_COMMENT 0x0080
-#define LUP_RETURN_ADDR 0x0100
-#define LUP_RETURN_BLOB 0x0200
-#define LUP_RETURN_ALIASES 0x0400
-#define LUP_RETURN_QUERY_STRING 0x0800
-#define LUP_RETURN_ALL 0x0FF0
-#define LUP_RES_SERVICE 0x8000
-#define LUP_FLUSHCACHE 0x1000
-#define LUP_FLUSHPREVIOUS 0x2000
-#define LUP_NON_AUTHORITATIVE 0x4000
-#define LUP_SECURE 0x8000
-#define LUP_RETURN_PREFERRED_NAMES 0x10000
-#define LUP_ADDRCONFIG 0x00100000
-#define LUP_DUAL_ADDR 0x00200000
-#define LUP_FILESERVER 0x00400000
-
-#define RESULT_IS_ALIAS 0x0001
-#if(_WIN32_WINNT >= 0x0501)
-#define RESULT_IS_ADDED 0x0010
-#define RESULT_IS_CHANGED 0x0020
-#define RESULT_IS_DELETED 0x0040
-#endif
-
typedef enum _WSAESETSERVICEOP {
RNRSERVICE_REGISTER=0,
RNRSERVICE_DEREGISTER,
#define NS_BTH 16
#endif
-typedef struct _SOCKADDR_BTH {
- USHORT addressFamily;
- BTH_ADDR btAddr;
- GUID serviceClassId;
- ULONG port;
-} SOCKADDR_BTH, *PSOCKADDR_BTH;
-
DEFINE_GUID(SVCID_BTH_PROVIDER, 0x6aa63e0, 0x7d60, 0x41ff, 0xaf, 0xb2, 0x3e, 0xe6, 0xd2, 0xd9, 0x39, 0x2d);
#define BTH_ADDR_STRING_SIZE 12
#define BTH_SDP_VERSION 1
-typedef struct _BTH_SET_SERVICE {
- PULONG pSdpVersion;
- HANDLE *pRecordHandle;
- ULONG fCodService;
- ULONG Reserved[5];
- ULONG ulRecordLength;
- UCHAR pRecord[1];
-} BTH_SET_SERVICE, *PBTH_SET_SERVICE;
-
#define SDP_DEFAULT_INQUIRY_SECONDS 6
#define SDP_MAX_INQUIRY_SECONDS 60
#define SDP_SERVICE_ATTRIBUTE_REQUEST 2
#define SDP_SERVICE_SEARCH_ATTRIBUTE_REQUEST 3
-typedef struct _BTH_QUERY_DEVICE {
- ULONG LAP;
- UCHAR length;
-} BTH_QUERY_DEVICE, *PBTH_QUERY_DEVICE;
-
-typedef struct _BTH_QUERY_SERVICE {
- ULONG type;
- ULONG serviceHandle;
- SdpQueryUuid uuids[MAX_UUIDS_IN_QUERY];
- ULONG numRange;
- SdpAttributeRange pRange[1];
-} BTH_QUERY_SERVICE, *PBTH_QUERY_SERVICE;
-
#define BTHNS_RESULT_DEVICE_CONNECTED 0x00010000
#define BTHNS_RESULT_DEVICE_REMEMBERED 0x00020000
#define BTHNS_RESULT_DEVICE_AUTHENTICATED 0x00040000
#define MSC_BREAK_BIT BIT(1)
#define MSC_SET_BREAK_LENGTH(b, l) ((b) = ((b)&0x3) | (((l)&0xf) << 4))
-typedef struct _RFCOMM_MSC_DATA {
- UCHAR Signals;
- UCHAR Break;
-} RFCOMM_MSC_DATA, *PRFCOMM_MSC_DATA;
-
#define RLS_ERROR 0x01
#define RLS_OVERRUN 0x02
#define RLS_PARITY 0x04
#define RLS_FRAMING 0x08
-typedef struct _RFCOMM_RLS_DATA {
- UCHAR LineStatus;
-} RFCOMM_RLS_DATA, *PRFCOMM_RLS_DATA;
-
#define RPN_BAUD_2400 0
#define RPN_BAUD_4800 1
#define RPN_BAUD_7200 2
#define RFCOMM_CMD_RPN_REQUEST 4
#define RFCOMM_CMD_RPN_RESPONSE 5
+
+
+
+
+
+
+typedef struct _SOCKADDR_BTH {
+ USHORT addressFamily;
+ BTH_ADDR btAddr;
+ GUID serviceClassId;
+ ULONG port;
+} SOCKADDR_BTH, *PSOCKADDR_BTH;
+
+typedef struct _BTH_SET_SERVICE {
+ PULONG pSdpVersion;
+ HANDLE *pRecordHandle;
+ ULONG fCodService;
+ ULONG Reserved[5];
+ ULONG ulRecordLength;
+ UCHAR pRecord[1];
+} BTH_SET_SERVICE, *PBTH_SET_SERVICE;
+
+typedef struct _BTH_QUERY_DEVICE {
+ ULONG LAP;
+ UCHAR length;
+} BTH_QUERY_DEVICE, *PBTH_QUERY_DEVICE;
+
+typedef struct _BTH_QUERY_SERVICE {
+ ULONG type;
+ ULONG serviceHandle;
+ SdpQueryUuid uuids[MAX_UUIDS_IN_QUERY];
+ ULONG numRange;
+ SdpAttributeRange pRange[1];
+} BTH_QUERY_SERVICE, *PBTH_QUERY_SERVICE;
+
+typedef struct _RFCOMM_MSC_DATA {
+ UCHAR Signals;
+ UCHAR Break;
+} RFCOMM_MSC_DATA, *PRFCOMM_MSC_DATA;
+
+typedef struct _RFCOMM_RLS_DATA {
+ UCHAR LineStatus;
+} RFCOMM_RLS_DATA, *PRFCOMM_RLS_DATA;
+
typedef struct _RFCOMM_RPN_DATA {
UCHAR Baud;
UCHAR Data;
#define TCP_NODELAY 0x0001
-typedef struct sockaddr {
-#if (_WIN32_WINNT < 0x0600)
- u_short sa_family;
-#else
- ADDRESS_FAMILY sa_family;
-#endif
- CHAR sa_data[14];
-} SOCKADDR, *PSOCKADDR, FAR *LPSOCKADDR;
-
-#ifndef __CSADDR_DEFINED__
-#define __CSADDR_DEFINED__
-
-typedef struct _SOCKET_ADDRESS {
- LPSOCKADDR lpSockaddr;
- INT iSockaddrLength;
-} SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS;
-
-typedef struct _SOCKET_ADDRESS_LIST {
- INT iAddressCount;
- SOCKET_ADDRESS Address[1];
-} SOCKET_ADDRESS_LIST, *PSOCKET_ADDRESS_LIST, FAR *LPSOCKET_ADDRESS_LIST;
-
-#if (_WIN32_WINNT >= 0x0600)
-#define SIZEOF_SOCKET_ADDRESS_LIST(AddressCount) \
- (FIELD_OFFSET(SOCKET_ADDRESS_LIST, Address) + \
- AddressCount * sizeof(SOCKET_ADDRESS))
-#endif
-
-typedef struct _CSADDR_INFO {
- SOCKET_ADDRESS LocalAddr;
- SOCKET_ADDRESS RemoteAddr;
- INT iSocketType;
- INT iProtocol;
-} CSADDR_INFO, *PCSADDR_INFO, FAR *LPCSADDR_INFO ;
-
-#endif /* __CSADDR_DEFINED__ */
-
#define _SS_MAXSIZE 128
#define _SS_ALIGNSIZE (sizeof(__int64))
#endif /* (_WIN32_WINNT >= 0x0600) */
-typedef struct sockaddr_storage {
- ADDRESS_FAMILY ss_family;
- CHAR __ss_pad1[_SS_PAD1SIZE];
- __int64 __ss_align;
- CHAR __ss_pad2[_SS_PAD2SIZE];
-} SOCKADDR_STORAGE_LH, *PSOCKADDR_STORAGE_LH, FAR *LPSOCKADDR_STORAGE_LH;
-
-typedef struct sockaddr_storage_xp {
- short ss_family;
- CHAR __ss_pad1[_SS_PAD1SIZE];
- __int64 __ss_align;
- CHAR __ss_pad2[_SS_PAD2SIZE];
-} SOCKADDR_STORAGE_XP, *PSOCKADDR_STORAGE_XP, FAR *LPSOCKADDR_STORAGE_XP;
-
-#if (_WIN32_WINNT >= 0x0600)
-
-typedef SOCKADDR_STORAGE_LH SOCKADDR_STORAGE;
-typedef SOCKADDR_STORAGE *PSOCKADDR_STORAGE, FAR *LPSOCKADDR_STORAGE;
-
-#elif (_WIN32_WINNT >= 0x0501)
-
-typedef SOCKADDR_STORAGE_XP SOCKADDR_STORAGE;
-typedef SOCKADDR_STORAGE *PSOCKADDR_STORAGE, FAR *LPSOCKADDR_STORAGE;
-
-#endif /* (_WIN32_WINNT >= 0x0600) */
-
#define IOC_UNIX 0x00000000
#define IOC_WS2 0x08000000
#define IOC_PROTOCOL 0x10000000
#define IPPROTO_IP 0
-typedef enum {
-#if (_WIN32_WINNT >= 0x0501)
- IPPROTO_HOPOPTS = 0,
-#endif
- IPPROTO_ICMP = 1,
- IPPROTO_IGMP = 2,
- IPPROTO_GGP = 3,
-#if (_WIN32_WINNT >= 0x0501)
- IPPROTO_IPV4 = 4,
-#endif
-#if (_WIN32_WINNT >= 0x0600)
- IPPROTO_ST = 5,
-#endif
- IPPROTO_TCP = 6,
-#if (_WIN32_WINNT >= 0x0600)
- IPPROTO_CBT = 7,
- IPPROTO_EGP = 8,
- IPPROTO_IGP = 9,
-#endif
- IPPROTO_PUP = 12,
- IPPROTO_UDP = 17,
- IPPROTO_IDP = 22,
-#if (_WIN32_WINNT >= 0x0600)
- IPPROTO_RDP = 27,
-#endif
-#if (_WIN32_WINNT >= 0x0501)
- IPPROTO_IPV6 = 41,
- IPPROTO_ROUTING = 43,
- IPPROTO_FRAGMENT = 44,
- IPPROTO_ESP = 50,
- IPPROTO_AH = 51,
- IPPROTO_ICMPV6 = 58,
- IPPROTO_NONE = 59,
- IPPROTO_DSTOPTS = 60,
-#endif /* (_WIN32_WINNT >= 0x0501) */
- IPPROTO_ND = 77,
-#if(_WIN32_WINNT >= 0x0501)
- IPPROTO_ICLFXBM = 78,
-#endif
-#if (_WIN32_WINNT >= 0x0600)
- IPPROTO_PIM = 103,
- IPPROTO_PGM = 113,
- IPPROTO_L2TP = 115,
- IPPROTO_SCTP = 132,
-#endif /* (_WIN32_WINNT >= 0x0600) */
- IPPROTO_RAW = 255,
- IPPROTO_MAX = 256,
- IPPROTO_RESERVED_RAW = 257,
- IPPROTO_RESERVED_IPSEC = 258,
- IPPROTO_RESERVED_IPSECOFFLOAD = 259,
- IPPROTO_RESERVED_MAX = 260
-} IPPROTO, *PIPROTO;
-
#define IPPORT_TCPMUX 1
#define IPPORT_ECHO 7
#define IPPORT_DISCARD 9
#define INADDR_BROADCAST (ULONG)0xffffffff
#define INADDR_NONE 0xffffffff
+#define SCOPEID_UNSPECIFIED_INIT {0}
+
+#define IOCPARM_MASK 0x7f
+#define IOC_VOID 0x20000000
+#define IOC_OUT 0x40000000
+#define IOC_IN 0x80000000
+#define IOC_INOUT (IOC_IN|IOC_OUT)
+
+#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
+#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
+
+#define MSG_TRUNC 0x0100
+#define MSG_CTRUNC 0x0200
+#define MSG_BCAST 0x0400
+#define MSG_MCAST 0x0800
+
+#define AI_PASSIVE 0x00000001
+#define AI_CANONNAME 0x00000002
+#define AI_NUMERICHOST 0x00000004
+#define AI_NUMERICSERV 0x00000008
+
+#define AI_ALL 0x00000100
+#define AI_ADDRCONFIG 0x00000400
+#define AI_V4MAPPED 0x00000800
+
+#define AI_NON_AUTHORITATIVE 0x00004000
+#define AI_SECURE 0x00008000
+#define AI_RETURN_PREFERRED_NAMES 0x00010000
+
+#define AI_FQDN 0x00020000
+#define AI_FILESERVER 0x00040000
+
+#define NS_ALL 0
+
+#define NS_SAP 1
+#define NS_NDS 2
+#define NS_PEER_BROWSE 3
+#define NS_SLP 5
+#define NS_DHCP 6
+
+#define NS_TCPIP_LOCAL 10
+#define NS_TCPIP_HOSTS 11
+#define NS_DNS 12
+#define NS_NETBT 13
+#define NS_WINS 14
+
+#if(_WIN32_WINNT >= 0x0501)
+#define NS_NLA 15
+#endif
+
+#if(_WIN32_WINNT >= 0x0600)
+#define NS_BTH 16
+#endif
+
+#define NS_NBP 20
+
+#define NS_MS 30
+#define NS_STDA 31
+#define NS_NTDS 32
+
+#if(_WIN32_WINNT >= 0x0600)
+#define NS_EMAIL 37
+#define NS_PNRPNAME 38
+#define NS_PNRPCLOUD 39
+#endif
+
+#define NS_X500 40
+#define NS_NIS 41
+#define NS_NISPLUS 42
+
+#define NS_WRQ 50
+
+#define NS_NETDES 60
+
+#define NI_NOFQDN 0x01
+#define NI_NUMERICHOST 0x02
+#define NI_NAMEREQD 0x04
+#define NI_NUMERICSERV 0x08
+#define NI_DGRAM 0x10
+
+#define NI_MAXHOST 1025
+#define NI_MAXSERV 32
+
+typedef struct sockaddr {
+#if (_WIN32_WINNT < 0x0600)
+ u_short sa_family;
+#else
+ ADDRESS_FAMILY sa_family;
+#endif
+ CHAR sa_data[14];
+} SOCKADDR, *PSOCKADDR, FAR *LPSOCKADDR;
+
+#ifndef __CSADDR_DEFINED__
+#define __CSADDR_DEFINED__
+
+typedef struct _SOCKET_ADDRESS {
+ LPSOCKADDR lpSockaddr;
+ INT iSockaddrLength;
+} SOCKET_ADDRESS, *PSOCKET_ADDRESS, *LPSOCKET_ADDRESS;
+
+typedef struct _SOCKET_ADDRESS_LIST {
+ INT iAddressCount;
+ SOCKET_ADDRESS Address[1];
+} SOCKET_ADDRESS_LIST, *PSOCKET_ADDRESS_LIST, FAR *LPSOCKET_ADDRESS_LIST;
+
+#if (_WIN32_WINNT >= 0x0600)
+#define SIZEOF_SOCKET_ADDRESS_LIST(AddressCount) \
+ (FIELD_OFFSET(SOCKET_ADDRESS_LIST, Address) + \
+ AddressCount * sizeof(SOCKET_ADDRESS))
+#endif
+
+typedef struct _CSADDR_INFO {
+ SOCKET_ADDRESS LocalAddr;
+ SOCKET_ADDRESS RemoteAddr;
+ INT iSocketType;
+ INT iProtocol;
+} CSADDR_INFO, *PCSADDR_INFO, FAR *LPCSADDR_INFO ;
+
+#endif /* __CSADDR_DEFINED__ */
+
+typedef struct sockaddr_storage {
+ ADDRESS_FAMILY ss_family;
+ CHAR __ss_pad1[_SS_PAD1SIZE];
+ __int64 __ss_align;
+ CHAR __ss_pad2[_SS_PAD2SIZE];
+} SOCKADDR_STORAGE_LH, *PSOCKADDR_STORAGE_LH, FAR *LPSOCKADDR_STORAGE_LH;
+
+typedef struct sockaddr_storage_xp {
+ short ss_family;
+ CHAR __ss_pad1[_SS_PAD1SIZE];
+ __int64 __ss_align;
+ CHAR __ss_pad2[_SS_PAD2SIZE];
+} SOCKADDR_STORAGE_XP, *PSOCKADDR_STORAGE_XP, FAR *LPSOCKADDR_STORAGE_XP;
+
+#if (_WIN32_WINNT >= 0x0600)
+
+typedef SOCKADDR_STORAGE_LH SOCKADDR_STORAGE;
+typedef SOCKADDR_STORAGE *PSOCKADDR_STORAGE, FAR *LPSOCKADDR_STORAGE;
+
+#elif (_WIN32_WINNT >= 0x0501)
+
+typedef SOCKADDR_STORAGE_XP SOCKADDR_STORAGE;
+typedef SOCKADDR_STORAGE *PSOCKADDR_STORAGE, FAR *LPSOCKADDR_STORAGE;
+
+#endif /* (_WIN32_WINNT >= 0x0600) */
+
+typedef enum {
+#if (_WIN32_WINNT >= 0x0501)
+ IPPROTO_HOPOPTS = 0,
+#endif
+ IPPROTO_ICMP = 1,
+ IPPROTO_IGMP = 2,
+ IPPROTO_GGP = 3,
+#if (_WIN32_WINNT >= 0x0501)
+ IPPROTO_IPV4 = 4,
+#endif
+#if (_WIN32_WINNT >= 0x0600)
+ IPPROTO_ST = 5,
+#endif
+ IPPROTO_TCP = 6,
+#if (_WIN32_WINNT >= 0x0600)
+ IPPROTO_CBT = 7,
+ IPPROTO_EGP = 8,
+ IPPROTO_IGP = 9,
+#endif
+ IPPROTO_PUP = 12,
+ IPPROTO_UDP = 17,
+ IPPROTO_IDP = 22,
+#if (_WIN32_WINNT >= 0x0600)
+ IPPROTO_RDP = 27,
+#endif
+#if (_WIN32_WINNT >= 0x0501)
+ IPPROTO_IPV6 = 41,
+ IPPROTO_ROUTING = 43,
+ IPPROTO_FRAGMENT = 44,
+ IPPROTO_ESP = 50,
+ IPPROTO_AH = 51,
+ IPPROTO_ICMPV6 = 58,
+ IPPROTO_NONE = 59,
+ IPPROTO_DSTOPTS = 60,
+#endif /* (_WIN32_WINNT >= 0x0501) */
+ IPPROTO_ND = 77,
+#if(_WIN32_WINNT >= 0x0501)
+ IPPROTO_ICLFXBM = 78,
+#endif
+#if (_WIN32_WINNT >= 0x0600)
+ IPPROTO_PIM = 103,
+ IPPROTO_PGM = 113,
+ IPPROTO_L2TP = 115,
+ IPPROTO_SCTP = 132,
+#endif /* (_WIN32_WINNT >= 0x0600) */
+ IPPROTO_RAW = 255,
+ IPPROTO_MAX = 256,
+ IPPROTO_RESERVED_RAW = 257,
+ IPPROTO_RESERVED_IPSEC = 258,
+ IPPROTO_RESERVED_IPSECOFFLOAD = 259,
+ IPPROTO_RESERVED_MAX = 260
+} IPPROTO, *PIPROTO;
+
typedef enum {
ScopeLevelInterface = 1,
ScopeLevelLink = 2,
};
} SCOPE_ID, *PSCOPE_ID;
-#define SCOPEID_UNSPECIFIED_INIT {0}
-
typedef struct sockaddr_in {
#if(_WIN32_WINNT < 0x0600)
short sin_family;
} SOCKADDR_DL, *PSOCKADDR_DL;
#endif
-#define IOCPARM_MASK 0x7f
-#define IOC_VOID 0x20000000
-#define IOC_OUT 0x40000000
-#define IOC_IN 0x80000000
-#define IOC_INOUT (IOC_IN|IOC_OUT)
-
-#define _IO(x,y) (IOC_VOID|((x)<<8)|(y))
-#define _IOR(x,y,t) (IOC_OUT|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
-#define _IOW(x,y,t) (IOC_IN|(((long)sizeof(t)&IOCPARM_MASK)<<16)|((x)<<8)|(y))
-
typedef struct _WSABUF {
ULONG len;
CHAR FAR *buf;
#define CMSG_LEN WSA_CMSG_LEN
#endif
-#define MSG_TRUNC 0x0100
-#define MSG_CTRUNC 0x0200
-#define MSG_BCAST 0x0400
-#define MSG_MCAST 0x0800
-
-#define AI_PASSIVE 0x00000001
-#define AI_CANONNAME 0x00000002
-#define AI_NUMERICHOST 0x00000004
-#define AI_NUMERICSERV 0x00000008
-
-#define AI_ALL 0x00000100
-#define AI_ADDRCONFIG 0x00000400
-#define AI_V4MAPPED 0x00000800
-
-#define AI_NON_AUTHORITATIVE 0x00004000
-#define AI_SECURE 0x00008000
-#define AI_RETURN_PREFERRED_NAMES 0x00010000
-
-#define AI_FQDN 0x00020000
-#define AI_FILESERVER 0x00040000
-
typedef struct addrinfo {
int ai_flags;
int ai_family;
#endif /* (_WIN32_WINNT >= 0x0600) */
-#define NS_ALL 0
-
-#define NS_SAP 1
-#define NS_NDS 2
-#define NS_PEER_BROWSE 3
-#define NS_SLP 5
-#define NS_DHCP 6
-
-#define NS_TCPIP_LOCAL 10
-#define NS_TCPIP_HOSTS 11
-#define NS_DNS 12
-#define NS_NETBT 13
-#define NS_WINS 14
-
-#if(_WIN32_WINNT >= 0x0501)
-#define NS_NLA 15
-#endif
-
-#if(_WIN32_WINNT >= 0x0600)
-#define NS_BTH 16
-#endif
-
-#define NS_NBP 20
-
-#define NS_MS 30
-#define NS_STDA 31
-#define NS_NTDS 32
-
-#if(_WIN32_WINNT >= 0x0600)
-#define NS_EMAIL 37
-#define NS_PNRPNAME 38
-#define NS_PNRPCLOUD 39
-#endif
-
-#define NS_X500 40
-#define NS_NIS 41
-#define NS_NISPLUS 42
-
-#define NS_WRQ 50
-
-#define NS_NETDES 60
-
-#define NI_NOFQDN 0x01
-#define NI_NUMERICHOST 0x02
-#define NI_NAMEREQD 0x04
-#define NI_NUMERICSERV 0x08
-#define NI_DGRAM 0x10
-
-#define NI_MAXHOST 1025
-#define NI_MAXSERV 32
-
#ifdef __cplusplus
}
#endif
-#ifndef _WS2IPDEF_
+#pragma once
+
#define _WS2IPDEF_
#ifdef __cplusplus
extern "C" {
#endif
+#ifndef WS2IPDEF_ASSERT
+#define WS2IPDEF_ASSERT(exp) ((VOID) 0)
+#endif
+#ifdef _MSC_VER
+#define WS2TCPIP_INLINE __inline
+#else
+#define WS2TCPIP_INLINE extern inline
+#endif
+#include <in6addr.h>
-#ifdef __cplusplus
-}
+#define IFF_UP 0x00000001
+#define IFF_BROADCAST 0x00000002
+#define IFF_LOOPBACK 0x00000004
+#define IFF_POINTTOPOINT 0x00000008
+#define IFF_MULTICAST 0x00000010
+
+#define IP_OPTIONS 1
+#define IP_HDRINCL 2
+#define IP_TOS 3
+#define IP_TTL 4
+#define IP_MULTICAST_IF 9
+#define IP_MULTICAST_TTL 10
+#define IP_MULTICAST_LOOP 11
+#define IP_ADD_MEMBERSHIP 12
+#define IP_DROP_MEMBERSHIP 13
+#define IP_DONTFRAGMENT 14
+#define IP_ADD_SOURCE_MEMBERSHIP 15
+#define IP_DROP_SOURCE_MEMBERSHIP 16
+#define IP_BLOCK_SOURCE 17
+#define IP_UNBLOCK_SOURCE 18
+#define IP_PKTINFO 19
+#define IP_HOPLIMIT 21
+#define IP_RECEIVE_BROADCAST 22
+#define IP_RECVIF 24
+#define IP_RECVDSTADDR 25
+#define IP_IFLIST 28
+#define IP_ADD_IFLIST 29
+#define IP_DEL_IFLIST 30
+#define IP_UNICAST_IF 31
+#define IP_RTHDR 32
+#define IP_RECVRTHDR 38
+#define IP_TCLASS 39
+#define IP_RECVTCLASS 40
+#define IP_ORIGINAL_ARRIVAL_IF 47
+
+#define IP_UNSPECIFIED_TYPE_OF_SERVICE -1
+
+#define IPV6_ADDRESS_BITS RTL_BITS_OF(IN6_ADDR)
+
+#define SS_PORT(ssp) (((PSOCKADDR_IN)(ssp))->sin_port)
+
+#define SIO_GET_INTERFACE_LIST _IOR('t', 127, ULONG)
+#define SIO_GET_INTERFACE_LIST_EX _IOR('t', 126, ULONG)
+#define SIO_SET_MULTICAST_FILTER _IOW('t', 125, ULONG)
+#define SIO_GET_MULTICAST_FILTER _IOW('t', 124 | IOC_IN, ULONG)
+#define SIOCSIPMSFILTER SIO_SET_MULTICAST_FILTER
+#define SIOCGIPMSFILTER SIO_GET_MULTICAST_FILTER
+
+#define SIOCSMSFILTER _IOW('t', 126, ULONG)
+#define SIOCGMSFILTER _IOW('t', 127 | IOC_IN, ULONG)
+
+#if (NTDDI_VERSION >= NTDDI_VISTASP1)
+
+#define IDEAL_SEND_BACKLOG_IOCTLS
+
+#define SIO_IDEAL_SEND_BACKLOG_QUERY _IOR('t', 123, ULONG)
+#define SIO_IDEAL_SEND_BACKLOG_CHANGE _IO('t', 122)
+
+#endif /* (NTDDI_VERSION >= NTDDI_VISTASP1) */
+
+#define MCAST_JOIN_GROUP 41
+#define MCAST_LEAVE_GROUP 42
+#define MCAST_BLOCK_SOURCE 43
+#define MCAST_UNBLOCK_SOURCE 44
+#define MCAST_JOIN_SOURCE_GROUP 45
+#define MCAST_LEAVE_SOURCE_GROUP 46
+
+#define IP_MSFILTER_SIZE(NumSources) \
+ (sizeof(IP_MSFILTER) - sizeof(IN_ADDR) + (NumSources) * sizeof(IN_ADDR))
+
+#define IPV6_HOPOPTS 1
+#define IPV6_HDRINCL 2
+#define IPV6_UNICAST_HOPS 4
+#define IPV6_MULTICAST_IF 9
+#define IPV6_MULTICAST_HOPS 10
+#define IPV6_MULTICAST_LOOP 11
+#define IPV6_ADD_MEMBERSHIP 12
+#define IPV6_JOIN_GROUP IPV6_ADD_MEMBERSHIP
+#define IPV6_DROP_MEMBERSHIP 13
+#define IPV6_LEAVE_GROUP IPV6_DROP_MEMBERSHIP
+#define IPV6_DONTFRAG 14
+#define IPV6_PKTINFO 19
+#define IPV6_HOPLIMIT 21
+#define IPV6_PROTECTION_LEVEL 23
+#define IPV6_RECVIF 24
+#define IPV6_RECVDSTADDR 25
+#define IPV6_CHECKSUM 26
+#define IPV6_V6ONLY 27
+#define IPV6_IFLIST 28
+#define IPV6_ADD_IFLIST 29
+#define IPV6_DEL_IFLIST 30
+#define IPV6_UNICAST_IF 31
+#define IPV6_RTHDR 32
+#define IPV6_RECVRTHDR 38
+#define IPV6_TCLASS 39
+#define IPV6_RECVTCLASS 40
+
+#define IP_UNSPECIFIED_HOP_LIMIT -1
+
+#define IP_PROTECTION_LEVEL IPV6_PROTECTION_LEVEL
+#define PROTECTION_LEVEL_UNRESTRICTED 10
+#define PROTECTION_LEVEL_EDGERESTRICTED 20
+#define PROTECTION_LEVEL_RESTRICTED 30
+
+#if (NTDDI_VERSION < NTDDI_VISTA)
+#define PROTECTION_LEVEL_DEFAULT PROTECTION_LEVEL_EDGERESTRICTED
+#else
+#define PROTECTION_LEVEL_DEFAULT ((UINT)-1)
#endif
+#define INET_ADDRSTRLEN 22
+#define INET6_ADDRSTRLEN 65
+
+#define TCP_OFFLOAD_NO_PREFERENCE 0
+#define TCP_OFFLOAD_NOT_PREFERRED 1
+#define TCP_OFFLOAD_PREFERRED 2
+
+#define TCP_EXPEDITED_1122 0x0002
+#define TCP_KEEPALIVE 3
+#define TCP_MAXSEG 4
+#define TCP_MAXRT 5
+#define TCP_STDURG 6
+#define TCP_NOURG 7
+#define TCP_ATMARK 8
+#define TCP_NOSYNRETRIES 9
+#define TCP_TIMESTAMPS 10
+#define TCP_OFFLOAD_PREFERENCE 11
+#define TCP_CONGESTION_ALGORITHM 12
+#define TCP_DELAY_FIN_ACK 13
+
+struct sockaddr_in6_old {
+ SHORT sin6_family;
+ USHORT sin6_port;
+ ULONG sin6_flowinfo;
+ IN6_ADDR sin6_addr;
+};
+
+typedef union sockaddr_gen {
+ struct sockaddr Address;
+ struct sockaddr_in AddressIn;
+ struct sockaddr_in6_old AddressIn6;
+} sockaddr_gen;
+
+typedef struct _INTERFACE_INFO {
+ ULONG iiFlags;
+ sockaddr_gen iiAddress;
+ sockaddr_gen iiBroadcastAddress;
+ sockaddr_gen iiNetmask;
+} INTERFACE_INFO, FAR *LPINTERFACE_INFO;
+
+typedef struct _INTERFACE_INFO_EX {
+ ULONG iiFlags;
+ SOCKET_ADDRESS iiAddress;
+ SOCKET_ADDRESS iiBroadcastAddress;
+ SOCKET_ADDRESS iiNetmask;
+} INTERFACE_INFO_EX, FAR *LPINTERFACE_INFO_EX;
+
+typedef struct sockaddr_in6 {
+ ADDRESS_FAMILY sin6_family;
+ USHORT sin6_port;
+ ULONG sin6_flowinfo;
+ IN6_ADDR sin6_addr;
+ union {
+ ULONG sin6_scope_id;
+ SCOPE_ID sin6_scope_struct;
+ };
+} SOCKADDR_IN6_LH, *PSOCKADDR_IN6_LH, FAR *LPSOCKADDR_IN6_LH;
+
+typedef struct sockaddr_in6_w2ksp1 {
+ short sin6_family;
+ USHORT sin6_port;
+ ULONG sin6_flowinfo;
+ struct in6_addr sin6_addr;
+ ULONG sin6_scope_id;
+} SOCKADDR_IN6_W2KSP1, *PSOCKADDR_IN6_W2KSP1, FAR *LPSOCKADDR_IN6_W2KSP1;
+
+#if (NTDDI_VERSION >= NTDDI_VISTA)
+
+typedef SOCKADDR_IN6_LH SOCKADDR_IN6;
+typedef SOCKADDR_IN6_LH *PSOCKADDR_IN6;
+typedef SOCKADDR_IN6_LH FAR *LPSOCKADDR_IN6;
+
+#elif(NTDDI_VERSION >= NTDDI_WIN2KSP1)
+
+typedef SOCKADDR_IN6_W2KSP1 SOCKADDR_IN6;
+typedef SOCKADDR_IN6_W2KSP1 *PSOCKADDR_IN6;
+typedef SOCKADDR_IN6_W2KSP1 FAR *LPSOCKADDR_IN6;
+
+#else
+
+typedef SOCKADDR_IN6_LH SOCKADDR_IN6;
+typedef SOCKADDR_IN6_LH *PSOCKADDR_IN6;
+typedef SOCKADDR_IN6_LH FAR *LPSOCKADDR_IN6;
+
+#endif /* (NTDDI_VERSION >= NTDDI_VISTA) */
+
+typedef union _SOCKADDR_INET {
+ SOCKADDR_IN Ipv4;
+ SOCKADDR_IN6 Ipv6;
+ ADDRESS_FAMILY si_family;
+} SOCKADDR_INET, *PSOCKADDR_INET;
+
+typedef struct _sockaddr_in6_pair {
+ PSOCKADDR_IN6 SourceAddress;
+ PSOCKADDR_IN6 DestinationAddress;
+} SOCKADDR_IN6_PAIR, *PSOCKADDR_IN6_PAIR;
+
+#if (NTDDI_VERSION >= NTDDI_WIN2KSP1)
+
+#define IN6ADDR_ANY_INIT {0}
+#define IN6ADDR_LOOPBACK_INIT {0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1}
+#define IN6ADDR_ALLNODESONNODE_INIT {0xff, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}
+#define IN6ADDR_ALLNODESONLINK_INIT {0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01}
+#define IN6ADDR_ALLROUTERSONLINK_INIT {0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02}
+#define IN6ADDR_ALLMLDV2ROUTERSONLINK_INIT {0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x16}
+#define IN6ADDR_TEREDOINITIALLINKLOCALADDRESS_INIT {0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe}
+#define IN6ADDR_TEREDOOLDLINKLOCALADDRESSXP_INIT {0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 'T', 'E', 'R', 'E', 'D', 'O'}
+#define IN6ADDR_TEREDOOLDLINKLOCALADDRESSVISTA_INIT {0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff}
+#define IN6ADDR_LINKLOCALPREFIX_INIT {0xfe, 0x80, }
+#define IN6ADDR_MULTICASTPREFIX_INIT {0xff, 0x00, }
+#define IN6ADDR_SOLICITEDNODEMULTICASTPREFIX_INIT {0xff, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0xff, }
+#define IN6ADDR_V4MAPPEDPREFIX_INIT {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xff, 0xff, }
+#define IN6ADDR_6TO4PREFIX_INIT {0x20, 0x02, }
+#define IN6ADDR_TEREDOPREFIX_INIT {0x20, 0x01, 0x00, 0x00, }
+#define IN6ADDR_TEREDOPREFIX_INIT_OLD {0x3f, 0xfe, 0x83, 0x1f, }
+
+#define IN6ADDR_LINKLOCALPREFIX_LENGTH 64
+#define IN6ADDR_MULTICASTPREFIX_LENGTH 8
+#define IN6ADDR_SOLICITEDNODEMULTICASTPREFIX_LENGTH 104
+#define IN6ADDR_V4MAPPEDPREFIX_LENGTH 96
+#define IN6ADDR_6TO4PREFIX_LENGTH 16
+#define IN6ADDR_TEREDOPREFIX_LENGTH 32
+
+extern CONST SCOPE_ID scopeid_unspecified;
+
+extern CONST IN_ADDR in4addr_any;
+extern CONST IN_ADDR in4addr_loopback;
+extern CONST IN_ADDR in4addr_broadcast;
+extern CONST IN_ADDR in4addr_allnodesonlink;
+extern CONST IN_ADDR in4addr_allroutersonlink;
+extern CONST IN_ADDR in4addr_alligmpv3routersonlink;
+extern CONST IN_ADDR in4addr_allteredohostsonlink;
+extern CONST IN_ADDR in4addr_linklocalprefix;
+extern CONST IN_ADDR in4addr_multicastprefix;
+
+extern CONST IN6_ADDR in6addr_any;
+extern CONST IN6_ADDR in6addr_loopback;
+extern CONST IN6_ADDR in6addr_allnodesonnode;
+extern CONST IN6_ADDR in6addr_allnodesonlink;
+extern CONST IN6_ADDR in6addr_allroutersonlink;
+extern CONST IN6_ADDR in6addr_allmldv2routersonlink;
+extern CONST IN6_ADDR in6addr_teredoinitiallinklocaladdress;
+extern CONST IN6_ADDR in6addr_linklocalprefix;
+extern CONST IN6_ADDR in6addr_multicastprefix;
+extern CONST IN6_ADDR in6addr_solicitednodemulticastprefix;
+extern CONST IN6_ADDR in6addr_v4mappedprefix;
+extern CONST IN6_ADDR in6addr_6to4prefix;
+extern CONST IN6_ADDR in6addr_teredoprefix;
+extern CONST IN6_ADDR in6addr_teredoprefix_old;
+
+#ifndef __midl
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_ADDR_EQUAL(CONST IN6_ADDR *x, CONST IN6_ADDR *y) {
+ __int64 UNALIGNED *a;
+ __int64 UNALIGNED *b;
+
+ a = (__int64 UNALIGNED *)x;
+ b = (__int64 UNALIGNED *)y;
+ return (BOOLEAN)((a[1] == b[1]) && (a[0] == b[0]));
+}
+
+#define IN6_ARE_ADDR_EQUAL IN6_ADDR_EQUAL
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_UNSPECIFIED(CONST IN6_ADDR *a) {
+ return (BOOLEAN)((a->s6_words[0] == 0) &&
+ (a->s6_words[1] == 0) &&
+ (a->s6_words[2] == 0) &&
+ (a->s6_words[3] == 0) &&
+ (a->s6_words[4] == 0) &&
+ (a->s6_words[5] == 0) &&
+ (a->s6_words[6] == 0) &&
+ (a->s6_words[7] == 0));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_LOOPBACK(CONST IN6_ADDR *a) {
+ return (BOOLEAN)((a->s6_words[0] == 0) &&
+ (a->s6_words[1] == 0) &&
+ (a->s6_words[2] == 0) &&
+ (a->s6_words[3] == 0) &&
+ (a->s6_words[4] == 0) &&
+ (a->s6_words[5] == 0) &&
+ (a->s6_words[6] == 0) &&
+ (a->s6_words[7] == 0x0100));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_MULTICAST(CONST IN6_ADDR *a) {
+ return (BOOLEAN)(a->s6_bytes[0] == 0xff);
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_EUI64(CONST IN6_ADDR *a) {
+ return (BOOLEAN)(((a->s6_bytes[0] & 0xe0) != 0) &&
+ !IN6_IS_ADDR_MULTICAST(a));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_SUBNET_ROUTER_ANYCAST(CONST IN6_ADDR *a) {
+ return (BOOLEAN)(IN6_IS_ADDR_EUI64(a) &&
+ (a->s6_words[4] == 0) &&
+ (a->s6_words[5] == 0) &&
+ (a->s6_words[6] == 0) &&
+ (a->s6_words[7] == 0));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_SUBNET_RESERVED_ANYCAST(CONST IN6_ADDR *a) {
+ return (BOOLEAN)(IN6_IS_ADDR_EUI64(a) &&
+ (a->s6_words[4] == 0xfffd) &&
+ (a->s6_words[5] == 0xffff) &&
+ (a->s6_words[6] == 0xffff) &&
+ ((a->s6_words[7] & 0x80ff) == 0x80ff));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_ANYCAST(CONST IN6_ADDR *a) {
+ return (IN6_IS_ADDR_SUBNET_RESERVED_ANYCAST(a) ||
+ IN6_IS_ADDR_SUBNET_ROUTER_ANYCAST(a));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_LINKLOCAL(CONST IN6_ADDR *a) {
+ return (BOOLEAN)((a->s6_bytes[0] == 0xfe) &&
+ ((a->s6_bytes[1] & 0xc0) == 0x80));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_SITELOCAL(CONST IN6_ADDR *a) {
+ return (BOOLEAN)((a->s6_bytes[0] == 0xfe) &&
+ ((a->s6_bytes[1] & 0xc0) == 0xc0));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_GLOBAL(CONST IN6_ADDR *a) {
+ ULONG High = (a->s6_bytes[0] & 0xf0);
+ return (BOOLEAN)((High != 0) && (High != 0xf0));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_V4MAPPED(CONST IN6_ADDR *a) {
+ return (BOOLEAN)((a->s6_words[0] == 0) &&
+ (a->s6_words[1] == 0) &&
+ (a->s6_words[2] == 0) &&
+ (a->s6_words[3] == 0) &&
+ (a->s6_words[4] == 0) &&
+ (a->s6_words[5] == 0xffff));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_V4COMPAT(CONST IN6_ADDR *a) {
+ return (BOOLEAN)((a->s6_words[0] == 0) &&
+ (a->s6_words[1] == 0) &&
+ (a->s6_words[2] == 0) &&
+ (a->s6_words[3] == 0) &&
+ (a->s6_words[4] == 0) &&
+ (a->s6_words[5] == 0) &&
+ !((a->s6_words[6] == 0) &&
+ (a->s6_addr[14] == 0) &&
+ ((a->s6_addr[15] == 0) || (a->s6_addr[15] == 1))));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_V4TRANSLATED(CONST IN6_ADDR *a) {
+ return (BOOLEAN)((a->s6_words[0] == 0) &&
+ (a->s6_words[1] == 0) &&
+ (a->s6_words[2] == 0) &&
+ (a->s6_words[3] == 0) &&
+ (a->s6_words[4] == 0xffff) &&
+ (a->s6_words[5] == 0));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_MC_NODELOCAL(CONST IN6_ADDR *a) {
+ return (BOOLEAN)(IN6_IS_ADDR_MULTICAST(a) &&
+ ((a->s6_bytes[1] & 0xf) == 1));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_MC_LINKLOCAL(CONST IN6_ADDR *a) {
+ return (BOOLEAN)(IN6_IS_ADDR_MULTICAST(a) &&
+ ((a->s6_bytes[1] & 0xf) == 2));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_MC_SITELOCAL(CONST IN6_ADDR *a) {
+ return (BOOLEAN)(IN6_IS_ADDR_MULTICAST(a) &&
+ ((a->s6_bytes[1] & 0xf) == 5));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_MC_ORGLOCAL(CONST IN6_ADDR *a) {
+ return (BOOLEAN)(IN6_IS_ADDR_MULTICAST(a) &&
+ ((a->s6_bytes[1] & 0xf) == 8));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6_IS_ADDR_MC_GLOBAL(CONST IN6_ADDR *a) {
+ return (BOOLEAN)(IN6_IS_ADDR_MULTICAST(a) &&
+ ((a->s6_bytes[1] & 0xf) == 0xe));
+}
+
+WS2TCPIP_INLINE
+VOID
+IN6_SET_ADDR_UNSPECIFIED(PIN6_ADDR a) {
+ memset(a->s6_bytes, 0, sizeof(IN6_ADDR));
+}
+
+WS2TCPIP_INLINE
+VOID
+IN6_SET_ADDR_LOOPBACK(PIN6_ADDR a) {
+ memset(a->s6_bytes, 0, sizeof(IN6_ADDR));
+ a->s6_bytes[15] = 1;
+}
+
+WS2TCPIP_INLINE
+VOID
+IN6ADDR_SETANY(PSOCKADDR_IN6 a) {
+ a->sin6_family = AF_INET6;
+ a->sin6_port = 0;
+ a->sin6_flowinfo = 0;
+ IN6_SET_ADDR_UNSPECIFIED(&a->sin6_addr);
+ a->sin6_scope_id = 0;
+}
+
+WS2TCPIP_INLINE
+VOID
+IN6ADDR_SETLOOPBACK(PSOCKADDR_IN6 a) {
+ a->sin6_family = AF_INET6;
+ a->sin6_port = 0;
+ a->sin6_flowinfo = 0;
+ IN6_SET_ADDR_LOOPBACK(&a->sin6_addr);
+ a->sin6_scope_id = 0;
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6ADDR_ISANY(CONST SOCKADDR_IN6 *a) {
+ WS2IPDEF_ASSERT(a->sin6_family == AF_INET6);
+ return IN6_IS_ADDR_UNSPECIFIED(&a->sin6_addr);
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6ADDR_ISLOOPBACK(CONST SOCKADDR_IN6 *a) {
+ WS2IPDEF_ASSERT(a->sin6_family == AF_INET6);
+ return IN6_IS_ADDR_LOOPBACK(&a->sin6_addr);
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6ADDR_ISEQUAL(CONST SOCKADDR_IN6 *a, CONST SOCKADDR_IN6 *b) {
+ WS2IPDEF_ASSERT(a->sin6_family == AF_INET6);
+ return (BOOLEAN)(a->sin6_scope_id == b->sin6_scope_id &&
+ IN6_ADDR_EQUAL(&a->sin6_addr, &b->sin6_addr));
+}
+
+WS2TCPIP_INLINE
+BOOLEAN
+IN6ADDR_ISUNSPECIFIED(CONST SOCKADDR_IN6 *a) {
+ WS2IPDEF_ASSERT(a->sin6_family == AF_INET6);
+ return (BOOLEAN)(a->sin6_scope_id == 0 &&
+ IN6_IS_ADDR_UNSPECIFIED(&a->sin6_addr));
+}
+
+#endif /* __midl */
+
+#endif /* (NTDDI_VERSION >= NTDDI_WIN2KSP1) */
+
+typedef enum _MULTICAST_MODE_TYPE {
+ MCAST_INCLUDE = 0,
+ MCAST_EXCLUDE
+} MULTICAST_MODE_TYPE;
+
+typedef struct ip_mreq {
+ IN_ADDR imr_multiaddr;
+ IN_ADDR imr_interface;
+} IP_MREQ, *PIP_MREQ;
+
+typedef struct ip_mreq_source {
+ IN_ADDR imr_multiaddr;
+ IN_ADDR imr_sourceaddr;
+ IN_ADDR imr_interface;
+} IP_MREQ_SOURCE, *PIP_MREQ_SOURCE;
+
+typedef struct ip_msfilter {
+ IN_ADDR imsf_multiaddr;
+ IN_ADDR imsf_interface;
+ MULTICAST_MODE_TYPE imsf_fmode;
+ ULONG imsf_numsrc;
+ IN_ADDR imsf_slist[1];
+} IP_MSFILTER, *PIP_MSFILTER;
+
+typedef struct ipv6_mreq {
+ IN6_ADDR ipv6mr_multiaddr;
+ ULONG ipv6mr_interface;
+} IPV6_MREQ, *PIPV6_MREQ;
+
+#if (NTDDI_VERSION >= NTDDI_WINXP)
+
+typedef struct group_req {
+ ULONG gr_interface;
+ SOCKADDR_STORAGE gr_group;
+} GROUP_REQ, *PGROUP_REQ;
+
+typedef struct group_source_req {
+ ULONG gsr_interface;
+ SOCKADDR_STORAGE gsr_group;
+ SOCKADDR_STORAGE gsr_source;
+} GROUP_SOURCE_REQ, *PGROUP_SOURCE_REQ;
+
+typedef struct group_filter {
+ ULONG gf_interface;
+ SOCKADDR_STORAGE gf_group;
+ MULTICAST_MODE_TYPE gf_fmode;
+ ULONG gf_numsrc;
+ SOCKADDR_STORAGE gf_slist[1];
+} GROUP_FILTER, *PGROUP_FILTER;
+
+#define GROUP_FILTER_SIZE(numsrc) \
+ (sizeof(GROUP_FILTER) - sizeof(SOCKADDR_STORAGE) \
+ + (numsrc) * sizeof(SOCKADDR_STORAGE))
+
+#endif /* (NTDDI_VERSION >= NTDDI_WINXP) */
+
+typedef struct in_pktinfo {
+ IN_ADDR ipi_addr;
+ ULONG ipi_ifindex;
+} IN_PKTINFO, *PIN_PKTINFO;
+
+C_ASSERT(sizeof(IN_PKTINFO) == 8);
+
+typedef struct in6_pktinfo {
+ IN6_ADDR ipi6_addr;
+ ULONG ipi6_ifindex;
+} IN6_PKTINFO, *PIN6_PKTINFO;
+
+C_ASSERT(sizeof(IN6_PKTINFO) == 20);
+
+#ifdef __cplusplus
+}
#endif