diff --git a/src/avalanche/test/processor_tests.cpp b/src/avalanche/test/processor_tests.cpp --- a/src/avalanche/test/processor_tests.cpp +++ b/src/avalanche/test/processor_tests.cpp @@ -99,9 +99,9 @@ static NodeId id = 0; CAddress addr(ip(GetRandInt(0xffffffff)), NODE_NONE); - auto node = new CNode(id++, ServiceFlags(NODE_NETWORK), 0, - INVALID_SOCKET, addr, 0, 0, CAddress(), "", - /*fInboundIn=*/false); + auto node = + new CNode(id++, ServiceFlags(NODE_NETWORK), 0, INVALID_SOCKET, addr, + 0, 0, CAddress(), "", ConnectionType::OUTBOUND); node->SetSendVersion(PROTOCOL_VERSION); node->nServices = nServices; m_node.peer_logic->InitializeNode(config, node); diff --git a/src/net.h b/src/net.h --- a/src/net.h +++ b/src/net.h @@ -136,6 +136,11 @@ std::string m_type; }; +enum class ConnectionType { + INBOUND, + OUTBOUND, +}; + namespace { struct CConnmanTest; } @@ -939,7 +944,8 @@ CNode(NodeId id, ServiceFlags nLocalServicesIn, int nMyStartingHeightIn, SOCKET hSocketIn, const CAddress &addrIn, uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn, const CAddress &addrBindIn, - const std::string &addrNameIn = "", bool fInboundIn = false, + const std::string &addrNameIn = "", + ConnectionType conn_type_in = ConnectionType::OUTBOUND, bool block_relay_only = false); ~CNode(); CNode(const CNode &) = delete; diff --git a/src/net.cpp b/src/net.cpp --- a/src/net.cpp +++ b/src/net.cpp @@ -468,10 +468,10 @@ .Write(id) .Finalize(); CAddress addr_bind = GetBindAddress(hSocket); - CNode *pnode = - new CNode(id, nLocalServices, GetBestHeight(), hSocket, addrConnect, - CalculateKeyedNetGroup(addrConnect), nonce, addr_bind, - pszDest ? pszDest : "", false, block_relay_only); + CNode *pnode = new CNode(id, nLocalServices, GetBestHeight(), hSocket, + addrConnect, CalculateKeyedNetGroup(addrConnect), + nonce, addr_bind, pszDest ? pszDest : "", + ConnectionType::OUTBOUND, block_relay_only); pnode->AddRef(); // We're making a new connection, harvest entropy from the time (and our @@ -1155,9 +1155,9 @@ if (NetPermissions::HasFlag(permissionFlags, PF_BLOOMFILTER)) { nodeServices = static_cast(nodeServices | NODE_BLOOM); } - CNode *pnode = - new CNode(id, nodeServices, GetBestHeight(), hSocket, addr, - CalculateKeyedNetGroup(addr), nonce, addr_bind, "", true); + CNode *pnode = new CNode(id, nodeServices, GetBestHeight(), hSocket, addr, + CalculateKeyedNetGroup(addr), nonce, addr_bind, "", + ConnectionType::INBOUND); pnode->AddRef(); pnode->m_permissionFlags = permissionFlags; // If this flag is present, the user probably expect that RPC and QT report @@ -2986,9 +2986,9 @@ int nMyStartingHeightIn, SOCKET hSocketIn, const CAddress &addrIn, uint64_t nKeyedNetGroupIn, uint64_t nLocalHostNonceIn, const CAddress &addrBindIn, const std::string &addrNameIn, - bool fInboundIn, bool block_relay_only) + ConnectionType conn_type_in, bool block_relay_only) : nTimeConnected(GetSystemTimeInSeconds()), addr(addrIn), - addrBind(addrBindIn), fInbound(fInboundIn), + addrBind(addrBindIn), fInbound(conn_type_in == ConnectionType::INBOUND), nKeyedNetGroup(nKeyedNetGroupIn), // Don't relay addr messages to peers that we connect to as // block-relay-only peers (to prevent adversaries from inferring these diff --git a/src/test/denialofservice_tests.cpp b/src/test/denialofservice_tests.cpp --- a/src/test/denialofservice_tests.cpp +++ b/src/test/denialofservice_tests.cpp @@ -84,8 +84,7 @@ // Mock an outbound peer CAddress addr1(ip(0xa0b0c001), NODE_NONE); CNode dummyNode1(id++, ServiceFlags(NODE_NETWORK), 0, INVALID_SOCKET, addr1, - 0, 0, CAddress(), "", - /*fInboundIn=*/false); + 0, 0, CAddress(), "", ConnectionType::OUTBOUND); dummyNode1.SetSendVersion(PROTOCOL_VERSION); peerLogic->InitializeNode(config, &dummyNode1); @@ -147,7 +146,7 @@ CAddress addr(ip(g_insecure_rand_ctx.randbits(32)), NODE_NONE); vNodes.emplace_back(new CNode(id++, ServiceFlags(NODE_NETWORK), 0, INVALID_SOCKET, addr, 0, 0, CAddress(), "", - /*fInboundIn=*/false)); + ConnectionType::OUTBOUND)); CNode &node = *vNodes.back(); node.SetSendVersion(PROTOCOL_VERSION); @@ -247,7 +246,7 @@ banman->ClearBanned(); CAddress addr1(ip(0xa0b0c001), NODE_NONE); CNode dummyNode1(id++, NODE_NETWORK, 0, INVALID_SOCKET, addr1, 0, 0, - CAddress(), "", true); + CAddress(), "", ConnectionType::INBOUND); dummyNode1.SetSendVersion(PROTOCOL_VERSION); peerLogic->InitializeNode(config, &dummyNode1); dummyNode1.nVersion = 1; @@ -268,7 +267,7 @@ CAddress addr2(ip(0xa0b0c002), NODE_NONE); CNode dummyNode2(id++, NODE_NETWORK, 0, INVALID_SOCKET, addr2, 1, 1, - CAddress(), "", true); + CAddress(), "", ConnectionType::INBOUND); dummyNode2.SetSendVersion(PROTOCOL_VERSION); peerLogic->InitializeNode(config, &dummyNode2); dummyNode2.nVersion = 1; @@ -318,7 +317,7 @@ gArgs.ForceSetArg("-banscore", "111"); CAddress addr1(ip(0xa0b0c001), NODE_NONE); CNode dummyNode1(id++, NODE_NETWORK, 0, INVALID_SOCKET, addr1, 3, 1, - CAddress(), "", true); + CAddress(), "", ConnectionType::INBOUND); dummyNode1.SetSendVersion(PROTOCOL_VERSION); peerLogic->InitializeNode(config, &dummyNode1); dummyNode1.nVersion = 1; @@ -377,7 +376,7 @@ CAddress addr(ip(0xa0b0c001), NODE_NONE); CNode dummyNode(id++, NODE_NETWORK, 0, INVALID_SOCKET, addr, 4, 4, - CAddress(), "", true); + CAddress(), "", ConnectionType::INBOUND); dummyNode.SetSendVersion(PROTOCOL_VERSION); peerLogic->InitializeNode(config, &dummyNode); dummyNode.nVersion = 1; diff --git a/src/test/fuzz/process_message.cpp b/src/test/fuzz/process_message.cpp --- a/src/test/fuzz/process_message.cpp +++ b/src/test/fuzz/process_message.cpp @@ -105,7 +105,7 @@ *std::make_unique( 0, ServiceFlags(NODE_NETWORK | NODE_BLOOM), 0, INVALID_SOCKET, CAddress{CService{in_addr{0x0100007f}, 7777}, NODE_NETWORK}, 0, 0, - CAddress{}, std::string{}, false) + CAddress{}, std::string{}, ConnectionType::OUTBOUND, false) .release(); p2p_node.fSuccessfullyConnected = true; p2p_node.nVersion = PROTOCOL_VERSION; diff --git a/src/test/fuzz/process_messages.cpp b/src/test/fuzz/process_messages.cpp --- a/src/test/fuzz/process_messages.cpp +++ b/src/test/fuzz/process_messages.cpp @@ -46,13 +46,14 @@ for (int i = 0; i < num_peers_to_add; ++i) { const ServiceFlags service_flags = ServiceFlags(fuzzed_data_provider.ConsumeIntegral()); - const bool inbound{fuzzed_data_provider.ConsumeBool()}; + const ConnectionType conn_type = fuzzed_data_provider.PickValueInArray( + {ConnectionType::INBOUND, ConnectionType::OUTBOUND}); const bool block_relay_only{fuzzed_data_provider.ConsumeBool()}; peers.push_back( std::make_unique( i, service_flags, 0, INVALID_SOCKET, CAddress{CService{in_addr{0x0100007f}, 7777}, NODE_NETWORK}, 0, - 0, CAddress{}, std::string{}, inbound, block_relay_only) + 0, CAddress{}, std::string{}, conn_type, block_relay_only) .release()); CNode &p2p_node = *peers.back(); diff --git a/src/test/net_tests.cpp b/src/test/net_tests.cpp --- a/src/test/net_tests.cpp +++ b/src/test/net_tests.cpp @@ -184,19 +184,17 @@ CAddress addr = CAddress(CService(ipv4Addr, 7777), NODE_NETWORK); std::string pszDest; - bool fInboundIn = false; // Test that fFeeler is false by default. auto pnode1 = std::make_unique(id++, NODE_NETWORK, height, hSocket, addr, 0, 0, - CAddress(), pszDest, fInboundIn); + CAddress(), pszDest, ConnectionType::OUTBOUND); BOOST_CHECK(pnode1->fInbound == false); BOOST_CHECK(pnode1->fFeeler == false); - fInboundIn = true; auto pnode2 = std::make_unique(id++, NODE_NETWORK, height, hSocket, addr, 1, 1, - CAddress(), pszDest, fInboundIn); + CAddress(), pszDest, ConnectionType::INBOUND); BOOST_CHECK(pnode2->fInbound == true); BOOST_CHECK(pnode2->fFeeler == false); } @@ -320,9 +318,9 @@ in_addr ipv4AddrPeer; ipv4AddrPeer.s_addr = 0xa0b0c001; CAddress addr = CAddress(CService(ipv4AddrPeer, 7777), NODE_NETWORK); - std::unique_ptr pnode = - std::make_unique(0, NODE_NETWORK, 0, INVALID_SOCKET, addr, 0, 0, - CAddress{}, std::string{}, false); + std::unique_ptr pnode = std::make_unique( + 0, NODE_NETWORK, 0, INVALID_SOCKET, addr, 0, 0, CAddress{}, + std::string{}, ConnectionType::OUTBOUND); pnode->fSuccessfullyConnected.store(true); // the peer claims to be reaching us via IPv6