// Licensed under the Apache License, Version 2.0 // or the MIT license // , at your option. // All files in the project carrying such notice may not be copied, modified, or distributed // except according to those terms. // #include 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;