smi.h
上传用户:czjinwang
上传日期:2007-01-12
资源大小:2484k
文件大小:6k
源码类别:

SNMP编程

开发平台:

Visual C++

  1. /*===================================================================
  2.   Copyright (c) 1999
  3.   Hewlett-Packard Company
  4.   ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS.
  5.   Permission to use, copy, modify, distribute and/or sell this software 
  6.   and/or its documentation is hereby granted without fee. User agrees 
  7.   to display the above copyright notice and this license notice in all 
  8.   copies of the software and any documentation of the software. User 
  9.   agrees to assume all liability for the use of the software; Hewlett-Packard 
  10.   makes no representations about the suitability of this software for any 
  11.   purpose. It is provided "AS-IS without warranty of any kind,either express 
  12.   or implied. User hereby grants a royalty-free license to any and all 
  13.   derivatives based upon this software code base. 
  14.   SNMP++ S M I . H   
  15.      
  16.   SMI DEFINITIONS
  17.             
  18.   VERSION:
  19.   2.8
  20.   RCS INFO:
  21.   $Header: smi.h,v 1.18 96/08/16 11:04:29 hmgr Exp $
  22.        
  23.   AUTHOR:      
  24.   Peter E Mellquist
  25.               
  26.   LANGUAGE:
  27.   ANSI C++ 
  28.       
  29.   OPERATING SYSTEMS:
  30.   MS-Windows Win32
  31.   BSD UNIX
  32.       
  33.   DESCRIPTION:
  34.   Address class definition. Encapsulates various network 
  35.   addresses into easy to use, safe and portable classes.
  36.       
  37. =====================================================================*/
  38. #ifndef _SMIDEF
  39. #define _SMIDEF
  40.  
  41. #define WINFAR 
  42. #define STRCAT strcat
  43. #define STRLEN strlen
  44. #define MEMCPY memcpy
  45. #define STRCPY strcpy 
  46. #define STRCMP strcmp
  47. #define MEMCMP memcmp 
  48. #define XPORT 
  49. // HANDLE needs to be defined for each type of platform
  50. // for win32 - HANDLE is a HWND
  51. // for unix  - HANDLE is an unsigned long
  52. // unix and win32 ( Windu compile , unix takes presedence )
  53. #ifdef  WIN32
  54. #ifndef SNMPHANDLE
  55. #define SNMPHANDLE HWND
  56. #endif
  57. #define DLLOPT __declspec(dllexport)
  58. #endif
  59. #ifdef __unix
  60. #ifndef SNMPHANDLE
  61. #define SNMPHANDLE unsigned long
  62. #define DLLOPT
  63. #endif
  64. #endif
  65. #ifndef TRUE
  66. #define TRUE 1
  67. #endif
  68. #ifndef FALSE
  69. #define FALSE 0
  70. #endif  
  71. //----------[ ASN/BER Base Types ]-----------------------------------------
  72. // Basic Encoding Rules (BER)
  73. // (used in forming SYNTAXes and certain SNMP types/values) 
  74. #define aSN_UNIVERSAL    (0x00)
  75. #define aSN_APPLICATION  (0x40)
  76. #define aSN_CONTEXT      (0x80)
  77. #define aSN_PRIVATE      (0xC0)
  78. #define aSN_PRIMITIVE    (0x00)
  79. #define aSN_CONSTRUCTOR  (0x20) 
  80. //------[ SNMP ObjectSyntax Values ]---------------------------------------
  81. #define sNMP_SYNTAX_SEQUENCE  (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x10) 
  82. //-------------------------------------------------------------------------
  83. // These values are used in the "syntax" member 
  84. // of the smiVALUE structure which follows.     
  85. // Note: UInt32 is indistinguishable from Gauge32 per SNMPv2 Draft Standard
  86. //       NsapAddr is obsoleted as unique SMI type per SNMPv2 Draft Standard
  87. #define sNMP_SYNTAX_INT (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x02)
  88. #define sNMP_SYNTAX_BITS (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x03)
  89. #define sNMP_SYNTAX_OCTETS (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x04)
  90. #define sNMP_SYNTAX_NULL (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x05)
  91. #define sNMP_SYNTAX_OID (aSN_UNIVERSAL | aSN_PRIMITIVE | 0x06)
  92. #define sNMP_SYNTAX_INT32 sNMP_SYNTAX_INT
  93. #define sNMP_SYNTAX_IPADDR (aSN_APPLICATION | aSN_PRIMITIVE | 0x00)
  94. #define sNMP_SYNTAX_CNTR32 (aSN_APPLICATION | aSN_PRIMITIVE | 0x01)
  95. #define sNMP_SYNTAX_GAUGE32 (aSN_APPLICATION | aSN_PRIMITIVE | 0x02)
  96. #define sNMP_SYNTAX_TIMETICKS (aSN_APPLICATION | aSN_PRIMITIVE | 0x03)
  97. #define sNMP_SYNTAX_OPAQUE (aSN_APPLICATION | aSN_PRIMITIVE | 0x04)
  98. #define sNMP_SYNTAX_CNTR64 (aSN_APPLICATION | aSN_PRIMITIVE | 0x06)
  99. #define sNMP_SYNTAX_UINT32 (aSN_APPLICATION | aSN_PRIMITIVE | 0x07)
  100. //-------------------------------------------------------------------------
  101. //---------------[ Exception conditions for SNMPv2 ]-----------------------
  102. // support SNMP v2
  103. #define sNMP_SYNTAX_NOSUCHOBJECT    (aSN_CONTEXT | aSN_PRIMITIVE | 0x00)
  104. #define sNMP_SYNTAX_NOSUCHINSTANCE  (aSN_CONTEXT | aSN_PRIMITIVE | 0x01)
  105. #define sNMP_SYNTAX_ENDOFMIBVIEW    (aSN_CONTEXT | aSN_PRIMITIVE | 0x02)
  106. //--------------[ different types of PDU's ]-------------------------------
  107. #define sNMP_PDU_GET (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x0)
  108. #define sNMP_PDU_GETNEXT (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x1)
  109. #define sNMP_PDU_RESPONSE (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x2)
  110. #define sNMP_PDU_SET (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x3)
  111. #define sNMP_PDU_V1TRAP     (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x4)
  112. #define sNMP_PDU_GETBULK    (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x5)
  113. #define sNMP_PDU_INFORM     (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x6)
  114. #define sNMP_PDU_TRAP       (aSN_CONTEXT | aSN_CONSTRUCTOR | 0x7)
  115.  
  116. //------[ smi typedefs ]---------------------------------------------------
  117. // SNMP-related types from RFC1442 (SMI) 
  118. typedef unsigned char    SmiBYTE,       WINFAR *SmiLPBYTE;
  119. //-------------------------------------------------------------------------
  120. // SNMP-related types from RFC1442 (SMI) 
  121. // int
  122. typedef long             SmiINT,        WINFAR *SmiLPINT;
  123. // int 32
  124. typedef SmiINT           SmiINT32,      WINFAR *SmiLPINT32;
  125. // unit32
  126. typedef unsigned long    SmiUINT32,     WINFAR *SmiLPUINT32;
  127. // octet struct
  128. typedef struct {
  129.      SmiUINT32 len;
  130.      SmiLPBYTE ptr;}     SmiOCTETS,     WINFAR *SmiLPOCTETS;
  131. // bits     
  132. typedef SmiOCTETS        SmiBITS,       WINFAR *SmiLPBITS;
  133. // SMI oid struct
  134. typedef struct {
  135.      SmiUINT32   len;
  136.      SmiLPUINT32 ptr;}   SmiOID,        WINFAR *SmiLPOID;
  137. // ipaddr     
  138. typedef SmiOCTETS        SmiIPADDR,     WINFAR *SmiLPIPADDR;
  139. // 32bit counter
  140. typedef SmiUINT32        SmiCNTR32,     WINFAR *SmiLPCNTR32;
  141. // gauge
  142. typedef SmiUINT32        SmiGAUGE32,    WINFAR *SmiLPGAUGE32;
  143. // timeticks
  144. typedef SmiUINT32        SmiTIMETICKS,  WINFAR *SmiLPTIMETICKS;
  145. // opaque
  146. typedef SmiOCTETS        SmiOPAQUE,     WINFAR *SmiLPOPAQUE;
  147. // nsapaddr
  148. typedef SmiOCTETS        SmiNSAPADDR,   WINFAR *SmiLPNSAPADDR;
  149. // 64 bit counter
  150. typedef struct {
  151.         SmiUINT32 hipart;
  152.         SmiUINT32 lopart;} SmiCNTR64,   WINFAR *SmiLPCNTR64;
  153.         
  154. #endif
  155.