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 win32.iprtrmib; 12 version(Windows): 13 14 import win32.ipifcons; 15 private import win32.windef; 16 17 // FIXME: check types of constants 18 19 const size_t 20 MAXLEN_PHYSADDR = 8, 21 MAXLEN_IFDESCR = 256, 22 MAX_INTERFACE_NAME_LEN = 256; 23 24 enum { 25 MIB_IPNET_TYPE_OTHER = 1, 26 MIB_IPNET_TYPE_INVALID, 27 MIB_IPNET_TYPE_DYNAMIC, 28 MIB_IPNET_TYPE_STATIC 29 } 30 31 enum { 32 MIB_TCP_RTO_OTHER = 1, 33 MIB_TCP_RTO_CONSTANT, 34 MIB_TCP_RTO_RSRE, 35 MIB_TCP_RTO_VANJ 36 } 37 38 enum { 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 53 const DWORD 54 MIB_USE_CURRENT_TTL = -1, 55 MIB_USE_CURRENT_FORWARDING = -1, 56 MIB_TCP_MAXCONN_DYNAMIC = -1; 57 58 struct MIB_IPADDRROW { 59 DWORD dwAddr; 60 DWORD dwIndex; 61 DWORD dwMask; 62 DWORD dwBCastAddr; 63 DWORD dwReasmSize; 64 ushort unused1; 65 ushort unused2; 66 } 67 alias MIB_IPADDRROW* PMIB_IPADDRROW; 68 69 struct MIB_IPADDRTABLE { 70 DWORD dwNumEntries; 71 MIB_IPADDRROW[1] _table; 72 73 MIB_IPADDRROW* table() { return _table.ptr; } 74 } 75 alias MIB_IPADDRTABLE* PMIB_IPADDRTABLE; 76 77 struct 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 } 93 alias MIB_IPFORWARDROW* PMIB_IPFORWARDROW; 94 95 struct MIB_IPFORWARDTABLE { 96 DWORD dwNumEntries; 97 MIB_IPFORWARDROW[1] _table; 98 99 MIB_IPFORWARDROW* table() { return _table.ptr; } 100 } 101 alias MIB_IPFORWARDTABLE* PMIB_IPFORWARDTABLE; 102 103 struct MIB_IPNETROW { 104 DWORD dwIndex; 105 DWORD dwPhysAddrLen; 106 BYTE[MAXLEN_PHYSADDR] bPhysAddr; 107 DWORD dwAddr; 108 DWORD dwType; 109 } 110 alias MIB_IPNETROW* PMIB_IPNETROW; 111 112 struct MIB_IPNETTABLE { 113 DWORD dwNumEntries; 114 MIB_IPNETROW[1] _table; 115 116 MIB_IPNETROW* table() { return _table.ptr; } 117 } 118 alias MIB_IPNETTABLE* PMIB_IPNETTABLE; 119 120 struct 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 } 135 alias MIBICMPSTATS* PMIBICMPSTATS; 136 137 struct MIBICMPINFO { 138 MIBICMPSTATS icmpInStats; 139 MIBICMPSTATS icmpOutStats; 140 } 141 alias MIBICMPINFO* PMIBICMPINFO; 142 143 struct MIB_ICMP { 144 MIBICMPINFO stats; 145 } 146 alias MIB_ICMP* PMIB_ICMP; 147 148 struct MIB_IFROW { 149 WCHAR[MAX_INTERFACE_NAME_LEN] wszName; 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 } 174 alias MIB_IFROW* PMIB_IFROW; 175 176 struct MIB_IFTABLE { 177 DWORD dwNumEntries; 178 MIB_IFROW[1] _table; 179 180 MIB_IFROW* table() { return _table.ptr; } 181 } 182 alias MIB_IFTABLE* PMIB_IFTABLE; 183 184 struct 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 } 209 alias MIB_IPSTATS* PMIB_IPSTATS; 210 211 struct 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 } 228 alias MIB_TCPSTATS* PMIB_TCPSTATS; 229 230 struct MIB_TCPROW { 231 DWORD dwState; 232 DWORD dwLocalAddr; 233 DWORD dwLocalPort; 234 DWORD dwRemoteAddr; 235 DWORD dwRemotePort; 236 } 237 alias MIB_TCPROW* PMIB_TCPROW; 238 239 struct MIB_TCPTABLE { 240 DWORD dwNumEntries; 241 MIB_TCPROW[1] _table; 242 243 MIB_TCPROW* table() { return _table.ptr; } 244 } 245 alias MIB_TCPTABLE* PMIB_TCPTABLE; 246 247 struct MIB_UDPSTATS { 248 DWORD dwInDatagrams; 249 DWORD dwNoPorts; 250 DWORD dwInErrors; 251 DWORD dwOutDatagrams; 252 DWORD dwNumAddrs; 253 } 254 alias MIB_UDPSTATS* PMIB_UDPSTATS; 255 256 struct MIB_UDPROW { 257 DWORD dwLocalAddr; 258 DWORD dwLocalPort; 259 } 260 alias MIB_UDPROW* PMIB_UDPROW; 261 262 struct MIB_UDPTABLE { 263 DWORD dwNumEntries; 264 MIB_UDPROW[1] _table; 265 266 MIB_UDPROW* table() { return _table.ptr; } 267 } 268 alias MIB_UDPTABLE* PMIB_UDPTABLE;