version 1.3, 2002/03/14 00:07:48
|
version 1.15, 2006/11/14 18:34:53
|
|
|
//%///////////////////////////////////////////////////////////////////////////// |
//%2006//////////////////////////////////////////////////////////////////////// |
// | // |
// Copyright (c) 2000, 2001 BMC Software, Hewlett Packard, IBM, The Open Group, |
// Copyright (c) 2000, 2001, 2002 BMC Software; Hewlett-Packard Development |
// Tivoli Systems |
// 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 | // Permission is hereby granted, free of charge, to any person obtaining a copy |
// of this software and associated documentation files (the "Software"), to | // of this software and associated documentation files (the "Software"), to |
|
|
// | // |
//============================================================================== | //============================================================================== |
// | // |
// Author: Nitin Upasani, Hewlett-Packard Company (Nitin_Upasani@hp.com) |
|
// |
|
// Modified By: |
|
// |
|
//%///////////////////////////////////////////////////////////////////////////// | //%///////////////////////////////////////////////////////////////////////////// |
| |
#include "sr_conf.h" | #include "sr_conf.h" |
|
|
| |
#include "snmpDeliverTrap.h" | #include "snmpDeliverTrap.h" |
| |
#define _SNMP_FIFO "/var/opt/wbem/wbemagent_fifo" |
|
|
|
PEGASUS_NAMESPACE_BEGIN | PEGASUS_NAMESPACE_BEGIN |
| |
|
// l10n |
|
// lots of hacking to make up these messages |
|
|
|
static const char _MSG_INITSUBAGENT_FAILED[] = |
|
"InitSubagent Failed to initialize"; |
|
static const char _MSG_INITSUBAGENT_FAILED_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate." |
|
"_MSG_INITSUBAGENT_FAILED"; |
|
|
|
static const char _MSG_INVALID_TRAPOID[] = "Invalid trapOid."; |
|
static const char _MSG_INVALID_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate._MSG_INVALID"; |
|
|
|
static const char _MSG_DESTINATION_NOT_FOUND[] = |
|
"Can not find trap destination."; |
|
static const char _MSG_DESTINATION_NOT_FOUND_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate." |
|
"_MSG_DESTINATION_NOT_FOUND"; |
|
|
|
static const char _MSG_TARGETHOSTFORMAT_NOT_SUPPORTED[] = |
|
"Host Name and IPV4 Address are the only supported TargetHostFormat " |
|
"values."; |
|
static const char _MSG_TARGETHOSTFORMAT_NOT_SUPPORTED_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate." |
|
"_MSG_TARGETHOSTFORMAT_NOT_SUPPORTED"; |
|
|
|
static const char _MSG_INVALID_SECURITY_NAME[] = "Invalid SNMP SecurityName."; |
|
static const char _MSG_INVALID_SECURITY_NAME_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate._MSG_INVALID"; |
|
|
|
static const char _MSG_INVALID_OCTET_VALUE[] = |
|
"Invalid octet value in trap destination."; |
|
static const char _MSG_INVALID_OCTET_VALUE_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate." |
|
"_MSG_INVALID_OCTET_VALUE"; |
|
|
|
static const char _MSG_CREATE_OCTET_FAILED[] = |
|
"Creation of empty 4 length OctetString failed."; |
|
static const char _MSG_CREATE_OCTET_FAILED_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate." |
|
"_MSG_CREATE_OCTET_FAILED"; |
|
|
|
static const char _MSG_INVALID_ENTERPRISEOID[] = "Invalid enterpriseOid."; |
|
static const char _MSG_INVALID_ENTERPRISEOID_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate._MSG_INVALID"; |
|
|
|
static const char _MSG_INVALID_PROPERTYOID[] = "Invalid OID of CIM Property."; |
|
static const char _MSG_INVALID_PROPERTYOID_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate." |
|
"_MSG_INVALID_PROPERTYOID"; |
|
|
|
static const char _MSG_INVALID_PROPERTYVALUE[] = |
|
"Invalid value of CIM Property."; |
|
static const char _MSG_INVALID_PROPERTYVALUE_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate." |
|
"_MSG_INVALID_PROPERTY"; |
|
|
|
static const char _MSG_MAKE_VARBIND_FAILED_FOR_OCTET_PRIM_TYPE[] = |
|
"Failed to MakeVarBindWithValue for type OCTET_PRIM_TYPE."; |
|
static const char _MSG_MAKE_VARBIND_FAILED_FOR_OCTET_PRIM_TYPE_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate." |
|
"_MSG_MAKE_FAILED_FOR_OCTET_PRIM_TYPE"; |
|
|
|
static const char _MSG_MAKE_VARBIND_FAILED_FOR_OBJECT_ID_TYPE[] = |
|
"Failed to MakeVarBindWithValue for type OBJECT_ID_TYPE."; |
|
static const char _MSG_MAKE_VARBIND_FAILED_FOR_OBJECT_ID_TYPE_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate." |
|
"_MSG_MAKE_FAILED_FOR_OBJECT_ID_TYPE"; |
|
|
|
static const char _MSG_MAKE_VARBIND_FAILED_FOR_INTEGER_TYPE[] = |
|
"Failed to MakeVarBindWithValue for type INTEGER_TYPE."; |
|
static const char _MSG_MAKE_VARBIND_FAILED_FOR_INTEGER_TYPE_KEY[] = |
|
"Handler.snmpIndicationHandler.snmpDeliverTrap_emanate." |
|
"_MSG_MAKE_FAILED_FOR_INTEGER_TYPE"; |
|
|
|
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_emanate." |
|
"_MSG_VERSION_NOT_SUPPORTED"; |
|
|
class snmpDeliverTrap_emanate : public snmpDeliverTrap | class snmpDeliverTrap_emanate : public snmpDeliverTrap |
{ | { |
public: | public: |
|
|
| |
void initialize(); | void initialize(); |
| |
|
void terminate(); |
|
|
|
/** |
|
Send snmp trap to the target. |
|
@param trapOid snmp trap OID |
|
@param securityName either an SNMPv1 or SNMPv2c community |
|
name or an SNMPv3 user name |
|
@param targetHost address of the trap/infom destination |
|
@param targetHostFormat targetHost format |
|
@param otherTargetHostFormat other target format type |
|
@param portNumber UDP port number to send the trap/inform |
|
@param snmpVersion snmp version and format to use to send |
|
the indication |
|
@param engineID snmp engine ID used to create the SNMPv3 |
|
inform |
|
@param vbOids VarBind OIDs |
|
@param vbTypes VarBind types |
|
@param vbValues VarBind values |
|
*/ |
void deliverTrap( | void deliverTrap( |
const String& trapOid, | const String& trapOid, |
const String& enterprise, |
const String& securityName, |
const String& destination, |
const String& targetHost, |
const String& trapType, |
const Uint16& targetHostFormat, |
Array<String>& vbOids, |
const String& otherTargetHostFormat, |
Array<String>& vbTypes, |
const Uint32& portNumber, |
Array<String>& vbValues); |
const Uint16& snmpVersion, |
|
const String& engineID, |
|
const Array<String>& vbOids, |
|
const Array<String>& vbTypes, |
|
const Array<String>& vbValues); |
|
|
|
private: |
|
char* _getIPAddress(const CString& hostName); |
|
Boolean _isValidOctet(const Uint32& octetValue); |
|
|
|
/** |
|
Values for the TargetHostFormat property of the |
|
PG_IndicationHandlerSNMPMapper class. |
|
*/ |
|
enum TargetHostFormat |
|
{ |
|
_OTHER = 1, |
|
_HOST_NAME = 2, |
|
_IPV4_ADDRESS = 3, |
|
_IPV6_ADDRESS = 4 |
|
}; |
|
|
|
enum SNMPVersion |
|
{ |
|
_SNMPv1_TRAP = 2, |
|
_SNMPv2C_TRAP = 3, |
|
_SNMPv2C_INFORM = 4, |
|
_SNMPv3_TRAP = 5, |
|
_SNMPv3_INFORM = 6 |
|
}; |
}; | }; |
| |
PEGASUS_NAMESPACE_END | PEGASUS_NAMESPACE_END |