1 /** 2 * This file has no copyright assigned and is placed in the Public Domain. 3 * This file is part of the mingw-w64 runtime package. 4 * No warranty is given; refer to the file DISCLAIMER.PD within this package. 5 */ 6 #ifndef _MSTCPIP_ 7 #define _MSTCPIP_ 8 9 #include <_mingw_unicode.h> 10 #include <winapifamily.h> 11 12 #ifdef __LP64__ 13 #pragma push_macro("u_long") 14 #undef u_long 15 #define u_long __ms_u_long 16 #endif 17 18 struct tcp_keepalive { 19 u_long onoff; 20 u_long keepalivetime; 21 u_long keepaliveinterval; 22 }; 23 24 #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) 25 #define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2) 26 #define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3) 27 #define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4) 28 #define SIO_ABSORB_RTRALERT _WSAIOW(IOC_VENDOR,5) 29 #define SIO_UCAST_IF _WSAIOW(IOC_VENDOR,6) 30 #define SIO_LIMIT_BROADCASTS _WSAIOW(IOC_VENDOR,7) 31 #define SIO_INDEX_BIND _WSAIOW(IOC_VENDOR,8) 32 #define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9) 33 #define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10) 34 #define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11) 35 36 #define RCVALL_OFF 0 37 #define RCVALL_ON 1 38 #define RCVALL_SOCKETLEVELONLY 2 39 #define RCVALL_IPLEVEL 3 40 41 #if (_WIN32_WINNT >= 0x0502) 42 typedef enum _SOCKET_SECURITY_PROTOCOL { 43 SOCKET_SECURITY_PROTOCOL_DEFAULT, 44 SOCKET_SECURITY_PROTOCOL_IPSEC, 45 #if NTDDI_VERSION >= NTDDI_WIN7 46 SOCKET_SECURITY_PROTOCOL_IPSEC2, 47 #endif 48 SOCKET_SECURITY_PROTOCOL_INVALID 49 } SOCKET_SECURITY_PROTOCOL; 50 51 #define SOCKET_SETTINGS_GUARANTEE_ENCRYPTION 0x1 52 #define SOCKET_SETTINGS_ALLOW_INSECURE 0x2 53 54 typedef enum _SOCKET_USAGE_TYPE { 55 SYSTEM_CRITICAL_SOCKET = 1 56 } SOCKET_USAGE_TYPE; 57 58 typedef struct _SOCKET_PEER_TARGET_NAME { 59 SOCKET_SECURITY_PROTOCOL SecurityProtocol; 60 SOCKADDR_STORAGE PeerAddress; 61 ULONG PeerTargetNameStringLen; 62 wchar_t AllStrings[]; 63 } SOCKET_PEER_TARGET_NAME; 64 65 #define SOCKET_INFO_CONNECTION_SECURED 0x00000001 66 #define SOCKET_INFO_CONNECTION_ENCRYPTED 0x00000002 67 #define SOCKET_INFO_CONNECTION_IMPERSONATED 0x00000004 68 69 typedef struct _SOCKET_SECURITY_QUERY_INFO { 70 SOCKET_SECURITY_PROTOCOL SecurityProtocol; 71 ULONG Flags; 72 UINT64 PeerApplicationAccessTokenHandle; 73 UINT64 PeerMachineAccessTokenHandle; 74 } SOCKET_SECURITY_QUERY_INFO; 75 76 typedef struct _SOCKET_SECURITY_QUERY_TEMPLATE { 77 SOCKET_SECURITY_PROTOCOL SecurityProtocol; 78 SOCKADDR_STORAGE PeerAddress; 79 ULONG PeerTokenAccessMask; 80 } SOCKET_SECURITY_QUERY_TEMPLATE; 81 82 typedef struct _SOCKET_SECURITY_SETTINGS { 83 SOCKET_SECURITY_PROTOCOL SecurityProtocol; 84 ULONG SecurityFlags; 85 } SOCKET_SECURITY_SETTINGS; 86 87 #define SOCKET_SETTINGS_IPSEC_SKIP_FILTER_INSTANTIATION 0x00000001 88 89 typedef struct _SOCKET_SECURITY_SETTINGS_IPSEC { 90 SOCKET_SECURITY_PROTOCOL SecurityProtocol; 91 ULONG SecurityFlags; 92 ULONG IpsecFlags; 93 GUID AuthipMMPolicyKey; 94 GUID AuthipQMPolicyKey; 95 GUID Reserved; 96 UINT64 Reserved2; 97 ULONG UserNameStringLen; 98 ULONG DomainNameStringLen; 99 ULONG PasswordStringLen; 100 wchar_t AllStrings[]; 101 } SOCKET_SECURITY_SETTINGS_IPSEC; 102 103 #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) 104 105 #define RtlIpv6AddressToString __MINGW_NAME_AW(RtlIpv6AddressToString) 106 #define RtlIpv6AddressToStringEx __MINGW_NAME_AW(RtlIpv6AddressToStringEx) 107 108 #ifdef _WS2IPDEF_ 109 110 LPSTR NTAPI RtlIpv6AddressToStringA(const IN6_ADDR *Addr, LPSTR S); 111 LPWSTR NTAPI RtlIpv6AddressToStringW(const IN6_ADDR *Addr, LPWSTR S); 112 113 LONG NTAPI RtlIpv6AddressToStringExA(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPSTR AddressString, PULONG AddressStringLength); 114 LONG NTAPI RtlIpv6AddressToStringExW(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength); 115 116 #define RtlIpv4AddressToString __MINGW_NAME_AW(RtlIpv4AddressToString) 117 LPSTR NTAPI RtlIpv4AddressToStringA(const IN_ADDR *Addr, LPSTR S); 118 LPWSTR NTAPI RtlIpv4AddressToStringW(const IN_ADDR *Addr, LPWSTR S); 119 120 #define RtlIpv4AddressToStringEx __MINGW_NAME_AW(RtlIpv4AddressToStringEx) 121 LONG NTAPI RtlIpv4AddressToStringExA(const IN_ADDR *Address, USHORT Port, LPSTR AddressString, PULONG AddressStringLength); 122 LONG NTAPI RtlIpv4AddressToStringExW(const IN_ADDR *Address, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength); 123 124 #define RtlIpv4StringToAddress __MINGW_NAME_AW(RtlIpv4StringToAddress) 125 LONG NTAPI RtlIpv4StringToAddressA(PCSTR S, BOOLEAN Strict, LPSTR *Terminator, IN_ADDR *Addr); 126 LONG NTAPI RtlIpv4StringToAddressW(PCWSTR S, BOOLEAN Strict, LPWSTR *Terminator, IN_ADDR *Addr); 127 128 #define RtlIpv4StringToAddressEx __MINGW_NAME_AW(RtlIpv4StringToAddressEx) 129 LONG NTAPI RtlIpv4StringToAddressExA(PCSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port); 130 LONG NTAPI RtlIpv4StringToAddressExW(PCWSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port); 131 132 #define RtlIpv6StringToAddressEx __MINGW_NAME_AW(RtlIpv6StringToAddressEx) 133 LONG NTAPI RtlIpv6StringToAddressExA(PCSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port); 134 LONG NTAPI RtlIpv6StringToAddressExW(PCWSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port); 135 136 #endif /* _WS2IPDEF_ */ 137 138 #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ 139 #endif /*(_WIN32_WINNT >= 0x0502)*/ 140 141 #ifdef __LP64__ 142 #pragma pop_macro("u_long") 143 #endif 144 145 #endif /* _MSTCPIP_ */ 146 147