1
0
mirror of https://github.com/fwbuilder/fwbuilder synced 2026-03-23 19:57:21 +01:00

fixes #2658 "snmp network discovery creates duplicate address

and network objects"
This commit is contained in:
Vadim Kurland 2011-09-19 15:57:09 -07:00
parent 00f6188390
commit eaf71afcfa
7 changed files with 28 additions and 20 deletions

View File

@ -1,5 +1,8 @@
2011-09-19 Vadim Kurland <vadim@netcitadel.com>
* snmp.cpp (SNMPCrawler::run_impl): fixes #2658 "snmp network
discovery creates duplicate address and network objects"
* ND_ProgressPage.h (class ND_ProgressPage): see #2657 snmp
network discovery crashed if option "Confine scan to network" was
used.

View File

@ -1316,8 +1316,6 @@ void SNMPCrawler::init(const InetAddr &_seed,
queue.clear();
found.clear();
for (set<InetAddrMask*>::iterator i=networks.begin(); i!=networks.end();++i)
delete *i;
networks.clear();
queue[_seed]="";
@ -1577,7 +1575,8 @@ void SNMPCrawler::run_impl(Logger *logger,
// map interfaces with InterfaceData objects.
// This object is destroyed when all InterfaceData
// objects are destroyed. Create a copy.
networks.insert(new InetAddrMask(*addr, *netm));
networks.insert(*net);
}
}
}
@ -1730,8 +1729,7 @@ void SNMPCrawler::run_impl(Logger *logger,
*logger << str;
networks.insert(
new InetAddrMask(j->getDestination(),
j->getNetmask()));
InetAddrMask(j->getDestination(), j->getNetmask()));
nplus++;
}
@ -1827,7 +1825,7 @@ void SNMPCrawler::bacresolve_results(Logger *logger,
}
set<InetAddrMask*> SNMPCrawler::getNetworks()
set<InetAddrMask> SNMPCrawler::getNetworks()
{
return networks;
}

View File

@ -456,7 +456,7 @@ class SNMPCrawler : public BackgroundOp
std::map<InetAddr, std::string> queue;
std::map<InetAddr, CrawlerFind> found;
std::set<InetAddrMask*> networks;
std::set<InetAddrMask> networks;
std::string community;
int snmp_retries ;
long snmp_timeout ;
@ -510,7 +510,7 @@ class SNMPCrawler : public BackgroundOp
const std::vector<InetAddrMask> *include=NULL);
std::map<InetAddr, CrawlerFind> getAllIPs();
std::set<InetAddrMask*> getNetworks();
std::set<InetAddrMask> getNetworks();
virtual void run_impl(Logger *logger,SyncFlag *stop_program)
throw(FWException);

View File

@ -255,8 +255,8 @@ void ND_ProgressPage::crawlerFinished()
if (crawler==NULL) return;
set<InetAddrMask*>::iterator m;
set<InetAddrMask*> discovered_networks = crawler->getNetworks();
set<InetAddrMask>::iterator m;
set<InetAddrMask> discovered_networks = crawler->getNetworks();
map<InetAddr, CrawlerFind> discovered_addresses = crawler->getAllIPs();
logLine(tr("Discovered %1 networks").arg(discovered_networks.size()));
@ -264,25 +264,25 @@ void ND_ProgressPage::crawlerFinished()
for (m=discovered_networks.begin(); m!=discovered_networks.end(); ++m)
{
ObjectDescriptor od;
InetAddrMask *net = *m;
InetAddrMask net = *m;
logLine(QString("network %1").arg(net->toString().c_str()));
logLine(QString("network %1").arg(net.toString().c_str()));
// if address in *m is ipv6, recreate it as Inet6AddrMask and
// use type NetworkIPv6
if (net->getAddressPtr()->isV6())
if (net.getAddressPtr()->isV6())
{
Inet6AddrMask in6am(*(net->getAddressPtr()),
*(net->getNetmaskPtr()));
Inet6AddrMask in6am(*(net.getAddressPtr()),
*(net.getNetmaskPtr()));
od.sysname = in6am.toString(); // different from ipv6
od.type = NetworkIPv6::TYPENAME;
} else
{
od.sysname = net->toString();
od.sysname = net.toString();
od.type = Network::TYPENAME;
}
od.addr = *(net->getAddressPtr());
od.netmask = *(net->getNetmaskPtr());
od.addr = *(net.getAddressPtr());
od.netmask = *(net.getNetmaskPtr());
od.isSelected = false;
networks->push_back(od);

View File

@ -102,7 +102,7 @@ map<InetAddr, CrawlerFind> SNMPCrawlerThread::getAllIPs()
return q->getAllIPs();
}
set<InetAddrMask*> SNMPCrawlerThread::getNetworks()
set<InetAddrMask> SNMPCrawlerThread::getNetworks()
{
return q->getNetworks();
}

View File

@ -72,7 +72,7 @@ public:
void stop();
std::map<libfwbuilder::InetAddr, libfwbuilder::CrawlerFind> getAllIPs();
std::set<libfwbuilder::InetAddrMask*> getNetworks();
std::set<libfwbuilder::InetAddrMask> getNetworks();
signals:
void finished();

View File

@ -142,6 +142,13 @@
</p>
</li>
<li>
<p>
fixes #2658 "snmp network discovery creates duplicate address
and network objects"
</p>
</li>
</ul>