mirror of
https://github.com/oxen-io/lokinet.git
synced 2024-11-15 12:13:24 +00:00
0f21eeccb0
* rework net code for ip ranges to be cleaner * clean up endpoint auth code * refactor config to validate network configs before setting up endpoints * remove buildone from path/pathbuilder.cpp so we don't spam connection attempts
100 lines
2.5 KiB
C++
100 lines
2.5 KiB
C++
#include <gtest/gtest.h>
|
|
|
|
#include <net/net_int.hpp>
|
|
#include <net/ip.hpp>
|
|
#include <net/ip_range.hpp>
|
|
#include <net/net.hpp>
|
|
|
|
struct TestNet : public ::testing::Test
|
|
{
|
|
};
|
|
|
|
TEST_F(TestNet, TestIn6AddrFromString)
|
|
{
|
|
llarp::huint128_t ip;
|
|
ASSERT_TRUE(ip.FromString("fc00::1"));
|
|
}
|
|
|
|
TEST_F(TestNet, TestIn6AddrFromStringFail)
|
|
{
|
|
llarp::huint128_t ip;
|
|
ASSERT_FALSE(ip.FromString("10.1.1.1"));
|
|
}
|
|
|
|
TEST_F(TestNet, TestIn6AddrToHUIntLoopback)
|
|
{
|
|
llarp::huint128_t loopback = {0};
|
|
ASSERT_TRUE(loopback.FromString("::1"));
|
|
in6_addr addr = IN6ADDR_LOOPBACK_INIT;
|
|
auto huint = llarp::net::In6ToHUInt(addr);
|
|
ASSERT_EQ(huint, loopback);
|
|
}
|
|
|
|
TEST_F(TestNet, TestIn6AddrToHUInt)
|
|
{
|
|
llarp::huint128_t huint_parsed = {0};
|
|
ASSERT_TRUE(huint_parsed.FromString("fd00::1"));
|
|
in6_addr addr = {{{0xfd, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x01}}};
|
|
auto huint = llarp::net::In6ToHUInt(addr);
|
|
ASSERT_EQ(huint, huint_parsed);
|
|
huint_parsed.h++;
|
|
ASSERT_NE(huint, huint_parsed);
|
|
}
|
|
|
|
TEST_F(TestNet, TestRangeContains8)
|
|
{
|
|
ASSERT_TRUE(
|
|
llarp::IPRange::FromIPv4(10, 0, 0, 1, 8).Contains(llarp::ipaddr_ipv4_bits(10, 40, 11, 6)));
|
|
}
|
|
|
|
TEST_F(TestNet, TestRangeContains24)
|
|
{
|
|
ASSERT_TRUE(llarp::IPRange::FromIPv4(10, 200, 0, 1, 24)
|
|
.Contains(llarp::ipaddr_ipv4_bits(10, 200, 0, 253)));
|
|
}
|
|
|
|
TEST_F(TestNet, TestRangeContainsFail)
|
|
{
|
|
ASSERT_TRUE(!llarp::IPRange::FromIPv4(192, 168, 0, 1, 24)
|
|
.Contains(llarp::ipaddr_ipv4_bits(10, 200, 0, 253)));
|
|
}
|
|
|
|
TEST_F(TestNet, TestIPv4Netmask)
|
|
{
|
|
ASSERT_TRUE(llarp::netmask_ipv4_bits(8) == llarp::huint32_t{0xFF000000});
|
|
ASSERT_TRUE(llarp::netmask_ipv4_bits(24) == llarp::huint32_t{0xFFFFFF00});
|
|
}
|
|
|
|
TEST_F(TestNet, TestBogon_10_8)
|
|
{
|
|
ASSERT_TRUE(llarp::IsIPv4Bogon(llarp::ipaddr_ipv4_bits(10, 40, 11, 6)));
|
|
}
|
|
|
|
TEST_F(TestNet, TestBogon_192_168_16)
|
|
{
|
|
ASSERT_TRUE(llarp::IsIPv4Bogon(llarp::ipaddr_ipv4_bits(192, 168, 1, 111)));
|
|
}
|
|
|
|
TEST_F(TestNet, TestBogon_DoD_8)
|
|
{
|
|
ASSERT_TRUE(llarp::IsIPv4Bogon(llarp::ipaddr_ipv4_bits(21, 3, 37, 70)));
|
|
}
|
|
|
|
TEST_F(TestNet, TestBogon_127_8)
|
|
{
|
|
ASSERT_TRUE(llarp::IsIPv4Bogon(llarp::ipaddr_ipv4_bits(127, 0, 0, 1)));
|
|
}
|
|
|
|
TEST_F(TestNet, TestBogon_0_8)
|
|
{
|
|
ASSERT_TRUE(llarp::IsIPv4Bogon(llarp::ipaddr_ipv4_bits(0, 0, 0, 0)));
|
|
}
|
|
|
|
TEST_F(TestNet, TestBogon_NonBogon)
|
|
{
|
|
ASSERT_FALSE(llarp::IsIPv4Bogon(llarp::ipaddr_ipv4_bits(1, 1, 1, 1)));
|
|
ASSERT_FALSE(llarp::IsIPv4Bogon(llarp::ipaddr_ipv4_bits(8, 8, 6, 6)));
|
|
ASSERT_FALSE(llarp::IsIPv4Bogon(llarp::ipaddr_ipv4_bits(141, 55, 12, 99)));
|
|
ASSERT_FALSE(llarp::IsIPv4Bogon(llarp::ipaddr_ipv4_bits(79, 12, 3, 4)));
|
|
}
|