net: move whitelist functions into CConnman

This commit is contained in:
Cory Fields 2016-04-17 18:34:32 -04:00
parent 53347f0cb9
commit 6c19d92361
3 changed files with 12 additions and 15 deletions

View file

@ -1146,7 +1146,7 @@ bool AppInit2(boost::thread_group& threadGroup, CScheduler& scheduler)
LookupSubNet(net.c_str(), subnet); LookupSubNet(net.c_str(), subnet);
if (!subnet.IsValid()) if (!subnet.IsValid())
return InitError(strprintf(_("Invalid netmask specified in -whitelist: '%s'"), net)); return InitError(strprintf(_("Invalid netmask specified in -whitelist: '%s'"), net));
CNode::AddWhitelistedRange(subnet); connman.AddWhitelistedRange(subnet);
} }
} }

View file

@ -625,10 +625,7 @@ void CConnman::SetBannedSetDirty(bool dirty)
} }
std::vector<CSubNet> CNode::vWhitelistedRange; bool CConnman::IsWhitelistedRange(const CNetAddr &addr) {
CCriticalSection CNode::cs_vWhitelistedRange;
bool CNode::IsWhitelistedRange(const CNetAddr &addr) {
LOCK(cs_vWhitelistedRange); LOCK(cs_vWhitelistedRange);
BOOST_FOREACH(const CSubNet& subnet, vWhitelistedRange) { BOOST_FOREACH(const CSubNet& subnet, vWhitelistedRange) {
if (subnet.Match(addr)) if (subnet.Match(addr))
@ -637,7 +634,7 @@ bool CNode::IsWhitelistedRange(const CNetAddr &addr) {
return false; return false;
} }
void CNode::AddWhitelistedRange(const CSubNet &subnet) { void CConnman::AddWhitelistedRange(const CSubNet &subnet) {
LOCK(cs_vWhitelistedRange); LOCK(cs_vWhitelistedRange);
vWhitelistedRange.push_back(subnet); vWhitelistedRange.push_back(subnet);
} }
@ -992,7 +989,7 @@ void CConnman::AcceptConnection(const ListenSocket& hListenSocket) {
if (!addr.SetSockAddr((const struct sockaddr*)&sockaddr)) if (!addr.SetSockAddr((const struct sockaddr*)&sockaddr))
LogPrintf("Warning: Unknown socket family\n"); LogPrintf("Warning: Unknown socket family\n");
bool whitelisted = hListenSocket.whitelisted || CNode::IsWhitelistedRange(addr); bool whitelisted = hListenSocket.whitelisted || IsWhitelistedRange(addr);
{ {
LOCK(cs_vNodes); LOCK(cs_vNodes);
BOOST_FOREACH(CNode* pnode, vNodes) BOOST_FOREACH(CNode* pnode, vNodes)

View file

@ -169,6 +169,7 @@ public:
bool DisconnectNode(NodeId id); bool DisconnectNode(NodeId id);
bool DisconnectSubnet(const CSubNet& subnet); bool DisconnectSubnet(const CSubNet& subnet);
void AddWhitelistedRange(const CSubNet &subnet);
private: private:
struct ListenSocket { struct ListenSocket {
SOCKET socket; SOCKET socket;
@ -192,6 +193,8 @@ private:
bool AttemptToEvictConnection(); bool AttemptToEvictConnection();
CNode* ConnectNode(CAddress addrConnect, const char *pszDest, bool fCountFailure); CNode* ConnectNode(CAddress addrConnect, const char *pszDest, bool fCountFailure);
bool IsWhitelistedRange(const CNetAddr &addr);
void DeleteNode(CNode* pnode); void DeleteNode(CNode* pnode);
//!check is the banlist has unwritten changes //!check is the banlist has unwritten changes
bool BannedSetIsDirty(); bool BannedSetIsDirty();
@ -203,6 +206,11 @@ private:
void DumpData(); void DumpData();
void DumpBanlist(); void DumpBanlist();
// Whitelisted ranges. Any node connecting from these is automatically
// whitelisted (as well as those connecting to whitelisted binds).
std::vector<CSubNet> vWhitelistedRange;
CCriticalSection cs_vWhitelistedRange;
std::vector<ListenSocket> vhListenSocket; std::vector<ListenSocket> vhListenSocket;
banmap_t setBanned; banmap_t setBanned;
CCriticalSection cs_setBanned; CCriticalSection cs_setBanned;
@ -432,11 +440,6 @@ public:
const uint64_t nKeyedNetGroup; const uint64_t nKeyedNetGroup;
protected: protected:
// Whitelisted ranges. Any node connecting from these is automatically
// whitelisted (as well as those connecting to whitelisted binds).
static std::vector<CSubNet> vWhitelistedRange;
static CCriticalSection cs_vWhitelistedRange;
mapMsgCmdSize mapSendBytesPerMsgCmd; mapMsgCmdSize mapSendBytesPerMsgCmd;
mapMsgCmdSize mapRecvBytesPerMsgCmd; mapMsgCmdSize mapRecvBytesPerMsgCmd;
@ -803,9 +806,6 @@ public:
void copyStats(CNodeStats &stats); void copyStats(CNodeStats &stats);
static bool IsWhitelistedRange(const CNetAddr &ip);
static void AddWhitelistedRange(const CSubNet &subnet);
// Network stats // Network stats
static void RecordBytesRecv(uint64_t bytes); static void RecordBytesRecv(uint64_t bytes);
static void RecordBytesSent(uint64_t bytes); static void RecordBytesSent(uint64_t bytes);