home *** CD-ROM | disk | FTP | other *** search
/ Tricks of the Windows Gam…ming Gurus (2nd Edition) / Disc2.iso / vc98 / include / oid.h < prev    next >
C/C++ Source or Header  |  1998-04-25  |  4KB  |  103 lines

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