snmp.h 11 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300
  1. /**
  2. * This file has no copyright assigned and is placed in the Public Domain.
  3. * This file is part of the mingw-w64 runtime package.
  4. * No warranty is given; refer to the file DISCLAIMER.PD within this package.
  5. */
  6. #ifndef _INC_SNMP
  7. #define _INC_SNMP
  8. #include <windows.h>
  9. #ifdef __cplusplus
  10. extern "C" {
  11. #endif
  12. #include <pshpack4.h>
  13. typedef struct {
  14. BYTE *stream;
  15. UINT length;
  16. WINBOOL dynamic;
  17. } AsnOctetString;
  18. typedef struct {
  19. UINT idLength;
  20. UINT *ids;
  21. } AsnObjectIdentifier;
  22. typedef LONG AsnInteger32;
  23. typedef ULONG AsnUnsigned32;
  24. typedef ULARGE_INTEGER AsnCounter64;
  25. typedef AsnUnsigned32 AsnCounter32;
  26. typedef AsnUnsigned32 AsnGauge32;
  27. typedef AsnUnsigned32 AsnTimeticks;
  28. typedef AsnOctetString AsnBits;
  29. typedef AsnOctetString AsnSequence;
  30. typedef AsnOctetString AsnImplicitSequence;
  31. typedef AsnOctetString AsnIPAddress;
  32. typedef AsnOctetString AsnNetworkAddress;
  33. typedef AsnOctetString AsnDisplayString;
  34. typedef AsnOctetString AsnOpaque;
  35. typedef struct {
  36. BYTE asnType;
  37. union {
  38. AsnInteger32 number;
  39. AsnUnsigned32 unsigned32;
  40. AsnCounter64 counter64;
  41. AsnOctetString string;
  42. AsnBits bits;
  43. AsnObjectIdentifier object;
  44. AsnSequence sequence;
  45. AsnIPAddress address;
  46. AsnCounter32 counter;
  47. AsnGauge32 gauge;
  48. AsnTimeticks ticks;
  49. AsnOpaque arbitrary;
  50. } asnValue;
  51. } AsnAny;
  52. typedef AsnObjectIdentifier AsnObjectName;
  53. typedef AsnAny AsnObjectSyntax;
  54. typedef struct {
  55. AsnObjectName name;
  56. AsnObjectSyntax value;
  57. } SnmpVarBind;
  58. typedef struct {
  59. SnmpVarBind *list;
  60. UINT len;
  61. } SnmpVarBindList;
  62. #include <poppack.h>
  63. #ifndef _INC_WINSNMP
  64. #define ASN_UNIVERSAL 0x00
  65. #define ASN_APPLICATION 0x40
  66. #define ASN_CONTEXT 0x80
  67. #define ASN_PRIVATE 0xC0
  68. #define ASN_PRIMITIVE 0x00
  69. #define ASN_CONSTRUCTOR 0x20
  70. #define SNMP_PDU_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x0)
  71. #define SNMP_PDU_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x1)
  72. #define SNMP_PDU_RESPONSE (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x2)
  73. #define SNMP_PDU_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x3)
  74. #define SNMP_PDU_V1TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x4)
  75. #define SNMP_PDU_GETBULK (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x5)
  76. #define SNMP_PDU_INFORM (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x6)
  77. #define SNMP_PDU_TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x7)
  78. #endif
  79. #define ASN_INTEGER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x02)
  80. #define ASN_BITS (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x03)
  81. #define ASN_OCTETSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x04)
  82. #define ASN_NULL (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x05)
  83. #define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x06)
  84. #define ASN_INTEGER32 ASN_INTEGER
  85. #define ASN_SEQUENCE (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10)
  86. #define ASN_SEQUENCEOF ASN_SEQUENCE
  87. #define ASN_IPADDRESS (ASN_APPLICATION | ASN_PRIMITIVE | 0x00)
  88. #define ASN_COUNTER32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x01)
  89. #define ASN_GAUGE32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x02)
  90. #define ASN_TIMETICKS (ASN_APPLICATION | ASN_PRIMITIVE | 0x03)
  91. #define ASN_OPAQUE (ASN_APPLICATION | ASN_PRIMITIVE | 0x04)
  92. #define ASN_COUNTER64 (ASN_APPLICATION | ASN_PRIMITIVE | 0x06)
  93. #define ASN_UINTEGER32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x07)
  94. #define ASN_RFC2578_UNSIGNED32 ASN_GAUGE32
  95. #define SNMP_EXCEPTION_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x00)
  96. #define SNMP_EXCEPTION_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x01)
  97. #define SNMP_EXCEPTION_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x02)
  98. #define SNMP_EXTENSION_GET SNMP_PDU_GET
  99. #define SNMP_EXTENSION_GET_NEXT SNMP_PDU_GETNEXT
  100. #define SNMP_EXTENSION_GET_BULK SNMP_PDU_GETBULK
  101. #define SNMP_EXTENSION_SET_TEST (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0)
  102. #define SNMP_EXTENSION_SET_COMMIT SNMP_PDU_SET
  103. #define SNMP_EXTENSION_SET_UNDO (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1)
  104. #define SNMP_EXTENSION_SET_CLEANUP (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2)
  105. #define SNMP_ERRORSTATUS_NOERROR 0
  106. #define SNMP_ERRORSTATUS_TOOBIG 1
  107. #define SNMP_ERRORSTATUS_NOSUCHNAME 2
  108. #define SNMP_ERRORSTATUS_BADVALUE 3
  109. #define SNMP_ERRORSTATUS_READONLY 4
  110. #define SNMP_ERRORSTATUS_GENERR 5
  111. #define SNMP_ERRORSTATUS_NOACCESS 6
  112. #define SNMP_ERRORSTATUS_WRONGTYPE 7
  113. #define SNMP_ERRORSTATUS_WRONGLENGTH 8
  114. #define SNMP_ERRORSTATUS_WRONGENCODING 9
  115. #define SNMP_ERRORSTATUS_WRONGVALUE 10
  116. #define SNMP_ERRORSTATUS_NOCREATION 11
  117. #define SNMP_ERRORSTATUS_INCONSISTENTVALUE 12
  118. #define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE 13
  119. #define SNMP_ERRORSTATUS_COMMITFAILED 14
  120. #define SNMP_ERRORSTATUS_UNDOFAILED 15
  121. #define SNMP_ERRORSTATUS_AUTHORIZATIONERROR 16
  122. #define SNMP_ERRORSTATUS_NOTWRITABLE 17
  123. #define SNMP_ERRORSTATUS_INCONSISTENTNAME 18
  124. #define SNMP_GENERICTRAP_COLDSTART 0
  125. #define SNMP_GENERICTRAP_WARMSTART 1
  126. #define SNMP_GENERICTRAP_LINKDOWN 2
  127. #define SNMP_GENERICTRAP_LINKUP 3
  128. #define SNMP_GENERICTRAP_AUTHFAILURE 4
  129. #define SNMP_GENERICTRAP_EGPNEIGHLOSS 5
  130. #define SNMP_GENERICTRAP_ENTERSPECIFIC 6
  131. #define SNMP_ACCESS_NONE 0
  132. #define SNMP_ACCESS_NOTIFY 1
  133. #define SNMP_ACCESS_READ_ONLY 2
  134. #define SNMP_ACCESS_READ_WRITE 3
  135. #define SNMP_ACCESS_READ_CREATE 4
  136. #define SNMPAPI INT
  137. #define SNMP_FUNC_TYPE WINAPI
  138. #define SNMPAPI_NOERROR TRUE
  139. #define SNMPAPI_ERROR FALSE
  140. WINBOOL SNMP_FUNC_TYPE SnmpExtensionInit(DWORD dwUptimeReference,HANDLE *phSubagentTrapEvent,AsnObjectIdentifier *pFirstSupportedRegion);
  141. WINBOOL SNMP_FUNC_TYPE SnmpExtensionInitEx(AsnObjectIdentifier *pNextSupportedRegion);
  142. WINBOOL SNMP_FUNC_TYPE SnmpExtensionMonitor(LPVOID pAgentMgmtData);
  143. WINBOOL SNMP_FUNC_TYPE SnmpExtensionQuery(BYTE bPduType,SnmpVarBindList *pVarBindList,AsnInteger32 *pErrorStatus,AsnInteger32 *pErrorIndex);
  144. WINBOOL SNMP_FUNC_TYPE SnmpExtensionQueryEx(UINT nRequestType,UINT nTransactionId,SnmpVarBindList *pVarBindList,AsnOctetString *pContextInfo,AsnInteger32 *pErrorStatus,AsnInteger32 *pErrorIndex);
  145. WINBOOL SNMP_FUNC_TYPE SnmpExtensionTrap(AsnObjectIdentifier *pEnterpriseOid,AsnInteger32 *pGenericTrapId,AsnInteger32 *pSpecificTrapId,AsnTimeticks *pTimeStamp,SnmpVarBindList *pVarBindList);
  146. VOID SNMP_FUNC_TYPE SnmpExtensionClose();
  147. typedef WINBOOL (SNMP_FUNC_TYPE *PFNSNMPEXTENSIONINIT)(DWORD dwUpTimeReference,HANDLE *phSubagentTrapEvent,AsnObjectIdentifier *pFirstSupportedRegion);
  148. typedef WINBOOL (SNMP_FUNC_TYPE *PFNSNMPEXTENSIONINITEX)(AsnObjectIdentifier *pNextSupportedRegion);
  149. typedef WINBOOL (SNMP_FUNC_TYPE *PFNSNMPEXTENSIONMONITOR)(LPVOID pAgentMgmtData);
  150. typedef WINBOOL (SNMP_FUNC_TYPE *PFNSNMPEXTENSIONQUERY)(BYTE bPduType,SnmpVarBindList *pVarBindList,AsnInteger32 *pErrorStatus,AsnInteger32 *pErrorIndex);
  151. typedef WINBOOL (SNMP_FUNC_TYPE *PFNSNMPEXTENSIONQUERYEX)(UINT nRequestType,UINT nTransactionId,SnmpVarBindList *pVarBindList,AsnOctetString *pContextInfo,AsnInteger32 *pErrorStatus,AsnInteger32 *pErrorIndex);
  152. typedef WINBOOL (SNMP_FUNC_TYPE *PFNSNMPEXTENSIONTRAP)(AsnObjectIdentifier *pEnterpriseOid,AsnInteger32 *pGenericTrapId,AsnInteger32 *pSpecificTrapId,AsnTimeticks *pTimeStamp,SnmpVarBindList *pVarBindList);
  153. typedef VOID (SNMP_FUNC_TYPE *PFNSNMPEXTENSIONCLOSE)();
  154. SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidCpy(AsnObjectIdentifier *pOidDst,AsnObjectIdentifier *pOidSrc);
  155. SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidAppend(AsnObjectIdentifier *pOidDst,AsnObjectIdentifier *pOidSrc);
  156. SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidNCmp(AsnObjectIdentifier *pOid1,AsnObjectIdentifier *pOid2,UINT nSubIds);
  157. SNMPAPI SNMP_FUNC_TYPE SnmpUtilOidCmp(AsnObjectIdentifier *pOid1,AsnObjectIdentifier *pOid2);
  158. VOID SNMP_FUNC_TYPE SnmpUtilOidFree(AsnObjectIdentifier *pOid);
  159. SNMPAPI SNMP_FUNC_TYPE SnmpUtilOctetsCmp(AsnOctetString *pOctets1,AsnOctetString *pOctets2);
  160. SNMPAPI SNMP_FUNC_TYPE SnmpUtilOctetsNCmp(AsnOctetString *pOctets1,AsnOctetString *pOctets2,UINT nChars);
  161. SNMPAPI SNMP_FUNC_TYPE SnmpUtilOctetsCpy(AsnOctetString *pOctetsDst,AsnOctetString *pOctetsSrc);
  162. VOID SNMP_FUNC_TYPE SnmpUtilOctetsFree(AsnOctetString *pOctets);
  163. SNMPAPI SNMP_FUNC_TYPE SnmpUtilAsnAnyCpy(AsnAny *pAnyDst,AsnAny *pAnySrc);
  164. VOID SNMP_FUNC_TYPE SnmpUtilAsnAnyFree(AsnAny *pAny);
  165. SNMPAPI SNMP_FUNC_TYPE SnmpUtilVarBindCpy(SnmpVarBind *pVbDst,SnmpVarBind *pVbSrc);
  166. VOID SNMP_FUNC_TYPE SnmpUtilVarBindFree(SnmpVarBind *pVb);
  167. SNMPAPI SNMP_FUNC_TYPE SnmpUtilVarBindListCpy(SnmpVarBindList *pVblDst,SnmpVarBindList *pVblSrc);
  168. VOID SNMP_FUNC_TYPE SnmpUtilVarBindListFree(SnmpVarBindList *pVbl);
  169. VOID SNMP_FUNC_TYPE SnmpUtilMemFree(LPVOID pMem);
  170. LPVOID SNMP_FUNC_TYPE SnmpUtilMemAlloc(UINT nBytes);
  171. LPVOID SNMP_FUNC_TYPE SnmpUtilMemReAlloc(LPVOID pMem,UINT nBytes);
  172. LPSTR SNMP_FUNC_TYPE SnmpUtilOidToA(AsnObjectIdentifier *Oid);
  173. LPSTR SNMP_FUNC_TYPE SnmpUtilIdsToA(UINT *Ids,UINT IdLength);
  174. VOID SNMP_FUNC_TYPE SnmpUtilPrintOid(AsnObjectIdentifier *Oid);
  175. VOID SNMP_FUNC_TYPE SnmpUtilPrintAsnAny(AsnAny *pAny);
  176. DWORD SNMP_FUNC_TYPE SnmpSvcGetUptime();
  177. VOID SNMP_FUNC_TYPE SnmpSvcSetLogLevel(INT nLogLevel);
  178. VOID SNMP_FUNC_TYPE SnmpSvcSetLogType(INT nLogType);
  179. #define SNMP_LOG_SILENT 0x0
  180. #define SNMP_LOG_FATAL 0x1
  181. #define SNMP_LOG_ERROR 0x2
  182. #define SNMP_LOG_WARNING 0x3
  183. #define SNMP_LOG_TRACE 0x4
  184. #define SNMP_LOG_VERBOSE 0x5
  185. #define SNMP_OUTPUT_TO_CONSOLE 0x1
  186. #define SNMP_OUTPUT_TO_LOGFILE 0x2
  187. #define SNMP_OUTPUT_TO_EVENTLOG 0x4
  188. #define SNMP_OUTPUT_TO_DEBUGGER 0x8
  189. VOID WINAPIV SnmpUtilDbgPrint(INT nLogLevel,LPSTR szFormat,...);
  190. #define SNMPDBG(_x_)
  191. #define DEFINE_SIZEOF(Array) (sizeof(Array)/sizeof((Array)[0]))
  192. #define DEFINE_OID(SubIdArray) {DEFINE_SIZEOF(SubIdArray),(SubIdArray)}
  193. #define DEFINE_NULLOID() {0,NULL}
  194. #define DEFINE_NULLOCTETS() {NULL,0,FALSE}
  195. #define DEFAULT_SNMP_PORT_UDP 161
  196. #define DEFAULT_SNMP_PORT_IPX 36879
  197. #define DEFAULT_SNMPTRAP_PORT_UDP 162
  198. #define DEFAULT_SNMPTRAP_PORT_IPX 36880
  199. #define SNMP_MAX_OID_LEN 128
  200. #define SNMP_MEM_ALLOC_ERROR 1
  201. #define SNMP_BERAPI_INVALID_LENGTH 10
  202. #define SNMP_BERAPI_INVALID_TAG 11
  203. #define SNMP_BERAPI_OVERFLOW 12
  204. #define SNMP_BERAPI_SHORT_BUFFER 13
  205. #define SNMP_BERAPI_INVALID_OBJELEM 14
  206. #define SNMP_PDUAPI_UNRECOGNIZED_PDU 20
  207. #define SNMP_PDUAPI_INVALID_ES 21
  208. #define SNMP_PDUAPI_INVALID_GT 22
  209. #define SNMP_AUTHAPI_INVALID_VERSION 30
  210. #define SNMP_AUTHAPI_INVALID_MSG_TYPE 31
  211. #define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32
  212. #ifndef SNMPSTRICT
  213. #define SNMP_oidcpy SnmpUtilOidCpy
  214. #define SNMP_oidappend SnmpUtilOidAppend
  215. #define SNMP_oidncmp SnmpUtilOidNCmp
  216. #define SNMP_oidcmp SnmpUtilOidCmp
  217. #define SNMP_oidfree SnmpUtilOidFree
  218. #define SNMP_CopyVarBindList SnmpUtilVarBindListCpy
  219. #define SNMP_FreeVarBindList SnmpUtilVarBindListFree
  220. #define SNMP_CopyVarBind SnmpUtilVarBindCpy
  221. #define SNMP_FreeVarBind SnmpUtilVarBindFree
  222. #define SNMP_printany SnmpUtilPrintAsnAny
  223. #define SNMP_free SnmpUtilMemFree
  224. #define SNMP_malloc SnmpUtilMemAlloc
  225. #define SNMP_realloc SnmpUtilMemReAlloc
  226. #define SNMP_DBG_free SnmpUtilMemFree
  227. #define SNMP_DBG_malloc SnmpUtilMemAlloc
  228. #define SNMP_DBG_realloc SnmpUtilMemReAlloc
  229. #define ASN_RFC1155_IPADDRESS ASN_IPADDRESS
  230. #define ASN_RFC1155_COUNTER ASN_COUNTER32
  231. #define ASN_RFC1155_GAUGE ASN_GAUGE32
  232. #define ASN_RFC1155_TIMETICKS ASN_TIMETICKS
  233. #define ASN_RFC1155_OPAQUE ASN_OPAQUE
  234. #define ASN_RFC1213_DISPSTRING ASN_OCTETSTRING
  235. #define ASN_RFC1157_GETREQUEST SNMP_PDU_GET
  236. #define ASN_RFC1157_GETNEXTREQUEST SNMP_PDU_GETNEXT
  237. #define ASN_RFC1157_GETRESPONSE SNMP_PDU_RESPONSE
  238. #define ASN_RFC1157_SETREQUEST SNMP_PDU_SET
  239. #define ASN_RFC1157_TRAP SNMP_PDU_V1TRAP
  240. #define ASN_CONTEXTSPECIFIC ASN_CONTEXT
  241. #define ASN_PRIMATIVE ASN_PRIMITIVE
  242. #define RFC1157VarBindList SnmpVarBindList
  243. #define RFC1157VarBind SnmpVarBind
  244. #define AsnInteger AsnInteger32
  245. #define AsnCounter AsnCounter32
  246. #define AsnGauge AsnGauge32
  247. #define ASN_UNSIGNED32 ASN_UINTEGER32
  248. #endif
  249. #ifdef __cplusplus
  250. }
  251. #endif
  252. #endif /* _INC_SNMP */