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
38 } AsnObjectIdentifier;
40 typedef LONG AsnInteger32;
41 typedef ULONG AsnUnsigned32;
42 typedef ULARGE_INTEGER AsnCounter64;
43 typedef AsnUnsigned32 AsnCounter32;
44 typedef AsnUnsigned32 AsnGauge32;
45 typedef AsnUnsigned32 AsnTimeticks;
46 typedef AsnOctetString AsnBits;
47 typedef AsnOctetString AsnSequence;
48 typedef AsnOctetString AsnImplicitSequence;
49 typedef AsnOctetString AsnIPAddress;
50 typedef AsnOctetString AsnNetworkAddress;
51 typedef AsnOctetString AsnDisplayString;
52 typedef AsnOctetString AsnOpaque;
58 AsnUnsigned32 unsigned32;
59 AsnCounter64 counter64;
60 AsnOctetString string;
62 AsnObjectIdentifier object;
72 typedef AsnObjectIdentifier AsnObjectName;
73 typedef AsnAny AsnObjectSyntax;
77 AsnObjectSyntax value;
87 #define ASN_UNIVERSAL 0x00
88 #define ASN_APPLICATION 0x40
89 #define ASN_CONTEXT 0x80
90 #define ASN_PRIVATE 0xc0
91 #define ASN_PRIMITIVE 0x00
92 #define ASN_CONSTRUCTOR 0x20
94 #define SNMP_PDU_GET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x00)
95 #define SNMP_PDU_GETNEXT (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x01)
96 #define SNMP_PDU_RESPONSE (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x02)
97 #define SNMP_PDU_SET (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x03)
98 #define SNMP_PDU_V1TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x04)
99 #define SNMP_PDU_GETBULK (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x05)
100 #define SNMP_PDU_INFORM (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x06)
101 #define SNMP_PDU_TRAP (ASN_CONTEXT | ASN_CONSTRUCTOR | 0x07)
103 #define ASN_INTEGER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x02)
104 #define ASN_BITS (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x03)
105 #define ASN_OCTETSTRING (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x04)
106 #define ASN_NULL (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x05)
107 #define ASN_OBJECTIDENTIFIER (ASN_UNIVERSAL | ASN_PRIMITIVE | 0x06)
108 #define ASN_INTEGER32 ASN_INTEGER
110 #define ASN_SEQUENCE (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10)
111 #define ASN_SEQUENCEOF ASN_SEQUENCE
113 #define ASN_IPADDRESS (ASN_APPLICATION | ASN_PRIMITIVE | 0x00)
114 #define ASN_COUNTER32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x01)
115 #define ASN_GAUGE32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x02)
116 #define ASN_TIMETICKS (ASN_APPLICATION | ASN_PRIMITIVE | 0x03)
117 #define ASN_OPAQUE (ASN_APPLICATION | ASN_PRIMITIVE | 0x04)
118 #define ASN_COUNTER64 (ASN_APPLICATION | ASN_PRIMITIVE | 0x06)
119 #define ASN_UNSIGNED32 (ASN_APPLICATION | ASN_PRIMITIVE | 0x07)
121 #define SNMP_EXCEPTION_NOSUCHOBJECT (ASN_CONTEXT | ASN_PRIMITIVE | 0x00)
122 #define SNMP_EXCEPTION_NOSUCHINSTANCE (ASN_CONTEXT | ASN_PRIMITIVE | 0x01)
123 #define SNMP_EXCEPTION_ENDOFMIBVIEW (ASN_CONTEXT | ASN_PRIMITIVE | 0x02)
125 #define SNMP_EXTENSION_GET SNMP_PDU_GET
126 #define SNMP_EXTENSION_GET_NEXT SNMP_PDU_GETNEXT
127 #define SNMP_EXTENSION_GET_BULK SNMP_PDU_GETBULK
128 #define SNMP_EXTENSION_SET_TEST (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x0)
129 #define SNMP_EXTENSION_SET_COMMIT SNMP_PDU_SET
130 #define SNMP_EXTENSION_SET_UNDO (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x1)
131 #define SNMP_EXTENSION_SET_CLEANUP (ASN_PRIVATE | ASN_CONSTRUCTOR | 0x2)
133 #define SNMP_ERRORSTATUS_NOERROR 0
134 #define SNMP_ERRORSTATUS_TOOBIG 1
135 #define SNMP_ERRORSTATUS_NOSUCHNAME 2
136 #define SNMP_ERRORSTATUS_BADVALUE 3
137 #define SNMP_ERRORSTATUS_READONLY 4
138 #define SNMP_ERRORSTATUS_GENERR 5
139 #define SNMP_ERRORSTATUS_NOACCESS 6
140 #define SNMP_ERRORSTATUS_WRONGTYPE 7
141 #define SNMP_ERRORSTATUS_WRONGLENGTH 8
142 #define SNMP_ERRORSTATUS_WRONGENCODING 9
143 #define SNMP_ERRORSTATUS_WRONGVALUE 10
144 #define SNMP_ERRORSTATUS_NOCREATION 11
145 #define SNMP_ERRORSTATUS_INCONSISTENTVALUE 12
146 #define SNMP_ERRORSTATUS_RESOURCEUNAVAILABLE 13
147 #define SNMP_ERRORSTATUS_COMMITFAILED 14
148 #define SNMP_ERRORSTATUS_UNDOFAILED 15
149 #define SNMP_ERRORSTATUS_AUTHORIZATIONERROR 16
150 #define SNMP_ERRORSTATUS_NOTWRITABLE 17
151 #define SNMP_ERRORSTATUS_INCONSISTENTNAME 18
153 #define SNMP_GENERICTRAP_COLDSTART 0
154 #define SNMP_GENERICTRAP_WARMSTART 1
155 #define SNMP_GENERICTRAP_LINKDOWN 2
156 #define SNMP_GENERICTRAP_LINKUP 3
157 #define SNMP_GENERICTRAP_AUTHFAILURE 4
158 #define SNMP_GENERICTRAP_EGPNEIGHLOSS 5
159 #define SNMP_GENERICTRAP_ENTERSPECIFIC 6
161 #define SNMP_ACCESS_NONE 0
162 #define SNMP_ACCESS_NOTIFY 1
163 #define SNMP_ACCESS_READ_ONLY 2
164 #define SNMP_ACCESS_READ_WRITE 3
165 #define SNMP_ACCESS_READ_CREATE 4
167 #define SNMP_LOG_SILENT 0
168 #define SNMP_LOG_FATAL 1
169 #define SNMP_LOG_ERROR 2
170 #define SNMP_LOG_WARNING 3
171 #define SNMP_LOG_TRACE 4
172 #define SNMP_LOG_VERBOSE 5
174 #define SNMP_OUTPUT_TO_CONSOLE 1
175 #define SNMP_OUTPUT_TO_LOGFILE 2
176 #define SNMP_OUTPUT_TO_EVENTLOG 4
177 #define SNMP_OUTPUT_TO_DEBUGGER 8
179 #define DEFINE_SIZEOF(x) (sizeof(x)/sizeof((x)[0]))
180 #define DEFINE_OID(x) { DEFINE_SIZEOF(x),(x) }
181 #define DEFINE_NULLOID() { 0, NULL }
182 #define DEFINE_NULLOCTENTS() { NULL, 0, FALSE }
184 #define DEFAULT_SNMP_PORT_UDP 161
185 #define DEFAULT_SNMP_PORT_IPX 36879
186 #define DEFAULT_SNMPTRAP_PORT_UDP 162
187 #define DEFAULT_SNMPTRAP_PORT_IPX 36880
189 #define SNMP_MAX_OID_LEN 128
191 #define SNMP_MEM_ALLOC_ERROR 0
192 #define SNMP_BERAPI_INVALID_LENGTH 10
193 #define SNMP_BERAPI_INVALID_TAG 11
194 #define SNMP_BERAPI_OVERFLOW 12
195 #define SNMP_BERAPI_SHORT_BUFFER 13
196 #define SNMP_BERAPI_INVALID_OBJELEM 14
197 #define SNMP_PDUAPI_UNRECOGNIZED_PDU 20
198 #define SNMP_PDUAPI_INVALID_ES 21
199 #define SNMP_PDUAPI_INVALID_GT 22
200 #define SNMP_AUTHAPI_INVALID_VERSION 30
201 #define SNMP_AUTHAPI_INVALID_MSG_TYPE 31
202 #define SNMP_AUTHAPI_TRIV_AUTH_FAILED 32
208 BOOL WINAPI SnmpExtensionInit(DWORD dwUptimeReference,
209 HANDLE *phSubagentTrapEvent, AsnObjectIdentifier *pFirstSupportedRegion);
210 BOOL WINAPI SnmpExtensionInitEx(AsnObjectIdentifier *pNextSupportedRegion);
212 BOOL WINAPI SnmpExtensionMonitor(LPVOID pAgentMgmtData);
214 BOOL WINAPI SnmpExtensionQuery(BYTE bPduType, SnmpVarBindList *pVarBindList,
215 AsnInteger32 *pErrorStatus, AsnInteger32 *pErrorIndex);
216 BOOL WINAPI SnmpExtensionQueryEx(UINT nRequestType, UINT nTransactionId,
217 SnmpVarBindList *pVarBindList, AsnOctetString *pContextInfo,
218 AsnInteger32 *pErrorStatus, AsnInteger32 *pErrorIndex);
220 BOOL WINAPI SnmpExtensionTrap(AsnObjectIdentifier *pEnterpriseOid,
221 AsnInteger32 *pGenericTrapId, AsnInteger32 *pSpecificTrapId,
222 AsnTimeticks *pTimeStamp, SnmpVarBindList *pVarBindList);
224 void WINAPI SnmpExtensionClose(void);
226 typedef BOOL (WINAPI *PFNSNMPEXTENSIONINIT)(DWORD dwUptimeReference,
227 HANDLE *phSubagentTrapEvent, AsnObjectIdentifier *pFirstSupportedRegion);
228 typedef BOOL (WINAPI *PFNSNMPEXTENSIONINITEX)(
229 AsnObjectIdentifier *pNextSupportedRegion);
231 typedef BOOL (WINAPI *PFNSNMPEXTENSIONMONITOR)(LPVOID pAgentMgmtData);
233 typedef BOOL (WINAPI *PFNSNMPEXTENSIONQUERY)(BYTE bPduType,
234 SnmpVarBindList *pVarBindList, AsnInteger32 *pErrorStatus,
235 AsnInteger32 *pErrorIndex);
236 typedef BOOL (WINAPI *PFNSNMPEXTENSIONQUERYEX)(UINT nRequestType,
237 UINT nTransactionId, SnmpVarBindList *pVarBindList,
238 AsnOctetString *pContextInfo, AsnInteger32 *pErrorStatus,
239 AsnInteger32 *pErrorIndex);
241 typedef BOOL (WINAPI *PFNSNMPEXTENSIONTRAP)(AsnObjectIdentifier *pEnterpriseOid,
242 AsnInteger32 *pGenericTrapId, AsnInteger32 *pSpecificTrapId,
243 AsnTimeticks *pTimeStamp, SnmpVarBindList *pVarBindList);
245 typedef void (WINAPI *PFNSNMPEXTENSIONCLOSE)(void);
247 int WINAPI SnmpUtilOidCpy(AsnObjectIdentifier *pOidDst,
248 AsnObjectIdentifier *pOidSrc);
249 int WINAPI SnmpUtilOidAppend(AsnObjectIdentifier *pOidDst,
250 AsnObjectIdentifier *pOidSrc);
251 int WINAPI SnmpUtilOidCmp(AsnObjectIdentifier *pOid1,
252 AsnObjectIdentifier *pOid2);
253 int WINAPI SnmpUtilOidNCmp(AsnObjectIdentifier *pOid1,
254 AsnObjectIdentifier *pOid2, UINT nSubIds);
255 void WINAPI SnmpUtilOidFree(AsnObjectIdentifier *pOid);
257 int WINAPI SnmpUtilOctetsCmp(AsnOctetString *pOctets1,
258 AsnOctetString *pOctets2);
259 int WINAPI SnmpUtilOctetsNCmp(AsnOctetString *pOctets1,
260 AsnOctetString *pOctets2, UINT nChars);
261 int WINAPI SnmpUtilOctetsCpy(AsnOctetString *pOctetsDst,
262 AsnOctetString *pOctetsSrc);
263 void WINAPI SnmpUtilOctetsFree(AsnOctetString *pOctets);
265 int WINAPI SnmpUtilAsnAnyCpy(AsnAny *pAnyDst, AsnAny *pAnySrc);
266 void WINAPI SnmpUtilAsnAnyFree(AsnAny *pAny);
268 int WINAPI SnmpUtilVarBindCpy(SnmpVarBind *pVbDst, SnmpVarBind *pVbSrc);
269 void WINAPI SnmpUtilVarBindFree(SnmpVarBind *pVb);
271 int WINAPI SnmpUtilVarBindListCpy(SnmpVarBindList *pVblDst,
272 SnmpVarBindList *pVblSrc);
273 void WINAPI SnmpUtilVarBindListFree(SnmpVarBindList *pVbl);
275 LPVOID WINAPI SnmpUtilMemAlloc(UINT nBytes);
276 LPVOID WINAPI SnmpUtilMemReAlloc(LPVOID pMem, UINT nBytes);
277 void WINAPI SnmpUtilMemFree(LPVOID pMem);
279 LPSTR WINAPI SnmpUtilOidToA(AsnObjectIdentifier *Oid);
280 LPSTR WINAPI SnmpUtilIdsToA(UINT *Ids, UINT IdLength);
282 void WINAPI SnmpUtilPrintOid(AsnObjectIdentifier *Oid);
283 void WINAPI SnmpUtilPrintAsnAny(AsnAny *pAny);
285 DWORD WINAPI SnmpSvcGetUptime(void);
286 void WINAPI SnmpSvcSetLogLevel(int nLogLevel);
287 void WINAPI SnmpSvcSetLogType(int nLogType);
289 void WINAPI SnmpUtilDbgPrint(int nLogLevel, LPSTR szFormat, ...);
295 #endif /* _WINE_SNMP_H */