Reactos
at master 298 lines 11 kB view raw
1/* 2 * Copyright (C) 2005 Juan Lang 3 * 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. 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. See the GNU 12 * Lesser General Public License for more details. 13 * 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 17 */ 18#ifndef _WINE_SNMP_H 19#define _WINE_SNMP_H 20 21#ifndef __WINESRC__ 22# include <windows.h> 23#else 24# include <windef.h> 25#endif 26 27#include <pshpack4.h> 28 29typedef struct { 30 BYTE *stream; 31 UINT length; 32 BOOL dynamic; 33} AsnOctetString; 34 35typedef struct { 36 UINT idLength; 37 UINT *ids; 38} AsnObjectIdentifier; 39 40typedef LONG AsnInteger32; 41typedef ULONG AsnUnsigned32; 42typedef ULARGE_INTEGER AsnCounter64; 43typedef AsnUnsigned32 AsnCounter32; 44typedef AsnUnsigned32 AsnGauge32; 45typedef AsnUnsigned32 AsnTimeticks; 46typedef AsnOctetString AsnBits; 47typedef AsnOctetString AsnSequence; 48typedef AsnOctetString AsnImplicitSequence; 49typedef AsnOctetString AsnIPAddress; 50typedef AsnOctetString AsnNetworkAddress; 51typedef AsnOctetString AsnDisplayString; 52typedef AsnOctetString AsnOpaque; 53 54typedef struct { 55 BYTE asnType; 56 union { 57 AsnInteger32 number; 58 AsnUnsigned32 unsigned32; 59 AsnCounter64 counter64; 60 AsnOctetString string; 61 AsnBits bits; 62 AsnObjectIdentifier object; 63 AsnSequence sequence; 64 AsnIPAddress address; 65 AsnCounter32 counter; 66 AsnGauge32 gauge; 67 AsnTimeticks ticks; 68 AsnOpaque arbitrary; 69 } asnValue; 70} AsnAny; 71 72typedef AsnObjectIdentifier AsnObjectName; 73typedef AsnAny AsnObjectSyntax; 74 75typedef struct { 76 AsnObjectName name; 77 AsnObjectSyntax value; 78} SnmpVarBind; 79 80typedef struct { 81 SnmpVarBind *list; 82 UINT len; 83} SnmpVarBindList; 84 85#include <poppack.h> 86 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 93 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) 102 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 109 110#define ASN_SEQUENCE (ASN_UNIVERSAL | ASN_CONSTRUCTOR | 0x10) 111#define ASN_SEQUENCEOF ASN_SEQUENCE 112 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) 120 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) 124 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) 132 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 152 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 160 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 166 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 173 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 178 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 } 183 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 188 189#define SNMP_MAX_OID_LEN 128 190 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 203 204#define SNMPAPI_NOERROR TRUE 205#define SNMPAPI_ERROR FALSE 206 207#ifdef __cplusplus 208extern "C" { 209#endif 210 211BOOL WINAPI SnmpExtensionInit(DWORD dwUptimeReference, 212 HANDLE *phSubagentTrapEvent, AsnObjectIdentifier *pFirstSupportedRegion); 213BOOL WINAPI SnmpExtensionInitEx(AsnObjectIdentifier *pNextSupportedRegion); 214 215BOOL WINAPI SnmpExtensionMonitor(LPVOID pAgentMgmtData); 216 217BOOL WINAPI SnmpExtensionQuery(BYTE bPduType, SnmpVarBindList *pVarBindList, 218 AsnInteger32 *pErrorStatus, AsnInteger32 *pErrorIndex); 219BOOL WINAPI SnmpExtensionQueryEx(UINT nRequestType, UINT nTransactionId, 220 SnmpVarBindList *pVarBindList, AsnOctetString *pContextInfo, 221 AsnInteger32 *pErrorStatus, AsnInteger32 *pErrorIndex); 222 223BOOL WINAPI SnmpExtensionTrap(AsnObjectIdentifier *pEnterpriseOid, 224 AsnInteger32 *pGenericTrapId, AsnInteger32 *pSpecificTrapId, 225 AsnTimeticks *pTimeStamp, SnmpVarBindList *pVarBindList); 226 227VOID WINAPI SnmpExtensionClose(VOID); 228 229typedef BOOL (WINAPI *PFNSNMPEXTENSIONINIT)(DWORD dwUptimeReference, 230 HANDLE *phSubagentTrapEvent, AsnObjectIdentifier *pFirstSupportedRegion); 231typedef BOOL (WINAPI *PFNSNMPEXTENSIONINITEX)( 232 AsnObjectIdentifier *pNextSupportedRegion); 233 234typedef BOOL (WINAPI *PFNSNMPEXTENSIONMONITOR)(LPVOID pAgentMgmtData); 235 236typedef BOOL (WINAPI *PFNSNMPEXTENSIONQUERY)(BYTE bPduType, 237 SnmpVarBindList *pVarBindList, AsnInteger32 *pErrorStatus, 238 AsnInteger32 *pErrorIndex); 239typedef BOOL (WINAPI *PFNSNMPEXTENSIONQUERYEX)(UINT nRequestType, 240 UINT nTransactionId, SnmpVarBindList *pVarBindList, 241 AsnOctetString *pContextInfo, AsnInteger32 *pErrorStatus, 242 AsnInteger32 *pErrorIndex); 243 244typedef BOOL (WINAPI *PFNSNMPEXTENSIONTRAP)(AsnObjectIdentifier *pEnterpriseOid, 245 AsnInteger32 *pGenericTrapId, AsnInteger32 *pSpecificTrapId, 246 AsnTimeticks *pTimeStamp, SnmpVarBindList *pVarBindList); 247 248typedef VOID (WINAPI *PFNSNMPEXTENSIONCLOSE)(VOID); 249 250INT WINAPI SnmpUtilOidCpy(AsnObjectIdentifier *pOidDst, 251 AsnObjectIdentifier *pOidSrc); 252INT WINAPI SnmpUtilOidAppend(AsnObjectIdentifier *pOidDst, 253 AsnObjectIdentifier *pOidSrc); 254INT WINAPI SnmpUtilOidCmp(AsnObjectIdentifier *pOid1, 255 AsnObjectIdentifier *pOid2); 256INT WINAPI SnmpUtilOidNCmp(AsnObjectIdentifier *pOid1, 257 AsnObjectIdentifier *pOid2, UINT nSubIds); 258VOID WINAPI SnmpUtilOidFree(AsnObjectIdentifier *pOid); 259 260INT WINAPI SnmpUtilOctetsCmp(AsnOctetString *pOctets1, 261 AsnOctetString *pOctets2); 262INT WINAPI SnmpUtilOctetsNCmp(AsnOctetString *pOctets1, 263 AsnOctetString *pOctets2, UINT nChars); 264INT WINAPI SnmpUtilOctetsCpy(AsnOctetString *pOctetsDst, 265 AsnOctetString *pOctetsSrc); 266VOID WINAPI SnmpUtilOctetsFree(AsnOctetString *pOctets); 267 268INT WINAPI SnmpUtilAsnAnyCpy(AsnAny *pAnyDst, AsnAny *pAnySrc); 269VOID WINAPI SnmpUtilAsnAnyFree(AsnAny *pAny); 270 271INT WINAPI SnmpUtilVarBindCpy(SnmpVarBind *pVbDst, SnmpVarBind *pVbSrc); 272VOID WINAPI SnmpUtilVarBindFree(SnmpVarBind *pVb); 273 274INT WINAPI SnmpUtilVarBindListCpy(SnmpVarBindList *pVblDst, 275 SnmpVarBindList *pVblSrc); 276VOID WINAPI SnmpUtilVarBindListFree(SnmpVarBindList *pVbl); 277 278LPVOID WINAPI SnmpUtilMemAlloc(UINT nBytes) __WINE_ALLOC_SIZE(1); 279LPVOID WINAPI SnmpUtilMemReAlloc(LPVOID pMem, UINT nBytes) __WINE_ALLOC_SIZE(2); 280VOID WINAPI SnmpUtilMemFree(LPVOID pMem); 281 282LPSTR WINAPI SnmpUtilOidToA(AsnObjectIdentifier *Oid); 283LPSTR WINAPI SnmpUtilIdsToA(UINT *Ids, UINT IdLength); 284 285VOID WINAPI SnmpUtilPrintOid(AsnObjectIdentifier *Oid); 286VOID WINAPI SnmpUtilPrintAsnAny(AsnAny *pAny); 287 288DWORD WINAPI SnmpSvcGetUptime(VOID); 289VOID WINAPI SnmpSvcSetLogLevel(INT nLogLevel); 290VOID WINAPI SnmpSvcSetLogType(INT nLogType); 291 292VOID WINAPIV SnmpUtilDbgPrint(INT nLogLevel, LPSTR szFormat, ...); 293 294#ifdef __cplusplus 295} 296#endif 297 298#endif /* _WINE_SNMP_H */