Commit 2f3d1fe8 authored by Thomas Markwalder's avatar Thomas Markwalder
Browse files

[2784] Added logic to test_control.cc to check for a mismatch

between the commnd line arguments for ip version and server.
Added test_control unit tests to verify mismatch detection.
parent 459cdc4a
......@@ -594,17 +594,29 @@ TestControl::openSocket() const {
uint16_t port = options.getLocalPort();
uint8_t family = AF_INET;
int sock = 0;
if (options.getIpVersion() == 6) {
family = AF_INET6;
}
IOAddress remoteaddr(servername);
// check for mismatch between ip option and server
if (family != remoteaddr.getFamily())
{
isc_throw(InvalidParameter,
"Values for Ip version: " << (unsigned int)options.getIpVersion()
<< " and Server:" << servername << " are mismatched.");
}
if (port == 0) {
if (options.getIpVersion() == 6) {
if (family == AF_INET6) {
port = DHCP6_CLIENT_PORT;
} else if (options.getIpVersion() == 4) {
port = 67; // TODO: find out why port 68 is wrong here.
}
}
if (options.getIpVersion() == 6) {
family = AF_INET6;
}
// Local name is specified along with '-l' option.
// It may point to interface name or local address.
if (!localname.empty()) {
......
......@@ -672,6 +672,18 @@ TEST_F(TestControlTest, GenerateDuid) {
testDuid();
}
TEST_F(TestControlTest, MisMatchVerionServer) {
NakedTestControl tc;
// make sure we catch -6 paired with v4 address
ASSERT_NO_THROW(processCmdLine("perfdhcp -l 127.0.0.1 -6 192.168.1.1"));
EXPECT_THROW(tc.openSocket(), isc::InvalidParameter);
// make sure we catch -4 paired with v6 address
ASSERT_NO_THROW(processCmdLine("perfdhcp -l 127.0.0.1 -4 ff02::1:2"));
EXPECT_THROW(tc.openSocket(), isc::InvalidParameter);
}
TEST_F(TestControlTest, GenerateMacAddress) {
// Simulate one client only. Always the same MAC address will be
// generated.
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment