master
  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 _INC_TCPESTATS
  7#define _INC_TCPESTATS
  8
  9#if (_WIN32_WINNT >= 0x0600)
 10
 11#ifdef __cplusplus
 12extern "C" {
 13#endif
 14
 15typedef struct _TCP_ESTATS_BANDWIDTH_ROD_v0 {
 16  ULONG64 OutboundBandwidth;
 17  ULONG64 InboundBandwidth;
 18  ULONG64 OutboundInstability;
 19  ULONG64 InboundInstability;
 20  BOOLEAN OutboundBandwidthPeaked;
 21  BOOLEAN InboundBandwidthPeaked;
 22} TCP_ESTATS_BANDWIDTH_ROD_v0, *PTCP_ESTATS_BANDWIDTH_ROD_v0;
 23
 24typedef enum _TCP_BOOLEAN_OPTIONAL {
 25  TcpBoolOptDisabled    = 0,
 26  TcpBoolOptEnabled     = 1,
 27  TcpBoolOptUnchanged   = -1 
 28} TCP_BOOLEAN_OPTIONAL;
 29
 30typedef struct _TCP_ESTATS_BANDWIDTH_RW_v0 {
 31  TCP_BOOLEAN_OPTIONAL EnableCollectionOutbound;
 32  TCP_BOOLEAN_OPTIONAL EnableCollectionInbound;
 33} TCP_ESTATS_BANDWIDTH_RW_v0, *PTCP_ESTATS_BANDWIDTH_RW_v0;
 34
 35typedef struct _TCP_ESTATS_DATA_ROD_v0 {
 36  ULONG64 DataBytesOut;
 37  ULONG64 DataSegsOut;
 38  ULONG64 DataBytesIn;
 39  ULONG64 DataSegsIn;
 40  ULONG64 SegsOut;
 41  ULONG64 SegsIn;
 42  ULONG   SoftErrors;
 43  ULONG   SoftErrorReason;
 44  ULONG   SndUna;
 45  ULONG   SndNxt;
 46  ULONG   SndMax;
 47  ULONG64 ThruBytesAcked;
 48  ULONG   RcvNxt;
 49  ULONG64 ThruBytesReceived;
 50} TCP_ESTATS_DATA_ROD_v0, *PTCP_ESTATS_DATA_ROD_v0;
 51
 52typedef struct _TCP_ESTATS_DATA_RW_v0 {
 53  BOOLEAN EnableCollection;
 54} TCP_ESTATS_DATA_RW_v0, *PTCP_ESTATS_DATA_RW_v0;
 55
 56typedef struct _TCP_ESTATS_FINE_RTT_ROD_v0 {
 57  ULONG RttVar;
 58  ULONG MaxRtt;
 59  ULONG MinRtt;
 60  ULONG SumRtt;
 61} TCP_ESTATS_FINE_RTT_ROD_v0, *PTCP_ESTATS_FINE_RTT_ROD_v0;
 62
 63typedef struct _TCP_ESTATS_FINE_RTT_RW_v0 {
 64  BOOLEAN EnableCollection;
 65} TCP_ESTATS_FINE_RTT_RW_v0, *PTCP_ESTATS_FINE_RTT_RW_v0;
 66
 67typedef struct _TCP_ESTATS_OBS_REC_ROD_v0 {
 68  ULONG CurRwinRcvd;
 69  ULONG MaxRwinRcvd;
 70  ULONG MinRwinRcvd;
 71  UCHAR WinScaleRcvd;
 72} TCP_ESTATS_OBS_REC_ROD_v0, *PTCP_ESTATS_OBS_REC_ROD_v0;
 73
 74typedef struct _TCP_ESTATS_OBS_REC_RW_v0 {
 75  BOOLEAN EnableCollection;
 76} TCP_ESTATS_OBS_REC_RW_v0, *PTCP_ESTATS_OBS_REC_RW_v0;
 77
 78typedef struct _TCP_ESTATS_PATH_ROD_v0 {
 79  ULONG FastRetran;
 80  ULONG Timeouts;
 81  ULONG SubsequentTimeouts;
 82  ULONG CurTimeoutCount;
 83  ULONG AbruptTimeouts;
 84  ULONG PktsRetrans;
 85  ULONG BytesRetrans;
 86  ULONG DupAcksIn;
 87  ULONG SacksRcvd;
 88  ULONG SackBlocksRcvd;
 89  ULONG CongSignals;
 90  ULONG PreCongSumCwnd;
 91  ULONG PreCongSumRtt;
 92  ULONG PostCongSumRtt;
 93  ULONG PostCongCountRtt;
 94  ULONG EcnSignals;
 95  ULONG EceRcvd;
 96  ULONG SendStall;
 97  ULONG QuenchRcvd;
 98  ULONG RetranThresh;
 99  ULONG SndDupAckEpisodes;
100  ULONG SumBytesReordered;
101  ULONG NonRecovDa;
102  ULONG NonRecovDaEpisodes;
103  ULONG AckAfterFr;
104  ULONG DsackDups;
105  ULONG SampleRtt;
106  ULONG SmoothedRtt;
107  ULONG RttVar;
108  ULONG MaxRtt;
109  ULONG MinRtt;
110  ULONG SumRtt;
111  ULONG CountRtt;
112  ULONG CurRto;
113  ULONG MaxRto;
114  ULONG MinRto;
115  ULONG CurMss;
116  ULONG MaxMss;
117  ULONG MinMss;
118  ULONG SpuriousRtoDetections;
119} TCP_ESTATS_PATH_ROD_v0, *PTCP_ESTATS_PATH_ROD_v0;
120
121typedef struct _TCP_ESTATS_PATH_RW_v0 {
122  BOOLEAN EnableCollection;
123} TCP_ESTATS_PATH_RW_v0, *PTCP_ESTATS_PATH_RW_v0;
124
125typedef struct _TCP_ESTATS_REC_ROD_v0 {
126  ULONG  CurRwinSent;
127  ULONG  MaxRwinSent;
128  ULONG  MinRwinSent;
129  ULONG  LimRwin;
130  ULONG  DupAckEpisodes;
131  ULONG  DupAcksOut;
132  ULONG  CeRcvd;
133  ULONG  EcnSent;
134  ULONG  EcnNoncesRcvd;
135  ULONG  CurReasmQueue;
136  ULONG  MaxReasmQueue;
137  SIZE_T CurAppRQueue;
138  SIZE_T MaxAppRQueue;
139  UCHAR  WinScaleSent;
140} TCP_ESTATS_REC_ROD_v0, *PTCP_ESTATS_REC_ROD_v0;
141
142typedef struct _TCP_ESTATS_REC_RW_v0 {
143  BOOLEAN EnableCollection;
144} TCP_ESTATS_REC_RW_v0, *PTCP_ESTATS_REC_RW_v0;
145
146typedef struct _TCP_ESTATS_SEND_BUFF_ROD_v0 {
147  SIZE_T CurRetxQueue;
148  SIZE_T MaxRetxQueue;
149  SIZE_T CurAppWQueue;
150  SIZE_T MaxAppWQueue;
151} TCP_ESTATS_SEND_BUFF_ROD_v0, *PTCP_ESTATS_SEND_BUFF_ROD_v0;
152
153typedef struct _TCP_ESTATS_SEND_BUFF_RW_v0 {
154  BOOLEAN EnableCollection;
155} TCP_ESTATS_SEND_BUFF_RW_v0, *PTCP_ESTATS_SEND_BUFF_RW_v0;
156
157typedef struct _TCP_ESTATS_SND_CONG_ROD_v0 {
158  ULONG  SndLimTransRwin;
159  ULONG  SndLimTimeRwin;
160  SIZE_T SndLimBytesRwin;
161  ULONG  SndLimTransCwnd;
162  ULONG  SndLimTimeCwnd;
163  SIZE_T SndLimBytesCwnd;
164  ULONG  SndLimTransSnd;
165  ULONG  SndLimTimeSnd;
166  SIZE_T SndLimBytesSnd;
167  ULONG  SlowStart;
168  ULONG  CongAvoid;
169  ULONG  OtherReductions;
170  ULONG  CurCwnd;
171  ULONG  MaxSsCwnd;
172  ULONG  MaxCaCwnd;
173  ULONG  CurSsthresh;
174  ULONG  MaxSsthresh;
175  ULONG  MinSsthresh;
176} TCP_ESTATS_SND_CONG_ROD_v0, *PTCP_ESTATS_SND_CONG_ROD_v0;
177
178typedef struct _TCP_ESTATS_SND_CONG_ROS_v0 {
179  ULONG LimCwnd;
180} TCP_ESTATS_SND_CONG_ROS_v0, *PTCP_ESTATS_SND_CONG_ROS_v0;
181
182typedef struct _TCP_ESTATS_SND_CONG_RW_v0 {
183  BOOLEAN EnableCollection;
184} TCP_ESTATS_SND_CONG_RW_v0, *PTCP_ESTATS_SND_CONG_RW_v0;
185
186typedef struct _TCP_ESTATS_SYN_OPTS_ROS_v0 {
187  BOOLEAN ActiveOpen;
188  ULONG   MssRcvd;
189  ULONG   MssSent;
190} TCP_ESTATS_SYN_OPTS_ROS_v0, *PTCP_ESTATS_SYN_OPTS_ROS_v0;
191
192typedef enum _TCP_ESTATS_TYPE {
193  TcpConnectionEstatsSynOpts,
194  TcpConnectionEstatsData,
195  TcpConnectionEstatsSndCong,
196  TcpConnectionEstatsPath,
197  TcpConnectionEstatsSendBuff,
198  TcpConnectionEstatsRec,
199  TcpConnectionEstatsObsRec,
200  TcpConnectionEstatsBandwidth,
201  TcpConnectionEstatsFineRtt,
202  TcpConnectionEstatsMaximum 
203} TCP_ESTATS_TYPE;
204
205#ifdef __cplusplus
206}
207#endif
208
209#endif /*(_WIN32_WINNT >= 0x0600)*/
210
211#endif /*_INC_TCPESTATS*/
212