]> git.ipfire.org Git - thirdparty/kea.git/commitdiff
[3539] Added unit test for use of explicit IPv4 address on interface.
authorMarcin Siodelski <marcin@isc.org>
Thu, 18 Dec 2014 10:03:40 +0000 (11:03 +0100)
committerMarcin Siodelski <marcin@isc.org>
Thu, 18 Dec 2014 10:03:40 +0000 (11:03 +0100)
src/bin/dhcp4/tests/config_parser_unittest.cc

index ead42ecaa1ac940e9d1851caf2fd494678eee70f..fe208ad13a1de68eb9a1cc0ae7e39571c0ce128a 100644 (file)
@@ -3002,6 +3002,42 @@ TEST_F(Dhcp4ParserTest, allInterfaces) {
     ASSERT_TRUE(test_config.socketOpen("eth1", AF_INET));
 }
 
+// This test verifies that it is possible to select subset of interfaces
+// and addresses.
+TEST_F(Dhcp4ParserTest, selectedInterfacesAndAddresses) {
+    IfaceMgrTestConfig test_config(true);
+
+    ConstElementPtr x;
+    string config = "{ \"interfaces\": [ \"eth0/10.0.0.1\", \"eth1/192.0.2.3\" ],"
+        "\"rebind-timer\": 2000, "
+        "\"renew-timer\": 1000, "
+        "\"valid-lifetime\": 4000 }";
+
+    ElementPtr json = Element::fromJSON(config);
+
+    ConstElementPtr status;
+
+    // Make sure the config manager is clean and there is no hanging
+    // interface configuration.
+    ASSERT_FALSE(test_config.socketOpen("eth0", "10.0.0.1"));
+    ASSERT_FALSE(test_config.socketOpen("eth1", "192.0.2.3"));
+    ASSERT_FALSE(test_config.socketOpen("eth1", "192.0.2.5"));
+
+    // Apply configuration.
+    EXPECT_NO_THROW(status = configureDhcp4Server(*srv_, json));
+    ASSERT_TRUE(status);
+    checkResult(status, 0);
+
+    CfgMgr::instance().getStagingCfg()->
+        getCfgIface().openSockets(AF_INET, 10000);
+
+    // eth0 and eth1 were explicitly selected. eth2 was not.
+    EXPECT_TRUE(test_config.socketOpen("eth0", "10.0.0.1"));
+    EXPECT_TRUE(test_config.socketOpen("eth1", "192.0.2.3"));
+    EXPECT_FALSE(test_config.socketOpen("eth1", "192.0.2.5"));
+}
+
+
 // This test checks the ability of the server to parse a configuration
 // containing a full, valid dhcp-ddns (D2ClientConfig) entry.
 TEST_F(Dhcp4ParserTest, d2ClientConfig) {