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 
43 // $Id: JwaSnmp.pas,v 1.11 2007/09/05 11:58:52 dezipaitor Exp $
44 {$IFNDEF JWA_OMIT_SECTIONS}
45 unit JwaSnmp;
46 
47 {$WEAKPACKAGEUNIT}
48 {$ENDIF JWA_OMIT_SECTIONS}
49 
50 {$HPPEMIT ''}
51 {$HPPEMIT '#include "snmp.h"'}
52 {$HPPEMIT ''}
53 
54 {$IFNDEF JWA_OMIT_SECTIONS}
55 {$I jediapilib.inc}
56 
57 interface
58 
59 uses
60   JwaWinType;
61 {$ENDIF JWA_OMIT_SECTIONS}
62 {$IFNDEF JWA_IMPLEMENTATIONSECTION}
63 
64 type
65   PAsnOctetString = ^TAsnOctetString;
66   TAsnOctetString = record
67     stream: PChar;
68     length: UINT;
69     dynamic_: BOOL;
70   end;
71   {$EXTERNALSYM TAsnOctetString}
72 
73   PAsnObjectIdentifier = ^TAsnObjectIdentifier;
74   TAsnObjectIdentifier = record
75     idLength: UINT;
76     ids: PUINT;
77   end;
78   {$EXTERNALSYM TAsnObjectIdentifier}
79 
80   TAsnInteger32        = LONG;
81   {$EXTERNALSYM TAsnInteger32}
82   TAsnUnsigned32       = ULONG;
83   {$EXTERNALSYM TAsnUnsigned32}
84   TAsnCounter64        = ULARGE_INTEGER;
85   {$EXTERNALSYM TAsnCounter64}
86   TAsnCounter32        = TAsnUnsigned32;
87   {$EXTERNALSYM TAsnCounter32}
88   TAsnGauge32          = TAsnUnsigned32;
89   {$EXTERNALSYM TAsnGauge32}
90   TAsnTimeticks        = TAsnUnsigned32;
91   {$EXTERNALSYM TAsnTimeticks}
92   TAsnBits             = TAsnOctetString;
93   {$EXTERNALSYM TAsnBits}
94   TAsnSequence         = TAsnOctetString;
95   {$EXTERNALSYM TAsnSequence}
96   TAsnImplicitSequence = TAsnOctetString;
97   {$EXTERNALSYM TAsnImplicitSequence}
98   TAsnIPAddress        = TAsnOctetString;
99   {$EXTERNALSYM TAsnIPAddress}
100   TAsnNetworkAddress   = TAsnOctetString;
101   {$EXTERNALSYM TAsnNetworkAddress}
102   TAsnDisplayString    = TAsnOctetString;
103   {$EXTERNALSYM TAsnDisplayString}
104   TAsnOpaque           = TAsnOctetString;
105   {$EXTERNALSYM TAsnOpaque}
106 
107   PAsnAny = ^TAsnAny;
108   TAsnAny = record
109     asnType: Byte;
110     case Integer of
111       0: (number: TAsnInteger32);          // ASN_INTEGER, ASN_INTEGER32
112       1: (unsigned32: TAsnUnsigned32);     // ASN_UNSIGNED32
113       2: (counter64: TAsnCounter64);       // ASN_COUNTER64
114       3: (string_: TAsnOctetString);       // ASN_OCTETSTRING
115       4: (bits: TAsnBits);                 // ASN_BITS
116       5: (object_: TAsnObjectIdentifier);  // ASN_OBJECTIDENTIFIER
117       6: (sequence: TAsnSequence);         // ASN_SEQUENCE
118       7: (address: TAsnIPAddress);         // ASN_IPADDRESS
119       8: (counter: TAsnCounter32);         // ASN_COUNTER32
120       9: (gauge: TAsnGauge32);             // ASN_GAUGE32
121      10: (ticks: TAsnTimeticks);           // ASN_TIMETICKS
122      11: (arbitrary: TAsnOpaque);          // ASN_OPAQUE
123   end;
124   {$EXTERNALSYM TAsnAny}
125 
126   TAsnObjectName = TAsnObjectIdentifier;
127   {$EXTERNALSYM TAsnObjectName}
128   TAsnObjectSyntax = TAsnAny;
129   {$EXTERNALSYM TAsnObjectSyntax}
130 
131   PSnmpVarBind = ^TSnmpVarBind;
132   TSnmpVarBind = record
133     name: TAsnObjectName;
134     value: TAsnObjectSyntax;
135   end;
136   {$EXTERNALSYM TSnmpVarBind}
137 
138   PSnmpVarBindList = ^TSnmpVarBindList;
139   TSnmpVarBindList = record
140     list: PSnmpVarBind;
141     len: UINT;
142   end;
143   {$EXTERNALSYM TSnmpVarBindList}
144 
145 const
146   // (rom) deactivated seems useless
147   { IFNDEF _INC_WINSNMP}
148 
149   { ASN/BER Base Types }
150 
151   ASN_UNIVERSAL                   = $00;
152   {$EXTERNALSYM ASN_UNIVERSAL}
153   ASN_APPLICATION                 = $40;
154   {$EXTERNALSYM ASN_APPLICATION}
155   ASN_CONTEXT                     = $80;
156   {$EXTERNALSYM ASN_CONTEXT}
157   ASN_PRIVATE                     = $C0;
158   {$EXTERNALSYM ASN_PRIVATE}
159 
160   ASN_PRIMITIVE                   = $00;
161   {$EXTERNALSYM ASN_PRIMITIVE}
162   ASN_CONSTRUCTOR                 = $20;
163   {$EXTERNALSYM ASN_CONSTRUCTOR}
164 
165   { PDU Type Values }
166 
167   SNMP_PDU_GET                    = ASN_CONTEXT or ASN_CONSTRUCTOR or $0;
168   {$EXTERNALSYM SNMP_PDU_GET}
169   SNMP_PDU_GETNEXT                = ASN_CONTEXT or ASN_CONSTRUCTOR or $1;
170   {$EXTERNALSYM SNMP_PDU_GETNEXT}
171   SNMP_PDU_RESPONSE               = ASN_CONTEXT or ASN_CONSTRUCTOR or $2;
172   {$EXTERNALSYM SNMP_PDU_RESPONSE}
173   SNMP_PDU_SET                    = ASN_CONTEXT or ASN_CONSTRUCTOR or $3;
174   {$EXTERNALSYM SNMP_PDU_SET}
175   SNMP_PDU_V1TRAP                 = ASN_CONTEXT or ASN_CONSTRUCTOR or $4;
176   {$EXTERNALSYM SNMP_PDU_V1TRAP}
177   SNMP_PDU_GETBULK                = ASN_CONTEXT or ASN_CONSTRUCTOR or $5;
178   {$EXTERNALSYM SNMP_PDU_GETBULK}
179   SNMP_PDU_INFORM                 = ASN_CONTEXT or ASN_CONSTRUCTOR or $6;
180   {$EXTERNALSYM SNMP_PDU_INFORM}
181   SNMP_PDU_TRAP                   = ASN_CONTEXT or ASN_CONSTRUCTOR or $7;
182   {$EXTERNALSYM SNMP_PDU_TRAP}
183 
184   // (rom) deactivated seems useless
185   { ENDIF _INC_WINSNMP}
186 
187   { SNMP Simple Syntax Values }
188 
189   ASN_INTEGER                     = ASN_UNIVERSAL or ASN_PRIMITIVE or $02;
190   {$EXTERNALSYM ASN_INTEGER}
191   ASN_BITS                        = ASN_UNIVERSAL or ASN_PRIMITIVE or $03;
192   {$EXTERNALSYM ASN_BITS}
193   ASN_OCTETSTRING                 = ASN_UNIVERSAL or ASN_PRIMITIVE or $04;
194   {$EXTERNALSYM ASN_OCTETSTRING}
195   ASN_NULL                        = ASN_UNIVERSAL or ASN_PRIMITIVE or $05;
196   {$EXTERNALSYM ASN_NULL}
197   ASN_OBJECTIDENTIFIER            = ASN_UNIVERSAL or ASN_PRIMITIVE or $06;
198   {$EXTERNALSYM ASN_OBJECTIDENTIFIER}
199   ASN_INTEGER32                   = ASN_INTEGER;
200   {$EXTERNALSYM ASN_INTEGER32}
201 
202 { SNMP Constructor Syntax Values }
203 
204   ASN_SEQUENCE                    = ASN_UNIVERSAL or ASN_CONSTRUCTOR or $10;
205   {$EXTERNALSYM ASN_SEQUENCE}
206   ASN_SEQUENCEOF                  = ASN_SEQUENCE;
207   {$EXTERNALSYM ASN_SEQUENCEOF}
208 
209 { SNMP Application Syntax Values }
210 
211   ASN_IPADDRESS                   = ASN_APPLICATION or ASN_PRIMITIVE or $00;
212   {$EXTERNALSYM ASN_IPADDRESS}
213   ASN_COUNTER32                   = ASN_APPLICATION or ASN_PRIMITIVE or $01;
214   {$EXTERNALSYM ASN_COUNTER32}
215   ASN_GAUGE32                     = ASN_APPLICATION or ASN_PRIMITIVE or $02;
216   {$EXTERNALSYM ASN_GAUGE32}
217   ASN_TIMETICKS                   = ASN_APPLICATION or ASN_PRIMITIVE or $03;
218   {$EXTERNALSYM ASN_TIMETICKS}
219   ASN_OPAQUE                      = ASN_APPLICATION or ASN_PRIMITIVE or $04;
220   {$EXTERNALSYM ASN_OPAQUE}
221   ASN_COUNTER64                   = ASN_APPLICATION or ASN_PRIMITIVE or $06;
222   {$EXTERNALSYM ASN_COUNTER64}
223   ASN_UINTEGER32                  = ASN_APPLICATION or ASN_PRIMITIVE or $07;
224   {$EXTERNALSYM ASN_UINTEGER32}
225   ASN_RFC2578_UNSIGNED32          = ASN_GAUGE32;
226   {$EXTERNALSYM ASN_RFC2578_UNSIGNED32}
227 
228 { SNMP Exception Conditions }
229 
230   SNMP_EXCEPTION_NOSUCHOBJECT     = ASN_CONTEXT or ASN_PRIMITIVE or $00;
231   {$EXTERNALSYM SNMP_EXCEPTION_NOSUCHOBJECT}
232   SNMP_EXCEPTION_NOSUCHINSTANCE   = ASN_CONTEXT or ASN_PRIMITIVE or $01;
233   {$EXTERNALSYM SNMP_EXCEPTION_NOSUCHINSTANCE}
234   SNMP_EXCEPTION_ENDOFMIBVIEW     = ASN_CONTEXT or ASN_PRIMITIVE or $02;
235   {$EXTERNALSYM SNMP_EXCEPTION_ENDOFMIBVIEW}
236 
237 { SNMP Request Types (used in SnmpExtensionQueryEx) }
238 
239   SNMP_EXTENSION_GET              = SNMP_PDU_GET;
240   {$EXTERNALSYM SNMP_EXTENSION_GET}
241   SNMP_EXTENSION_GET_NEXT         = SNMP_PDU_GETNEXT;
242   {$EXTERNALSYM SNMP_EXTENSION_GET_NEXT}
243   SNMP_EXTENSION_GET_BULK         = SNMP_PDU_GETBULK;
244   {$EXTERNALSYM SNMP_EXTENSION_GET_BULK}
245   SNMP_EXTENSION_SET_TEST         = ASN_PRIVATE or ASN_CONSTRUCTOR or $0;
246   {$EXTERNALSYM SNMP_EXTENSION_SET_TEST}
247   SNMP_EXTENSION_SET_COMMIT       = SNMP_PDU_SET;
248   {$EXTERNALSYM SNMP_EXTENSION_SET_COMMIT}
249   SNMP_EXTENSION_SET_UNDO         = ASN_PRIVATE or ASN_CONSTRUCTOR or $1;
250   {$EXTERNALSYM SNMP_EXTENSION_SET_UNDO}
251   SNMP_EXTENSION_SET_CLEANUP      = ASN_PRIVATE or ASN_CONSTRUCTOR or $2;
252   {$EXTERNALSYM SNMP_EXTENSION_SET_CLEANUP}
253 
254 { SNMP Error Codes }
255 
256   SNMP_ERRORSTATUS_NOERROR                    = 0;
257   {$EXTERNALSYM SNMP_ERRORSTATUS_NOERROR}
258   SNMP_ERRORSTATUS_TOOBIG                     = 1;
259   {$EXTERNALSYM SNMP_ERRORSTATUS_TOOBIG}
260   SNMP_ERRORSTATUS_NOSUCHNAME                 = 2;
261   {$EXTERNALSYM SNMP_ERRORSTATUS_NOSUCHNAME}
262   SNMP_ERRORSTATUS_BADVALUE                   = 3;
263   {$EXTERNALSYM SNMP_ERRORSTATUS_BADVALUE}
264   SNMP_ERRORSTATUS_READONLY                   = 4;
265   {$EXTERNALSYM SNMP_ERRORSTATUS_READONLY}
266   SNMP_ERRORSTATUS_GENERR                     = 5;
267   {$EXTERNALSYM SNMP_ERRORSTATUS_GENERR}
268   SNMP_ERRORSTATUS_NOACCESS                   = 6;
269   {$EXTERNALSYM SNMP_ERRORSTATUS_NOACCESS}
270   SNMP_ERRORSTATUS_WRONGTYPE                  = 7;
271   {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGTYPE}
272   SNMP_ERRORSTATUS_WRONGLENGTH                = 8;
273   {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGLENGTH}
274   SNMP_ERRORSTATUS_WRONGENCODING              = 9;
275   {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGENCODING}
276   SNMP_ERRORSTATUS_WRONGVALUE                 = 10;
277   {$EXTERNALSYM SNMP_ERRORSTATUS_WRONGVALUE}
278   SNMP_ERRORSTATUS_NOCREATION                 = 11;
279   {$EXTERNALSYM SNMP_ERRORSTATUS_NOCREATION}
280   SNMP_ERRORSTATUS_INCONSISTENTVALUE          = 12;
281   {$EXTERNALSYM SNMP_ERRORSTATUS_INCONSISTENTVALUE}
282   SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE        = 13;
283   {$EXTERNALSYM SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE}
284   SNMP_ERRORSTATUS_COMMITFAILED               = 14;
285   {$EXTERNALSYM SNMP_ERRORSTATUS_COMMITFAILED}
286   SNMP_ERRORSTATUS_UNDOFAILED                 = 15;
287   {$EXTERNALSYM SNMP_ERRORSTATUS_UNDOFAILED}
288   SNMP_ERRORSTATUS_AUTHORIZATIONERROR         = 16;
289   {$EXTERNALSYM SNMP_ERRORSTATUS_AUTHORIZATIONERROR}
290   SNMP_ERRORSTATUS_NOTWRITABLE                = 17;
291   {$EXTERNALSYM SNMP_ERRORSTATUS_NOTWRITABLE}
292   SNMP_ERRORSTATUS_INCONSISTENTNAME           = 18;
293   {$EXTERNALSYM SNMP_ERRORSTATUS_INCONSISTENTNAME}
294 
295 { SNMPv1 Trap Types }
296 
297   SNMP_GENERICTRAP_COLDSTART                  = 0;
298   {$EXTERNALSYM SNMP_GENERICTRAP_COLDSTART}
299   SNMP_GENERICTRAP_WARMSTART                  = 1;
300   {$EXTERNALSYM SNMP_GENERICTRAP_WARMSTART}
301   SNMP_GENERICTRAP_LINKDOWN                   = 2;
302   {$EXTERNALSYM SNMP_GENERICTRAP_LINKDOWN}
303   SNMP_GENERICTRAP_LINKUP                     = 3;
304   {$EXTERNALSYM SNMP_GENERICTRAP_LINKUP}
305   SNMP_GENERICTRAP_AUTHFAILURE                = 4;
306   {$EXTERNALSYM SNMP_GENERICTRAP_AUTHFAILURE}
307   SNMP_GENERICTRAP_EGPNEIGHLOSS               = 5;
308   {$EXTERNALSYM SNMP_GENERICTRAP_EGPNEIGHLOSS}
309   SNMP_GENERICTRAP_ENTERSPECIFIC              = 6;
310   {$EXTERNALSYM SNMP_GENERICTRAP_ENTERSPECIFIC}
311 
312 { SNMP Access Types }
313 
314   SNMP_ACCESS_NONE                            = 0;
315   {$EXTERNALSYM SNMP_ACCESS_NONE}
316   SNMP_ACCESS_NOTIFY                          = 1;
317   {$EXTERNALSYM SNMP_ACCESS_NOTIFY}
318   SNMP_ACCESS_READ_ONLY                       = 2;
319   {$EXTERNALSYM SNMP_ACCESS_READ_ONLY}
320   SNMP_ACCESS_READ_WRITE                      = 3;
321   {$EXTERNALSYM SNMP_ACCESS_READ_WRITE}
322   SNMP_ACCESS_READ_CREATE                     = 4;
323   {$EXTERNALSYM SNMP_ACCESS_READ_CREATE}
324 
325 { SNMP API Return Code Definitions }
326 
327 type
328   SNMPAPI = Integer;
329   {$EXTERNALSYM SNMPAPI}
330 
331 const
332   SNMPAPI_NOERROR = True;
333   {$EXTERNALSYM SNMPAPI_NOERROR}
334   SNMPAPI_ERROR = False;
335   {$EXTERNALSYM SNMPAPI_ERROR}
336 
337 { SNMP Extension API Type Definitions }
338 
339 type
wUptimeReferencenull340   TSnmpExtensionInit = function(dwUptimeReference: DWORD; var phSubagentTrapEvent: HANDLE;
341     var pFirstSupportedRegion: PAsnObjectIdentifier): BOOL; stdcall;
342 
arnull343   TSnmpExtensionInitEx = function(var pNextSupportedRegion: PAsnObjectIdentifier): BOOL; stdcall;
344 
AgentMgmtDatanull345   TSnmpExtensionMonitor = function(pAgentMgmtData: LPVOID): BOOL; stdcall;
346 
PduTypenull347   TSnmpExtensionQuery = function(bPduType: Byte; var pVarBindList: TSnmpVarBindList;
348     var pErrorStatus: TAsnInteger32; var pErrorIndex: TAsnInteger32): BOOL; stdcall;
349 
RequestTypenull350   TSnmpExtensionQueryEx = function(nRequestType: UINT; nTransactionId: UINT; var pVarBindList: PSnmpVarBindList;
351     var pContextInfo: PAsnOctetString; var pErrorStatus: TAsnInteger32; var pErrorIndex: TAsnInteger32): BOOL; stdcall;
352 
EnterpriseOidnull353   TSnmpExtensionTrap = function(pEnterpriseOid: PAsnObjectIdentifier; var pGenericTrapId: TAsnInteger32;
354      var pSpecificTrapId: TAsnInteger32; var pTimeStamp: TAsnTimeticks; var pVarBindList: PSnmpVarBindList): BOOL; stdcall;
355 
356   TSnmpExtensionClose = procedure; stdcall;
357 
358 { SNMP API Prototypes }
359 
SnmpUtilOidCpynull360 function SnmpUtilOidCpy(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
361 {$EXTERNALSYM SnmpUtilOidCpy}
SnmpUtilOidAppendnull362 function SnmpUtilOidAppend(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
363 {$EXTERNALSYM SnmpUtilOidAppend}
SnmpUtilOidNCmpnull364 function SnmpUtilOidNCmp(pOid1, pOid2: PAsnObjectIdentifier; nSubIds: UINT): SNMPAPI; stdcall;
365 {$EXTERNALSYM SnmpUtilOidNCmp}
SnmpUtilOidCmpnull366 function SnmpUtilOidCmp(pOid1, pOid2: PAsnObjectIdentifier): SNMPAPI; stdcall;
367 {$EXTERNALSYM SnmpUtilOidCmp}
368 procedure SnmpUtilOidFree(pOid: TAsnObjectIdentifier); stdcall;
369 {$EXTERNALSYM SnmpUtilOidFree}
SnmpUtilOctetsCmpnull370 function SnmpUtilOctetsCmp(pOctets1, pOctets2: PAsnOctetString): SNMPAPI; stdcall;
371 {$EXTERNALSYM SnmpUtilOctetsCmp}
SnmpUtilOctetsNCmpnull372 function SnmpUtilOctetsNCmp(pOctets1, pOctets2: PAsnOctetString; nChars: UINT): SNMPAPI; stdcall;
373 {$EXTERNALSYM SnmpUtilOctetsNCmp}
SnmpUtilOctetsCpynull374 function SnmpUtilOctetsCpy(pOctetsDst, pOctetsSrc: PAsnOctetString): SNMPAPI; stdcall;
375 {$EXTERNALSYM SnmpUtilOctetsCpy}
376 procedure SnmpUtilOctetsFree(pOctets: PAsnOctetString); stdcall;
377 {$EXTERNALSYM SnmpUtilOctetsFree}
SnmpUtilAsnAnyCpynull378 function SnmpUtilAsnAnyCpy(pAnyDst, pAnySrc: PAsnAny): SNMPAPI; stdcall;
379 {$EXTERNALSYM SnmpUtilAsnAnyCpy}
380 procedure SnmpUtilAsnAnyFree(pAny: PAsnAny); stdcall;
381 {$EXTERNALSYM SnmpUtilAsnAnyFree}
SnmpUtilVarBindCpynull382 function SnmpUtilVarBindCpy(pVbDst: PSnmpVarBind; pVbSrc: PSnmpVarBind): SNMPAPI; stdcall;
383 {$EXTERNALSYM SnmpUtilVarBindCpy}
384 procedure SnmpUtilVarBindFree(pVb: PSnmpVarBind); stdcall;
385 {$EXTERNALSYM SnmpUtilVarBindFree}
SnmpUtilVarBindListCpynull386 function SnmpUtilVarBindListCpy(pVblDst: PSnmpVarBindList; pVblSrc: PSnmpVarBindList): SNMPAPI; stdcall;
387 {$EXTERNALSYM SnmpUtilVarBindListCpy}
388 procedure SnmpUtilVarBindListFree(pVbl: PSnmpVarBindList); stdcall;
389 {$EXTERNALSYM SnmpUtilVarBindListFree}
390 procedure SnmpUtilMemFree(pMem: LPVOID); stdcall;
391 {$EXTERNALSYM SnmpUtilMemFree}
SnmpUtilMemAllocnull392 function SnmpUtilMemAlloc(nBytes: UINT): LPVOID; stdcall;
393 {$EXTERNALSYM SnmpUtilMemAlloc}
SnmpUtilMemReAllocnull394 function SnmpUtilMemReAlloc(pMem: LPVOID; nBytes: UINT): LPVOID; stdcall;
395 {$EXTERNALSYM SnmpUtilMemReAlloc}
SnmpUtilOidToAnull396 function SnmpUtilOidToA(Oid: PAsnObjectIdentifier): LPSTR; stdcall;
397 {$EXTERNALSYM SnmpUtilOidToA}
SnmpUtilIdsToAnull398 function SnmpUtilIdsToA(Ids: PUINT; IdLength: UINT): LPSTR; stdcall;
399 {$EXTERNALSYM SnmpUtilIdsToA}
400 procedure SnmpUtilPrintOid(Oid: PAsnObjectIdentifier); stdcall;
401 {$EXTERNALSYM SnmpUtilPrintOid}
402 procedure SnmpUtilPrintAsnAny(pAny: PAsnAny); stdcall;
403 {$EXTERNALSYM SnmpUtilPrintAsnAny}
SnmpSvcGetUptimenull404 function SnmpSvcGetUptime: DWORD; stdcall;
405 {$EXTERNALSYM SnmpSvcGetUptime}
406 procedure SnmpSvcSetLogLevel(nLogLevel: INT); stdcall;
407 {$EXTERNALSYM SnmpSvcSetLogLevel}
408 procedure SnmpSvcSetLogType(nLogType: INT); stdcall;
409 {$EXTERNALSYM SnmpSvcSetLogType}
410 
411 { SNMP Debugging Definitions }
412 
413 const
414   SNMP_LOG_SILENT                 = $0;
415   {$EXTERNALSYM SNMP_LOG_SILENT}
416   SNMP_LOG_FATAL                  = $1;
417   {$EXTERNALSYM SNMP_LOG_FATAL}
418   SNMP_LOG_ERROR                  = $2;
419   {$EXTERNALSYM SNMP_LOG_ERROR}
420   SNMP_LOG_WARNING                = $3;
421   {$EXTERNALSYM SNMP_LOG_WARNING}
422   SNMP_LOG_TRACE                  = $4;
423   {$EXTERNALSYM SNMP_LOG_TRACE}
424   SNMP_LOG_VERBOSE                = $5;
425   {$EXTERNALSYM SNMP_LOG_VERBOSE}
426 
427   SNMP_OUTPUT_TO_CONSOLE          = $1;
428   {$EXTERNALSYM SNMP_OUTPUT_TO_CONSOLE}
429   SNMP_OUTPUT_TO_LOGFILE          = $2;
430   {$EXTERNALSYM SNMP_OUTPUT_TO_LOGFILE}
431   SNMP_OUTPUT_TO_EVENTLOG         = $4;  // no longer supported
432   {$EXTERNALSYM SNMP_OUTPUT_TO_EVENTLOG}
433   SNMP_OUTPUT_TO_DEBUGGER         = $8;
434   {$EXTERNALSYM SNMP_OUTPUT_TO_DEBUGGER}
435 
436 { SNMP Debugging Prototypes }
437 
438 procedure SnmpUtilDbgPrint(nLogLevel: INT; szFormat: LPSTR); stdcall;
439 {$EXTERNALSYM SnmpUtilDbgPrint}
440 
441 { Miscellaneous definitions }
442 
443 const
444   DEFINE_NULLOID: TAsnObjectIdentifier = (idLength: 0; ids: nil);
445   {$EXTERNALSYM DEFINE_NULLOID}
446   DEFINE_NULLOCTETS: TAsnOctetString = (stream: nil; length: 0; dynamic_: False);
447   {$EXTERNALSYM DEFINE_NULLOCTETS}
448 
449   DEFAULT_SNMP_PORT_UDP       = 161;
450   {$EXTERNALSYM DEFAULT_SNMP_PORT_UDP}
451   DEFAULT_SNMP_PORT_IPX       = 36879;
452   {$EXTERNALSYM DEFAULT_SNMP_PORT_IPX}
453   DEFAULT_SNMPTRAP_PORT_UDP   = 162;
454   {$EXTERNALSYM DEFAULT_SNMPTRAP_PORT_UDP}
455   DEFAULT_SNMPTRAP_PORT_IPX   = 36880;
456   {$EXTERNALSYM DEFAULT_SNMPTRAP_PORT_IPX}
457   SNMP_MAX_OID_LEN            = 128;
458   {$EXTERNALSYM SNMP_MAX_OID_LEN}
459 
460 { API Error Code Definitions }
461 
462   SNMP_MEM_ALLOC_ERROR            = 1;
463   {$EXTERNALSYM SNMP_MEM_ALLOC_ERROR}
464   SNMP_BERAPI_INVALID_LENGTH      = 10;
465   {$EXTERNALSYM SNMP_BERAPI_INVALID_LENGTH}
466   SNMP_BERAPI_INVALID_TAG         = 11;
467   {$EXTERNALSYM SNMP_BERAPI_INVALID_TAG}
468   SNMP_BERAPI_OVERFLOW            = 12;
469   {$EXTERNALSYM SNMP_BERAPI_OVERFLOW}
470   SNMP_BERAPI_SHORT_BUFFER        = 13;
471   {$EXTERNALSYM SNMP_BERAPI_SHORT_BUFFER}
472   SNMP_BERAPI_INVALID_OBJELEM     = 14;
473   {$EXTERNALSYM SNMP_BERAPI_INVALID_OBJELEM}
474   SNMP_PDUAPI_UNRECOGNIZED_PDU    = 20;
475   {$EXTERNALSYM SNMP_PDUAPI_UNRECOGNIZED_PDU}
476   SNMP_PDUAPI_INVALID_ES          = 21;
477   {$EXTERNALSYM SNMP_PDUAPI_INVALID_ES}
478   SNMP_PDUAPI_INVALID_GT          = 22;
479   {$EXTERNALSYM SNMP_PDUAPI_INVALID_GT}
480   SNMP_AUTHAPI_INVALID_VERSION    = 30;
481   {$EXTERNALSYM SNMP_AUTHAPI_INVALID_VERSION}
482   SNMP_AUTHAPI_INVALID_MSG_TYPE   = 31;
483   {$EXTERNALSYM SNMP_AUTHAPI_INVALID_MSG_TYPE}
484   SNMP_AUTHAPI_TRIV_AUTH_FAILED   = 32;
485   {$EXTERNALSYM SNMP_AUTHAPI_TRIV_AUTH_FAILED}
486 
487 { Support for old definitions (support disabled via SNMPSTRICT) }
488 
489 {$IFNDEF SNMPSTRICT}
490 
SNMP_oidcpynull491 function SNMP_oidcpy(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
492 {$EXTERNALSYM SNMP_oidcpy}
SNMP_oidappendnull493 function SNMP_oidappend(pOidDst: PAsnObjectIdentifier; pOidSrc: PAsnObjectIdentifier): SNMPAPI; stdcall;
494 {$EXTERNALSYM SNMP_oidappend}
SNMP_oidncmpnull495 function SNMP_oidncmp(pOid1, pOid2: PAsnObjectIdentifier; nSubIds: UINT): SNMPAPI; stdcall;
496 {$EXTERNALSYM SNMP_oidncmp}
SNMP_oidcmpnull497 function SNMP_oidcmp(pOid1, pOid2: PAsnObjectIdentifier): SNMPAPI; stdcall;
498 {$EXTERNALSYM SNMP_oidcmp}
499 procedure SNMP_oidfree(pOid: TAsnObjectIdentifier); stdcall;
500 {$EXTERNALSYM SNMP_oidfree}
501 
SNMP_CopyVarBindnull502 function SNMP_CopyVarBind(pVbDst: PSnmpVarBind; pVbSrc: PSnmpVarBind): SNMPAPI; stdcall;
503 {$EXTERNALSYM SNMP_CopyVarBind}
504 procedure SNMP_FreeVarBind(pVb: PSnmpVarBind); stdcall;
505 {$EXTERNALSYM SNMP_FreeVarBind}
SNMP_CopyVarBindListnull506 function SNMP_CopyVarBindList(pVblDst: PSnmpVarBindList; pVblSrc: PSnmpVarBindList): SNMPAPI; stdcall;
507 {$EXTERNALSYM SNMP_CopyVarBindList}
508 procedure SNMP_FreeVarBindList(pVbl: PSnmpVarBindList); stdcall;
509 {$EXTERNALSYM SNMP_FreeVarBindList}
510 
511 procedure SNMP_printany(pAny: PAsnAny); stdcall;
512 {$EXTERNALSYM SNMP_printany}
513 
514 procedure SNMP_free(pMem: LPVOID); stdcall;
515 {$EXTERNALSYM SNMP_free}
SNMP_mallocnull516 function SNMP_malloc(nBytes: UINT): LPVOID; stdcall;
517 {$EXTERNALSYM SNMP_malloc}
SNMP_reallocnull518 function SNMP_realloc(pMem: LPVOID; nBytes: UINT): LPVOID; stdcall;
519 {$EXTERNALSYM SNMP_realloc}
520 
521 procedure SNMP_DBG_free(pMem: LPVOID); stdcall;
522 {$EXTERNALSYM SNMP_DBG_free}
SNMP_DBG_mallocnull523 function SNMP_DBG_malloc(nBytes: UINT): LPVOID; stdcall;
524 {$EXTERNALSYM SNMP_DBG_malloc}
SNMP_DBG_reallocnull525 function SNMP_DBG_realloc(pMem: LPVOID; nBytes: UINT): LPVOID; stdcall;
526 {$EXTERNALSYM SNMP_DBG_realloc}
527 
528 const
529   ASN_RFC1155_IPADDRESS           = ASN_IPADDRESS;
530   {$EXTERNALSYM ASN_RFC1155_IPADDRESS}
531   ASN_RFC1155_COUNTER             = ASN_COUNTER32;
532   {$EXTERNALSYM ASN_RFC1155_COUNTER}
533   ASN_RFC1155_GAUGE               = ASN_GAUGE32;
534   {$EXTERNALSYM ASN_RFC1155_GAUGE}
535   ASN_RFC1155_TIMETICKS           = ASN_TIMETICKS;
536   {$EXTERNALSYM ASN_RFC1155_TIMETICKS}
537   ASN_RFC1155_OPAQUE              = ASN_OPAQUE;
538   {$EXTERNALSYM ASN_RFC1155_OPAQUE}
539   ASN_RFC1213_DISPSTRING          = ASN_OCTETSTRING;
540   {$EXTERNALSYM ASN_RFC1213_DISPSTRING}
541 
542   ASN_RFC1157_GETREQUEST          = SNMP_PDU_GET;
543   {$EXTERNALSYM ASN_RFC1157_GETREQUEST}
544   ASN_RFC1157_GETNEXTREQUEST      = SNMP_PDU_GETNEXT;
545   {$EXTERNALSYM ASN_RFC1157_GETNEXTREQUEST}
546   ASN_RFC1157_GETRESPONSE         = SNMP_PDU_RESPONSE;
547   {$EXTERNALSYM ASN_RFC1157_GETRESPONSE}
548   ASN_RFC1157_SETREQUEST          = SNMP_PDU_SET;
549   {$EXTERNALSYM ASN_RFC1157_SETREQUEST}
550   ASN_RFC1157_TRAP                = SNMP_PDU_V1TRAP;
551   {$EXTERNALSYM ASN_RFC1157_TRAP}
552 
553   ASN_CONTEXTSPECIFIC             = ASN_CONTEXT;
554   {$EXTERNALSYM ASN_CONTEXTSPECIFIC}
555   ASN_PRIMATIVE                   = ASN_PRIMITIVE;
556   {$EXTERNALSYM ASN_PRIMATIVE}
557 
558 type
559   RFC1157VarBindList              = TSnmpVarBindList;
560   {$EXTERNALSYM RFC1157VarBindList}
561   RFC1157VarBind                  = TSnmpVarBind;
562   {$EXTERNALSYM RFC1157VarBind}
563   TAsnInteger                     = TAsnInteger32;
564   {$EXTERNALSYM TAsnInteger}
565   TAsnCounter                     = TAsnCounter32;
566   {$EXTERNALSYM TAsnCounter}
567   TAsnGauge                       = TAsnGauge32;
568   {$EXTERNALSYM TAsnGauge}
569 
570 const
571   ASN_UNSIGNED32                  = ASN_UINTEGER32;
572   {$EXTERNALSYM ASN_UNSIGNED32}
573 
574 {$ENDIF !SNMPSTRICT}
575 
576 {$ENDIF JWA_IMPLEMENTATIONSECTION}
577 
578 
579 
580 {$IFNDEF JWA_OMIT_SECTIONS}
581 implementation
582 uses
583   JwaWinBase;
584 {$ENDIF JWA_OMIT_SECTIONS}
585 
586 
587 
588 {$IFNDEF JWA_INTERFACESECTION}
589 
590 
591 
592 {$IFNDEF JWA_INCLUDEMODE}
593 const
594   snmpapilib = 'snmpapi.dll';
595 {$ENDIF JWA_INCLUDEMODE}
596 
597 {$IFDEF DYNAMIC_LINK}
598 
599 var
600   _SnmpUtilOidCpy: Pointer;
601 
SnmpUtilOidCpynull602 function SnmpUtilOidCpy;
603 begin
604   GetProcedureAddress(_SnmpUtilOidCpy, snmpapilib, 'SnmpUtilOidCpy');
605   asm
606         MOV     ESP, EBP
607         POP     EBP
608         JMP     [_SnmpUtilOidCpy]
609   end;
610 end;
611 
612 var
613   _SnmpUtilOidAppend: Pointer;
614 
SnmpUtilOidAppendnull615 function SnmpUtilOidAppend;
616 begin
617   GetProcedureAddress(_SnmpUtilOidAppend, snmpapilib, 'SnmpUtilOidAppend');
618   asm
619         MOV     ESP, EBP
620         POP     EBP
621         JMP     [_SnmpUtilOidAppend]
622   end;
623 end;
624 
625 var
626   _SnmpUtilOidNCmp: Pointer;
627 
SnmpUtilOidNCmpnull628 function SnmpUtilOidNCmp;
629 begin
630   GetProcedureAddress(_SnmpUtilOidNCmp, snmpapilib, 'SnmpUtilOidNCmp');
631   asm
632         MOV     ESP, EBP
633         POP     EBP
634         JMP     [_SnmpUtilOidNCmp]
635   end;
636 end;
637 
638 var
639   _SnmpUtilOidCmp: Pointer;
640 
SnmpUtilOidCmpnull641 function SnmpUtilOidCmp;
642 begin
643   GetProcedureAddress(_SnmpUtilOidCmp, snmpapilib, 'SnmpUtilOidCmp');
644   asm
645         MOV     ESP, EBP
646         POP     EBP
647         JMP     [_SnmpUtilOidCmp]
648   end;
649 end;
650 
651 var
652   _SnmpUtilOidFree: Pointer;
653 
654 procedure SnmpUtilOidFree;
655 begin
656   GetProcedureAddress(_SnmpUtilOidFree, snmpapilib, 'SnmpUtilOidFree');
657   asm
658         MOV     ESP, EBP
659         POP     EBP
660         JMP     [_SnmpUtilOidFree]
661   end;
662 end;
663 
664 var
665   _SnmpUtilOctetsCmp: Pointer;
666 
SnmpUtilOctetsCmpnull667 function SnmpUtilOctetsCmp;
668 begin
669   GetProcedureAddress(_SnmpUtilOctetsCmp, snmpapilib, 'SnmpUtilOctetsCmp');
670   asm
671         MOV     ESP, EBP
672         POP     EBP
673         JMP     [_SnmpUtilOctetsCmp]
674   end;
675 end;
676 
677 var
678   _SnmpUtilOctetsNCmp: Pointer;
679 
SnmpUtilOctetsNCmpnull680 function SnmpUtilOctetsNCmp;
681 begin
682   GetProcedureAddress(_SnmpUtilOctetsNCmp, snmpapilib, 'SnmpUtilOctetsNCmp');
683   asm
684         MOV     ESP, EBP
685         POP     EBP
686         JMP     [_SnmpUtilOctetsNCmp]
687   end;
688 end;
689 
690 var
691   _SnmpUtilOctetsCpy: Pointer;
692 
SnmpUtilOctetsCpynull693 function SnmpUtilOctetsCpy;
694 begin
695   GetProcedureAddress(_SnmpUtilOctetsCpy, snmpapilib, 'SnmpUtilOctetsCpy');
696   asm
697         MOV     ESP, EBP
698         POP     EBP
699         JMP     [_SnmpUtilOctetsCpy]
700   end;
701 end;
702 
703 var
704   _SnmpUtilOctetsFree: Pointer;
705 
706 procedure SnmpUtilOctetsFree;
707 begin
708   GetProcedureAddress(_SnmpUtilOctetsFree, snmpapilib, 'SnmpUtilOctetsFree');
709   asm
710         MOV     ESP, EBP
711         POP     EBP
712         JMP     [_SnmpUtilOctetsFree]
713   end;
714 end;
715 
716 var
717   _SnmpUtilAsnAnyCpy: Pointer;
718 
SnmpUtilAsnAnyCpynull719 function SnmpUtilAsnAnyCpy;
720 begin
721   GetProcedureAddress(_SnmpUtilAsnAnyCpy, snmpapilib, 'SnmpUtilAsnAnyCpy');
722   asm
723         MOV     ESP, EBP
724         POP     EBP
725         JMP     [_SnmpUtilAsnAnyCpy]
726   end;
727 end;
728 
729 var
730   _SnmpUtilAsnAnyFree: Pointer;
731 
732 procedure SnmpUtilAsnAnyFree;
733 begin
734   GetProcedureAddress(_SnmpUtilAsnAnyFree, snmpapilib, 'SnmpUtilAsnAnyFree');
735   asm
736         MOV     ESP, EBP
737         POP     EBP
738         JMP     [_SnmpUtilAsnAnyFree]
739   end;
740 end;
741 
742 var
743   _SnmpUtilVarBindCpy: Pointer;
744 
SnmpUtilVarBindCpynull745 function SnmpUtilVarBindCpy;
746 begin
747   GetProcedureAddress(_SnmpUtilVarBindCpy, snmpapilib, 'SnmpUtilVarBindCpy');
748   asm
749         MOV     ESP, EBP
750         POP     EBP
751         JMP     [_SnmpUtilVarBindCpy]
752   end;
753 end;
754 
755 var
756   _SnmpUtilVarBindFree: Pointer;
757 
758 procedure SnmpUtilVarBindFree;
759 begin
760   GetProcedureAddress(_SnmpUtilVarBindFree, snmpapilib, 'SnmpUtilVarBindFree');
761   asm
762         MOV     ESP, EBP
763         POP     EBP
764         JMP     [_SnmpUtilVarBindFree]
765   end;
766 end;
767 
768 var
769   _SnmpUtilVarBindListCpy: Pointer;
770 
SnmpUtilVarBindListCpynull771 function SnmpUtilVarBindListCpy;
772 begin
773   GetProcedureAddress(_SnmpUtilVarBindListCpy, snmpapilib, 'SnmpUtilVarBindListCpy');
774   asm
775         MOV     ESP, EBP
776         POP     EBP
777         JMP     [_SnmpUtilVarBindListCpy]
778   end;
779 end;
780 
781 var
782   _SnmpUtilVarBindListFree: Pointer;
783 
784 procedure SnmpUtilVarBindListFree;
785 begin
786   GetProcedureAddress(_SnmpUtilVarBindListFree, snmpapilib, 'SnmpUtilVarBindListFree');
787   asm
788         MOV     ESP, EBP
789         POP     EBP
790         JMP     [_SnmpUtilVarBindListFree]
791   end;
792 end;
793 
794 var
795   _SnmpUtilMemFree: Pointer;
796 
797 procedure SnmpUtilMemFree;
798 begin
799   GetProcedureAddress(_SnmpUtilMemFree, snmpapilib, 'SnmpUtilMemFree');
800   asm
801         MOV     ESP, EBP
802         POP     EBP
803         JMP     [_SnmpUtilMemFree]
804   end;
805 end;
806 
807 var
808   _SnmpUtilMemAlloc: Pointer;
809 
SnmpUtilMemAllocnull810 function SnmpUtilMemAlloc;
811 begin
812   GetProcedureAddress(_SnmpUtilMemAlloc, snmpapilib, 'SnmpUtilMemAlloc');
813   asm
814         MOV     ESP, EBP
815         POP     EBP
816         JMP     [_SnmpUtilMemAlloc]
817   end;
818 end;
819 
820 var
821   _SnmpUtilMemReAlloc: Pointer;
822 
SnmpUtilMemReAllocnull823 function SnmpUtilMemReAlloc;
824 begin
825   GetProcedureAddress(_SnmpUtilMemReAlloc, snmpapilib, 'SnmpUtilMemReAlloc');
826   asm
827         MOV     ESP, EBP
828         POP     EBP
829         JMP     [_SnmpUtilMemReAlloc]
830   end;
831 end;
832 
833 var
834   _SnmpUtilOidToA: Pointer;
835 
SnmpUtilOidToAnull836 function SnmpUtilOidToA;
837 begin
838   GetProcedureAddress(_SnmpUtilOidToA, snmpapilib, 'SnmpUtilOidToA');
839   asm
840         MOV     ESP, EBP
841         POP     EBP
842         JMP     [_SnmpUtilOidToA]
843   end;
844 end;
845 
846 var
847   _SnmpUtilIdsToA: Pointer;
848 
SnmpUtilIdsToAnull849 function SnmpUtilIdsToA;
850 begin
851   GetProcedureAddress(_SnmpUtilIdsToA, snmpapilib, 'SnmpUtilIdsToA');
852   asm
853         MOV     ESP, EBP
854         POP     EBP
855         JMP     [_SnmpUtilIdsToA]
856   end;
857 end;
858 
859 var
860   _SnmpUtilPrintOid: Pointer;
861 
862 procedure SnmpUtilPrintOid;
863 begin
864   GetProcedureAddress(_SnmpUtilPrintOid, snmpapilib, 'SnmpUtilPrintOid');
865   asm
866         MOV     ESP, EBP
867         POP     EBP
868         JMP     [_SnmpUtilPrintOid]
869   end;
870 end;
871 
872 var
873   _SnmpUtilPrintAsnAny: Pointer;
874 
875 procedure SnmpUtilPrintAsnAny;
876 begin
877   GetProcedureAddress(_SnmpUtilPrintAsnAny, snmpapilib, 'SnmpUtilPrintAsnAny');
878   asm
879         MOV     ESP, EBP
880         POP     EBP
881         JMP     [_SnmpUtilPrintAsnAny]
882   end;
883 end;
884 
885 var
886   _SnmpSvcGetUptime: Pointer;
887 
SnmpSvcGetUptimenull888 function SnmpSvcGetUptime;
889 begin
890   GetProcedureAddress(_SnmpSvcGetUptime, snmpapilib, 'SnmpSvcGetUptime');
891   asm
892         MOV     ESP, EBP
893         POP     EBP
894         JMP     [_SnmpSvcGetUptime]
895   end;
896 end;
897 
898 var
899   _SnmpSvcSetLogLevel: Pointer;
900 
901 procedure SnmpSvcSetLogLevel;
902 begin
903   GetProcedureAddress(_SnmpSvcSetLogLevel, snmpapilib, 'SnmpSvcSetLogLevel');
904   asm
905         MOV     ESP, EBP
906         POP     EBP
907         JMP     [_SnmpSvcSetLogLevel]
908   end;
909 end;
910 
911 var
912   _SnmpSvcSetLogType: Pointer;
913 
914 procedure SnmpSvcSetLogType;
915 begin
916   GetProcedureAddress(_SnmpSvcSetLogType, snmpapilib, 'SnmpSvcSetLogType');
917   asm
918         MOV     ESP, EBP
919         POP     EBP
920         JMP     [_SnmpSvcSetLogType]
921   end;
922 end;
923 
924 var
925   _SnmpUtilDbgPrint: Pointer;
926 
927 procedure SnmpUtilDbgPrint;
928 begin
929   GetProcedureAddress(_SnmpUtilDbgPrint, snmpapilib, 'SnmpUtilDbgPrint');
930   asm
931         MOV     ESP, EBP
932         POP     EBP
933         JMP     [_SnmpUtilDbgPrint]
934   end;
935 end;
936 
937 {$IFNDEF SNMPSTRICT}
938 
939 var
940   _SNMP_oidcpy: Pointer;
941 
SNMP_oidcpynull942 function SNMP_oidcpy;
943 begin
944   GetProcedureAddress(_SNMP_oidcpy, snmpapilib, 'SnmpUtilOidCpy');
945   asm
946         MOV     ESP, EBP
947         POP     EBP
948         JMP     [_SNMP_oidcpy]
949   end;
950 end;
951 
952 var
953   _SNMP_oidappend: Pointer;
954 
SNMP_oidappendnull955 function SNMP_oidappend;
956 begin
957   GetProcedureAddress(_SNMP_oidappend, snmpapilib, 'SnmpUtilOidAppend');
958   asm
959         MOV     ESP, EBP
960         POP     EBP
961         JMP     [_SNMP_oidappend]
962   end;
963 end;
964 
965 var
966   _SNMP_oidncmp: Pointer;
967 
SNMP_oidncmpnull968 function SNMP_oidncmp;
969 begin
970   GetProcedureAddress(_SNMP_oidncmp, snmpapilib, 'SnmpUtilOidNCmp');
971   asm
972         MOV     ESP, EBP
973         POP     EBP
974         JMP     [_SNMP_oidncmp]
975   end;
976 end;
977 
978 var
979   _SNMP_oidcmp: Pointer;
980 
SNMP_oidcmpnull981 function SNMP_oidcmp;
982 begin
983   GetProcedureAddress(_SNMP_oidcmp, snmpapilib, 'SnmpUtilOidCmp');
984   asm
985         MOV     ESP, EBP
986         POP     EBP
987         JMP     [_SNMP_oidcmp]
988   end;
989 end;
990 
991 var
992   _SNMP_oidfree: Pointer;
993 
994 procedure SNMP_oidfree;
995 begin
996   GetProcedureAddress(_SNMP_oidfree, snmpapilib, 'SnmpUtilOidFree');
997   asm
998         MOV     ESP, EBP
999         POP     EBP
1000         JMP     [_SNMP_oidfree]
1001   end;
1002 end;
1003 
1004 var
1005   _SNMP_CopyVarBind: Pointer;
1006 
SNMP_CopyVarBindnull1007 function SNMP_CopyVarBind;
1008 begin
1009   GetProcedureAddress(_SNMP_CopyVarBind, snmpapilib, 'SnmpUtilVarBindCpy');
1010   asm
1011         MOV     ESP, EBP
1012         POP     EBP
1013         JMP     [_SNMP_CopyVarBind]
1014   end;
1015 end;
1016 
1017 var
1018   _SNMP_FreeVarBind: Pointer;
1019 
1020 procedure SNMP_FreeVarBind;
1021 begin
1022   GetProcedureAddress(_SNMP_FreeVarBind, snmpapilib, 'SnmpUtilVarBindFree');
1023   asm
1024         MOV     ESP, EBP
1025         POP     EBP
1026         JMP     [_SNMP_FreeVarBind]
1027   end;
1028 end;
1029 
1030 var
1031   _SNMP_CopyVarBindList: Pointer;
1032 
SNMP_CopyVarBindListnull1033 function SNMP_CopyVarBindList;
1034 begin
1035   GetProcedureAddress(_SNMP_CopyVarBindList, snmpapilib, 'SnmpUtilVarBindListCpy');
1036   asm
1037         MOV     ESP, EBP
1038         POP     EBP
1039         JMP     [_SNMP_CopyVarBindList]
1040   end;
1041 end;
1042 
1043 var
1044   _SNMP_FreeVarBindList: Pointer;
1045 
1046 procedure SNMP_FreeVarBindList;
1047 begin
1048   GetProcedureAddress(_SNMP_FreeVarBindList, snmpapilib, 'SnmpUtilVarBindListFree');
1049   asm
1050         MOV     ESP, EBP
1051         POP     EBP
1052         JMP     [_SNMP_FreeVarBindList]
1053   end;
1054 end;
1055 
1056 var
1057   _SNMP_printany: Pointer;
1058 
1059 procedure SNMP_printany;
1060 begin
1061   GetProcedureAddress(_SNMP_printany, snmpapilib, 'SnmpUtilPrintAsnAny');
1062   asm
1063         MOV     ESP, EBP
1064         POP     EBP
1065         JMP     [_SNMP_printany]
1066   end;
1067 end;
1068 
1069 var
1070   _SNMP_free: Pointer;
1071 
1072 procedure SNMP_free;
1073 begin
1074   GetProcedureAddress(_SNMP_free, snmpapilib, 'SnmpUtilMemFree');
1075   asm
1076         MOV     ESP, EBP
1077         POP     EBP
1078         JMP     [_SNMP_free]
1079   end;
1080 end;
1081 
1082 var
1083   _SNMP_malloc: Pointer;
1084 
SNMP_mallocnull1085 function SNMP_malloc;
1086 begin
1087   GetProcedureAddress(_SNMP_malloc, snmpapilib, 'SnmpUtilMemAlloc');
1088   asm
1089         MOV     ESP, EBP
1090         POP     EBP
1091         JMP     [_SNMP_malloc]
1092   end;
1093 end;
1094 
1095 var
1096   _SNMP_realloc: Pointer;
1097 
SNMP_reallocnull1098 function SNMP_realloc;
1099 begin
1100   GetProcedureAddress(_SNMP_realloc, snmpapilib, 'SnmpUtilMemReAlloc');
1101   asm
1102         MOV     ESP, EBP
1103         POP     EBP
1104         JMP     [_SNMP_realloc]
1105   end;
1106 end;
1107 
1108 var
1109   _SNMP_DBG_free: Pointer;
1110 
1111 procedure SNMP_DBG_free;
1112 begin
1113   GetProcedureAddress(_SNMP_DBG_free, snmpapilib, 'SnmpUtilMemFree');
1114   asm
1115         MOV     ESP, EBP
1116         POP     EBP
1117         JMP     [_SNMP_DBG_free]
1118   end;
1119 end;
1120 
1121 var
1122   _SNMP_DBG_malloc: Pointer;
1123 
SNMP_DBG_mallocnull1124 function SNMP_DBG_malloc;
1125 begin
1126   GetProcedureAddress(_SNMP_DBG_malloc, snmpapilib, 'SnmpUtilMemAlloc');
1127   asm
1128         MOV     ESP, EBP
1129         POP     EBP
1130         JMP     [_SNMP_DBG_malloc]
1131   end;
1132 end;
1133 
1134 var
1135   _SNMP_DBG_realloc: Pointer;
1136 
SNMP_DBG_reallocnull1137 function SNMP_DBG_realloc;
1138 begin
1139   GetProcedureAddress(_SNMP_DBG_realloc, snmpapilib, 'SnmpUtilMemReAlloc');
1140   asm
1141         MOV     ESP, EBP
1142         POP     EBP
1143         JMP     [_SNMP_DBG_realloc]
1144   end;
1145 end;
1146 
1147 {$ENDIF !SNMPSTRICT}
1148 
1149 {$ELSE}
1150 
SnmpUtilOidCpynull1151 function SnmpUtilOidCpy; external snmpapilib name 'SnmpUtilOidCpy';
SnmpUtilOidAppendnull1152 function SnmpUtilOidAppend; external snmpapilib name 'SnmpUtilOidAppend';
SnmpUtilOidNCmpnull1153 function SnmpUtilOidNCmp; external snmpapilib name 'SnmpUtilOidNCmp';
SnmpUtilOidCmpnull1154 function SnmpUtilOidCmp; external snmpapilib name 'SnmpUtilOidCmp';
1155 procedure SnmpUtilOidFree; external snmpapilib name 'SnmpUtilOidFree';
SnmpUtilOctetsCmpnull1156 function SnmpUtilOctetsCmp; external snmpapilib name 'SnmpUtilOctetsCmp';
SnmpUtilOctetsNCmpnull1157 function SnmpUtilOctetsNCmp; external snmpapilib name 'SnmpUtilOctetsNCmp';
SnmpUtilOctetsCpynull1158 function SnmpUtilOctetsCpy; external snmpapilib name 'SnmpUtilOctetsCpy';
1159 procedure SnmpUtilOctetsFree; external snmpapilib name 'SnmpUtilOctetsFree';
SnmpUtilAsnAnyCpynull1160 function SnmpUtilAsnAnyCpy; external snmpapilib name 'SnmpUtilAsnAnyCpy';
1161 procedure SnmpUtilAsnAnyFree; external snmpapilib name 'SnmpUtilAsnAnyFree';
SnmpUtilVarBindCpynull1162 function SnmpUtilVarBindCpy; external snmpapilib name 'SnmpUtilVarBindCpy';
1163 procedure SnmpUtilVarBindFree; external snmpapilib name 'SnmpUtilVarBindFree';
SnmpUtilVarBindListCpynull1164 function SnmpUtilVarBindListCpy; external snmpapilib name 'SnmpUtilVarBindListCpy';
1165 procedure SnmpUtilVarBindListFree; external snmpapilib name 'SnmpUtilVarBindListFree';
1166 procedure SnmpUtilMemFree; external snmpapilib name 'SnmpUtilMemFree';
SnmpUtilMemAllocnull1167 function SnmpUtilMemAlloc; external snmpapilib name 'SnmpUtilMemAlloc';
SnmpUtilMemReAllocnull1168 function SnmpUtilMemReAlloc; external snmpapilib name 'SnmpUtilMemReAlloc';
SnmpUtilOidToAnull1169 function SnmpUtilOidToA; external snmpapilib name 'SnmpUtilOidToA';
SnmpUtilIdsToAnull1170 function SnmpUtilIdsToA; external snmpapilib name 'SnmpUtilIdsToA';
1171 procedure SnmpUtilPrintOid; external snmpapilib name 'SnmpUtilPrintOid';
1172 procedure SnmpUtilPrintAsnAny; external snmpapilib name 'SnmpUtilPrintAsnAny';
SnmpSvcGetUptimenull1173 function SnmpSvcGetUptime; external snmpapilib name 'SnmpSvcGetUptime';
1174 procedure SnmpSvcSetLogLevel; external snmpapilib name 'SnmpSvcSetLogLevel';
1175 procedure SnmpSvcSetLogType; external snmpapilib name 'SnmpSvcSetLogType';
1176 procedure SnmpUtilDbgPrint; external snmpapilib name 'SnmpUtilDbgPrint';
1177 {$IFNDEF SNMPSTRICT}
SNMP_oidcpynull1178 function SNMP_oidcpy; external snmpapilib name 'SnmpUtilOidCpy';
SNMP_oidappendnull1179 function SNMP_oidappend; external snmpapilib name 'SnmpUtilOidAppend';
SNMP_oidncmpnull1180 function SNMP_oidncmp; external snmpapilib name 'SnmpUtilOidNCmp';
SNMP_oidcmpnull1181 function SNMP_oidcmp; external snmpapilib name 'SnmpUtilOidCmp';
1182 procedure SNMP_oidfree; external snmpapilib name 'SnmpUtilOidFree';
SNMP_CopyVarBindnull1183 function SNMP_CopyVarBind; external snmpapilib name 'SnmpUtilVarBindCpy';
1184 procedure SNMP_FreeVarBind; external snmpapilib name 'SnmpUtilVarBindFree';
SNMP_CopyVarBindListnull1185 function SNMP_CopyVarBindList; external snmpapilib name 'SnmpUtilVarBindListCpy';
1186 procedure SNMP_FreeVarBindList; external snmpapilib name 'SnmpUtilVarBindListFree';
1187 procedure SNMP_printany; external snmpapilib name 'SnmpUtilPrintAsnAny';
1188 procedure SNMP_free; external snmpapilib name 'SnmpUtilMemFree';
SNMP_mallocnull1189 function SNMP_malloc; external snmpapilib name 'SnmpUtilMemAlloc';
SNMP_reallocnull1190 function SNMP_realloc; external snmpapilib name 'SnmpUtilMemReAlloc';
1191 procedure SNMP_DBG_free; external snmpapilib name 'SnmpUtilMemFree';
SNMP_DBG_mallocnull1192 function SNMP_DBG_malloc; external snmpapilib name 'SnmpUtilMemAlloc';
SNMP_DBG_reallocnull1193 function SNMP_DBG_realloc; external snmpapilib name 'SnmpUtilMemReAlloc';
1194 {$ENDIF !SNMPSTRICT}
1195 
1196 {$ENDIF DYNAMIC_LINK}
1197 
1198 {$ENDIF JWA_INTERFACESECTION}
1199 
1200 
1201 
1202 {$IFNDEF JWA_OMIT_SECTIONS}
1203 end.
1204 {$ENDIF JWA_OMIT_SECTIONS}
1205