winapi_ui_automation/shared/
tcpmib.rs

1// Licensed under the Apache License, Version 2.0
2// <LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
3// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your option.
4// All files in the project carrying such notice may not be copied, modified, or distributed
5// except according to those terms.
6// #include <winapifamily.h>
7use shared::basetsd::DWORD64;
8use shared::in6addr::IN6_ADDR;
9use shared::minwindef::DWORD;
10use shared::ntdef::{LARGE_INTEGER, UCHAR, ULONGLONG};
11const ANY_SIZE: usize = 1;
12pub const TCPIP_OWNING_MODULE_SIZE: usize = 16;
13ENUM!{enum MIB_TCP_STATE {
14    MIB_TCP_STATE_CLOSED = 1,
15    MIB_TCP_STATE_LISTEN = 2,
16    MIB_TCP_STATE_SYN_SENT = 3,
17    MIB_TCP_STATE_SYN_RCVD = 4,
18    MIB_TCP_STATE_ESTAB = 5,
19    MIB_TCP_STATE_FIN_WAIT1 = 6,
20    MIB_TCP_STATE_FIN_WAIT2 = 7,
21    MIB_TCP_STATE_CLOSE_WAIT = 8,
22    MIB_TCP_STATE_CLOSING = 9,
23    MIB_TCP_STATE_LAST_ACK = 10,
24    MIB_TCP_STATE_TIME_WAIT = 11,
25    MIB_TCP_STATE_DELETE_TCB = 12,
26    MIB_TCP_STATE_RESERVED = 100,
27}}
28ENUM!{enum TCP_CONNECTION_OFFLOAD_STATE {
29    TcpConnectionOffloadStateInHost = 0,
30    TcpConnectionOffloadStateOffloading = 1,
31    TcpConnectionOffloadStateOffloaded = 2,
32    TcpConnectionOffloadStateUploading = 3,
33    TcpConnectionOffloadStateMax = 4,
34}}
35pub type PTCP_CONNECTION_OFFLOAD_STATE = *mut TCP_CONNECTION_OFFLOAD_STATE;
36STRUCT!{struct MIB_TCPROW_LH {
37    State: MIB_TCP_STATE,
38    dwLocalAddr: DWORD,
39    dwLocalPort: DWORD,
40    dwRemoteAddr: DWORD,
41    dwRemotePort: DWORD,
42}}
43pub type PMIB_TCPROW_LH = *mut MIB_TCPROW_LH;
44STRUCT!{struct MIB_TCPROW_W2K {
45    dwState: DWORD,
46    dwLocalAddr: DWORD,
47    dwLocalPort: DWORD,
48    dwRemoteAddr: DWORD,
49    dwRemotePort: DWORD,
50}}
51pub type PMIB_TCPROW_W2K = *mut MIB_TCPROW_W2K;
52pub type MIB_TCPROW = MIB_TCPROW_LH;
53pub type PMIB_TCPROW = *mut MIB_TCPROW;
54STRUCT!{struct MIB_TCPTABLE {
55    dwNumEntries: DWORD,
56    table: [MIB_TCPROW; ANY_SIZE],
57}}
58pub type PMIB_TCPTABLE = *mut MIB_TCPTABLE;
59// FIXME: SIZEOF_TCPTABLE(x)
60STRUCT!{struct MIB_TCPROW2 {
61    dwState: DWORD,
62    dwLocalAddr: DWORD,
63    dwLocalPort: DWORD,
64    dwRemoteAddr: DWORD,
65    dwRemotePort: DWORD,
66    dwOwningPid: DWORD,
67    dwOffloadState: TCP_CONNECTION_OFFLOAD_STATE,
68}}
69pub type PMIB_TCPROW2 = *mut MIB_TCPROW2;
70STRUCT!{struct MIB_TCPTABLE2 {
71    dwNumEntries: DWORD,
72    table: [MIB_TCPROW2; ANY_SIZE],
73}}
74pub type PMIB_TCPTABLE2 = *mut MIB_TCPTABLE2;
75// FIXME: SIZEOF_TCPTABLE2(x)
76STRUCT!{struct MIB_TCPROW_OWNER_PID {
77    dwState: DWORD,
78    dwLocalAddr: DWORD,
79    dwLocalPort: DWORD,
80    dwRemoteAddr: DWORD,
81    dwRemotePort: DWORD,
82    dwOwningPid: DWORD,
83}}
84pub type PMIB_TCPROW_OWNER_PID = *mut MIB_TCPROW_OWNER_PID;
85STRUCT!{struct MIB_TCPTABLE_OWNER_PID {
86    dwNumEntries: DWORD,
87    table: [MIB_TCPROW_OWNER_PID; ANY_SIZE],
88}}
89pub type PMIB_TCPTABLE_OWNER_PID = *mut MIB_TCPTABLE_OWNER_PID;
90// FIXME: SIZEOF_TCPTABLE_OWNER_PID(x)
91STRUCT!{struct MIB_TCPROW_OWNER_MODULE {
92    dwState: DWORD,
93    dwLocalAddr: DWORD,
94    dwLocalPort: DWORD,
95    dwRemoteAddr: DWORD,
96    dwRemotePort: DWORD,
97    dwOwningPid: DWORD,
98    liCreateTimestamp: LARGE_INTEGER,
99    OwningModuleInfo: [ULONGLONG; TCPIP_OWNING_MODULE_SIZE],
100}}
101pub type PMIB_TCPROW_OWNER_MODULE = *mut MIB_TCPROW_OWNER_MODULE;
102STRUCT!{struct MIB_TCPTABLE_OWNER_MODULE {
103    dwNumEntries: DWORD,
104    table: [MIB_TCPROW_OWNER_MODULE; ANY_SIZE],
105}}
106pub type PMIB_TCPTABLE_OWNER_MODULE = *mut MIB_TCPTABLE_OWNER_MODULE;
107// FIXME: SIZEOF_TCPTABLE_OWNER_MODULE(x)
108STRUCT!{struct MIB_TCP6ROW {
109    State: MIB_TCP_STATE,
110    LocalAddr: IN6_ADDR,
111    dwLocalScopeId: DWORD,
112    dwLocalPort: DWORD,
113    RemoteAddr: IN6_ADDR,
114    dwRemoteScopeId: DWORD,
115    dwRemotePort: DWORD,
116}}
117pub type PMIB_TCP6ROW = *mut MIB_TCP6ROW;
118STRUCT!{struct MIB_TCP6TABLE {
119    dwNumEntries: DWORD,
120    table: [MIB_TCP6ROW; ANY_SIZE],
121}}
122pub type PMIB_TCP6TABLE = *mut MIB_TCP6TABLE;
123// FIXME: SIZEOF_TCP6TABLE(x)
124STRUCT!{struct MIB_TCP6ROW2 {
125    LocalAddr: IN6_ADDR,
126    dwLocalScopeId: DWORD,
127    dwLocalPort: DWORD,
128    RemoteAddr: IN6_ADDR,
129    dwRemoteScopeId: DWORD,
130    dwRemotePort: DWORD,
131    State: MIB_TCP_STATE,
132    dwOwningPid: DWORD,
133    dwOffloadState: TCP_CONNECTION_OFFLOAD_STATE,
134}}
135pub type PMIB_TCP6ROW2 = *mut MIB_TCP6ROW2;
136STRUCT!{struct MIB_TCP6TABLE2 {
137    dwNumEntries: DWORD,
138    table: [MIB_TCP6ROW2; ANY_SIZE],
139}}
140pub type PMIB_TCP6TABLE2 = *mut MIB_TCP6TABLE2;
141// FIXME: SIZEOF_TCP6TABLE2(x)
142STRUCT!{struct MIB_TCP6ROW_OWNER_PID {
143    ucLocalAddr: [UCHAR; 16],
144    dwLocalScopeId: DWORD,
145    dwLocalPort: DWORD,
146    ucRemoteAddr: [UCHAR; 16],
147    dwRemoteScopeId: DWORD,
148    dwRemotePort: DWORD,
149    dwState: DWORD,
150    dwOwningPid: DWORD,
151}}
152pub type PMIB_TCP6ROW_OWNER_PID = *mut MIB_TCP6ROW_OWNER_PID;
153STRUCT!{struct MIB_TCP6TABLE_OWNER_PID {
154    dwNumEntries: DWORD,
155    table: [MIB_TCP6ROW_OWNER_PID; ANY_SIZE],
156}}
157pub type PMIB_TCP6TABLE_OWNER_PID = *mut MIB_TCP6TABLE_OWNER_PID;
158// FIXME: SIZEOF_TCP6TABLE_OWNER_PID(x)
159STRUCT!{struct MIB_TCP6ROW_OWNER_MODULE {
160    ucLocalAddr: [UCHAR; 16],
161    dwLocalScopeId: DWORD,
162    dwLocalPort: DWORD,
163    ucRemoteAddr: [UCHAR; 16],
164    dwRemoteScopeId: DWORD,
165    dwRemotePort: DWORD,
166    dwState: DWORD,
167    dwOwningPid: DWORD,
168    liCreateTimestamp: LARGE_INTEGER,
169    OwningModuleInfo: [ULONGLONG; TCPIP_OWNING_MODULE_SIZE],
170}}
171pub type PMIB_TCP6ROW_OWNER_MODULE = *mut MIB_TCP6ROW_OWNER_MODULE;
172STRUCT!{struct MIB_TCP6TABLE_OWNER_MODULE {
173    dwNumEntries: DWORD,
174    table: [MIB_TCP6ROW_OWNER_MODULE; ANY_SIZE],
175}}
176pub type PMIB_TCP6TABLE_OWNER_MODULE = *mut MIB_TCP6TABLE_OWNER_MODULE;
177// FIXME: SIZEOF_TCP6TABLE_OWNER_MODULE(x)
178ENUM!{enum TCP_RTO_ALGORITHM {
179    TcpRtoAlgorithmOther = 1,
180    TcpRtoAlgorithmConstant = 2,
181    TcpRtoAlgorithmRsre = 3,
182    TcpRtoAlgorithmVanj = 4,
183    MIB_TCP_RTO_OTHER = 1,
184    MIB_TCP_RTO_CONSTANT = 2,
185    MIB_TCP_RTO_RSRE = 3,
186    MIB_TCP_RTO_VANJ = 4,
187}}
188pub type PTCP_RTO_ALGORITHM = *mut TCP_RTO_ALGORITHM;
189STRUCT!{struct MIB_TCPSTATS_LH {
190    RtoAlgorithm: TCP_RTO_ALGORITHM,
191    dwRtoMin: DWORD,
192    dwRtoMax: DWORD,
193    dwMaxConn: DWORD,
194    dwActiveOpens: DWORD,
195    dwPassiveOpens: DWORD,
196    dwAttemptFails: DWORD,
197    dwEstabResets: DWORD,
198    dwCurrEstab: DWORD,
199    dwInSegs: DWORD,
200    dwOutSegs: DWORD,
201    dwRetransSegs: DWORD,
202    dwInErrs: DWORD,
203    dwOutRsts: DWORD,
204    dwNumConns: DWORD,
205}}
206pub type PMIB_TCPSTATS_LH = *mut MIB_TCPSTATS_LH;
207STRUCT!{struct MIB_TCPSTATS_W2K {
208    dwRtoAlgorithm: DWORD,
209    dwRtoMin: DWORD,
210    dwRtoMax: DWORD,
211    dwMaxConn: DWORD,
212    dwActiveOpens: DWORD,
213    dwPassiveOpens: DWORD,
214    dwAttemptFails: DWORD,
215    dwEstabResets: DWORD,
216    dwCurrEstab: DWORD,
217    dwInSegs: DWORD,
218    dwOutSegs: DWORD,
219    dwRetransSegs: DWORD,
220    dwInErrs: DWORD,
221    dwOutRsts: DWORD,
222    dwNumConns: DWORD,
223}}
224pub type PMIB_TCPSTATS_W2K = *mut MIB_TCPSTATS_W2K;
225pub type MIB_TCPSTATS = MIB_TCPSTATS_LH;
226pub type PMIB_TCPSTATS = *mut MIB_TCPSTATS;
227STRUCT!{struct MIB_TCPSTATS2 {
228    RtoAlgorithm: TCP_RTO_ALGORITHM,
229    dwRtoMin: DWORD,
230    dwRtoMax: DWORD,
231    dwMaxConn: DWORD,
232    dwActiveOpens: DWORD,
233    dwPassiveOpens: DWORD,
234    dwAttemptFails: DWORD,
235    dwEstabResets: DWORD,
236    dwCurrEstab: DWORD,
237    dw64InSegs: DWORD64,
238    dw64OutSegs: DWORD64,
239    dwRetransSegs: DWORD,
240    dwInErrs: DWORD,
241    dwOutRsts: DWORD,
242    dwNumConns: DWORD,
243}}
244pub type PMIB_TCPSTATS2 = *mut MIB_TCPSTATS2;