diff --git a/src/init.cpp b/src/init.cpp index b923cde9e9..27be2d13ed 100644 --- a/src/init.cpp +++ b/src/init.cpp @@ -58,6 +58,7 @@ #include #include #include +#include #include #include #include @@ -607,11 +608,7 @@ void SetupServerArgs(NodeContext& node) hidden_args.emplace_back("-natpmp"); #endif // USE_NATPMP argsman.AddArg("-whitebind=<[permissions@]addr>", "Bind to given address and whitelist peers connecting to it. " - "Use [host]:port notation for IPv6. Allowed permissions are bloomfilter (allow requesting BIP37 filtered blocks and transactions), " - "noban (do not ban for misbehavior), " - "forcerelay (relay transactions that are already in the mempool; implies relay), " - "relay (relay even in -blocksonly mode), " - "and mempool (allow requesting BIP35 mempool contents). " + "Use [host]:port notation for IPv6. Allowed permissions: " + Join(NET_PERMISSIONS_DOC, ", ") + ". " "Specify multiple permissions separated by commas (default: noban,mempool,relay). Can be specified multiple times.", ArgsManager::ALLOW_ANY, OptionsCategory::CONNECTION); argsman.AddArg("-whitelist=<[permissions@]IP address or network>", "Whitelist peers connecting from the given IP address (e.g. 1.2.3.4) or " diff --git a/src/net_permissions.cpp b/src/net_permissions.cpp index 2ae4a44c85..5ae32b2999 100644 --- a/src/net_permissions.cpp +++ b/src/net_permissions.cpp @@ -8,6 +8,14 @@ #include #include +const std::vector NET_PERMISSIONS_DOC{ + "bloomfilter (allow requesting BIP37 filtered blocks and transactions)", + "noban (do not ban for misbehavior)", + "forcerelay (relay transactions that are already in the mempool; implies relay)", + "relay (relay even in -blocksonly mode)", + "mempool (allow requesting BIP35 mempool contents)", +}; + namespace { // Parse the following format: "perm1,perm2@xxxxxx" diff --git a/src/net_permissions.h b/src/net_permissions.h index 4066c73133..71549ed4d3 100644 --- a/src/net_permissions.h +++ b/src/net_permissions.h @@ -2,15 +2,18 @@ // Distributed under the MIT software license, see the accompanying // file COPYING or http://www.opensource.org/licenses/mit-license.php. +#include + #include #include -#include #ifndef BITCOIN_NET_PERMISSIONS_H #define BITCOIN_NET_PERMISSIONS_H struct bilingual_str; +extern const std::vector NET_PERMISSIONS_DOC; + enum NetPermissionFlags { PF_NONE = 0, @@ -30,6 +33,7 @@ enum NetPermissionFlags PF_ISIMPLICIT = (1U << 31), PF_ALL = PF_BLOOMFILTER | PF_FORCERELAY | PF_RELAY | PF_NOBAN | PF_MEMPOOL, }; + class NetPermissions { public: @@ -48,6 +52,7 @@ public: flags = static_cast(flags & ~f); } }; + class NetWhitebindPermissions : public NetPermissions { public: