123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379 |
- /**
- * 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
- #if NTDDI_VERSION >= NTDDI_WIN10_RS2
- typedef enum _TCPSTATE {
- TCPSTATE_CLOSED,
- TCPSTATE_LISTEN,
- TCPSTATE_SYN_SENT,
- TCPSTATE_SYN_RCVD,
- TCPSTATE_ESTABLISHED,
- TCPSTATE_FIN_WAIT_1,
- TCPSTATE_FIN_WAIT_2,
- TCPSTATE_CLOSE_WAIT,
- TCPSTATE_CLOSING,
- TCPSTATE_LAST_ACK,
- TCPSTATE_TIME_WAIT,
- TCPSTATE_MAX
- } TCPSTATE;
- #endif
- #ifndef _TRANSPORT_SETTING_COMMON_
- #define _TRANSPORT_SETTING_COMMON_
- typedef struct TRANSPORT_SETTING_ID {
- GUID Guid;
- } TRANSPORT_SETTING_ID, *PTRANSPORT_SETTING_ID;
- #endif
- struct tcp_keepalive {
- u_long onoff;
- u_long keepalivetime;
- u_long keepaliveinterval;
- };
- typedef enum {
- CONTROL_CHANNEL_TRIGGER_STATUS_INVALID = 0,
- CONTROL_CHANNEL_TRIGGER_STATUS_SOFTWARE_SLOT_ALLOCATED = 1,
- CONTROL_CHANNEL_TRIGGER_STATUS_HARDWARE_SLOT_ALLOCATED = 2,
- CONTROL_CHANNEL_TRIGGER_STATUS_POLICY_ERROR = 3,
- CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR = 4,
- CONTROL_CHANNEL_TRIGGER_STATUS_TRANSPORT_DISCONNECTED = 5,
- CONTROL_CHANNEL_TRIGGER_STATUS_SERVICE_UNAVAILABLE = 6
- } CONTROL_CHANNEL_TRIGGER_STATUS, *PCONTROL_CHANNEL_TRIGGER_STATUS;
- #define CONTROL_CHANNEL_TRIGGER_STATUS_MAX CONTROL_CHANNEL_TRIGGER_STATUS_SYSTEM_ERROR
- typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT {
- TRANSPORT_SETTING_ID TransportSettingId;
- GUID BrokerEventGuid;
- } REAL_TIME_NOTIFICATION_SETTING_INPUT, *PREAL_TIME_NOTIFICATION_SETTING_INPUT;
- typedef struct _REAL_TIME_NOTIFICATION_SETTING_INPUT_EX {
- TRANSPORT_SETTING_ID TransportSettingId;
- GUID BrokerEventGuid;
- BOOLEAN Unmark;
- } REAL_TIME_NOTIFICATION_SETTING_INPUT_EX, *PREAL_TIME_NOTIFICATION_SETTING_INPUT_EX;
- typedef struct _REAL_TIME_NOTIFICATION_SETTING_OUTPUT {
- CONTROL_CHANNEL_TRIGGER_STATUS ChannelStatus;
- } REAL_TIME_NOTIFICATION_SETTING_OUTPUT, *PREAL_TIME_NOTIFICATION_SETTING_OUTPUT;
- typedef struct _ASSOCIATE_NAMERES_CONTEXT_INPUT {
- TRANSPORT_SETTING_ID TransportSettingId;
- UINT64 Handle;
- } ASSOCIATE_NAMERES_CONTEXT_INPUT, *PASSOCIATE_NAMERES_CONTEXT_INPUT;
- #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 SIO_RCVALL_MCAST_IF _WSAIOW(IOC_VENDOR,13)
- #define SIO_RCVALL_IF _WSAIOW(IOC_VENDOR,14)
- #define SIO_LOOPBACK_FAST_PATH _WSAIOW(IOC_VENDOR,16)
- #define SIO_TCP_INITIAL_RTO _WSAIOW(IOC_VENDOR,17)
- #define SIO_APPLY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,19)
- #define SIO_QUERY_TRANSPORT_SETTING _WSAIOW(IOC_VENDOR,20)
- #define SIO_TCP_SET_ICW _WSAIOW(IOC_VENDOR,22)
- #define SIO_TCP_SET_ACK_FREQUENCY _WSAIOW(IOC_VENDOR,23)
- #if NTDDI_VERSION >= NTDDI_WIN10_RS3
- #define SIO_SET_PRIORITY_HINT _WSAIOW(IOC_VENDOR,24)
- #endif
- #if NTDDI_VERSION >= NTDDI_WIN10_FE
- #define SIO_PRIORITY_HINT SIO_SET_PRIORITY_HINT
- #endif
- #if NTDDI_VERSION >= NTDDI_WIN10_RS2
- #define SIO_TCP_INFO _WSAIORW(IOC_VENDOR,39)
- #endif
- #if NTDDI_VERSION >= NTDDI_WIN10_VB
- #define SIO_CPU_AFFINITY _WSAIOW(IOC_VENDOR,21)
- #endif
- #if NTDDI_VERSION >= NTDDI_WIN10_FE
- #define SIO_TIMESTAMPING _WSAIOW(IOC_VENDOR, 235)
- typedef struct _TIMESTAMPING_CONFIG {
- ULONG Flags;
- USHORT TxTimestampsBuffered;
- } TIMESTAMPING_CONFIG, *PTIMESTAMPING_CONFIG;
- #define TIMESTAMPING_FLAG_RX 0x1
- #define TIMESTAMPING_FLAG_TX 0x2
- #define SO_TIMESTAMP 0x300A
- #define SO_TIMESTAMP_ID 0x300B
- #define SIO_GET_TX_TIMESTAMP _WSAIOW(IOC_VENDOR, 234)
- typedef enum {
- SocketPriorityHintVeryLow = 0,
- SocketPriorityHintLow,
- SocketPriorityHintNormal,
- SocketMaximumPriorityHintType
- } SOCKET_PRIORITY_HINT, *PSOCKET_PRIORITY_HINT;
- typedef struct _PRIORITY_STATUS {
- SOCKET_PRIORITY_HINT Sender;
- SOCKET_PRIORITY_HINT Receiver;
- } PRIORITY_STATUS, *PPRIORITY_STATUS;
- #endif /* NTDDI_WIN10_FE */
- typedef enum {
- RCVALL_OFF = 0,
- RCVALL_ON = 1,
- RCVALL_SOCKETLEVELONLY = 2,
- RCVALL_IPLEVEL = 3
- } RCVALL_VALUE, *PRCVALL_VALUE;
- #define RCVALL_MAX RCVALL_IPLEVEL
- typedef struct {
- RCVALL_VALUE Mode;
- ULONG Interface;
- } RCVALL_IF, *PRCVALL_IF;
- #define TCP_INITIAL_RTO_UNSPECIFIED_RTT ((USHORT) -1)
- #define TCP_INITIAL_RTO_UNSPECIFIED_MAX_SYN_RETRANSMISSIONS ((UCHAR) -1)
- #define TCP_INITIAL_RTO_DEFAULT_RTT (0)
- #define TCP_INITIAL_RTO_DEFAULT_MAX_SYN_RETRANSMISSIONS (0)
- #define TCP_INITIAL_RTO_NO_SYN_RETRANSMISSIONS ((UCHAR) -2)
- typedef struct _TCP_INITIAL_RTO_PARAMETERS {
- USHORT Rtt;
- UCHAR MaxSynRetransmissions;
- } TCP_INITIAL_RTO_PARAMETERS, *PTCP_INITIAL_RTO_PARAMETERS;
- typedef enum {
- TCP_ICW_LEVEL_DEFAULT = 0,
- TCP_ICW_LEVEL_HIGH = 1,
- TCP_ICW_LEVEL_VERY_HIGH = 2,
- TCP_ICW_LEVEL_AGGRESSIVE = 3,
- TCP_ICW_LEVEL_EXPERIMENTAL = 4,
- TCP_ICW_LEVEL_COMPAT = 254,
- TCP_ICW_LEVEL_MAX = 255
- } TCP_ICW_LEVEL, *PTCP_ICW_LEVEL;
- typedef struct _TCP_ICW_PARAMETERS {
- TCP_ICW_LEVEL Level;
- } TCP_ICW_PARAMETERS, *PTCP_ICW_PARAMETERS;
- typedef struct _TCP_ACK_FREQUENCY_PARAMETERS {
- UCHAR TcpDelayedAckFrequency;
- } TCP_ACK_FREQUENCY_PARAMETERS, *PTCP_ACK_FREQUENCY_PARAMETERS;
- #if NTDDI_VERSION >= NTDDI_WIN10_RS2
- typedef struct _TCP_INFO_v0 {
- TCPSTATE State;
- ULONG Mss;
- ULONG64 ConnectionTimeMs;
- BOOLEAN TimestampsEnabled;
- ULONG RttUs;
- ULONG MinRttUs;
- ULONG BytesInFlight;
- ULONG Cwnd;
- ULONG SndWnd;
- ULONG RcvWnd;
- ULONG RcvBuf;
- ULONG64 BytesOut;
- ULONG64 BytesIn;
- ULONG BytesReordered;
- ULONG BytesRetrans;
- ULONG FastRetrans;
- ULONG DupAcksIn;
- ULONG TimeoutEpisodes;
- UCHAR SynRetrans;
- } TCP_INFO_v0, *PTCP_INFO_v0;
- #endif
- #if NTDDI_VERSION >= NTDDI_WIN10_RS5
- typedef struct _TCP_INFO_v1 {
- TCPSTATE State;
- ULONG Mss;
- ULONG64 ConnectionTimeMs;
- BOOLEAN TimestampsEnabled;
- ULONG RttUs;
- ULONG MinRttUs;
- ULONG BytesInFlight;
- ULONG Cwnd;
- ULONG SndWnd;
- ULONG RcvWnd;
- ULONG RcvBuf;
- ULONG64 BytesOut;
- ULONG64 BytesIn;
- ULONG BytesReordered;
- ULONG BytesRetrans;
- ULONG FastRetrans;
- ULONG DupAcksIn;
- ULONG TimeoutEpisodes;
- UCHAR SynRetrans;
- ULONG SndLimTransRwin;
- ULONG SndLimTimeRwin;
- ULONG64 SndLimBytesRwin;
- ULONG SndLimTransCwnd;
- ULONG SndLimTimeCwnd;
- ULONG64 SndLimBytesCwnd;
- ULONG SndLimTransSnd;
- ULONG SndLimTimeSnd;
- ULONG64 SndLimBytesSnd;
- } TCP_INFO_v1, *PTCP_INFO_v1;
- #endif
- #define SIO_ACQUIRE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 100)
- #define SIO_RELEASE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 101)
- #define SIO_ASSOCIATE_PORT_RESERVATION _WSAIOW(IOC_VENDOR, 102)
- typedef struct _INET_PORT_RANGE {
- USHORT StartPort;
- USHORT NumberOfPorts;
- } INET_PORT_RANGE, *PINET_PORT_RANGE;
- typedef struct _INET_PORT_RANGE INET_PORT_RESERVATION, *PINET_PORT_RESERVATION;
- typedef struct {
- ULONG64 Token;
- } INET_PORT_RESERVATION_TOKEN, *PINET_PORT_RESERVATION_TOKEN;
- #define INVALID_PORT_RESERVATION_TOKEN ((ULONG64)0)
- typedef struct {
- #ifdef __cplusplus
- INET_PORT_RESERVATION Reservation;
- INET_PORT_RESERVATION_TOKEN Token;
- #else
- INET_PORT_RESERVATION;
- INET_PORT_RESERVATION_TOKEN;
- #endif
- } INET_PORT_RESERVATION_INSTANCE, *PINET_PORT_RESERVATION_INSTANCE;
- typedef struct {
- ULONG OwningPid;
- } INET_PORT_RESERVATION_INFORMATION, *PINET_PORT_RESERVATION_INFORMATION;
- #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_ */
|