jwasnmp.pas 36 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180
  1. {******************************************************************************}
  2. { }
  3. { Simple Network Management Protocol 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: snmp.h, released October 2001. The original Pascal }
  9. { code is: SNMP.pas, released October 2001. The initial developer of the }
  10. { Pascal code is Petr Vones (petr dott v att mujmail dott cz). }
  11. { }
  12. { Portions created by Marcel van Brakel are Copyright (C) 1999-2001 }
  13. { Marcel van Brakel. All Rights Reserved. }
  14. { }
  15. { Obtained through: Joint Endeavour of Delphi Innovators (Project JEDI) }
  16. { }
  17. { You may retrieve the latest version of this file at the Project JEDI }
  18. { APILIB home page, located at http://jedi-apilib.sourceforge.net }
  19. { }
  20. { The contents of this file are used with permission, subject to the Mozilla }
  21. { Public License Version 1.1 (the "License"); you may not use this file except }
  22. { in compliance with the License. You may obtain a copy of the License at }
  23. { http://www.mozilla.org/MPL/MPL-1.1.html }
  24. { }
  25. { Software distributed under the License is distributed on an "AS IS" basis, }
  26. { WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License for }
  27. { the specific language governing rights and limitations under the License. }
  28. { }
  29. { Alternatively, the contents of this file may be used under the terms of the }
  30. { GNU Lesser General Public License (the "LGPL License"), in which case the }
  31. { provisions of the LGPL License are applicable instead of those above. }
  32. { If you wish to allow use of your version of this file only under the terms }
  33. { of the LGPL License and not to allow others to use your version of this file }
  34. { under the MPL, indicate your decision by deleting the provisions above and }
  35. { replace them with the notice and other provisions required by the LGPL }
  36. { License. If you do not delete the provisions above, a recipient may use }
  37. { your version of this file under either the MPL or the LGPL License. }
  38. { }
  39. { For more information about the LGPL: http://www.gnu.org/copyleft/lesser.html }
  40. { }
  41. {******************************************************************************}
  42. unit JwaSnmp;
  43. {$WEAKPACKAGEUNIT}
  44. {$HPPEMIT ''}
  45. {$HPPEMIT '#include "snmp.h"'}
  46. {$HPPEMIT ''}
  47. {$I jediapilib.inc}
  48. interface
  49. uses
  50. JwaWinType;
  51. type
  52. PAsnOctetString = ^TAsnOctetString;
  53. TAsnOctetString = record
  54. stream: PChar;
  55. length: UINT;
  56. dynamic_: BOOL;
  57. end;
  58. {$EXTERNALSYM TAsnOctetString}
  59. PAsnObjectIdentifier = ^TAsnObjectIdentifier;
  60. TAsnObjectIdentifier = record
  61. idLength: UINT;
  62. ids: PUINT;
  63. end;
  64. {$EXTERNALSYM TAsnObjectIdentifier}
  65. TAsnInteger32 = LONG;
  66. {$EXTERNALSYM TAsnInteger32}
  67. TAsnUnsigned32 = ULONG;
  68. {$EXTERNALSYM TAsnUnsigned32}
  69. TAsnCounter64 = ULARGE_INTEGER;
  70. {$EXTERNALSYM TAsnCounter64}
  71. TAsnCounter32 = TAsnUnsigned32;
  72. {$EXTERNALSYM TAsnCounter32}
  73. TAsnGauge32 = TAsnUnsigned32;
  74. {$EXTERNALSYM TAsnGauge32}
  75. TAsnTimeticks = TAsnUnsigned32;
  76. {$EXTERNALSYM TAsnTimeticks}
  77. TAsnBits = TAsnOctetString;
  78. {$EXTERNALSYM TAsnBits}
  79. TAsnSequence = TAsnOctetString;
  80. {$EXTERNALSYM TAsnSequence}
  81. TAsnImplicitSequence = TAsnOctetString;
  82. {$EXTERNALSYM TAsnImplicitSequence}
  83. TAsnIPAddress = TAsnOctetString;
  84. {$EXTERNALSYM TAsnIPAddress}
  85. TAsnNetworkAddress = TAsnOctetString;
  86. {$EXTERNALSYM TAsnNetworkAddress}
  87. TAsnDisplayString = TAsnOctetString;
  88. {$EXTERNALSYM TAsnDisplayString}
  89. TAsnOpaque = TAsnOctetString;
  90. {$EXTERNALSYM TAsnOpaque}
  91. PAsnAny = ^TAsnAny;
  92. TAsnAny = record
  93. asnType: Byte;
  94. case Integer of
  95. 0: (number: TAsnInteger32); // ASN_INTEGER, ASN_INTEGER32
  96. 1: (unsigned32: TAsnUnsigned32); // ASN_UNSIGNED32
  97. 2: (counter64: TAsnCounter64); // ASN_COUNTER64
  98. 3: (string_: TAsnOctetString); // ASN_OCTETSTRING
  99. 4: (bits: TAsnBits); // ASN_BITS
  100. 5: (object_: TAsnObjectIdentifier); // ASN_OBJECTIDENTIFIER
  101. 6: (sequence: TAsnSequence); // ASN_SEQUENCE
  102. 7: (address: TAsnIPAddress); // ASN_IPADDRESS
  103. 8: (counter: TAsnCounter32); // ASN_COUNTER32
  104. 9: (gauge: TAsnGauge32); // ASN_GAUGE32
  105. 10: (ticks: TAsnTimeticks); // ASN_TIMETICKS
  106. 11: (arbitrary: TAsnOpaque); // ASN_OPAQUE
  107. end;
  108. {$EXTERNALSYM TAsnAny}
  109. TAsnObjectName = TAsnObjectIdentifier;
  110. {$EXTERNALSYM TAsnObjectName}
  111. TAsnObjectSyntax = TAsnAny;
  112. {$EXTERNALSYM TAsnObjectSyntax}
  113. PSnmpVarBind = ^TSnmpVarBind;
  114. TSnmpVarBind = record
  115. name: TAsnObjectName;
  116. value: TAsnObjectSyntax;
  117. end;
  118. {$EXTERNALSYM TSnmpVarBind}
  119. PSnmpVarBindList = ^TSnmpVarBindList;
  120. TSnmpVarBindList = record
  121. list: PSnmpVarBind;
  122. len: UINT;
  123. end;
  124. {$EXTERNALSYM TSnmpVarBindList}
  125. const
  126. // (rom) deactivated seems useless
  127. { IFNDEF _INC_WINSNMP}
  128. { ASN/BER Base Types }
  129. ASN_UNIVERSAL = $00;
  130. {$EXTERNALSYM ASN_UNIVERSAL}
  131. ASN_APPLICATION = $40;
  132. {$EXTERNALSYM ASN_APPLICATION}
  133. ASN_CONTEXT = $80;
  134. {$EXTERNALSYM ASN_CONTEXT}
  135. ASN_PRIVATE = $C0;
  136. {$EXTERNALSYM ASN_PRIVATE}
  137. ASN_PRIMITIVE = $00;
  138. {$EXTERNALSYM ASN_PRIMITIVE}
  139. ASN_CONSTRUCTOR = $20;
  140. {$EXTERNALSYM ASN_CONSTRUCTOR}
  141. { PDU Type Values }
  142. SNMP_PDU_GET = ASN_CONTEXT or ASN_CONSTRUCTOR or $0;
  143. {$EXTERNALSYM SNMP_PDU_GET}
  144. SNMP_PDU_GETNEXT = ASN_CONTEXT or ASN_CONSTRUCTOR or $1;
  145. {$EXTERNALSYM SNMP_PDU_GETNEXT}
  146. SNMP_PDU_RESPONSE = ASN_CONTEXT or ASN_CONSTRUCTOR or $2;
  147. {$EXTERNALSYM SNMP_PDU_RESPONSE}
  148. SNMP_PDU_SET = ASN_CONTEXT or ASN_CONSTRUCTOR or $3;
  149. {$EXTERNALSYM SNMP_PDU_SET}
  150. SNMP_PDU_V1TRAP = ASN_CONTEXT or ASN_CONSTRUCTOR or $4;
  151. {$EXTERNALSYM SNMP_PDU_V1TRAP}
  152. SNMP_PDU_GETBULK = ASN_CONTEXT or ASN_CONSTRUCTOR or $5;
  153. {$EXTERNALSYM SNMP_PDU_GETBULK}
  154. SNMP_PDU_INFORM = ASN_CONTEXT or ASN_CONSTRUCTOR or $6;
  155. {$EXTERNALSYM SNMP_PDU_INFORM}
  156. SNMP_PDU_TRAP = ASN_CONTEXT or ASN_CONSTRUCTOR or $7;
  157. {$EXTERNALSYM SNMP_PDU_TRAP}
  158. // (rom) deactivated seems useless
  159. { ENDIF _INC_WINSNMP}
  160. { SNMP Simple Syntax Values }
  161. ASN_INTEGER = ASN_UNIVERSAL or ASN_PRIMITIVE or $02;
  162. {$EXTERNALSYM ASN_INTEGER}
  163. ASN_BITS = ASN_UNIVERSAL or ASN_PRIMITIVE or $03;
  164. {$EXTERNALSYM ASN_BITS}
  165. ASN_OCTETSTRING = ASN_UNIVERSAL or ASN_PRIMITIVE or $04;
  166. {$EXTERNALSYM ASN_OCTETSTRING}
  167. ASN_NULL = ASN_UNIVERSAL or ASN_PRIMITIVE or $05;
  168. {$EXTERNALSYM ASN_NULL}
  169. ASN_OBJECTIDENTIFIER = ASN_UNIVERSAL or ASN_PRIMITIVE or $06;
  170. {$EXTERNALSYM ASN_OBJECTIDENTIFIER}
  171. ASN_INTEGER32 = ASN_INTEGER;
  172. {$EXTERNALSYM ASN_INTEGER32}
  173. { SNMP Constructor Syntax Values }
  174. ASN_SEQUENCE = ASN_UNIVERSAL or ASN_CONSTRUCTOR or $10;
  175. {$EXTERNALSYM ASN_SEQUENCE}
  176. ASN_SEQUENCEOF = ASN_SEQUENCE;
  177. {$EXTERNALSYM ASN_SEQUENCEOF}
  178. { SNMP Application Syntax Values }
  179. ASN_IPADDRESS = ASN_APPLICATION or ASN_PRIMITIVE or $00;
  180. {$EXTERNALSYM ASN_IPADDRESS}
  181. ASN_COUNTER32 = ASN_APPLICATION or ASN_PRIMITIVE or $01;
  182. {$EXTERNALSYM ASN_COUNTER32}
  183. ASN_GAUGE32 = ASN_APPLICATION or ASN_PRIMITIVE or $02;
  184. {$EXTERNALSYM ASN_GAUGE32}
  185. ASN_TIMETICKS = ASN_APPLICATION or ASN_PRIMITIVE or $03;
  186. {$EXTERNALSYM ASN_TIMETICKS}
  187. ASN_OPAQUE = ASN_APPLICATION or ASN_PRIMITIVE or $04;
  188. {$EXTERNALSYM ASN_OPAQUE}
  189. ASN_COUNTER64 = ASN_APPLICATION or ASN_PRIMITIVE or $06;
  190. {$EXTERNALSYM ASN_COUNTER64}
  191. ASN_UINTEGER32 = ASN_APPLICATION or ASN_PRIMITIVE or $07;
  192. {$EXTERNALSYM ASN_UINTEGER32}
  193. ASN_RFC2578_UNSIGNED32 = ASN_GAUGE32;
  194. {$EXTERNALSYM ASN_RFC2578_UNSIGNED32}
  195. { SNMP Exception Conditions }
  196. SNMP_EXCEPTION_NOSUCHOBJECT = ASN_CONTEXT or ASN_PRIMITIVE or $00;
  197. {$EXTERNALSYM SNMP_EXCEPTION_NOSUCHOBJECT}
  198. SNMP_EXCEPTION_NOSUCHINSTANCE = ASN_CONTEXT or ASN_PRIMITIVE or $01;
  199. {$EXTERNALSYM SNMP_EXCEPTION_NOSUCHINSTANCE}
  200. SNMP_EXCEPTION_ENDOFMIBVIEW = ASN_CONTEXT or ASN_PRIMITIVE or $02;
  201. {$EXTERNALSYM SNMP_EXCEPTION_ENDOFMIBVIEW}
  202. { SNMP Request Types (used in SnmpExtensionQueryEx) }
  203. SNMP_EXTENSION_GET = SNMP_PDU_GET;
  204. {$EXTERNALSYM SNMP_EXTENSION_GET}
  205. SNMP_EXTENSION_GET_NEXT = SNMP_PDU_GETNEXT;
  206. {$EXTERNALSYM SNMP_EXTENSION_GET_NEXT}
  207. SNMP_EXTENSION_GET_BULK = SNMP_PDU_GETBULK;
  208. {$EXTERNALSYM SNMP_EXTENSION_GET_BULK}
  209. SNMP_EXTENSION_SET_TEST = ASN_PRIVATE or ASN_CONSTRUCTOR or $0;
  210. {$EXTERNALSYM SNMP_EXTENSION_SET_TEST}
  211. SNMP_EXTENSION_SET_COMMIT = SNMP_PDU_SET;
  212. {$EXTERNALSYM SNMP_EXTENSION_SET_COMMIT}
  213. SNMP_EXTENSION_SET_UNDO = ASN_PRIVATE or ASN_CONSTRUCTOR or $1;
  214. {$EXTERNALSYM SNMP_EXTENSION_SET_UNDO}
  215. SNMP_EXTENSION_SET_CLEANUP = ASN_PRIVATE or ASN_CONSTRUCTOR or $2;
  216. {$EXTERNALSYM SNMP_EXTENSION_SET_CLEANUP}
  217. { SNMP Error Codes }
  218. SNMP_ERRORSTATUS_NOERROR = 0;
  219. {$EXTERNALSYM SNMP_ERRORSTATUS_NOERROR}
  220. SNMP_ERRORSTATUS_TOOBIG = 1;
  221. {$EXTERNALSYM SNMP_ERRORSTATUS_TOOBIG}
  222. SNMP_ERRORSTATUS_NOSUCHNAME = 2;
  223. {$EXTERNALSYM SNMP_ERRORSTATUS_NOSUCHNAME}
  224. SNMP_ERRORSTATUS_BADVALUE = 3;
  225. {$EXTERNALSYM SNMP_ERRORSTATUS_BADVALUE}
  226. SNMP_ERRORSTATUS_READONLY = 4;
  227. {$EXTERNALSYM SNMP_ERRORSTATUS_READONLY}
  228. SNMP_ERRORSTATUS_GENERR = 5;
  229. {$EXTERNALSYM SNMP_ERRORSTATUS_GENERR}
  230. SNMP_ERRORSTATUS_NOACCESS = 6;
  231. {$EXTERNALSYM SNMP_ERRORSTATUS_NOACCESS}
  232. SNMP_ERRORSTATUS_WRONGTYPE = 7;
  233. {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGTYPE}
  234. SNMP_ERRORSTATUS_WRONGLENGTH = 8;
  235. {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGLENGTH}
  236. SNMP_ERRORSTATUS_WRONGENCODING = 9;
  237. {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGENCODING}
  238. SNMP_ERRORSTATUS_WRONGVALUE = 10;
  239. {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGVALUE}
  240. SNMP_ERRORSTATUS_NOCREATION = 11;
  241. {$EXTERNALSYM SNMP_ERRORSTATUS_NOCREATION}
  242. SNMP_ERRORSTATUS_INCONSISTENTVALUE = 12;
  243. {$EXTERNALSYM SNMP_ERRORSTATUS_INCONSISTENTVALUE}
  244. SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE = 13;
  245. {$EXTERNALSYM SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE}
  246. SNMP_ERRORSTATUS_COMMITFAILED = 14;
  247. {$EXTERNALSYM SNMP_ERRORSTATUS_COMMITFAILED}
  248. SNMP_ERRORSTATUS_UNDOFAILED = 15;
  249. {$EXTERNALSYM SNMP_ERRORSTATUS_UNDOFAILED}
  250. SNMP_ERRORSTATUS_AUTHORIZATIONERROR = 16;
  251. {$EXTERNALSYM SNMP_ERRORSTATUS_AUTHORIZATIONERROR}
  252. SNMP_ERRORSTATUS_NOTWRITABLE = 17;
  253. {$EXTERNALSYM SNMP_ERRORSTATUS_NOTWRITABLE}
  254. SNMP_ERRORSTATUS_INCONSISTENTNAME = 18;
  255. {$EXTERNALSYM SNMP_ERRORSTATUS_INCONSISTENTNAME}
  256. { SNMPv1 Trap Types }
  257. SNMP_GENERICTRAP_COLDSTART = 0;
  258. {$EXTERNALSYM SNMP_GENERICTRAP_COLDSTART}
  259. SNMP_GENERICTRAP_WARMSTART = 1;
  260. {$EXTERNALSYM SNMP_GENERICTRAP_WARMSTART}
  261. SNMP_GENERICTRAP_LINKDOWN = 2;
  262. {$EXTERNALSYM SNMP_GENERICTRAP_LINKDOWN}
  263. SNMP_GENERICTRAP_LINKUP = 3;
  264. {$EXTERNALSYM SNMP_GENERICTRAP_LINKUP}
  265. SNMP_GENERICTRAP_AUTHFAILURE = 4;
  266. {$EXTERNALSYM SNMP_GENERICTRAP_AUTHFAILURE}
  267. SNMP_GENERICTRAP_EGPNEIGHLOSS = 5;
  268. {$EXTERNALSYM SNMP_GENERICTRAP_EGPNEIGHLOSS}
  269. SNMP_GENERICTRAP_ENTERSPECIFIC = 6;
  270. {$EXTERNALSYM SNMP_GENERICTRAP_ENTERSPECIFIC}
  271. { SNMP Access Types }
  272. SNMP_ACCESS_NONE = 0;
  273. {$EXTERNALSYM SNMP_ACCESS_NONE}
  274. SNMP_ACCESS_NOTIFY = 1;
  275. {$EXTERNALSYM SNMP_ACCESS_NOTIFY}
  276. SNMP_ACCESS_READ_ONLY = 2;
  277. {$EXTERNALSYM SNMP_ACCESS_READ_ONLY}
  278. SNMP_ACCESS_READ_WRITE = 3;
  279. {$EXTERNALSYM SNMP_ACCESS_READ_WRITE}
  280. SNMP_ACCESS_READ_CREATE = 4;
  281. {$EXTERNALSYM SNMP_ACCESS_READ_CREATE}
  282. { SNMP API Return Code Definitions }
  283. type
  284. SNMPAPI = Integer;
  285. {$EXTERNALSYM SNMPAPI}
  286. const
  287. SNMPAPI_NOERROR = True;
  288. {$EXTERNALSYM SNMPAPI_NOERROR}
  289. SNMPAPI_ERROR = False;
  290. {$EXTERNALSYM SNMPAPI_ERROR}
  291. { SNMP Extension API Type Definitions }
  292. type
  293. TSnmpExtensionInit = function(dwUptimeReference: DWORD; var phSubagentTrapEvent: HANDLE;
  294. var pFirstSupportedRegion: PAsnObjectIdentifier): BOOL; stdcall;
  295. TSnmpExtensionInitEx = function(var pNextSupportedRegion: PAsnObjectIdentifier): BOOL; stdcall;
  296. TSnmpExtensionMonitor = function(pAgentMgmtData: LPVOID): BOOL; stdcall;
  297. TSnmpExtensionQuery = function(bPduType: Byte; var pVarBindList: TSnmpVarBindList;
  298. var pErrorStatus: TAsnInteger32; var pErrorIndex: TAsnInteger32): BOOL; stdcall;
  299. TSnmpExtensionQueryEx = function(nRequestType: UINT; nTransactionId: UINT; var pVarBindList: PSnmpVarBindList;
  300. var pContextInfo: PAsnOctetString; var pErrorStatus: TAsnInteger32; var pErrorIndex: TAsnInteger32): BOOL; stdcall;
  301. TSnmpExtensionTrap = function(pEnterpriseOid: PAsnObjectIdentifier; var pGenericTrapId: TAsnInteger32;
  302. var pSpecificTrapId: TAsnInteger32; var pTimeStamp: TAsnTimeticks; var pVarBindList: PSnmpVarBindList): BOOL; stdcall;
  303. TSnmpExtensionClose = procedure; stdcall;
  304. { SNMP API Prototypes }
  305. function SnmpUtilOidCpy(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
  306. {$EXTERNALSYM SnmpUtilOidCpy}
  307. function SnmpUtilOidAppend(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
  308. {$EXTERNALSYM SnmpUtilOidAppend}
  309. function SnmpUtilOidNCmp(pOid1, pOid2: PAsnObjectIdentifier; nSubIds: UINT): SNMPAPI; stdcall;
  310. {$EXTERNALSYM SnmpUtilOidNCmp}
  311. function SnmpUtilOidCmp(pOid1, pOid2: PAsnObjectIdentifier): SNMPAPI; stdcall;
  312. {$EXTERNALSYM SnmpUtilOidCmp}
  313. procedure SnmpUtilOidFree(pOid: TAsnObjectIdentifier); stdcall;
  314. {$EXTERNALSYM SnmpUtilOidFree}
  315. function SnmpUtilOctetsCmp(pOctets1, pOctets2: PAsnOctetString): SNMPAPI; stdcall;
  316. {$EXTERNALSYM SnmpUtilOctetsCmp}
  317. function SnmpUtilOctetsNCmp(pOctets1, pOctets2: PAsnOctetString; nChars: UINT): SNMPAPI; stdcall;
  318. {$EXTERNALSYM SnmpUtilOctetsNCmp}
  319. function SnmpUtilOctetsCpy(pOctetsDst, pOctetsSrc: PAsnOctetString): SNMPAPI; stdcall;
  320. {$EXTERNALSYM SnmpUtilOctetsCpy}
  321. procedure SnmpUtilOctetsFree(pOctets: PAsnOctetString); stdcall;
  322. {$EXTERNALSYM SnmpUtilOctetsFree}
  323. function SnmpUtilAsnAnyCpy(pAnyDst, pAnySrc: PAsnAny): SNMPAPI; stdcall;
  324. {$EXTERNALSYM SnmpUtilAsnAnyCpy}
  325. procedure SnmpUtilAsnAnyFree(pAny: PAsnAny); stdcall;
  326. {$EXTERNALSYM SnmpUtilAsnAnyFree}
  327. function SnmpUtilVarBindCpy(pVbDst: PSnmpVarBind; pVbSrc: PSnmpVarBind): SNMPAPI; stdcall;
  328. {$EXTERNALSYM SnmpUtilVarBindCpy}
  329. procedure SnmpUtilVarBindFree(pVb: PSnmpVarBind); stdcall;
  330. {$EXTERNALSYM SnmpUtilVarBindFree}
  331. function SnmpUtilVarBindListCpy(pVblDst: PSnmpVarBindList; pVblSrc: PSnmpVarBindList): SNMPAPI; stdcall;
  332. {$EXTERNALSYM SnmpUtilVarBindListCpy}
  333. procedure SnmpUtilVarBindListFree(pVbl: PSnmpVarBindList); stdcall;
  334. {$EXTERNALSYM SnmpUtilVarBindListFree}
  335. procedure SnmpUtilMemFree(pMem: LPVOID); stdcall;
  336. {$EXTERNALSYM SnmpUtilMemFree}
  337. function SnmpUtilMemAlloc(nBytes: UINT): LPVOID; stdcall;
  338. {$EXTERNALSYM SnmpUtilMemAlloc}
  339. function SnmpUtilMemReAlloc(pMem: LPVOID; nBytes: UINT): LPVOID; stdcall;
  340. {$EXTERNALSYM SnmpUtilMemReAlloc}
  341. function SnmpUtilOidToA(Oid: PAsnObjectIdentifier): LPSTR; stdcall;
  342. {$EXTERNALSYM SnmpUtilOidToA}
  343. function SnmpUtilIdsToA(Ids: PUINT; IdLength: UINT): LPSTR; stdcall;
  344. {$EXTERNALSYM SnmpUtilIdsToA}
  345. procedure SnmpUtilPrintOid(Oid: PAsnObjectIdentifier); stdcall;
  346. {$EXTERNALSYM SnmpUtilPrintOid}
  347. procedure SnmpUtilPrintAsnAny(pAny: PAsnAny); stdcall;
  348. {$EXTERNALSYM SnmpUtilPrintAsnAny}
  349. function SnmpSvcGetUptime: DWORD; stdcall;
  350. {$EXTERNALSYM SnmpSvcGetUptime}
  351. procedure SnmpSvcSetLogLevel(nLogLevel: INT); stdcall;
  352. {$EXTERNALSYM SnmpSvcSetLogLevel}
  353. procedure SnmpSvcSetLogType(nLogType: INT); stdcall;
  354. {$EXTERNALSYM SnmpSvcSetLogType}
  355. { SNMP Debugging Definitions }
  356. const
  357. SNMP_LOG_SILENT = $0;
  358. {$EXTERNALSYM SNMP_LOG_SILENT}
  359. SNMP_LOG_FATAL = $1;
  360. {$EXTERNALSYM SNMP_LOG_FATAL}
  361. SNMP_LOG_ERROR = $2;
  362. {$EXTERNALSYM SNMP_LOG_ERROR}
  363. SNMP_LOG_WARNING = $3;
  364. {$EXTERNALSYM SNMP_LOG_WARNING}
  365. SNMP_LOG_TRACE = $4;
  366. {$EXTERNALSYM SNMP_LOG_TRACE}
  367. SNMP_LOG_VERBOSE = $5;
  368. {$EXTERNALSYM SNMP_LOG_VERBOSE}
  369. SNMP_OUTPUT_TO_CONSOLE = $1;
  370. {$EXTERNALSYM SNMP_OUTPUT_TO_CONSOLE}
  371. SNMP_OUTPUT_TO_LOGFILE = $2;
  372. {$EXTERNALSYM SNMP_OUTPUT_TO_LOGFILE}
  373. SNMP_OUTPUT_TO_EVENTLOG = $4; // no longer supported
  374. {$EXTERNALSYM SNMP_OUTPUT_TO_EVENTLOG}
  375. SNMP_OUTPUT_TO_DEBUGGER = $8;
  376. {$EXTERNALSYM SNMP_OUTPUT_TO_DEBUGGER}
  377. { SNMP Debugging Prototypes }
  378. procedure SnmpUtilDbgPrint(nLogLevel: INT; szFormat: LPSTR); stdcall;
  379. {$EXTERNALSYM SnmpUtilDbgPrint}
  380. { Miscellaneous definitions }
  381. const
  382. DEFINE_NULLOID: TAsnObjectIdentifier = (idLength: 0; ids: nil);
  383. {$EXTERNALSYM DEFINE_NULLOID}
  384. DEFINE_NULLOCTETS: TAsnOctetString = (stream: nil; length: 0; dynamic_: False);
  385. {$EXTERNALSYM DEFINE_NULLOCTETS}
  386. DEFAULT_SNMP_PORT_UDP = 161;
  387. {$EXTERNALSYM DEFAULT_SNMP_PORT_UDP}
  388. DEFAULT_SNMP_PORT_IPX = 36879;
  389. {$EXTERNALSYM DEFAULT_SNMP_PORT_IPX}
  390. DEFAULT_SNMPTRAP_PORT_UDP = 162;
  391. {$EXTERNALSYM DEFAULT_SNMPTRAP_PORT_UDP}
  392. DEFAULT_SNMPTRAP_PORT_IPX = 36880;
  393. {$EXTERNALSYM DEFAULT_SNMPTRAP_PORT_IPX}
  394. SNMP_MAX_OID_LEN = 128;
  395. {$EXTERNALSYM SNMP_MAX_OID_LEN}
  396. { API Error Code Definitions }
  397. SNMP_MEM_ALLOC_ERROR = 1;
  398. {$EXTERNALSYM SNMP_MEM_ALLOC_ERROR}
  399. SNMP_BERAPI_INVALID_LENGTH = 10;
  400. {$EXTERNALSYM SNMP_BERAPI_INVALID_LENGTH}
  401. SNMP_BERAPI_INVALID_TAG = 11;
  402. {$EXTERNALSYM SNMP_BERAPI_INVALID_TAG}
  403. SNMP_BERAPI_OVERFLOW = 12;
  404. {$EXTERNALSYM SNMP_BERAPI_OVERFLOW}
  405. SNMP_BERAPI_SHORT_BUFFER = 13;
  406. {$EXTERNALSYM SNMP_BERAPI_SHORT_BUFFER}
  407. SNMP_BERAPI_INVALID_OBJELEM = 14;
  408. {$EXTERNALSYM SNMP_BERAPI_INVALID_OBJELEM}
  409. SNMP_PDUAPI_UNRECOGNIZED_PDU = 20;
  410. {$EXTERNALSYM SNMP_PDUAPI_UNRECOGNIZED_PDU}
  411. SNMP_PDUAPI_INVALID_ES = 21;
  412. {$EXTERNALSYM SNMP_PDUAPI_INVALID_ES}
  413. SNMP_PDUAPI_INVALID_GT = 22;
  414. {$EXTERNALSYM SNMP_PDUAPI_INVALID_GT}
  415. SNMP_AUTHAPI_INVALID_VERSION = 30;
  416. {$EXTERNALSYM SNMP_AUTHAPI_INVALID_VERSION}
  417. SNMP_AUTHAPI_INVALID_MSG_TYPE = 31;
  418. {$EXTERNALSYM SNMP_AUTHAPI_INVALID_MSG_TYPE}
  419. SNMP_AUTHAPI_TRIV_AUTH_FAILED = 32;
  420. {$EXTERNALSYM SNMP_AUTHAPI_TRIV_AUTH_FAILED}
  421. { Support for old definitions (support disabled via SNMPSTRICT) }
  422. {$IFNDEF SNMPSTRICT}
  423. function SNMP_oidcpy(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
  424. {$EXTERNALSYM SNMP_oidcpy}
  425. function SNMP_oidappend(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
  426. {$EXTERNALSYM SNMP_oidappend}
  427. function SNMP_oidncmp(pOid1, pOid2: PAsnObjectIdentifier; nSubIds: UINT): SNMPAPI; stdcall;
  428. {$EXTERNALSYM SNMP_oidncmp}
  429. function SNMP_oidcmp(pOid1, pOid2: PAsnObjectIdentifier): SNMPAPI; stdcall;
  430. {$EXTERNALSYM SNMP_oidcmp}
  431. procedure SNMP_oidfree(pOid: TAsnObjectIdentifier); stdcall;
  432. {$EXTERNALSYM SNMP_oidfree}
  433. function SNMP_CopyVarBind(pVbDst: PSnmpVarBind; pVbSrc: PSnmpVarBind): SNMPAPI; stdcall;
  434. {$EXTERNALSYM SNMP_CopyVarBind}
  435. procedure SNMP_FreeVarBind(pVb: PSnmpVarBind); stdcall;
  436. {$EXTERNALSYM SNMP_FreeVarBind}
  437. function SNMP_CopyVarBindList(pVblDst: PSnmpVarBindList; pVblSrc: PSnmpVarBindList): SNMPAPI; stdcall;
  438. {$EXTERNALSYM SNMP_CopyVarBindList}
  439. procedure SNMP_FreeVarBindList(pVbl: PSnmpVarBindList); stdcall;
  440. {$EXTERNALSYM SNMP_FreeVarBindList}
  441. procedure SNMP_printany(pAny: PAsnAny); stdcall;
  442. {$EXTERNALSYM SNMP_printany}
  443. procedure SNMP_free(pMem: LPVOID); stdcall;
  444. {$EXTERNALSYM SNMP_free}
  445. function SNMP_malloc(nBytes: UINT): LPVOID; stdcall;
  446. {$EXTERNALSYM SNMP_malloc}
  447. function SNMP_realloc(pMem: LPVOID; nBytes: UINT): LPVOID; stdcall;
  448. {$EXTERNALSYM SNMP_realloc}
  449. procedure SNMP_DBG_free(pMem: LPVOID); stdcall;
  450. {$EXTERNALSYM SNMP_DBG_free}
  451. function SNMP_DBG_malloc(nBytes: UINT): LPVOID; stdcall;
  452. {$EXTERNALSYM SNMP_DBG_malloc}
  453. function SNMP_DBG_realloc(pMem: LPVOID; nBytes: UINT): LPVOID; stdcall;
  454. {$EXTERNALSYM SNMP_DBG_realloc}
  455. const
  456. ASN_RFC1155_IPADDRESS = ASN_IPADDRESS;
  457. {$EXTERNALSYM ASN_RFC1155_IPADDRESS}
  458. ASN_RFC1155_COUNTER = ASN_COUNTER32;
  459. {$EXTERNALSYM ASN_RFC1155_COUNTER}
  460. ASN_RFC1155_GAUGE = ASN_GAUGE32;
  461. {$EXTERNALSYM ASN_RFC1155_GAUGE}
  462. ASN_RFC1155_TIMETICKS = ASN_TIMETICKS;
  463. {$EXTERNALSYM ASN_RFC1155_TIMETICKS}
  464. ASN_RFC1155_OPAQUE = ASN_OPAQUE;
  465. {$EXTERNALSYM ASN_RFC1155_OPAQUE}
  466. ASN_RFC1213_DISPSTRING = ASN_OCTETSTRING;
  467. {$EXTERNALSYM ASN_RFC1213_DISPSTRING}
  468. ASN_RFC1157_GETREQUEST = SNMP_PDU_GET;
  469. {$EXTERNALSYM ASN_RFC1157_GETREQUEST}
  470. ASN_RFC1157_GETNEXTREQUEST = SNMP_PDU_GETNEXT;
  471. {$EXTERNALSYM ASN_RFC1157_GETNEXTREQUEST}
  472. ASN_RFC1157_GETRESPONSE = SNMP_PDU_RESPONSE;
  473. {$EXTERNALSYM ASN_RFC1157_GETRESPONSE}
  474. ASN_RFC1157_SETREQUEST = SNMP_PDU_SET;
  475. {$EXTERNALSYM ASN_RFC1157_SETREQUEST}
  476. ASN_RFC1157_TRAP = SNMP_PDU_V1TRAP;
  477. {$EXTERNALSYM ASN_RFC1157_TRAP}
  478. ASN_CONTEXTSPECIFIC = ASN_CONTEXT;
  479. {$EXTERNALSYM ASN_CONTEXTSPECIFIC}
  480. ASN_PRIMATIVE = ASN_PRIMITIVE;
  481. {$EXTERNALSYM ASN_PRIMATIVE}
  482. type
  483. RFC1157VarBindList = TSnmpVarBindList;
  484. {$EXTERNALSYM RFC1157VarBindList}
  485. RFC1157VarBind = TSnmpVarBind;
  486. {$EXTERNALSYM RFC1157VarBind}
  487. TAsnInteger = TAsnInteger32;
  488. {$EXTERNALSYM TAsnInteger}
  489. TAsnCounter = TAsnCounter32;
  490. {$EXTERNALSYM TAsnCounter}
  491. TAsnGauge = TAsnGauge32;
  492. {$EXTERNALSYM TAsnGauge}
  493. const
  494. ASN_UNSIGNED32 = ASN_UINTEGER32;
  495. {$EXTERNALSYM ASN_UNSIGNED32}
  496. {$ENDIF !SNMPSTRICT}
  497. implementation
  498. uses
  499. JwaWinBase;
  500. const
  501. snmpapilib = 'snmpapi.dll';
  502. {$IFDEF DYNAMIC_LINK}
  503. var
  504. _SnmpUtilOidCpy: Pointer;
  505. function SnmpUtilOidCpy;
  506. begin
  507. GetProcedureAddress(_SnmpUtilOidCpy, snmpapilib, 'SnmpUtilOidCpy');
  508. asm
  509. MOV ESP, EBP
  510. POP EBP
  511. JMP [_SnmpUtilOidCpy]
  512. end;
  513. end;
  514. var
  515. _SnmpUtilOidAppend: Pointer;
  516. function SnmpUtilOidAppend;
  517. begin
  518. GetProcedureAddress(_SnmpUtilOidAppend, snmpapilib, 'SnmpUtilOidAppend');
  519. asm
  520. MOV ESP, EBP
  521. POP EBP
  522. JMP [_SnmpUtilOidAppend]
  523. end;
  524. end;
  525. var
  526. _SnmpUtilOidNCmp: Pointer;
  527. function SnmpUtilOidNCmp;
  528. begin
  529. GetProcedureAddress(_SnmpUtilOidNCmp, snmpapilib, 'SnmpUtilOidNCmp');
  530. asm
  531. MOV ESP, EBP
  532. POP EBP
  533. JMP [_SnmpUtilOidNCmp]
  534. end;
  535. end;
  536. var
  537. _SnmpUtilOidCmp: Pointer;
  538. function SnmpUtilOidCmp;
  539. begin
  540. GetProcedureAddress(_SnmpUtilOidCmp, snmpapilib, 'SnmpUtilOidCmp');
  541. asm
  542. MOV ESP, EBP
  543. POP EBP
  544. JMP [_SnmpUtilOidCmp]
  545. end;
  546. end;
  547. var
  548. _SnmpUtilOidFree: Pointer;
  549. procedure SnmpUtilOidFree;
  550. begin
  551. GetProcedureAddress(_SnmpUtilOidFree, snmpapilib, 'SnmpUtilOidFree');
  552. asm
  553. MOV ESP, EBP
  554. POP EBP
  555. JMP [_SnmpUtilOidFree]
  556. end;
  557. end;
  558. var
  559. _SnmpUtilOctetsCmp: Pointer;
  560. function SnmpUtilOctetsCmp;
  561. begin
  562. GetProcedureAddress(_SnmpUtilOctetsCmp, snmpapilib, 'SnmpUtilOctetsCmp');
  563. asm
  564. MOV ESP, EBP
  565. POP EBP
  566. JMP [_SnmpUtilOctetsCmp]
  567. end;
  568. end;
  569. var
  570. _SnmpUtilOctetsNCmp: Pointer;
  571. function SnmpUtilOctetsNCmp;
  572. begin
  573. GetProcedureAddress(_SnmpUtilOctetsNCmp, snmpapilib, 'SnmpUtilOctetsNCmp');
  574. asm
  575. MOV ESP, EBP
  576. POP EBP
  577. JMP [_SnmpUtilOctetsNCmp]
  578. end;
  579. end;
  580. var
  581. _SnmpUtilOctetsCpy: Pointer;
  582. function SnmpUtilOctetsCpy;
  583. begin
  584. GetProcedureAddress(_SnmpUtilOctetsCpy, snmpapilib, 'SnmpUtilOctetsCpy');
  585. asm
  586. MOV ESP, EBP
  587. POP EBP
  588. JMP [_SnmpUtilOctetsCpy]
  589. end;
  590. end;
  591. var
  592. _SnmpUtilOctetsFree: Pointer;
  593. procedure SnmpUtilOctetsFree;
  594. begin
  595. GetProcedureAddress(_SnmpUtilOctetsFree, snmpapilib, 'SnmpUtilOctetsFree');
  596. asm
  597. MOV ESP, EBP
  598. POP EBP
  599. JMP [_SnmpUtilOctetsFree]
  600. end;
  601. end;
  602. var
  603. _SnmpUtilAsnAnyCpy: Pointer;
  604. function SnmpUtilAsnAnyCpy;
  605. begin
  606. GetProcedureAddress(_SnmpUtilAsnAnyCpy, snmpapilib, 'SnmpUtilAsnAnyCpy');
  607. asm
  608. MOV ESP, EBP
  609. POP EBP
  610. JMP [_SnmpUtilAsnAnyCpy]
  611. end;
  612. end;
  613. var
  614. _SnmpUtilAsnAnyFree: Pointer;
  615. procedure SnmpUtilAsnAnyFree;
  616. begin
  617. GetProcedureAddress(_SnmpUtilAsnAnyFree, snmpapilib, 'SnmpUtilAsnAnyFree');
  618. asm
  619. MOV ESP, EBP
  620. POP EBP
  621. JMP [_SnmpUtilAsnAnyFree]
  622. end;
  623. end;
  624. var
  625. _SnmpUtilVarBindCpy: Pointer;
  626. function SnmpUtilVarBindCpy;
  627. begin
  628. GetProcedureAddress(_SnmpUtilVarBindCpy, snmpapilib, 'SnmpUtilVarBindCpy');
  629. asm
  630. MOV ESP, EBP
  631. POP EBP
  632. JMP [_SnmpUtilVarBindCpy]
  633. end;
  634. end;
  635. var
  636. _SnmpUtilVarBindFree: Pointer;
  637. procedure SnmpUtilVarBindFree;
  638. begin
  639. GetProcedureAddress(_SnmpUtilVarBindFree, snmpapilib, 'SnmpUtilVarBindFree');
  640. asm
  641. MOV ESP, EBP
  642. POP EBP
  643. JMP [_SnmpUtilVarBindFree]
  644. end;
  645. end;
  646. var
  647. _SnmpUtilVarBindListCpy: Pointer;
  648. function SnmpUtilVarBindListCpy;
  649. begin
  650. GetProcedureAddress(_SnmpUtilVarBindListCpy, snmpapilib, 'SnmpUtilVarBindListCpy');
  651. asm
  652. MOV ESP, EBP
  653. POP EBP
  654. JMP [_SnmpUtilVarBindListCpy]
  655. end;
  656. end;
  657. var
  658. _SnmpUtilVarBindListFree: Pointer;
  659. procedure SnmpUtilVarBindListFree;
  660. begin
  661. GetProcedureAddress(_SnmpUtilVarBindListFree, snmpapilib, 'SnmpUtilVarBindListFree');
  662. asm
  663. MOV ESP, EBP
  664. POP EBP
  665. JMP [_SnmpUtilVarBindListFree]
  666. end;
  667. end;
  668. var
  669. _SnmpUtilMemFree: Pointer;
  670. procedure SnmpUtilMemFree;
  671. begin
  672. GetProcedureAddress(_SnmpUtilMemFree, snmpapilib, 'SnmpUtilMemFree');
  673. asm
  674. MOV ESP, EBP
  675. POP EBP
  676. JMP [_SnmpUtilMemFree]
  677. end;
  678. end;
  679. var
  680. _SnmpUtilMemAlloc: Pointer;
  681. function SnmpUtilMemAlloc;
  682. begin
  683. GetProcedureAddress(_SnmpUtilMemAlloc, snmpapilib, 'SnmpUtilMemAlloc');
  684. asm
  685. MOV ESP, EBP
  686. POP EBP
  687. JMP [_SnmpUtilMemAlloc]
  688. end;
  689. end;
  690. var
  691. _SnmpUtilMemReAlloc: Pointer;
  692. function SnmpUtilMemReAlloc;
  693. begin
  694. GetProcedureAddress(_SnmpUtilMemReAlloc, snmpapilib, 'SnmpUtilMemReAlloc');
  695. asm
  696. MOV ESP, EBP
  697. POP EBP
  698. JMP [_SnmpUtilMemReAlloc]
  699. end;
  700. end;
  701. var
  702. _SnmpUtilOidToA: Pointer;
  703. function SnmpUtilOidToA;
  704. begin
  705. GetProcedureAddress(_SnmpUtilOidToA, snmpapilib, 'SnmpUtilOidToA');
  706. asm
  707. MOV ESP, EBP
  708. POP EBP
  709. JMP [_SnmpUtilOidToA]
  710. end;
  711. end;
  712. var
  713. _SnmpUtilIdsToA: Pointer;
  714. function SnmpUtilIdsToA;
  715. begin
  716. GetProcedureAddress(_SnmpUtilIdsToA, snmpapilib, 'SnmpUtilIdsToA');
  717. asm
  718. MOV ESP, EBP
  719. POP EBP
  720. JMP [_SnmpUtilIdsToA]
  721. end;
  722. end;
  723. var
  724. _SnmpUtilPrintOid: Pointer;
  725. procedure SnmpUtilPrintOid;
  726. begin
  727. GetProcedureAddress(_SnmpUtilPrintOid, snmpapilib, 'SnmpUtilPrintOid');
  728. asm
  729. MOV ESP, EBP
  730. POP EBP
  731. JMP [_SnmpUtilPrintOid]
  732. end;
  733. end;
  734. var
  735. _SnmpUtilPrintAsnAny: Pointer;
  736. procedure SnmpUtilPrintAsnAny;
  737. begin
  738. GetProcedureAddress(_SnmpUtilPrintAsnAny, snmpapilib, 'SnmpUtilPrintAsnAny');
  739. asm
  740. MOV ESP, EBP
  741. POP EBP
  742. JMP [_SnmpUtilPrintAsnAny]
  743. end;
  744. end;
  745. var
  746. _SnmpSvcGetUptime: Pointer;
  747. function SnmpSvcGetUptime;
  748. begin
  749. GetProcedureAddress(_SnmpSvcGetUptime, snmpapilib, 'SnmpSvcGetUptime');
  750. asm
  751. MOV ESP, EBP
  752. POP EBP
  753. JMP [_SnmpSvcGetUptime]
  754. end;
  755. end;
  756. var
  757. _SnmpSvcSetLogLevel: Pointer;
  758. procedure SnmpSvcSetLogLevel;
  759. begin
  760. GetProcedureAddress(_SnmpSvcSetLogLevel, snmpapilib, 'SnmpSvcSetLogLevel');
  761. asm
  762. MOV ESP, EBP
  763. POP EBP
  764. JMP [_SnmpSvcSetLogLevel]
  765. end;
  766. end;
  767. var
  768. _SnmpSvcSetLogType: Pointer;
  769. procedure SnmpSvcSetLogType;
  770. begin
  771. GetProcedureAddress(_SnmpSvcSetLogType, snmpapilib, 'SnmpSvcSetLogType');
  772. asm
  773. MOV ESP, EBP
  774. POP EBP
  775. JMP [_SnmpSvcSetLogType]
  776. end;
  777. end;
  778. var
  779. _SnmpUtilDbgPrint: Pointer;
  780. procedure SnmpUtilDbgPrint;
  781. begin
  782. GetProcedureAddress(_SnmpUtilDbgPrint, snmpapilib, 'SnmpUtilDbgPrint');
  783. asm
  784. MOV ESP, EBP
  785. POP EBP
  786. JMP [_SnmpUtilDbgPrint]
  787. end;
  788. end;
  789. {$IFNDEF SNMPSTRICT}
  790. var
  791. _SNMP_oidcpy: Pointer;
  792. function SNMP_oidcpy;
  793. begin
  794. GetProcedureAddress(_SNMP_oidcpy, snmpapilib, 'SnmpUtilOidCpy');
  795. asm
  796. MOV ESP, EBP
  797. POP EBP
  798. JMP [_SNMP_oidcpy]
  799. end;
  800. end;
  801. var
  802. _SNMP_oidappend: Pointer;
  803. function SNMP_oidappend;
  804. begin
  805. GetProcedureAddress(_SNMP_oidappend, snmpapilib, 'SnmpUtilOidAppend');
  806. asm
  807. MOV ESP, EBP
  808. POP EBP
  809. JMP [_SNMP_oidappend]
  810. end;
  811. end;
  812. var
  813. _SNMP_oidncmp: Pointer;
  814. function SNMP_oidncmp;
  815. begin
  816. GetProcedureAddress(_SNMP_oidncmp, snmpapilib, 'SnmpUtilOidNCmp');
  817. asm
  818. MOV ESP, EBP
  819. POP EBP
  820. JMP [_SNMP_oidncmp]
  821. end;
  822. end;
  823. var
  824. _SNMP_oidcmp: Pointer;
  825. function SNMP_oidcmp;
  826. begin
  827. GetProcedureAddress(_SNMP_oidcmp, snmpapilib, 'SnmpUtilOidCmp');
  828. asm
  829. MOV ESP, EBP
  830. POP EBP
  831. JMP [_SNMP_oidcmp]
  832. end;
  833. end;
  834. var
  835. _SNMP_oidfree: Pointer;
  836. procedure SNMP_oidfree;
  837. begin
  838. GetProcedureAddress(_SNMP_oidfree, snmpapilib, 'SnmpUtilOidFree');
  839. asm
  840. MOV ESP, EBP
  841. POP EBP
  842. JMP [_SNMP_oidfree]
  843. end;
  844. end;
  845. var
  846. _SNMP_CopyVarBind: Pointer;
  847. function SNMP_CopyVarBind;
  848. begin
  849. GetProcedureAddress(_SNMP_CopyVarBind, snmpapilib, 'SnmpUtilVarBindCpy');
  850. asm
  851. MOV ESP, EBP
  852. POP EBP
  853. JMP [_SNMP_CopyVarBind]
  854. end;
  855. end;
  856. var
  857. _SNMP_FreeVarBind: Pointer;
  858. procedure SNMP_FreeVarBind;
  859. begin
  860. GetProcedureAddress(_SNMP_FreeVarBind, snmpapilib, 'SnmpUtilVarBindFree');
  861. asm
  862. MOV ESP, EBP
  863. POP EBP
  864. JMP [_SNMP_FreeVarBind]
  865. end;
  866. end;
  867. var
  868. _SNMP_CopyVarBindList: Pointer;
  869. function SNMP_CopyVarBindList;
  870. begin
  871. GetProcedureAddress(_SNMP_CopyVarBindList, snmpapilib, 'SnmpUtilVarBindListCpy');
  872. asm
  873. MOV ESP, EBP
  874. POP EBP
  875. JMP [_SNMP_CopyVarBindList]
  876. end;
  877. end;
  878. var
  879. _SNMP_FreeVarBindList: Pointer;
  880. procedure SNMP_FreeVarBindList;
  881. begin
  882. GetProcedureAddress(_SNMP_FreeVarBindList, snmpapilib, 'SnmpUtilVarBindListFree');
  883. asm
  884. MOV ESP, EBP
  885. POP EBP
  886. JMP [_SNMP_FreeVarBindList]
  887. end;
  888. end;
  889. var
  890. _SNMP_printany: Pointer;
  891. procedure SNMP_printany;
  892. begin
  893. GetProcedureAddress(_SNMP_printany, snmpapilib, 'SnmpUtilPrintAsnAny');
  894. asm
  895. MOV ESP, EBP
  896. POP EBP
  897. JMP [_SNMP_printany]
  898. end;
  899. end;
  900. var
  901. _SNMP_free: Pointer;
  902. procedure SNMP_free;
  903. begin
  904. GetProcedureAddress(_SNMP_free, snmpapilib, 'SnmpUtilMemFree');
  905. asm
  906. MOV ESP, EBP
  907. POP EBP
  908. JMP [_SNMP_free]
  909. end;
  910. end;
  911. var
  912. _SNMP_malloc: Pointer;
  913. function SNMP_malloc;
  914. begin
  915. GetProcedureAddress(_SNMP_malloc, snmpapilib, 'SnmpUtilMemAlloc');
  916. asm
  917. MOV ESP, EBP
  918. POP EBP
  919. JMP [_SNMP_malloc]
  920. end;
  921. end;
  922. var
  923. _SNMP_realloc: Pointer;
  924. function SNMP_realloc;
  925. begin
  926. GetProcedureAddress(_SNMP_realloc, snmpapilib, 'SnmpUtilMemReAlloc');
  927. asm
  928. MOV ESP, EBP
  929. POP EBP
  930. JMP [_SNMP_realloc]
  931. end;
  932. end;
  933. var
  934. _SNMP_DBG_free: Pointer;
  935. procedure SNMP_DBG_free;
  936. begin
  937. GetProcedureAddress(_SNMP_DBG_free, snmpapilib, 'SnmpUtilMemFree');
  938. asm
  939. MOV ESP, EBP
  940. POP EBP
  941. JMP [_SNMP_DBG_free]
  942. end;
  943. end;
  944. var
  945. _SNMP_DBG_malloc: Pointer;
  946. function SNMP_DBG_malloc;
  947. begin
  948. GetProcedureAddress(_SNMP_DBG_malloc, snmpapilib, 'SnmpUtilMemAlloc');
  949. asm
  950. MOV ESP, EBP
  951. POP EBP
  952. JMP [_SNMP_DBG_malloc]
  953. end;
  954. end;
  955. var
  956. _SNMP_DBG_realloc: Pointer;
  957. function SNMP_DBG_realloc;
  958. begin
  959. GetProcedureAddress(_SNMP_DBG_realloc, snmpapilib, 'SnmpUtilMemReAlloc');
  960. asm
  961. MOV ESP, EBP
  962. POP EBP
  963. JMP [_SNMP_DBG_realloc]
  964. end;
  965. end;
  966. {$ENDIF !SNMPSTRICT}
  967. {$ELSE}
  968. function SnmpUtilOidCpy; external snmpapilib name 'SnmpUtilOidCpy';
  969. function SnmpUtilOidAppend; external snmpapilib name 'SnmpUtilOidAppend';
  970. function SnmpUtilOidNCmp; external snmpapilib name 'SnmpUtilOidNCmp';
  971. function SnmpUtilOidCmp; external snmpapilib name 'SnmpUtilOidCmp';
  972. procedure SnmpUtilOidFree; external snmpapilib name 'SnmpUtilOidFree';
  973. function SnmpUtilOctetsCmp; external snmpapilib name 'SnmpUtilOctetsCmp';
  974. function SnmpUtilOctetsNCmp; external snmpapilib name 'SnmpUtilOctetsNCmp';
  975. function SnmpUtilOctetsCpy; external snmpapilib name 'SnmpUtilOctetsCpy';
  976. procedure SnmpUtilOctetsFree; external snmpapilib name 'SnmpUtilOctetsFree';
  977. function SnmpUtilAsnAnyCpy; external snmpapilib name 'SnmpUtilAsnAnyCpy';
  978. procedure SnmpUtilAsnAnyFree; external snmpapilib name 'SnmpUtilAsnAnyFree';
  979. function SnmpUtilVarBindCpy; external snmpapilib name 'SnmpUtilVarBindCpy';
  980. procedure SnmpUtilVarBindFree; external snmpapilib name 'SnmpUtilVarBindFree';
  981. function SnmpUtilVarBindListCpy; external snmpapilib name 'SnmpUtilVarBindListCpy';
  982. procedure SnmpUtilVarBindListFree; external snmpapilib name 'SnmpUtilVarBindListFree';
  983. procedure SnmpUtilMemFree; external snmpapilib name 'SnmpUtilMemFree';
  984. function SnmpUtilMemAlloc; external snmpapilib name 'SnmpUtilMemAlloc';
  985. function SnmpUtilMemReAlloc; external snmpapilib name 'SnmpUtilMemReAlloc';
  986. function SnmpUtilOidToA; external snmpapilib name 'SnmpUtilOidToA';
  987. function SnmpUtilIdsToA; external snmpapilib name 'SnmpUtilIdsToA';
  988. procedure SnmpUtilPrintOid; external snmpapilib name 'SnmpUtilPrintOid';
  989. procedure SnmpUtilPrintAsnAny; external snmpapilib name 'SnmpUtilPrintAsnAny';
  990. function SnmpSvcGetUptime; external snmpapilib name 'SnmpSvcGetUptime';
  991. procedure SnmpSvcSetLogLevel; external snmpapilib name 'SnmpSvcSetLogLevel';
  992. procedure SnmpSvcSetLogType; external snmpapilib name 'SnmpSvcSetLogType';
  993. procedure SnmpUtilDbgPrint; external snmpapilib name 'SnmpUtilDbgPrint';
  994. {$IFNDEF SNMPSTRICT}
  995. function SNMP_oidcpy; external snmpapilib name 'SnmpUtilOidCpy';
  996. function SNMP_oidappend; external snmpapilib name 'SnmpUtilOidAppend';
  997. function SNMP_oidncmp; external snmpapilib name 'SnmpUtilOidNCmp';
  998. function SNMP_oidcmp; external snmpapilib name 'SnmpUtilOidCmp';
  999. procedure SNMP_oidfree; external snmpapilib name 'SnmpUtilOidFree';
  1000. function SNMP_CopyVarBind; external snmpapilib name 'SnmpUtilVarBindCpy';
  1001. procedure SNMP_FreeVarBind; external snmpapilib name 'SnmpUtilVarBindFree';
  1002. function SNMP_CopyVarBindList; external snmpapilib name 'SnmpUtilVarBindListCpy';
  1003. procedure SNMP_FreeVarBindList; external snmpapilib name 'SnmpUtilVarBindListFree';
  1004. procedure SNMP_printany; external snmpapilib name 'SnmpUtilPrintAsnAny';
  1005. procedure SNMP_free; external snmpapilib name 'SnmpUtilMemFree';
  1006. function SNMP_malloc; external snmpapilib name 'SnmpUtilMemAlloc';
  1007. function SNMP_realloc; external snmpapilib name 'SnmpUtilMemReAlloc';
  1008. procedure SNMP_DBG_free; external snmpapilib name 'SnmpUtilMemFree';
  1009. function SNMP_DBG_malloc; external snmpapilib name 'SnmpUtilMemAlloc';
  1010. function SNMP_DBG_realloc; external snmpapilib name 'SnmpUtilMemReAlloc';
  1011. {$ENDIF !SNMPSTRICT}
  1012. {$ENDIF DYNAMIC_LINK}
  1013. end.