diff --git a/src/init.cpp b/src/init.cpp --- a/src/init.cpp +++ b/src/init.cpp @@ -58,6 +58,7 @@ #include #include #include +#include #include #include #include @@ -783,14 +784,11 @@ 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 even non-standard transactions), " - "relay (relay even in -blocksonly mode), " - "and mempool (allow requesting BIP35 mempool contents). " - "Specify multiple permissions separated by commas (default: " - "noban,mempool,relay). Can be specified multiple times.", + "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>", diff --git a/src/net_permissions.h b/src/net_permissions.h --- a/src/net_permissions.h +++ b/src/net_permissions.h @@ -12,6 +12,8 @@ struct bilingual_str; +extern const std::vector NET_PERMISSIONS_DOC; + enum NetPermissionFlags { PF_NONE = 0, // Can query bloomfilter even if -peerbloomfilters is false @@ -30,6 +32,7 @@ PF_ISIMPLICIT = (1U << 31), PF_ALL = PF_BLOOMFILTER | PF_FORCERELAY | PF_RELAY | PF_NOBAN | PF_MEMPOOL, }; + class NetPermissions { public: NetPermissionFlags m_flags; @@ -47,6 +50,7 @@ flags = static_cast(flags & ~f); } }; + class NetWhitebindPermissions : public NetPermissions { public: static bool TryParse(const std::string str, NetWhitebindPermissions &output, diff --git a/src/net_permissions.cpp b/src/net_permissions.cpp --- a/src/net_permissions.cpp +++ b/src/net_permissions.cpp @@ -9,6 +9,15 @@ #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 { // The parse the following format "perm1,perm2@xxxxxx"