/** * This file has no copyright assigned and is placed in the Public Domain. * This file is part of the mingw-w64 runtime package. * No warranty is given; refer to the file DISCLAIMER.PD within this package. */ #ifndef _MSTCPIP_ #define _MSTCPIP_ #include <_mingw_unicode.h> #include #ifdef __LP64__ #pragma push_macro("u_long") #undef u_long #define u_long __ms_u_long #endif struct tcp_keepalive { u_long onoff; u_long keepalivetime; u_long keepaliveinterval; }; #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) #define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2) #define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3) #define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4) #define SIO_ABSORB_RTRALERT _WSAIOW(IOC_VENDOR,5) #define SIO_UCAST_IF _WSAIOW(IOC_VENDOR,6) #define SIO_LIMIT_BROADCASTS _WSAIOW(IOC_VENDOR,7) #define SIO_INDEX_BIND _WSAIOW(IOC_VENDOR,8) #define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9) #define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10) #define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11) #define RCVALL_OFF 0 #define RCVALL_ON 1 #define RCVALL_SOCKETLEVELONLY 2 #define RCVALL_IPLEVEL 3 #if (_WIN32_WINNT >= 0x0502) typedef enum _SOCKET_SECURITY_PROTOCOL { SOCKET_SECURITY_PROTOCOL_DEFAULT, SOCKET_SECURITY_PROTOCOL_IPSEC, #if NTDDI_VERSION >= NTDDI_WIN7 SOCKET_SECURITY_PROTOCOL_IPSEC2, #endif SOCKET_SECURITY_PROTOCOL_INVALID } SOCKET_SECURITY_PROTOCOL; #define SOCKET_SETTINGS_GUARANTEE_ENCRYPTION 0x1 #define SOCKET_SETTINGS_ALLOW_INSECURE 0x2 typedef enum _SOCKET_USAGE_TYPE { SYSTEM_CRITICAL_SOCKET = 1 } SOCKET_USAGE_TYPE; typedef struct _SOCKET_PEER_TARGET_NAME { SOCKET_SECURITY_PROTOCOL SecurityProtocol; SOCKADDR_STORAGE PeerAddress; ULONG PeerTargetNameStringLen; wchar_t AllStrings[]; } SOCKET_PEER_TARGET_NAME; #define SOCKET_INFO_CONNECTION_SECURED 0x00000001 #define SOCKET_INFO_CONNECTION_ENCRYPTED 0x00000002 #define SOCKET_INFO_CONNECTION_IMPERSONATED 0x00000004 typedef struct _SOCKET_SECURITY_QUERY_INFO { SOCKET_SECURITY_PROTOCOL SecurityProtocol; ULONG Flags; UINT64 PeerApplicationAccessTokenHandle; UINT64 PeerMachineAccessTokenHandle; } SOCKET_SECURITY_QUERY_INFO; typedef struct _SOCKET_SECURITY_QUERY_TEMPLATE { SOCKET_SECURITY_PROTOCOL SecurityProtocol; SOCKADDR_STORAGE PeerAddress; ULONG PeerTokenAccessMask; } SOCKET_SECURITY_QUERY_TEMPLATE; typedef struct _SOCKET_SECURITY_SETTINGS { SOCKET_SECURITY_PROTOCOL SecurityProtocol; ULONG SecurityFlags; } SOCKET_SECURITY_SETTINGS; #define SOCKET_SETTINGS_IPSEC_SKIP_FILTER_INSTANTIATION 0x00000001 typedef struct _SOCKET_SECURITY_SETTINGS_IPSEC { SOCKET_SECURITY_PROTOCOL SecurityProtocol; ULONG SecurityFlags; ULONG IpsecFlags; GUID AuthipMMPolicyKey; GUID AuthipQMPolicyKey; GUID Reserved; UINT64 Reserved2; ULONG UserNameStringLen; ULONG DomainNameStringLen; ULONG PasswordStringLen; wchar_t AllStrings[]; } SOCKET_SECURITY_SETTINGS_IPSEC; #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) #define RtlIpv6AddressToString __MINGW_NAME_AW(RtlIpv6AddressToString) #define RtlIpv6AddressToStringEx __MINGW_NAME_AW(RtlIpv6AddressToStringEx) #ifdef _WS2IPDEF_ LPSTR NTAPI RtlIpv6AddressToStringA(const IN6_ADDR *Addr, LPSTR S); LPWSTR NTAPI RtlIpv6AddressToStringW(const IN6_ADDR *Addr, LPWSTR S); LONG NTAPI RtlIpv6AddressToStringExA(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPSTR AddressString, PULONG AddressStringLength); LONG NTAPI RtlIpv6AddressToStringExW(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength); #define RtlIpv4AddressToString __MINGW_NAME_AW(RtlIpv4AddressToString) LPSTR NTAPI RtlIpv4AddressToStringA(const IN_ADDR *Addr, LPSTR S); LPWSTR NTAPI RtlIpv4AddressToStringW(const IN_ADDR *Addr, LPWSTR S); #define RtlIpv4AddressToStringEx __MINGW_NAME_AW(RtlIpv4AddressToStringEx) LONG NTAPI RtlIpv4AddressToStringExA(const IN_ADDR *Address, USHORT Port, LPSTR AddressString, PULONG AddressStringLength); LONG NTAPI RtlIpv4AddressToStringExW(const IN_ADDR *Address, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength); #define RtlIpv4StringToAddress __MINGW_NAME_AW(RtlIpv4StringToAddress) LONG NTAPI RtlIpv4StringToAddressA(PCSTR S, BOOLEAN Strict, LPSTR *Terminator, IN_ADDR *Addr); LONG NTAPI RtlIpv4StringToAddressW(PCWSTR S, BOOLEAN Strict, LPWSTR *Terminator, IN_ADDR *Addr); #define RtlIpv4StringToAddressEx __MINGW_NAME_AW(RtlIpv4StringToAddressEx) LONG NTAPI RtlIpv4StringToAddressExA(PCSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port); LONG NTAPI RtlIpv4StringToAddressExW(PCWSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port); #define RtlIpv6StringToAddressEx __MINGW_NAME_AW(RtlIpv6StringToAddressEx) LONG NTAPI RtlIpv6StringToAddressExA(PCSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port); LONG NTAPI RtlIpv6StringToAddressExW(PCWSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port); #endif /* _WS2IPDEF_ */ #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ #endif /*(_WIN32_WINNT >= 0x0502)*/ #ifdef __LP64__ #pragma pop_macro("u_long") #endif #endif /* _MSTCPIP_ */