/**
* 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 _INC_TCPESTATS
#define _INC_TCPESTATS
#if (_WIN32_WINNT >= 0x0600)
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _TCP_ESTATS_BANDWIDTH_ROD_v0 {
ULONG64 OutboundBandwidth;
ULONG64 InboundBandwidth;
ULONG64 OutboundInstability;
ULONG64 InboundInstability;
BOOLEAN OutboundBandwidthPeaked;
BOOLEAN InboundBandwidthPeaked;
} TCP_ESTATS_BANDWIDTH_ROD_v0, *PTCP_ESTATS_BANDWIDTH_ROD_v0;
typedef enum _TCP_BOOLEAN_OPTIONAL {
TcpBoolOptDisabled = 0,
TcpBoolOptEnabled = 1,
TcpBoolOptUnchanged = -1
} TCP_BOOLEAN_OPTIONAL;
typedef struct _TCP_ESTATS_BANDWIDTH_RW_v0 {
TCP_BOOLEAN_OPTIONAL EnableCollectionOutbound;
TCP_BOOLEAN_OPTIONAL EnableCollectionInbound;
} TCP_ESTATS_BANDWIDTH_RW_v0, *PTCP_ESTATS_BANDWIDTH_RW_v0;
typedef struct _TCP_ESTATS_DATA_ROD_v0 {
ULONG64 DataBytesOut;
ULONG64 DataSegsOut;
ULONG64 DataBytesIn;
ULONG64 DataSegsIn;
ULONG64 SegsOut;
ULONG64 SegsIn;
ULONG SoftErrors;
ULONG SoftErrorReason;
ULONG SndUna;
ULONG SndNxt;
ULONG SndMax;
ULONG64 ThruBytesAcked;
ULONG RcvNxt;
ULONG64 ThruBytesReceived;
} TCP_ESTATS_DATA_ROD_v0, *PTCP_ESTATS_DATA_ROD_v0;
typedef struct _TCP_ESTATS_DATA_RW_v0 {
BOOLEAN EnableCollection;
} TCP_ESTATS_DATA_RW_v0, *PTCP_ESTATS_DATA_RW_v0;
typedef struct _TCP_ESTATS_FINE_RTT_ROD_v0 {
ULONG RttVar;
ULONG MaxRtt;
ULONG MinRtt;
ULONG SumRtt;
} TCP_ESTATS_FINE_RTT_ROD_v0, *PTCP_ESTATS_FINE_RTT_ROD_v0;
typedef struct _TCP_ESTATS_FINE_RTT_RW_v0 {
BOOLEAN EnableCollection;
} TCP_ESTATS_FINE_RTT_RW_v0, *PTCP_ESTATS_FINE_RTT_RW_v0;
typedef struct _TCP_ESTATS_OBS_REC_ROD_v0 {
ULONG CurRwinRcvd;
ULONG MaxRwinRcvd;
ULONG MinRwinRcvd;
UCHAR WinScaleRcvd;
} TCP_ESTATS_OBS_REC_ROD_v0, *PTCP_ESTATS_OBS_REC_ROD_v0;
typedef struct _TCP_ESTATS_OBS_REC_RW_v0 {
BOOLEAN EnableCollection;
} TCP_ESTATS_OBS_REC_RW_v0, *PTCP_ESTATS_OBS_REC_RW_v0;
typedef struct _TCP_ESTATS_PATH_ROD_v0 {
ULONG FastRetran;
ULONG Timeouts;
ULONG SubsequentTimeouts;
ULONG CurTimeoutCount;
ULONG AbruptTimeouts;
ULONG PktsRetrans;
ULONG BytesRetrans;
ULONG DupAcksIn;
ULONG SacksRcvd;
ULONG SackBlocksRcvd;
ULONG CongSignals;
ULONG PreCongSumCwnd;
ULONG PreCongSumRtt;
ULONG PostCongSumRtt;
ULONG PostCongCountRtt;
ULONG EcnSignals;
ULONG EceRcvd;
ULONG SendStall;
ULONG QuenchRcvd;
ULONG RetranThresh;
ULONG SndDupAckEpisodes;
ULONG SumBytesReordered;
ULONG NonRecovDa;
ULONG NonRecovDaEpisodes;
ULONG AckAfterFr;
ULONG DsackDups;
ULONG SampleRtt;
ULONG SmoothedRtt;
ULONG RttVar;
ULONG MaxRtt;
ULONG MinRtt;
ULONG SumRtt;
ULONG CountRtt;
ULONG CurRto;
ULONG MaxRto;
ULONG MinRto;
ULONG CurMss;
ULONG MaxMss;
ULONG MinMss;
ULONG SpuriousRtoDetections;
} TCP_ESTATS_PATH_ROD_v0, *PTCP_ESTATS_PATH_ROD_v0;
typedef struct _TCP_ESTATS_PATH_RW_v0 {
BOOLEAN EnableCollection;
} TCP_ESTATS_PATH_RW_v0, *PTCP_ESTATS_PATH_RW_v0;
typedef struct _TCP_ESTATS_REC_ROD_v0 {
ULONG CurRwinSent;
ULONG MaxRwinSent;
ULONG MinRwinSent;
ULONG LimRwin;
ULONG DupAckEpisodes;
ULONG DupAcksOut;
ULONG CeRcvd;
ULONG EcnSent;
ULONG EcnNoncesRcvd;
ULONG CurReasmQueue;
ULONG MaxReasmQueue;
SIZE_T CurAppRQueue;
SIZE_T MaxAppRQueue;
UCHAR WinScaleSent;
} TCP_ESTATS_REC_ROD_v0, *PTCP_ESTATS_REC_ROD_v0;
typedef struct _TCP_ESTATS_REC_RW_v0 {
BOOLEAN EnableCollection;
} TCP_ESTATS_REC_RW_v0, *PTCP_ESTATS_REC_RW_v0;
typedef struct _TCP_ESTATS_SEND_BUFF_ROD_v0 {
SIZE_T CurRetxQueue;
SIZE_T MaxRetxQueue;
SIZE_T CurAppWQueue;
SIZE_T MaxAppWQueue;
} TCP_ESTATS_SEND_BUFF_ROD_v0, *PTCP_ESTATS_SEND_BUFF_ROD_v0;
typedef struct _TCP_ESTATS_SEND_BUFF_RW_v0 {
BOOLEAN EnableCollection;
} TCP_ESTATS_SEND_BUFF_RW_v0, *PTCP_ESTATS_SEND_BUFF_RW_v0;
typedef struct _TCP_ESTATS_SND_CONG_ROD_v0 {
ULONG SndLimTransRwin;
ULONG SndLimTimeRwin;
SIZE_T SndLimBytesRwin;
ULONG SndLimTransCwnd;
ULONG SndLimTimeCwnd;
SIZE_T SndLimBytesCwnd;
ULONG SndLimTransSnd;
ULONG SndLimTimeSnd;
SIZE_T SndLimBytesSnd;
ULONG SlowStart;
ULONG CongAvoid;
ULONG OtherReductions;
ULONG CurCwnd;
ULONG MaxSsCwnd;
ULONG MaxCaCwnd;
ULONG CurSsthresh;
ULONG MaxSsthresh;
ULONG MinSsthresh;
} TCP_ESTATS_SND_CONG_ROD_v0, *PTCP_ESTATS_SND_CONG_ROD_v0;
typedef struct _TCP_ESTATS_SND_CONG_ROS_v0 {
ULONG LimCwnd;
} TCP_ESTATS_SND_CONG_ROS_v0, *PTCP_ESTATS_SND_CONG_ROS_v0;
typedef struct _TCP_ESTATS_SND_CONG_RW_v0 {
BOOLEAN EnableCollection;
} TCP_ESTATS_SND_CONG_RW_v0, *PTCP_ESTATS_SND_CONG_RW_v0;
typedef struct _TCP_ESTATS_SYN_OPTS_ROS_v0 {
BOOLEAN ActiveOpen;
ULONG MssRcvd;
ULONG MssSent;
} TCP_ESTATS_SYN_OPTS_ROS_v0, *PTCP_ESTATS_SYN_OPTS_ROS_v0;
typedef enum _TCP_ESTATS_TYPE {
TcpConnectionEstatsSynOpts,
TcpConnectionEstatsData,
TcpConnectionEstatsSndCong,
TcpConnectionEstatsPath,
TcpConnectionEstatsSendBuff,
TcpConnectionEstatsRec,
TcpConnectionEstatsObsRec,
TcpConnectionEstatsBandwidth,
TcpConnectionEstatsFineRtt,
TcpConnectionEstatsMaximum
} TCP_ESTATS_TYPE;
#ifdef __cplusplus
}
#endif
#endif /*(_WIN32_WINNT >= 0x0600)*/
#endif /*_INC_TCPESTATS*/