Changeset View
Changeset View
Standalone View
Standalone View
src/test/netbase_tests.cpp
Show First 20 Lines • Show All 180 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE(subnet_test) { | ||||
BOOST_CHECK(!ResolveSubNet("").Match(ResolveIP("4.5.6.7"))); | BOOST_CHECK(!ResolveSubNet("").Match(ResolveIP("4.5.6.7"))); | ||||
BOOST_CHECK(!ResolveSubNet("bloop").Match(ResolveIP("0.0.0.0"))); | BOOST_CHECK(!ResolveSubNet("bloop").Match(ResolveIP("0.0.0.0"))); | ||||
BOOST_CHECK(!ResolveSubNet("bloop").Match(ResolveIP("hab"))); | BOOST_CHECK(!ResolveSubNet("bloop").Match(ResolveIP("hab"))); | ||||
// Check valid/invalid | // Check valid/invalid | ||||
BOOST_CHECK(ResolveSubNet("1.2.3.0/0").IsValid()); | BOOST_CHECK(ResolveSubNet("1.2.3.0/0").IsValid()); | ||||
BOOST_CHECK(!ResolveSubNet("1.2.3.0/-1").IsValid()); | BOOST_CHECK(!ResolveSubNet("1.2.3.0/-1").IsValid()); | ||||
BOOST_CHECK(ResolveSubNet("1.2.3.0/32").IsValid()); | BOOST_CHECK(ResolveSubNet("1.2.3.0/32").IsValid()); | ||||
BOOST_CHECK(!ResolveSubNet("1.2.3.0/33").IsValid()); | BOOST_CHECK(!ResolveSubNet("1.2.3.0/33").IsValid()); | ||||
BOOST_CHECK(!ResolveSubNet("1.2.3.0/300").IsValid()); | |||||
BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:8/0").IsValid()); | BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:8/0").IsValid()); | ||||
BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:8/33").IsValid()); | BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:8/33").IsValid()); | ||||
BOOST_CHECK(!ResolveSubNet("1:2:3:4:5:6:7:8/-1").IsValid()); | BOOST_CHECK(!ResolveSubNet("1:2:3:4:5:6:7:8/-1").IsValid()); | ||||
BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:8/128").IsValid()); | BOOST_CHECK(ResolveSubNet("1:2:3:4:5:6:7:8/128").IsValid()); | ||||
BOOST_CHECK(!ResolveSubNet("1:2:3:4:5:6:7:8/129").IsValid()); | BOOST_CHECK(!ResolveSubNet("1:2:3:4:5:6:7:8/129").IsValid()); | ||||
BOOST_CHECK(!ResolveSubNet("fuzzy").IsValid()); | BOOST_CHECK(!ResolveSubNet("fuzzy").IsValid()); | ||||
// CNetAddr constructor test | // CNetAddr constructor test | ||||
Show All 18 Lines | BOOST_AUTO_TEST_CASE(subnet_test) { | ||||
BOOST_CHECK(CSubNet(ResolveIP("1:2:3:4:5:6:7:8")).IsValid()); | BOOST_CHECK(CSubNet(ResolveIP("1:2:3:4:5:6:7:8")).IsValid()); | ||||
BOOST_CHECK(CSubNet(ResolveIP("1:2:3:4:5:6:7:8")) | BOOST_CHECK(CSubNet(ResolveIP("1:2:3:4:5:6:7:8")) | ||||
.Match(ResolveIP("1:2:3:4:5:6:7:8"))); | .Match(ResolveIP("1:2:3:4:5:6:7:8"))); | ||||
BOOST_CHECK(!CSubNet(ResolveIP("1:2:3:4:5:6:7:8")) | BOOST_CHECK(!CSubNet(ResolveIP("1:2:3:4:5:6:7:8")) | ||||
.Match(ResolveIP("1:2:3:4:5:6:7:9"))); | .Match(ResolveIP("1:2:3:4:5:6:7:9"))); | ||||
BOOST_CHECK(CSubNet(ResolveIP("1:2:3:4:5:6:7:8")).ToString() == | BOOST_CHECK(CSubNet(ResolveIP("1:2:3:4:5:6:7:8")).ToString() == | ||||
"1:2:3:4:5:6:7:8/128"); | "1:2:3:4:5:6:7:8/128"); | ||||
// IPv4 address with IPv6 netmask or the other way around. | |||||
BOOST_CHECK(!CSubNet(ResolveIP("1.1.1.1"), ResolveIP("ffff::")).IsValid()); | |||||
BOOST_CHECK(!CSubNet(ResolveIP("::1"), ResolveIP("255.0.0.0")).IsValid()); | |||||
// Can't subnet TOR (or any other non-IPv4 and non-IPv6 network). | |||||
BOOST_CHECK( | |||||
!CSubNet(ResolveIP("5wyqrzbvrdsumnok.onion"), ResolveIP("255.0.0.0")) | |||||
.IsValid()); | |||||
subnet = ResolveSubNet("1.2.3.4/255.255.255.255"); | subnet = ResolveSubNet("1.2.3.4/255.255.255.255"); | ||||
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.4/32"); | BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.4/32"); | ||||
subnet = ResolveSubNet("1.2.3.4/255.255.255.254"); | subnet = ResolveSubNet("1.2.3.4/255.255.255.254"); | ||||
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.4/31"); | BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.4/31"); | ||||
subnet = ResolveSubNet("1.2.3.4/255.255.255.252"); | subnet = ResolveSubNet("1.2.3.4/255.255.255.252"); | ||||
BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.4/30"); | BOOST_CHECK_EQUAL(subnet.ToString(), "1.2.3.4/30"); | ||||
subnet = ResolveSubNet("1.2.3.4/255.255.255.248"); | subnet = ResolveSubNet("1.2.3.4/255.255.255.248"); | ||||
▲ Show 20 Lines • Show All 267 Lines • ▼ Show 20 Lines | BOOST_AUTO_TEST_CASE( | ||||
BOOST_CHECK( | BOOST_CHECK( | ||||
!LookupHost(std::string("127.0.0.1\0example.com\0", 22), addr, false)); | !LookupHost(std::string("127.0.0.1\0example.com\0", 22), addr, false)); | ||||
CSubNet ret; | CSubNet ret; | ||||
BOOST_CHECK(LookupSubNet(std::string("1.2.3.0/24", 10), ret)); | BOOST_CHECK(LookupSubNet(std::string("1.2.3.0/24", 10), ret)); | ||||
BOOST_CHECK(!LookupSubNet(std::string("1.2.3.0/24\0", 11), ret)); | BOOST_CHECK(!LookupSubNet(std::string("1.2.3.0/24\0", 11), ret)); | ||||
BOOST_CHECK(!LookupSubNet(std::string("1.2.3.0/24\0example.com", 22), ret)); | BOOST_CHECK(!LookupSubNet(std::string("1.2.3.0/24\0example.com", 22), ret)); | ||||
BOOST_CHECK( | BOOST_CHECK( | ||||
!LookupSubNet(std::string("1.2.3.0/24\0example.com\0", 23), ret)); | !LookupSubNet(std::string("1.2.3.0/24\0example.com\0", 23), ret)); | ||||
BOOST_CHECK(LookupSubNet(std::string("5wyqrzbvrdsumnok.onion", 22), ret)); | // We only do subnetting for IPv4 and IPv6 | ||||
BOOST_CHECK(!LookupSubNet(std::string("5wyqrzbvrdsumnok.onion", 22), ret)); | |||||
BOOST_CHECK( | BOOST_CHECK( | ||||
!LookupSubNet(std::string("5wyqrzbvrdsumnok.onion\0", 23), ret)); | !LookupSubNet(std::string("5wyqrzbvrdsumnok.onion\0", 23), ret)); | ||||
BOOST_CHECK(!LookupSubNet( | BOOST_CHECK(!LookupSubNet( | ||||
std::string("5wyqrzbvrdsumnok.onion\0example.com", 34), ret)); | std::string("5wyqrzbvrdsumnok.onion\0example.com", 34), ret)); | ||||
BOOST_CHECK(!LookupSubNet( | BOOST_CHECK(!LookupSubNet( | ||||
std::string("5wyqrzbvrdsumnok.onion\0example.com\0", 35), ret)); | std::string("5wyqrzbvrdsumnok.onion\0example.com\0", 35), ret)); | ||||
} | } | ||||
BOOST_AUTO_TEST_SUITE_END() | BOOST_AUTO_TEST_SUITE_END() |