![]() |
Bitcoin Core 28.99.0
P2P Digital Currency
|
#include <bitcoin-build-config.h>
#include <net.h>
#include <addrdb.h>
#include <addrman.h>
#include <banman.h>
#include <clientversion.h>
#include <common/args.h>
#include <common/netif.h>
#include <compat/compat.h>
#include <consensus/consensus.h>
#include <crypto/sha256.h>
#include <i2p.h>
#include <key.h>
#include <logging.h>
#include <memusage.h>
#include <net_permissions.h>
#include <netaddress.h>
#include <netbase.h>
#include <node/eviction.h>
#include <node/interface_ui.h>
#include <protocol.h>
#include <random.h>
#include <scheduler.h>
#include <util/fs.h>
#include <util/sock.h>
#include <util/strencodings.h>
#include <util/thread.h>
#include <util/threadinterrupt.h>
#include <util/trace.h>
#include <util/translation.h>
#include <util/vector.h>
#include <algorithm>
#include <array>
#include <cmath>
#include <cstdint>
#include <functional>
#include <optional>
#include <unordered_map>
Go to the source code of this file.
Classes | |
class | CNetCleanup |
Macros | |
#define | X(name) stats.name = name |
Enumerations | |
enum | BindFlags { BF_NONE = 0 , BF_REPORT_ERROR = (1U << 0) , BF_DONT_ADVERTISE = (1U << 1) } |
Used to pass flags to the Bind() function. More... | |
Functions | |
TRACEPOINT_SEMAPHORE (net, closed_connection) | |
TRACEPOINT_SEMAPHORE (net, evicted_inbound_connection) | |
TRACEPOINT_SEMAPHORE (net, inbound_connection) | |
TRACEPOINT_SEMAPHORE (net, outbound_connection) | |
TRACEPOINT_SEMAPHORE (net, outbound_message) | |
std::map< CNetAddr, LocalServiceInfo > mapLocalHost | GUARDED_BY (g_maplocalhost_mutex) |
uint16_t | GetListenPort () |
static std::optional< CService > | GetLocal (const CNode &peer) |
static std::vector< CAddress > | ConvertSeeds (const std::vector< uint8_t > &vSeedsIn) |
Convert the serialized seeds into usable address objects. More... | |
CService | GetLocalAddress (const CNode &peer) |
static int | GetnScore (const CService &addr) |
static bool | IsPeerAddrLocalGood (CNode *pnode) |
std::optional< CService > | GetLocalAddrForPeer (CNode &node) |
Returns a local address that we should advertise to this peer. More... | |
bool | AddLocal (const CService &addr_, int nScore) |
bool | AddLocal (const CNetAddr &addr, int nScore) |
void | RemoveLocal (const CService &addr) |
bool | SeenLocal (const CService &addr) |
vote for a local address More... | |
bool | IsLocal (const CService &addr) |
check whether a given address is potentially local More... | |
static CService | GetBindAddress (const Sock &sock) |
Get the bind address for a socket as CService. More... | |
void | Discover () |
Look up IP addresses from all interfaces on the machine and add them to the list of local addresses to self-advertise. More... | |
static std::unique_ptr< Transport > | MakeTransport (NodeId id, bool use_v2transport, bool inbound) noexcept |
static void | CaptureMessageToFile (const CAddress &addr, const std::string &msg_type, Span< const unsigned char > data, bool is_incoming) |
Variables | |
static constexpr size_t | MAX_BLOCK_RELAY_ONLY_ANCHORS = 2 |
Maximum number of block-relay-only anchor connections. More... | |
const char *const | ANCHORS_DATABASE_FILENAME = "anchors.dat" |
Anchor IP address database file name. More... | |
static constexpr std::chrono::minutes | DUMP_PEERS_INTERVAL {15} |
static constexpr int | DNSSEEDS_TO_QUERY_AT_ONCE = 3 |
Number of DNS seeds to query when the number of connections is low. More... | |
static constexpr int | SEED_OUTBOUND_CONNECTION_THRESHOLD = 2 |
Minimum number of outbound connections under which we will keep fetching our address seeds. More... | |
static constexpr std::chrono::seconds | DNSSEEDS_DELAY_FEW_PEERS {11} |
How long to delay before querying DNS seeds. More... | |
static constexpr std::chrono::minutes | DNSSEEDS_DELAY_MANY_PEERS {5} |
static constexpr int | DNSSEEDS_DELAY_PEER_THRESHOLD = 1000 |
static constexpr std::chrono::seconds | MAX_UPLOAD_TIMEFRAME {60 * 60 * 24} |
The default timeframe for -maxuploadtarget. More... | |
static constexpr auto | FEELER_SLEEP_WINDOW {1s} |
static constexpr auto | EXTRA_NETWORK_PEER_INTERVAL {5min} |
Frequency to attempt extra connections to reachable networks we're not connected to yet. More... | |
static const uint64_t | SELECT_TIMEOUT_MILLISECONDS = 50 |
const std::string | NET_MESSAGE_TYPE_OTHER = "*other*" |
static const uint64_t | RANDOMIZER_ID_NETGROUP = 0x6c0edd8036ef4036ULL |
static const uint64_t | RANDOMIZER_ID_LOCALHOSTNONCE = 0xd93e69e2bbfa5735ULL |
static const uint64_t | RANDOMIZER_ID_ADDRCACHE = 0x1cf2e4ddd306dda9ULL |
bool | fDiscover = true |
bool | fListen = true |
GlobalMutex | g_maplocalhost_mutex |
std::string | strSubVersion |
Subversion as sent to the P2P network in version messages. More... | |
static CNetCleanup | instance_of_cnetcleanup |
std::function< void(const CAddress &addr, const std::string &msg_type, Span< const unsigned char > data, bool is_incoming)> | CaptureMessage = CaptureMessageToFile |
Defaults to CaptureMessageToFile() , but can be overridden by unit tests. More... | |
#define X | ( | name | ) | stats.name = name |
enum BindFlags |
Used to pass flags to the Bind() function.
Enumerator | |
---|---|
BF_NONE | |
BF_REPORT_ERROR | |
BF_DONT_ADVERTISE | Do not call AddLocal() for our special addresses, e.g., for incoming Tor connections, to prevent gossiping them over the network. |
bool AddLocal | ( | const CNetAddr & | addr, |
int | nScore | ||
) |
bool AddLocal | ( | const CService & | addr_, |
int | nScore | ||
) |
|
static |
void Discover | ( | ) |
uint16_t GetListenPort | ( | ) |
|
static |
std::map< CNetAddr, LocalServiceInfo > mapLocalHost GUARDED_BY | ( | g_maplocalhost_mutex | ) |
bool IsLocal | ( | const CService & | addr | ) |
|
static |
void RemoveLocal | ( | const CService & | addr | ) |
bool SeenLocal | ( | const CService & | addr | ) |
TRACEPOINT_SEMAPHORE | ( | net | , |
closed_connection | |||
) |
TRACEPOINT_SEMAPHORE | ( | net | , |
evicted_inbound_connection | |||
) |
TRACEPOINT_SEMAPHORE | ( | net | , |
inbound_connection | |||
) |
TRACEPOINT_SEMAPHORE | ( | net | , |
outbound_connection | |||
) |
TRACEPOINT_SEMAPHORE | ( | net | , |
outbound_message | |||
) |
const char* const ANCHORS_DATABASE_FILENAME = "anchors.dat" |
std::function<void(const CAddress& addr, const std::string& msg_type, Span<const unsigned char> data, bool is_incoming)> CaptureMessage = CaptureMessageToFile |
Defaults to CaptureMessageToFile()
, but can be overridden by unit tests.
|
staticconstexpr |
How long to delay before querying DNS seeds.
If we have more than THRESHOLD entries in addrman, then it's likely that we got those addresses from having previously connected to the P2P network, and that we'll be able to successfully reconnect to the P2P network via contacting one of them. So if that's the case, spend a little longer trying to connect to known peers before querying the DNS seeds.
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
GlobalMutex g_maplocalhost_mutex |
|
static |
|
staticconstexpr |
|
staticconstexpr |
|
static |
|
static |
|
static |
|
staticconstexpr |