diff options
Diffstat (limited to '')
-rw-r--r-- | contrib/epee/include/net/local_ip.h | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/contrib/epee/include/net/local_ip.h b/contrib/epee/include/net/local_ip.h index 7523f9d81..246cf6ad8 100644 --- a/contrib/epee/include/net/local_ip.h +++ b/contrib/epee/include/net/local_ip.h @@ -30,6 +30,11 @@ #include <string> #include <boost/algorithm/string/predicate.hpp> #include <boost/asio/ip/address_v6.hpp> +#include "int-util.h" + +// IP addresses are kept in network byte order +// Masks below are little endian +// -> convert from network byte order to host byte order before comparing namespace epee { @@ -39,7 +44,7 @@ namespace epee inline bool is_ipv6_local(const std::string& ip) { - auto addr = boost::asio::ip::make_address_v6(ip); + auto addr = boost::asio::ip::address_v6::from_string(ip); // ipv6 link-local unicast addresses are fe80::/10 bool is_link_local = addr.is_link_local(); @@ -62,6 +67,7 @@ namespace epee inline bool is_ip_local(uint32_t ip) { + ip = SWAP32LE(ip); /* local ip area 10.0.0.0 — 10.255.255.255 @@ -85,6 +91,7 @@ namespace epee inline bool is_ip_loopback(uint32_t ip) { + ip = SWAP32LE(ip); if( (ip | 0xffffff00) == 0xffffff7f) return true; //MAKE_IP |