aboutsummaryrefslogtreecommitdiff
path: root/src/net.h
diff options
context:
space:
mode:
authorAmiti Uttarwar <amiti@uttarwar.org>2023-06-11 12:26:18 -0700
committerAmiti Uttarwar <amiti@uttarwar.org>2023-08-03 12:46:24 -0600
commit654d9bc27647fb3797001472e2464dededb45d3f (patch)
tree33830ba2d23b199b532ec309ab2d78089abf0b09 /src/net.h
parent6a473373d4953cabbb219eae8b709150a45796e6 (diff)
p2p: Introduce data struct to track connection counts by network
Connman uses this new map to keep a count of active OUTBOUND_FULL_RELAY and MANUAL connections. Unused until next commit. Co-authored-by: Martin Zumsande <mzumsande@gmail.com>
Diffstat (limited to 'src/net.h')
-rw-r--r--src/net.h19
1 files changed, 19 insertions, 0 deletions
diff --git a/src/net.h b/src/net.h
index 83fe0427d4..edff55ce7a 100644
--- a/src/net.h
+++ b/src/net.h
@@ -465,6 +465,22 @@ public:
return m_conn_type == ConnectionType::MANUAL;
}
+ bool IsManualOrFullOutboundConn() const
+ {
+ switch (m_conn_type) {
+ case ConnectionType::INBOUND:
+ case ConnectionType::FEELER:
+ case ConnectionType::BLOCK_RELAY:
+ case ConnectionType::ADDR_FETCH:
+ return false;
+ case ConnectionType::OUTBOUND_FULL_RELAY:
+ case ConnectionType::MANUAL:
+ return true;
+ } // no default case, so the compiler can warn about missing cases
+
+ assert(false);
+ }
+
bool IsBlockOnlyConn() const {
return m_conn_type == ConnectionType::BLOCK_RELAY;
}
@@ -1048,6 +1064,9 @@ private:
std::atomic<NodeId> nLastNodeId{0};
unsigned int nPrevNodeCount{0};
+ // Stores number of full-tx connections (outbound and manual) per network
+ std::array<unsigned int, Network::NET_MAX> m_network_conn_counts GUARDED_BY(m_nodes_mutex) = {};
+
/**
* Cache responses to addr requests to minimize privacy leak.
* Attack example: scraping addrs in real-time may allow an attacker