diff options
author | Jon Atack <jon@atack.com> | 2021-01-19 15:36:39 +0100 |
---|---|---|
committer | Jon Atack <jon@atack.com> | 2021-02-02 00:01:36 +0100 |
commit | 1c3af37881adbbc37fb9924bcf69c403fcae1ae7 (patch) | |
tree | 41b30429d6ec8767afab80187673d5ae7474871a | |
parent | b45eae4d5332f1da71ba9ec983fe7818fa4d32e9 (diff) | |
download | bitcoin-1c3af37881adbbc37fb9924bcf69c403fcae1ae7.tar.xz |
net: create GetNetworkNames()
-rw-r--r-- | src/netaddress.h | 2 | ||||
-rw-r--r-- | src/netbase.cpp | 14 | ||||
-rw-r--r-- | src/netbase.h | 2 |
3 files changed, 17 insertions, 1 deletions
diff --git a/src/netaddress.h b/src/netaddress.h index b9eade7fd5..d0986557f7 100644 --- a/src/netaddress.h +++ b/src/netaddress.h @@ -36,7 +36,7 @@ static constexpr int ADDRV2_FORMAT = 0x20000000; * @note An address may belong to more than one network, for example `10.0.0.1` * belongs to both `NET_UNROUTABLE` and `NET_IPV4`. * Keep these sequential starting from 0 and `NET_MAX` as the last entry. - * We have loops like `for (int i = 0; i < NET_MAX; i++)` that expect to iterate + * We have loops like `for (int i = 0; i < NET_MAX; ++i)` that expect to iterate * over all enum values and also `GetExtNetwork()` "extends" this enum by * introducing standalone constants starting from `NET_MAX`. */ diff --git a/src/netbase.cpp b/src/netbase.cpp index 15abcbd98c..93b4c9d659 100644 --- a/src/netbase.cpp +++ b/src/netbase.cpp @@ -68,6 +68,20 @@ std::string GetNetworkName(enum Network net) assert(false); } +std::vector<std::string> GetNetworkNames(bool append_unroutable) +{ + std::vector<std::string> names; + for (int n = 0; n < NET_MAX; ++n) { + const enum Network network{static_cast<Network>(n)}; + if (network == NET_UNROUTABLE || network == NET_I2P || network == NET_CJDNS || network == NET_INTERNAL) continue; + names.emplace_back(GetNetworkName(network)); + } + if (append_unroutable) { + names.emplace_back(GetNetworkName(NET_UNROUTABLE)); + } + return names; +} + bool static LookupIntern(const std::string& name, std::vector<CNetAddr>& vIP, unsigned int nMaxSolutions, bool fAllowLookup) { vIP.clear(); diff --git a/src/netbase.h b/src/netbase.h index ac4cd97673..17b029a40a 100644 --- a/src/netbase.h +++ b/src/netbase.h @@ -39,6 +39,8 @@ public: enum Network ParseNetwork(const std::string& net); std::string GetNetworkName(enum Network net); +/** Return a vector of publicly routable Network names; optionally append NET_UNROUTABLE. */ +std::vector<std::string> GetNetworkNames(bool append_unroutable = false); bool SetProxy(enum Network net, const proxyType &addrProxy); bool GetProxy(enum Network net, proxyType &proxyInfoOut); bool IsProxy(const CNetAddr &addr); |