Revision control
Copy as Markdown
Other Tools
// Licensed under the Apache License, Version 2.0
// All files in the project carrying such notice may not be copied, modified, or distributed
// except according to those terms.
// #include <winapifamily.h>
use shared::basetsd::{SIZE_T, ULONG64};
use shared::ntdef::{BOOLEAN, UCHAR, ULONG};
ENUM!{enum TCP_ESTATS_TYPE {
TcpConnectionEstatsSynOpts = 0,
TcpConnectionEstatsData = 1,
TcpConnectionEstatsSndCong = 2,
TcpConnectionEstatsPath = 3,
TcpConnectionEstatsSendBuff = 4,
TcpConnectionEstatsRec = 5,
TcpConnectionEstatsObsRec = 6,
TcpConnectionEstatsBandwidth = 7,
TcpConnectionEstatsFineRtt = 8,
TcpConnectionEstatsMaximum = 9,
}}
pub type PTCP_ESTATS_TYPE = *mut TCP_ESTATS_TYPE;
ENUM!{enum TCP_BOOLEAN_OPTIONAL {
TcpBoolOptDisabled = 0,
TcpBoolOptEnabled = 1,
TcpBoolOptUnchanged = -1i32 as u32,
}}
pub type PTCP_BOOLEAN_OPTIONAL = *mut TCP_BOOLEAN_OPTIONAL;
STRUCT!{struct TCP_ESTATS_SYN_OPTS_ROS_v0 {
ActiveOpen: BOOLEAN,
MssRcvd: ULONG,
MssSent: ULONG,
}}
pub type PTCP_ESTATS_SYN_OPTS_ROS_v0 = *mut TCP_ESTATS_SYN_OPTS_ROS_v0;
ENUM!{enum TCP_SOFT_ERROR {
TcpErrorNone = 0,
TcpErrorBelowDataWindow = 1,
TcpErrorAboveDataWindow = 2,
TcpErrorBelowAckWindow = 3,
TcpErrorAboveAckWindow = 4,
TcpErrorBelowTsWindow = 5,
TcpErrorAboveTsWindow = 6,
TcpErrorDataChecksumError = 7,
TcpErrorDataLengthError = 8,
TcpErrorMaxSoftError = 9,
}}
pub type PTCP_SOFT_ERROR = *mut TCP_SOFT_ERROR;
STRUCT!{struct TCP_ESTATS_DATA_ROD_v0 {
DataBytesOut: ULONG64,
DataSegsOut: ULONG64,
DataBytesIn: ULONG64,
DataSegsIn: ULONG64,
SegsOut: ULONG64,
SegsIn: ULONG64,
SoftErrors: ULONG,
SoftErrorReason: ULONG,
SndUna: ULONG,
SndNxt: ULONG,
SndMax: ULONG,
ThruBytesAcked: ULONG64,
RcvNxt: ULONG,
ThruBytesReceived: ULONG64,
}}
pub type PTCP_ESTATS_DATA_ROD_v0 = *mut TCP_ESTATS_DATA_ROD_v0;
STRUCT!{struct TCP_ESTATS_DATA_RW_v0 {
EnableCollection: BOOLEAN,
}}
pub type PTCP_ESTATS_DATA_RW_v0 = TCP_ESTATS_DATA_RW_v0;
STRUCT!{struct TCP_ESTATS_SND_CONG_ROD_v0 {
SndLimTransRwin: ULONG,
SndLimTimeRwin: ULONG,
SndLimBytesRwin: SIZE_T,
SndLimTransCwnd: ULONG,
SndLimTimeCwnd: ULONG,
SndLimBytesCwnd: SIZE_T,
SndLimTransSnd: ULONG,
SndLimTimeSnd: ULONG,
SndLimBytesSnd: SIZE_T,
SlowStart: ULONG,
CongAvoid: ULONG,
OtherReductions: ULONG,
CurCwnd: ULONG,
MaxSsCwnd: ULONG,
MaxCaCwnd: ULONG,
CurSsthresh: ULONG,
MaxSsthresh: ULONG,
MinSsthresh: ULONG,
}}
pub type PTCP_ESTATS_SND_CONG_ROD_v0 = *mut TCP_ESTATS_SND_CONG_ROD_v0;
STRUCT!{struct TCP_ESTATS_SND_CONG_ROS_v0 {
LimCwnd: ULONG,
}}
pub type PTCP_ESTATS_SND_CONG_ROS_v0 = *mut TCP_ESTATS_SND_CONG_ROS_v0;
STRUCT!{struct TCP_ESTATS_SND_CONG_RW_v0 {
EnableCollection: BOOLEAN,
}}
pub type PTCP_ESTATS_SND_CONG_RW_v0 = *mut TCP_ESTATS_SND_CONG_RW_v0;
STRUCT!{struct TCP_ESTATS_PATH_ROD_v0 {
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: ULONG,
}}
pub type PTCP_ESTATS_PATH_ROD_v0 = *mut TCP_ESTATS_PATH_ROD_v0;
STRUCT!{struct TCP_ESTATS_PATH_RW_v0 {
EnableCollection: BOOLEAN,
}}
pub type PTCP_ESTATS_PATH_RW_v0 = *mut TCP_ESTATS_PATH_RW_v0;
STRUCT!{struct TCP_ESTATS_SEND_BUFF_ROD_v0 {
CurRetxQueue: SIZE_T,
MaxRetxQueue: SIZE_T,
CurAppWQueue: SIZE_T,
MaxAppWQueue: SIZE_T,
}}
pub type PTCP_ESTATS_SEND_BUFF_ROD_v0 = *mut TCP_ESTATS_SEND_BUFF_ROD_v0;
STRUCT!{struct TCP_ESTATS_SEND_BUFF_RW_v0 {
EnableCollection: BOOLEAN,
}}
pub type PTCP_ESTATS_SEND_BUFF_RW_v0 = *mut TCP_ESTATS_SEND_BUFF_RW_v0;
STRUCT!{struct TCP_ESTATS_REC_ROD_v0 {
CurRwinSent: ULONG,
MaxRwinSent: ULONG,
MinRwinSent: ULONG,
LimRwin: ULONG,
DupAckEpisodes: ULONG,
DupAcksOut: ULONG,
CeRcvd: ULONG,
EcnSent: ULONG,
EcnNoncesRcvd: ULONG,
CurReasmQueue: ULONG,
MaxReasmQueue: ULONG,
CurAppRQueue: SIZE_T,
MaxAppRQueue: SIZE_T,
WinScaleSent: UCHAR,
}}
pub type PTCP_ESTATS_REC_ROD_v0 = *mut TCP_ESTATS_REC_ROD_v0;
STRUCT!{struct TCP_ESTATS_REC_RW_v0 {
EnableCollection: BOOLEAN,
}}
pub type PTCP_ESTATS_REC_RW_v0 = *mut TCP_ESTATS_REC_RW_v0;
STRUCT!{struct TCP_ESTATS_OBS_REC_ROD_v0 {
CurRwinRcvd: ULONG,
MaxRwinRcvd: ULONG,
MinRwinRcvd: ULONG,
WinScaleRcvd: UCHAR,
}}
pub type PTCP_ESTATS_OBS_REC_ROD_v0 = *mut TCP_ESTATS_OBS_REC_ROD_v0;
STRUCT!{struct TCP_ESTATS_OBS_REC_RW_v0 {
EnableCollection: BOOLEAN,
}}
pub type PTCP_ESTATS_OBS_REC_RW_v0 = *mut TCP_ESTATS_OBS_REC_RW_v0;
STRUCT!{struct TCP_ESTATS_BANDWIDTH_RW_v0 {
EnableCollectionOutbound: TCP_BOOLEAN_OPTIONAL,
EnableCollectionInbound: TCP_BOOLEAN_OPTIONAL,
}}
pub type PTCP_ESTATS_BANDWIDTH_RW_v0 = *mut TCP_ESTATS_BANDWIDTH_RW_v0;
STRUCT!{struct TCP_ESTATS_BANDWIDTH_ROD_v0 {
OutboundBandwidth: ULONG64,
InboundBandwidth: ULONG64,
OutboundInstability: ULONG64,
InboundInstability: ULONG64,
OutboundBandwidthPeaked: BOOLEAN,
InboundBandwidthPeaked: BOOLEAN,
}}
pub type PTCP_ESTATS_BANDWIDTH_ROD_v0 = *mut TCP_ESTATS_BANDWIDTH_ROD_v0;
STRUCT!{struct TCP_ESTATS_FINE_RTT_RW_v0 {
EnableCollection: BOOLEAN,
}}
pub type PTCP_ESTATS_FINE_RTT_RW_v0 = *mut TCP_ESTATS_FINE_RTT_RW_v0;
STRUCT!{struct TCP_ESTATS_FINE_RTT_ROD_v0 {
RttVar: ULONG,
MaxRtt: ULONG,
MinRtt: ULONG,
SumRtt: ULONG,
}}
pub type PTCP_ESTATS_FINE_RTT_ROD_v0 = *mut TCP_ESTATS_FINE_RTT_ROD_v0;