Master Core  v0.0.9 - 2abfd2849db8ba7a83957c64eb976b406713c123
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Classes | Typedefs | Enumerations | Functions | Variables
net.h File Reference
#include "bloom.h"
#include "compat.h"
#include "hash.h"
#include "limitedmap.h"
#include "mruset.h"
#include "netbase.h"
#include "protocol.h"
#include "sync.h"
#include "uint256.h"
#include "util.h"
#include <deque>
#include <stdint.h>
#include <arpa/inet.h>
#include <boost/foreach.hpp>
#include <boost/signals2/signal.hpp>
#include <openssl/rand.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  CNodeSignals
 
struct  LocalServiceInfo
 
class  CNodeStats
 
class  CNetMessage
 
class  CNode
 Information about a peer. More...
 
class  CAddrDB
 Access to the (IP) address database (peers.dat) More...
 

Typedefs

typedef int NodeId
 

Enumerations

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

Functions

unsigned int ReceiveFloodSize ()
 
unsigned int SendBufferSize ()
 
void AddOneShot (std::string strDest)
 
bool RecvLine (SOCKET hSocket, std::string &strLine)
 
bool GetMyExternalIP (CNetAddr &ipRet)
 
void AddressCurrentlyConnected (const CService &addr)
 
CNodeFindNode (const CNetAddr &ip)
 
CNodeFindNode (const CService &ip)
 
CNodeConnectNode (CAddress addrConnect, const char *strDest=NULL)
 
void MapPort (bool fUseUPnP)
 
unsigned short GetListenPort ()
 
bool BindListenPort (const CService &bindAddr, std::string &strError=REF(std::string()))
 
void StartNode (boost::thread_group &threadGroup)
 
bool StopNode ()
 
void SocketSendData (CNode *pnode)
 
CNodeSignalsGetNodeSignals ()
 
void SetLimited (enum Network net, bool fLimited=true)
 Make a particular network entirely off-limits (no automatic connects to it) More...
 
bool IsLimited (enum Network net)
 
bool IsLimited (const CNetAddr &addr)
 
bool AddLocal (const CService &addr, int nScore=LOCAL_NONE)
 
bool AddLocal (const CNetAddr &addr, int nScore=LOCAL_NONE)
 
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=NULL)
 
bool IsReachable (const CNetAddr &addr)
 check whether a given address is in a network we can probably connect to More...
 
void SetReachable (enum Network net, bool fFlag=true)
 
CAddress GetLocalAddress (const CNetAddr *paddrPeer=NULL)
 
void RelayTransaction (const CTransaction &tx, const uint256 &hash)
 
void RelayTransaction (const CTransaction &tx, const uint256 &hash, const CDataStream &ss)
 

Variables

static const unsigned int MAX_INV_SZ = 50000
 The maximum number of entries in an 'inv' protocol message. More...
 
static const size_t MAPASKFOR_MAX_SZ = MAX_INV_SZ
 The maximum number of entries in mapAskFor. More...
 
bool fDiscover
 
uint64_t nLocalServices
 
uint64_t nLocalHostNonce
 
CAddrMan addrman
 
int nMaxConnections
 
std::vector< CNode * > vNodes
 
CCriticalSection cs_vNodes
 
std::map< CInv, CDataStreammapRelay
 
std::deque< std::pair< int64_t, CInv > > vRelayExpiration
 
CCriticalSection cs_mapRelay
 
limitedmap< CInv, int64_t > mapAlreadyAskedFor
 
std::vector< std::string > vAddedNodes
 
CCriticalSection cs_vAddedNodes
 
NodeId nLastNodeId
 
CCriticalSection cs_nLastNodeId
 
CCriticalSection cs_mapLocalHost
 
map< CNetAddr, LocalServiceInfomapLocalHost
 

Typedef Documentation

typedef int NodeId

Definition at line 61 of file net.h.

Enumeration Type Documentation

anonymous enum
Enumerator
LOCAL_NONE 
LOCAL_IF 
LOCAL_BIND 
LOCAL_UPNP 
LOCAL_HTTP 
LOCAL_MANUAL 
LOCAL_MAX 

Definition at line 77 of file net.h.

Function Documentation

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

Definition at line 216 of file net.cpp.

References AdvertizeLocal(), fDiscover, CNetAddr::GetNetwork(), CService::GetPort(), IsLimited(), CNetAddr::IsRoutable(), LOCAL_MANUAL, LOCK, LogPrintf, LocalServiceInfo::nPort, LocalServiceInfo::nScore, SetReachable(), and CService::ToString().

Referenced by AddLocal(), AppInit2(), BindListenPort(), Discover(), and ThreadGetMyExternalIP().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 245 of file net.cpp.

References AddLocal(), and GetListenPort().

+ Here is the call graph for this function:

void AddOneShot ( std::string  strDest)

Definition at line 88 of file net.cpp.

References LOCK.

Referenced by AppInit2(), ProcessOneShot(), and ThreadDNSAddressSeed().

+ Here is the caller graph for this function:

void AddressCurrentlyConnected ( const CService addr)

