home *** CD-ROM | disk | FTP | other *** search
/ Magazyn Internet 2000 May / MICD_2000_05.iso / CBuilder5 / INSTALL / DATA1.CAB / Program_Built_Files / Include / oid.h < prev    next >
C/C++ Source or Header  |  2000-02-01  |  4KB  |  105 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. #pragma option push -b -a8 -pc -A- /*P_O_Push*/
  16. #define OID_H
  17.  
  18. #include <windows.h>
  19. #include <string.h>
  20. #include <bh.h>
  21.  
  22. // class field of BER tag
  23. #define ASN_UNIVERSAL         0x00
  24. #define ASN_APPLICATION       0x40
  25. #define ASN_CONTEXTSPECIFIC   0x80
  26. #define ASN_PRIVATE           0xC0
  27.  
  28. // primative/constructed field of BER tag
  29. #define ASN_PRIMATIVE         0x00
  30. #define ASN_CONSTRUCTOR       0x20
  31.  
  32. // Priviliged message
  33. #define ASN_RFCxxxx_PRIVDATA (ASN_CONTEXTSPECIFIC | ASN_PRIMATIVE | 0x01)
  34.  
  35. #define ASN_RFCxxxx_SNMPMGMTCOM (ASN_CONTEXTSPECIFIC | ASN_CONSTRUCTOR | 0x01)
  36. #define ASN_RFCxxxx_SNMPAUTHMSG (ASN_CONTEXTSPECIFIC | ASN_CONSTRUCTOR | 0x01)
  37. #define ASN_RFCxxxx_SNMPPRIVMSG (ASN_CONTEXTSPECIFIC | ASN_CONSTRUCTOR | 0x01)
  38.  
  39. // ASN.1 simple types
  40. #define ASN_INTEGER           (ASN_UNIVERSAL | ASN_PRIMATIVE | 0x02)
  41. #define ASN_OCTETSTRING       (ASN_UNIVERSAL | ASN_PRIMATIVE | 0x04)
  42. #define ASN_NULL              (ASN_UNIVERSAL | ASN_PRIMATIVE | 0x05)
  43. #define ASN_OBJECTIDENTIFIER  (ASN_UNIVERSAL | ASN_PRIMATIVE | 0x06)
  44.  
  45. // ASN.1 constructor types
  46. #define ASN_SEQUENCE          (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10)
  47. #define ASN_SEQUENCEOF        ASN_SEQUENCE
  48.  
  49. // ASN.1 application specific primatives
  50. #define ASN_RFC1155_IPADDRESS  (ASN_APPLICATION | ASN_PRIMATIVE | 0x00)
  51. #define ASN_RFC1155_COUNTER    (ASN_APPLICATION | ASN_PRIMATIVE | 0x01)
  52. #define ASN_RFC1155_GAUGE      (ASN_APPLICATION | ASN_PRIMATIVE | 0x02)
  53. #define ASN_RFC1155_TIMETICKS  (ASN_APPLICATION | ASN_PRIMATIVE | 0x03)
  54. #define ASN_RFC1155_OPAQUE     (ASN_APPLICATION | ASN_PRIMATIVE | 0x04)
  55. #define ASN_RFC1213_DISPSTRING ASN_OCTETSTRING
  56.  
  57.    // BER limits
  58. #define BER_OCTET_LEN         8      // 8 bits in an octet
  59. #define BER_OCTET_SIZE        256    // 8 bits make an octet
  60. #define BER_MAX_INT_OCTETS    4      // 4 octets - 32 bit integer
  61. #define BER_MAX_LEN_OCTETS    2      // 2 octets - 16 bit integer length
  62. #define BER_MAX_STREAM_LEN    0xffff // 16 bit unsigned integer
  63. #define BER_MIN_HEADER_LEN    2      // 2 octets
  64. #define BER_MAX_SIMPLE_LEN    127    // SNMP BER definition
  65.  
  66.    // Buffer offsets for info.
  67. #define BER_TAG_OFFSET        0
  68. #define BER_LENGTH_OFFSET     1
  69.  
  70.    // Meaningful bit definitions
  71. #define BER_EXTENDED_TAG      0x1f   // 00011111
  72. #define BER_OCTET_CONT_BIT    0x80   // 10000000
  73.  
  74.    // BER OBJECTIDENTIFIER limits
  75. #define BER_MAX_FIRST_ELEM    2      // Obj Id's 1st element must be 0-2
  76. #define BER_MAX_SECOND_ELEM   39     // Obj Id's 2nd element must be 0-40
  77.  
  78.  
  79. // These are defined solely for Object Identifier (OID) filter contains actions
  80. #define OID_BEGINS_WITH       1
  81. #define OID_ENDS_WITH         2
  82. #define OID_CONTAINS          (OID_BEGINS_WITH | OID_ENDS_WITH)
  83.  
  84. // Function prototypes
  85. DWORD WINAPI DecodeSNMPObjectIdentifier( LPBYTE              lpData, 
  86.                                          DWORD               DataLen,
  87.                                          LPOBJECT_IDENTIFIER lpOID);
  88.  
  89. VOID WINAPI EncodeSNMPObjectIdentifier( LPBYTE              lpData, 
  90.                                         LPDWORD             lpDataLen,
  91.                                         LPOBJECT_IDENTIFIER lpOID);
  92.  
  93. BOOL WINAPI IsValidSNMPObjectIdentifier(LPOBJECT_IDENTIFIER lpOID);
  94.  
  95. BOOL WINAPI ObjectIdentifierContains (LPBYTE SubOID,
  96.                                       WORD   SubOIDLen,
  97.                                       LPBYTE OID,
  98.                                       WORD   OIDLen,
  99.                                       DWORD  ContainFlags);
  100.  
  101.  
  102.  
  103. #pragma option pop /*P_O_Pop*/
  104. #endif
  105.