SNMP.H
上传用户:sunrenlu
上传日期:2022-06-13
资源大小:1419k
文件大小:6k
源码类别:

操作系统开发

开发平台:

DOS

  1. /* Portions of the SNMP code are from the Beholder project and are       */
  2. /* Copyright (C) 1993 DNPAP group                                        */
  3. /* Portions Copyright (c) 2000 Erick Engelke                             */
  4. #ifndef _SNMP_H_
  5. #define _SNMP_H_
  6. #include <rtos.h>
  7. #include "dnpap.h"
  8. #define SNMP_VERSION    0
  9. /* Default Sizes */
  10. #define SNMP_SIZE_COMM              255
  11. #define SNMP_SIZE_OBJECTID          63
  12. #define SNMP_SIZE_BUFCHR            255
  13. #define SNMP_SIZE_BUFINT            63
  14. #define SNMP_SIZE_SMALLOBJECTID     15
  15. /* Requests */
  16. #define SNMP_PDU_GET                0
  17. #define SNMP_PDU_NEXT               1
  18. #define SNMP_PDU_RESPONSE           2
  19. #define SNMP_PDU_SET                3
  20. #define SNMP_PDU_TRAP               4
  21. /* Errors */
  22. #define SNMP_NOOVERRIDE            -1
  23. #define SNMP_NOERROR                0
  24. #define SNMP_TOOBIG                 1
  25. #define SNMP_NOSUCHNAME             2
  26. #define SNMP_BADVALUE               3
  27. #define SNMP_READONLY               4
  28. #define SNMP_GENERROR               5
  29. /* General Traps */
  30. #define SNMP_TRAP_COLDSTART          0
  31. #define SNMP_TRAP_WARMSTART          1
  32. #define SNMP_TRAP_LINKDOWN           2
  33. #define SNMP_TRAP_LINKUP             3
  34. #define SNMP_TRAP_AUTFAILURE         4
  35. #define SNMP_TRAP_EQPNEIGHBORLOSS    5
  36. #define SNMP_TRAP_ENTSPECIFIC        6
  37. /* Rmon Status */
  38. #define SNMP_VALID               1
  39. #define SNMP_CREATEREQUEST       2
  40. #define SNMP_UNDERCREATION       3
  41. #define SNMP_INVALID             4
  42. /* Types */
  43. #define SNMP_NULL                0
  44. #define SNMP_INTEGER             1    /* LngInt */
  45. #define SNMP_OCTETSTR            2    /* BufChr */
  46. #define SNMP_OBJECTID            3    /* BufInt */
  47. #define SNMP_IPADDR              4    /* LngUns */
  48. #define SNMP_COUNTER             5    /* LngUns */
  49. #define SNMP_GAUGE               6    /* LngUns */
  50. #define SNMP_TIMETICKS           7    /* LngUns */
  51. #define SNMP_OPAQUE              8    /* BufChr */
  52. #define SNMP_DISPLAYSTR          2    /* BufChr */
  53. /* Typedefs */
  54. typedef struct  _SNMP_STAT       SNMP_STAT;
  55. typedef struct  _SNMP_REQUEST    SNMP_REQUEST;
  56. typedef struct  _SNMP_TRAP       SNMP_TRAP;
  57. typedef union   _SNMP_PDU        SNMP_PDU;
  58. typedef union   _SNMP_SYNTAX     SNMP_SYNTAX;
  59. typedef struct  _SNMP_OBJECT     SNMP_OBJECT;
  60. union _SNMP_SYNTAX
  61. {
  62.          LONG            LngInt;
  63.     LWORD           LngUns;
  64.     BYTE            BufChr [SNMP_SIZE_BUFCHR];
  65.     LONG            BufInt [SNMP_SIZE_BUFINT];
  66.     VOID            *Ptr;
  67. };
  68. struct _SNMP_OBJECT
  69. {
  70.     WORD            Request;
  71.     LONG            Id [SNMP_SIZE_OBJECTID];
  72.     UINT                IdLen;
  73.     WORD            Type;
  74.     SNMP_SYNTAX     Syntax;
  75.     UINT                SyntaxLen;
  76. };
  77. struct _SNMP_STAT
  78. {
  79.          long unsigned   OutPkts;
  80.          long unsigned   OutTooBigs;
  81.          long unsigned   OutNoSuchNames;
  82.          long unsigned   OutBadValues;
  83.          long unsigned   OutReadOnlys;
  84.     long unsigned   OutGenErrs;
  85.     long unsigned   OutGetRequests;
  86.     long unsigned   OutGetNexts;
  87.     long unsigned   OutSetRequests;
  88.     long unsigned   OutGetResponses;
  89.     long unsigned   OutTraps;
  90.     long unsigned   InPkts;
  91.     long unsigned   InTooBigs;
  92.     long unsigned   InNoSuchNames;
  93.     long unsigned   InBadValues;
  94.     long unsigned   InReadOnlys;
  95.     long unsigned   InGenErrs;
  96.     long unsigned   InGetRequests;
  97.     long unsigned   InGetNexts;
  98.     long unsigned   InSetRequests;
  99.     long unsigned   InGetResponses;
  100.          long unsigned   InTraps;
  101.          long unsigned   InBadVersions;
  102.          long unsigned   InASNParseErrs;
  103.          long unsigned   InBadTypes;
  104. };
  105. struct _SNMP_REQUEST
  106. {
  107.          unsigned        Type;
  108.          long unsigned   Id;
  109.          unsigned        ErrorStatus;
  110.          unsigned        ErrorIndex;
  111. };
  112. struct _SNMP_TRAP
  113. {
  114.     unsigned        Type;
  115.     unsigned long   Id [SNMP_SIZE_BUFINT];
  116.     unsigned        IdLen;
  117.     long unsigned   IpAddress;
  118.     unsigned        General;
  119.     unsigned        Specific;
  120.     long unsigned   Time;
  121. };
  122. union _SNMP_PDU
  123. {
  124.     unsigned        Type;
  125.     SNMP_TRAP       Trap;
  126.     SNMP_REQUEST    Request;
  127. };
  128. extern INT snmpErrStatus;
  129. extern CONST CHAR *SnmpTrap[];
  130. BOOLEAN SnmpEnc(BYTE        **Snmp,
  131.                                          unsigned    *SnmpLen,
  132.                                          SNMP_PDU    *Pdu,
  133.                                          BYTE        *Com,
  134.                                          unsigned    ComLen,
  135.                                          SNMP_OBJECT *Lst,
  136.                                          unsigned    LstLen);
  137. BOOLEAN SnmpDec(BYTE        *Snmp,
  138.                 unsigned    SnmpLen,
  139.                 SNMP_PDU    *Pdu,
  140.                 BYTE        *Com,
  141.                 unsigned    ComSze,
  142.                 unsigned    *ComLen,
  143.                 SNMP_OBJECT *Lst,
  144.                 unsigned    LstSze,
  145.                 unsigned    *LstLen);
  146. #define SNMP_OID_SIZE 25
  147. typedef long (*SNMP_FUNC)(void *, char *, int, SNMP_OBJECT *, DWORD, DWORD);
  148. typedef struct _esnmp_oid {
  149.          int     oidlen;
  150.          int     oid[ SNMP_OID_SIZE ];       /* last in list is -1 */
  151.          SNMP_FUNC fn;
  152.     DWORD   data1, data2;
  153. } esnmp_oid;
  154. void snmp_compile_oids( esnmp_oid far *p );
  155. void snmpthread( DWORD dummy );
  156. extern crit_x *_snmp_cs;
  157. int snmp_trap( DWORD remote_ip, char *community, char *entOID, char *OID, DWORD agent,
  158.         int genTrapType, int specTrapType, int valueType, void *value, int valueLen );
  159. /* Multiple traps in one */
  160. int snmp_traps( DWORD remote_ip, char *community, char *entOid,
  161.         int count, char **OID, DWORD agent,
  162.         int genTrapType, int specTrapType, int *valueType, void **value, int *valueLen );
  163. extern void (*_snmp_prewalk)( int op,  SNMP_OBJECT *list );
  164. extern int (*_snmp_override)(  BYTE *com, int op, SNMP_OBJECT *list );
  165. /*
  166.  * compare_oid - tell us if src is > (+1), = (0) or < (-1) cmp
  167.  */
  168. int _snmp_compare_oid( SNMP_OBJECT *src, esnmp_oid *cmp );
  169. // snmp_copyobjectid - copies "1.3.6..." to a reply packet and sets length
  170. void snmp_copyobjectid( DWORD * dest, char *source, UINT *len );
  171. /* If you need to process multi-MIB PDUs, set global variable snmpd_maxvars
  172.  * to some higher number inside your application, before you start the
  173.  * snmpd thread.  It is used to allocate buffers at thread start time
  174.  */
  175. extern int snmpd_maxvars;
  176. #endif