if (t==IP)
{
- if(!inet_aton(ip.c_str(),&ia_ip1))
+ if(!inet_pton(AF_INET, ip.c_str(),&ia_ip1))
throw runtime_error("invalid IP given: "+ip);
this->ip=ia_ip1.s_addr;
}
else if (t==NETWORK)
{
- // TODO: Better IP checks: "16" != "0.0.0.16"
- if(!inet_aton(ip.c_str(),&ia_ip1))
+ if(!inet_pton(AF_INET,ip.c_str(),&ia_ip1))
throw runtime_error("invalid IP given: "+ip);
// Check if mask is in cidr notation
ia_ip2.s_addr = calc_netmask_from_cidr(calc_mask);
} else
- if (!inet_aton(mask_or_end.c_str(),&ia_ip2))
+ if (!inet_pton(AF_INET,mask_or_end.c_str(),&ia_ip2))
throw runtime_error("invalid IP given: "+mask_or_end);
this->ip=ia_ip1.s_addr;
}
else if (t==RANGE)
{
- if(!inet_aton(ip.c_str(),&ia_ip1))
+ if(!inet_pton(AF_INET,ip.c_str(),&ia_ip1))
throw runtime_error("invalid IP given: "+ip);
- if(!inet_aton(mask_or_end.c_str(),&ia_ip2))
+ if(!inet_pton(AF_INET,mask_or_end.c_str(),&ia_ip2))
throw runtime_error("invalid IP given: "+mask_or_end);
this->ip=ia_ip1.s_addr;
{
struct in_addr ip_adr;
- if (inet_aton(iporname.c_str(),&ip_adr) != 0)
+ if (inet_pton(AF_INET, iporname.c_str(),&ip_adr) != 0)
{
// is already a ip
return iporname;
BOOST_CHECK_EQUAL("192.168.1.254", test.resolve_ip("192.168.1.254"));
}
+BOOST_AUTO_TEST_CASE(TestValidIP1)
+{
+ std::string test_string = "1.2.3.4";
+ IP_RANGE test(ip_type::IP, test_string);
+
+ BOOST_CHECK_EQUAL(test_string, test.to_string());
+}
+
+BOOST_AUTO_TEST_CASE(TestValidIP2)
+{
+ std::string test_string = "0.0.0.0";
+ IP_RANGE test(ip_type::IP, test_string);
+
+ BOOST_CHECK_EQUAL(test_string, test.to_string());
+}
+
+BOOST_AUTO_TEST_CASE(TestInvalidIP1)
+{
+ std::string test_string="1.2";
+
+ BOOST_REQUIRE_THROW(IP_RANGE(ip_type::IP, test_string),std::runtime_error);
+}
+
+BOOST_AUTO_TEST_CASE(TestInvalidIP2)
+{
+ std::string test_string="1.02.3.4";
+
+ BOOST_REQUIRE_THROW(IP_RANGE(ip_type::IP, test_string),std::runtime_error);
+}
+
+
BOOST_AUTO_TEST_SUITE_END()