From: Marcin Siodelski Date: Wed, 21 Oct 2015 10:47:04 +0000 (+0200) Subject: [3977] Do not generate NCRs for prefix delegation. X-Git-Tag: fdfb_base~1^2~5 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=52f812a86d13a47afe43038a4ada9cbd825243f6;p=thirdparty%2Fkea.git [3977] Do not generate NCRs for prefix delegation. --- diff --git a/src/lib/dhcpsrv/ncr_generator.cc b/src/lib/dhcpsrv/ncr_generator.cc index 4ba96ce7aa..d4cbfe3d1a 100644 --- a/src/lib/dhcpsrv/ncr_generator.cc +++ b/src/lib/dhcpsrv/ncr_generator.cc @@ -101,7 +101,7 @@ void queueNCR(const NameChangeType& chg_type, const Lease4Ptr& lease) { void queueNCR(const NameChangeType& chg_type, const Lease6Ptr& lease) { // DUID is required to generate NCR. - if (lease && lease->duid_) { + if (lease && (lease->type_ != Lease::TYPE_PD) && lease->duid_) { queueNCRCommon(chg_type, lease, *(lease->duid_), Pkt6::makeLabel(lease->duid_, lease->hwaddr_)); } diff --git a/src/lib/dhcpsrv/ncr_generator.h b/src/lib/dhcpsrv/ncr_generator.h index 95f8684dcb..6f71c2a6bc 100644 --- a/src/lib/dhcpsrv/ncr_generator.h +++ b/src/lib/dhcpsrv/ncr_generator.h @@ -40,6 +40,9 @@ void queueNCR(const dhcp_ddns::NameChangeType& chg_type, const Lease4Ptr& lease) /// in the DHCPv6 lease. The DUID is used to compute the DHCID for the name /// change request. /// +/// This function will skip sending the NCR if the lease type is a delegated +/// prefix. +/// /// This function is exception safe. On failure, it logs an error. /// /// @param chg_type Type of the name change request diff --git a/src/lib/dhcpsrv/tests/ncr_generator_unittest.cc b/src/lib/dhcpsrv/tests/ncr_generator_unittest.cc index 11c8e4fdfe..521e232ef9 100644 --- a/src/lib/dhcpsrv/tests/ncr_generator_unittest.cc +++ b/src/lib/dhcpsrv/tests/ncr_generator_unittest.cc @@ -348,6 +348,22 @@ TEST_F(NCRGenerator6Test, wrongHostname) { } } +// Test that NameChangeRequest is not generated if the lease is not an +// address lease, i.e. is a prefix. +TEST_F(NCRGenerator6Test, wrongLeaseType) { + // Change lease type to delegated prefix. + lease_->type_ = Lease::TYPE_PD; + + { + SCOPED_TRACE("case CHG_REMOVE"); + testNoUpdate(CHG_REMOVE, true, true, "myhost.example.org."); + } + { + SCOPED_TRACE("case CHG_ADD"); + testNoUpdate(CHG_ADD, true, true, "myhost.example.org."); + } +} + /// @brief Test fixture class implementation for DHCPv4. class NCRGenerator4Test : public NCRGeneratorTest { public: