| 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 |
| 12 | extern "C" { |
| 13 | #endif |
| 14 | |
| 15 | typedef 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 | |
| 24 | typedef enum _TCP_BOOLEAN_OPTIONAL { |
| 25 | TcpBoolOptDisabled = 0, |
| 26 | TcpBoolOptEnabled = 1, |
| 27 | TcpBoolOptUnchanged = -1 |
| 28 | } TCP_BOOLEAN_OPTIONAL; |
| 29 | |
| 30 | typedef 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 | |
| 35 | typedef 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 | |
| 52 | typedef struct _TCP_ESTATS_DATA_RW_v0 { |
| 53 | BOOLEAN EnableCollection; |
| 54 | } TCP_ESTATS_DATA_RW_v0, *PTCP_ESTATS_DATA_RW_v0; |
| 55 | |
| 56 | typedef 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 | |
| 63 | typedef struct _TCP_ESTATS_FINE_RTT_RW_v0 { |
| 64 | BOOLEAN EnableCollection; |
| 65 | } TCP_ESTATS_FINE_RTT_RW_v0, *PTCP_ESTATS_FINE_RTT_RW_v0; |
| 66 | |
| 67 | typedef 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 | |
| 74 | typedef struct _TCP_ESTATS_OBS_REC_RW_v0 { |
| 75 | BOOLEAN EnableCollection; |
| 76 | } TCP_ESTATS_OBS_REC_RW_v0, *PTCP_ESTATS_OBS_REC_RW_v0; |
| 77 | |
| 78 | typedef 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 | |
| 121 | typedef struct _TCP_ESTATS_PATH_RW_v0 { |
| 122 | BOOLEAN EnableCollection; |
| 123 | } TCP_ESTATS_PATH_RW_v0, *PTCP_ESTATS_PATH_RW_v0; |
| 124 | |
| 125 | typedef 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 | |
| 142 | typedef struct _TCP_ESTATS_REC_RW_v0 { |
| 143 | BOOLEAN EnableCollection; |
| 144 | } TCP_ESTATS_REC_RW_v0, *PTCP_ESTATS_REC_RW_v0; |
| 145 | |
| 146 | typedef 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 | |
| 153 | typedef struct _TCP_ESTATS_SEND_BUFF_RW_v0 { |
| 154 | BOOLEAN EnableCollection; |
| 155 | } TCP_ESTATS_SEND_BUFF_RW_v0, *PTCP_ESTATS_SEND_BUFF_RW_v0; |
| 156 | |
| 157 | typedef 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 | |
| 178 | typedef struct _TCP_ESTATS_SND_CONG_ROS_v0 { |
| 179 | ULONG LimCwnd; |
| 180 | } TCP_ESTATS_SND_CONG_ROS_v0, *PTCP_ESTATS_SND_CONG_ROS_v0; |
| 181 | |
| 182 | typedef struct _TCP_ESTATS_SND_CONG_RW_v0 { |
| 183 | BOOLEAN EnableCollection; |
| 184 | } TCP_ESTATS_SND_CONG_RW_v0, *PTCP_ESTATS_SND_CONG_RW_v0; |
| 185 | |
| 186 | typedef 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 | |
| 192 | typedef 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 | |