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