jwaiprtrmib.pas 41 KB

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