tcpestats.h 5.3 KB

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