| /** |
| * 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 <winapifamily.h> |
| |
| #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_ */ |
| |