// Licensed under the Apache License, Version 2.0
// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
// 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;