]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[#2725] disable strict prefixlen checks in ctrs
authorRazvan Becheriu <razvan@isc.org>
Thu, 29 Jun 2023 11:56:19 +0000 (14:56 +0300)
committerRazvan Becheriu <razvan@isc.org>
Thu, 29 Jun 2023 17:54:14 +0000 (20:54 +0300)
src/lib/dhcpsrv/host.cc
src/lib/dhcpsrv/lease.cc
src/lib/dhcpsrv/tests/host_unittest.cc
src/lib/dhcpsrv/tests/lease_unittest.cc

index 0f9c4212efa2bd57b7093bfa5ce84b937fcf9f71..458d100810b85a8ce5d46a8818ece0fc5c6c23a8 100644 (file)
@@ -106,7 +106,9 @@ IPv6Resrv::set(const Type& type, const asiolink::IOAddress& prefix,
         isc_throw(isc::BadValue, "invalid prefix length '"
                   << static_cast<int>(prefix_len)
                   << "' for reserved IPv6 address, expected 128");
-    } else if ((type == TYPE_PD) && (prefix_len != 128)) {
+    }
+    /* uncomment if strict prefix and prefix length is required. see #2943
+    else if ((type == TYPE_PD) && (prefix_len != 128)) {
         IOAddress first_address = firstAddrInPrefix(prefix, prefix_len);
         if (first_address != prefix) {
             isc_throw(BadValue, "Invalid host address boundaries: " << prefix
@@ -114,6 +116,7 @@ IPv6Resrv::set(const Type& type, const asiolink::IOAddress& prefix,
                       << "/" << static_cast<uint32_t>(prefix_len));
         }
     }
+    */
 
     type_ = type;
     prefix_ = prefix;
index 375a6fc032064ab8d534826d6b2b791a216158a1..6dfeaaa2deee0a31c791393ed4388acf63f8f9fc 100644 (file)
@@ -461,7 +461,9 @@ Lease6::Lease6(Lease::Type type, const isc::asiolink::IOAddress& addr,
     if (prefixlen != 128) {
         if (type != Lease::TYPE_PD) {
             isc_throw(BadValue, "prefixlen must be 128 for non prefix type");
-        } else {
+        }
+        /* uncomment if strict prefix and prefix length is required. see #2943
+        else {
             IOAddress first_address = firstAddrInPrefix(addr, prefixlen);
             if (first_address != addr) {
                 isc_throw(BadValue, "Invalid lease address boundaries: " << addr
@@ -469,6 +471,7 @@ Lease6::Lease6(Lease::Type type, const isc::asiolink::IOAddress& addr,
                           << "/" << static_cast<uint32_t>(prefixlen));
             }
         }
+        */
     }
 
     cltt_ = time(NULL);
@@ -493,7 +496,9 @@ Lease6::Lease6(Lease::Type type, const isc::asiolink::IOAddress& addr,
     if (prefixlen != 128) {
         if (type != Lease::TYPE_PD) {
             isc_throw(BadValue, "prefixlen must be 128 for non prefix type");
-        } else {
+        }
+        /* uncomment if strict prefix and prefix length is required. see #2943
+        else {
             IOAddress first_address = firstAddrInPrefix(addr, prefixlen);
             if (first_address != addr) {
                 isc_throw(BadValue, "Invalid lease address boundaries: " << addr
@@ -501,6 +506,7 @@ Lease6::Lease6(Lease::Type type, const isc::asiolink::IOAddress& addr,
                           << "/" << static_cast<uint32_t>(prefixlen));
             }
         }
+        */
     }
 
     cltt_ = time(NULL);
index 042e7de2440bd8df8e8cea0837687c9dfe579d77..170d9b3eb3109ea910bff531c05ecae8ebeadac4 100644 (file)
@@ -86,13 +86,14 @@ TEST(IPv6ResrvTest, constructiorInvalidPrefixLength) {
     EXPECT_THROW_MSG(IPv6Resrv(IPv6Resrv::TYPE_NA,
                                IOAddress("2001:db8:1::"), 64),
                      isc::BadValue, expected);
-
+    /* uncomment if strict prefix and prefix length is required. see #2943
     // Check for extra specified bits in prefix.
     expected = "Invalid host address boundaries: 2001:db8:1:: is not the first "
             "address in prefix: 2001:db8::/32";
     EXPECT_THROW_MSG(IPv6Resrv(IPv6Resrv::TYPE_PD,
                                IOAddress("2001:db8:1::"), 32),
                      isc::BadValue, expected);
+    */
 }
 
 // This test verifies that it is possible to modify prefix and its
@@ -123,13 +124,14 @@ TEST(IPv6ResrvTest, setPrefix) {
     EXPECT_THROW_MSG(resrv.set(IPv6Resrv::TYPE_PD,
                                IOAddress("2001:db8:1::"), 129),
                      isc::BadValue, expected);
-
+    /* uncomment if strict prefix and prefix length is required. see #2943
     // Check for extra specified bits in prefix.
     expected = "Invalid host address boundaries: 2001:db8:1:: is not the first "
             "address in prefix: 2001:db8::/32";
     EXPECT_THROW_MSG(resrv.set(IPv6Resrv::TYPE_PD,
                                IOAddress("2001:db8:1::"), 32),
                      isc::BadValue, expected);
+    */
 }
 
 // This test checks that the equality operators work fine.
index a3cfb866156688e63c657b0fe4947ffa8438d006..7608d40f4cefaaa6ec0093c6ed527dc0eb76a707 100644 (file)
@@ -657,6 +657,7 @@ TEST(Lease6Test, constructorDefault) {
                                              subnet_id, true, true, "", HWAddrPtr())),
                      BadValue, "DUID is mandatory for an IPv6 lease");
 
+    /* uncomment if strict prefix and prefix length is required. see #2943
     // Lease6 must have a valid prefix and prefix length.
     addr = IOAddress(ADDRESS[5]);
     EXPECT_THROW_MSG(lease2.reset(new Lease6(Lease::TYPE_PD, addr,
@@ -670,6 +671,7 @@ TEST(Lease6Test, constructorDefault) {
                                              subnet_id, true, true, "", HWAddrPtr(), 16)),
                      BadValue, "Invalid lease address boundaries: 8000::1 is not "
                                "the first address in prefix: 8000::/16");
+    */
 
     // Lease6 must have a prefixlen set to 128 for non prefix type.
     addr = IOAddress(ADDRESS[4]);