mirror of
https://github.com/Retropex/bitcoin.git
synced 2025-08-04 05:54:48 +02:00
rpc, p2p: allow disconnectnode
with subnet
This commit is contained in:
parent
82fe672ea0
commit
b2e3edc61c
@ -394,7 +394,7 @@ static RPCHelpMan disconnectnode()
|
|||||||
"\nStrictly one out of 'address' and 'nodeid' can be provided to identify the node.\n"
|
"\nStrictly one out of 'address' and 'nodeid' can be provided to identify the node.\n"
|
||||||
"\nTo disconnect by nodeid, either set 'address' to the empty string, or call using the named 'nodeid' argument only.\n",
|
"\nTo disconnect by nodeid, either set 'address' to the empty string, or call using the named 'nodeid' argument only.\n",
|
||||||
{
|
{
|
||||||
{"address", RPCArg::Type::STR, RPCArg::DefaultHint{"fallback to nodeid"}, "The IP address/port of the node"},
|
{"address", RPCArg::Type::STR, RPCArg::DefaultHint{"fallback to nodeid"}, "The IP address/port of the node or subnet"},
|
||||||
{"nodeid", RPCArg::Type::NUM, RPCArg::DefaultHint{"fallback to address"}, "The node ID (see getpeerinfo for node IDs)"},
|
{"nodeid", RPCArg::Type::NUM, RPCArg::DefaultHint{"fallback to address"}, "The node ID (see getpeerinfo for node IDs)"},
|
||||||
},
|
},
|
||||||
RPCResult{RPCResult::Type::NONE, "", ""},
|
RPCResult{RPCResult::Type::NONE, "", ""},
|
||||||
@ -415,7 +415,16 @@ static RPCHelpMan disconnectnode()
|
|||||||
|
|
||||||
if (!address_arg.isNull() && id_arg.isNull()) {
|
if (!address_arg.isNull() && id_arg.isNull()) {
|
||||||
/* handle disconnect-by-address */
|
/* handle disconnect-by-address */
|
||||||
success = connman.DisconnectNode(address_arg.get_str());
|
if (address_arg.get_str().find('/') != std::string::npos) {
|
||||||
|
CSubNet subnet;
|
||||||
|
if (LookupSubNet(address_arg.get_str(), subnet)) {
|
||||||
|
success = connman.DisconnectNode(subnet);
|
||||||
|
} else {
|
||||||
|
throw JSONRPCError(RPC_INVALID_PARAMETER, "Invalid subnet");
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
success = connman.DisconnectNode(address_arg.get_str());
|
||||||
|
}
|
||||||
} else if (!id_arg.isNull() && (address_arg.isNull() || (address_arg.isStr() && address_arg.get_str().empty()))) {
|
} else if (!id_arg.isNull() && (address_arg.isNull() || (address_arg.isStr() && address_arg.get_str().empty()))) {
|
||||||
/* handle disconnect-by-id */
|
/* handle disconnect-by-id */
|
||||||
NodeId nodeid = (NodeId) id_arg.getInt<int64_t>();
|
NodeId nodeid = (NodeId) id_arg.getInt<int64_t>();
|
||||||
|
Loading…
Reference in New Issue
Block a user