aboutsummaryrefslogtreecommitdiff
path: root/src/netaddress.h
diff options
context:
space:
mode:
authorPieter Wuille <pieter@wuille.net>2021-10-05 16:13:41 -0400
committerPieter Wuille <pieter@wuille.net>2021-10-22 12:06:36 -0400
commit92617b7a758c0425330fba4b886296730567927c (patch)
tree4a377242223309d1f0aca1fefb0544b99d42044c /src/netaddress.h
parentff65b696f3c6f6e17a790c6646249163ddb39eda (diff)
downloadbitcoin-92617b7a758c0425330fba4b886296730567927c.tar.xz
Make AddrMan support multiple ports per IP
Diffstat (limited to 'src/netaddress.h')
-rw-r--r--src/netaddress.h36
1 files changed, 19 insertions, 17 deletions
diff --git a/src/netaddress.h b/src/netaddress.h
index 66c8c48f08..57eb8bc72f 100644
--- a/src/netaddress.h
+++ b/src/netaddress.h
@@ -253,7 +253,6 @@ public:
}
}
- friend class CNetAddrHash;
friend class CSubNet;
private:
@@ -467,22 +466,6 @@ private:
}
};
-class CNetAddrHash
-{
-public:
- size_t operator()(const CNetAddr& a) const noexcept
- {
- CSipHasher hasher(m_salt_k0, m_salt_k1);
- hasher.Write(a.m_net);
- hasher.Write(a.m_addr.data(), a.m_addr.size());
- return static_cast<size_t>(hasher.Finalize());
- }
-
-private:
- const uint64_t m_salt_k0 = GetRand(std::numeric_limits<uint64_t>::max());
- const uint64_t m_salt_k1 = GetRand(std::numeric_limits<uint64_t>::max());
-};
-
class CSubNet
{
protected:
@@ -565,6 +548,25 @@ public:
READWRITEAS(CNetAddr, obj);
READWRITE(Using<BigEndianFormatter<2>>(obj.port));
}
+
+ friend class CServiceHash;
+};
+
+class CServiceHash
+{
+public:
+ size_t operator()(const CService& a) const noexcept
+ {
+ CSipHasher hasher(m_salt_k0, m_salt_k1);
+ hasher.Write(a.m_net);
+ hasher.Write(a.port);
+ hasher.Write(a.m_addr.data(), a.m_addr.size());
+ return static_cast<size_t>(hasher.Finalize());
+ }
+
+private:
+ const uint64_t m_salt_k0 = GetRand(std::numeric_limits<uint64_t>::max());
+ const uint64_t m_salt_k1 = GetRand(std::numeric_limits<uint64_t>::max());
};
#endif // BITCOIN_NETADDRESS_H