jwaiprtrmib.pas 40 KB

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