2
0
mirror of https://gitlab.isc.org/isc-projects/kea synced 2025-09-01 06:25:34 +00:00

[#3469] Corrected MySQL binding offsets for class update

/src/hooks/dhcp/mysql_cb/mysql_cb_dhcp6.cc
    MySqlConfigBackendDHCPv6Impl::createUpdateClientClass6()
     - corrected binding offsets

/src/lib/dhcpsrv/testutils/generic_cb_dhcp6_unittest.cc
    GenericConfigBackendDHCPv6Test::createUpdateClientClass6OptionsTest()
    - added lifetime member checks
This commit is contained in:
Thomas Markwalder
2024-07-23 09:23:20 -04:00
parent 5c8d25cb17
commit 2be7010d22
3 changed files with 24 additions and 1 deletions

View File

@@ -1,3 +1,10 @@
2267. [bug] tmark
Corrected an issue in MySQL config back end that
causes preferred life time values to be overwritten
when updating client classes via remote-set-class6.
command.
(Gitlab #3469)
2266. [bug] fdupont 2266. [bug] fdupont
Improved the code handling multiple instances of Improved the code handling multiple instances of
the same v4 option according to RFC 3396. the same v4 option according to RFC 3396.

View File

@@ -3118,7 +3118,7 @@ public:
// If position is not specified, leave the class at the same position. // If position is not specified, leave the class at the same position.
// Remove the binding which specifies the position and use different // Remove the binding which specifies the position and use different
// query. // query.
in_bindings.erase(in_bindings.begin() + 10, in_bindings.begin() + 11); in_bindings.erase(in_bindings.begin() + 7, in_bindings.begin() + 8);
conn_.updateDeleteQuery(MySqlConfigBackendDHCPv6Impl::UPDATE_CLIENT_CLASS6_SAME_POSITION, conn_.updateDeleteQuery(MySqlConfigBackendDHCPv6Impl::UPDATE_CLIENT_CLASS6_SAME_POSITION,
in_bindings); in_bindings);
} else { } else {

View File

@@ -4450,6 +4450,14 @@ GenericConfigBackendDHCPv6Test::createUpdateClientClass6OptionsTest() {
ASSERT_NO_THROW_LOG(client_class = cbptr_->getClientClass6(ServerSelector::ALL(), class1->getName())); ASSERT_NO_THROW_LOG(client_class = cbptr_->getClientClass6(ServerSelector::ALL(), class1->getName()));
ASSERT_TRUE(client_class); ASSERT_TRUE(client_class);
// Verify lifetime values.
EXPECT_EQ(30, client_class->getValid().getMin());
EXPECT_EQ(60, client_class->getValid().get());
EXPECT_EQ(90, client_class->getValid().getMax());
EXPECT_EQ(25, client_class->getPreferred().getMin());
EXPECT_EQ(55, client_class->getPreferred().get());
EXPECT_EQ(85, client_class->getPreferred().getMax());
// Validate options belonging to the class. // Validate options belonging to the class.
ASSERT_TRUE(client_class->getCfgOption()); ASSERT_TRUE(client_class->getCfgOption());
OptionDescriptor returned_opt_new_posix_timezone = OptionDescriptor returned_opt_new_posix_timezone =
@@ -4495,6 +4503,14 @@ GenericConfigBackendDHCPv6Test::createUpdateClientClass6OptionsTest() {
ASSERT_NO_THROW_LOG(client_class = cbptr_->getClientClass6(ServerSelector::ALL(), class1->getName())); ASSERT_NO_THROW_LOG(client_class = cbptr_->getClientClass6(ServerSelector::ALL(), class1->getName()));
ASSERT_TRUE(client_class); ASSERT_TRUE(client_class);
// Re-check lifetime values. This ensure bindings line up.
EXPECT_EQ(30, client_class->getValid().getMin());
EXPECT_EQ(60, client_class->getValid().get());
EXPECT_EQ(90, client_class->getValid().getMax());
EXPECT_EQ(25, client_class->getPreferred().getMin());
EXPECT_EQ(55, client_class->getPreferred().get());
EXPECT_EQ(85, client_class->getPreferred().getMax());
// Ensure that the first option definition is gone. // Ensure that the first option definition is gone.
ASSERT_TRUE(client_class->getCfgOptionDef()); ASSERT_TRUE(client_class->getCfgOptionDef());
returned_def_foo = client_class->getCfgOptionDef()->get(test_option_defs_[0]->getOptionSpaceName(), returned_def_foo = client_class->getCfgOptionDef()->get(test_option_defs_[0]->getOptionSpaceName(),