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