From b079fb63c759a27ef090ad759a102d1b108f5650 Mon Sep 17 00:00:00 2001 From: yggverse Date: Sat, 4 Oct 2025 06:44:34 +0300 Subject: [PATCH] implement initial mycelium network condition --- libi2pd/util.cpp | 11 +++++++++++ libi2pd/util.h | 1 + 2 files changed, 12 insertions(+) diff --git a/libi2pd/util.cpp b/libi2pd/util.cpp index 94f3cd43..1840c5dd 100644 --- a/libi2pd/util.cpp +++ b/libi2pd/util.cpp @@ -636,6 +636,17 @@ namespace net return IsYggdrasilAddress (addr.to_v6 ().to_bytes ().data ()); } + static bool IsMyceliumAddress (const uint8_t addr[16]) + { + return addr[0] == 0x04 || addr[0] == 0x05; + } + + bool IsMyceliumAddress (const boost::asio::ip::address& addr) + { + if (!addr.is_v6 ()) return false; + return IsMyceliumAddress (addr.to_v6 ().to_bytes ().data ()); + } + bool IsPortInReservedRange (const uint16_t port) noexcept { // https://en.wikipedia.org/wiki/List_of_TCP_and_UDP_port_numbers (Feb. 3, 2023) + Tor browser (9150) diff --git a/libi2pd/util.h b/libi2pd/util.h index 59901f2b..b3705381 100644 --- a/libi2pd/util.h +++ b/libi2pd/util.h @@ -275,6 +275,7 @@ namespace util bool IsLocalAddress (const boost::asio::ip::address& addr); bool IsInReservedRange (const boost::asio::ip::address& host); bool IsYggdrasilAddress (const boost::asio::ip::address& addr); + bool IsMyceliumAddress (const boost::asio::ip::address& addr); bool IsPortInReservedRange (const uint16_t port) noexcept; } }