From: Marcin Siodelski Date: Mon, 20 Mar 2023 17:50:30 +0000 (+0100) Subject: [#2780] Added some parser tests for allocator X-Git-Tag: Kea-2.3.7~68 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=3db0b463baf468bb23dbf2c2c7b021efddea16d1;p=thirdparty%2Fkea.git [#2780] Added some parser tests for allocator --- diff --git a/src/lib/dhcpsrv/parsers/shared_network_parser.cc b/src/lib/dhcpsrv/parsers/shared_network_parser.cc index 0e8dcb42b8..1d6d73c66c 100644 --- a/src/lib/dhcpsrv/parsers/shared_network_parser.cc +++ b/src/lib/dhcpsrv/parsers/shared_network_parser.cc @@ -388,6 +388,9 @@ SharedNetwork6Parser::parse(const data::ConstElementPtr& shared_network_data) { // Parse allocator params. parseAllocatorParams(shared_network_data, network); + if (network->getAllocatorType() == "flq") { + isc_throw(BadValue, "Free Lease Queue allocator is not supported for IPv6 address pools"); + } // Parse prefix delegation allocator params. auto network6 = boost::dynamic_pointer_cast(shared_network); diff --git a/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc b/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc index 1f5287cb4f..ea2f3b3af9 100644 --- a/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc +++ b/src/lib/dhcpsrv/tests/shared_network_parser_unittest.cc @@ -545,6 +545,24 @@ TEST_F(SharedNetwork4ParserTest, parseValidWithEqualRenewRebind) { ASSERT_TRUE(network); } +// Test that FLQ allocator can be used for a shared network. +TEST_F(SharedNetwork4ParserTest, parseFLQAllocator) { + IfaceMgrTestConfig ifmgr(true); + + // Basic configuration for shared network. + std::string config = "{ \"name\": \"lion\", \"allocator\": \"flq\" }"; + ElementPtr config_element = Element::fromJSON(config); + + // Parse configuration specified above. + SharedNetwork4Parser parser; + SharedNetwork4Ptr network; + + ASSERT_NO_THROW(network = parser.parse(config_element)); + ASSERT_TRUE(network); + EXPECT_EQ("flq", network->getAllocatorType().get()); +} + + /// @brief Test fixture class for SharedNetwork6Parser class. class SharedNetwork6ParserTest : public SharedNetworkParserTest { public: @@ -1054,4 +1072,35 @@ TEST_F(SharedNetwork6ParserTest, iface) { EXPECT_EQ("eth1961", network->getIface().get()); } +// Test that the FLQ allocator can't be used for DHCPv6 address assignment. +TEST_F(SharedNetwork6ParserTest, parseFLQAllocatorNA) { + IfaceMgrTestConfig ifmgr(true); + + // Basic configuration for shared network. + std::string config = "{ \"name\": \"lion\", \"allocator\": \"flq\" }"; + ElementPtr config_element = Element::fromJSON(config); + + // Parse configuration specified above. + SharedNetwork6Parser parser; + EXPECT_THROW(parser.parse(config_element), DhcpConfigError); +} + +// Test that FLQ allocator can be used for prefix delegation. +TEST_F(SharedNetwork6ParserTest, parseFLQAllocatorPD) { + IfaceMgrTestConfig ifmgr(true); + + // Basic configuration for shared network. + std::string config = "{ \"name\": \"lion\", \"pd-allocator\": \"flq\" }"; + ElementPtr config_element = Element::fromJSON(config); + + // Parse configuration specified above. + SharedNetwork6Parser parser; + SharedNetwork6Ptr network; + + ASSERT_NO_THROW(network = parser.parse(config_element)); + ASSERT_TRUE(network); + EXPECT_EQ("flq", network->getPdAllocatorType().get()); +} + + } // end of anonymous namespace diff --git a/src/lib/dhcpsrv/tracking_lease_mgr.h b/src/lib/dhcpsrv/tracking_lease_mgr.h index b6f673ccac..31e91c6de8 100644 --- a/src/lib/dhcpsrv/tracking_lease_mgr.h +++ b/src/lib/dhcpsrv/tracking_lease_mgr.h @@ -260,8 +260,6 @@ public: /// @brief Unregisters all callbacks. void unregisterAllCallbacks(); -protected: - /// @brief Checks if any callbacks have been registered. /// /// It is a quick check to be performed by the backends whether or not @@ -270,6 +268,8 @@ protected: /// @return true if any callbacks have been registered. bool hasCallbacks() const; +protected: + /// @brief Converts callback type to string for logging purposes. /// /// @param type callback type.