Oid.h
上传用户:dzyhzl
上传日期:2019-04-29
资源大小:56270k
文件大小:4k
源码类别:

模拟服务器

开发平台:

C/C++

  1. //==========================================================================================================================
  2. //  MODULE: OID.h
  3. //
  4. //  Description:
  5. //
  6. //  Bloodhound Kernel, OID utilities (SNMP)
  7. //
  8. //  Modification History
  9. //
  10. //  Keith Lau        01/09/95        Created
  11. //==========================================================================================================================
  12. #ifndef OID_H
  13. #define OID_H
  14. #include <windows.h>
  15. #include <string.h>
  16. #include <bh.h>
  17. // class field of BER tag
  18. #define ASN_UNIVERSAL         0x00
  19. #define ASN_APPLICATION       0x40
  20. #define ASN_CONTEXTSPECIFIC   0x80
  21. #define ASN_PRIVATE           0xC0
  22. // primative/constructed field of BER tag
  23. #define ASN_PRIMATIVE         0x00
  24. #define ASN_CONSTRUCTOR       0x20
  25. // Priviliged message
  26. #define ASN_RFCxxxx_PRIVDATA (ASN_CONTEXTSPECIFIC | ASN_PRIMATIVE | 0x01)
  27. #define ASN_RFCxxxx_SNMPMGMTCOM (ASN_CONTEXTSPECIFIC | ASN_CONSTRUCTOR | 0x01)
  28. #define ASN_RFCxxxx_SNMPAUTHMSG (ASN_CONTEXTSPECIFIC | ASN_CONSTRUCTOR | 0x01)
  29. #define ASN_RFCxxxx_SNMPPRIVMSG (ASN_CONTEXTSPECIFIC | ASN_CONSTRUCTOR | 0x01)
  30. // ASN.1 simple types
  31. #define ASN_INTEGER           (ASN_UNIVERSAL | ASN_PRIMATIVE | 0x02)
  32. #define ASN_OCTETSTRING       (ASN_UNIVERSAL | ASN_PRIMATIVE | 0x04)
  33. #define ASN_NULL              (ASN_UNIVERSAL | ASN_PRIMATIVE | 0x05)
  34. #define ASN_OBJECTIDENTIFIER  (ASN_UNIVERSAL | ASN_PRIMATIVE | 0x06)
  35. // ASN.1 constructor types
  36. #define ASN_SEQUENCE          (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10)
  37. #define ASN_SEQUENCEOF        ASN_SEQUENCE
  38. // ASN.1 application specific primatives
  39. #define ASN_RFC1155_IPADDRESS  (ASN_APPLICATION | ASN_PRIMATIVE | 0x00)
  40. #define ASN_RFC1155_COUNTER    (ASN_APPLICATION | ASN_PRIMATIVE | 0x01)
  41. #define ASN_RFC1155_GAUGE      (ASN_APPLICATION | ASN_PRIMATIVE | 0x02)
  42. #define ASN_RFC1155_TIMETICKS  (ASN_APPLICATION | ASN_PRIMATIVE | 0x03)
  43. #define ASN_RFC1155_OPAQUE     (ASN_APPLICATION | ASN_PRIMATIVE | 0x04)
  44. #define ASN_RFC1213_DISPSTRING ASN_OCTETSTRING
  45.    // BER limits
  46. #define BER_OCTET_LEN         8      // 8 bits in an octet
  47. #define BER_OCTET_SIZE        256    // 8 bits make an octet
  48. #define BER_MAX_INT_OCTETS    4      // 4 octets - 32 bit integer
  49. #define BER_MAX_LEN_OCTETS    2      // 2 octets - 16 bit integer length
  50. #define BER_MAX_STREAM_LEN    0xffff // 16 bit unsigned integer
  51. #define BER_MIN_HEADER_LEN    2      // 2 octets
  52. #define BER_MAX_SIMPLE_LEN    127    // SNMP BER definition
  53.    // Buffer offsets for info.
  54. #define BER_TAG_OFFSET        0
  55. #define BER_LENGTH_OFFSET     1
  56.    // Meaningful bit definitions
  57. #define BER_EXTENDED_TAG      0x1f   // 00011111
  58. #define BER_OCTET_CONT_BIT    0x80   // 10000000
  59.    // BER OBJECTIDENTIFIER limits
  60. #define BER_MAX_FIRST_ELEM    2      // Obj Id's 1st element must be 0-2
  61. #define BER_MAX_SECOND_ELEM   39     // Obj Id's 2nd element must be 0-40
  62. // These are defined solely for Object Identifier (OID) filter contains actions
  63. #define OID_BEGINS_WITH       1
  64. #define OID_ENDS_WITH         2
  65. #define OID_CONTAINS          (OID_BEGINS_WITH | OID_ENDS_WITH)
  66. // Function prototypes
  67. DWORD WINAPI DecodeSNMPObjectIdentifier( LPBYTE              lpData, 
  68.                                          DWORD               DataLen,
  69.                                          LPOBJECT_IDENTIFIER lpOID);
  70. VOID WINAPI EncodeSNMPObjectIdentifier( LPBYTE              lpData, 
  71. LPDWORD             lpDataLen,
  72. LPOBJECT_IDENTIFIER lpOID);
  73. BOOL WINAPI IsValidSNMPObjectIdentifier(LPOBJECT_IDENTIFIER lpOID);
  74. BOOL WINAPI ObjectIdentifierContains (LPBYTE SubOID,
  75.                                       WORD   SubOIDLen,
  76.                                       LPBYTE OID,
  77.                                       WORD   OIDLen,
  78.                                       DWORD  ContainFlags);
  79. #endif