| 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 | #if NTDDI_VERSION >= NTDDI_WIN10_RS2 | 
 
 
 
 
 | 19 | typedef enum _TCPSTATE { | 
 
 
 
 
 | 20 | TCPSTATE_CLOSED, | 
 
 
 
 
 | 21 | TCPSTATE_LISTEN, | 
 
 
 
 
 | 22 | TCPSTATE_SYN_SENT, | 
 
 
 
 
 | 23 | TCPSTATE_SYN_RCVD, | 
 
 
 
 
 | 24 | TCPSTATE_ESTABLISHED, | 
 
 
 
 
 | 25 | TCPSTATE_FIN_WAIT_1, | 
 
 
 
 
 | 26 | TCPSTATE_FIN_WAIT_2, | 
 
 
 
 
 | 27 | TCPSTATE_CLOSE_WAIT, | 
 
 
 
 
 | 28 | TCPSTATE_CLOSING, | 
 
 
 
 
 | 29 | TCPSTATE_LAST_ACK, | 
 
 
 
 
 | 30 | TCPSTATE_TIME_WAIT, | 
 
 
 
 
 | 31 | TCPSTATE_MAX | 
 
 
 
 
 | 32 | } TCPSTATE; | 
 
 
 
 
 | 33 | #endif | 
 
 
 
 
 | 34 |  | 
 
 
 
 
 | 35 | #ifndef _TRANSPORT_SETTING_COMMON_ | 
 
 
 
 
 | 36 | #define _TRANSPORT_SETTING_COMMON_ | 
 
 
 
 
 | 37 | typedef struct TRANSPORT_SETTING_ID { | 
 
 
 
 
 | 38 | GUID Guid; | 
 
 
 
 
 | 39 | } TRANSPORT_SETTING_ID, *PTRANSPORT_SETTING_ID; | 
 
 
 
 
 | 40 | #endif | 
 
 
 
 
 | 41 |  | 
 
 
 
 
 | 42 | struct tcp_keepalive { | 
 
 
 
 
 | 43 | u_long onoff; | 
 
 
 
 
 | 44 | u_long keepalivetime; | 
 
 
 
 
 | 45 | u_long keepaliveinterval; | 
 
 
 
 
 | 46 | }; | 
 
 
 
 
 | 47 |  | 
 
 
 
 
 | 48 | typedef enum { | 
 
 
 
 
 | 49 | CONTROL_CHANNEL_TRIGGER_STATUS_INVALID = 0, | 
 
 
 
 
 | 50 | CONTROL_CHANNEL_TRIGGER_STATUS_SOFTWARE_SLOT_ALLOCATED = 1, | 
 
 
 
 
 | 51 | CONTROL_CHANNEL_TRIGGER_STATUS_HARDWARE_SLOT_ALLOCATED = 2, | 
 
 
 
 
 | 52 | CONTROL_CHANNEL_TRIGGER_STATUS_POLICY_ERROR = 3, | 
 
 
 
 
 | 53 | CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR = 4, | 
 
 
 
 
 | 54 | CONTROL_CHANNEL_TRIGGER_STATUS_TRANSPORT_DISCONNECTED = 5, | 
 
 
 
 
 | 55 | CONTROL_CHANNEL_TRIGGER_STATUS_SERVICE_UNAVAILABLE = 6 | 
 
 
 
 
 | 56 | } CONTROL_CHANNEL_TRIGGER_STATUS, *PCONTROL_CHANNEL_TRIGGER_STATUS; | 
 
 
 
 
 | 57 |  | 
 
 
 
 
 | 58 | #define CONTROL_CHANNEL_TRIGGER_STATUS_MAX CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR | 
 
 
 
 
 | 59 |  | 
 
 
 
 
 | 60 | typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT { | 
 
 
 
 
 | 61 | TRANSPORT_SETTING_ID TransportSettingId; | 
 
 
 
 
 | 62 | GUID BrokerEventGuid; | 
 
 
 
 
 | 63 | } REAL_TIME_NOTIFICATION_SETTING_INPUT, *PREAL_TIME_NOTIFICATION_SETTING_INPUT; | 
 
 
 
 
 | 64 |  | 
 
 
 
 
 | 65 | typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT_EX { | 
 
 
 
 
 | 66 | TRANSPORT_SETTING_ID TransportSettingId; | 
 
 
 
 
 | 67 | GUID BrokerEventGuid; | 
 
 
 
 
 | 68 | BOOLEAN Unmark; | 
 
 
 
 
 | 69 | } REAL_TIME_NOTIFICATION_SETTING_INPUT_EX, *PREAL_TIME_NOTIFICATION_SETTING_INPUT_EX; | 
 
 
 
 
 | 70 |  | 
 
 
 
 
 | 71 | typedef struct _REAL_TIME_NOTIFICATION_SETTING_OUTPUT { | 
 
 
 
 
 | 72 | CONTROL_CHANNEL_TRIGGER_STATUS ChannelStatus; | 
 
 
 
 
 | 73 | } REAL_TIME_NOTIFICATION_SETTING_OUTPUT, *PREAL_TIME_NOTIFICATION_SETTING_OUTPUT; | 
 
 
 
 
 | 74 |  | 
 
 
 
 
 | 75 | typedef struct _ASSOCIATE_NAMERES_CONTEXT_INPUT { | 
 
 
 
 
 | 76 | TRANSPORT_SETTING_ID TransportSettingId; | 
 
 
 
 
 | 77 | UINT64 Handle; | 
 
 
 
 
 | 78 | } ASSOCIATE_NAMERES_CONTEXT_INPUT, *PASSOCIATE_NAMERES_CONTEXT_INPUT; | 
 
 
 
 
 | 79 |  | 
 
 
 
 
 | 80 | #define SIO_RCVALL _WSAIOW(IOC_VENDOR,1) | 
 
 
 
 
 | 81 | #define SIO_RCVALL_MCAST _WSAIOW(IOC_VENDOR,2) | 
 
 
 
 
 | 82 | #define SIO_RCVALL_IGMPMCAST _WSAIOW(IOC_VENDOR,3) | 
 
 
 
 
 | 83 | #define SIO_KEEPALIVE_VALS _WSAIOW(IOC_VENDOR,4) | 
 
 
 
 
 | 84 | #define SIO_ABSORB_RTRALERT _WSAIOW(IOC_VENDOR,5) | 
 
 
 
 
 | 85 | #define SIO_UCAST_IF _WSAIOW(IOC_VENDOR,6) | 
 
 
 
 
 | 86 | #define SIO_LIMIT_BROADCASTS _WSAIOW(IOC_VENDOR,7) | 
 
 
 
 
 | 87 | #define SIO_INDEX_BIND _WSAIOW(IOC_VENDOR,8) | 
 
 
 
 
 | 88 | #define SIO_INDEX_MCASTIF _WSAIOW(IOC_VENDOR,9) | 
 
 
 
 
 | 89 | #define SIO_INDEX_ADD_MCAST _WSAIOW(IOC_VENDOR,10) | 
 
 
 
 
 | 90 | #define SIO_INDEX_DEL_MCAST _WSAIOW(IOC_VENDOR,11) | 
 
 
 
 
 | 91 | #define SIO_RCVALL_MCAST_IF _WSAIOW(IOC_VENDOR,13) | 
 
 
 
 
 | 92 | #define SIO_RCVALL_IF _WSAIOW(IOC_VENDOR,14) | 
 
 
 
 
 | 93 | #define SIO_LOOPBACK_FAST_PATH _WSAIOW(IOC_VENDOR,16) | 
 
 
 
 
 | 94 | #define SIO_TCP_INITIAL_RTO _WSAIOW(IOC_VENDOR,17) | 
 
 
 
 
 | 95 | #define SIO_APPLY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,19) | 
 
 
 
 
 | 96 | #define SIO_QUERY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,20) | 
 
 
 
 
 | 97 | #define SIO_TCP_SET_ICW _WSAIOW(IOC_VENDOR,22) | 
 
 
 
 
 | 98 | #define SIO_TCP_SET_ACK_FREQUENCY _WSAIOW(IOC_VENDOR,23) | 
 
 
 
 
 | 99 | #if NTDDI_VERSION >= NTDDI_WIN10_RS3 | 
 
 
 
 
 | 100 | #define SIO_SET_PRIORITY_HINT _WSAIOW(IOC_VENDOR,24) | 
 
 
 
 
 | 101 | #endif | 
 
 
 
 
 | 102 | #if NTDDI_VERSION >= NTDDI_WIN10_FE | 
 
 
 
 
 | 103 | #define SIO_PRIORITY_HINT SIO_SET_PRIORITY_HINT | 
 
 
 
 
 | 104 | #endif | 
 
 
 
 
 | 105 | #if NTDDI_VERSION >= NTDDI_WIN10_RS2 | 
 
 
 
 
 | 106 | #define SIO_TCP_INFO _WSAIORW(IOC_VENDOR,39) | 
 
 
 
 
 | 107 | #endif | 
 
 
 
 
 | 108 | #if NTDDI_VERSION >= NTDDI_WIN10_VB | 
 
 
 
 
 | 109 | #define SIO_CPU_AFFINITY _WSAIOW(IOC_VENDOR,21) | 
 
 
 
 
 | 110 | #endif | 
 
 
 
 
 | 111 | #if NTDDI_VERSION >= NTDDI_WIN10_FE | 
 
 
 
 
 | 112 |  | 
 
 
 
 
 | 113 | #define SIO_TIMESTAMPING _WSAIOW(IOC_VENDOR, 235) | 
 
 
 
 
 | 114 |  | 
 
 
 
 
 | 115 | typedef struct _TIMESTAMPING_CONFIG { | 
 
 
 
 
 | 116 | ULONG Flags; | 
 
 
 
 
 | 117 | USHORT TxTimestampsBuffered; | 
 
 
 
 
 | 118 | } TIMESTAMPING_CONFIG, *PTIMESTAMPING_CONFIG; | 
 
 
 
 
 | 119 |  | 
 
 
 
 
 | 120 | #define TIMESTAMPING_FLAG_RX 0x1 | 
 
 
 
 
 | 121 | #define TIMESTAMPING_FLAG_TX 0x2 | 
 
 
 
 
 | 122 |  | 
 
 
 
 
 | 123 | #define SO_TIMESTAMP 0x300A | 
 
 
 
 
 | 124 |  | 
 
 
 
 
 | 125 | #define SO_TIMESTAMP_ID 0x300B | 
 
 
 
 
 | 126 |  | 
 
 
 
 
 | 127 | #define SIO_GET_TX_TIMESTAMP _WSAIOW(IOC_VENDOR, 234) | 
 
 
 
 
 | 128 |  | 
 
 
 
 
 | 129 | typedef enum { | 
 
 
 
 
 | 130 | SocketPriorityHintVeryLow = 0, | 
 
 
 
 
 | 131 | SocketPriorityHintLow, | 
 
 
 
 
 | 132 | SocketPriorityHintNormal, | 
 
 
 
 
 | 133 | SocketMaximumPriorityHintType | 
 
 
 
 
 | 134 | } SOCKET_PRIORITY_HINT, *PSOCKET_PRIORITY_HINT; | 
 
 
 
 
 | 135 |  | 
 
 
 
 
 | 136 | typedef struct _PRIORITY_STATUS { | 
 
 
 
 
 | 137 | SOCKET_PRIORITY_HINT Sender; | 
 
 
 
 
 | 138 | SOCKET_PRIORITY_HINT Receiver; | 
 
 
 
 
 | 139 | } PRIORITY_STATUS, *PPRIORITY_STATUS; | 
 
 
 
 
 | 140 | #endif /* NTDDI_WIN10_FE */ | 
 
 
 
 
 | 141 |  | 
 
 
 
 
 | 142 | typedef enum { | 
 
 
 
 
 | 143 | RCVALL_OFF = 0, | 
 
 
 
 
 | 144 | RCVALL_ON = 1, | 
 
 
 
 
 | 145 | RCVALL_SOCKETLEVELONLY = 2, | 
 
 
 
 
 | 146 | RCVALL_IPLEVEL = 3 | 
 
 
 
 
 | 147 | } RCVALL_VALUE, *PRCVALL_VALUE; | 
 
 
 
 
 | 148 |  | 
 
 
 
 
 | 149 | #define RCVALL_MAX RCVALL_IPLEVEL | 
 
 
 
 
 | 150 |  | 
 
 
 
 
 | 151 | typedef struct { | 
 
 
 
 
 | 152 | RCVALL_VALUE Mode; | 
 
 
 
 
 | 153 | ULONG Interface; | 
 
 
 
 
 | 154 | } RCVALL_IF, *PRCVALL_IF; | 
 
 
 
 
 | 155 |  | 
 
 
 
 
 | 156 | #define TCP_INITIAL_RTO_UNSPECIFIED_RTT ((USHORT) -1) | 
 
 
 
 
 | 157 | #define TCP_INITIAL_RTO_UNSPECIFIED_MAX_SYN_RETRANSMISSIONS ((UCHAR) -1) | 
 
 
 
 
 | 158 |  | 
 
 
 
 
 | 159 | #define TCP_INITIAL_RTO_DEFAULT_RTT (0) | 
 
 
 
 
 | 160 | #define TCP_INITIAL_RTO_DEFAULT_MAX_SYN_RETRANSMISSIONS (0) | 
 
 
 
 
 | 161 | #define TCP_INITIAL_RTO_NO_SYN_RETRANSMISSIONS ((UCHAR) -2) | 
 
 
 
 
 | 162 |  | 
 
 
 
 
 | 163 | typedef struct _TCP_INITIAL_RTO_PARAMETERS { | 
 
 
 
 
 | 164 | USHORT Rtt; | 
 
 
 
 
 | 165 | UCHAR MaxSynRetransmissions; | 
 
 
 
 
 | 166 | } TCP_INITIAL_RTO_PARAMETERS, *PTCP_INITIAL_RTO_PARAMETERS; | 
 
 
 
 
 | 167 |  | 
 
 
 
 
 | 168 | typedef enum { | 
 
 
 
 
 | 169 | TCP_ICW_LEVEL_DEFAULT = 0, | 
 
 
 
 
 | 170 | TCP_ICW_LEVEL_HIGH = 1, | 
 
 
 
 
 | 171 | TCP_ICW_LEVEL_VERY_HIGH = 2, | 
 
 
 
 
 | 172 | TCP_ICW_LEVEL_AGGRESSIVE = 3, | 
 
 
 
 
 | 173 | TCP_ICW_LEVEL_EXPERIMENTAL = 4, | 
 
 
 
 
 | 174 | TCP_ICW_LEVEL_COMPAT = 254, | 
 
 
 
 
 | 175 | TCP_ICW_LEVEL_MAX = 255 | 
 
 
 
 
 | 176 | } TCP_ICW_LEVEL, *PTCP_ICW_LEVEL; | 
 
 
 
 
 | 177 |  | 
 
 
 
 
 | 178 | typedef struct _TCP_ICW_PARAMETERS { | 
 
 
 
 
 | 179 | TCP_ICW_LEVEL Level; | 
 
 
 
 
 | 180 | } TCP_ICW_PARAMETERS, *PTCP_ICW_PARAMETERS; | 
 
 
 
 
 | 181 |  | 
 
 
 
 
 | 182 | typedef struct _TCP_ACK_FREQUENCY_PARAMETERS { | 
 
 
 
 
 | 183 | UCHAR TcpDelayedAckFrequency; | 
 
 
 
 
 | 184 | } TCP_ACK_FREQUENCY_PARAMETERS, *PTCP_ACK_FREQUENCY_PARAMETERS; | 
 
 
 
 
 | 185 |  | 
 
 
 
 
 | 186 | #if NTDDI_VERSION >= NTDDI_WIN10_RS2 | 
 
 
 
 
 | 187 | typedef struct _TCP_INFO_v0 { | 
 
 
 
 
 | 188 | TCPSTATE State; | 
 
 
 
 
 | 189 | ULONG Mss; | 
 
 
 
 
 | 190 | ULONG64 ConnectionTimeMs; | 
 
 
 
 
 | 191 | BOOLEAN TimestampsEnabled; | 
 
 
 
 
 | 192 | ULONG RttUs; | 
 
 
 
 
 | 193 | ULONG MinRttUs; | 
 
 
 
 
 | 194 | ULONG BytesInFlight; | 
 
 
 
 
 | 195 | ULONG Cwnd; | 
 
 
 
 
 | 196 | ULONG SndWnd; | 
 
 
 
 
 | 197 | ULONG RcvWnd; | 
 
 
 
 
 | 198 | ULONG RcvBuf; | 
 
 
 
 
 | 199 | ULONG64 BytesOut; | 
 
 
 
 
 | 200 | ULONG64 BytesIn; | 
 
 
 
 
 | 201 | ULONG BytesReordered; | 
 
 
 
 
 | 202 | ULONG BytesRetrans; | 
 
 
 
 
 | 203 | ULONG FastRetrans; | 
 
 
 
 
 | 204 | ULONG DupAcksIn; | 
 
 
 
 
 | 205 | ULONG TimeoutEpisodes; | 
 
 
 
 
 | 206 | UCHAR SynRetrans; | 
 
 
 
 
 | 207 | } TCP_INFO_v0, *PTCP_INFO_v0; | 
 
 
 
 
 | 208 | #endif | 
 
 
 
 
 | 209 |  | 
 
 
 
 
 | 210 | #if NTDDI_VERSION >= NTDDI_WIN10_RS5 | 
 
 
 
 
 | 211 | typedef struct _TCP_INFO_v1 { | 
 
 
 
 
 | 212 | TCPSTATE State; | 
 
 
 
 
 | 213 | ULONG Mss; | 
 
 
 
 
 | 214 | ULONG64 ConnectionTimeMs; | 
 
 
 
 
 | 215 | BOOLEAN TimestampsEnabled; | 
 
 
 
 
 | 216 | ULONG RttUs; | 
 
 
 
 
 | 217 | ULONG MinRttUs; | 
 
 
 
 
 | 218 | ULONG BytesInFlight; | 
 
 
 
 
 | 219 | ULONG Cwnd; | 
 
 
 
 
 | 220 | ULONG SndWnd; | 
 
 
 
 
 | 221 | ULONG RcvWnd; | 
 
 
 
 
 | 222 | ULONG RcvBuf; | 
 
 
 
 
 | 223 | ULONG64 BytesOut; | 
 
 
 
 
 | 224 | ULONG64 BytesIn; | 
 
 
 
 
 | 225 | ULONG BytesReordered; | 
 
 
 
 
 | 226 | ULONG BytesRetrans; | 
 
 
 
 
 | 227 | ULONG FastRetrans; | 
 
 
 
 
 | 228 | ULONG DupAcksIn; | 
 
 
 
 
 | 229 | ULONG TimeoutEpisodes; | 
 
 
 
 
 | 230 | UCHAR SynRetrans; | 
 
 
 
 
 | 231 | ULONG SndLimTransRwin; | 
 
 
 
 
 | 232 | ULONG SndLimTimeRwin; | 
 
 
 
 
 | 233 | ULONG64 SndLimBytesRwin; | 
 
 
 
 
 | 234 | ULONG SndLimTransCwnd; | 
 
 
 
 
 | 235 | ULONG SndLimTimeCwnd; | 
 
 
 
 
 | 236 | ULONG64 SndLimBytesCwnd; | 
 
 
 
 
 | 237 | ULONG SndLimTransSnd; | 
 
 
 
 
 | 238 | ULONG SndLimTimeSnd; | 
 
 
 
 
 | 239 | ULONG64 SndLimBytesSnd; | 
 
 
 
 
 | 240 | } TCP_INFO_v1, *PTCP_INFO_v1; | 
 
 
 
 
 | 241 | #endif | 
 
 
 
 
 | 242 |  | 
 
 
 
 
 | 243 | #define SIO_ACQUIRE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 100) | 
 
 
 
 
 | 244 | #define SIO_RELEASE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 101) | 
 
 
 
 
 | 245 | #define SIO_ASSOCIATE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 102) | 
 
 
 
 
 | 246 |  | 
 
 
 
 
 | 247 | typedef struct _INET_PORT_RANGE { | 
 
 
 
 
 | 248 | USHORT StartPort; | 
 
 
 
 
 | 249 | USHORT NumberOfPorts; | 
 
 
 
 
 | 250 | } INET_PORT_RANGE, *PINET_PORT_RANGE; | 
 
 
 
 
 | 251 |  | 
 
 
 
 
 | 252 | typedef struct _INET_PORT_RANGE INET_PORT_RESERVATION, *PINET_PORT_RESERVATION; | 
 
 
 
 
 | 253 |  | 
 
 
 
 
 | 254 | typedef struct { | 
 
 
 
 
 | 255 | ULONG64 Token; | 
 
 
 
 
 | 256 | } INET_PORT_RESERVATION_TOKEN, *PINET_PORT_RESERVATION_TOKEN; | 
 
 
 
 
 | 257 |  | 
 
 
 
 
 | 258 | #define INVALID_PORT_RESERVATION_TOKEN ((ULONG64)0) | 
 
 
 
 
 | 259 |  | 
 
 
 
 
 | 260 | typedef struct { | 
 
 
 
 
 | 261 | #ifdef __cplusplus | 
 
 
 
 
 | 262 | INET_PORT_RESERVATION Reservation; | 
 
 
 
 
 | 263 | INET_PORT_RESERVATION_TOKEN Token; | 
 
 
 
 
 | 264 | #else | 
 
 
 
 
 | 265 | INET_PORT_RESERVATION; | 
 
 
 
 
 | 266 | INET_PORT_RESERVATION_TOKEN; | 
 
 
 
 
 | 267 | #endif | 
 
 
 
 
 | 268 | } INET_PORT_RESERVATION_INSTANCE, *PINET_PORT_RESERVATION_INSTANCE; | 
 
 
 
 
 | 269 |  | 
 
 
 
 
 | 270 | typedef struct { | 
 
 
 
 
 | 271 | ULONG OwningPid; | 
 
 
 
 
 | 272 | } INET_PORT_RESERVATION_INFORMATION, *PINET_PORT_RESERVATION_INFORMATION; | 
 
 
 
 
 | 273 |  | 
 
 
 
 
 | 274 | #if (_WIN32_WINNT >= 0x0502) | 
 
 
 
 
 | 275 | typedef enum _SOCKET_SECURITY_PROTOCOL { | 
 
 
 
 
 | 276 | SOCKET_SECURITY_PROTOCOL_DEFAULT, | 
 
 
 
 
 | 277 | SOCKET_SECURITY_PROTOCOL_IPSEC, | 
 
 
 
 
 | 278 | #if NTDDI_VERSION >= NTDDI_WIN7 | 
 
 
 
 
 | 279 | SOCKET_SECURITY_PROTOCOL_IPSEC2, | 
 
 
 
 
 | 280 | #endif | 
 
 
 
 
 | 281 | SOCKET_SECURITY_PROTOCOL_INVALID | 
 
 
 
 
 | 282 | } SOCKET_SECURITY_PROTOCOL; | 
 
 
 
 
 | 283 |  | 
 
 
 
 
 | 284 | #define SOCKET_SETTINGS_GUARANTEE_ENCRYPTION  0x1 | 
 
 
 
 
 | 285 | #define SOCKET_SETTINGS_ALLOW_INSECURE  0x2 | 
 
 
 
 
 | 286 |  | 
 
 
 
 
 | 287 | typedef enum _SOCKET_USAGE_TYPE { | 
 
 
 
 
 | 288 | SYSTEM_CRITICAL_SOCKET   = 1 | 
 
 
 
 
 | 289 | } SOCKET_USAGE_TYPE; | 
 
 
 
 
 | 290 |  | 
 
 
 
 
 | 291 | typedef struct _SOCKET_PEER_TARGET_NAME { | 
 
 
 
 
 | 292 | SOCKET_SECURITY_PROTOCOL SecurityProtocol; | 
 
 
 
 
 | 293 | SOCKADDR_STORAGE         PeerAddress; | 
 
 
 
 
 | 294 | ULONG                    PeerTargetNameStringLen; | 
 
 
 
 
 | 295 | wchar_t                  AllStrings[]; | 
 
 
 
 
 | 296 | } SOCKET_PEER_TARGET_NAME; | 
 
 
 
 
 | 297 |  | 
 
 
 
 
 | 298 | #define SOCKET_INFO_CONNECTION_SECURED          0x00000001 | 
 
 
 
 
 | 299 | #define SOCKET_INFO_CONNECTION_ENCRYPTED        0x00000002 | 
 
 
 
 
 | 300 | #define SOCKET_INFO_CONNECTION_IMPERSONATED     0x00000004 | 
 
 
 
 
 | 301 |  | 
 
 
 
 
 | 302 | typedef struct _SOCKET_SECURITY_QUERY_INFO { | 
 
 
 
 
 | 303 | SOCKET_SECURITY_PROTOCOL SecurityProtocol; | 
 
 
 
 
 | 304 | ULONG                    Flags; | 
 
 
 
 
 | 305 | UINT64                   PeerApplicationAccessTokenHandle; | 
 
 
 
 
 | 306 | UINT64                   PeerMachineAccessTokenHandle; | 
 
 
 
 
 | 307 | } SOCKET_SECURITY_QUERY_INFO; | 
 
 
 
 
 | 308 |  | 
 
 
 
 
 | 309 | typedef struct _SOCKET_SECURITY_QUERY_TEMPLATE { | 
 
 
 
 
 | 310 | SOCKET_SECURITY_PROTOCOL SecurityProtocol; | 
 
 
 
 
 | 311 | SOCKADDR_STORAGE         PeerAddress; | 
 
 
 
 
 | 312 | ULONG                    PeerTokenAccessMask; | 
 
 
 
 
 | 313 | } SOCKET_SECURITY_QUERY_TEMPLATE; | 
 
 
 
 
 | 314 |  | 
 
 
 
 
 | 315 | typedef struct _SOCKET_SECURITY_SETTINGS { | 
 
 
 
 
 | 316 | SOCKET_SECURITY_PROTOCOL SecurityProtocol; | 
 
 
 
 
 | 317 | ULONG                    SecurityFlags; | 
 
 
 
 
 | 318 | } SOCKET_SECURITY_SETTINGS; | 
 
 
 
 
 | 319 |  | 
 
 
 
 
 | 320 | #define SOCKET_SETTINGS_IPSEC_SKIP_FILTER_INSTANTIATION 0x00000001 | 
 
 
 
 
 | 321 |  | 
 
 
 
 
 | 322 | typedef struct _SOCKET_SECURITY_SETTINGS_IPSEC { | 
 
 
 
 
 | 323 | SOCKET_SECURITY_PROTOCOL SecurityProtocol; | 
 
 
 
 
 | 324 | ULONG                    SecurityFlags; | 
 
 
 
 
 | 325 | ULONG                    IpsecFlags; | 
 
 
 
 
 | 326 | GUID                     AuthipMMPolicyKey; | 
 
 
 
 
 | 327 | GUID                     AuthipQMPolicyKey; | 
 
 
 
 
 | 328 | GUID                     Reserved; | 
 
 
 
 
 | 329 | UINT64                   Reserved2; | 
 
 
 
 
 | 330 | ULONG                    UserNameStringLen; | 
 
 
 
 
 | 331 | ULONG                    DomainNameStringLen; | 
 
 
 
 
 | 332 | ULONG                    PasswordStringLen; | 
 
 
 
 
 | 333 | wchar_t                  AllStrings[]; | 
 
 
 
 
 | 334 | } SOCKET_SECURITY_SETTINGS_IPSEC; | 
 
 
 
 
 | 335 |  | 
 
 
 
 
 | 336 | #if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) | 
 
 
 
 
 | 337 |  | 
 
 
 
 
 | 338 | #define RtlIpv6AddressToString __MINGW_NAME_AW(RtlIpv6AddressToString) | 
 
 
 
 
 | 339 | #define RtlIpv6AddressToStringEx __MINGW_NAME_AW(RtlIpv6AddressToStringEx) | 
 
 
 
 
 | 340 |  | 
 
 
 
 
 | 341 | #ifdef _WS2IPDEF_ | 
 
 
 
 
 | 342 |  | 
 
 
 
 
 | 343 | LPSTR NTAPI RtlIpv6AddressToStringA(const IN6_ADDR *Addr, LPSTR S); | 
 
 
 
 
 | 344 | LPWSTR NTAPI RtlIpv6AddressToStringW(const IN6_ADDR *Addr, LPWSTR S); | 
 
 
 
 
 | 345 |  | 
 
 
 
 
 | 346 | LONG NTAPI RtlIpv6AddressToStringExA(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPSTR AddressString, PULONG AddressStringLength); | 
 
 
 
 
 | 347 | LONG NTAPI RtlIpv6AddressToStringExW(const IN6_ADDR *Address, ULONG ScopeId, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength); | 
 
 
 
 
 | 348 |  | 
 
 
 
 
 | 349 | #define RtlIpv4AddressToString __MINGW_NAME_AW(RtlIpv4AddressToString) | 
 
 
 
 
 | 350 | LPSTR NTAPI RtlIpv4AddressToStringA(const IN_ADDR *Addr, LPSTR S); | 
 
 
 
 
 | 351 | LPWSTR NTAPI RtlIpv4AddressToStringW(const IN_ADDR *Addr, LPWSTR S); | 
 
 
 
 
 | 352 |  | 
 
 
 
 
 | 353 | #define RtlIpv4AddressToStringEx __MINGW_NAME_AW(RtlIpv4AddressToStringEx) | 
 
 
 
 
 | 354 | LONG NTAPI RtlIpv4AddressToStringExA(const IN_ADDR *Address, USHORT Port, LPSTR AddressString, PULONG AddressStringLength); | 
 
 
 
 
 | 355 | LONG NTAPI RtlIpv4AddressToStringExW(const IN_ADDR *Address, USHORT Port, LPWSTR AddressString, PULONG AddressStringLength); | 
 
 
 
 
 | 356 |  | 
 
 
 
 
 | 357 | #define RtlIpv4StringToAddress __MINGW_NAME_AW(RtlIpv4StringToAddress) | 
 
 
 
 
 | 358 | LONG NTAPI RtlIpv4StringToAddressA(PCSTR S, BOOLEAN Strict, LPSTR *Terminator, IN_ADDR *Addr); | 
 
 
 
 
 | 359 | LONG NTAPI RtlIpv4StringToAddressW(PCWSTR S, BOOLEAN Strict, LPWSTR *Terminator, IN_ADDR *Addr); | 
 
 
 
 
 | 360 |  | 
 
 
 
 
 | 361 | #define RtlIpv4StringToAddressEx __MINGW_NAME_AW(RtlIpv4StringToAddressEx) | 
 
 
 
 
 | 362 | LONG NTAPI RtlIpv4StringToAddressExA(PCSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port); | 
 
 
 
 
 | 363 | LONG NTAPI RtlIpv4StringToAddressExW(PCWSTR AddressString, BOOLEAN Strict, IN_ADDR *Address, PUSHORT Port); | 
 
 
 
 
 | 364 |  | 
 
 
 
 
 | 365 | #define RtlIpv6StringToAddressEx __MINGW_NAME_AW(RtlIpv6StringToAddressEx) | 
 
 
 
 
 | 366 | LONG NTAPI RtlIpv6StringToAddressExA(PCSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port); | 
 
 
 
 
 | 367 | LONG NTAPI RtlIpv6StringToAddressExW(PCWSTR AddressString, IN6_ADDR *Address, PULONG ScopeId, PUSHORT Port); | 
 
 
 
 
 | 368 |  | 
 
 
 
 
 | 369 | #endif /* _WS2IPDEF_ */ | 
 
 
 
 
 | 370 |  | 
 
 
 
 
 | 371 | #endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP) */ | 
 
 
 
 
 | 372 | #endif /*(_WIN32_WINNT >= 0x0502)*/ | 
 
 
 
 
 | 373 |  | 
 
 
 
 
 | 374 | #ifdef __LP64__ | 
 
 
 
 
 | 375 | #pragma pop_macro("u_long") | 
 
 
 
 
 | 376 | #endif | 
 
 
 
 
 | 377 |  | 
 
 
 
 
 | 378 | #endif /* _MSTCPIP_ */ | 
 
 
 
 
 | 379 |  |