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 module core.sys.windows.iprtrmib;
11 version (Windows):
12 
13 import core.sys.windows.ipifcons;
14 import core.sys.windows.windef;
15 
16 // FIXME: check types of constants
17 
18 enum 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 enum 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 { 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 { 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 { 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 = 0;
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 { 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 { 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 { return _table.ptr; }
266 }
267 alias MIB_UDPTABLE* PMIB_UDPTABLE;