Skip to content

Commit 91f6e6e

Browse files
jonatackhebasto
andcommitted
scripted-diff: add NetPermissionFlags scopes where not already present
-BEGIN VERIFY SCRIPT- s() { git grep -l "$1" -- 'src' ':!src/net_permissions.h' | xargs sed -i -E "s/([^:])$1/\1NetPermissionFlags::$1/"; } s 'PF_NONE' s 'PF_BLOOMFILTER' s 'PF_RELAY' s 'PF_FORCERELAY' s 'PF_DOWNLOAD' s 'PF_NOBAN' s 'PF_MEMPOOL' s 'PF_ADDR' s 'PF_ISIMPLICIT' s 'PF_ALL' -END VERIFY SCRIPT- Co-authored-by: Hennadii Stepanov <[email protected]>
1 parent 2e30e32 commit 91f6e6e

File tree

6 files changed

+65
-65
lines changed

6 files changed

+65
-65
lines changed

src/net.cpp

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1005,7 +1005,7 @@ bool CConnman::AttemptToEvictConnection()
10051005

10061006
LOCK(cs_vNodes);
10071007
for (const CNode* node : vNodes) {
1008-
if (node->HasPermission(PF_NOBAN))
1008+
if (node->HasPermission(NetPermissionFlags::PF_NOBAN))
10091009
continue;
10101010
if (!node->IsInboundConn())
10111011
continue;
@@ -1078,11 +1078,11 @@ void CConnman::CreateNodeFromAcceptedSocket(SOCKET hSocket,
10781078

10791079
AddWhitelistPermissionFlags(permissionFlags, addr);
10801080
if (NetPermissions::HasFlag(permissionFlags, NetPermissionFlags::PF_ISIMPLICIT)) {
1081-
NetPermissions::ClearFlag(permissionFlags, PF_ISIMPLICIT);
1082-
if (gArgs.GetBoolArg("-whitelistforcerelay", DEFAULT_WHITELISTFORCERELAY)) NetPermissions::AddFlag(permissionFlags, PF_FORCERELAY);
1083-
if (gArgs.GetBoolArg("-whitelistrelay", DEFAULT_WHITELISTRELAY)) NetPermissions::AddFlag(permissionFlags, PF_RELAY);
1084-
NetPermissions::AddFlag(permissionFlags, PF_MEMPOOL);
1085-
NetPermissions::AddFlag(permissionFlags, PF_NOBAN);
1081+
NetPermissions::ClearFlag(permissionFlags, NetPermissionFlags::PF_ISIMPLICIT);
1082+
if (gArgs.GetBoolArg("-whitelistforcerelay", DEFAULT_WHITELISTFORCERELAY)) NetPermissions::AddFlag(permissionFlags, NetPermissionFlags::PF_FORCERELAY);
1083+
if (gArgs.GetBoolArg("-whitelistrelay", DEFAULT_WHITELISTRELAY)) NetPermissions::AddFlag(permissionFlags, NetPermissionFlags::PF_RELAY);
1084+
NetPermissions::AddFlag(permissionFlags, NetPermissionFlags::PF_MEMPOOL);
1085+
NetPermissions::AddFlag(permissionFlags, NetPermissionFlags::PF_NOBAN);
10861086
}
10871087

10881088
{
@@ -1141,7 +1141,7 @@ void CConnman::CreateNodeFromAcceptedSocket(SOCKET hSocket,
11411141
uint64_t nonce = GetDeterministicRandomizer(RANDOMIZER_ID_LOCALHOSTNONCE).Write(id).Finalize();
11421142

11431143
ServiceFlags nodeServices = nLocalServices;
1144-
if (NetPermissions::HasFlag(permissionFlags, PF_BLOOMFILTER)) {
1144+
if (NetPermissions::HasFlag(permissionFlags, NetPermissionFlags::PF_BLOOMFILTER)) {
11451145
nodeServices = static_cast<ServiceFlags>(nodeServices | NODE_BLOOM);
11461146
}
11471147

src/net.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -402,7 +402,7 @@ class CNode
402402
std::unique_ptr<TransportDeserializer> m_deserializer;
403403
std::unique_ptr<TransportSerializer> m_serializer;
404404

405-
NetPermissionFlags m_permissionFlags{PF_NONE};
405+
NetPermissionFlags m_permissionFlags{NetPermissionFlags::PF_NONE};
406406
std::atomic<ServiceFlags> nServices{NODE_NONE};
407407
SOCKET hSocket GUARDED_BY(cs_hSocket);
408408
/** Total size of all vSendMsg entries */

src/net_permissions.cpp

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,12 @@ namespace {
2323
// The parse the following format "perm1,perm2@xxxxxx"
2424
bool TryParsePermissionFlags(const std::string str, NetPermissionFlags& output, size_t& readen, bilingual_str& error)
2525
{
26-
NetPermissionFlags flags = PF_NONE;
26+
NetPermissionFlags flags = NetPermissionFlags::PF_NONE;
2727
const auto atSeparator = str.find('@');
2828

2929
// if '@' is not found (ie, "xxxxx"), the caller should apply implicit permissions
3030
if (atSeparator == std::string::npos) {
31-
NetPermissions::AddFlag(flags, PF_ISIMPLICIT);
31+
NetPermissions::AddFlag(flags, NetPermissionFlags::PF_ISIMPLICIT);
3232
readen = 0;
3333
}
3434
// else (ie, "perm1,perm2@xxxxx"), let's enumerate the permissions by splitting by ',' and calculate the flags
@@ -44,14 +44,14 @@ bool TryParsePermissionFlags(const std::string str, NetPermissionFlags& output,
4444
readen += len; // We read "perm1"
4545
if (commaSeparator != std::string::npos) readen++; // We read ","
4646

47-
if (permission == "bloomfilter" || permission == "bloom") NetPermissions::AddFlag(flags, PF_BLOOMFILTER);
48-
else if (permission == "noban") NetPermissions::AddFlag(flags, PF_NOBAN);
49-
else if (permission == "forcerelay") NetPermissions::AddFlag(flags, PF_FORCERELAY);
50-
else if (permission == "mempool") NetPermissions::AddFlag(flags, PF_MEMPOOL);
51-
else if (permission == "download") NetPermissions::AddFlag(flags, PF_DOWNLOAD);
52-
else if (permission == "all") NetPermissions::AddFlag(flags, PF_ALL);
53-
else if (permission == "relay") NetPermissions::AddFlag(flags, PF_RELAY);
54-
else if (permission == "addr") NetPermissions::AddFlag(flags, PF_ADDR);
47+
if (permission == "bloomfilter" || permission == "bloom") NetPermissions::AddFlag(flags, NetPermissionFlags::PF_BLOOMFILTER);
48+
else if (permission == "noban") NetPermissions::AddFlag(flags, NetPermissionFlags::PF_NOBAN);
49+
else if (permission == "forcerelay") NetPermissions::AddFlag(flags, NetPermissionFlags::PF_FORCERELAY);
50+
else if (permission == "mempool") NetPermissions::AddFlag(flags, NetPermissionFlags::PF_MEMPOOL);
51+
else if (permission == "download") NetPermissions::AddFlag(flags, NetPermissionFlags::PF_DOWNLOAD);
52+
else if (permission == "all") NetPermissions::AddFlag(flags, NetPermissionFlags::PF_ALL);
53+
else if (permission == "relay") NetPermissions::AddFlag(flags, NetPermissionFlags::PF_RELAY);
54+
else if (permission == "addr") NetPermissions::AddFlag(flags, NetPermissionFlags::PF_ADDR);
5555
else if (permission.length() == 0); // Allow empty entries
5656
else {
5757
error = strprintf(_("Invalid P2P permission: '%s'"), permission);
@@ -71,13 +71,13 @@ bool TryParsePermissionFlags(const std::string str, NetPermissionFlags& output,
7171
std::vector<std::string> NetPermissions::ToStrings(NetPermissionFlags flags)
7272
{
7373
std::vector<std::string> strings;
74-
if (NetPermissions::HasFlag(flags, PF_BLOOMFILTER)) strings.push_back("bloomfilter");
75-
if (NetPermissions::HasFlag(flags, PF_NOBAN)) strings.push_back("noban");
76-
if (NetPermissions::HasFlag(flags, PF_FORCERELAY)) strings.push_back("forcerelay");
77-
if (NetPermissions::HasFlag(flags, PF_RELAY)) strings.push_back("relay");
78-
if (NetPermissions::HasFlag(flags, PF_MEMPOOL)) strings.push_back("mempool");
79-
if (NetPermissions::HasFlag(flags, PF_DOWNLOAD)) strings.push_back("download");
80-
if (NetPermissions::HasFlag(flags, PF_ADDR)) strings.push_back("addr");
74+
if (NetPermissions::HasFlag(flags, NetPermissionFlags::PF_BLOOMFILTER)) strings.push_back("bloomfilter");
75+
if (NetPermissions::HasFlag(flags, NetPermissionFlags::PF_NOBAN)) strings.push_back("noban");
76+
if (NetPermissions::HasFlag(flags, NetPermissionFlags::PF_FORCERELAY)) strings.push_back("forcerelay");
77+
if (NetPermissions::HasFlag(flags, NetPermissionFlags::PF_RELAY)) strings.push_back("relay");
78+
if (NetPermissions::HasFlag(flags, NetPermissionFlags::PF_MEMPOOL)) strings.push_back("mempool");
79+
if (NetPermissions::HasFlag(flags, NetPermissionFlags::PF_DOWNLOAD)) strings.push_back("download");
80+
if (NetPermissions::HasFlag(flags, NetPermissionFlags::PF_ADDR)) strings.push_back("addr");
8181
return strings;
8282
}
8383

src/net_processing.cpp

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -680,7 +680,7 @@ static void UpdatePreferredDownload(const CNode& node, CNodeState* state) EXCLUS
680680
nPreferredDownload -= state->fPreferredDownload;
681681

682682
// Whether this node should be marked as a preferred download node.
683-
state->fPreferredDownload = (!node.IsInboundConn() || node.HasPermission(PF_NOBAN)) && !node.IsAddrFetchConn() && !node.fClient;
683+
state->fPreferredDownload = (!node.IsInboundConn() || node.HasPermission(NetPermissionFlags::PF_NOBAN)) && !node.IsAddrFetchConn() && !node.fClient;
684684

685685
nPreferredDownload += state->fPreferredDownload;
686686
}
@@ -960,24 +960,24 @@ void PeerManagerImpl::AddTxAnnouncement(const CNode& node, const GenTxid& gtxid,
960960
{
961961
AssertLockHeld(::cs_main); // For m_txrequest
962962
NodeId nodeid = node.GetId();
963-
if (!node.HasPermission(PF_RELAY) && m_txrequest.Count(nodeid) >= MAX_PEER_TX_ANNOUNCEMENTS) {
963+
if (!node.HasPermission(NetPermissionFlags::PF_RELAY) && m_txrequest.Count(nodeid) >= MAX_PEER_TX_ANNOUNCEMENTS) {
964964
// Too many queued announcements from this peer
965965
return;
966966
}
967967
const CNodeState* state = State(nodeid);
968968

969969
// Decide the TxRequestTracker parameters for this announcement:
970-
// - "preferred": if fPreferredDownload is set (= outbound, or PF_NOBAN permission)
970+
// - "preferred": if fPreferredDownload is set (= outbound, or NetPermissionFlags::PF_NOBAN permission)
971971
// - "reqtime": current time plus delays for:
972972
// - NONPREF_PEER_TX_DELAY for announcements from non-preferred connections
973973
// - TXID_RELAY_DELAY for txid announcements while wtxid peers are available
974974
// - OVERLOADED_PEER_TX_DELAY for announcements from peers which have at least
975-
// MAX_PEER_TX_REQUEST_IN_FLIGHT requests in flight (and don't have PF_RELAY).
975+
// MAX_PEER_TX_REQUEST_IN_FLIGHT requests in flight (and don't have NetPermissionFlags::PF_RELAY).
976976
auto delay = std::chrono::microseconds{0};
977977
const bool preferred = state->fPreferredDownload;
978978
if (!preferred) delay += NONPREF_PEER_TX_DELAY;
979979
if (!gtxid.IsWtxid() && m_wtxid_relay_peers > 0) delay += TXID_RELAY_DELAY;
980-
const bool overloaded = !node.HasPermission(PF_RELAY) &&
980+
const bool overloaded = !node.HasPermission(NetPermissionFlags::PF_RELAY) &&
981981
m_txrequest.CountInFlight(nodeid) >= MAX_PEER_TX_REQUEST_IN_FLIGHT;
982982
if (overloaded) delay += OVERLOADED_PEER_TX_DELAY;
983983
m_txrequest.ReceivedInv(nodeid, gtxid, preferred, current_time + delay);
@@ -1637,14 +1637,14 @@ void PeerManagerImpl::ProcessGetBlockData(CNode& pfrom, Peer& peer, const CInv&
16371637
// disconnect node in case we have reached the outbound limit for serving historical blocks
16381638
if (m_connman.OutboundTargetReached(true) &&
16391639
(((pindexBestHeader != nullptr) && (pindexBestHeader->GetBlockTime() - pindex->GetBlockTime() > HISTORICAL_BLOCK_AGE)) || inv.IsMsgFilteredBlk()) &&
1640-
!pfrom.HasPermission(PF_DOWNLOAD) // nodes with the download permission may exceed target
1640+
!pfrom.HasPermission(NetPermissionFlags::PF_DOWNLOAD) // nodes with the download permission may exceed target
16411641
) {
16421642
LogPrint(BCLog::NET, "historical block serving limit reached, disconnect peer=%d\n", pfrom.GetId());
16431643
pfrom.fDisconnect = true;
16441644
return;
16451645
}
16461646
// Avoid leaking prune-height by never sending blocks below the NODE_NETWORK_LIMITED threshold
1647-
if (!pfrom.HasPermission(PF_NOBAN) && (
1647+
if (!pfrom.HasPermission(NetPermissionFlags::PF_NOBAN) && (
16481648
(((pfrom.GetLocalServices() & NODE_NETWORK_LIMITED) == NODE_NETWORK_LIMITED) && ((pfrom.GetLocalServices() & NODE_NETWORK) != NODE_NETWORK) && (m_chainman.ActiveChain().Tip()->nHeight - pindex->nHeight > (int)NODE_NETWORK_LIMITED_MIN_BLOCKS + 2 /* add two blocks buffer extension for possible races */) )
16491649
)) {
16501650
LogPrint(BCLog::NET, "Ignore block request below NODE_NETWORK_LIMITED threshold, disconnect peer=%d\n", pfrom.GetId());
@@ -2738,7 +2738,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
27382738
bool fBlocksOnly = m_ignore_incoming_txs || (pfrom.m_tx_relay == nullptr);
27392739

27402740
// Allow peers with relay permission to send data other than blocks in blocks only mode
2741-
if (pfrom.HasPermission(PF_RELAY)) {
2741+
if (pfrom.HasPermission(NetPermissionFlags::PF_RELAY)) {
27422742
fBlocksOnly = false;
27432743
}
27442744

@@ -2952,7 +2952,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
29522952
}
29532953

29542954
LOCK(cs_main);
2955-
if (m_chainman.ActiveChainstate().IsInitialBlockDownload() && !pfrom.HasPermission(PF_DOWNLOAD)) {
2955+
if (m_chainman.ActiveChainstate().IsInitialBlockDownload() && !pfrom.HasPermission(NetPermissionFlags::PF_DOWNLOAD)) {
29562956
LogPrint(BCLog::NET, "Ignoring getheaders from peer=%d because node is in initial block download\n", pfrom.GetId());
29572957
return;
29582958
}
@@ -3011,7 +3011,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
30113011
// Stop processing the transaction early if
30123012
// 1) We are in blocks only mode and peer has no relay permission
30133013
// 2) This peer is a block-relay-only peer
3014-
if ((m_ignore_incoming_txs && !pfrom.HasPermission(PF_RELAY)) || (pfrom.m_tx_relay == nullptr))
3014+
if ((m_ignore_incoming_txs && !pfrom.HasPermission(NetPermissionFlags::PF_RELAY)) || (pfrom.m_tx_relay == nullptr))
30153015
{
30163016
LogPrint(BCLog::NET, "transaction sent in violation of protocol peer=%d\n", pfrom.GetId());
30173017
pfrom.fDisconnect = true;
@@ -3056,7 +3056,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
30563056
// (older than our recency filter) if trying to DoS us, without any need
30573057
// for witness malleation.
30583058
if (AlreadyHaveTx(GenTxid(/* is_wtxid=*/true, wtxid))) {
3059-
if (pfrom.HasPermission(PF_FORCERELAY)) {
3059+
if (pfrom.HasPermission(NetPermissionFlags::PF_FORCERELAY)) {
30603060
// Always relay transactions received from peers with forcerelay
30613061
// permission, even if they were already in the mempool, allowing
30623062
// the node to function as a gateway for nodes hidden behind it.
@@ -3585,7 +3585,7 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
35853585

35863586
pfrom.vAddrToSend.clear();
35873587
std::vector<CAddress> vAddr;
3588-
if (pfrom.HasPermission(PF_ADDR)) {
3588+
if (pfrom.HasPermission(NetPermissionFlags::PF_ADDR)) {
35893589
vAddr = m_connman.GetAddresses(MAX_ADDR_TO_SEND, MAX_PCT_ADDR_TO_SEND);
35903590
} else {
35913591
vAddr = m_connman.GetAddresses(pfrom, MAX_ADDR_TO_SEND, MAX_PCT_ADDR_TO_SEND);
@@ -3598,19 +3598,19 @@ void PeerManagerImpl::ProcessMessage(CNode& pfrom, const std::string& msg_type,
35983598
}
35993599

36003600
if (msg_type == NetMsgType::MEMPOOL) {
3601-
if (!(pfrom.GetLocalServices() & NODE_BLOOM) && !pfrom.HasPermission(PF_MEMPOOL))
3601+
if (!(pfrom.GetLocalServices() & NODE_BLOOM) && !pfrom.HasPermission(NetPermissionFlags::PF_MEMPOOL))
36023602
{
3603-
if (!pfrom.HasPermission(PF_NOBAN))
3603+
if (!pfrom.HasPermission(NetPermissionFlags::PF_NOBAN))
36043604
{
36053605
LogPrint(BCLog::NET, "mempool request with bloom filters disabled, disconnect peer=%d\n", pfrom.GetId());
36063606
pfrom.fDisconnect = true;
36073607
}
36083608
return;
36093609
}
36103610

3611-
if (m_connman.OutboundTargetReached(false) && !pfrom.HasPermission(PF_MEMPOOL))
3611+
if (m_connman.OutboundTargetReached(false) && !pfrom.HasPermission(NetPermissionFlags::PF_MEMPOOL))
36123612
{
3613-
if (!pfrom.HasPermission(PF_NOBAN))
3613+
if (!pfrom.HasPermission(NetPermissionFlags::PF_NOBAN))
36143614
{
36153615
LogPrint(BCLog::NET, "mempool request with bandwidth limit reached, disconnect peer=%d\n", pfrom.GetId());
36163616
pfrom.fDisconnect = true;
@@ -3825,7 +3825,7 @@ bool PeerManagerImpl::MaybeDiscourageAndDisconnect(CNode& pnode, Peer& peer)
38253825
peer.m_should_discourage = false;
38263826
} // peer.m_misbehavior_mutex
38273827

3828-
if (pnode.HasPermission(PF_NOBAN)) {
3828+
if (pnode.HasPermission(NetPermissionFlags::PF_NOBAN)) {
38293829
// We never disconnect or discourage peers for bad behavior if they have the NOBAN permission flag
38303830
LogPrintf("Warning: not punishing noban peer %d!\n", peer.m_id);
38313831
return false;
@@ -4463,7 +4463,7 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
44634463
if (pto->m_tx_relay != nullptr) {
44644464
LOCK(pto->m_tx_relay->cs_tx_inventory);
44654465
// Check whether periodic sends should happen
4466-
bool fSendTrickle = pto->HasPermission(PF_NOBAN);
4466+
bool fSendTrickle = pto->HasPermission(NetPermissionFlags::PF_NOBAN);
44674467
if (pto->m_tx_relay->nNextInvSend < current_time) {
44684468
fSendTrickle = true;
44694469
if (pto->IsInboundConn()) {
@@ -4625,7 +4625,7 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
46254625
// Note: If all our peers are inbound, then we won't
46264626
// disconnect our sync peer for stalling; we have bigger
46274627
// problems if we can't get any outbound peers.
4628-
if (!pto->HasPermission(PF_NOBAN)) {
4628+
if (!pto->HasPermission(NetPermissionFlags::PF_NOBAN)) {
46294629
LogPrintf("Timeout downloading headers from peer=%d, disconnecting\n", pto->GetId());
46304630
pto->fDisconnect = true;
46314631
return true;
@@ -4712,7 +4712,7 @@ bool PeerManagerImpl::SendMessages(CNode* pto)
47124712
!m_ignore_incoming_txs &&
47134713
pto->GetCommonVersion() >= FEEFILTER_VERSION &&
47144714
gArgs.GetBoolArg("-feefilter", DEFAULT_FEEFILTER) &&
4715-
!pto->HasPermission(PF_FORCERELAY) // peers with the forcerelay permission should not filter txs to us
4715+
!pto->HasPermission(NetPermissionFlags::PF_FORCERELAY) // peers with the forcerelay permission should not filter txs to us
47164716
) {
47174717
CAmount currentFilter = m_mempool.GetMinFee(gArgs.GetArg("-maxmempool", DEFAULT_MAX_MEMPOOL_SIZE) * 1000000).GetFeePerK();
47184718
static FeeFilterRounder g_filter_rounder{CFeeRate{DEFAULT_MIN_RELAY_TX_FEE}};

src/qt/rpcconsole.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1062,7 +1062,7 @@ void RPCConsole::updateDetailWidget()
10621062
ui->peerSubversion->setText(QString::fromStdString(stats->nodeStats.cleanSubVer));
10631063
ui->peerConnectionType->setText(GUIUtil::ConnectionTypeToQString(stats->nodeStats.m_conn_type, /* prepend_direction */ true));
10641064
ui->peerNetwork->setText(GUIUtil::NetworkToQString(stats->nodeStats.m_network));
1065-
if (stats->nodeStats.m_permissionFlags == PF_NONE) {
1065+
if (stats->nodeStats.m_permissionFlags == NetPermissionFlags::PF_NONE) {
10661066
ui->peerPermissions->setText(ts.na);
10671067
} else {
10681068
QStringList permissions;

0 commit comments

Comments
 (0)