18#include <boost/test/unit_test.hpp>
20using namespace std::literals;
75 BOOST_CHECK(
ResolveIP(
"pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion").IsTor());
86bool static TestSplitHost(
const std::string& test,
const std::string& host, uint16_t port)
91 return hostOut == host && port == portOut;
113bool static TestParse(std::string src, std::string canon)
221 ResolveIP(
"pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion")};
228 !subnet.
Match(
ResolveIP(
"kpgvmscirrdqpekbqjsvw5teanhatztpp2gl6eee4zkowvwfxwenqaid.onion")));
301 subnet =
ResolveSubNet(
"1:2:3:4:5:6:7:8/ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff");
303 subnet =
ResolveSubNet(
"1:2:3:4:5:6:7:8/ffff:0000:0000:0000:0000:0000:0000:0000");
305 subnet =
ResolveSubNet(
"1:2:3:4:5:6:7:8/0000:0000:0000:0000:0000:0000:0000:0000");
312 subnet =
ResolveSubNet(
"1:2:3:4:5:6:7:8/ffff:ffff:ffff:fffe:ffff:ffff:ffff:ff0f");
318 std::vector<bool> asmap;
326 BOOST_CHECK(
ResolveIP(
"2002:102:304:9999:9999:9999:9999:9999").GetGroup(asmap) == std::vector<unsigned char>({(
unsigned char)
NET_IPV4, 1, 2}));
327 BOOST_CHECK(
ResolveIP(
"2001:0:9999:9999:9999:9999:FEFD:FCFB").GetGroup(asmap) == std::vector<unsigned char>({(
unsigned char)
NET_IPV4, 1, 2}));
328 BOOST_CHECK(
ResolveIP(
"2001:470:abcd:9999:9999:9999:9999:9999").GetGroup(asmap) == std::vector<unsigned char>({(
unsigned char)
NET_IPV6, 32, 1, 4, 112, 175}));
329 BOOST_CHECK(
ResolveIP(
"2001:2001:9999:9999:9999:9999:9999:9999").GetGroup(asmap) == std::vector<unsigned char>({(
unsigned char)
NET_IPV6, 32, 1, 32, 1}));
332 std::vector<unsigned char> internal_group = {
NET_INTERNAL, 0x12, 0x92, 0x94, 0x00, 0xeb, 0x46, 0x07, 0xc4, 0xac, 0x07};
364 BOOST_CHECK(
error.original.find(
"Cannot resolve -whitebind address") != std::string::npos);
366 BOOST_CHECK(
error.original.find(
"Need to specify a port with -whitebind") != std::string::npos);
432 BOOST_CHECK(
error.original.find(
"Invalid P2P permission") != std::string::npos);
436 BOOST_CHECK(
error.original.find(
"Invalid netmask specified in -whitelist") != std::string::npos);
451 BOOST_CHECK(std::find(strings.begin(), strings.end(),
"bloomfilter") != strings.end());
452 BOOST_CHECK(std::find(strings.begin(), strings.end(),
"forcerelay") != strings.end());
453 BOOST_CHECK(std::find(strings.begin(), strings.end(),
"relay") != strings.end());
454 BOOST_CHECK(std::find(strings.begin(), strings.end(),
"noban") != strings.end());
455 BOOST_CHECK(std::find(strings.begin(), strings.end(),
"mempool") != strings.end());
456 BOOST_CHECK(std::find(strings.begin(), strings.end(),
"download") != strings.end());
457 BOOST_CHECK(std::find(strings.begin(), strings.end(),
"addr") != strings.end());
474 BOOST_CHECK(!
LookupSubNet(
"pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion\0example.com"s, ret));
475 BOOST_CHECK(!
LookupSubNet(
"pg6mmjiyjmcrsslvykfwnntlaru7p5svn6y2ymmju6nubxndf4pscryd.onion\0example.com\0"s, ret));
506 "00000000000000000000000000000001"
511 "00000000000000000000000000000001"
516 "00000000000000000000000000000001"
528 "00000000000000000000000000000001"
535 "00000000000000000000000000000001"
542 "00000000000000000000000000000001"
556 std::vector<CAddress> addresses_unserialized;
558 s >> addresses_unserialized;
573 std::vector<CAddress> addresses_unserialized;
575 s >> addresses_unserialized;
A CService with information about it as peer.
Double ended buffer combining vector and stream-like interfaces.
bool SetInternal(const std::string &name)
Create an "internal" address that represents a name or FQDN.
A combination of a network address (CNetAddr) and a (TCP) port.
std::string ToString() const
std::string ToString() const
bool Match(const CNetAddr &addr) const
NetPermissionFlags m_flags
static void AddFlag(NetPermissionFlags &flags, NetPermissionFlags f)
static void ClearFlag(NetPermissionFlags &flags, NetPermissionFlags f)
ClearFlag is only called with f == NetPermissionFlags::Implicit.
static std::vector< std::string > ToStrings(NetPermissionFlags flags)
static bool HasFlag(NetPermissionFlags flags, NetPermissionFlags f)
static bool TryParse(const std::string &str, NetWhitebindPermissions &output, bilingual_str &error)
static bool TryParse(const std::string &str, NetWhitelistPermissions &output, bilingual_str &error)
BOOST_AUTO_TEST_SUITE_END()
static CService ip(uint32_t i)
static const std::string addr1
static const std::string addr2
bool IsLocal(const CService &addr)
check whether a given address is potentially local
static constexpr int ADDRV2_FORMAT
A flag that is ORed into the protocol version to designate that addresses should be serialized in (un...
@ NET_ONION
TOR (v2 or v3)
@ NET_UNROUTABLE
Addresses from these networks are not publicly routable on the global Internet.
@ NET_INTERNAL
A set of addresses that represent the hash of a string or FQDN.
bool LookupSubNet(const std::string &strSubnet, CSubNet &ret, DNSLookupFn dns_lookup_function)
Parse and resolve a specified subnet string into the appropriate internal representation.
enum Network ParseNetwork(const std::string &net_in)
CService LookupNumeric(const std::string &name, uint16_t portDefault, DNSLookupFn dns_lookup_function)
Resolve a service string with a numeric IP to its first corresponding service.
bool LookupHost(const std::string &name, std::vector< CNetAddr > &vIP, unsigned int nMaxSolutions, bool fAllowLookup, DNSLookupFn dns_lookup_function)
Resolve a host string to its corresponding network addresses.
static const std::vector< CAddress > fixture_addresses({ CAddress(CService(CNetAddr(in6_addr(IN6ADDR_LOOPBACK_INIT)), 0), NODE_NONE, 0x4966bc61U), CAddress(CService(CNetAddr(in6_addr(IN6ADDR_LOOPBACK_INIT)), 0x00f1), NODE_NETWORK, 0x83766279U), CAddress(CService(CNetAddr(in6_addr(IN6ADDR_LOOPBACK_INIT)), 0xf1f2), static_cast< ServiceFlags >(NODE_WITNESS|NODE_COMPACT_FILTERS|NODE_NETWORK_LIMITED), 0xffffffffU) })
static constexpr const char * stream_addrv1_hex
static constexpr const char * stream_addrv2_hex
static bool TestParse(std::string src, std::string canon)
static bool TestSplitHost(const std::string &test, const std::string &host, uint16_t port)
BOOST_AUTO_TEST_CASE(netbase_networks)
static CNetAddr CreateInternal(const std::string &host)
static CSubNet ResolveSubNet(const std::string &subnet)
static CNetAddr ResolveIP(const std::string &ip)
#define BOOST_FIXTURE_TEST_SUITE(a, b)
#define BOOST_CHECK_EQUAL(v1, v2)
#define BOOST_CHECK(expr)
ServiceFlags
nServices flags
std::string HexStr(const Span< const uint8_t > s)
Convert a span of bytes to a lower-case hexadecimal string.
std::vector< unsigned char > ParseHex(const char *psz)
void SplitHostPort(std::string in, uint16_t &portOut, std::string &hostOut)
std::string ToString(const T &t)
Locale-independent version of std::to_string.
bool error(const char *fmt, const Args &... args)
static const int PROTOCOL_VERSION
network protocol versioning