1/**
2 * Windows API header module
3 *
4 * Translated from MinGW Windows headers
5 *
6 * Authors: Stewart Gordon
7 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost License 1.0)
8 * Source: $(DRUNTIMESRC core/sys/windows/_iprtrmib.d)
9 */
10module core.sys.windows.iprtrmib;
11version (Windows):
12@system:
13
14import core.sys.windows.ipifcons;
15import core.sys.windows.windef;
16
17// FIXME: check types of constants
18
19enum size_t
20    MAXLEN_PHYSADDR        =   8,
21    MAXLEN_IFDESCR         = 256,
22    MAX_INTERFACE_NAME_LEN = 256;
23
24enum {
25    MIB_IPNET_TYPE_OTHER = 1,
26    MIB_IPNET_TYPE_INVALID,
27    MIB_IPNET_TYPE_DYNAMIC,
28    MIB_IPNET_TYPE_STATIC
29}
30
31enum {
32    MIB_TCP_RTO_OTHER = 1,
33    MIB_TCP_RTO_CONSTANT,
34    MIB_TCP_RTO_RSRE,
35    MIB_TCP_RTO_VANJ
36}
37
38enum {
39    MIB_TCP_STATE_CLOSED = 1,
40    MIB_TCP_STATE_LISTEN,
41    MIB_TCP_STATE_SYN_SENT,
42    MIB_TCP_STATE_SYN_RCVD,
43    MIB_TCP_STATE_ESTAB,
44    MIB_TCP_STATE_FIN_WAIT1,
45    MIB_TCP_STATE_FIN_WAIT2,
46    MIB_TCP_STATE_CLOSE_WAIT,
47    MIB_TCP_STATE_CLOSING,
48    MIB_TCP_STATE_LAST_ACK,
49    MIB_TCP_STATE_TIME_WAIT,
50    MIB_TCP_STATE_DELETE_TCB // = 12
51}
52
53enum DWORD
54    MIB_USE_CURRENT_TTL        = -1,
55    MIB_USE_CURRENT_FORWARDING = -1,
56    MIB_TCP_MAXCONN_DYNAMIC    = -1;
57
58struct MIB_IPADDRROW {
59    DWORD  dwAddr;
60    DWORD  dwIndex;
61    DWORD  dwMask;
62    DWORD  dwBCastAddr;
63    DWORD  dwReasmSize;
64    ushort unused1;
65    ushort unused2;
66}
67alias MIB_IPADDRROW* PMIB_IPADDRROW;
68
69struct MIB_IPADDRTABLE {
70    DWORD            dwNumEntries;
71    MIB_IPADDRROW[1] _table;
72
73    MIB_IPADDRROW* table() return { return _table.ptr; }
74}
75alias MIB_IPADDRTABLE* PMIB_IPADDRTABLE;
76
77struct MIB_IPFORWARDROW {
78    DWORD dwForwardDest;
79    DWORD dwForwardMask;
80    DWORD dwForwardPolicy;
81    DWORD dwForwardNextHop;
82    DWORD dwForwardIfIndex;
83    DWORD dwForwardType;
84    DWORD dwForwardProto;
85    DWORD dwForwardAge;
86    DWORD dwForwardNextHopAS;
87    DWORD dwForwardMetric1;
88    DWORD dwForwardMetric2;
89    DWORD dwForwardMetric3;
90    DWORD dwForwardMetric4;
91    DWORD dwForwardMetric5;
92}
93alias MIB_IPFORWARDROW* PMIB_IPFORWARDROW;
94
95struct MIB_IPFORWARDTABLE {
96    DWORD               dwNumEntries;
97    MIB_IPFORWARDROW[1] _table;
98
99    MIB_IPFORWARDROW* table() return { return _table.ptr; }
100}
101alias MIB_IPFORWARDTABLE* PMIB_IPFORWARDTABLE;
102
103struct MIB_IPNETROW {
104    DWORD dwIndex;
105    DWORD dwPhysAddrLen;
106    BYTE[MAXLEN_PHYSADDR] bPhysAddr;
107    DWORD dwAddr;
108    DWORD dwType;
109}
110alias MIB_IPNETROW* PMIB_IPNETROW;
111
112struct MIB_IPNETTABLE {
113    DWORD           dwNumEntries;
114    MIB_IPNETROW[1] _table;
115
116    MIB_IPNETROW* table() return { return _table.ptr; }
117}
118alias MIB_IPNETTABLE* PMIB_IPNETTABLE;
119
120struct MIBICMPSTATS {
121    DWORD dwMsgs;
122    DWORD dwErrors;
123    DWORD dwDestUnreachs;
124    DWORD dwTimeExcds;
125    DWORD dwParmProbs;
126    DWORD dwSrcQuenchs;
127    DWORD dwRedirects;
128    DWORD dwEchos;
129    DWORD dwEchoReps;
130    DWORD dwTimestamps;
131    DWORD dwTimestampReps;
132    DWORD dwAddrMasks;
133    DWORD dwAddrMaskReps;
134}
135alias MIBICMPSTATS* PMIBICMPSTATS;
136
137struct MIBICMPINFO {
138    MIBICMPSTATS icmpInStats;
139    MIBICMPSTATS icmpOutStats;
140}
141alias MIBICMPINFO* PMIBICMPINFO;
142
143struct MIB_ICMP {
144    MIBICMPINFO stats;
145}
146alias MIB_ICMP* PMIB_ICMP;
147
148struct MIB_IFROW {
149    WCHAR[MAX_INTERFACE_NAME_LEN] wszName = 0;
150    DWORD dwIndex;
151    DWORD dwType;
152    DWORD dwMtu;
153    DWORD dwSpeed;
154    DWORD dwPhysAddrLen;
155    BYTE[MAXLEN_PHYSADDR] bPhysAddr;
156    DWORD dwAdminStatus;
157    DWORD dwOperStatus;
158    DWORD dwLastChange;
159    DWORD dwInOctets;
160    DWORD dwInUcastPkts;
161    DWORD dwInNUcastPkts;
162    DWORD dwInDiscards;
163    DWORD dwInErrors;
164    DWORD dwInUnknownProtos;
165    DWORD dwOutOctets;
166    DWORD dwOutUcastPkts;
167    DWORD dwOutNUcastPkts;
168    DWORD dwOutDiscards;
169    DWORD dwOutErrors;
170    DWORD dwOutQLen;
171    DWORD dwDescrLen;
172    BYTE[MAXLEN_IFDESCR] bDescr;
173}
174alias MIB_IFROW* PMIB_IFROW;
175
176struct MIB_IFTABLE {
177    DWORD        dwNumEntries;
178    MIB_IFROW[1] _table;
179
180    MIB_IFROW* table() return { return _table.ptr; }
181}
182alias MIB_IFTABLE* PMIB_IFTABLE;
183
184struct MIB_IPSTATS {
185    DWORD dwForwarding;
186    DWORD dwDefaultTTL;
187    DWORD dwInReceives;
188    DWORD dwInHdrErrors;
189    DWORD dwInAddrErrors;
190    DWORD dwForwDatagrams;
191    DWORD dwInUnknownProtos;
192    DWORD dwInDiscards;
193    DWORD dwInDelivers;
194    DWORD dwOutRequests;
195    DWORD dwRoutingDiscards;
196    DWORD dwOutDiscards;
197    DWORD dwOutNoRoutes;
198    DWORD dwReasmTimeout;
199    DWORD dwReasmReqds;
200    DWORD dwReasmOks;
201    DWORD dwReasmFails;
202    DWORD dwFragOks;
203    DWORD dwFragFails;
204    DWORD dwFragCreates;
205    DWORD dwNumIf;
206    DWORD dwNumAddr;
207    DWORD dwNumRoutes;
208}
209alias MIB_IPSTATS* PMIB_IPSTATS;
210
211struct MIB_TCPSTATS {
212    DWORD dwRtoAlgorithm;
213    DWORD dwRtoMin;
214    DWORD dwRtoMax;
215    DWORD dwMaxConn;
216    DWORD dwActiveOpens;
217    DWORD dwPassiveOpens;
218    DWORD dwAttemptFails;
219    DWORD dwEstabResets;
220    DWORD dwCurrEstab;
221    DWORD dwInSegs;
222    DWORD dwOutSegs;
223    DWORD dwRetransSegs;
224    DWORD dwInErrs;
225    DWORD dwOutRsts;
226    DWORD dwNumConns;
227}
228alias MIB_TCPSTATS* PMIB_TCPSTATS;
229
230struct MIB_TCPROW {
231    DWORD dwState;
232    DWORD dwLocalAddr;
233    DWORD dwLocalPort;
234    DWORD dwRemoteAddr;
235    DWORD dwRemotePort;
236}
237alias MIB_TCPROW* PMIB_TCPROW;
238
239struct MIB_TCPTABLE {
240    DWORD         dwNumEntries;
241    MIB_TCPROW[1] _table;
242
243    MIB_TCPROW* table() return { return _table.ptr; }
244}
245alias MIB_TCPTABLE* PMIB_TCPTABLE;
246
247struct MIB_UDPSTATS {
248    DWORD dwInDatagrams;
249    DWORD dwNoPorts;
250    DWORD dwInErrors;
251    DWORD dwOutDatagrams;
252    DWORD dwNumAddrs;
253}
254alias MIB_UDPSTATS* PMIB_UDPSTATS;
255
256struct MIB_UDPROW {
257    DWORD dwLocalAddr;
258    DWORD dwLocalPort;
259}
260alias MIB_UDPROW* PMIB_UDPROW;
261
262struct MIB_UDPTABLE {
263    DWORD         dwNumEntries;
264    MIB_UDPROW[1] _table;
265
266    MIB_UDPROW* table() return { return _table.ptr; }
267}
268alias MIB_UDPTABLE* PMIB_UDPTABLE;
269