From 620ff4c515bfa87324313d191c35beea57a34436 Mon Sep 17 00:00:00 2001 From: tobtoht Date: Sun, 26 Apr 2026 13:32:06 +0200 Subject: [PATCH] daemon: remove miniupnp (cherry picked from commit 987e6d29133a493914a19b660051ca634fbed1d6) --- .gitignore | 2 - .gitmodules | 3 - CMakeLists.txt | 2 - cmake/FindMiniupnpc.cmake | 59 ------ contrib/brew/Brewfile | 1 - external/CMakeLists.txt | 26 --- external/miniupnp | 1 - src/CMakeLists.txt | 2 - src/p2p/CMakeLists.txt | 1 - src/p2p/net_node.cpp | 2 +- src/p2p/net_node.h | 16 -- src/p2p/net_node.inl | 192 +----------------- tests/CMakeLists.txt | 2 - .../functional_tests/functional_tests_rpc.py | 2 +- tests/trezor/daemon.cpp | 1 - tests/unit_tests/node_server.cpp | 2 - utils/fish/monerod.fish | 2 - 17 files changed, 6 insertions(+), 310 deletions(-) delete mode 100644 cmake/FindMiniupnpc.cmake delete mode 160000 external/miniupnp diff --git a/.gitignore b/.gitignore index 9f62575e5..5931d64a0 100644 --- a/.gitignore +++ b/.gitignore @@ -20,8 +20,6 @@ cscope.out cscope.in.out cscope.po.out -external/miniupnpc/Makefile -miniupnpcstrings.h version/ ClangBuildAnalyzerSession.txt diff --git a/.gitmodules b/.gitmodules index 98a0af1ab..03d1c8767 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,6 +1,3 @@ -[submodule "external/miniupnp"] - path = external/miniupnp - url = https://github.com/miniupnp/miniupnp [submodule "external/rapidjson"] path = external/rapidjson url = https://github.com/Tencent/rapidjson diff --git a/CMakeLists.txt b/CMakeLists.txt index 6af80d6ad..39db44794 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -370,7 +370,6 @@ if(NOT MANUAL_SUBMODULES) endfunction () message(STATUS "Checking submodules") - check_submodule(external/miniupnp) check_submodule(external/rapidjson) check_submodule(external/trezor-common) check_submodule(external/randomwow) @@ -441,7 +440,6 @@ else() endif() message(STATUS "Building for a ${ARCH_WIDTH}-bit system") -# Check if we're on FreeBSD so we can exclude the local miniupnpc (it should be installed from ports instead) # CMAKE_SYSTEM_NAME checks are commonly known, but specifically taken from libsdl's CMakeLists if(CMAKE_SYSTEM_NAME MATCHES "kFreeBSD.*|FreeBSD") set(FREEBSD TRUE) diff --git a/cmake/FindMiniupnpc.cmake b/cmake/FindMiniupnpc.cmake deleted file mode 100644 index ad2004afc..000000000 --- a/cmake/FindMiniupnpc.cmake +++ /dev/null @@ -1,59 +0,0 @@ -# --------------------------------- FindMiniupnpc Start --------------------------------- -# Locate miniupnp library -# This module defines -# MINIUPNP_FOUND, if false, do not try to link to miniupnp -# MINIUPNP_LIBRARY, the miniupnp variant -# MINIUPNP_INCLUDE_DIR, where to find miniupnpc.h and family) -# MINIUPNPC_VERSION_1_7_OR_HIGHER, set if we detect the version of miniupnpc is 1.7 or higher -# -# Note that the expected include convention is -# #include "miniupnpc.h" -# and not -# #include -# This is because, the miniupnpc location is not standardized and may exist -# in locations other than miniupnpc/ - -if (MINIUPNP_INCLUDE_DIR AND MINIUPNP_LIBRARY) - # Already in cache, be silent - set(MINIUPNP_FIND_QUIETLY TRUE) -endif () - -find_path(MINIUPNP_INCLUDE_DIR miniupnpc.h - HINTS $ENV{MINIUPNP_INCLUDE_DIR} - PATH_SUFFIXES miniupnpc -) - -find_library(MINIUPNP_LIBRARY miniupnpc - HINTS $ENV{MINIUPNP_LIBRARY} -) - -find_library(MINIUPNP_STATIC_LIBRARY libminiupnpc.a - HINTS $ENV{MINIUPNP_STATIC_LIBRARY} -) - -set(MINIUPNP_INCLUDE_DIRS ${MINIUPNP_INCLUDE_DIR}) -set(MINIUPNP_LIBRARIES ${MINIUPNP_LIBRARY}) -set(MINIUPNP_STATIC_LIBRARIES ${MINIUPNP_STATIC_LIBRARY}) - -include(FindPackageHandleStandardArgs) -find_package_handle_standard_args( - MiniUPnPc DEFAULT_MSG - MINIUPNP_INCLUDE_DIR - MINIUPNP_LIBRARY -) - -IF(MINIUPNPC_FOUND) - file(STRINGS "${MINIUPNP_INCLUDE_DIR}/miniupnpc.h" MINIUPNPC_API_VERSION_STR REGEX "^#define[\t ]+MINIUPNPC_API_VERSION[\t ]+[0-9]+") - if(MINIUPNPC_API_VERSION_STR MATCHES "^#define[\t ]+MINIUPNPC_API_VERSION[\t ]+([0-9]+)") - set(MINIUPNPC_API_VERSION "${CMAKE_MATCH_1}") - if (${MINIUPNPC_API_VERSION} GREATER "10" OR ${MINIUPNPC_API_VERSION} EQUAL "10") - message(STATUS "Found miniupnpc API version " ${MINIUPNPC_API_VERSION}) - set(MINIUPNP_FOUND true) - set(MINIUPNPC_VERSION_1_7_OR_HIGHER true) - endif() - endif() - -ENDIF() - -mark_as_advanced(MINIUPNP_INCLUDE_DIR MINIUPNP_LIBRARY MINIUPNP_STATIC_LIBRARY) -# --------------------------------- FindMiniupnpc End --------------------------------- diff --git a/contrib/brew/Brewfile b/contrib/brew/Brewfile index c74e7b2a2..3697898f5 100644 --- a/contrib/brew/Brewfile +++ b/contrib/brew/Brewfile @@ -23,7 +23,6 @@ brew "zmq" brew "libpgm" brew "unbound" brew "libsodium" -brew "miniupnpc" brew "readline" brew "expat" brew "ccache" diff --git a/external/CMakeLists.txt b/external/CMakeLists.txt index 649383aa2..14103e004 100644 --- a/external/CMakeLists.txt +++ b/external/CMakeLists.txt @@ -28,32 +28,6 @@ # # Parts of this file are originally copyright (c) 2012-2013 The Cryptonote developers - -# This is broken up into two parts: first we check for miniupnp, compile it if we can't -# find it, and thereafter we check for libunbound, and compile it if we can't find it. -# We always compile if we are building statically to reduce static dependency issues... -# ...except for FreeBSD, because FreeBSD is a special case that doesn't play well with -# others. - -find_package(Miniupnpc REQUIRED) - -message(STATUS "Using in-tree miniupnpc") -set(UPNPC_NO_INSTALL TRUE CACHE BOOL "Disable miniupnp installation" FORCE) -set(UPNPC_BUILD_SHARED OFF CACHE BOOL "Disable building shared library" FORCE) -add_subdirectory(miniupnp/miniupnpc) -set_property(TARGET libminiupnpc-static PROPERTY FOLDER "external") -set_property(TARGET libminiupnpc-static PROPERTY POSITION_INDEPENDENT_CODE ON) -if(MSVC) - set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -wd4244 -wd4267") -elseif(NOT MSVC) - set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -Wno-undef -Wno-unused-result -Wno-unused-value") -endif() -if(CMAKE_SYSTEM_NAME MATCHES "NetBSD") - set_property(TARGET libminiupnpc-static APPEND_STRING PROPERTY COMPILE_FLAGS " -D_NETBSD_SOURCE") -endif() - -set(UPNP_LIBRARIES "libminiupnpc-static" PARENT_SCOPE) - find_package(Unbound) if(NOT UNBOUND_INCLUDE_DIR) diff --git a/external/miniupnp b/external/miniupnp deleted file mode 160000 index 544e6fcc7..000000000 --- a/external/miniupnp +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 544e6fcc73c5ad9af48a8985c94f0f1d742ef2e0 diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 3335d3c21..9973d4027 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -30,8 +30,6 @@ if (WIN32 OR STATIC) add_definitions(-DSTATICLIB) - # miniupnp changed their static define - add_definitions(-DMINIUPNP_STATICLIB) endif () function (monero_private_headers group) diff --git a/src/p2p/CMakeLists.txt b/src/p2p/CMakeLists.txt index cc408cc3b..cdb440550 100644 --- a/src/p2p/CMakeLists.txt +++ b/src/p2p/CMakeLists.txt @@ -38,7 +38,6 @@ target_link_libraries(p2p version cryptonote_core net - ${UPNP_LIBRARIES} ${Boost_CHRONO_LIBRARY} ${Boost_PROGRAM_OPTIONS_LIBRARY} ${Boost_FILESYSTEM_LIBRARY} diff --git a/src/p2p/net_node.cpp b/src/p2p/net_node.cpp index a06511785..9f0e49f52 100644 --- a/src/p2p/net_node.cpp +++ b/src/p2p/net_node.cpp @@ -162,7 +162,7 @@ namespace nodetool const command_line::arg_descriptor arg_enable_dns_blocklist = {"enable-dns-blocklist", "Apply realtime blocklist from DNS", false}; const command_line::arg_descriptor arg_no_igd = {"no-igd", "Disable UPnP port mapping"}; - const command_line::arg_descriptor arg_igd = {"igd", "UPnP port mapping (disabled, enabled, delayed)", "delayed"}; + const command_line::arg_descriptor arg_igd = {"igd", "UPnP port mapping (disabled)", "disabled"}; const command_line::arg_descriptor arg_p2p_use_ipv6 = {"p2p-use-ipv6", "Enable IPv6 for p2p", false}; const command_line::arg_descriptor arg_p2p_ignore_ipv4 = {"p2p-ignore-ipv4", "Ignore unsuccessful IPv4 bind for p2p", false}; const command_line::arg_descriptor arg_out_peers = {"out-peers", "set max number of out peers", -1}; diff --git a/src/p2p/net_node.h b/src/p2p/net_node.h index 3da7d9632..0d000b106 100644 --- a/src/p2p/net_node.h +++ b/src/p2p/net_node.h @@ -237,12 +237,6 @@ namespace nodetool } }; - enum igd_t - { - no_igd, - igd, - delayed_igd, - }; public: typedef t_payload_net_handler payload_net_handler; @@ -254,7 +248,6 @@ namespace nodetool m_rpc_credits_per_hash(0), m_allow_local_ip(false), m_hide_my_port(false), - m_igd(no_igd), m_offline(false), is_closing(false), m_network_id(), @@ -379,14 +372,6 @@ namespace nodetool bool is_peer_used(const peerlist_entry& peer); bool is_peer_used(const anchor_peerlist_entry& peer); bool is_addr_connected(const epee::net_utils::network_address& peer); - void add_upnp_port_mapping_impl(uint32_t port, bool ipv6=false); - void add_upnp_port_mapping_v4(uint32_t port); - void add_upnp_port_mapping_v6(uint32_t port); - void add_upnp_port_mapping(uint32_t port, bool ipv4=true, bool ipv6=false); - void delete_upnp_port_mapping_impl(uint32_t port, bool ipv6=false); - void delete_upnp_port_mapping_v4(uint32_t port); - void delete_upnp_port_mapping_v6(uint32_t port); - void delete_upnp_port_mapping(uint32_t port); template bool try_ping(basic_node_data& node_data, p2p_connection_context& context, const t_callback &cb); bool try_get_support_flags(const p2p_connection_context& context, std::function f); @@ -459,7 +444,6 @@ namespace nodetool uint32_t m_rpc_credits_per_hash; bool m_allow_local_ip; bool m_hide_my_port; - igd_t m_igd; bool m_offline; bool m_use_ipv6; bool m_require_ipv4; diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl index f086ae6a8..7088d6881 100644 --- a/src/p2p/net_node.inl +++ b/src/p2p/net_node.inl @@ -60,9 +60,6 @@ #include "cryptonote_core/cryptonote_core.h" #include "net/parse.h" -#include -#include -#include #undef MONERO_DEFAULT_LOG_CATEGORY #define MONERO_DEFAULT_LOG_CATEGORY "net.p2p" @@ -444,34 +441,8 @@ namespace nodetool public_zone.m_can_pingback = true; m_external_port = command_line::get_arg(vm, arg_p2p_external_port); m_allow_local_ip = command_line::get_arg(vm, arg_p2p_allow_local_ip); - const bool has_no_igd = command_line::get_arg(vm, arg_no_igd); - const std::string sigd = command_line::get_arg(vm, arg_igd); - if (sigd == "enabled") - { - if (has_no_igd) - { - MFATAL("Cannot have both --" << arg_no_igd.name << " and --" << arg_igd.name << " enabled"); - return false; - } - m_igd = igd; - } - else if (sigd == "disabled") - { - m_igd = no_igd; - } - else if (sigd == "delayed") - { - if (has_no_igd && !command_line::is_arg_defaulted(vm, arg_igd)) - { - MFATAL("Cannot have both --" << arg_no_igd.name << " and --" << arg_igd.name << " delayed"); - return false; - } - m_igd = has_no_igd ? no_igd : delayed_igd; - } - else - { - MFATAL("Invalid value for --" << arg_igd.name << ", expected enabled, disabled or delayed"); - return false; + if (!command_line::is_arg_defaulted(vm, arg_igd)) { + MWARNING("UPnP port mapping support was removed. The --igd option is currently non-functional."); } m_offline = command_line::get_arg(vm, cryptonote::arg_offline); m_use_ipv6 = command_line::get_arg(vm, arg_p2p_use_ipv6); @@ -1004,16 +975,6 @@ namespace nodetool if(m_external_port) MDEBUG("External port defined as " << m_external_port); - // add UPnP port mapping - if(m_igd == igd) - { - add_upnp_port_mapping_v4(m_listening_port); - if (m_use_ipv6) - { - add_upnp_port_mapping_v6(m_listening_port_ipv6); - } - } - return res; } //----------------------------------------------------------------------------------- @@ -1095,9 +1056,6 @@ namespace nodetool { for(auto& zone : m_network_zones) zone.second.m_net_server.deinit_server(); - // remove UPnP port mapping - if(m_igd == igd) - delete_upnp_port_mapping(m_listening_port); } return store_config(); } @@ -2186,17 +2144,8 @@ namespace nodetool } else { - if (m_igd == delayed_igd) - { - MWARNING("No incoming connections, trying to setup IGD"); - add_upnp_port_mapping(m_listening_port); - m_igd = igd; - } - else - { - const el::Level level = el::Level::Debug; - MCLOG_RED(level, "global", "No incoming connections - check firewalls/routers allow port " << get_this_peer_port()); - } + const el::Level level = el::Level::Warning; + MCLOG_RED(level, "global", "No incoming connections - check firewalls/routers allow port " << get_this_peer_port()); } } return true; @@ -3055,139 +3004,6 @@ namespace nodetool e.clear(); } - template - void node_server::add_upnp_port_mapping_impl(uint32_t port, bool ipv6) // if ipv6 false, do ipv4 - { - std::string ipversion = ipv6 ? "(IPv6)" : "(IPv4)"; - MDEBUG("Attempting to add IGD port mapping " << ipversion << "."); - int result; - const int ipv6_arg = ipv6 ? 1 : 0; - -#if MINIUPNPC_API_VERSION > 13 - // default according to miniupnpc.h - unsigned char ttl = 2; - UPNPDev* deviceList = upnpDiscover(1000, NULL, NULL, 0, ipv6_arg, ttl, &result); -#else - UPNPDev* deviceList = upnpDiscover(1000, NULL, NULL, 0, ipv6_arg, &result); -#endif - UPNPUrls urls; - IGDdatas igdData; - char lanAddress[64]; - result = UPNP_GetValidIGD(deviceList, &urls, &igdData, lanAddress, sizeof lanAddress); - freeUPNPDevlist(deviceList); - if (result > 0) { - if (result == 1) { - std::ostringstream portString; - portString << port; - - // Delete the port mapping before we create it, just in case we have dangling port mapping from the daemon not being shut down correctly - UPNP_DeletePortMapping(urls.controlURL, igdData.first.servicetype, portString.str().c_str(), "TCP", 0); - - int portMappingResult; - portMappingResult = UPNP_AddPortMapping(urls.controlURL, igdData.first.servicetype, portString.str().c_str(), portString.str().c_str(), lanAddress, CRYPTONOTE_NAME, "TCP", 0, "0"); - if (portMappingResult != 0) { - LOG_ERROR("UPNP_AddPortMapping failed, error: " << strupnperror(portMappingResult)); - } else { - MLOG_GREEN(el::Level::Info, "Added IGD port mapping."); - } - } else if (result == 2) { - MWARNING("IGD was found but reported as not connected."); - } else if (result == 3) { - MWARNING("UPnP device was found but not recognized as IGD."); - } else { - MWARNING("UPNP_GetValidIGD returned an unknown result code."); - } - - FreeUPNPUrls(&urls); - } else { - MINFO("No IGD was found."); - } - } - - template - void node_server::add_upnp_port_mapping_v4(uint32_t port) - { - add_upnp_port_mapping_impl(port, false); - } - - template - void node_server::add_upnp_port_mapping_v6(uint32_t port) - { - add_upnp_port_mapping_impl(port, true); - } - - template - void node_server::add_upnp_port_mapping(uint32_t port, bool ipv4, bool ipv6) - { - if (ipv4) add_upnp_port_mapping_v4(port); - if (ipv6) add_upnp_port_mapping_v6(port); - } - - - template - void node_server::delete_upnp_port_mapping_impl(uint32_t port, bool ipv6) - { - std::string ipversion = ipv6 ? "(IPv6)" : "(IPv4)"; - MDEBUG("Attempting to delete IGD port mapping " << ipversion << "."); - int result; - const int ipv6_arg = ipv6 ? 1 : 0; -#if MINIUPNPC_API_VERSION > 13 - // default according to miniupnpc.h - unsigned char ttl = 2; - UPNPDev* deviceList = upnpDiscover(1000, NULL, NULL, 0, ipv6_arg, ttl, &result); -#else - UPNPDev* deviceList = upnpDiscover(1000, NULL, NULL, 0, ipv6_arg, &result); -#endif - UPNPUrls urls; - IGDdatas igdData; - char lanAddress[64]; - result = UPNP_GetValidIGD(deviceList, &urls, &igdData, lanAddress, sizeof lanAddress); - freeUPNPDevlist(deviceList); - if (result > 0) { - if (result == 1) { - std::ostringstream portString; - portString << port; - - int portMappingResult; - portMappingResult = UPNP_DeletePortMapping(urls.controlURL, igdData.first.servicetype, portString.str().c_str(), "TCP", 0); - if (portMappingResult != 0) { - LOG_ERROR("UPNP_DeletePortMapping failed, error: " << strupnperror(portMappingResult)); - } else { - MLOG_GREEN(el::Level::Info, "Deleted IGD port mapping."); - } - } else if (result == 2) { - MWARNING("IGD was found but reported as not connected."); - } else if (result == 3) { - MWARNING("UPnP device was found but not recognized as IGD."); - } else { - MWARNING("UPNP_GetValidIGD returned an unknown result code."); - } - - FreeUPNPUrls(&urls); - } else { - MINFO("No IGD was found."); - } - } - - template - void node_server::delete_upnp_port_mapping_v4(uint32_t port) - { - delete_upnp_port_mapping_impl(port, false); - } - - template - void node_server::delete_upnp_port_mapping_v6(uint32_t port) - { - delete_upnp_port_mapping_impl(port, true); - } - - template - void node_server::delete_upnp_port_mapping(uint32_t port) - { - delete_upnp_port_mapping_v4(port); - delete_upnp_port_mapping_v6(port); - } - template boost::optional> node_server::socks_connect(network_zone& zone, const epee::net_utils::network_address& remote, epee::net_utils::ssl_support_t ssl_support) diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt index 4bd364b12..235045a5c 100644 --- a/tests/CMakeLists.txt +++ b/tests/CMakeLists.txt @@ -36,8 +36,6 @@ set(TEST_DATA_DIR "${CMAKE_CURRENT_LIST_DIR}/data") if (WIN32 AND STATIC) add_definitions(-DSTATICLIB) - # miniupnp changed their static define - add_definitions(-DMINIUPNP_STATICLIB) endif () find_package(GTest) diff --git a/tests/functional_tests/functional_tests_rpc.py b/tests/functional_tests/functional_tests_rpc.py index d8ec78810..ec761e0e6 100755 --- a/tests/functional_tests/functional_tests_rpc.py +++ b/tests/functional_tests/functional_tests_rpc.py @@ -48,7 +48,7 @@ WALLET_DIRECTORY = builddir + "/functional-tests-directory" FUNCTIONAL_TESTS_DIRECTORY = builddir + "/tests/functional_tests" DIFFICULTY = 10 -monerod_base = [builddir + "/bin/monerod", "--regtest", "--fixed-difficulty", str(DIFFICULTY), "--no-igd", "--p2p-bind-port", "monerod_p2p_port", "--rpc-bind-port", "monerod_rpc_port", "--zmq-rpc-bind-port", "monerod_zmq_port", "--zmq-pub", "monerod_zmq_pub", "--non-interactive", "--disable-dns-checkpoints", "--check-updates", "disabled", "--rpc-ssl", "disabled", "--data-dir", "monerod_data_dir", "--log-level", "1", "--rpc-max-connections-per-private-ip", "100", "--rpc-max-connections", "100"] +monerod_base = [builddir + "/bin/monerod", "--regtest", "--fixed-difficulty", str(DIFFICULTY), "--p2p-bind-port", "monerod_p2p_port", "--rpc-bind-port", "monerod_rpc_port", "--zmq-rpc-bind-port", "monerod_zmq_port", "--zmq-pub", "monerod_zmq_pub", "--non-interactive", "--disable-dns-checkpoints", "--check-updates", "disabled", "--rpc-ssl", "disabled", "--data-dir", "monerod_data_dir", "--log-level", "1", "--rpc-max-connections-per-private-ip", "100", "--rpc-max-connections", "100"] monerod_extra = [ ["--offline"], ["--rpc-payment-address", "44SKxxLQw929wRF6BA9paQ1EWFshNnKhXM3qz6Mo3JGDE2YG3xyzVutMStEicxbQGRfrYvAAYxH6Fe8rnD56EaNwUiqhcwR", "--rpc-payment-difficulty", str(DIFFICULTY), "--rpc-payment-credits", "5000", "--offline"], diff --git a/tests/trezor/daemon.cpp b/tests/trezor/daemon.cpp index 546a8a180..8eeb30377 100644 --- a/tests/trezor/daemon.cpp +++ b/tests/trezor/daemon.cpp @@ -56,7 +56,6 @@ void mock_daemon::default_options(boost::program_options::variables_map & vm) tools::options::set_option(vm, nodetool::arg_p2p_add_exclusive_node, po::variable_value(exclusive_nodes, false)); tools::options::set_option(vm, nodetool::arg_p2p_bind_ip, po::variable_value(std::string("127.0.0.1"), false)); - tools::options::set_option(vm, nodetool::arg_no_igd, po::variable_value(true, false)); tools::options::set_option(vm, cryptonote::arg_offline, po::variable_value(true, false)); tools::options::set_option(vm, "disable-dns-checkpoints", po::variable_value(true, false)); diff --git a/tests/unit_tests/node_server.cpp b/tests/unit_tests/node_server.cpp index 723dd6b8a..2d94b720c 100644 --- a/tests/unit_tests/node_server.cpp +++ b/tests/unit_tests/node_server.cpp @@ -181,7 +181,6 @@ namespace std::vector args{ "--regtest", "--p2p-bind-ip=127.0.0.1", - "--no-igd", "--out-peers=0", "--in-peers=0", "--data-dir", @@ -1292,7 +1291,6 @@ TEST(node_server, race_condition) "--out-peers=0", "--data-dir", dir.string(), - "--no-igd", "--add-exclusive-node=127.0.0.1:48080", "--check-updates=disabled", "--disable-dns-checkpoints", diff --git a/utils/fish/monerod.fish b/utils/fish/monerod.fish index 04003f0ff..29ed72e2f 100644 --- a/utils/fish/monerod.fish +++ b/utils/fish/monerod.fish @@ -74,8 +74,6 @@ complete -c monerod -l ban-list -r -F -d "Specify ban list file, one IP address complete -c monerod -l hide-my-port -d "Do not announce yourself as peerlist candidate" complete -c monerod -l no-sync -d "Don't synchronize the blockchain with other peers" complete -c monerod -l enable-dns-blocklist -d "Apply realtime blocklist from DNS" -complete -c monerod -l no-igd -d "Disable UPnP port mapping" -complete -c monerod -l igd -r -a "Enabled disabled enabled" -d "UPnP port mapping. Default: delayed" complete -c monerod -l out-peers -r -d "Set max number of out peers. Default: -1" complete -c monerod -l in-peers -r -d "Set max number of in peers. Default: -1" complete -c monerod -l tos-flag -r -d "Set TOS flag. Default: -1"