📄 snmpdelivertrap_netsnmp.h
字号:
//%2006//////////////////////////////////////////////////////////////////////////// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development// Company, L.P.; IBM Corp.; The Open Group; Tivoli Systems.// Copyright (c) 2003 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation, The Open Group.// Copyright (c) 2004 BMC Software; Hewlett-Packard Development Company, L.P.;// IBM Corp.; EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2005 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; VERITAS Software Corporation; The Open Group.// Copyright (c) 2006 Hewlett-Packard Development Company, L.P.; IBM Corp.;// EMC Corporation; Symantec Corporation; The Open Group.//// Permission is hereby granted, free of charge, to any person obtaining a copy// of this software and associated documentation files (the "Software"), to// deal in the Software without restriction, including without limitation the// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or// sell copies of the Software, and to permit persons to whom the Software is// furnished to do so, subject to the following conditions:// // THE ABOVE COPYRIGHT NOTICE AND THIS PERMISSION NOTICE SHALL BE INCLUDED IN// ALL COPIES OR SUBSTANTIAL PORTIONS OF THE SOFTWARE. THE SOFTWARE IS PROVIDED// "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT// LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR// PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.////==============================================================================////%/////////////////////////////////////////////////////////////////////////////#include <iostream>#include <net-snmp/net-snmp-config.h>#include <net-snmp/net-snmp-includes.h>#include <Pegasus/Common/Mutex.h>#include "snmpDeliverTrap.h"PEGASUS_NAMESPACE_BEGINstatic const char _MSG_SESSION_OPEN_FAILED[] = "Snmp Indication Handler failed to open the SNMP session: "; static const char _MSG_SESSION_OPEN_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_SESSION_OPEN_FAILED";static const char _MSG_GET_SESSION_POINT_FAILED[] = "Snmp Indication Handler failed to get the SNMP session pointer: "; static const char _MSG_GET_SESSION_POINTER_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_GET_SESSION_POINT_FAILED";static const char _MSG_PDU_CREATE_FAILED[] = "Snmp Indication Handler failed to create the SNMP PDU."; static const char _MSG_PDU_CREATE_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_PDU_CREATE_FAILED";static const char _MSG_VERSION_NOT_SUPPORTED[] = "SNMPv1 Trap and SNMPv2C Trap are the only supported SNMPVersion values.";static const char _MSG_VERSION_NOT_SUPPORTED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_VERSION_NOT_SUPPORTED";static const char _MSG_SESSION_SEND_FAILED[] = "Snmp Indication Handler failed to send the trap: "; static const char _MSG_SESSION_SEND_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_SESSION_SEND_FAILED";static const char _MSG_PACK_TRAP_INFO_INTO_PDU_FAILED[] = "Snmp Indication Handler failed to pack trap information into the " "SNMP PDU: \"$0\".";static const char _MSG_PACK_TRAP_INFO_INTO_PDU_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_PACK_TRAP_INFO_INTO_PDU_FAILED";static const char _MSG_ADD_SYSUPTIME_TO_PDU_FAILED[] = "Snmp Indication Handler failed to add sysUpTime to the SNMP PDU: \"$0\".";static const char _MSG_ADD_SYSUPTIME_TO_PDU_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_ADD_SYSUPTIME_TO_PDU_FAILED";static const char _MSG_ADD_SNMP_TRAP_TO_PDU_FAILED[] = "Snmp Indication Handler failed to add SNMP Trap to the SNMP PDU: \"$0\".";static const char _MSG_ADD_SNMP_TRAP_TO_PDU_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_ADD_SNMP_TRAP_TO_PDU_FAILED";static const char _MSG_PACK_CIM_PROPERTY_TO_PDU_FAILED[] = "Snmp Indication Handler failed to pack a CIM Property into the " "SNMP PDU: \"$0\".";static const char _MSG_PACK_CIM_PROPERTY_TO_PDU_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_PACK_CIM_PROPERTY_TO_PDU_FAILED";static const char _MSG_READ_OBJID_FAILED[] = "Snmp Indication Handler failed to convert trapOid \"$0\" from a " "numeric form to a list of subidentifiers.";static const char _MSG_READ_OBJID_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_READ_OBJID_FAILED";static const char _MSG_PARSE_CIM_PROPERTY_OID_FAILED[] = "Snmp Indication Handler failed to convert a CIM property OID \"$0\" from " "a numeric form to a list of subidentifiers.";static const char _MSG_PARSE_CIM_PROPERTY_OID_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "__MSG_PARSE_CIM_PROPERTY_OID_FAILED";static const char _MSG_READ_ENTOID_FAILED[] = "Snmp Indication Handler failed to convert SNMPV1 enterprise OID \"$0\" " "from a numeric form to a list of subidentifiers.";static const char _MSG_READ_ENTOID_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_READ_ENTOID_FAILED";static const char _MSG_UNSUPPORTED_SNMP_DATA_TYPE[] = "Type \"$0\" is an unsupported SNMP Data Type for the CIM property.";static const char _MSG_UNSUPPORTED_SNMP_DATA_TYPE_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_UNSUPPORTED_SNMP_DATA_TYPE";static const char _MSG_ADD_VAR_TO_PDU_FAILED[] = "Snmp Indication Handler failed to add a CIM property \"$0\" to the " "SNMP PDU: \"$1\".";static const char _MSG_ADD_VAR_TO_PDU_FAILED_KEY[] = "Handler.snmpIndicationHandler.snmpDeliverTrap_netsnmp." "_MSG_ADD_VAR_TO_PDU_FAILED";class snmpDeliverTrap_netsnmp : public snmpDeliverTrap{public: void initialize(); void terminate(); void deliverTrap( const String& trapOid, const String& securityName, const String& targetHost, const Uint16& targetHostFormat, const String& otherTargetHostFormat, const Uint32& portNumber, const Uint16& snmpVersion, const String& engineID, const Array<String>& vbOids, const Array<String>& vbTypes, const Array<String>& vbValues);private: // Mutex is needed before a session is created. Sessions created // using the Single API do not interact with other SNMP sessions. Mutex _sessionInitMutex; /** Creates a SNMP session. @param targetHost the target system of a hostname or an IPv4 address to receive a trap @param portNumber the port number to receive a trap @param securityName the human readable community name @param sessionHandle an opaque pointer of the SNMP session @param sessionPtr the SNMP session pointer to its associated struct snmp_session */ void _createSession( const String& targetHost, Uint32 portNumber, const String& securityName, void*& sessionHandle, struct snmp_session*& sessionPtr); /** Creates a SNMP session. @param sessionHandle an opaque pointer of the SNMP session */ void _destroySession(void* sessionHandle); /** Creates a SNMP PDU. @param snmpVersion the SNMP version @param trapOid the trap OID @param sessionPtr the SNMP session pointer @param snmpPdu the SNMP PDU */ void _createPdu( Uint16 snmpVersion, const String& trapOid, struct snmp_session*& sessionPtr, struct snmp_pdu*& snmpPdu); /** Pack the trap information into the PDU. @param trapOid the trap OID @param snmpPdu the SNMP PDU */ void _packTrapInfoIntoPdu( const String& trapOid, snmp_pdu* snmpPdu); /** Pack CIM properties into PDU. @param vbOids the array of CIM property OIDs @param vbTypes the array of CIM property data types @param vbValues the array of CIM property values @param snmpPdu the SNMP PDU */ void _packOidsIntoPdu( const Array<String>& vbOids, const Array<String>& vbTypes, const Array<String>& vbValues, snmp_pdu* snmpPdu); enum SNMPVersion { _SNMPv1_TRAP = 2, _SNMPv2C_TRAP = 3, _SNMPv2C_INFORM = 4, _SNMPv3_TRAP = 5, _SNMPv3_INFORM = 6 };};PEGASUS_NAMESPACE_END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -