From: Thomas Markwalder Date: Sat, 1 Mar 2014 15:50:21 +0000 (-0500) Subject: [3352] Update b10-dhcp4 to use new D2ClientMgr update direction method X-Git-Tag: kea-eng-20140313~5^2~4 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5351f5e3d01499fb643aeb0146e29bb1d153f333;p=thirdparty%2Fkea.git [3352] Update b10-dhcp4 to use new D2ClientMgr update direction method Updated Dhcpv4Srv to use D2ClientMgr::getUpdateDirections method and adjusted FQDN unit tests to accomodate new client delegation behavior. --- diff --git a/src/bin/dhcp4/dhcp4_srv.cc b/src/bin/dhcp4/dhcp4_srv.cc index dee4e41ea8..0ad2319584 100644 --- a/src/bin/dhcp4/dhcp4_srv.cc +++ b/src/bin/dhcp4/dhcp4_srv.cc @@ -966,8 +966,9 @@ Dhcpv4Srv::assignLease(const Pkt4Ptr& question, Pkt4Ptr& answer) { Option4ClientFqdn>(answer->getOption(DHO_FQDN)); if (fqdn) { hostname = fqdn->getDomainName(); - fqdn_fwd = fqdn->getFlag(Option4ClientFqdn::FLAG_S); - fqdn_rev = !fqdn->getFlag(Option4ClientFqdn::FLAG_N); + CfgMgr::instance().getD2ClientMgr().getUpdateDirections(*fqdn, + fqdn_fwd, + fqdn_rev); } else { opt_hostname = boost::dynamic_pointer_cast (answer->getOption(DHO_HOST_NAME)); diff --git a/src/bin/dhcp4/tests/fqdn_unittest.cc b/src/bin/dhcp4/tests/fqdn_unittest.cc index 9c80e13765..4e72dff0d1 100644 --- a/src/bin/dhcp4/tests/fqdn_unittest.cc +++ b/src/bin/dhcp4/tests/fqdn_unittest.cc @@ -387,15 +387,16 @@ public: // NCRs cannot be sent to the d2_mgr unless updates are enabled. if (d2_mgr_.ddnsEnabled()) { - // There should be an NCR only if response S flag is 1. - /// @todo This logic will need to change if forward and reverse - /// updates are ever controlled independently. - if ((response_flags & Option4ClientFqdn::FLAG_S) == 0) { + // There should be an NCR if response S flag is 1 or N flag is 0. + bool exp_fwd = (response_flags & Option4ClientFqdn::FLAG_S); + bool exp_rev = (!(response_flags & Option4ClientFqdn::FLAG_N)); + if (!exp_fwd && !exp_rev) { ASSERT_EQ(0, d2_mgr_.getQueueSize()); } else { // Verify that there is one NameChangeRequest as expected. ASSERT_EQ(1, d2_mgr_.getQueueSize()); - verifyNameChangeRequest(isc::dhcp_ddns::CHG_ADD, true, true, + verifyNameChangeRequest(isc::dhcp_ddns::CHG_ADD, + exp_rev, exp_fwd, reply->getYiaddr().toText(), "myhost.example.com.", "", // empty DHCID means don't check it @@ -537,13 +538,13 @@ TEST_F(NameDhcpv4SrvTest, overrideNoUpdate) { // // Server should respect client's delegation request and NOT do updates: -// - Response flags should be N = 1, S = 0, O = 0 +// - Response flags should be N = 0, S = 0, O = 0 // - Should not queue any NCRs TEST_F(NameDhcpv4SrvTest, respectClientDelegation) { flagVsConfigScenario(Option4ClientFqdn::FLAG_E, - (Option4ClientFqdn::FLAG_E | - Option4ClientFqdn::FLAG_N)); + Option4ClientFqdn::FLAG_E); + // Option4ClientFqdn::FLAG_N)); } // Tests the following scenario: