2 * Copyright (C) 2005 Juan Lang
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation; either
7 * version 2.1 of the License, or (at your option) any later version.
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. See the GNU
12 * Lesser General Public License for more details.
14 * You should have received a copy of the GNU Lesser General Public
15 * License along with this library; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
34 } AsnObjectIdentifier
;
36 typedef LONG AsnInteger32
;
37 typedef ULONG AsnUnsigned32
;
38 typedef ULARGE_INTEGER AsnCounter64
;
39 typedef AsnUnsigned32 AsnCounter32
;
40 typedef AsnUnsigned32 AsnGauge32
;
41 typedef AsnUnsigned32 AsnTimeticks
;
42 typedef AsnOctetString AsnBits
;
43 typedef AsnOctetString AsnSequence
;
44 typedef AsnOctetString AsnImplicitSequence
;
45 typedef AsnOctetString AsnIPAddress
;
46 typedef AsnOctetString AsnNetworkAddress
;
47 typedef AsnOctetString AsnDisplayString
;
48 typedef AsnOctetString AsnOpaque
;
54 AsnUnsigned32 unsigned32
;
55 AsnCounter64 counter64
;
56 AsnOctetString string
;
58 AsnObjectIdentifier object
;
68 typedef AsnObjectIdentifier AsnObjectName
;
69 typedef AsnAny AsnObjectSyntax
;
73 AsnObjectSyntax value
;
83 #define ASN_UNIVERSAL 0x00
84 #define ASN_APPLICATION 0x40
85 #define ASN_CONTEXT 0x80
86 #define ASN_PRIVATE 0xc0
87 #define ASN_PRIMITIVE 0x00
88 #define ASN_CONSTRUCTOR 0x20
90 #define SNMP_PDU_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x00)
91 #define SNMP_PDU_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x01)
92 #define SNMP_PDU_RESPONSE (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x02)
93 #define SNMP_PDU_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x03)
94 #define SNMP_PDU_V1TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x04)
95 #define SNMP_PDU_GETBULK (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x05)
96 #define SNMP_PDU_INFORM (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x06)
97 #define SNMP_PDU_TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x07)
99 #define ASN_INTEGER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x02)
100 #define ASN_BITS (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x03)
101 #define ASN_OCTETSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x04)
102 #define ASN_NULL (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x05)
103 #define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x06)
104 #define ASN_INTEGER32 ASN_INTEGER
106 #define ASN_SEQUENCE (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10)
107 #define ASN_SEQUENCEOF ASN_SEQUENCE
109 #define ASN_IPADDRESS (ASN_APPLICATION | ASN_PRIMITIVE | 0x00)
110 #define ASN_COUNTER32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x01)
111 #define ASN_GAUGE32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x02)
112 #define ASN_TIMETICKS (ASN_APPLICATION | ASN_PRIMITIVE | 0x03)
113 #define ASN_OPAQUE (ASN_APPLICATION | ASN_PRIMITIVE | 0x04)
114 #define ASN_COUNTER64 (ASN_APPLICATION | ASN_PRIMITIVE | 0x06)
115 #define ASN_UNSIGNED32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x07)
117 #define SNMP_EXCEPTION_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x00)
118 #define SNMP_EXCEPTION_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x01)
119 #define SNMP_EXCEPTION_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x02)
121 #define SNMP_EXTENSION_GET SNMP_PDU_GET
122 #define SNMP_EXTENSION_GET_NEXT SNMP_PDU_GETNEXT
123 #define SNMP_EXTENSION_GET_BULK SNMP_PDU_GETBULK
124 #define SNMP_EXTENSION_SET_TEST (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0)
125 #define SNMP_EXTENSION_SET_COMMIT SNMP_PDU_SET
126 #define SNMP_EXTENSION_SET_UNDO (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1)
127 #define SNMP_EXTENSION_SET_CLEANUP (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2)
129 #define SNMP_ERRORSTATUS_NOERROR 0
130 #define SNMP_ERRORSTATUS_TOOBIG 1
131 #define SNMP_ERRORSTATUS_NOSUCHNAME 2
132 #define SNMP_ERRORSTATUS_BADVALUE 3
133 #define SNMP_ERRORSTATUS_READONLY 4
134 #define SNMP_ERRORSTATUS_GENERR 5
135 #define SNMP_ERRORSTATUS_NOACCESS 6
136 #define SNMP_ERRORSTATUS_WRONGTYPE 7
137 #define SNMP_ERRORSTATUS_WRONGLENGTH 8
138 #define SNMP_ERRORSTATUS_WRONGENCODING 9
139 #define SNMP_ERRORSTATUS_WRONGVALUE 10
140 #define SNMP_ERRORSTATUS_NOCREATION 11
141 #define SNMP_ERRORSTATUS_INCONSISTENTVALUE 12
142 #define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE 13
143 #define SNMP_ERRORSTATUS_COMMITFAILED 14
144 #define SNMP_ERRORSTATUS_UNDOFAILED 15
145 #define SNMP_ERRORSTATUS_AUTHORIZATIONERROR 16
146 #define SNMP_ERRORSTATUS_NOTWRITABLE 17
147 #define SNMP_ERRORSTATUS_INCONSISTENTNAME 18
149 #define SNMP_GENERICTRAP_COLDSTART 0
150 #define SNMP_GENERICTRAP_WARMSTART 1
151 #define SNMP_GENERICTRAP_LINKDOWN 2
152 #define SNMP_GENERICTRAP_LINKUP 3
153 #define SNMP_GENERICTRAP_AUTHFAILURE 4
154 #define SNMP_GENERICTRAP_EGPNEIGHLOSS 5
155 #define SNMP_GENERICTRAP_ENTERSPECIFIC 6
157 #define SNMP_ACCESS_NONE 0
158 #define SNMP_ACCESS_NOTIFY 1
159 #define SNMP_ACCESS_READ_ONLY 2
160 #define SNMP_ACCESS_READ_WRITE 3
161 #define SNMP_ACCESS_READ_CREATE 4
163 #define SNMP_LOG_SILENT 0
164 #define SNMP_LOG_FATAL 1
165 #define SNMP_LOG_ERROR 2
166 #define SNMP_LOG_WARNING 3
167 #define SNMP_LOG_TRACE 4
168 #define SNMP_LOG_VERBOSE 5
170 #define SNMP_OUTPUT_TO_CONSOLE 1
171 #define SNMP_OUTPUT_TO_LOGFILE 2
172 #define SNMP_OUTPUT_TO_EVENTLOG 4
173 #define SNMP_OUTPUT_TO_DEBUGGER 8
175 #define DEFINE_SIZEOF(x) (sizeof(x)/sizeof((x)[0]))
176 #define DEFINE_OID(x) { DEFINE_SIZEOF(x),(x) }
177 #define DEFINE_NULLOID() { 0, NULL }
178 #define DEFINE_NULLOCTENTS() { NULL, 0, FALSE }
180 #define DEFAULT_SNMP_PORT_UDP 161
181 #define DEFAULT_SNMP_PORT_IPX 36879
182 #define DEFAULT_SNMPTRAP_PORT_UDP 162
183 #define DEFAULT_SNMPTRAP_PORT_IPX 36880
185 #define SNMP_MAX_OID_LEN 128
187 #define SNMP_MEM_ALLOC_ERROR 0
188 #define SNMP_BERAPI_INVALID_LENGTH 10
189 #define SNMP_BERAPI_INVALID_TAG 11
190 #define SNMP_BERAPI_OVERFLOW 12
191 #define SNMP_BERAPI_SHORT_BUFFER 13
192 #define SNMP_BERAPI_INVALID_OBJELEM 14
193 #define SNMP_PDUAPI_UNRECOGNIZED_PDU 20
194 #define SNMP_PDUAPI_INVALID_ES 21
195 #define SNMP_PDUAPI_INVALID_GT 22
196 #define SNMP_AUTHAPI_INVALID_VERSION 30
197 #define SNMP_AUTHAPI_INVALID_MSG_TYPE 31
198 #define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32
200 #define SNMPAPI_NOERROR TRUE
201 #define SNMPAPI_ERROR FALSE
207 BOOL WINAPI
SnmpExtensionInit(DWORD dwUptimeReference
,
208 HANDLE
*phSubagentTrapEvent
, AsnObjectIdentifier
*pFirstSupportedRegion
);
209 BOOL WINAPI
SnmpExtensionInitEx(AsnObjectIdentifier
*pNextSupportedRegion
);
211 BOOL WINAPI
SnmpExtensionMonitor(LPVOID pAgentMgmtData
);
213 BOOL WINAPI
SnmpExtensionQuery(BYTE bPduType
, SnmpVarBindList
*pVarBindList
,
214 AsnInteger32
*pErrorStatus
, AsnInteger32
*pErrorIndex
);
215 BOOL WINAPI
SnmpExtensionQueryEx(UINT nRequestType
, UINT nTransactionId
,
216 SnmpVarBindList
*pVarBindList
, AsnOctetString
*pContextInfo
,
217 AsnInteger32
*pErrorStatus
, AsnInteger32
*pErrorIndex
);
219 BOOL WINAPI
SnmpExtensionTrap(AsnObjectIdentifier
*pEnterpriseOid
,
220 AsnInteger32
*pGenericTrapId
, AsnInteger32
*pSpecificTrapId
,
221 AsnTimeticks
*pTimeStamp
, SnmpVarBindList
*pVarBindList
);
223 VOID WINAPI
SnmpExtensionClose(VOID
);
225 typedef BOOL (WINAPI
*PFNSNMPEXTENSIONINIT
)(DWORD dwUptimeReference
,
226 HANDLE
*phSubagentTrapEvent
, AsnObjectIdentifier
*pFirstSupportedRegion
);
227 typedef BOOL (WINAPI
*PFNSNMPEXTENSIONINITEX
)(
228 AsnObjectIdentifier
*pNextSupportedRegion
);
230 typedef BOOL (WINAPI
*PFNSNMPEXTENSIONMONITOR
)(LPVOID pAgentMgmtData
);
232 typedef BOOL (WINAPI
*PFNSNMPEXTENSIONQUERY
)(BYTE bPduType
,
233 SnmpVarBindList
*pVarBindList
, AsnInteger32
*pErrorStatus
,
234 AsnInteger32
*pErrorIndex
);
235 typedef BOOL (WINAPI
*PFNSNMPEXTENSIONQUERYEX
)(UINT nRequestType
,
236 UINT nTransactionId
, SnmpVarBindList
*pVarBindList
,
237 AsnOctetString
*pContextInfo
, AsnInteger32
*pErrorStatus
,
238 AsnInteger32
*pErrorIndex
);
240 typedef BOOL (WINAPI
*PFNSNMPEXTENSIONTRAP
)(AsnObjectIdentifier
*pEnterpriseOid
,
241 AsnInteger32
*pGenericTrapId
, AsnInteger32
*pSpecificTrapId
,
242 AsnTimeticks
*pTimeStamp
, SnmpVarBindList
*pVarBindList
);
244 typedef VOID (WINAPI
*PFNSNMPEXTENSIONCLOSE
)(VOID
);
246 INT WINAPI
SnmpUtilOidCpy(AsnObjectIdentifier
*pOidDst
,
247 AsnObjectIdentifier
*pOidSrc
);
248 INT WINAPI
SnmpUtilOidAppend(AsnObjectIdentifier
*pOidDst
,
249 AsnObjectIdentifier
*pOidSrc
);
250 INT WINAPI
SnmpUtilOidCmp(AsnObjectIdentifier
*pOid1
,
251 AsnObjectIdentifier
*pOid2
);
252 INT WINAPI
SnmpUtilOidNCmp(AsnObjectIdentifier
*pOid1
,
253 AsnObjectIdentifier
*pOid2
, UINT nSubIds
);
254 VOID WINAPI
SnmpUtilOidFree(AsnObjectIdentifier
*pOid
);
256 INT WINAPI
SnmpUtilOctetsCmp(AsnOctetString
*pOctets1
,
257 AsnOctetString
*pOctets2
);
258 INT WINAPI
SnmpUtilOctetsNCmp(AsnOctetString
*pOctets1
,
259 AsnOctetString
*pOctets2
, UINT nChars
);
260 INT WINAPI
SnmpUtilOctetsCpy(AsnOctetString
*pOctetsDst
,
261 AsnOctetString
*pOctetsSrc
);
262 VOID WINAPI
SnmpUtilOctetsFree(AsnOctetString
*pOctets
);
264 INT WINAPI
SnmpUtilAsnAnyCpy(AsnAny
*pAnyDst
, AsnAny
*pAnySrc
);
265 VOID WINAPI
SnmpUtilAsnAnyFree(AsnAny
*pAny
);
267 INT WINAPI
SnmpUtilVarBindCpy(SnmpVarBind
*pVbDst
, SnmpVarBind
*pVbSrc
);
268 VOID WINAPI
SnmpUtilVarBindFree(SnmpVarBind
*pVb
);
270 INT WINAPI
SnmpUtilVarBindListCpy(SnmpVarBindList
*pVblDst
,
271 SnmpVarBindList
*pVblSrc
);
272 VOID WINAPI
SnmpUtilVarBindListFree(SnmpVarBindList
*pVbl
);
274 LPVOID WINAPI
SnmpUtilMemAlloc(UINT nBytes
) __WINE_ALLOC_SIZE(1);
275 LPVOID WINAPI
SnmpUtilMemReAlloc(LPVOID pMem
, UINT nBytes
) __WINE_ALLOC_SIZE(2);
276 VOID WINAPI
SnmpUtilMemFree(LPVOID pMem
);
278 LPSTR WINAPI
SnmpUtilOidToA(AsnObjectIdentifier
*Oid
);
279 LPSTR WINAPI
SnmpUtilIdsToA(UINT
*Ids
, UINT IdLength
);
281 VOID WINAPI
SnmpUtilPrintOid(AsnObjectIdentifier
*Oid
);
282 VOID WINAPI
SnmpUtilPrintAsnAny(AsnAny
*pAny
);
284 DWORD WINAPI
SnmpSvcGetUptime(VOID
);
285 VOID WINAPI
SnmpSvcSetLogLevel(INT nLogLevel
);
286 VOID WINAPI
SnmpSvcSetLogType(INT nLogType
);
288 VOID WINAPIV
SnmpUtilDbgPrint(INT nLogLevel
, LPSTR szFormat
, ...);
294 #endif /* _WINE_SNMP_H */