diff options
Diffstat (limited to 'ASNMP/asnmp/target.cpp')
-rw-r--r-- | ASNMP/asnmp/target.cpp | 321 |
1 files changed, 321 insertions, 0 deletions
diff --git a/ASNMP/asnmp/target.cpp b/ASNMP/asnmp/target.cpp new file mode 100644 index 00000000000..e5825791c26 --- /dev/null +++ b/ASNMP/asnmp/target.cpp @@ -0,0 +1,321 @@ +/* -*-C++-*- */ +// ============================================================================ +// +// = LIBRARY +// asnmp +// +// = FILENAME +// target.cpp +// +// = DESCRIPTION +// Target class defines target SNMP agents. +// +// = AUTHOR +// Peter E Mellquist +// Michael R MacFaden mrm@cisco.com - rework & ACE port +// ============================================================================ +/*=================================================================== + Copyright (c) 1996 + Hewlett-Packard Company + + ATTENTION: USE OF THIS SOFTWARE IS SUBJECT TO THE FOLLOWING TERMS. + Permission to use, copy, modify, distribute and/or sell this software + and/or its documentation is hereby granted without fee. User agrees + to display the above copyright notice and this license notice in all + copies of the software and any documentation of the software. User + agrees to assume all liability for the use of the software; Hewlett-Packard + makes no representations about the suitability of this software for any + purpose. It is provided "AS-IS without warranty of any kind,either express + or implied. User hereby grants a royalty-free license to any and all + derivatives based upon this software code base. + =====================================================================*/ + +#include "asnmp/target.h" + +//---------------------------------------------------------------------- +//--------[ Class default values ]---------------------- +//---------------------------------------------------------------------- +u_long SnmpTarget::default_timeout_ = DEF_TIMEOUT; +int SnmpTarget::default_retries_ = DEF_RETRIES; +u_long SnmpTarget::default_max_pdu_size_ = DEF_MAX_SNMP_PACKET; +snmp_version SnmpTarget::default_version_ = version1; + +OctetStr UdpTarget::default_rd_community_(READ_COMM_STR); +OctetStr UdpTarget::default_wr_community_(WRITE_COMM_STR); + +//---------------------------------------------------------------------- +//--------[ Abstract SnmpTarget Member Functions ]---------------------- +//---------------------------------------------------------------------- +SnmpTarget::SnmpTarget(): timeout_(default_timeout_), + retries_(default_retries_), validity_(FALSE), version_(default_version_), + max_pdu_size_(default_max_pdu_size_) +{ +} + +// return validity of target +int SnmpTarget::valid() const +{ + return validity_; +} + +// allow destruction of derived classes +SnmpTarget::~SnmpTarget() +{ +} + +// set the timeout +void SnmpTarget::set_timeout( const u_long t) +{ + timeout_ = t; +} + +// change the default timeout +void SnmpTarget::set_default_timeout( const u_long t) +{ + default_timeout_ = t; +} + +// set the retry value +void SnmpTarget::set_retry( const int r) +{ + retries_ = r; +} + +// change the default retries +void SnmpTarget::set_default_retry( const int r) +{ + default_retries_ = r; +} + +void SnmpTarget:: set_max_pdu_size(const u_long max_pdu_sz) +{ + max_pdu_size_ = max_pdu_sz; +} + + +void SnmpTarget::set_default_max_pdu_size(const u_long max_pdu_sz) +{ + default_max_pdu_size_ = max_pdu_sz; +} + +void SnmpTarget::set_version( const snmp_version v) +{ + version_ = v; +} + +void SnmpTarget::set_default_version( const snmp_version v) +{ + default_version_ = v; +} + +const snmp_version SnmpTarget::get_version() const +{ + return version_; +} + +const snmp_version SnmpTarget::get_default_version() const +{ + return default_version_; +} + +u_long SnmpTarget::get_max_pdu_size() const +{ + return max_pdu_size_; +} + +// get the retry value +int SnmpTarget::get_retry() const +{ + return retries_; +} + +// get the retry value +int SnmpTarget::get_default_retry() const +{ + return default_retries_; +} + +// get the timeout +u_long SnmpTarget::get_timeout() const +{ + return timeout_; +} + +SnmpTarget& SnmpTarget::operator=(const SnmpTarget& lhs) +{ + if (this == &lhs) + return *this; + + validity_ = lhs.validity_; + timeout_ = lhs.timeout_; + retries_ = lhs.retries_; + max_pdu_size_ =lhs.max_pdu_size_; + version_ = lhs.version_; + return *this; +} + +int operator==(const SnmpTarget& lhs, const SnmpTarget& rhs) +{ + if (lhs == rhs) + return 1; + + if (lhs.timeout_ != rhs.timeout_) + return 0; + + if (lhs.retries_ != rhs.retries_) + return 0; + + if (lhs.max_pdu_size_ != rhs.max_pdu_size_) + return 0; + + if (lhs.version_ != rhs.version_) + return 0; + + return 1; +} + + +//---------------------------------------------------------------------- +//--------[ IpTarget Member Functions ]---------------------------------- +//---------------------------------------------------------------------- + + +//---------[ UdpTarget::UdpTarget( void) ]---------------------------------- + +UdpTarget::UdpTarget() +{ + validity_ = FALSE; + read_community_ = default_rd_community_; // assign by init fails + write_community_ = default_wr_community_; +} + +UdpTarget::UdpTarget(const UdpAddress& udp) : udp_address_(udp) +{ + if (udp_address_.valid()) + validity_ = TRUE; + read_community_ = default_rd_community_; + write_community_ = default_wr_community_; +} + +// - copy constructor can be synthesised by compiler + +//-----------[ UdpTarget::~UdpTarget() ]-------------------------------- +UdpTarget::~UdpTarget() +{ +} + +//-----------[ UdpTarget::clone() ]-------------------------------- +SnmpTarget * UdpTarget::clone() const +{ + return (SnmpTarget *) new UdpTarget(*this); +} + + +void UdpTarget::set_default_read_community(const OctetStr& rd_community) +{ + default_rd_community_ = rd_community; +} + +void UdpTarget::set_default_write_community(const OctetStr& wr_community) +{ + default_wr_community_ = wr_community; +} + + +// get the read community name as an u_char and len +void UdpTarget::get_read_community( OctetStr& read_community_oct) const +{ + read_community_oct = read_community_; +} + +//---------[ UdpTarget::set_getcommunity ]--------------------------------- +// set the read community name +void UdpTarget::set_read_community( const OctetStr& new_read_community) +{ + read_community_ = new_read_community; +} + +//---------[ UdpTarget::get_writecommunity ]---------------------------- +// get the write community +void UdpTarget::get_write_community( OctetStr &write_community_oct) const +{ + write_community_oct = write_community_; +} + +//-----------[ UdpTarget::set_writecommunity ]--------------------------- +// set the write community +void UdpTarget::set_write_community( const OctetStr& write_community_oct) +{ + write_community_ = write_community_oct; +} + +//------------[ Address& UdpTarget::get_address() ]--------------------- +// get the address +void UdpTarget::get_address( UdpAddress &address) const +{ + address = udp_address_; + return; +} + +//-------------[ UdpTarget::set_address ]-------------------------------- +// set the address +int UdpTarget::set_address( UdpAddress &udp_address) +{ + udp_address_ = udp_address; + if ( udp_address_.valid()) + validity_ = TRUE; + else + validity_ = FALSE; + + return validity_; +} + +// overloaded assignment +UdpTarget& UdpTarget::operator=( const UdpTarget& lhs) +{ + if (this == &lhs) + return *this; + + // assign base part + *((SnmpTarget *) this) = *((SnmpTarget *)&lhs); + + udp_address_ = lhs.udp_address_; + read_community_ = lhs.read_community_; + write_community_ = lhs.write_community_; + validity_ = lhs.validity_; + + return *this; +} + +char *UdpTarget::to_string() +{ + sprintf(output_buffer_,"UdpTarget: [ valid: %d addr: %s rd: %s wr: %s \ +ver: %d, timeout: %d, retries: %d max_pdu_size: %d]", + valid(), udp_address_.to_string(), read_community_.to_string(), + write_community_.to_string(), version_, timeout_, + retries_, max_pdu_size_); + return output_buffer_; +} + +//=============[ int operator == UdpTarget, UdpTarget ]=============== +// equivlence operator overloaded +int operator==( const UdpTarget &lhs,const UdpTarget &rhs) +{ + // need to compare all the members of a UdpTarget + if ( lhs.read_community_ != rhs.read_community_) + return 0; // != + + if ( lhs.write_community_ != rhs.write_community_) + return 0; // != + + if ( lhs.udp_address_ != rhs.udp_address_) + return 0; + + if ( lhs.timeout_ != rhs.timeout_) + return 0; + + if ( lhs.retries_ != rhs.retries_) + return 0; + + return 1; // they are equal +} |