mirror of
https://gitlab.isc.org/isc-projects/kea
synced 2025-09-04 07:55:18 +00:00
[4097a] Added Dhcpv4SrvTest.subnetGlobalPriority
This commit is contained in:
@@ -1843,6 +1843,72 @@ TEST_F(Dhcpv4SrvTest, subnetClassPriority) {
|
|||||||
EXPECT_EQ(0, opt->getUint8());
|
EXPECT_EQ(0, opt->getUint8());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Checks subnet options have the priority over global options
|
||||||
|
TEST_F(Dhcpv4SrvTest, subnetGlobalPriority) {
|
||||||
|
IfaceMgrTestConfig test_config(true);
|
||||||
|
IfaceMgr::instance().openSockets4();
|
||||||
|
|
||||||
|
NakedDhcpv4Srv srv(0);
|
||||||
|
|
||||||
|
// Subnet and global set an ip-forwarding option in the response.
|
||||||
|
string config = "{ \"interfaces-config\": {"
|
||||||
|
" \"interfaces\": [ \"*\" ] }, "
|
||||||
|
"\"rebind-timer\": 2000, "
|
||||||
|
"\"renew-timer\": 1000, "
|
||||||
|
"\"valid-lifetime\": 4000, "
|
||||||
|
"\"subnet4\": [ "
|
||||||
|
"{ \"pools\": [ { \"pool\": \"192.0.2.1 - 192.0.2.100\" } ], "
|
||||||
|
" \"subnet\": \"192.0.2.0/24\", "
|
||||||
|
" \"option-data\": ["
|
||||||
|
" { \"name\": \"ip-forwarding\", "
|
||||||
|
" \"data\": \"false\" } ] } ], "
|
||||||
|
"\"option-data\": ["
|
||||||
|
" { \"name\": \"ip-forwarding\", "
|
||||||
|
" \"data\": \"true\" } ] }";
|
||||||
|
|
||||||
|
ElementPtr json = Element::fromJSON(config);
|
||||||
|
ConstElementPtr status;
|
||||||
|
|
||||||
|
// Configure the server and make sure the config is accepted
|
||||||
|
EXPECT_NO_THROW(status = configureDhcp4Server(srv, json));
|
||||||
|
ASSERT_TRUE(status);
|
||||||
|
comment_ = config::parseAnswer(rcode_, status);
|
||||||
|
ASSERT_EQ(0, rcode_);
|
||||||
|
|
||||||
|
CfgMgr::instance().commit();
|
||||||
|
|
||||||
|
// Create a packet with enough to select the subnet and go through
|
||||||
|
// the DISCOVER processing
|
||||||
|
Pkt4Ptr query(new Pkt4(DHCPDISCOVER, 1234));
|
||||||
|
query->setRemoteAddr(IOAddress("192.0.2.1"));
|
||||||
|
OptionPtr clientid = generateClientId();
|
||||||
|
query->addOption(clientid);
|
||||||
|
query->setIface("eth1");
|
||||||
|
|
||||||
|
// Create and add a PRL option to the query
|
||||||
|
OptionUint8ArrayPtr prl(new OptionUint8Array(Option::V4,
|
||||||
|
DHO_DHCP_PARAMETER_REQUEST_LIST));
|
||||||
|
ASSERT_TRUE(prl);
|
||||||
|
prl->addValue(DHO_IP_FORWARDING);
|
||||||
|
query->addOption(prl);
|
||||||
|
|
||||||
|
// Create and add a host-name option to the query
|
||||||
|
OptionStringPtr hostname(new OptionString(Option::V4, 12, "foo"));
|
||||||
|
ASSERT_TRUE(hostname);
|
||||||
|
query->addOption(hostname);
|
||||||
|
|
||||||
|
// Process the query
|
||||||
|
Pkt4Ptr response = srv.processDiscover(query);
|
||||||
|
|
||||||
|
// Processing should add an ip-forwarding option
|
||||||
|
OptionPtr opt = response->getOption(DHO_IP_FORWARDING);
|
||||||
|
ASSERT_TRUE(opt);
|
||||||
|
ASSERT_GT(opt->len(), opt->getHeaderLen());
|
||||||
|
// Global sets the value to true/1, subnet to false/0
|
||||||
|
// Here subnet has the priority
|
||||||
|
EXPECT_EQ(0, opt->getUint8());
|
||||||
|
}
|
||||||
|
|
||||||
// Checks class options have the priority over global options
|
// Checks class options have the priority over global options
|
||||||
TEST_F(Dhcpv4SrvTest, classGlobalPriority) {
|
TEST_F(Dhcpv4SrvTest, classGlobalPriority) {
|
||||||
IfaceMgrTestConfig test_config(true);
|
IfaceMgrTestConfig test_config(true);
|
||||||
|
Reference in New Issue
Block a user