jwaiprtrmib.pas 40 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243
  1. {******************************************************************************}
  2. { }
  3. { Management Information Base API interface Unit for Object Pascal }
  4. { }
  5. { Portions created by Microsoft are Copyright (C) 1995-2001 Microsoft }
  6. { Corporation. All Rights Reserved. }
  7. { }
  8. { The original file is: iprtrmib.h, released August 2001. The original Pascal }
  9. { code is: IpRtrMib.pas, released September 2000. The initial developer of the }
  10. { Pascal code is Marcel van Brakel (brakelm att chello dott nl). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Contributor(s): John C. Penman (jcp att craiglockhart dott com) }
  16. { Vladimir Vassiliev (voldemarv att hotpop dott com) }
  17. { }
  18. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  19. { }
  20. { You may retrieve the latest version of this file at the Project JEDI }
  21. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  22. { }
  23. { The contents of this file are used with permission, subject to the Mozilla }
  24. { Public License Version 1.1 (the "License"); you may not use this file except }
  25. { in compliance with the License. You may obtain a copy of the License at }
  26. { http://www.mozilla.org/MPL/MPL-1.1.html }
  27. { }
  28. { Software distributed under the License is distributed on an "AS IS" basis, }
  29. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  30. { the specific language governing rights and limitations under the License. }
  31. { }
  32. { Alternatively, the contents of this file may be used under the terms of the }
  33. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  34. { provisions of the LGPL License are applicable instead of those above. }
  35. { If you wish to allow use of your version of this file only under the terms }
  36. { of the LGPL License and not to allow others to use your version of this file }
  37. { under the MPL, indicate your decision by deleting the provisions above and }
  38. { replace them with the notice and other provisions required by the LGPL }
  39. { License. If you do not delete the provisions above, a recipient may use }
  40. { your version of this file under either the MPL or the LGPL License. }
  41. { }
  42. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  43. { }
  44. {******************************************************************************}
  45. unit JwaIpRtrMib;
  46. {$WEAKPACKAGEUNIT}
  47. {$HPPEMIT ''}
  48. {$HPPEMIT '#include "iprtrmib.h"'}
  49. {$HPPEMIT ''}
  50. {$I jediapilib.inc}
  51. interface
  52. uses
  53. JwaWinType;
  54. //////////////////////////////////////////////////////////////////////////////
  55. // //
  56. // Included to get the value of MAX_INTERFACE_NAME_LEN //
  57. // //
  58. //////////////////////////////////////////////////////////////////////////////
  59. // #include <mprapi.h>
  60. //////////////////////////////////////////////////////////////////////////////
  61. // //
  62. // Included to get the necessary constants //
  63. // //
  64. //////////////////////////////////////////////////////////////////////////////
  65. // #include <ipifcons.h>
  66. //////////////////////////////////////////////////////////////////////////////
  67. // //
  68. // This is the Id for IP Router Manager. The Router Manager handles //
  69. // MIB-II, Forwarding MIB and some enterprise specific information. //
  70. // Calls made with any other ID are passed on to the corresponding protocol //
  71. // For example, an MprAdminMIBXXX call with a protocol ID of PID_IP and //
  72. // a routing Id of 0xD will be sent to the IP Router Manager and then //
  73. // forwarded to OSPF //
  74. // This lives in the same number space as the protocol Ids of RIP, OSPF //
  75. // etc, so any change made to it should be done keeping this in mind //
  76. // //
  77. //////////////////////////////////////////////////////////////////////////////
  78. const
  79. MAX_INTERFACE_NAME_LEN = 256; // MPRAPI.H
  80. {$EXTERNALSYM MAX_INTERFACE_NAME_LEN}
  81. IPRTRMGR_PID = 10000;
  82. {$EXTERNALSYM IPRTRMGR_PID}
  83. ANY_SIZE = 1;
  84. {$EXTERNALSYM ANY_SIZE}
  85. //////////////////////////////////////////////////////////////////////////////
  86. // //
  87. // The following #defines are the Ids of the MIB variables made accessible //
  88. // to the user via MprAdminMIBXXX Apis. It will be noticed that these are //
  89. // not the same as RFC 1213, since the MprAdminMIBXXX APIs work on rows and //
  90. // groups instead of scalar variables //
  91. // //
  92. //////////////////////////////////////////////////////////////////////////////
  93. IF_NUMBER = 0;
  94. {$EXTERNALSYM IF_NUMBER}
  95. IF_TABLE = IF_NUMBER + 1;
  96. {$EXTERNALSYM IF_TABLE}
  97. IF_ROW = IF_TABLE + 1;
  98. {$EXTERNALSYM IF_ROW}
  99. IP_STATS = IF_ROW + 1;
  100. {$EXTERNALSYM IP_STATS}
  101. IP_ADDRTABLE = IP_STATS + 1;
  102. {$EXTERNALSYM IP_ADDRTABLE}
  103. IP_ADDRROW = IP_ADDRTABLE + 1;
  104. {$EXTERNALSYM IP_ADDRROW}
  105. IP_FORWARDNUMBER = IP_ADDRROW + 1;
  106. {$EXTERNALSYM IP_FORWARDNUMBER}
  107. IP_FORWARDTABLE = IP_FORWARDNUMBER + 1;
  108. {$EXTERNALSYM IP_FORWARDTABLE}
  109. IP_FORWARDROW = IP_FORWARDTABLE + 1;
  110. {$EXTERNALSYM IP_FORWARDROW}
  111. IP_NETTABLE = IP_FORWARDROW + 1;
  112. {$EXTERNALSYM IP_NETTABLE}
  113. IP_NETROW = IP_NETTABLE + 1;
  114. {$EXTERNALSYM IP_NETROW}
  115. ICMP_STATS = IP_NETROW + 1;
  116. {$EXTERNALSYM ICMP_STATS}
  117. TCP_STATS = ICMP_STATS + 1;
  118. {$EXTERNALSYM TCP_STATS}
  119. TCP_TABLE = TCP_STATS + 1;
  120. {$EXTERNALSYM TCP_TABLE}
  121. TCP_ROW = TCP_TABLE + 1;
  122. {$EXTERNALSYM TCP_ROW}
  123. UDP_STATS = TCP_ROW + 1;
  124. {$EXTERNALSYM UDP_STATS}
  125. UDP_TABLE = UDP_STATS + 1;
  126. {$EXTERNALSYM UDP_TABLE}
  127. UDP_ROW = UDP_TABLE + 1;
  128. {$EXTERNALSYM UDP_ROW}
  129. MCAST_MFE = UDP_ROW + 1;
  130. {$EXTERNALSYM MCAST_MFE}
  131. MCAST_MFE_STATS = MCAST_MFE + 1;
  132. {$EXTERNALSYM MCAST_MFE_STATS}
  133. BEST_IF = MCAST_MFE_STATS + 1;
  134. {$EXTERNALSYM BEST_IF}
  135. BEST_ROUTE = BEST_IF + 1;
  136. {$EXTERNALSYM BEST_ROUTE}
  137. PROXY_ARP = BEST_ROUTE + 1;
  138. {$EXTERNALSYM PROXY_ARP}
  139. MCAST_IF_ENTRY = PROXY_ARP + 1;
  140. {$EXTERNALSYM MCAST_IF_ENTRY}
  141. MCAST_GLOBAL = MCAST_IF_ENTRY + 1;
  142. {$EXTERNALSYM MCAST_GLOBAL}
  143. IF_STATUS = MCAST_GLOBAL + 1;
  144. {$EXTERNALSYM IF_STATUS}
  145. MCAST_BOUNDARY = IF_STATUS + 1;
  146. {$EXTERNALSYM MCAST_BOUNDARY}
  147. MCAST_SCOPE = MCAST_BOUNDARY + 1;
  148. {$EXTERNALSYM MCAST_SCOPE}
  149. DEST_MATCHING = MCAST_SCOPE + 1;
  150. {$EXTERNALSYM DEST_MATCHING}
  151. DEST_LONGER = DEST_MATCHING + 1;
  152. {$EXTERNALSYM DEST_LONGER}
  153. DEST_SHORTER = DEST_LONGER + 1;
  154. {$EXTERNALSYM DEST_SHORTER}
  155. ROUTE_MATCHING = DEST_SHORTER + 1;
  156. {$EXTERNALSYM ROUTE_MATCHING}
  157. ROUTE_LONGER = ROUTE_MATCHING + 1;
  158. {$EXTERNALSYM ROUTE_LONGER}
  159. ROUTE_SHORTER = ROUTE_LONGER + 1;
  160. {$EXTERNALSYM ROUTE_SHORTER}
  161. ROUTE_STATE = ROUTE_SHORTER + 1;
  162. {$EXTERNALSYM ROUTE_STATE}
  163. MCAST_MFE_STATS_EX = ROUTE_STATE + 1;
  164. {$EXTERNALSYM MCAST_MFE_STATS_EX}
  165. IP6_STATS = MCAST_MFE_STATS_EX + 1;
  166. {$EXTERNALSYM IP6_STATS}
  167. UDP6_STATS = IP6_STATS + 1;
  168. {$EXTERNALSYM UDP6_STATS}
  169. TCP6_STATS = UDP6_STATS + 1;
  170. {$EXTERNALSYM TCP6_STATS}
  171. NUMBER_OF_EXPORTED_VARIABLES = TCP6_STATS + 1;
  172. {$EXTERNALSYM NUMBER_OF_EXPORTED_VARIABLES}
  173. //////////////////////////////////////////////////////////////////////////////
  174. // //
  175. // MIB_OPAQUE_QUERY is the structure filled in by the user to identify a //
  176. // MIB variable //
  177. // //
  178. // dwVarId ID of MIB Variable (One of the Ids #defined above) //
  179. // dwVarIndex Variable sized array containing the indices needed to //
  180. // identify a variable. NOTE: Unlike SNMP we dont require that //
  181. // a scalar variable be indexed by 0 //
  182. // //
  183. //////////////////////////////////////////////////////////////////////////////
  184. type
  185. PMIB_OPAQUE_QUERY = ^MIB_OPAQUE_QUERY;
  186. {$EXTERNALSYM PMIB_OPAQUE_QUERY}
  187. _MIB_OPAQUE_QUERY = record
  188. dwVarId: DWORD;
  189. rgdwVarIndex: array [0..ANY_SIZE - 1] of DWORD;
  190. end;
  191. {$EXTERNALSYM _MIB_OPAQUE_QUERY}
  192. MIB_OPAQUE_QUERY = _MIB_OPAQUE_QUERY;
  193. {$EXTERNALSYM MIB_OPAQUE_QUERY}
  194. TMibOpaqueQuery = MIB_OPAQUE_QUERY;
  195. PMibOpaqueQuery = PMIB_OPAQUE_QUERY;
  196. //////////////////////////////////////////////////////////////////////////////
  197. // //
  198. // The following are the structures which are filled in and returned to the //
  199. // user when a query is made, OR are filled in BY THE USER when a set is //
  200. // done //
  201. // //
  202. //////////////////////////////////////////////////////////////////////////////
  203. type
  204. PMIB_IFNUMBER = ^MIB_IFNUMBER;
  205. {$EXTERNALSYM PMIB_IFNUMBER}
  206. _MIB_IFNUMBER = record
  207. dwValue: DWORD;
  208. end;
  209. {$EXTERNALSYM _MIB_IFNUMBER}
  210. MIB_IFNUMBER = _MIB_IFNUMBER;
  211. {$EXTERNALSYM MIB_IFNUMBER}
  212. TMibIfnumber = MIB_IFNUMBER;
  213. PMibIfnumber = PMIB_IFNUMBER;
  214. const
  215. MAXLEN_IFDESCR = 256;
  216. {$EXTERNALSYM MAXLEN_IFDESCR}
  217. MAXLEN_PHYSADDR = 8;
  218. {$EXTERNALSYM MAXLEN_PHYSADDR}
  219. type
  220. PMIB_IFROW = ^MIB_IFROW;
  221. {$EXTERNALSYM PMIB_IFROW}
  222. _MIB_IFROW = record
  223. wszName: array [0..MAX_INTERFACE_NAME_LEN - 1] of WCHAR;
  224. dwIndex: DWORD;
  225. dwType: DWORD;
  226. dwMtu: DWORD;
  227. dwSpeed: DWORD;
  228. dwPhysAddrLen: DWORD;
  229. bPhysAddr: array [0..MAXLEN_PHYSADDR - 1] of BYTE;
  230. dwAdminStatus: DWORD;
  231. dwOperStatus: DWORD;
  232. dwLastChange: DWORD;
  233. dwInOctets: DWORD;
  234. dwInUcastPkts: DWORD;
  235. dwInNUcastPkts: DWORD;
  236. dwInDiscards: DWORD;
  237. dwInErrors: DWORD;
  238. dwInUnknownProtos: DWORD;
  239. dwOutOctets: DWORD;
  240. dwOutUcastPkts: DWORD;
  241. dwOutNUcastPkts: DWORD;
  242. dwOutDiscards: DWORD;
  243. dwOutErrors: DWORD;
  244. dwOutQLen: DWORD;
  245. dwDescrLen: DWORD;
  246. bDescr: array[0..MAXLEN_IFDESCR - 1] of BYTE;
  247. end;
  248. {$EXTERNALSYM _MIB_IFROW}
  249. MIB_IFROW = _MIB_IFROW;
  250. {$EXTERNALSYM MIB_IFROW}
  251. TMibIfRow = MIB_IFROW;
  252. PMibIfRow = PMIB_IFROW;
  253. PMIB_IFTABLE = ^MIB_IFTABLE;
  254. {$EXTERNALSYM PMIB_IFTABLE}
  255. _MIB_IFTABLE = record
  256. dwNumEntries: DWORD;
  257. table: array [0..ANY_SIZE - 1] of MIB_IFROW;
  258. end;
  259. {$EXTERNALSYM _MIB_IFTABLE}
  260. MIB_IFTABLE = _MIB_IFTABLE;
  261. {$EXTERNALSYM MIB_IFTABLE}
  262. TMibIftable = MIB_IFTABLE;
  263. PMibIftable = PMIB_IFTABLE;
  264. // #define SIZEOF_IFTABLE(X) (FIELD_OFFSET(MIB_IFTABLE,table[0]) + ((X) * sizeof(MIB_IFROW)) + ALIGN_SIZE)
  265. type
  266. PMibIcmpStats = ^TMibIcmpStats;
  267. _MIBICMPSTATS = record
  268. dwMsgs: DWORD;
  269. dwErrors: DWORD;
  270. dwDestUnreachs: DWORD;
  271. dwTimeExcds: DWORD;
  272. dwParmProbs: DWORD;
  273. dwSrcQuenchs: DWORD;
  274. dwRedirects: DWORD;
  275. dwEchos: DWORD;
  276. dwEchoReps: DWORD;
  277. dwTimestamps: DWORD;
  278. dwTimestampReps: DWORD;
  279. dwAddrMasks: DWORD;
  280. dwAddrMaskReps: DWORD;
  281. end;
  282. {$EXTERNALSYM _MIBICMPSTATS}
  283. MIBICMPSTATS = _MIBICMPSTATS;
  284. {$EXTERNALSYM MIBICMPSTATS}
  285. TMibIcmpStats = _MIBICMPSTATS;
  286. _MIBICMPINFO = record
  287. icmpInStats: MIBICMPSTATS;
  288. icmpOutStats: MIBICMPSTATS;
  289. end;
  290. {$EXTERNALSYM _MIBICMPINFO}
  291. MIBICMPINFO = _MIBICMPINFO;
  292. {$EXTERNALSYM MIBICMPINFO}
  293. PMIBICMPINFO = ^MIBICMPINFO;
  294. {$EXTERNALSYM PMIBICMPINFO}
  295. TMibIcmpInfo = MIBICMPINFO;
  296. PMIB_ICMP = ^MIB_ICMP;
  297. {$EXTERNALSYM PMIB_ICMP}
  298. _MIB_ICMP = record
  299. stats: MIBICMPINFO;
  300. end;
  301. {$EXTERNALSYM _MIB_ICMP}
  302. MIB_ICMP = _MIB_ICMP;
  303. {$EXTERNALSYM MIB_ICMP}
  304. TMibIcmp = MIB_ICMP;
  305. PMibIcmp = PMIB_ICMP;
  306. //
  307. // ICMPv6 Type Values from RFC 2292.
  308. //
  309. const
  310. ICMP6_DST_UNREACH = 1;
  311. {$EXTERNALSYM ICMP6_DST_UNREACH}
  312. ICMP6_PACKET_TOO_BIG = 2;
  313. {$EXTERNALSYM ICMP6_PACKET_TOO_BIG}
  314. ICMP6_TIME_EXCEEDED = 3;
  315. {$EXTERNALSYM ICMP6_TIME_EXCEEDED}
  316. ICMP6_PARAM_PROB = 4;
  317. {$EXTERNALSYM ICMP6_PARAM_PROB}
  318. ICMP6_ECHO_REQUEST = 128;
  319. {$EXTERNALSYM ICMP6_ECHO_REQUEST}
  320. ICMP6_ECHO_REPLY = 129;
  321. {$EXTERNALSYM ICMP6_ECHO_REPLY}
  322. ICMP6_MEMBERSHIP_QUERY = 130;
  323. {$EXTERNALSYM ICMP6_MEMBERSHIP_QUERY}
  324. ICMP6_MEMBERSHIP_REPORT = 131;
  325. {$EXTERNALSYM ICMP6_MEMBERSHIP_REPORT}
  326. ICMP6_MEMBERSHIP_REDUCTION = 132;
  327. {$EXTERNALSYM ICMP6_MEMBERSHIP_REDUCTION}
  328. ND_ROUTER_SOLICIT = 133;
  329. {$EXTERNALSYM ND_ROUTER_SOLICIT}
  330. ND_ROUTER_ADVERT = 134;
  331. {$EXTERNALSYM ND_ROUTER_ADVERT}
  332. ND_NEIGHBOR_SOLICIT = 135;
  333. {$EXTERNALSYM ND_NEIGHBOR_SOLICIT}
  334. ND_NEIGHBOR_ADVERT = 136;
  335. {$EXTERNALSYM ND_NEIGHBOR_ADVERT}
  336. ND_REDIRECT = 137;
  337. {$EXTERNALSYM ND_REDIRECT}
  338. type
  339. ICMP6_TYPE = DWORD;
  340. {$EXTERNALSYM ICMP6_TYPE}
  341. PICMP6_TYPE = ^ICMP6_TYPE;
  342. {$EXTERNALSYM PICMP6_TYPE}
  343. TIcmp6Type = ICMP6_TYPE;
  344. PIcmp6Type = PICMP6_TYPE;
  345. //
  346. // There are no RFC-specified defines for ICMPv4 message types, so we try to
  347. // use the ICMP6 values from RFC 2292 modified to be prefixed with ICMP4.
  348. //
  349. const
  350. ICMP4_ECHO_REPLY = 0; // Echo Reply
  351. {$EXTERNALSYM ICMP4_ECHO_REPLY}
  352. ICMP4_DST_UNREACH = 3; // Destination Unreachable
  353. {$EXTERNALSYM ICMP4_DST_UNREACH}
  354. ICMP4_SOURCE_QUENCH = 4; // Source Quench
  355. {$EXTERNALSYM ICMP4_SOURCE_QUENCH}
  356. ICMP4_REDIRECT = 5; // Redirect
  357. {$EXTERNALSYM ICMP4_REDIRECT}
  358. ICMP4_ECHO_REQUEST = 8; // Echo Request
  359. {$EXTERNALSYM ICMP4_ECHO_REQUEST}
  360. ICMP4_ROUTER_ADVERT = 9; // Router Advertisement
  361. {$EXTERNALSYM ICMP4_ROUTER_ADVERT}
  362. ICMP4_ROUTER_SOLICIT = 10; // Router Solicitation
  363. {$EXTERNALSYM ICMP4_ROUTER_SOLICIT}
  364. ICMP4_TIME_EXCEEDED = 11; // Time Exceeded
  365. {$EXTERNALSYM ICMP4_TIME_EXCEEDED}
  366. ICMP4_PARAM_PROB = 12; // Parameter Problem
  367. {$EXTERNALSYM ICMP4_PARAM_PROB}
  368. ICMP4_TIMESTAMP_REQUEST = 13; // Timestamp Request
  369. {$EXTERNALSYM ICMP4_TIMESTAMP_REQUEST}
  370. ICMP4_TIMESTAMP_REPLY = 14; // Timestamp Reply
  371. {$EXTERNALSYM ICMP4_TIMESTAMP_REPLY}
  372. ICMP4_MASK_REQUEST = 17; // Address Mask Request
  373. {$EXTERNALSYM ICMP4_MASK_REQUEST}
  374. ICMP4_MASK_REPLY = 18; // Address Mask Reply
  375. {$EXTERNALSYM ICMP4_MASK_REPLY}
  376. type
  377. ICMP4_TYPE = DWORD;
  378. {$EXTERNALSYM ICMP4_TYPE}
  379. PICMP4_TYPE = ^ICMP4_TYPE;
  380. {$EXTERNALSYM PICMP4_TYPE}
  381. TIcmp4Type = ICMP4_TYPE;
  382. PIcmp4Type = PICMP4_TYPE;
  383. _MIBICMPSTATS_EX = record
  384. dwMsgs: DWORD;
  385. dwErrors: DWORD;
  386. rgdwTypeCount: array [0..255] of DWORD;
  387. end;
  388. {$EXTERNALSYM _MIBICMPSTATS_EX}
  389. MIBICMPSTATS_EX = _MIBICMPSTATS_EX;
  390. {$EXTERNALSYM MIBICMPSTATS_EX}
  391. PMIBICMPSTATS_EX = ^MIBICMPSTATS_EX;
  392. {$EXTERNALSYM PMIBICMPSTATS_EX}
  393. TMibIcmpStatsEx = MIBICMPSTATS_EX;
  394. PMibIcmpStatsEx = PMIBICMPSTATS_EX;
  395. _MIB_ICMP_EX = record
  396. icmpInStats: MIBICMPSTATS_EX;
  397. icmpOutStats: MIBICMPSTATS_EX;
  398. end;
  399. {$EXTERNALSYM _MIB_ICMP_EX}
  400. MIB_ICMP_EX = _MIB_ICMP_EX;
  401. {$EXTERNALSYM MIB_ICMP_EX}
  402. PMIB_ICMP_EX = ^MIB_ICMP_EX;
  403. {$EXTERNALSYM PMIB_ICMP_EX}
  404. TMibIcmpEx = MIB_ICMP_EX;
  405. PMibIcmpEx = PMIB_ICMP_EX;
  406. PMIB_UDPSTATS = ^MIB_UDPSTATS;
  407. {$EXTERNALSYM PMIB_UDPSTATS}
  408. _MIB_UDPSTATS = record
  409. dwInDatagrams: DWORD;
  410. dwNoPorts: DWORD;
  411. dwInErrors: DWORD;
  412. dwOutDatagrams: DWORD;
  413. dwNumAddrs: DWORD;
  414. end;
  415. {$EXTERNALSYM _MIB_UDPSTATS}
  416. MIB_UDPSTATS = _MIB_UDPSTATS;
  417. {$EXTERNALSYM MIB_UDPSTATS}
  418. TMibUdpStats = MIB_UDPSTATS;
  419. PMibUdpStats = PMIB_UDPSTATS;
  420. PMIB_UDPROW = ^MIB_UDPROW;
  421. {$EXTERNALSYM PMIB_UDPROW}
  422. _MIB_UDPROW = record
  423. dwLocalAddr: DWORD;
  424. dwLocalPort: DWORD;
  425. end;
  426. {$EXTERNALSYM _MIB_UDPROW}
  427. MIB_UDPROW = _MIB_UDPROW;
  428. {$EXTERNALSYM MIB_UDPROW}
  429. TMibUdpRow = MIB_UDPROW;
  430. PMibUdpRow = PMIB_UDPROW;
  431. PMIB_UDPTABLE = ^MIB_UDPTABLE;
  432. {$EXTERNALSYM PMIB_UDPTABLE}
  433. _MIB_UDPTABLE = record
  434. dwNumEntries: DWORD;
  435. table: array [0..ANY_SIZE - 1] of MIB_UDPROW;
  436. end;
  437. {$EXTERNALSYM _MIB_UDPTABLE}
  438. MIB_UDPTABLE = _MIB_UDPTABLE;
  439. {$EXTERNALSYM MIB_UDPTABLE}
  440. TMibUdpTable = MIB_UDPTABLE;
  441. PMibUdpTable = PMIB_UDPTABLE;
  442. // #define SIZEOF_UDPTABLE(X) (FIELD_OFFSET(MIB_UDPTABLE, table[0]) + ((X) * sizeof(MIB_UDPROW)) + ALIGN_SIZE)
  443. PMIB_TCPSTATS = ^MIB_TCPSTATS;
  444. {$EXTERNALSYM PMIB_TCPSTATS}
  445. _MIB_TCPSTATS = record
  446. dwRtoAlgorithm: DWORD;
  447. dwRtoMin: DWORD;
  448. dwRtoMax: DWORD;
  449. dwMaxConn: DWORD;
  450. dwActiveOpens: DWORD;
  451. dwPassiveOpens: DWORD;
  452. dwAttemptFails: DWORD;
  453. dwEstabResets: DWORD;
  454. dwCurrEstab: DWORD;
  455. dwInSegs: DWORD;
  456. dwOutSegs: DWORD;
  457. dwRetransSegs: DWORD;
  458. dwInErrs: DWORD;
  459. dwOutRsts: DWORD;
  460. dwNumConns: DWORD;
  461. end;
  462. {$EXTERNALSYM _MIB_TCPSTATS}
  463. MIB_TCPSTATS = _MIB_TCPSTATS;
  464. {$EXTERNALSYM MIB_TCPSTATS}
  465. TMibTcpStats = MIB_TCPSTATS;
  466. PMibTcpStats = PMIB_TCPSTATS;
  467. const
  468. MIB_TCP_RTO_OTHER = 1;
  469. {$EXTERNALSYM MIB_TCP_RTO_OTHER}
  470. MIB_TCP_RTO_CONSTANT = 2;
  471. {$EXTERNALSYM MIB_TCP_RTO_CONSTANT}
  472. MIB_TCP_RTO_RSRE = 3;
  473. {$EXTERNALSYM MIB_TCP_RTO_RSRE}
  474. MIB_TCP_RTO_VANJ = 4;
  475. {$EXTERNALSYM MIB_TCP_RTO_VANJ}
  476. MIB_TCP_MAXCONN_DYNAMIC = DWORD(-1);
  477. {$EXTERNALSYM MIB_TCP_MAXCONN_DYNAMIC}
  478. type
  479. PMIB_TCPROW = ^MIB_TCPROW;
  480. {$EXTERNALSYM PMIB_TCPROW}
  481. _MIB_TCPROW = record
  482. dwState: DWORD;
  483. dwLocalAddr: DWORD;
  484. dwLocalPort: DWORD;
  485. dwRemoteAddr: DWORD;
  486. dwRemotePort: DWORD;
  487. end;
  488. {$EXTERNALSYM _MIB_TCPROW}
  489. MIB_TCPROW = _MIB_TCPROW;
  490. {$EXTERNALSYM MIB_TCPROW}
  491. TMibTcpRow = MIB_TCPROW;
  492. PMibTcpRow = PMIB_TCPROW;
  493. const
  494. MIB_TCP_STATE_CLOSED = 1;
  495. {$EXTERNALSYM MIB_TCP_STATE_CLOSED}
  496. MIB_TCP_STATE_LISTEN = 2;
  497. {$EXTERNALSYM MIB_TCP_STATE_LISTEN}
  498. MIB_TCP_STATE_SYN_SENT = 3;
  499. {$EXTERNALSYM MIB_TCP_STATE_SYN_SENT}
  500. MIB_TCP_STATE_SYN_RCVD = 4;
  501. {$EXTERNALSYM MIB_TCP_STATE_SYN_RCVD}
  502. MIB_TCP_STATE_ESTAB = 5;
  503. {$EXTERNALSYM MIB_TCP_STATE_ESTAB}
  504. MIB_TCP_STATE_FIN_WAIT1 = 6;
  505. {$EXTERNALSYM MIB_TCP_STATE_FIN_WAIT1}
  506. MIB_TCP_STATE_FIN_WAIT2 = 7;
  507. {$EXTERNALSYM MIB_TCP_STATE_FIN_WAIT2}
  508. MIB_TCP_STATE_CLOSE_WAIT = 8;
  509. {$EXTERNALSYM MIB_TCP_STATE_CLOSE_WAIT}
  510. MIB_TCP_STATE_CLOSING = 9;
  511. {$EXTERNALSYM MIB_TCP_STATE_CLOSING}
  512. MIB_TCP_STATE_LAST_ACK = 10;
  513. {$EXTERNALSYM MIB_TCP_STATE_LAST_ACK}
  514. MIB_TCP_STATE_TIME_WAIT = 11;
  515. {$EXTERNALSYM MIB_TCP_STATE_TIME_WAIT}
  516. MIB_TCP_STATE_DELETE_TCB = 12;
  517. {$EXTERNALSYM MIB_TCP_STATE_DELETE_TCB}
  518. type
  519. PMIB_TCPTABLE = ^MIB_TCPTABLE;
  520. {$EXTERNALSYM PMIB_TCPTABLE}
  521. _MIB_TCPTABLE = record
  522. dwNumEntries: DWORD;
  523. table: array [0..ANY_SIZE - 1] of MIB_TCPROW;
  524. end;
  525. {$EXTERNALSYM _MIB_TCPTABLE}
  526. MIB_TCPTABLE = _MIB_TCPTABLE;
  527. {$EXTERNALSYM MIB_TCPTABLE}
  528. TMibTcpTable = MIB_TCPTABLE;
  529. PMibTcpTable = PMIB_TCPTABLE;
  530. // #define SIZEOF_TCPTABLE(X) (FIELD_OFFSET(MIB_TCPTABLE,table[0]) + ((X) * sizeof(MIB_TCPROW)) + ALIGN_SIZE)
  531. const
  532. MIB_USE_CURRENT_TTL = DWORD(-1);
  533. {$EXTERNALSYM MIB_USE_CURRENT_TTL}
  534. MIB_USE_CURRENT_FORWARDING = DWORD(-1);
  535. {$EXTERNALSYM MIB_USE_CURRENT_FORWARDING}
  536. type
  537. PMIB_IPSTATS = ^MIB_IPSTATS;
  538. {$EXTERNALSYM PMIB_IPSTATS}
  539. _MIB_IPSTATS = record
  540. dwForwarding: DWORD;
  541. dwDefaultTTL: DWORD;
  542. dwInReceives: DWORD;
  543. dwInHdrErrors: DWORD;
  544. dwInAddrErrors: DWORD;
  545. dwForwDatagrams: DWORD;
  546. dwInUnknownProtos: DWORD;
  547. dwInDiscards: DWORD;
  548. dwInDelivers: DWORD;
  549. dwOutRequests: DWORD;
  550. dwRoutingDiscards: DWORD;
  551. dwOutDiscards: DWORD;
  552. dwOutNoRoutes: DWORD;
  553. dwReasmTimeout: DWORD;
  554. dwReasmReqds: DWORD;
  555. dwReasmOks: DWORD;
  556. dwReasmFails: DWORD;
  557. dwFragOks: DWORD;
  558. dwFragFails: DWORD;
  559. dwFragCreates: DWORD;
  560. dwNumIf: DWORD;
  561. dwNumAddr: DWORD;
  562. dwNumRoutes: DWORD;
  563. end;
  564. {$EXTERNALSYM _MIB_IPSTATS}
  565. MIB_IPSTATS = _MIB_IPSTATS;
  566. {$EXTERNALSYM MIB_IPSTATS}
  567. TMibIpStats = MIB_IPSTATS;
  568. PMibIpStats = PMIB_IPSTATS;
  569. const
  570. MIB_IP_FORWARDING = 1;
  571. {$EXTERNALSYM MIB_IP_FORWARDING}
  572. MIB_IP_NOT_FORWARDING = 2;
  573. {$EXTERNALSYM MIB_IP_NOT_FORWARDING}
  574. // Note: These addr types have dependency on ipdef.h
  575. MIB_IPADDR_PRIMARY = $0001; // Primary ipaddr
  576. {$EXTERNALSYM MIB_IPADDR_PRIMARY}
  577. MIB_IPADDR_DYNAMIC = $0004; // Dynamic ipaddr
  578. {$EXTERNALSYM MIB_IPADDR_DYNAMIC}
  579. MIB_IPADDR_DISCONNECTED = $0008; // Address is on disconnected interface
  580. {$EXTERNALSYM MIB_IPADDR_DISCONNECTED}
  581. MIB_IPADDR_DELETED = $0040; // Address being deleted
  582. {$EXTERNALSYM MIB_IPADDR_DELETED}
  583. MIB_IPADDR_TRANSIENT = $0080; // Transient address
  584. {$EXTERNALSYM MIB_IPADDR_TRANSIENT}
  585. type
  586. PMIB_IPADDRROW = ^MIB_IPADDRROW;
  587. {$EXTERNALSYM PMIB_IPADDRROW}
  588. _MIB_IPADDRROW = record
  589. dwAddr: DWORD;
  590. dwIndex: DWORD;
  591. dwMask: DWORD;
  592. dwBCastAddr: DWORD;
  593. dwReasmSize: DWORD;
  594. unused1: Word;
  595. wType: Word;
  596. end;
  597. {$EXTERNALSYM _MIB_IPADDRROW}
  598. MIB_IPADDRROW = _MIB_IPADDRROW;
  599. {$EXTERNALSYM MIB_IPADDRROW}
  600. TMibIpAddrRow = MIB_IPADDRROW;
  601. PMibIpAddrRow = PMIB_IPADDRROW;
  602. PMIB_IPADDRTABLE = ^MIB_IPADDRTABLE;
  603. {$EXTERNALSYM PMIB_IPADDRTABLE}
  604. _MIB_IPADDRTABLE = record
  605. dwNumEntries: DWORD;
  606. table: array [0..ANY_SIZE - 1] of MIB_IPADDRROW;
  607. end;
  608. {$EXTERNALSYM _MIB_IPADDRTABLE}
  609. MIB_IPADDRTABLE = _MIB_IPADDRTABLE;
  610. {$EXTERNALSYM MIB_IPADDRTABLE}
  611. TMibIpAddrTable = _MIB_IPADDRTABLE;
  612. PMibIpAddrTable = PMIB_IPADDRTABLE;
  613. // #define SIZEOF_IPADDRTABLE(X) (FIELD_OFFSET(MIB_IPADDRTABLE,table[0]) + ((X) * sizeof(MIB_IPADDRROW)) + ALIGN_SIZE)
  614. type
  615. PMIB_IPFORWARDNUMBER = ^MIB_IPFORWARDNUMBER;
  616. {$EXTERNALSYM PMIB_IPFORWARDNUMBER}
  617. _MIB_IPFORWARDNUMBER = record
  618. dwValue: DWORD;
  619. end;
  620. {$EXTERNALSYM _MIB_IPFORWARDNUMBER}
  621. MIB_IPFORWARDNUMBER = _MIB_IPFORWARDNUMBER;
  622. {$EXTERNALSYM MIB_IPFORWARDNUMBER}
  623. TMibIpForwardNumber = MIB_IPFORWARDNUMBER;
  624. PMibIpForwardNumber = PMIB_IPFORWARDNUMBER;
  625. PMIB_IPFORWARDROW = ^MIB_IPFORWARDROW;
  626. {$EXTERNALSYM PMIB_IPFORWARDROW}
  627. _MIB_IPFORWARDROW = record
  628. dwForwardDest: DWORD;
  629. dwForwardMask: DWORD;
  630. dwForwardPolicy: DWORD;
  631. dwForwardNextHop: DWORD;
  632. dwForwardIfIndex: DWORD;
  633. dwForwardType: DWORD;
  634. dwForwardProto: DWORD;
  635. dwForwardAge: DWORD;
  636. dwForwardNextHopAS: DWORD;
  637. dwForwardMetric1: DWORD;
  638. dwForwardMetric2: DWORD;
  639. dwForwardMetric3: DWORD;
  640. dwForwardMetric4: DWORD;
  641. dwForwardMetric5: DWORD;
  642. end;
  643. {$EXTERNALSYM _MIB_IPFORWARDROW}
  644. MIB_IPFORWARDROW = _MIB_IPFORWARDROW;
  645. {$EXTERNALSYM MIB_IPFORWARDROW}
  646. TMibIpForwardRow = MIB_IPFORWARDROW;
  647. PMibIpForwardRow = PMIB_IPFORWARDROW;
  648. const
  649. MIB_IPROUTE_TYPE_OTHER = 1;
  650. {$EXTERNALSYM MIB_IPROUTE_TYPE_OTHER}
  651. MIB_IPROUTE_TYPE_INVALID = 2;
  652. {$EXTERNALSYM MIB_IPROUTE_TYPE_INVALID}
  653. MIB_IPROUTE_TYPE_DIRECT = 3;
  654. {$EXTERNALSYM MIB_IPROUTE_TYPE_DIRECT}
  655. MIB_IPROUTE_TYPE_INDIRECT = 4;
  656. {$EXTERNALSYM MIB_IPROUTE_TYPE_INDIRECT}
  657. MIB_IPROUTE_METRIC_UNUSED = DWORD(-1);
  658. {$EXTERNALSYM MIB_IPROUTE_METRIC_UNUSED}
  659. //
  660. // THESE MUST MATCH the ids in routprot.h
  661. //
  662. const
  663. MIB_IPPROTO_OTHER = 1;
  664. {$EXTERNALSYM MIB_IPPROTO_OTHER}
  665. MIB_IPPROTO_LOCAL = 2;
  666. {$EXTERNALSYM MIB_IPPROTO_LOCAL}
  667. MIB_IPPROTO_NETMGMT = 3;
  668. {$EXTERNALSYM MIB_IPPROTO_NETMGMT}
  669. MIB_IPPROTO_ICMP = 4;
  670. {$EXTERNALSYM MIB_IPPROTO_ICMP}
  671. MIB_IPPROTO_EGP = 5;
  672. {$EXTERNALSYM MIB_IPPROTO_EGP}
  673. MIB_IPPROTO_GGP = 6;
  674. {$EXTERNALSYM MIB_IPPROTO_GGP}
  675. MIB_IPPROTO_HELLO = 7;
  676. {$EXTERNALSYM MIB_IPPROTO_HELLO}
  677. MIB_IPPROTO_RIP = 8;
  678. {$EXTERNALSYM MIB_IPPROTO_RIP}
  679. MIB_IPPROTO_IS_IS = 9;
  680. {$EXTERNALSYM MIB_IPPROTO_IS_IS}
  681. MIB_IPPROTO_ES_IS = 10;
  682. {$EXTERNALSYM MIB_IPPROTO_ES_IS}
  683. MIB_IPPROTO_CISCO = 11;
  684. {$EXTERNALSYM MIB_IPPROTO_CISCO}
  685. MIB_IPPROTO_BBN = 12;
  686. {$EXTERNALSYM MIB_IPPROTO_BBN}
  687. MIB_IPPROTO_OSPF = 13;
  688. {$EXTERNALSYM MIB_IPPROTO_OSPF}
  689. MIB_IPPROTO_BGP = 14;
  690. {$EXTERNALSYM MIB_IPPROTO_BGP}
  691. MIB_IPPROTO_NT_AUTOSTATIC = 10002;
  692. {$EXTERNALSYM MIB_IPPROTO_NT_AUTOSTATIC}
  693. MIB_IPPROTO_NT_STATIC = 10006;
  694. {$EXTERNALSYM MIB_IPPROTO_NT_STATIC}
  695. MIB_IPPROTO_NT_STATIC_NON_DOD = 10007;
  696. {$EXTERNALSYM MIB_IPPROTO_NT_STATIC_NON_DOD}
  697. type
  698. PMIB_IPFORWARDTABLE = ^MIB_IPFORWARDTABLE;
  699. {$EXTERNALSYM PMIB_IPFORWARDTABLE}
  700. _MIB_IPFORWARDTABLE = record
  701. dwNumEntries: DWORD;
  702. table: array [0..ANY_SIZE - 1] of MIB_IPFORWARDROW;
  703. end;
  704. {$EXTERNALSYM _MIB_IPFORWARDTABLE}
  705. MIB_IPFORWARDTABLE = _MIB_IPFORWARDTABLE;
  706. {$EXTERNALSYM MIB_IPFORWARDTABLE}
  707. TMibIpForwardTable = MIB_IPFORWARDTABLE;
  708. PMibIpForwardTable = PMIB_IPFORWARDTABLE;
  709. // #define SIZEOF_IPFORWARDTABLE(X) (FIELD_OFFSET(MIB_IPFORWARDTABLE,table[0]) + ((X) * sizeof(MIB_IPFORWARDROW)) + ALIGN_SIZE)
  710. type
  711. PMIB_IPNETROW = ^MIB_IPNETROW;
  712. {$EXTERNALSYM PMIB_IPNETROW}
  713. _MIB_IPNETROW = record
  714. dwIndex: DWORD;
  715. dwPhysAddrLen: DWORD;
  716. bPhysAddr: array [0..MAXLEN_PHYSADDR - 1] of BYTE;
  717. dwAddr: DWORD;
  718. dwType: DWORD;
  719. end;
  720. {$EXTERNALSYM _MIB_IPNETROW}
  721. MIB_IPNETROW = _MIB_IPNETROW;
  722. {$EXTERNALSYM MIB_IPNETROW}
  723. TMibIpNetRow = MIB_IPNETROW;
  724. PMibIpNetRow = PMIB_IPNETROW;
  725. const
  726. MIB_IPNET_TYPE_OTHER = 1;
  727. {$EXTERNALSYM MIB_IPNET_TYPE_OTHER}
  728. MIB_IPNET_TYPE_INVALID = 2;
  729. {$EXTERNALSYM MIB_IPNET_TYPE_INVALID}
  730. MIB_IPNET_TYPE_DYNAMIC = 3;
  731. {$EXTERNALSYM MIB_IPNET_TYPE_DYNAMIC}
  732. MIB_IPNET_TYPE_STATIC = 4;
  733. {$EXTERNALSYM MIB_IPNET_TYPE_STATIC}
  734. type
  735. PMIB_IPNETTABLE = ^MIB_IPNETTABLE;
  736. {$EXTERNALSYM PMIB_IPNETTABLE}
  737. _MIB_IPNETTABLE = record
  738. dwNumEntries: DWORD;
  739. table: array [0..ANY_SIZE - 1] of MIB_IPNETROW;
  740. end;
  741. {$EXTERNALSYM _MIB_IPNETTABLE}
  742. MIB_IPNETTABLE = _MIB_IPNETTABLE;
  743. {$EXTERNALSYM MIB_IPNETTABLE}
  744. TMibIpNetTable = MIB_IPNETTABLE;
  745. PMibIpNetTable = PMIB_IPNETTABLE;
  746. // #define SIZEOF_IPNETTABLE(X) (FIELD_OFFSET(MIB_IPNETTABLE, table[0]) + ((X) * sizeof(MIB_IPNETROW)) + ALIGN_SIZE)
  747. type
  748. PMIB_IPMCAST_OIF = ^MIB_IPMCAST_OIF;
  749. {$EXTERNALSYM PMIB_IPMCAST_OIF}
  750. _MIB_IPMCAST_OIF = record
  751. dwOutIfIndex: DWORD;
  752. dwNextHopAddr: DWORD;
  753. dwReserved: DWORD;
  754. dwReserved1: DWORD;
  755. end;
  756. {$EXTERNALSYM _MIB_IPMCAST_OIF}
  757. MIB_IPMCAST_OIF = _MIB_IPMCAST_OIF;
  758. {$EXTERNALSYM MIB_IPMCAST_OIF}
  759. TMibIpmCastOif = MIB_IPMCAST_OIF;
  760. PMibIpmCastOif = PMIB_IPMCAST_OIF;
  761. PMIB_IPMCAST_MFE = ^MIB_IPMCAST_MFE;
  762. {$EXTERNALSYM PMIB_IPMCAST_MFE}
  763. _MIB_IPMCAST_MFE = record
  764. dwGroup: DWORD;
  765. dwSource: DWORD;
  766. dwSrcMask: DWORD;
  767. dwUpStrmNgbr: DWORD;
  768. dwInIfIndex: DWORD;
  769. dwInIfProtocol: DWORD;
  770. dwRouteProtocol: DWORD;
  771. dwRouteNetwork: DWORD;
  772. dwRouteMask: DWORD;
  773. ulUpTime: ULONG;
  774. ulExpiryTime: ULONG;
  775. ulTimeOut: ULONG;
  776. ulNumOutIf: ULONG;
  777. fFlags: DWORD;
  778. dwReserved: DWORD;
  779. rgmioOutInfo: array [0..ANY_SIZE - 1] of MIB_IPMCAST_OIF;
  780. end;
  781. {$EXTERNALSYM _MIB_IPMCAST_MFE}
  782. MIB_IPMCAST_MFE = _MIB_IPMCAST_MFE;
  783. {$EXTERNALSYM MIB_IPMCAST_MFE}
  784. TMibIpmCastMfe = MIB_IPMCAST_MFE;
  785. PMibIpmCastMfe = PMIB_IPMCAST_MFE;
  786. PMIB_MFE_TABLE = ^MIB_MFE_TABLE;
  787. {$EXTERNALSYM PMIB_MFE_TABLE}
  788. _MIB_MFE_TABLE = record
  789. dwNumEntries: DWORD;
  790. table: array [0..ANY_SIZE - 1] of MIB_IPMCAST_MFE;
  791. end;
  792. {$EXTERNALSYM _MIB_MFE_TABLE}
  793. MIB_MFE_TABLE = _MIB_MFE_TABLE;
  794. {$EXTERNALSYM MIB_MFE_TABLE}
  795. TMibMfeTable = MIB_MFE_TABLE;
  796. PMibMfeTable = PMIB_MFE_TABLE;
  797. // #define SIZEOF_BASIC_MIB_MFE \
  798. // (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE, rgmioOutInfo[0]))
  799. // #define SIZEOF_MIB_MFE(X) \
  800. // (SIZEOF_BASIC_MIB_MFE + ((X) * sizeof(MIB_IPMCAST_OIF)))
  801. type
  802. PMIB_IPMCAST_OIF_STATS = ^MIB_IPMCAST_OIF_STATS;
  803. {$EXTERNALSYM PMIB_IPMCAST_OIF_STATS}
  804. _MIB_IPMCAST_OIF_STATS = record
  805. dwOutIfIndex: DWORD;
  806. dwNextHopAddr: DWORD;
  807. dwDialContext: DWORD;
  808. ulTtlTooLow: ULONG;
  809. ulFragNeeded: ULONG;
  810. ulOutPackets: ULONG;
  811. ulOutDiscards: ULONG;
  812. end;
  813. {$EXTERNALSYM _MIB_IPMCAST_OIF_STATS}
  814. MIB_IPMCAST_OIF_STATS = _MIB_IPMCAST_OIF_STATS;
  815. {$EXTERNALSYM MIB_IPMCAST_OIF_STATS}
  816. TMibIpmCastOifStats = MIB_IPMCAST_OIF_STATS;
  817. PMibIpmCastOifStats = PMIB_IPMCAST_OIF_STATS;
  818. PMIB_IPMCAST_MFE_STATS = ^MIB_IPMCAST_MFE_STATS;
  819. {$EXTERNALSYM PMIB_IPMCAST_MFE_STATS}
  820. _MIB_IPMCAST_MFE_STATS = record
  821. dwGroup: DWORD;
  822. dwSource: DWORD;
  823. dwSrcMask: DWORD;
  824. dwUpStrmNgbr: DWORD;
  825. dwInIfIndex: DWORD;
  826. dwInIfProtocol: DWORD;
  827. dwRouteProtocol: DWORD;
  828. dwRouteNetwork: DWORD;
  829. dwRouteMask: DWORD;
  830. ulUpTime: ULONG;
  831. ulExpiryTime: ULONG;
  832. ulNumOutIf: ULONG;
  833. ulInPkts: ULONG;
  834. ulInOctets: ULONG;
  835. ulPktsDifferentIf: ULONG;
  836. ulQueueOverflow: ULONG;
  837. rgmiosOutStats: array [0..ANY_SIZE - 1] of MIB_IPMCAST_OIF_STATS;
  838. end;
  839. {$EXTERNALSYM _MIB_IPMCAST_MFE_STATS}
  840. MIB_IPMCAST_MFE_STATS = _MIB_IPMCAST_MFE_STATS;
  841. {$EXTERNALSYM MIB_IPMCAST_MFE_STATS}
  842. TMibIpmCastMfeStats = MIB_IPMCAST_MFE_STATS;
  843. PMibIpmCastMfeStats = PMIB_IPMCAST_MFE_STATS;
  844. PMIB_MFE_STATS_TABLE = ^MIB_MFE_STATS_TABLE;
  845. {$EXTERNALSYM PMIB_MFE_STATS_TABLE}
  846. _MIB_MFE_STATS_TABLE = record
  847. dwNumEntries: DWORD;
  848. table: array [0..ANY_SIZE - 1] of MIB_IPMCAST_MFE_STATS;
  849. end;
  850. {$EXTERNALSYM _MIB_MFE_STATS_TABLE}
  851. MIB_MFE_STATS_TABLE = _MIB_MFE_STATS_TABLE;
  852. {$EXTERNALSYM MIB_MFE_STATS_TABLE}
  853. TMibMfeStatsTable = MIB_MFE_STATS_TABLE;
  854. PMibMfeStatsTable = PMIB_MFE_STATS_TABLE;
  855. // #define SIZEOF_BASIC_MIB_MFE_STATS \
  856. // (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE_STATS, rgmiosOutStats[0]))
  857. // #define SIZEOF_MIB_MFE_STATS(X) \
  858. // (SIZEOF_BASIC_MIB_MFE_STATS + ((X) * sizeof(MIB_IPMCAST_OIF_STATS)))
  859. type
  860. _MIB_IPMCAST_MFE_STATS_EX = record
  861. dwGroup: DWORD;
  862. dwSource: DWORD;
  863. dwSrcMask: DWORD;
  864. dwUpStrmNgbr: DWORD;
  865. dwInIfIndex: DWORD;
  866. dwInIfProtocol: DWORD;
  867. dwRouteProtocol: DWORD;
  868. dwRouteNetwork: DWORD;
  869. dwRouteMask: DWORD;
  870. ulUpTime: ULONG;
  871. ulExpiryTime: ULONG;
  872. ulNumOutIf: ULONG;
  873. ulInPkts: ULONG;
  874. ulInOctets: ULONG;
  875. ulPktsDifferentIf: ULONG;
  876. ulQueueOverflow: ULONG;
  877. ulUninitMfe: ULONG;
  878. ulNegativeMfe: ULONG;
  879. ulInDiscards: ULONG;
  880. ulInHdrErrors: ULONG;
  881. ulTotalOutPackets: ULONG;
  882. rgmiosOutStats: array [0..ANY_SIZE - 1] of MIB_IPMCAST_OIF_STATS;
  883. end;
  884. {$EXTERNALSYM _MIB_IPMCAST_MFE_STATS_EX}
  885. MIB_IPMCAST_MFE_STATS_EX = _MIB_IPMCAST_MFE_STATS_EX;
  886. {$EXTERNALSYM MIB_IPMCAST_MFE_STATS_EX}
  887. PMIB_IPMCAST_MFE_STATS_EX = ^MIB_IPMCAST_MFE_STATS_EX;
  888. {$EXTERNALSYM PMIB_IPMCAST_MFE_STATS_EX}
  889. TMibIpMCastMfeStatsEx = MIB_IPMCAST_MFE_STATS_EX;
  890. PMibIpMCastMfeStatsEx = PMIB_IPMCAST_MFE_STATS_EX;
  891. _MIB_MFE_STATS_TABLE_EX = record
  892. dwNumEntries: DWORD;
  893. table: array [0..ANY_SIZE - 1] of MIB_IPMCAST_MFE_STATS_EX;
  894. end;
  895. {$EXTERNALSYM _MIB_MFE_STATS_TABLE_EX}
  896. MIB_MFE_STATS_TABLE_EX = _MIB_MFE_STATS_TABLE_EX;
  897. {$EXTERNALSYM MIB_MFE_STATS_TABLE_EX}
  898. PMIB_MFE_STATS_TABLE_EX = ^MIB_MFE_STATS_TABLE_EX;
  899. {$EXTERNALSYM PMIB_MFE_STATS_TABLE_EX}
  900. TMibMfeStatsTableEx = MIB_MFE_STATS_TABLE_EX;
  901. PMibMfeStatsTableEx = PMIB_MFE_STATS_TABLE_EX;
  902. //#define SIZEOF_BASIC_MIB_MFE_STATS_EX \
  903. // (ULONG)(FIELD_OFFSET(MIB_IPMCAST_MFE_STATS_EX, rgmiosOutStats[0]))
  904. //#define SIZEOF_MIB_MFE_STATS_EX(X) \
  905. // (SIZEOF_BASIC_MIB_MFE_STATS_EX + ((X) * sizeof(MIB_IPMCAST_OIF_STATS)))
  906. type
  907. PMIB_IPMCAST_GLOBAL = ^MIB_IPMCAST_GLOBAL;
  908. {$EXTERNALSYM PMIB_IPMCAST_GLOBAL}
  909. _MIB_IPMCAST_GLOBAL = record
  910. dwEnable: DWORD;
  911. end;
  912. {$EXTERNALSYM _MIB_IPMCAST_GLOBAL}
  913. MIB_IPMCAST_GLOBAL = _MIB_IPMCAST_GLOBAL;
  914. {$EXTERNALSYM MIB_IPMCAST_GLOBAL}
  915. TMibIpmCastGlobal = MIB_IPMCAST_GLOBAL;
  916. PMibIpmCastGlobal = PMIB_IPMCAST_GLOBAL;
  917. PMIB_IPMCAST_IF_ENTRY = ^MIB_IPMCAST_IF_ENTRY;
  918. {$EXTERNALSYM PMIB_IPMCAST_IF_ENTRY}
  919. _MIB_IPMCAST_IF_ENTRY = record
  920. dwIfIndex: DWORD;
  921. dwTtl: DWORD;
  922. dwProtocol: DWORD;
  923. dwRateLimit: DWORD;
  924. ulInMcastOctets: ULONG;
  925. ulOutMcastOctets: ULONG;
  926. end;
  927. {$EXTERNALSYM _MIB_IPMCAST_IF_ENTRY}
  928. MIB_IPMCAST_IF_ENTRY = _MIB_IPMCAST_IF_ENTRY;
  929. {$EXTERNALSYM MIB_IPMCAST_IF_ENTRY}
  930. TMibIpmCastIfEntry = MIB_IPMCAST_IF_ENTRY;
  931. PMibIpmCastIfEntry = PMIB_IPMCAST_IF_ENTRY;
  932. PMIB_IPMCAST_IF_TABLE = ^MIB_IPMCAST_IF_TABLE;
  933. {$EXTERNALSYM PMIB_IPMCAST_IF_TABLE}
  934. _MIB_IPMCAST_IF_TABLE = record
  935. dwNumEntries: DWORD;
  936. table: array [0..ANY_SIZE - 1] of MIB_IPMCAST_IF_ENTRY;
  937. end;
  938. {$EXTERNALSYM _MIB_IPMCAST_IF_TABLE}
  939. MIB_IPMCAST_IF_TABLE = _MIB_IPMCAST_IF_TABLE;
  940. {$EXTERNALSYM MIB_IPMCAST_IF_TABLE}
  941. TMibIpmCastIfTable = MIB_IPMCAST_IF_TABLE;
  942. PMibIpmCastIfTable = PMIB_IPMCAST_IF_TABLE;
  943. // #define SIZEOF_MCAST_IF_TABLE(X) (FIELD_OFFSET(MIB_IPMCAST_IF_TABLE,table[0]) + ((X) * sizeof(MIB_IPMCAST_IF_ENTRY)) + ALIGN_SIZE)
  944. type
  945. PMIB_IPMCAST_BOUNDARY = ^MIB_IPMCAST_BOUNDARY;
  946. {$EXTERNALSYM PMIB_IPMCAST_BOUNDARY}
  947. _MIB_IPMCAST_BOUNDARY = record
  948. dwIfIndex: DWORD;
  949. dwGroupAddress: DWORD;
  950. dwGroupMask: DWORD;
  951. dwStatus: DWORD;
  952. end;
  953. {$EXTERNALSYM _MIB_IPMCAST_BOUNDARY}
  954. MIB_IPMCAST_BOUNDARY = _MIB_IPMCAST_BOUNDARY;
  955. {$EXTERNALSYM MIB_IPMCAST_BOUNDARY}
  956. TMibIpmCastBoundary = MIB_IPMCAST_BOUNDARY;
  957. PMibIpmCastBoundary = PMIB_IPMCAST_BOUNDARY;
  958. PMIB_IPMCAST_BOUNDARY_TABLE = ^MIB_IPMCAST_BOUNDARY_TABLE;
  959. {$EXTERNALSYM PMIB_IPMCAST_BOUNDARY_TABLE}
  960. _MIB_IPMCAST_BOUNDARY_TABLE = record
  961. dwNumEntries: DWORD;
  962. table: array [0..ANY_SIZE - 1] of MIB_IPMCAST_BOUNDARY;
  963. end;
  964. {$EXTERNALSYM _MIB_IPMCAST_BOUNDARY_TABLE}
  965. MIB_IPMCAST_BOUNDARY_TABLE = _MIB_IPMCAST_BOUNDARY_TABLE;
  966. {$EXTERNALSYM MIB_IPMCAST_BOUNDARY_TABLE}
  967. TMibIpmCastBoundaryTable = MIB_IPMCAST_BOUNDARY_TABLE;
  968. PMibIpmCastBoundaryTable = PMIB_IPMCAST_BOUNDARY_TABLE;
  969. // #define SIZEOF_BOUNDARY_TABLE(X) (FIELD_OFFSET(MIB_IPMCAST_BOUNDARY_TABLE,table[0]) + ((X) * sizeof(MIB_IPMCAST_BOUNDARY)) + ALIGN_SIZE)
  970. type
  971. PMIB_BOUNDARYROW = ^MIB_BOUNDARYROW;
  972. {$EXTERNALSYM PMIB_BOUNDARYROW}
  973. MIB_BOUNDARYROW = record
  974. dwGroupAddress: DWORD;
  975. dwGroupMask: DWORD;
  976. end;
  977. {$EXTERNALSYM MIB_BOUNDARYROW}
  978. TMibBoundaryRow = MIB_BOUNDARYROW;
  979. PMibBoundaryRow = PMIB_BOUNDARYROW;
  980. // Structure matching what goes in the registry in a block of type
  981. // IP_MCAST_LIMIT_INFO. This contains the fields of
  982. // MIB_IPMCAST_IF_ENTRY which are configurable.
  983. PMIB_MCAST_LIMIT_ROW = ^MIB_MCAST_LIMIT_ROW;
  984. {$EXTERNALSYM PMIB_MCAST_LIMIT_ROW}
  985. MIB_MCAST_LIMIT_ROW = record
  986. dwTtl: DWORD;
  987. dwRateLimit: DWORD;
  988. end;
  989. {$EXTERNALSYM MIB_MCAST_LIMIT_ROW}
  990. TMibMcastLimitRow = MIB_MCAST_LIMIT_ROW;
  991. PMibMcastLimitRow = PMIB_MCAST_LIMIT_ROW;
  992. const
  993. MAX_SCOPE_NAME_LEN = 255;
  994. {$EXTERNALSYM MAX_SCOPE_NAME_LEN}
  995. //
  996. // Scope names are unicode. SNMP and MZAP use UTF-8 encoding.
  997. //
  998. type
  999. SN_CHAR = WCHAR;
  1000. {$EXTERNALSYM SN_CHAR}
  1001. SCOPE_NAME_BUFFER = array [0..MAX_SCOPE_NAME_LEN] of SN_CHAR;
  1002. {$EXTERNALSYM SCOPE_NAME_BUFFER}
  1003. SCOPE_NAME = ^SN_CHAR;
  1004. {$EXTERNALSYM SCOPE_NAME}
  1005. PMIB_IPMCAST_SCOPE = ^MIB_IPMCAST_SCOPE;
  1006. {$EXTERNALSYM PMIB_IPMCAST_SCOPE}
  1007. _MIB_IPMCAST_SCOPE = record
  1008. dwGroupAddress: DWORD;
  1009. dwGroupMask: DWORD;
  1010. snNameBuffer: SCOPE_NAME_BUFFER;
  1011. dwStatus: DWORD;
  1012. end;
  1013. {$EXTERNALSYM _MIB_IPMCAST_SCOPE}
  1014. MIB_IPMCAST_SCOPE = _MIB_IPMCAST_SCOPE;
  1015. {$EXTERNALSYM MIB_IPMCAST_SCOPE}
  1016. TMibIpmCastScope = MIB_IPMCAST_SCOPE;
  1017. PMibIpmCastScope = PMIB_IPMCAST_SCOPE;
  1018. PMIB_IPDESTROW = ^MIB_IPDESTROW;
  1019. {$EXTERNALSYM PMIB_IPDESTROW}
  1020. _MIB_IPDESTROW = record
  1021. ForwardRow: MIB_IPFORWARDROW;
  1022. dwForwardPreference: DWORD;
  1023. dwForwardViewSet: DWORD;
  1024. end;
  1025. {$EXTERNALSYM _MIB_IPDESTROW}
  1026. MIB_IPDESTROW = _MIB_IPDESTROW;
  1027. {$EXTERNALSYM MIB_IPDESTROW}
  1028. TMibIpDestRow = MIB_IPDESTROW;
  1029. PMibIpDestRow = PMIB_IPDESTROW;
  1030. PMIB_IPDESTTABLE = ^MIB_IPDESTTABLE;
  1031. {$EXTERNALSYM PMIB_IPDESTTABLE}
  1032. _MIB_IPDESTTABLE = record
  1033. dwNumEntries: DWORD;
  1034. table: array [0..ANY_SIZE - 1] of MIB_IPDESTROW;
  1035. end;
  1036. {$EXTERNALSYM _MIB_IPDESTTABLE}
  1037. MIB_IPDESTTABLE = _MIB_IPDESTTABLE;
  1038. {$EXTERNALSYM MIB_IPDESTTABLE}
  1039. TMibIpDestTable = MIB_IPDESTTABLE;
  1040. PMibIpDestTable = PMIB_IPDESTTABLE;
  1041. PMIB_BEST_IF = ^MIB_BEST_IF;
  1042. {$EXTERNALSYM PMIB_BEST_IF}
  1043. _MIB_BEST_IF = record
  1044. dwDestAddr: DWORD;
  1045. dwIfIndex: DWORD;
  1046. end;
  1047. {$EXTERNALSYM _MIB_BEST_IF}
  1048. MIB_BEST_IF = _MIB_BEST_IF;
  1049. {$EXTERNALSYM MIB_BEST_IF}
  1050. TMibBestIf = MIB_BEST_IF;
  1051. PMibBestIf = PMIB_BEST_IF;
  1052. PMIB_PROXYARP = ^MIB_PROXYARP;
  1053. {$EXTERNALSYM PMIB_PROXYARP}
  1054. _MIB_PROXYARP = record
  1055. dwAddress: DWORD;
  1056. dwMask: DWORD;
  1057. dwIfIndex: DWORD;
  1058. end;
  1059. {$EXTERNALSYM _MIB_PROXYARP}
  1060. MIB_PROXYARP = _MIB_PROXYARP;
  1061. {$EXTERNALSYM MIB_PROXYARP}
  1062. TMibProxyArp = MIB_PROXYARP;
  1063. PMibProxyArp = PMIB_PROXYARP;
  1064. PMIB_IFSTATUS = ^MIB_IFSTATUS;
  1065. {$EXTERNALSYM PMIB_IFSTATUS}
  1066. _MIB_IFSTATUS = record
  1067. dwIfIndex: DWORD;
  1068. dwAdminStatus: DWORD;
  1069. dwOperationalStatus: DWORD;
  1070. bMHbeatActive: BOOL;
  1071. bMHbeatAlive: BOOL;
  1072. end;
  1073. {$EXTERNALSYM _MIB_IFSTATUS}
  1074. MIB_IFSTATUS = _MIB_IFSTATUS;
  1075. {$EXTERNALSYM MIB_IFSTATUS}
  1076. TMibIfStatus = MIB_IFSTATUS;
  1077. PMibIfStatus = PMIB_IFSTATUS;
  1078. PMIB_ROUTESTATE = ^MIB_ROUTESTATE;
  1079. {$EXTERNALSYM PMIB_ROUTESTATE}
  1080. _MIB_ROUTESTATE = record
  1081. bRoutesSetToStack: BOOL;
  1082. end;
  1083. {$EXTERNALSYM _MIB_ROUTESTATE}
  1084. MIB_ROUTESTATE = _MIB_ROUTESTATE;
  1085. {$EXTERNALSYM MIB_ROUTESTATE}
  1086. TMibRouteState = MIB_ROUTESTATE;
  1087. PMibRouteState = PMIB_ROUTESTATE;
  1088. //////////////////////////////////////////////////////////////////////////////
  1089. // //
  1090. // All the info passed to (SET/CREATE) and from (GET/GETNEXT/GETFIRST) //
  1091. // IP Router Manager is encapsulated in the following "discriminated" //
  1092. // union. To pass, say MIB_IFROW, use the following code //
  1093. // //
  1094. // PMIB_OPAQUE_INFO pInfo; //
  1095. // PMIB_IFROW pIfRow; //
  1096. // DWORD rgdwBuff[(MAX_MIB_OFFSET + sizeof(MIB_IFROW))/sizeof(DWORD) + 1]; //
  1097. // //
  1098. // pInfo = (PMIB_OPAQUE_INFO)rgdwBuffer; //
  1099. // pIfRow = (MIB_IFROW *)(pInfo->rgbyData); //
  1100. // //
  1101. // This can also be accomplished by using the following macro //
  1102. // //
  1103. // DEFINE_MIB_BUFFER(pInfo,MIB_IFROW, pIfRow); //
  1104. // //
  1105. //////////////////////////////////////////////////////////////////////////////
  1106. type
  1107. PMibOpaqueInfo = ^TMibOpaqueInfo;
  1108. _MIB_OPAQUE_INFO = record
  1109. dwId: DWORD;
  1110. case Integer of
  1111. 0: (ullAlign: Int64); // ULONGLONG (unsigned!)
  1112. 1: (rgbyData: array [0..0] of BYTE);
  1113. end;
  1114. {$EXTERNALSYM _MIB_OPAQUE_INFO}
  1115. MIB_OPAQUE_INFO = _MIB_OPAQUE_INFO;
  1116. {$EXTERNALSYM MIB_OPAQUE_INFO}
  1117. TMibOpaqueInfo = MIB_OPAQUE_INFO;
  1118. const
  1119. MAX_MIB_OFFSET = 8;
  1120. {$EXTERNALSYM MAX_MIB_OFFSET}
  1121. // #define MIB_INFO_SIZE(S) (MAX_MIB_OFFSET + sizeof(S))
  1122. // #define MIB_INFO_SIZE_IN_DWORDS(S) \
  1123. // ((MIB_INFO_SIZE(S))/sizeof(DWORD) + 1)
  1124. // #define DEFINE_MIB_BUFFER(X,Y,Z) \
  1125. // DWORD __rgdwBuff[MIB_INFO_SIZE_IN_DWORDS(Y)]; \
  1126. // PMIB_OPAQUE_INFO X = (PMIB_OPAQUE_INFO)__rgdwBuff; \
  1127. // Y * Z = (Y *)(X->rgbyData)
  1128. // #define CAST_MIB_INFO(X,Y,Z) Z = (Y)(X->rgbyData)
  1129. implementation
  1130. end.