From 0101d2bc3c3bcf698d6cc2a237a680fc52395987 Mon Sep 17 00:00:00 2001 From: dergoegge Date: Thu, 26 May 2022 16:07:04 +0200 Subject: [net] Move eviction logic to its own file --- src/net.h | 52 ---------------------------------------------------- 1 file changed, 52 deletions(-) (limited to 'src/net.h') diff --git a/src/net.h b/src/net.h index 03b8de26b1..6453ad1dc7 100644 --- a/src/net.h +++ b/src/net.h @@ -1176,56 +1176,4 @@ extern std::function CaptureMessage; -struct NodeEvictionCandidate -{ - NodeId id; - std::chrono::seconds m_connected; - std::chrono::microseconds m_min_ping_time; - std::chrono::seconds m_last_block_time; - std::chrono::seconds m_last_tx_time; - bool fRelevantServices; - bool m_relay_txs; - bool fBloomFilter; - uint64_t nKeyedNetGroup; - bool prefer_evict; - bool m_is_local; - Network m_network; - bool m_noban; - ConnectionType m_conn_type; -}; - -/** - * Select an inbound peer to evict after filtering out (protecting) peers having - * distinct, difficult-to-forge characteristics. The protection logic picks out - * fixed numbers of desirable peers per various criteria, followed by (mostly) - * ratios of desirable or disadvantaged peers. If any eviction candidates - * remain, the selection logic chooses a peer to evict. - */ -[[nodiscard]] std::optional SelectNodeToEvict(std::vector&& vEvictionCandidates); - -/** Protect desirable or disadvantaged inbound peers from eviction by ratio. - * - * This function protects half of the peers which have been connected the - * longest, to replicate the non-eviction implicit behavior and preclude attacks - * that start later. - * - * Half of these protected spots (1/4 of the total) are reserved for the - * following categories of peers, sorted by longest uptime, even if they're not - * longest uptime overall: - * - * - onion peers connected via our tor control service - * - * - localhost peers, as manually configured hidden services not using - * `-bind=addr[:port]=onion` will not be detected as inbound onion connections - * - * - I2P peers - * - * - CJDNS peers - * - * This helps protect these privacy network peers, which tend to be otherwise - * disadvantaged under our eviction criteria for their higher min ping times - * relative to IPv4/IPv6 peers, and favorise the diversity of peer connections. - */ -void ProtectEvictionCandidatesByRatio(std::vector& vEvictionCandidates); - #endif // BITCOIN_NET_H -- cgit v1.2.3