From 3bb6e7b6555f3c8743a697cb9d509620714dc483 Mon Sep 17 00:00:00 2001 From: Jon Atack Date: Sat, 3 Apr 2021 20:21:28 +0200 Subject: rpc: add network field to rpc getnodeaddresses --- doc/release-notes.md | 3 +++ src/rpc/net.cpp | 2 ++ test/functional/rpc_net.py | 3 ++- 3 files changed, 7 insertions(+), 1 deletion(-) diff --git a/doc/release-notes.md b/doc/release-notes.md index 334dfa80a4..4ef94cf754 100644 --- a/doc/release-notes.md +++ b/doc/release-notes.md @@ -126,6 +126,9 @@ Changes to Wallet or GUI related settings can be found in the GUI or Wallet sect - Passing an invalid `-rpcauth` argument now cause bitcoind to fail to start. (#20461) +- The `getnodeaddresses` RPC now returns a "network" field indicating the + network type (ipv4, ipv6, onion, or i2p) for each address. (#21594) + Tools and Utilities ------------------- diff --git a/src/rpc/net.cpp b/src/rpc/net.cpp index 96533a50c8..aff9bf7ae1 100644 --- a/src/rpc/net.cpp +++ b/src/rpc/net.cpp @@ -848,6 +848,7 @@ static RPCHelpMan getnodeaddresses() {RPCResult::Type::NUM, "services", "The services offered"}, {RPCResult::Type::STR, "address", "The address of the node"}, {RPCResult::Type::NUM, "port", "The port of the node"}, + {RPCResult::Type::STR, "network", "The network (" + Join(GetNetworkNames(), ", ") + ") the node connected through"}, }}, } }, @@ -879,6 +880,7 @@ static RPCHelpMan getnodeaddresses() obj.pushKV("services", (uint64_t)addr.nServices); obj.pushKV("address", addr.ToStringIP()); obj.pushKV("port", addr.GetPort()); + obj.pushKV("network", GetNetworkName(addr.GetNetClass())); ret.push_back(obj); } return ret; diff --git a/test/functional/rpc_net.py b/test/functional/rpc_net.py index 9adb32c3c5..16d7958712 100755 --- a/test/functional/rpc_net.py +++ b/test/functional/rpc_net.py @@ -195,7 +195,7 @@ class NetTest(BitcoinTestFramework): for i in range(10000): first_octet = i >> 8 second_octet = i % 256 - a = "{}.{}.1.1".format(first_octet, second_octet) + a = "{}.{}.1.1".format(first_octet, second_octet) # IPV4 imported_addrs.append(a) self.nodes[0].addpeeraddress(a, 8333) @@ -212,6 +212,7 @@ class NetTest(BitcoinTestFramework): assert_equal(a["services"], NODE_NETWORK | NODE_WITNESS) assert a["address"] in imported_addrs assert_equal(a["port"], 8333) + assert_equal(a["network"], "ipv4") node_addresses = self.nodes[0].getnodeaddresses(1) assert_equal(len(node_addresses), 1) -- cgit v1.2.3