Bitcoin Core  0.18.99
P2P Digital Currency
Classes | Typedefs | Enumerations | Functions | Variables
net.h File Reference
#include <addrdb.h>
#include <addrman.h>
#include <amount.h>
#include <bloom.h>
#include <compat.h>
#include <crypto/siphash.h>
#include <hash.h>
#include <limitedmap.h>
#include <netaddress.h>
#include <net_permissions.h>
#include <policy/feerate.h>
#include <protocol.h>
#include <random.h>
#include <streams.h>
#include <sync.h>
#include <uint256.h>
#include <threadinterrupt.h>
#include <atomic>
#include <deque>
#include <stdint.h>
#include <thread>
#include <memory>
#include <condition_variable>
#include <arpa/inet.h>
Include dependency graph for net.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  AddedNodeInfo
 
struct  CSerializedNetMsg
 
class  CConnman
 
struct  CConnman::Options
 
struct  CConnman::ListenSocket
 
struct  CombinerAll
 
class  NetEventsInterface
 Interface for message handling. More...
 
struct  LocalServiceInfo
 
class  CNodeStats
 
class  CNetMessage
 
class  CNode
 Information about a peer. More...
 
struct  CNode::TxRelay
 

Typedefs

typedef int64_t NodeId
 
typedef std::map< std::string, uint64_t > mapMsgCmdSize
 

Enumerations

enum  {
  LOCAL_NONE, LOCAL_IF, LOCAL_BIND, LOCAL_UPNP,
  LOCAL_MANUAL, LOCAL_MAX
}
 

Functions

void Discover ()
 
void StartMapPort ()
 
void InterruptMapPort ()
 
void StopMapPort ()
 
unsigned short GetListenPort ()
 
bool IsPeerAddrLocalGood (CNode *pnode)
 
void AdvertiseLocal (CNode *pnode)
 
void SetReachable (enum Network net, bool reachable)
 Mark a network as reachable or unreachable (no automatic connects to it) More...
 
bool IsReachable (enum Network net)
 
bool IsReachable (const CNetAddr &addr)
 
bool AddLocal (const CService &addr, int nScore=LOCAL_NONE)
 
bool AddLocal (const CNetAddr &addr, int nScore=LOCAL_NONE)
 
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...
 
bool GetLocal (CService &addr, const CNetAddr *paddrPeer=nullptr)
 
CAddress GetLocalAddress (const CNetAddr *paddrPeer, ServiceFlags nLocalServices)
 
std::map< CNetAddr, LocalServiceInfo > mapLocalHost GUARDED_BY (cs_mapLocalHost)
 
int64_t PoissonNextSend (int64_t now, int average_interval_seconds)
 Return a timestamp in the future (in microseconds) for exponentially distributed events. More...
 

Variables

static const bool DEFAULT_WHITELISTRELAY = true
 Default for -whitelistrelay. More...
 
static const bool DEFAULT_WHITELISTFORCERELAY = false
 Default for -whitelistforcerelay. More...
 
static const int PING_INTERVAL = 2 * 60
 Time between pings automatically sent out for latency probing and keepalive (in seconds). More...
 
static const int TIMEOUT_INTERVAL = 20 * 60
 Time after which to disconnect, after waiting for a ping response (or inactivity). More...
 
static const int FEELER_INTERVAL = 120
 Run the feeler connection loop once every 2 minutes or 120 seconds. More...
 
static const unsigned int MAX_INV_SZ = 50000
 The maximum number of entries in an 'inv' protocol message. More...
 
static const unsigned int MAX_LOCATOR_SZ = 101
 The maximum number of entries in a locator. More...
 
static const unsigned int MAX_ADDR_TO_SEND = 1000
 The maximum number of new addresses to accumulate before announcing. More...
 
static const unsigned int MAX_PROTOCOL_MESSAGE_LENGTH = 4 * 1000 * 1000
 Maximum length of incoming protocol messages (no message over 4 MB is currently acceptable). More...
 
static const unsigned int MAX_SUBVERSION_LENGTH = 256
 Maximum length of the user agent string in version message. More...
 
static const int MAX_OUTBOUND_FULL_RELAY_CONNECTIONS = 8
 Maximum number of automatic outgoing nodes over which we'll relay everything (blocks, tx, addrs, etc) More...
 
static const int MAX_ADDNODE_CONNECTIONS = 8
 Maximum number of addnode outgoing nodes. More...
 
static const int MAX_BLOCKS_ONLY_CONNECTIONS = 2
 Maximum number of block-relay-only outgoing connections. More...
 
static const bool DEFAULT_LISTEN = true
 -listen default More...
 
static const bool DEFAULT_UPNP = false
 -upnp default More...
 
static const unsigned int DEFAULT_MAX_PEER_CONNECTIONS = 125
 The maximum number of peer connections to maintain. More...
 
static const uint64_t DEFAULT_MAX_UPLOAD_TARGET = 0
 The default for -maxuploadtarget. More...
 
static const uint64_t MAX_UPLOAD_TIMEFRAME = 60 * 60 * 24
 The default timeframe for -maxuploadtarget. More...
 
