Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

345 lines
9.6 KiB

  1. /*++
  2. Copyright (C) 1992 - 1996 Microsoft Corporation
  3. Module Name:
  4. snmputil.h
  5. Abstract:
  6. Definitions for SNMP Extension Agent development (internal).
  7. --*/
  8. #ifndef _INC_SNMPUTIL
  9. #define _INC_SNMPUTIL
  10. ///////////////////////////////////////////////////////////////////////////////
  11. // //
  12. // Additional header files //
  13. // //
  14. ///////////////////////////////////////////////////////////////////////////////
  15. #include <snmp.h>
  16. #ifdef __cplusplus
  17. extern "C" {
  18. #endif
  19. ///////////////////////////////////////////////////////////////////////////////
  20. // //
  21. // AUTH API type definitions //
  22. // //
  23. ///////////////////////////////////////////////////////////////////////////////
  24. typedef struct {
  25. RFC1157VarBindList varBinds;
  26. AsnInteger requestType;
  27. AsnInteger requestId;
  28. AsnInteger errorStatus;
  29. AsnInteger errorIndex;
  30. } RFC1157Pdu;
  31. typedef struct {
  32. RFC1157VarBindList varBinds;
  33. AsnObjectIdentifier enterprise;
  34. AsnNetworkAddress agentAddr;
  35. AsnInteger genericTrap;
  36. AsnInteger specificTrap;
  37. AsnTimeticks timeStamp;
  38. } RFC1157TrapPdu;
  39. typedef struct {
  40. BYTE pduType;
  41. union {
  42. RFC1157Pdu pdu;
  43. RFC1157TrapPdu trap;
  44. } pduValue;
  45. } RFC1157Pdus;
  46. typedef struct {
  47. AsnObjectIdentifier dstParty;
  48. AsnObjectIdentifier srcParty;
  49. RFC1157Pdus pdu;
  50. AsnOctetString community;
  51. } SnmpMgmtCom;
  52. ///////////////////////////////////////////////////////////////////////////////
  53. // //
  54. // AUTH API prototypes //
  55. // //
  56. ///////////////////////////////////////////////////////////////////////////////
  57. SNMPAPI
  58. SNMP_FUNC_TYPE
  59. SnmpSvcEncodeMessage(
  60. IN UINT snmpAuthType,
  61. IN SnmpMgmtCom * snmpMgmtCom,
  62. IN OUT BYTE ** pBuffer,
  63. IN OUT UINT * nLength
  64. );
  65. SNMPAPI
  66. SNMP_FUNC_TYPE
  67. SnmpSvcDecodeMessage(
  68. OUT UINT * snmpAuthType,
  69. OUT SnmpMgmtCom * snmpMgmtCom,
  70. IN BYTE * pBuffer,
  71. IN UINT nLength,
  72. IN BOOL fAuthMsg
  73. );
  74. SNMPAPI
  75. SNMP_FUNC_TYPE
  76. SnmpSvcReleaseMessage(
  77. IN OUT SnmpMgmtCom * snmpMgmtCom
  78. );
  79. ///////////////////////////////////////////////////////////////////////////////
  80. // //
  81. // Internal utility prototypes (publish via snmp.h as needed) //
  82. // //
  83. ///////////////////////////////////////////////////////////////////////////////
  84. VOID
  85. SNMP_FUNC_TYPE
  86. SnmpUtilPrintOid(
  87. IN AsnObjectIdentifier *Oid
  88. );
  89. LPSTR
  90. SNMP_FUNC_TYPE
  91. SnmpUtilOidToA(
  92. IN AsnObjectIdentifier *Oid
  93. );
  94. LPSTR
  95. SNMP_FUNC_TYPE
  96. SnmpUtilIdsToA(
  97. IN UINT *Ids,
  98. IN UINT IdLength
  99. );
  100. LONG
  101. SNMP_FUNC_TYPE
  102. SnmpUtilUnicodeToAnsi(
  103. LPSTR *ansi_string,
  104. LPWSTR uni_string,
  105. BOOLEAN alloc_it
  106. );
  107. LONG
  108. SNMP_FUNC_TYPE
  109. SnmpUtilUnicodeToUTF8(
  110. LPSTR *pUtfString,
  111. LPWSTR wcsString,
  112. BOOLEAN bAllocBuffer
  113. );
  114. LONG
  115. SNMP_FUNC_TYPE
  116. SnmpUtilAnsiToUnicode(
  117. LPWSTR *uni_string,
  118. LPSTR ansi_string,
  119. BOOLEAN alloc_it
  120. );
  121. LONG
  122. SNMP_FUNC_TYPE
  123. SnmpUtilUTF8ToUnicode(
  124. LPWSTR *pWcsString,
  125. LPSTR utfString,
  126. BOOLEAN bAllocBuffer
  127. );
  128. ///////////////////////////////////////////////////////////////////////////////
  129. // //
  130. // Service utility prototypes (leave these unpublished) //
  131. // //
  132. ///////////////////////////////////////////////////////////////////////////////
  133. DWORD
  134. SNMP_FUNC_TYPE
  135. SnmpSvcInitUptime(
  136. );
  137. DWORD
  138. SNMP_FUNC_TYPE
  139. SnmpSvcGetUptime(
  140. );
  141. DWORD
  142. SNMP_FUNC_TYPE
  143. SnmpSvcGetUptimeFromTime(
  144. DWORD time
  145. );
  146. SNMPAPI
  147. SNMP_FUNC_TYPE
  148. SnmpSvcGenerateTrap(
  149. IN AsnObjectIdentifier * enterprise,
  150. IN AsnInteger genericTrap,
  151. IN AsnInteger specificTrap,
  152. IN AsnTimeticks timeStamp,
  153. IN RFC1157VarBindList * variableBindings
  154. );
  155. SNMPAPI
  156. SNMP_FUNC_TYPE
  157. SnmpSvcGenerateColdStartTrap(
  158. IN AsnInteger timeStamp
  159. );
  160. SNMPAPI
  161. SNMP_FUNC_TYPE
  162. SnmpSvcGenerateWarmStartTrap(
  163. IN AsnInteger timeStamp
  164. );
  165. SNMPAPI
  166. SNMP_FUNC_TYPE
  167. SnmpSvcGenerateLinkUpTrap(
  168. IN AsnInteger timeStamp,
  169. IN RFC1157VarBindList * variableBindings
  170. );
  171. SNMPAPI
  172. SNMP_FUNC_TYPE
  173. SnmpSvcGenerateLinkDownTrap(
  174. IN AsnInteger timeStamp,
  175. IN RFC1157VarBindList * variableBindings
  176. );
  177. SNMPAPI
  178. SNMP_FUNC_TYPE
  179. SnmpSvcGenerateAuthFailTrap(
  180. AsnInteger timeStamp
  181. );
  182. VOID
  183. SNMP_FUNC_TYPE
  184. SnmpSvcReportEvent(
  185. IN DWORD nMsgId,
  186. IN DWORD cSubStrings,
  187. IN LPSTR *SubStrings,
  188. IN DWORD nErrorCode
  189. );
  190. VOID
  191. SNMP_FUNC_TYPE
  192. SnmpSvcBufRevInPlace(
  193. IN OUT BYTE * pBuf,
  194. IN UINT nLen
  195. );
  196. VOID
  197. SNMP_FUNC_TYPE
  198. SnmpSvcBufRevAndCpy(
  199. OUT BYTE * pDstBuf,
  200. IN BYTE * pSrcBuf,
  201. IN UINT nLen
  202. );
  203. BOOL
  204. SNMP_FUNC_TYPE
  205. SnmpSvcAddrIsIpx(
  206. IN LPSTR addrText,
  207. OUT char pNetNum[],
  208. OUT char pNodeNum[]
  209. );
  210. BOOL
  211. SNMP_FUNC_TYPE
  212. SnmpSvcAddrToSocket(
  213. IN LPSTR addrText,
  214. OUT struct sockaddr * addrEncoding
  215. );
  216. AsnObjectIdentifier *
  217. SNMP_FUNC_TYPE
  218. SnmpSvcGetEnterpriseOID(
  219. );
  220. ///////////////////////////////////////////////////////////////////////////////
  221. // //
  222. // SNMP debugging definitions //
  223. // //
  224. ///////////////////////////////////////////////////////////////////////////////
  225. #define SNMP_OUTPUT_TO_CONSOLE 0x1
  226. #define SNMP_OUTPUT_TO_LOGFILE 0x2
  227. #define SNMP_OUTPUT_TO_EVENTLOG 0x4
  228. #define SNMP_OUTPUT_TO_DEBUGGER 0x8
  229. ///////////////////////////////////////////////////////////////////////////////
  230. // //
  231. // SNMP debugging prototypes //
  232. // //
  233. ///////////////////////////////////////////////////////////////////////////////
  234. VOID
  235. SNMP_FUNC_TYPE
  236. SnmpSvcSetLogLevel(
  237. IN INT nLevel
  238. );
  239. VOID
  240. SNMP_FUNC_TYPE
  241. SnmpSvcSetLogType(
  242. IN INT nOutput
  243. );
  244. ///////////////////////////////////////////////////////////////////////////////
  245. // //
  246. // Miscellaneous definitions //
  247. // //
  248. ///////////////////////////////////////////////////////////////////////////////
  249. #define asn_t asnType
  250. #define asn_v asnValue
  251. #define asn_n asnValue.number
  252. #define asn_s asnValue.string
  253. #define asn_sl asnValue.string.length
  254. #define asn_ss asnValue.string.stream
  255. #define asn_sd asnValue.string.dynamic
  256. #define asn_o asnValue.object
  257. #define asn_ol asnValue.object.idLength
  258. #define asn_oi asnValue.object.ids
  259. #define asn_l asnValue.sequence
  260. #define asn_a asnValue.address
  261. #define asn_c asnValue.counter
  262. #define asn_g asnValue.gauge
  263. #define asn_tt asnValue.timeticks
  264. #define asn_x asnValue.arbitrary
  265. ///////////////////////////////////////////////////////////////////////////////
  266. // //
  267. // Support for old definitions (support disabled via SNMPSTRICT) //
  268. // //
  269. ///////////////////////////////////////////////////////////////////////////////
  270. #ifndef SNMPSTRICT
  271. #define dbgprintf SnmpUtilDbgPrint
  272. #define SNMP_oiddisp SnmpUtilPrintOid
  273. #define SNMP_oidtoa SnmpUtilOidToA
  274. #define SNMP_oidtoa2 SnmpUtilIdsToA
  275. #define SNMP_bufrev SnmpUtilBufRevInPlace
  276. #define SNMP_bufcpyrev SnmpUtilBufRevAndCpy
  277. #define addrtosocket SnmpUtilAddrToSocket
  278. #define isIPX SnmpUtilAddrIsIpx
  279. #define DBGCONSOLEBASEDLOG SNMP_OUTPUT_TO_CONSOLE
  280. #define DBGFILEBASEDLOG SNMP_OUTPUT_TO_LOGFILE
  281. #define DBGEVENTLOGBASEDLOG SNMP_OUTPUT_TO_EVENTLOG
  282. #endif // SNMPSTRICT
  283. #ifdef __cplusplus
  284. }
  285. #endif
  286. #endif // _INC_SNMPUTIL