Home | History | Annotate | Download | only in include
      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