static const bool DEFAULT_BLOCKSONLY = false
 Default for blocks only. More...
 
static const int64_t DEFAULT_PEER_CONNECT_TIMEOUT = 60
 -peertimeout default More...
 
static const bool DEFAULT_FORCEDNSSEED = false
 
static const size_t DEFAULT_MAXRECEIVEBUFFER = 5 * 1000
 
static const size_t DEFAULT_MAXSENDBUFFER = 1 * 1000
 
std::unique_ptr< CConnmang_connman
 
std::unique_ptr< BanMang_banman
 
bool fDiscover
 
bool fListen
 
bool g_relay_txes
 
std::string strSubVersion
 Subversion as sent to the P2P network in version messages. More...
 
CCriticalSection cs_mapLocalHost
 
const std::string NET_MESSAGE_COMMAND_OTHER
 

Typedef Documentation

◆ mapMsgCmdSize

typedef std::map<std::string, uint64_t> mapMsgCmdSize

Definition at line 574 of file net.h.

◆ NodeId

typedef int64_t NodeId

Definition at line 93 of file net.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
LOCAL_NONE 
LOCAL_IF 
LOCAL_BIND 
LOCAL_UPNP 
LOCAL_MANUAL 
LOCAL_MAX 

Definition at line 525 of file net.h.

Function Documentation

◆ AddLocal() [1/2]

bool AddLocal ( const CService addr,
int  nScore = LOCAL_NONE 
)

Definition at line 208 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ AddLocal() [2/2]

bool AddLocal ( const CNetAddr addr,
int  nScore = LOCAL_NONE 
)

Definition at line 234 of file net.cpp.

Here is the call graph for this function:

◆ AdvertiseLocal()

void AdvertiseLocal ( CNode pnode)

Definition at line 181 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ Discover()

void Discover ( )

Definition at line 2094 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetListenPort()

unsigned short GetListenPort ( )

Definition at line 98 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetLocal()

bool GetLocal ( CService addr,
const CNetAddr paddrPeer = nullptr 
)

Definition at line 104 of file net.cpp.

Here is the caller graph for this function:

◆ GetLocalAddress()

CAddress GetLocalAddress ( const CNetAddr paddrPeer,
ServiceFlags  nLocalServices 
)

Definition at line 153 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ GUARDED_BY()

std::map<CNetAddr, LocalServiceInfo> mapLocalHost GUARDED_BY ( cs_mapLocalHost  )
Here is the caller graph for this function:

◆ InterruptMapPort()

void InterruptMapPort ( )

Definition at line 1521 of file net.cpp.

Here is the caller graph for this function:

◆ IsLocal()

bool IsLocal ( const CService addr)

check whether a given address is potentially local

Definition at line 279 of file net.cpp.

Here is the caller graph for this function:

◆ IsPeerAddrLocalGood()

bool IsPeerAddrLocalGood ( CNode pnode)

Definition at line 173 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ IsReachable() [1/2]

bool IsReachable ( enum Network  net)
Returns
true if the network is reachable, false otherwise

Definition at line 254 of file net.cpp.

Here is the caller graph for this function:

◆ IsReachable() [2/2]

bool IsReachable ( const CNetAddr addr)
Returns
true if the address is in a reachable network, false otherwise

Definition at line 260 of file net.cpp.

Here is the call graph for this function:

◆ PoissonNextSend()

int64_t PoissonNextSend ( int64_t  now,
int  average_interval_seconds 
)

Return a timestamp in the future (in microseconds) for exponentially distributed events.

Definition at line 2747 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ RemoveLocal()

void RemoveLocal ( const CService addr)

Definition at line 239 of file net.cpp.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ SeenLocal()

bool SeenLocal ( const CService addr)

vote for a local address

Definition at line 266 of file net.cpp.

Here is the caller graph for this function:

◆ SetReachable()

void SetReachable ( enum Network  net,
bool  reachable 
)

Mark a network as reachable or unreachable (no automatic connects to it)

Note
Networks are reachable by default

Definition at line 246 of file net.cpp.

Here is the caller graph for this function:

◆ StartMapPort()

void StartMapPort ( )

Definition at line 1517 of file net.cpp.

Here is the caller graph for this function:

◆ StopMapPort()

void StopMapPort ( )

Definition at line 1525 of file net.cpp.

Here is the caller graph for this function:

Variable Documentation

◆ cs_mapLocalHost

CCriticalSection cs_mapLocalHost

Definition at line 87 of file net.cpp.

◆ DEFAULT_BLOCKSONLY

const bool DEFAULT_BLOCKSONLY = false
static

Default for blocks only.

Definition at line 85 of file net.h.

◆ DEFAULT_FORCEDNSSEED

const bool DEFAULT_FORCEDNSSEED = false
static

Definition at line 89 of file net.h.

◆ DEFAULT_LISTEN

const bool DEFAULT_LISTEN = true
static

-listen default

Definition at line 71 of file net.h.

