net: move whitelist functions into CConnman
This commit is contained in:
parent
53347f0cb9
commit
6c19d92361
3 changed files with 12 additions and 15 deletions
|
@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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)
|
||||||
|
|
16
src/net.h
16
src/net.h
|
@ -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);
|
||||||
|
|
Loading…
Reference in a new issue