xref: /reactos/sdk/include/psdk/tcpmib.h (revision c2c66aff)
1 /*
2  * Copyright (C) 2003 Juan Lang
3  *
4  * This library is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * This library is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with this library; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
17  */
18 #ifndef __WINE_TCPMIB_H
19 #define __WINE_TCPMIB_H
20 
21 #define TCPIP_OWNING_MODULE_SIZE 16
22 
23 
24 /* TCP tables */
25 
26 typedef enum
27 {
28     MIB_TCP_STATE_CLOSED = 1,
29     MIB_TCP_STATE_LISTEN = 2,
30     MIB_TCP_STATE_SYN_SENT = 3,
31     MIB_TCP_STATE_SYN_RCVD = 4,
32     MIB_TCP_STATE_ESTAB = 5,
33     MIB_TCP_STATE_FIN_WAIT1 = 6,
34     MIB_TCP_STATE_FIN_WAIT2 = 7,
35     MIB_TCP_STATE_CLOSE_WAIT = 8,
36     MIB_TCP_STATE_CLOSING = 9,
37     MIB_TCP_STATE_LAST_ACK = 10,
38     MIB_TCP_STATE_TIME_WAIT = 11,
39     MIB_TCP_STATE_DELETE_TCB = 12,
40 } MIB_TCP_STATE;
41 
42 typedef enum
43 {
44     TcpConnectionOffloadStateInHost,
45     TcpConnectionOffloadStateOffloading,
46     TcpConnectionOffloadStateOffloaded,
47     TcpConnectionOffloadStateUploading,
48     TcpConnectionOffloadStateMax,
49 } TCP_CONNECTION_OFFLOAD_STATE, *PTCP_CONNECTION_OFFLOAD_STATE;
50 
51 typedef struct _MIB_TCPROW
52 {
53     union
54     {
55         DWORD         dwState;
56         MIB_TCP_STATE State;
57     } DUMMYUNIONNAME;
58     DWORD dwLocalAddr;
59     DWORD dwLocalPort;
60     DWORD dwRemoteAddr;
61     DWORD dwRemotePort;
62 } MIB_TCPROW, *PMIB_TCPROW;
63 
64 typedef struct _MIB_TCPTABLE
65 {
66     DWORD      dwNumEntries;
67     MIB_TCPROW table[1];
68 } MIB_TCPTABLE, *PMIB_TCPTABLE;
69 
70 typedef struct _MIB_TCP6ROW {
71     MIB_TCP_STATE State;
72     IN6_ADDR LocalAddr;
73     DWORD dwLocalScopeId;
74     DWORD dwLocalPort;
75     IN6_ADDR RemoteAddr;
76     DWORD dwRemoteScopeId;
77     DWORD dwRemotePort;
78 } MIB_TCP6ROW, *PMIB_TCP6ROW;
79 
80 typedef struct _MIB_TCP6TABLE {
81     DWORD dwNumEntries;
82     MIB_TCP6ROW table[1];
83 } MIB_TCP6TABLE, *PMIB_TCP6TABLE;
84 
85 typedef struct _MIB_TCP6ROW2 {
86     IN6_ADDR LocalAddr;
87     DWORD dwLocalScopeId;
88     DWORD dwLocalPort;
89     IN6_ADDR RemoteAddr;
90     DWORD dwRemoteScopeId;
91     DWORD dwRemotePort;
92     MIB_TCP_STATE State;
93     DWORD dwOwningPid;
94     TCP_CONNECTION_OFFLOAD_STATE dwOffloadState;
95 } MIB_TCP6ROW2, *PMIB_TCP6ROW2;
96 
97 typedef struct _MIB_TCP6TABLE2 {
98     DWORD dwNumEntries;
99     MIB_TCP6ROW2 table[1];
100 } MIB_TCP6TABLE2, *PMIB_TCP6TABLE2;
101 
102 typedef struct _MIB_TCPROW_OWNER_PID
103 {
104     DWORD dwState;
105     DWORD dwLocalAddr;
106     DWORD dwLocalPort;
107     DWORD dwRemoteAddr;
108     DWORD dwRemotePort;
109     DWORD dwOwningPid;
110 } MIB_TCPROW_OWNER_PID, *PMIB_TCPROW_OWNER_PID;
111 
112 typedef struct _MIB_TCPTABLE_OWNER_PID
113 {
114     DWORD                dwNumEntries;
115     MIB_TCPROW_OWNER_PID table[1];
116 } MIB_TCPTABLE_OWNER_PID, *PMIB_TCPTABLE_OWNER_PID;
117 
118 typedef struct _MIB_TCPROW_OWNER_MODULE
119 {
120     DWORD         dwState;
121     DWORD         dwLocalAddr;
122     DWORD         dwLocalPort;
123     DWORD         dwRemoteAddr;
124     DWORD         dwRemotePort;
125     DWORD         dwOwningPid;
126     LARGE_INTEGER liCreateTimestamp;
127     ULONGLONG     OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE];
128 } MIB_TCPROW_OWNER_MODULE, *PMIB_TCPROW_OWNER_MODULE;
129 
130 typedef struct _MIB_TCPTABLE_OWNER_MODULE
131 {
132     DWORD                   dwNumEntries;
133     MIB_TCPROW_OWNER_MODULE table[1];
134 } MIB_TCPTABLE_OWNER_MODULE, *PMIB_TCPTABLE_OWNER_MODULE;
135 
136 typedef struct _MIB_TCPROW2
137 {
138     DWORD dwState;
139     DWORD dwLocalAddr;
140     DWORD dwLocalPort;
141     DWORD dwRemoteAddr;
142     DWORD dwRemotePort;
143     DWORD dwOwningPid;
144     TCP_CONNECTION_OFFLOAD_STATE dwOffloadState;
145 } MIB_TCPROW2, *PMIB_TCPROW2;
146 
147 typedef struct _MIB_TCPTABLE2
148 {
149     DWORD       dwNumEntries;
150     MIB_TCPROW2 table[1];
151 } MIB_TCPTABLE2, *PMIB_TCPTABLE2;
152 
153 
154 /* TCP stats */
155 
156 typedef enum
157 {
158     TcpRtoAlgorithmOther = 0,
159     TcpRtoAlgorithmConstant = 1,
160     TcpRtoAlgorithmRsre = 2,
161     TcpRtoAlgorithmVanj = 3,
162 
163     MIB_TCP_RTO_OTHER = 1,
164     MIB_TCP_RTO_CONSTANT = 2,
165     MIB_TCP_RTO_RSRE = 3,
166     MIB_TCP_RTO_VANJ = 4,
167 } TCP_RTO_ALGORITHM, *PTCP_RTO_ALGORITHM;
168 
169 typedef struct _MIB_TCPSTATS
170 {
171     union
172     {
173         DWORD             dwRtoAlgorithm;
174         TCP_RTO_ALGORITHM RtoAlgorithm;
175     } DUMMYUNIONNAME;
176     DWORD dwRtoMin;
177     DWORD dwRtoMax;
178     DWORD dwMaxConn;
179     DWORD dwActiveOpens;
180     DWORD dwPassiveOpens;
181     DWORD dwAttemptFails;
182     DWORD dwEstabResets;
183     DWORD dwCurrEstab;
184     DWORD dwInSegs;
185     DWORD dwOutSegs;
186     DWORD dwRetransSegs;
187     DWORD dwInErrs;
188     DWORD dwOutRsts;
189     DWORD dwNumConns;
190 } MIB_TCPSTATS, *PMIB_TCPSTATS;
191 
192 #endif /* __WINE_TCPMIB_H */
193