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) {