[HEADERS]
[reactos.git] / reactos / include / psdk / iprtrmib.h
1 /* WINE iprtrmib.h
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 Street, Fifth Floor, Boston, MA 02110-1301 USA
17 */
18 #ifndef WINE_IPRTRMIB_H__
19 #define WINE_IPRTRMIB_H__
20
21 #define MAX_INTERFACE_NAME_LEN 256
22
23 #include <ipifcons.h>
24
25 #define MAXLEN_IFDESCR 256
26 #define MAXLEN_PHYSADDR 8
27
28 //It should be 16 according to Lei Shen blog (http://www.mychinaworks.com/blog/lshen/2008/04/16/220/
29 #define TCPIP_OWNING_MODULE_SIZE 16
30
31 typedef struct _MIB_IFROW
32 {
33 WCHAR wszName[MAX_INTERFACE_NAME_LEN];
34 DWORD dwIndex;
35 DWORD dwType;
36 DWORD dwMtu;
37 DWORD dwSpeed;
38 DWORD dwPhysAddrLen;
39 BYTE bPhysAddr[MAXLEN_PHYSADDR];
40 DWORD dwAdminStatus;
41 DWORD dwOperStatus;
42 DWORD dwLastChange;
43 DWORD dwInOctets;
44 DWORD dwInUcastPkts;
45 DWORD dwInNUcastPkts;
46 DWORD dwInDiscards;
47 DWORD dwInErrors;
48 DWORD dwInUnknownProtos;
49 DWORD dwOutOctets;
50 DWORD dwOutUcastPkts;
51 DWORD dwOutNUcastPkts;
52 DWORD dwOutDiscards;
53 DWORD dwOutErrors;
54 DWORD dwOutQLen;
55 DWORD dwDescrLen;
56 BYTE bDescr[MAXLEN_IFDESCR];
57 } MIB_IFROW,*PMIB_IFROW;
58
59 typedef struct _MIB_IFTABLE
60 {
61 DWORD dwNumEntries;
62 MIB_IFROW table[1];
63 } MIB_IFTABLE, *PMIB_IFTABLE;
64
65 typedef struct _MIBICMPSTATS
66 {
67 DWORD dwMsgs;
68 DWORD dwErrors;
69 DWORD dwDestUnreachs;
70 DWORD dwTimeExcds;
71 DWORD dwParmProbs;
72 DWORD dwSrcQuenchs;
73 DWORD dwRedirects;
74 DWORD dwEchos;
75 DWORD dwEchoReps;
76 DWORD dwTimestamps;
77 DWORD dwTimestampReps;
78 DWORD dwAddrMasks;
79 DWORD dwAddrMaskReps;
80 } MIBICMPSTATS;
81
82 typedef struct _MIBICMPINFO
83 {
84 MIBICMPSTATS icmpInStats;
85 MIBICMPSTATS icmpOutStats;
86 } MIBICMPINFO;
87
88 typedef struct _MIB_ICMP
89 {
90 MIBICMPINFO stats;
91 } MIB_ICMP,*PMIB_ICMP;
92
93 typedef struct _MIB_UDPSTATS
94 {
95 DWORD dwInDatagrams;
96 DWORD dwNoPorts;
97 DWORD dwInErrors;
98 DWORD dwOutDatagrams;
99 DWORD dwNumAddrs;
100 } MIB_UDPSTATS,*PMIB_UDPSTATS;
101
102 typedef struct _MIB_UDPROW
103 {
104 DWORD dwLocalAddr;
105 DWORD dwLocalPort;
106 } MIB_UDPROW, *PMIB_UDPROW;
107
108 typedef struct _MIB_UDPTABLE
109 {
110 DWORD dwNumEntries;
111 MIB_UDPROW table[1];
112 } MIB_UDPTABLE, *PMIB_UDPTABLE;
113
114 typedef struct _MIB_TCPSTATS
115 {
116 DWORD dwRtoAlgorithm;
117 DWORD dwRtoMin;
118 DWORD dwRtoMax;
119 DWORD dwMaxConn;
120 DWORD dwActiveOpens;
121 DWORD dwPassiveOpens;
122 DWORD dwAttemptFails;
123 DWORD dwEstabResets;
124 DWORD dwCurrEstab;
125 DWORD dwInSegs;
126 DWORD dwOutSegs;
127 DWORD dwRetransSegs;
128 DWORD dwInErrs;
129 DWORD dwOutRsts;
130 DWORD dwNumConns;
131 } MIB_TCPSTATS, *PMIB_TCPSTATS;
132
133 typedef struct _MIBICMPSTATS_EX
134 {
135 DWORD dwMsgs;
136 DWORD dwErrors;
137 DWORD rgdwTypeCount[256];
138 } MIBICMPSTATS_EX, *PMIBICMPSTATS_EX;
139
140 typedef struct _MIB_ICMP_EX
141 {
142 MIBICMPSTATS_EX icmpInStats;
143 MIBICMPSTATS_EX icmpOutStats;
144 } MIB_ICMP_EX,*PMIB_ICMP_EX;
145
146 typedef struct _MIB_TCPROW
147 {
148 DWORD dwState;
149 DWORD dwLocalAddr;
150 DWORD dwLocalPort;
151 DWORD dwRemoteAddr;
152 DWORD dwRemotePort;
153 } MIB_TCPROW, *PMIB_TCPROW;
154
155 #define MIB_TCP_STATE_CLOSED 1
156 #define MIB_TCP_STATE_LISTEN 2
157 #define MIB_TCP_STATE_SYN_SENT 3
158 #define MIB_TCP_STATE_SYN_RCVD 4
159 #define MIB_TCP_STATE_ESTAB 5
160 #define MIB_TCP_STATE_FIN_WAIT1 6
161 #define MIB_TCP_STATE_FIN_WAIT2 7
162 #define MIB_TCP_STATE_CLOSE_WAIT 8
163 #define MIB_TCP_STATE_CLOSING 9
164 #define MIB_TCP_STATE_LAST_ACK 10
165 #define MIB_TCP_STATE_TIME_WAIT 11
166 #define MIB_TCP_STATE_DELETE_TCB 12
167
168 typedef struct _MIB_TCPTABLE
169 {
170 DWORD dwNumEntries;
171 MIB_TCPROW table[1];
172 } MIB_TCPTABLE, *PMIB_TCPTABLE;
173
174 typedef struct _MIB_IPSTATS
175 {
176 DWORD dwForwarding;
177 DWORD dwDefaultTTL;
178 DWORD dwInReceives;
179 DWORD dwInHdrErrors;
180 DWORD dwInAddrErrors;
181 DWORD dwForwDatagrams;
182 DWORD dwInUnknownProtos;
183 DWORD dwInDiscards;
184 DWORD dwInDelivers;
185 DWORD dwOutRequests;
186 DWORD dwRoutingDiscards;
187 DWORD dwOutDiscards;
188 DWORD dwOutNoRoutes;
189 DWORD dwReasmTimeout;
190 DWORD dwReasmReqds;
191 DWORD dwReasmOks;
192 DWORD dwReasmFails;
193 DWORD dwFragOks;
194 DWORD dwFragFails;
195 DWORD dwFragCreates;
196 DWORD dwNumIf;
197 DWORD dwNumAddr;
198 DWORD dwNumRoutes;
199 } MIB_IPSTATS, *PMIB_IPSTATS;
200
201 typedef struct _MIB_IPADDRROW
202 {
203 DWORD dwAddr;
204 DWORD dwIndex;
205 DWORD dwMask;
206 DWORD dwBCastAddr;
207 DWORD dwReasmSize;
208 unsigned short unused1;
209 unsigned short wType;
210 } MIB_IPADDRROW, *PMIB_IPADDRROW;
211
212 typedef struct _MIB_IPADDRTABLE
213 {
214 DWORD dwNumEntries;
215 MIB_IPADDRROW table[1];
216 } MIB_IPADDRTABLE, *PMIB_IPADDRTABLE;
217
218
219 typedef struct _MIB_IPFORWARDNUMBER
220 {
221 DWORD dwValue;
222 }MIB_IPFORWARDNUMBER,*PMIB_IPFORWARDNUMBER;
223
224 typedef struct _MIB_IPFORWARDROW
225 {
226 DWORD dwForwardDest;
227 DWORD dwForwardMask;
228 DWORD dwForwardPolicy;
229 DWORD dwForwardNextHop;
230 DWORD dwForwardIfIndex;
231 DWORD dwForwardType;
232 DWORD dwForwardProto;
233 DWORD dwForwardAge;
234 DWORD dwForwardNextHopAS;
235 DWORD dwForwardMetric1;
236 DWORD dwForwardMetric2;
237 DWORD dwForwardMetric3;
238 DWORD dwForwardMetric4;
239 DWORD dwForwardMetric5;
240 }MIB_IPFORWARDROW, *PMIB_IPFORWARDROW;
241
242 #define MIB_IPROUTE_TYPE_OTHER 1
243 #define MIB_IPROUTE_TYPE_INVALID 2
244 #define MIB_IPROUTE_TYPE_DIRECT 3
245 #define MIB_IPROUTE_TYPE_INDIRECT 4
246
247 #define MIB_IPPROTO_OTHER 1
248 #define MIB_IPPROTO_LOCAL 2
249 #define MIB_IPPROTO_NETMGMT 3
250 #define MIB_IPPROTO_ICMP 4
251 #define MIB_IPPROTO_EGP 5
252 #define MIB_IPPROTO_GGP 6
253 #define MIB_IPPROTO_HELLO 7
254 #define MIB_IPPROTO_RIP 8
255 #define MIB_IPPROTO_IS_IS 9
256 #define MIB_IPPROTO_ES_IS 10
257 #define MIB_IPPROTO_CISCO 11
258 #define MIB_IPPROTO_BBN 12
259 #define MIB_IPPROTO_OSPF 13
260 #define MIB_IPPROTO_BGP 14
261
262 #define MIB_IPPROTO_NT_AUTOSTATIC 10002
263 #define MIB_IPPROTO_NT_STATIC 10006
264 #define MIB_IPPROTO_NT_STATIC_NON_DOD 10007
265
266 typedef struct _MIB_IPFORWARDTABLE
267 {
268 DWORD dwNumEntries;
269 MIB_IPFORWARDROW table[1];
270 } MIB_IPFORWARDTABLE, *PMIB_IPFORWARDTABLE;
271
272 typedef struct _MIB_IPNETROW
273 {
274 DWORD dwIndex;
275 DWORD dwPhysAddrLen;
276 BYTE bPhysAddr[MAXLEN_PHYSADDR];
277 DWORD dwAddr;
278 DWORD dwType;
279 } MIB_IPNETROW, *PMIB_IPNETROW;
280
281 #define MIB_IPNET_TYPE_OTHER 1
282 #define MIB_IPNET_TYPE_INVALID 2
283 #define MIB_IPNET_TYPE_DYNAMIC 3
284 #define MIB_IPNET_TYPE_STATIC 4
285
286 typedef struct _MIB_IPNETTABLE
287 {
288 DWORD dwNumEntries;
289 MIB_IPNETROW table[1];
290 } MIB_IPNETTABLE, *PMIB_IPNETTABLE;
291
292 typedef struct _MIB_TCPROW_OWNER_MODULE {
293 DWORD dwState;
294 DWORD dwLocalAddr;
295 DWORD dwLocalPort;
296 DWORD dwRemoteAddr;
297 DWORD dwRemotePort;
298 DWORD dwOwningPid;
299 LARGE_INTEGER liCreateTimestamp;
300 ULONGLONG OwningModuleInfo[TCPIP_OWNING_MODULE_SIZE];
301 } MIB_TCPROW_OWNER_MODULE, *PMIB_TCPROW_OWNER_MODULE;
302
303 typedef enum {
304 TCPIP_OWNER_MODULE_INFO_BASIC
305 } TCPIP_OWNER_MODULE_INFO_CLASS, *PTCPIP_OWNER_MODULE_INFO_CLASS;
306
307 typedef enum {
308 TCP_TABLE_BASIC_LISTENER,
309 TCP_TABLE_BASIC_CONNECTIONS,
310 TCP_TABLE_BASIC_ALL,
311 TCP_TABLE_OWNER_PID_LISTENER,
312 TCP_TABLE_OWNER_PID_CONNECTIONS,
313 TCP_TABLE_OWNER_PID_ALL,
314 TCP_TABLE_OWNER_MODULE_LISTENER,
315 TCP_TABLE_OWNER_MODULE_CONNECTIONS,
316 TCP_TABLE_OWNER_MODULE_ALL
317 } TCP_TABLE_CLASS, *PTCP_TABLE_CLASS;
318
319 #endif /* WINE_IPRTRMIB_H__ */