diff options
| author | luigi1111 <luigi1111w@gmail.com> | 2019-07-24 13:47:41 -0500 |
|---|---|---|
| committer | luigi1111 <luigi1111w@gmail.com> | 2019-07-24 13:47:41 -0500 |
| commit | 1880c1a58290cde589fe6db1062284ddba294483 (patch) | |
| tree | 896c03bef52795675c79bbd421b8f47c5fab869e /contrib/epee/src/net_utils_base.cpp | |
| parent | 97ffc6dabdcd12be221d1f710d346d99f55f8ea8 (diff) | |
| parent | 65c40049633f0c5db3c24af8716bb683520f368c (diff) | |
| download | monzero-core-1880c1a58290cde589fe6db1062284ddba294483.tar.gz monzero-core-1880c1a58290cde589fe6db1062284ddba294483.tar.xz monzero-core-1880c1a58290cde589fe6db1062284ddba294483.zip | |
Merge pull request #5363
515ac29 p2p: store network address directly in blocked host list (moneromooo-monero)
65c4004 allow blocking whole subnets (moneromooo-monero)
Diffstat (limited to 'contrib/epee/src/net_utils_base.cpp')
| -rw-r--r-- | contrib/epee/src/net_utils_base.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/contrib/epee/src/net_utils_base.cpp b/contrib/epee/src/net_utils_base.cpp index 9b781027e..b7f07a23b 100644 --- a/contrib/epee/src/net_utils_base.cpp +++ b/contrib/epee/src/net_utils_base.cpp @@ -22,6 +22,24 @@ namespace epee { namespace net_utils bool ipv4_network_address::is_local() const { return net_utils::is_ip_local(ip()); } + bool ipv4_network_subnet::equal(const ipv4_network_subnet& other) const noexcept + { return is_same_host(other) && m_mask == other.m_mask; } + + bool ipv4_network_subnet::less(const ipv4_network_subnet& other) const noexcept + { return subnet() < other.subnet() ? true : (other.subnet() < subnet() ? false : (m_mask < other.m_mask)); } + + std::string ipv4_network_subnet::str() const + { return string_tools::get_ip_string_from_int32(subnet()) + "/" + std::to_string(m_mask); } + + std::string ipv4_network_subnet::host_str() const { return string_tools::get_ip_string_from_int32(subnet()) + "/" + std::to_string(m_mask); } + bool ipv4_network_subnet::is_loopback() const { return net_utils::is_ip_loopback(subnet()); } + bool ipv4_network_subnet::is_local() const { return net_utils::is_ip_local(subnet()); } + bool ipv4_network_subnet::matches(const ipv4_network_address &address) const + { + return (address.ip() & ~(0xffffffffull << m_mask)) == subnet(); + } + + bool network_address::equal(const network_address& other) const { // clang typeid workaround |
