]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[3352] Update b10-dhcp4 to use new D2ClientMgr update direction method
authorThomas Markwalder <tmark@isc.org>
Sat, 1 Mar 2014 15:50:21 +0000 (10:50 -0500)
committerThomas Markwalder <tmark@isc.org>
Sat, 1 Mar 2014 15:50:21 +0000 (10:50 -0500)
Updated Dhcpv4Srv to use D2ClientMgr::getUpdateDirections method and
adjusted FQDN unit tests to accomodate new client delegation behavior.

src/bin/dhcp4/dhcp4_srv.cc
src/bin/dhcp4/tests/fqdn_unittest.cc

index dee4e41ea80595c3fdfc3ca83fb728cea4a2b262..0ad231958438b10f4583b9bd94e0a4aeee8e10b4 100644 (file)
@@ -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<OptionString>
             (answer->getOption(DHO_HOST_NAME));
index 9c80e1376510e327a362d3d3d75c2ba72ecf740b..4e72dff0d142340fd830bdce60a1f0d02ca31df0 100644 (file)
@@ -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: