Skip to content

Commit

Permalink
[#3469] Corrected MySQL binding offsets for class update
Browse files Browse the repository at this point in the history
/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
  • Loading branch information
tmarkwalder committed Jul 23, 2024
1 parent 5c8d25c commit 2be7010
Show file tree
Hide file tree
Showing 3 changed files with 24 additions and 1 deletion.
7 changes: 7 additions & 0 deletions ChangeLog
Original file line number Diff line number Diff line change
@@ -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
Improved the code handling multiple instances of
the same v4 option according to RFC 3396.
Expand Down
2 changes: 1 addition & 1 deletion src/hooks/dhcp/mysql_cb/mysql_cb_dhcp6.cc
Original file line number Diff line number Diff line change
Expand Up @@ -3118,7 +3118,7 @@ class MySqlConfigBackendDHCPv6Impl : public MySqlConfigBackendImpl {
// If position is not specified, leave the class at the same position.
// Remove the binding which specifies the position and use different
// 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,
in_bindings);
} else {
Expand Down
16 changes: 16 additions & 0 deletions src/lib/dhcpsrv/testutils/generic_cb_dhcp6_unittest.cc
Original file line number Diff line number Diff line change
Expand Up @@ -4450,6 +4450,14 @@ GenericConfigBackendDHCPv6Test::createUpdateClientClass6OptionsTest() {
ASSERT_NO_THROW_LOG(client_class = cbptr_->getClientClass6(ServerSelector::ALL(), class1->getName()));
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.
ASSERT_TRUE(client_class->getCfgOption());
OptionDescriptor returned_opt_new_posix_timezone =
Expand Down Expand Up @@ -4495,6 +4503,14 @@ GenericConfigBackendDHCPv6Test::createUpdateClientClass6OptionsTest() {
ASSERT_NO_THROW_LOG(client_class = cbptr_->getClientClass6(ServerSelector::ALL(), class1->getName()));
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.
ASSERT_TRUE(client_class->getCfgOptionDef());
returned_def_foo = client_class->getCfgOptionDef()->get(test_option_defs_[0]->getOptionSpaceName(),
Expand Down

0 comments on commit 2be7010

Please sign in to comment.