_writeCommunity(writeCommunity),
_uplinkPort(uplinkPort),
_nextUpACL(1),
- _nextDownACL(1)
+ _nextDownACL(1),
+ _aclsCreated(false)
{
}
_uplinkPort(rvalue._uplinkPort),
_nextUpACL(rvalue._nextUpACL),
_nextDownACL(rvalue._nextDownACL),
- _acls(rvalue._acls)
+ _acls(rvalue._acls),
+ _aclsCreated(rvalue._aclsCreated)
{
}
Switch::~Switch()
{
+ if (_aclsCreated) {
+ IpAddress addr(_ip.c_str());
+ if (!addr.valid()) {
+ logger << "Switch::~Switch() - ivalid switch ip: '" << _ip << "'" << std::endl;
+ return;
+ }
+
+ CTarget target(addr, _readCommunity.c_str(), _writeCommunity.c_str());
+ if (!target.valid()) {
+ logger << "Switch::~Switch() - failed to create target for the switch '" << _ip << "'" << std::endl;
+ return;
+ }
+
+ target.set_version(version2c);
+
+ if (!checkProfiles(target)) {
+ logger << "Switch::~Switch() - no upload and download profiles defined for the switch '" << _ip << "'" << std::endl;
+ return;
+ }
+
+ if (!dropACLs(target)) {
+ logger << "Switch::~Switch() - failed to drop ACLs for the switch '" << _ip << "'" << std::endl;
+ return;
+ }
+ }
}
Switch & Switch::operator=(const Switch & rvalue)
_nextUpACL = rvalue._nextUpACL;
_nextDownACL = rvalue._nextDownACL;
_acls = rvalue._acls;
+ _aclsCreated = rvalue._aclsCreated;
return *this;
}
if (!createACLs(target)) {
logger << "Switch::sync() - failed to create ACLs for the switch '" << _ip << "'" << std::endl;
+ return;
}
if (_settings.isDebug()) {
logger << "Switch::createACLs() - failed to invoke Snmp::set for the switch '" << _ip << "'. Error message: '" << Snmp::error_msg(c) << "'" << std::endl;
return false;
}
+ _aclsCreated = true;
}
return true;
}