From 6b5a712506464e0d06ef48a37177723837a5f559 Mon Sep 17 00:00:00 2001 From: Cameron Gutman Date: Sun, 14 Jan 2024 19:55:09 -0600 Subject: [PATCH] Normalize IPv4-mapped IPv4 addresses before checking PC/LAN/WAN type --- src/network.cpp | 2 +- src/network.h | 9 +++++++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/network.cpp b/src/network.cpp index c843cfc0..5778c8db 100644 --- a/src/network.cpp +++ b/src/network.cpp @@ -44,7 +44,7 @@ namespace net { net_e from_address(const std::string_view &view) { - auto addr = ip::make_address(view); + auto addr = normalize_address(ip::make_address(view)); if (addr.is_v6()) { for (auto &range : pc_ips_v6) { diff --git a/src/network.h b/src/network.h index b54f63ce..57bc65e8 100644 --- a/src/network.h +++ b/src/network.h @@ -58,6 +58,15 @@ namespace net { std::string_view af_to_any_address_string(af_e af); + /** + * @brief Converts an address to a normalized form. + * @details Normalization converts IPv4-mapped IPv6 addresses into IPv4 addresses. + * @param address The address to normalize. + * @return Normalized address. + */ + boost::asio::ip::address + normalize_address(boost::asio::ip::address address); + /** * @brief Returns the given address in normalized string form. * @details Normalization converts IPv4-mapped IPv6 addresses into IPv4 addresses.