net: Add CNode::ConnectedThroughNetwork member function

This commit is contained in:
Hennadii Stepanov committed 2020-10-03 15:38:19 +03:00
1 parent d4dde24034
commit 49fba9c1aa
4 files changed
+19 -2

No files matched your search

+5
View File
@@ -539,6 +539,11 @@ void CNode::SetAddrLocal(const CService& addrLocalIn) {
} }
} }
Network CNode::ConnectedThroughNetwork() const
{
return IsInboundConn() && m_inbound_onion ? NET_ONION : addr.GetNetClass();
}
#undef X #undef X
#define X(name) stats.name = name #define X(name) stats.name = name
void CNode::copyStats(CNodeStats &stats, const std::vector<bool> &m_asmap) void CNode::copyStats(CNodeStats &stats, const std::vector<bool> &m_asmap)
+12
View File
@@ -961,6 +961,18 @@ public:
assert(false); assert(false);
} }
/**
* Get network the peer connected through.
*
* Returns Network::NET_ONION for *inbound* onion connections,
* and CNetAddr::GetNetClass() otherwise. The latter cannot be used directly
* because it doesn't detect the former, and it's not the responsibility of
* the CNetAddr class to know the actual network a peer is connected through.
*
* @return network the peer connected through.
*/
Network ConnectedThroughNetwork() const;
protected: protected:
mapMsgCmdSize mapSendBytesPerMsgCmd; mapMsgCmdSize mapSendBytesPerMsgCmd;
mapMsgCmdSize mapRecvBytesPerMsgCmd GUARDED_BY(cs_vRecv); mapMsgCmdSize mapRecvBytesPerMsgCmd GUARDED_BY(cs_vRecv);
+1 -1
View File
@@ -629,7 +629,7 @@ uint32_t CNetAddr::GetLinkedIPv4() const
assert(false); assert(false);
} }
uint32_t CNetAddr::GetNetClass() const Network CNetAddr::GetNetClass() const
{ {
// Make sure that if we return NET_IPV6, then IsIPv6() is true. The callers expect that. // Make sure that if we return NET_IPV6, then IsIPv6() is true. The callers expect that.
+1 -1
View File
@@ -182,7 +182,7 @@ class CNetAddr
std::string ToStringIP() const; std::string ToStringIP() const;
uint64_t GetHash() const; uint64_t GetHash() const;
bool GetInAddr(struct in_addr* pipv4Addr) const; bool GetInAddr(struct in_addr* pipv4Addr) const;
uint32_t GetNetClass() const; Network GetNetClass() const;
//! For IPv4, mapped IPv4, SIIT translated IPv4, Teredo, 6to4 tunneled addresses, return the relevant IPv4 address as a uint32. //! For IPv4, mapped IPv4, SIIT translated IPv4, Teredo, 6to4 tunneled addresses, return the relevant IPv4 address as a uint32.
uint32_t GetLinkedIPv4() const; uint32_t GetLinkedIPv4() const;