Definition at line 400 of file net.cpp.

References CAddrMan::Connected().

Referenced by ProcessMessage().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool BindListenPort ( const CService bindAddr,
std::string &  strError = REF(std::string()) 
)

Definition at line 1561 of file net.cpp.

References _(), AddLocal(), fDiscover, CService::GetSockAddr(), INVALID_SOCKET, CNetAddr::IsIPv6(), CNetAddr::IsRoutable(), LOCAL_BIND, LogPrintf, NetworkErrorString(), SOCKET_ERROR, strprintf, CService::ToString(), WSAEADDRINUSE, and WSAGetLastError.

Referenced by Bind().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

CNode* ConnectNode ( CAddress  addrConnect,
const char *  strDest = NULL 
)

debug print

Definition at line 440 of file net.cpp.

References CNode::AddRef(), CAddrMan::Attempt(), ConnectSocket(), ConnectSocketByName(), FindNode(), GetAdjustedTime(), GetTime(), IsLocal(), LOCK, LogPrint(), LogPrintf, NetworkErrorString(), CAddress::nTime, CNode::nTimeConnected, Params(), SOCKET_ERROR, CService::ToString(), and WSAGetLastError.

Referenced by addnode(), and OpenNetworkConnection().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

CNode* FindNode ( const CNetAddr ip)

Definition at line 413 of file net.cpp.

References CNode::addr, and LOCK.

Referenced by ConnectNode(), and OpenNetworkConnection().

+ Here is the caller graph for this function:

CNode* FindNode ( const CService ip)

Definition at line 431 of file net.cpp.

References CNode::addr, and LOCK.

unsigned short GetListenPort ( )

Definition at line 94 of file net.cpp.

References GetArg(), and Params().

Referenced by AddLocal(), and AppInit2().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Definition at line 100 of file net.cpp.

References fNoListen, and LOCK.

Referenced by GetLocalAddress().

+ Here is the caller graph for this function:

CAddress GetLocalAddress ( const CNetAddr paddrPeer = NULL)

Definition at line 125 of file net.cpp.

References GetAdjustedTime(), GetLocal(), nLocalServices, CAddress::nServices, and CAddress::nTime.

Referenced by AdvertizeLocal(), ProcessMessage(), CNode::PushVersion(), and SendMessages().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool GetMyExternalIP ( CNetAddr ipRet)

Definition at line 346 of file net.cpp.

References GetMyExternalIP2(), and CNetAddr::IsValid().

Referenced by ThreadGetMyExternalIP().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

CNodeSignals& GetNodeSignals ( )

Definition at line 86 of file net.cpp.

References g_signals.

Referenced by AppInit2(), CNode::CNode(), Shutdown(), and CNode::~CNode().

+ Here is the caller graph for this function:

bool IsLimited ( enum Network  net)

Definition at line 259 of file net.cpp.

References LOCK, and vfLimited.

Referenced by AddLocal(), AppInit2(), Bind(), Discover(), IsLimited(), and ThreadOpenConnections().

+ Here is the caller graph for this function:

bool IsLimited ( const CNetAddr addr)

Definition at line 265 of file net.cpp.

References CNetAddr::GetNetwork(), and IsLimited().

+ Here is the call graph for this function:

bool IsLocal ( const CService addr)

check whether a given address is potentially local

Definition at line 286 of file net.cpp.

References LOCK.

Referenced by ConnectNode(), CNetAddr::GetGroup(), CNetAddr::IsRoutable(), OpenNetworkConnection(), and ThreadOpenConnections().

+ Here is the caller graph for this function:

bool IsReachable ( const CNetAddr addr)

check whether a given address is in a network we can probably connect to

Definition at line 293 of file net.cpp.

References CNetAddr::GetNetwork(), LOCK, vfLimited, and vfReachable.

Referenced by ProcessMessage().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void MapPort ( bool  fUseUPnP)

Definition at line 1154 of file net.cpp.

Referenced by OptionsModel::setData(), StartNode(), and StopNode().

+ Here is the caller graph for this function:

unsigned int ReceiveFloodSize ( )
inline

Definition at line 44 of file net.h.

References GetArg().

Referenced by ThreadSocketHandler().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool RecvLine ( SOCKET  hSocket,
std::string &  strLine 
)

Definition at line 138 of file net.cpp.

References LogPrint(), MilliSleep(), NetworkErrorString(), WSAEINPROGRESS, WSAEINTR, WSAEMSGSIZE, WSAEWOULDBLOCK, and WSAGetLastError.

Referenced by GetMyExternalIP2().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void RelayTransaction ( const CTransaction tx,
const uint256 hash 
)

Definition at line 1807 of file net.cpp.

References PROTOCOL_VERSION, RelayTransaction(), CDataStream::reserve(), and SER_NETWORK.

Referenced by ProcessMessage(), RelayTransaction(), CWalletTx::RelayWalletTransaction(), and sendrawtransaction().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void RelayTransaction ( const CTransaction tx,
const uint256 hash,
const CDataStream ss 
)

