diff options
author | rubenwardy <rw@rubenwardy.com> | 2019-02-03 12:31:55 +0000 |
---|---|---|
committer | Loic Blot <loic.blot@unix-experience.fr> | 2019-02-09 19:52:56 +0100 |
commit | 7796a3118d7b4f58752fad0ca5f676dcafd7a76c (patch) | |
tree | 12348fd175d8b144bf72c977dd117fffa81b4a84 /src/network/address.cpp | |
parent | b7e1bca28c2c551198d284473c22b0293139163d (diff) | |
download | dragonfireclient-7796a3118d7b4f58752fad0ca5f676dcafd7a76c.tar.xz |
Disable confirmation dialog on localhost
Diffstat (limited to 'src/network/address.cpp')
-rw-r--r-- | src/network/address.cpp | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/src/network/address.cpp b/src/network/address.cpp index f698a2e91..0ecface37 100644 --- a/src/network/address.cpp +++ b/src/network/address.cpp @@ -271,3 +271,19 @@ void Address::print(std::ostream *s) const else *s << serializeString() << ":" << m_port; } + +bool Address::isLocalhost() const { + if (isIPv6()) { + static const unsigned char localhost_bytes[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; + static const unsigned char mapped_ipv4_localhost[] = { + 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff, 0x7f, 0, 0, 1}; + + auto addr = m_address.ipv6.sin6_addr.s6_addr; + + return memcmp(addr, localhost_bytes, 16) == 0 || + memcmp(addr, mapped_ipv4_localhost, 16) == 0; + } else { + return m_address.ipv4.sin_addr.s_addr == 0x0100007F; + } +} |