◆ DEFAULT_MAX_PEER_CONNECTIONS

const unsigned int DEFAULT_MAX_PEER_CONNECTIONS = 125
static

The maximum number of peer connections to maintain.

Definition at line 79 of file net.h.

◆ DEFAULT_MAX_UPLOAD_TARGET

const uint64_t DEFAULT_MAX_UPLOAD_TARGET = 0
static

The default for -maxuploadtarget.

0 = Unlimited

Definition at line 81 of file net.h.

◆ DEFAULT_MAXRECEIVEBUFFER

const size_t DEFAULT_MAXRECEIVEBUFFER = 5 * 1000
static

Definition at line 90 of file net.h.

◆ DEFAULT_MAXSENDBUFFER

const size_t DEFAULT_MAXSENDBUFFER = 1 * 1000
static

Definition at line 91 of file net.h.

◆ DEFAULT_PEER_CONNECT_TIMEOUT

const int64_t DEFAULT_PEER_CONNECT_TIMEOUT = 60
static

-peertimeout default

Definition at line 87 of file net.h.

◆ DEFAULT_UPNP

const bool DEFAULT_UPNP = false
static

-upnp default

Definition at line 76 of file net.h.

◆ DEFAULT_WHITELISTFORCERELAY

const bool DEFAULT_WHITELISTFORCERELAY = false
static

Default for -whitelistforcerelay.

Definition at line 46 of file net.h.

◆ DEFAULT_WHITELISTRELAY

const bool DEFAULT_WHITELISTRELAY = true
static

Default for -whitelistrelay.

Definition at line 44 of file net.h.

◆ fDiscover

bool fDiscover

Definition at line 84 of file net.cpp.

◆ FEELER_INTERVAL

const int FEELER_INTERVAL = 120
static

Run the feeler connection loop once every 2 minutes or 120 seconds.

Definition at line 53 of file net.h.

◆ fListen

bool fListen

Definition at line 85 of file net.cpp.

◆ g_banman

std::unique_ptr<BanMan> g_banman

Definition at line 89 of file init.cpp.

◆ g_connman

std::unique_ptr<CConnman> g_connman

Definition at line 87 of file init.cpp.

◆ g_relay_txes

bool g_relay_txes

Definition at line 86 of file net.cpp.

◆ MAX_ADDNODE_CONNECTIONS

const int MAX_ADDNODE_CONNECTIONS = 8
static

Maximum number of addnode outgoing nodes.

Definition at line 67 of file net.h.

◆ MAX_ADDR_TO_SEND

const unsigned int MAX_ADDR_TO_SEND = 1000
static

The maximum number of new addresses to accumulate before announcing.

Definition at line 59 of file net.h.

◆ MAX_BLOCKS_ONLY_CONNECTIONS

const int MAX_BLOCKS_ONLY_CONNECTIONS = 2
static

Maximum number of block-relay-only outgoing connections.

Definition at line 69 of file net.h.

◆ MAX_INV_SZ

const unsigned int MAX_INV_SZ = 50000
static

The maximum number of entries in an 'inv' protocol message.

Definition at line 55 of file net.h.

◆ MAX_LOCATOR_SZ

const unsigned int MAX_LOCATOR_SZ = 101
static

The maximum number of entries in a locator.

Definition at line 57 of file net.h.

◆ MAX_OUTBOUND_FULL_RELAY_CONNECTIONS

const int MAX_OUTBOUND_FULL_RELAY_CONNECTIONS = 8
static

Maximum number of automatic outgoing nodes over which we'll relay everything (blocks, tx, addrs, etc)

Definition at line 65 of file net.h.

◆ MAX_PROTOCOL_MESSAGE_LENGTH

const unsigned int MAX_PROTOCOL_MESSAGE_LENGTH = 4 * 1000 * 1000
static

Maximum length of incoming protocol messages (no message over 4 MB is currently acceptable).

Definition at line 61 of file net.h.

◆ MAX_SUBVERSION_LENGTH

const unsigned int MAX_SUBVERSION_LENGTH = 256
static

Maximum length of the user agent string in version message.

Definition at line 63 of file net.h.

◆ MAX_UPLOAD_TIMEFRAME

const uint64_t MAX_UPLOAD_TIMEFRAME = 60 * 60 * 24
static

The default timeframe for -maxuploadtarget.

1 day.

Definition at line 83 of file net.h.

◆ NET_MESSAGE_COMMAND_OTHER

const std::string NET_MESSAGE_COMMAND_OTHER

Definition at line 77 of file net.cpp.

◆ PING_INTERVAL

const int PING_INTERVAL = 2 * 60
static

Time between pings automatically sent out for latency probing and keepalive (in seconds).

Definition at line 49 of file net.h.

◆ strSubVersion

std::string strSubVersion

Subversion as sent to the P2P network in version messages.

Definition at line 90 of file net.cpp.

◆ TIMEOUT_INTERVAL

const int TIMEOUT_INTERVAL = 20 * 60
static

Time after which to disconnect, after waiting for a ping response (or inactivity).

Definition at line 51 of file net.h.