Definition at line 1815 of file net.cpp.

References CNode::cs_filter, CNode::fRelayTxes, GetTime(), CBloomFilter::IsRelevantAndUpdate(), LOCK, MSG_TX, CNode::pfilter, and CNode::PushInventory().

+ Here is the call graph for this function:

bool SeenLocal ( const CService addr)

vote for a local address

Definition at line 271 of file net.cpp.

References AdvertizeLocal(), and LOCK.

Referenced by ProcessMessage().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

unsigned int SendBufferSize ( )
inline

Definition at line 45 of file net.h.

References GetArg().

Referenced by CNode::CNode(), ProcessGetData(), ProcessMessage(), ProcessMessages(), and ThreadMessageHandler().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void SetLimited ( enum Network  net,
bool  fLimited = true 
)

Make a particular network entirely off-limits (no automatic connects to it)

Definition at line 251 of file net.cpp.

References LOCK, NET_UNROUTABLE, and vfLimited.

Referenced by AppInit2().

+ Here is the caller graph for this function:

void SetReachable ( enum Network  net,
bool  fFlag = true 
)

Definition at line 207 of file net.cpp.

References LOCK, NET_IPV4, NET_IPV6, and vfReachable.

Referenced by AddLocal(), and AppInit2().

+ Here is the caller graph for this function:

void SocketSendData ( CNode pnode)

Definition at line 693 of file net.cpp.

References CNode::CloseSocketDisconnect(), Checkpoints::data, GetTime(), CNode::hSocket, LogPrintf, MSG_NOSIGNAL, NetworkErrorString(), CNode::nLastSend, CNode::nSendBytes, CNode::nSendOffset, CNode::nSendSize, CNode::RecordBytesSent(), CNode::vSendMsg, WSAEINPROGRESS, WSAEINTR, WSAEMSGSIZE, WSAEWOULDBLOCK, and WSAGetLastError.

Referenced by CNode::EndMessage(), and ThreadSocketHandler().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void StartNode ( boost::thread_group &  threadGroup)

Definition at line 1708 of file net.cpp.

References Discover(), DUMP_ADDRESSES_INTERVAL, DumpAddresses(), GetBoolArg(), INVALID_SOCKET, LogPrintf, LoopForever(), MapPort(), nLocalServices, ThreadDNSAddressSeed(), ThreadMessageHandler(), ThreadOpenAddedConnections(), ThreadOpenConnections(), ThreadSocketHandler(), TraceThread(), and USE_UPNP.

Referenced by AppInit2().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

bool StopNode ( )

Definition at line 1751 of file net.cpp.

References DumpAddresses(), LogPrintf, MapPort(), MAX_OUTBOUND_CONNECTIONS, MilliSleep(), and CSemaphore::post().

Referenced by Shutdown().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Variable Documentation

CAddrMan addrman

Definition at line 60 of file net.cpp.

Referenced by AppInit2(), and ProcessMessage().

CCriticalSection cs_mapLocalHost

Definition at line 52 of file net.cpp.

Referenced by getnetworkinfo().

CCriticalSection cs_mapRelay

Definition at line 67 of file net.cpp.

Referenced by ProcessGetData().

CCriticalSection cs_nLastNodeId

Definition at line 80 of file net.cpp.

CCriticalSection cs_vAddedNodes

Definition at line 77 of file net.cpp.

Referenced by addnode(), and getaddednodeinfo().

CCriticalSection cs_vNodes
bool fDiscover

Definition at line 50 of file net.cpp.

Referenced by AddLocal(), AppInit2(), BindListenPort(), and Discover().

limitedmap<CInv, int64_t> mapAlreadyAskedFor

Referenced by ProcessMessage().

const size_t MAPASKFOR_MAX_SZ = MAX_INV_SZ
static

The maximum number of entries in mapAskFor.

Definition at line 42 of file net.h.

Referenced by CNode::AskFor().

map<CNetAddr, LocalServiceInfo> mapLocalHost

Definition at line 53 of file net.cpp.

Referenced by getnetworkinfo().

std::map<CInv, CDataStream> mapRelay

Definition at line 65 of file net.cpp.

Referenced by ProcessGetData().

const unsigned int MAX_INV_SZ = 50000
static

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

Definition at line 40 of file net.h.

Referenced by ProcessMessage().

NodeId nLastNodeId

Definition at line 79 of file net.cpp.

uint64_t nLocalHostNonce

Definition at line 58 of file net.cpp.

Referenced by ProcessMessage(), and CNode::PushVersion().

uint64_t nLocalServices

Definition at line 51 of file net.cpp.

Referenced by GetLocalAddress(), CNode::PushVersion(), and StartNode().

int nMaxConnections

Definition at line 61 of file net.cpp.

Referenced by AppInit2().

std::vector<std::string> vAddedNodes

Definition at line 76 of file net.cpp.

Referenced by addnode(), and getaddednodeinfo().

std::vector<CNode*> vNodes
std::deque<std::pair<int64_t, CInv> > vRelayExpiration

Definition at line 66 of file net.cpp.