From: Marcin Siodelski Date: Tue, 23 Apr 2019 14:13:13 +0000 (+0200) Subject: [#580,!308] Updated shared networks handling in test DHCP config backends. X-Git-Tag: Kea-1.6.0-beta~194 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=1fd48f5820cde97e34e3f52f7b4440e3e4e2122e;p=thirdparty%2Fkea.git [#580,!308] Updated shared networks handling in test DHCP config backends. --- diff --git a/src/lib/dhcpsrv/testutils/test_config_backend_dhcp4.cc b/src/lib/dhcpsrv/testutils/test_config_backend_dhcp4.cc index 59b576f399..9dc6e2604d 100644 --- a/src/lib/dhcpsrv/testutils/test_config_backend_dhcp4.cc +++ b/src/lib/dhcpsrv/testutils/test_config_backend_dhcp4.cc @@ -367,23 +367,32 @@ uint64_t TestConfigBackendDHCPv4::deleteSharedNetworkSubnets4(const db::ServerSelector& /* server_selector */, const std::string& shared_network_name) { uint64_t cnt = 0; - auto& index = shared_networks_.get(); - auto network_it = index.find(shared_network_name); - if (network_it == index.end()) { - return (cnt); - } - for (auto subnet : *(*network_it)->getAllSubnets()) { - const SubnetID& subnet_id = subnet->getID(); - auto& subnet_index = subnets_.get(); - cnt += subnet_index.erase(subnet_id); + auto& index = subnets_.get(); + for (auto subnet = index.begin(); subnet != index.end(); ++subnet) { + SharedNetwork4Ptr network; + (*subnet)->getSharedNetwork(network); + if (network && (network->getName() == shared_network_name)) { + network->del((*subnet)->getID()); + } + + if ((network && (network->getName() == shared_network_name)) || + ((*subnet)->getSharedNetworkName() == shared_network_name)) { + subnet = index.erase(subnet); + ++cnt; + } } - (*network_it)->delAll(); return (cnt); } uint64_t TestConfigBackendDHCPv4::deleteSharedNetwork4(const db::ServerSelector& /* server_selector */, const std::string& name) { + for (auto subnet = subnets_.begin(); subnet != subnets_.end(); ++subnet) { + if ((*subnet)->getSharedNetworkName() == name) { + (*subnet)->setSharedNetworkName(""); + } + } + auto& index = shared_networks_.get(); auto network_it = index.find(name); if (network_it != index.end()) { diff --git a/src/lib/dhcpsrv/testutils/test_config_backend_dhcp6.cc b/src/lib/dhcpsrv/testutils/test_config_backend_dhcp6.cc index 16ed733ee8..35c456a4a9 100644 --- a/src/lib/dhcpsrv/testutils/test_config_backend_dhcp6.cc +++ b/src/lib/dhcpsrv/testutils/test_config_backend_dhcp6.cc @@ -386,23 +386,32 @@ uint64_t TestConfigBackendDHCPv6::deleteSharedNetworkSubnets6(const db::ServerSelector& /* server_selector */, const std::string& shared_network_name) { uint64_t cnt = 0; - auto& index = shared_networks_.get(); - auto network_it = index.find(shared_network_name); - if (network_it == index.end()) { - return (cnt); - } - for (auto subnet : *(*network_it)->getAllSubnets()) { - const SubnetID& subnet_id = subnet->getID(); - auto& subnet_index = subnets_.get(); - cnt += subnet_index.erase(subnet_id); + auto& index = subnets_.get(); + for (auto subnet = index.begin(); subnet != index.end(); ++subnet) { + SharedNetwork6Ptr network; + (*subnet)->getSharedNetwork(network); + if (network && (network->getName() == shared_network_name)) { + network->del((*subnet)->getID()); + } + + if ((network && (network->getName() == shared_network_name)) || + ((*subnet)->getSharedNetworkName() == shared_network_name)) { + subnet = index.erase(subnet); + ++cnt; + } } - (*network_it)->delAll(); return (cnt); } uint64_t TestConfigBackendDHCPv6::deleteSharedNetwork6(const db::ServerSelector& /* server_selector */, const std::string& name) { + for (auto subnet = subnets_.begin(); subnet != subnets_.end(); ++subnet) { + if ((*subnet)->getSharedNetworkName() == name) { + (*subnet)->setSharedNetworkName(""); + } + } + auto& index = shared_networks_.get(); auto network_it = index.find(name); if (network_it != index.end()) {