From: Tomek Mrugalski Date: Fri, 11 Oct 2013 18:17:19 +0000 (+0200) Subject: [3191] Unit-tests for siaddr configuration X-Git-Tag: bind10-1.2.0beta1-release~102^2~59^2~5 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=f296e302ed073dadc5b03bc4edaff5a7da07376a;p=thirdparty%2Fkea.git [3191] Unit-tests for siaddr configuration --- diff --git a/src/bin/dhcp4/tests/dhcp4_srv_unittest.cc b/src/bin/dhcp4/tests/dhcp4_srv_unittest.cc index 3f2da84f9b..409509be8f 100644 --- a/src/bin/dhcp4/tests/dhcp4_srv_unittest.cc +++ b/src/bin/dhcp4/tests/dhcp4_srv_unittest.cc @@ -1293,6 +1293,52 @@ TEST_F(Dhcpv4SrvTest, unpackOptions) { EXPECT_EQ(0x0, option_bar->getValue()); } +// Checks whether the server uses default (0.0.0.0) siaddr value, unless +// explicitly specified +TEST_F(Dhcpv4SrvTest, siaddrDefault) { + boost::scoped_ptr srv; + ASSERT_NO_THROW(srv.reset(new NakedDhcpv4Srv(0))); + IOAddress hint("192.0.2.107"); + + Pkt4Ptr dis = Pkt4Ptr(new Pkt4(DHCPDISCOVER, 1234)); + dis->setRemoteAddr(IOAddress("192.0.2.1")); + OptionPtr clientid = generateClientId(); + dis->addOption(clientid); + dis->setYiaddr(hint); + + // Pass it to the server and get an offer + Pkt4Ptr offer = srv->processDiscover(dis); + ASSERT_TRUE(offer); + + // Check if we get response at all + checkResponse(offer, DHCPOFFER, 1234); + + // Verify that it is 0.0.0.0 + EXPECT_EQ("0.0.0.0", offer->getSiaddr().toText()); +} + +// Checks whether the server uses specified siaddr value +TEST_F(Dhcpv4SrvTest, siaddr) { + boost::scoped_ptr srv; + ASSERT_NO_THROW(srv.reset(new NakedDhcpv4Srv(0))); + subnet_->setSiaddr(IOAddress("192.0.2.123")); + + Pkt4Ptr dis = Pkt4Ptr(new Pkt4(DHCPDISCOVER, 1234)); + dis->setRemoteAddr(IOAddress("192.0.2.1")); + OptionPtr clientid = generateClientId(); + dis->addOption(clientid); + + // Pass it to the server and get an offer + Pkt4Ptr offer = srv->processDiscover(dis); + ASSERT_TRUE(offer); + + // Check if we get response at all + checkResponse(offer, DHCPOFFER, 1234); + + // Verify that its value is proper + EXPECT_EQ("192.0.2.123", offer->getSiaddr().toText()); +} + // a dummy MAC address const uint8_t dummyMacAddr[] = {0, 1, 2, 3, 4, 5};