]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[master] Merge branch 'trac3711'
authorMarcin Siodelski <marcin@isc.org>
Wed, 18 Feb 2015 12:08:43 +0000 (13:08 +0100)
committerMarcin Siodelski <marcin@isc.org>
Wed, 18 Feb 2015 12:08:43 +0000 (13:08 +0100)
Conflicts:
src/lib/asiolink/io_address.h
src/lib/asiolink/tests/io_address_unittest.cc

1  2 
src/lib/asiolink/io_address.h
src/lib/asiolink/tests/io_address_unittest.cc
src/lib/dhcpsrv/alloc_engine.cc
src/lib/dhcpsrv/subnet.cc
src/lib/dhcpsrv/subnet.h
src/lib/dhcpsrv/tests/alloc_engine_utils.h

Simple merge
index b7af7260b074f19e75e4f42d51fe3c7624099072,0fb5d033c2439a160459ad27b8981f261db4c563..4cd8d4926a4ec898688c8242938569348cde73d8
@@@ -218,8 -219,76 +219,82 @@@ TEST(IOAddressTest, accessClassificatio
      EXPECT_TRUE (addr5.isV6Multicast());
  }
  
 +TEST(IOAddressTest, staticAddresses) {
 +    EXPECT_EQ(IOAddress("0.0.0.0"), IOAddress::IPV4_ZERO_ADDRESS());
 +    EXPECT_EQ(IOAddress("255.255.255.255"), IOAddress::IPV4_BCAST_ADDRESS());
 +    EXPECT_EQ(IOAddress("::"), IOAddress::IPV6_ZERO_ADDRESS());
 +}
++
+ // Tests whether address subtraction works correctly.
+ TEST(IOAddressTest, subtract) {
+     IOAddress addr1("192.0.2.12");
+     IOAddress addr2("192.0.2.5");
+     IOAddress addr3("192.0.2.0");
+     IOAddress addr4("0.0.2.1");
+     IOAddress any4("0.0.0.0");
+     IOAddress bcast("255.255.255.255");
+     EXPECT_EQ("0.0.0.7", IOAddress::subtract(addr1, addr2).toText());
+     EXPECT_EQ("0.0.0.12", IOAddress::subtract(addr1, addr3).toText());
+     // Subtracting 0.0.0.0 is like subtracting 0.
+     EXPECT_EQ("192.0.2.12", IOAddress::subtract(addr1, any4).toText());
+     EXPECT_EQ("192.0.2.13", IOAddress::subtract(addr1, bcast).toText());
+     EXPECT_EQ("191.255.255.255", IOAddress::subtract(addr3, addr4).toText());
+     // Let's check if we can subtract greater address from smaller.
+     // This will check if we can "loop"
+     EXPECT_EQ("255.255.255.251", IOAddress::subtract(addr3, addr2).toText());
+     IOAddress addr6("fe80::abcd");
+     IOAddress addr7("fe80::");
+     IOAddress addr8("fe80::1234");
+     IOAddress addr9("2001:db8::face");
+     IOAddress addr10("2001:db8::ffff:ffff:ffff:ffff");
+     IOAddress addr11("::1");
+     IOAddress any6("::");
+     EXPECT_EQ("::abcd", IOAddress::subtract(addr6, addr7).toText());
+     EXPECT_EQ("::9999", IOAddress::subtract(addr6, addr8).toText());
+     EXPECT_EQ("::ffff:ffff:ffff:531", IOAddress::subtract(addr10, addr9).toText());
+     // Subtract with borrow, extreme edition. Need to borrow one bit
+     // 112 times.
+     EXPECT_EQ("fe7f:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
+               IOAddress::subtract(addr7, addr11).toText());
+     // Now check if we can loop beyond :: (:: - ::1 is a lot of F's)
+     EXPECT_EQ("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff",
+               IOAddress::subtract(any6, addr11).toText());
+     // Subtracting :: is like subtracting 0.
+     EXPECT_EQ("2001:db8::face", IOAddress::subtract(addr9, any6).toText());
+     // Let's check if we can subtract greater address from smaller.
+     // This will check if we can "loop"
+     EXPECT_EQ("ffff:ffff:ffff:ffff:ffff:ffff:ffff:edcc",
+               IOAddress::subtract(addr7, addr8).toText());
+     // Inter-family relations are not allowed.
+     EXPECT_THROW(IOAddress::subtract(addr1, addr6), isc::BadValue);
+     EXPECT_THROW(IOAddress::subtract(addr6, addr1), isc::BadValue);
+ }
+ // Test checks whether an address can be increased.
+ TEST(IOAddressTest, increaseAddr) {
+     IOAddress addr1("192.0.2.12");
+     IOAddress any4("0.0.0.0");
+     IOAddress bcast("255.255.255.255");
+     IOAddress addr6("2001:db8::ffff:ffff:ffff:ffff");
+     IOAddress addr11("::1");
+     IOAddress any6("::");
+     IOAddress the_last_one("ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
+     EXPECT_EQ("192.0.2.13", IOAddress::increase(addr1).toText());
+     EXPECT_EQ("0.0.0.1", IOAddress::increase(any4).toText());
+     EXPECT_EQ("0.0.0.0", IOAddress::increase(bcast).toText());
+     EXPECT_EQ("2001:db8:0:1::", IOAddress::increase(addr6).toText());
+     EXPECT_EQ("::2", IOAddress::increase(addr11).toText());
+     EXPECT_EQ("::1", IOAddress::increase(any6).toText());
+     EXPECT_EQ("::", IOAddress::increase(the_last_one).toText());
+ }
Simple merge
Simple merge
Simple merge