home *** CD-ROM | disk | FTP | other *** search
/ Beginning C++ Through Gam…rogramming (2nd Edition) / BCGP2E.ISO / bloodshed / devcpp-4.9.9.2_setup.exe / snmp.h < prev    next >
C/C++ Source or Header  |  2005-01-29  |  10KB  |  260 lines

  1. /*
  2.   snmp.h - Header file for the Windows SNMP API
  3.  
  4.   Written by Filip Navara <xnavara@volny.cz>
  5.  
  6.   References (2003-08-25):
  7.     http://msdn.microsoft.com/library/en-us/snmp/snmp/snmp_reference.asp
  8.  
  9.   This library is distributed in the hope that it will be useful,
  10.   but WITHOUT ANY WARRANTY; without even the implied warranty of
  11.   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  12. */
  13.  
  14. #ifndef _SNMP_H
  15. #define _SNMP_H
  16. #if __GNUC__ >= 3
  17. #pragma GCC system_header
  18. #endif
  19.  
  20. #ifndef _WINDOWS_H
  21. #include <windows.h>
  22. #endif
  23.  
  24. #include <pshpack4.h>
  25.  
  26. #ifndef WINSNMPAPI
  27. #define WINSNMPAPI WINAPI
  28. #endif
  29.  
  30. #ifdef __cplusplus
  31. extern "C" {
  32. #endif
  33.  
  34. #define DEFAULT_SNMP_PORT_UDP    161
  35. #define DEFAULT_SNMP_PORT_IPX    36879
  36. #define DEFAULT_SNMPTRAP_PORT_UDP    162
  37. #define DEFAULT_SNMPTRAP_PORT_IPX    36880
  38. #ifndef _SNMP_ASN_DEFINED
  39. #define _SNMP_ASN_DEFINED
  40. #define ASN_UNIVERSAL    0x00
  41. #define ASN_PRIMITIVE    0x00
  42. #define ASN_CONSTRUCTOR    0x20
  43. #define ASN_APPLICATION    0x40
  44. #define ASN_CONTEXT    0x80
  45. #define ASN_PRIVATE    0xC0
  46. #define SNMP_PDU_GET    (ASN_CONTEXT | ASN_CONSTRUCTOR | 0)
  47. #define SNMP_PDU_GETNEXT    (ASN_CONTEXT | ASN_CONSTRUCTOR | 1)
  48. #define SNMP_PDU_RESPONSE    (ASN_CONTEXT | ASN_CONSTRUCTOR | 2)
  49. #define SNMP_PDU_SET    (ASN_CONTEXT | ASN_CONSTRUCTOR | 3)
  50. #define SNMP_PDU_GETBULK    (ASN_CONTEXT | ASN_CONSTRUCTOR | 4)
  51. #define SNMP_PDU_V1TRAP    (ASN_CONTEXT | ASN_CONSTRUCTOR | 4)
  52. #define SNMP_PDU_INFORM    (ASN_CONTEXT | ASN_CONSTRUCTOR | 6)
  53. #define SNMP_PDU_TRAP    (ASN_CONTEXT | ASN_CONSTRUCTOR | 7) 
  54. #define SNMP_PDU_REPORT    (ASN_CONTEXT | ASN_CONSTRUCTOR | 8)
  55. #endif /* _SNMP_ASN_DEFINED */
  56. #define ASN_INTEGER    (ASN_UNIVERSAL | ASN_PRIMITIVE | 2)
  57. #define ASN_BITS    (ASN_UNIVERSAL | ASN_PRIMITIVE | 3)
  58. #define ASN_OCTETSTRING    (ASN_UNIVERSAL | ASN_PRIMITIVE | 4)
  59. #define ASN_NULL    (ASN_UNIVERSAL | ASN_PRIMITIVE | 5)
  60. #define ASN_OBJECTIDENTIFIER    (ASN_UNIVERSAL | ASN_PRIMITIVE | 6)
  61. #define ASN_INTEGER32    ASN_INTEGER
  62. #define ASN_SEQUENCE    (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10)
  63. #define ASN_SEQUENCEOF    ASN_SEQUENCE
  64. #define ASN_IPADDRESS    (ASN_APPLICATION | ASN_PRIMITIVE | 0x00)
  65. #define ASN_COUNTER32    (ASN_APPLICATION | ASN_PRIMITIVE | 0x01)
  66. #define ASN_GAUGE32    (ASN_APPLICATION | ASN_PRIMITIVE | 0x02)
  67. #define ASN_TIMETICKS    (ASN_APPLICATION | ASN_PRIMITIVE | 0x03)
  68. #define ASN_OPAQUE    (ASN_APPLICATION | ASN_PRIMITIVE | 0x04)
  69. #define ASN_COUNTER64    (ASN_APPLICATION | ASN_PRIMITIVE | 0x06)
  70. #define ASN_UNSIGNED32    (ASN_APPLICATION | ASN_PRIMITIVE | 0x07)
  71. #define SNMP_EXCEPTION_NOSUCHOBJECT    (ASN_CONTEXT | ASN_PRIMITIVE | 0x00)
  72. #define SNMP_EXCEPTION_NOSUCHINSTANCE    (ASN_CONTEXT | ASN_PRIMITIVE | 0x01)
  73. #define SNMP_EXCEPTION_ENDOFMIBVIEW    (ASN_CONTEXT | ASN_PRIMITIVE | 0x02)
  74. #define SNMP_EXTENSION_GET    SNMP_PDU_GET
  75. #define SNMP_EXTENSION_GET_NEXT    SNMP_PDU_GETNEXT
  76. #define SNMP_EXTENSION_GET_BULK    SNMP_PDU_GETBULK
  77. #define SNMP_EXTENSION_SET_TEST    (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0)
  78. #define SNMP_EXTENSION_SET_COMMIT    SNMP_PDU_SET
  79. #define SNMP_EXTENSION_SET_UNDO    (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1)
  80. #define SNMP_EXTENSION_SET_CLEANUP    (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2)
  81. #define SNMP_ERRORSTATUS_NOERROR    0
  82. #define SNMP_ERRORSTATUS_TOOBIG    1
  83. #define SNMP_ERRORSTATUS_NOSUCHNAME    2
  84. #define SNMP_ERRORSTATUS_BADVALUE    3
  85. #define SNMP_ERRORSTATUS_READONLY    4
  86. #define SNMP_ERRORSTATUS_GENERR    5
  87. #define SNMP_ERRORSTATUS_NOACCESS    6
  88. #define SNMP_ERRORSTATUS_WRONGTYPE    7
  89. #define SNMP_ERRORSTATUS_WRONGLENGTH    8
  90. #define SNMP_ERRORSTATUS_WRONGENCODING    9
  91. #define SNMP_ERRORSTATUS_WRONGVALUE    10
  92. #define SNMP_ERRORSTATUS_NOCREATION    11
  93. #define SNMP_ERRORSTATUS_INCONSISTENTVALUE    12
  94. #define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE    13
  95. #define SNMP_ERRORSTATUS_COMMITFAILED    14
  96. #define SNMP_ERRORSTATUS_UNDOFAILED    15
  97. #define SNMP_ERRORSTATUS_AUTHORIZATIONERROR    16
  98. #define SNMP_ERRORSTATUS_NOTWRITABLE    17
  99. #define SNMP_ERRORSTATUS_INCONSISTENTNAME    18
  100. #define SNMP_GENERICTRAP_COLDSTART    0
  101. #define SNMP_GENERICTRAP_WARMSTART    1
  102. #define SNMP_GENERICTRAP_LINKDOWN    2
  103. #define SNMP_GENERICTRAP_LINKUP    3
  104. #define SNMP_GENERICTRAP_AUTHFAILURE    4
  105. #define SNMP_GENERICTRAP_EGPNEIGHLOSS    5
  106. #define SNMP_GENERICTRAP_ENTERSPECIFIC    6
  107. #define SNMP_ACCESS_NONE    0
  108. #define SNMP_ACCESS_NOTIFY    1
  109. #define SNMP_ACCESS_READ_ONLY    2
  110. #define SNMP_ACCESS_READ_WRITE    3
  111. #define SNMP_ACCESS_READ_CREATE    4
  112. #define SNMPAPI_ERROR    FALSE
  113. #define SNMPAPI_NOERROR    TRUE
  114. #define SNMP_LOG_SILENT    0
  115. #define SNMP_LOG_FATAL    1
  116. #define SNMP_LOG_ERROR    2
  117. #define SNMP_LOG_WARNING    3
  118. #define SNMP_LOG_TRACE    4
  119. #define SNMP_LOG_VERBOSE    5
  120. #define SNMP_OUTPUT_TO_CONSOLE    1
  121. #define SNMP_OUTPUT_TO_LOGFILE    2
  122. #define SNMP_OUTPUT_TO_EVENTLOG    4 
  123. #define SNMP_OUTPUT_TO_DEBUGGER    8
  124. #define SNMP_MAX_OID_LEN    128
  125. #define SNMP_MEM_ALLOC_ERROR    1
  126. #define SNMP_BERAPI_INVALID_LENGTH    10
  127. #define SNMP_BERAPI_INVALID_TAG    11
  128. #define SNMP_BERAPI_OVERFLOW    12
  129. #define SNMP_BERAPI_SHORT_BUFFER    13
  130. #define SNMP_BERAPI_INVALID_OBJELEM    14
  131. #define SNMP_PDUAPI_UNRECOGNIZED_PDU    20
  132. #define SNMP_PDUAPI_INVALID_ES    21
  133. #define SNMP_PDUAPI_INVALID_GT    22
  134. #define SNMP_AUTHAPI_INVALID_VERSION    30
  135. #define SNMP_AUTHAPI_INVALID_MSG_TYPE    31
  136. #define SNMP_AUTHAPI_TRIV_AUTH_FAILED    32
  137.  
  138. #ifndef RC_INVOKED
  139.  
  140. typedef INT SNMPAPI;
  141. typedef LONG AsnInteger32;
  142. typedef ULONG AsnUnsigned32;
  143. typedef ULARGE_INTEGER AsnCounter64;
  144. typedef AsnUnsigned32 AsnCounter32;
  145. typedef AsnUnsigned32 AsnGauge32;
  146. typedef AsnUnsigned32 AsnTimeticks;
  147. typedef struct {
  148.     BYTE *stream;
  149.     UINT length;
  150.     BOOL dynamic;
  151. } AsnOctetString, AsnBits, AsnSequence, AsnImplicitSequence, AsnIPAddress, AsnNetworkAddress, AsnDisplayString, AsnOpaque;
  152. typedef struct {
  153.     UINT idLength;
  154.     UINT *ids;
  155. } AsnObjectIdentifier, AsnObjectName;
  156. typedef struct {
  157.     BYTE asnType;
  158.     union {
  159.         AsnInteger32 number; 
  160.         AsnUnsigned32 unsigned32; 
  161.         AsnCounter64 counter64; 
  162.         AsnOctetString string; 
  163.         AsnBits bits; 
  164.         AsnObjectIdentifier object; 
  165.         AsnSequence sequence; 
  166.         AsnIPAddress address; 
  167.         AsnCounter32 counter; 
  168.         AsnGauge32 gauge; 
  169.         AsnTimeticks ticks; 
  170.         AsnOpaque arbitrary; 
  171.     } asnValue;
  172. } AsnAny, AsnObjectSyntax;
  173. typedef struct {
  174.     AsnObjectName name;
  175.     AsnObjectSyntax value;
  176. } SnmpVarBind;
  177. typedef struct {
  178.     SnmpVarBind *list;
  179.     UINT len;
  180. } SnmpVarBindList;
  181.  
  182. VOID WINSNMPAPI SnmpExtensionClose(void);
  183. BOOL WINSNMPAPI SnmpExtensionInit(DWORD,HANDLE*,AsnObjectIdentifier*);
  184. BOOL WINSNMPAPI SnmpExtensionInitEx(AsnObjectIdentifier*);
  185. BOOL WINSNMPAPI SnmpExtensionMonitor(LPVOID);
  186. BOOL WINSNMPAPI SnmpExtensionQuery(BYTE,SnmpVarBindList*,AsnInteger32*,AsnInteger32*);
  187. BOOL WINSNMPAPI SnmpExtensionQueryEx(DWORD,DWORD,SnmpVarBindList*,AsnOctetString*,AsnInteger32*,AsnInteger32*);
  188. BOOL WINSNMPAPI SnmpExtensionTrap(AsnObjectIdentifier*,AsnInteger32*,AsnInteger32*,AsnTimeticks*,SnmpVarBindList*);
  189. DWORD WINSNMPAPI SnmpSvcGetUptime(void);
  190. VOID WINSNMPAPI SnmpSvcSetLogLevel(INT);
  191. VOID WINSNMPAPI SnmpSvcSetLogType(INT);
  192. SNMPAPI WINSNMPAPI SnmpUtilAsnAnyCpy(AsnAny*,AsnAny*);
  193. VOID WINSNMPAPI SnmpUtilAsnAnyFree(AsnAny*);
  194. VOID WINSNMPAPI SnmpUtilDbgPrint(INT,LPSTR,...);
  195. LPSTR WINSNMPAPI SnmpUtilIdsToA(UINT*,UINT);
  196. LPVOID WINSNMPAPI SnmpUtilMemAlloc(UINT);
  197. VOID WINSNMPAPI SnmpUtilMemFree(LPVOID);
  198. LPVOID WINSNMPAPI SnmpUtilMemReAlloc(LPVOID,UINT);
  199. SNMPAPI WINSNMPAPI SnmpUtilOctetsCmp(AsnOctetString*,AsnOctetString*);
  200. SNMPAPI WINSNMPAPI SnmpUtilOctetsCpy(AsnOctetString*,AsnOctetString*);
  201. VOID WINSNMPAPI SnmpUtilOctetsFree(AsnOctetString*);
  202. SNMPAPI WINSNMPAPI SnmpUtilOctetsNCmp(AsnOctetString*,AsnOctetString*,UINT);
  203. SNMPAPI WINSNMPAPI SnmpUtilOidAppend(AsnObjectIdentifier*,AsnObjectIdentifier*);
  204. SNMPAPI WINSNMPAPI SnmpUtilOidCmp(AsnObjectIdentifier*,AsnObjectIdentifier*);
  205. SNMPAPI WINSNMPAPI SnmpUtilOidCpy(AsnObjectIdentifier*,AsnObjectIdentifier*);
  206. VOID WINSNMPAPI SnmpUtilOidFree(AsnObjectIdentifier*);
  207. SNMPAPI WINSNMPAPI SnmpUtilOidNCmp(AsnObjectIdentifier*,AsnObjectIdentifier*,UINT);
  208. LPSTR WINSNMPAPI SnmpUtilOidToA(AsnObjectIdentifier*);
  209. VOID WINSNMPAPI SnmpUtilPrintAsnAny(AsnAny*);
  210. VOID WINSNMPAPI SnmpUtilPrintOid(AsnObjectIdentifier*);
  211. SNMPAPI WINSNMPAPI SnmpUtilVarBindCpy(  SnmpVarBind*,SnmpVarBind*);
  212. SNMPAPI WINSNMPAPI SnmpUtilVarBindListCpy(SnmpVarBindList*,SnmpVarBindList*);
  213. VOID WINSNMPAPI SnmpUtilVarBindFree(SnmpVarBind*);
  214. VOID WINSNMPAPI SnmpUtilVarBindListFree(SnmpVarBindList*);
  215.  
  216. #ifndef SNMPSTRICT
  217. #define SNMP_malloc SnmpUtilMemAlloc
  218. #define SNMP_free SnmpUtilMemFree
  219. #define SNMP_realloc SnmpUtilMemReAlloc
  220. #define SNMP_DBG_malloc SnmpUtilMemAlloc
  221. #define SNMP_DBG_free SnmpUtilMemFree
  222. #define SNMP_DBG_realloc SnmpUtilMemReAlloc
  223. #define SNMP_oidappend SnmpUtilOidAppend
  224. #define SNMP_oidcmp SnmpUtilOidCmp
  225. #define SNMP_oidcpy SnmpUtilOidCpy
  226. #define SNMP_oidfree SnmpUtilOidFree
  227. #define SNMP_oidncmp SnmpUtilOidNCmp
  228. #define SNMP_printany SnmpUtilPrintAsnAny
  229. #define SNMP_CopyVarBind SnmpUtilVarBindCpy
  230. #define SNMP_CopyVarBindList SnmpUtilVarBindListCpy
  231. #define SNMP_FreeVarBind SnmpUtilVarBindFree
  232. #define SNMP_FreeVarBindList SnmpUtilVarBindListFree
  233. #define ASN_RFC1155_IPADDRESS ASN_IPADDRESS
  234. #define ASN_RFC1155_COUNTER ASN_COUNTER32
  235. #define ASN_RFC1155_GAUGE ASN_GAUGE32
  236. #define ASN_RFC1155_TIMETICKS ASN_TIMETICKS
  237. #define ASN_RFC1155_OPAQUE ASN_OPAQUE
  238. #define ASN_RFC1213_DISPSTRING ASN_OCTETSTRING
  239. #define ASN_RFC1157_GETREQUEST SNMP_PDU_GET
  240. #define ASN_RFC1157_GETNEXTREQUEST SNMP_PDU_GETNEXT
  241. #define ASN_RFC1157_GETRESPONSE SNMP_PDU_RESPONSE
  242. #define ASN_RFC1157_SETREQUEST SNMP_PDU_SET
  243. #define ASN_RFC1157_TRAP SNMP_PDU_V1TRAP
  244. #define ASN_CONTEXTSPECIFIC ASN_CONTEXT
  245. #define ASN_PRIMATIVE ASN_PRIMITIVE
  246. #define RFC1157VarBindList SnmpVarBindList
  247. #define RFC1157VarBind SnmpVarBind
  248. #define AsnInteger AsnInteger32
  249. #define AsnCounter AsnCounter32
  250. #define AsnGauge AsnGauge32
  251. #endif /* SNMPSTRICT */
  252.  
  253. #endif /* RC_INVOKED */
  254.  
  255. #ifdef __cplusplus
  256. }
  257. #endif
  258. #include <poppack.h>
  259. #endif
  260.