aboutsummaryrefslogtreecommitdiff
path: root/src/p2p/net_node.inl
diff options
context:
space:
mode:
Diffstat (limited to 'src/p2p/net_node.inl')
-rw-r--r--src/p2p/net_node.inl65
1 files changed, 13 insertions, 52 deletions
diff --git a/src/p2p/net_node.inl b/src/p2p/net_node.inl
index 90a6d4332..269a9ba87 100644
--- a/src/p2p/net_node.inl
+++ b/src/p2p/net_node.inl
@@ -30,11 +30,10 @@
// IP blocking adapted from Boolberry
-#pragma once
-
#include <algorithm>
#include <boost/date_time/posix_time/posix_time.hpp>
#include <boost/thread/thread.hpp>
+#include <boost/bind.hpp>
#include <atomic>
#include "version.h"
@@ -70,41 +69,6 @@
namespace nodetool
{
- namespace
- {
- const int64_t default_limit_up = 2048;
- const int64_t default_limit_down = 8192;
- const command_line::arg_descriptor<std::string> arg_p2p_bind_ip = {"p2p-bind-ip", "Interface for p2p network protocol", "0.0.0.0"};
- const command_line::arg_descriptor<std::string> arg_p2p_bind_port = {
- "p2p-bind-port"
- , "Port for p2p network protocol"
- , std::to_string(config::P2P_DEFAULT_PORT)
- };
- const command_line::arg_descriptor<std::string> arg_testnet_p2p_bind_port = {
- "testnet-p2p-bind-port"
- , "Port for testnet p2p network protocol"
- , std::to_string(config::testnet::P2P_DEFAULT_PORT)
- };
- const command_line::arg_descriptor<uint32_t> arg_p2p_external_port = {"p2p-external-port", "External port for p2p network protocol (if port forwarding used with NAT)", 0};
- const command_line::arg_descriptor<bool> arg_p2p_allow_local_ip = {"allow-local-ip", "Allow local ip add to peer list, mostly in debug purposes"};
- const command_line::arg_descriptor<std::vector<std::string> > arg_p2p_add_peer = {"add-peer", "Manually add peer to local peerlist"};
- const command_line::arg_descriptor<std::vector<std::string> > arg_p2p_add_priority_node = {"add-priority-node", "Specify list of peers to connect to and attempt to keep the connection open"};
- const command_line::arg_descriptor<std::vector<std::string> > arg_p2p_add_exclusive_node = {"add-exclusive-node", "Specify list of peers to connect to only."
- " If this option is given the options add-priority-node and seed-node are ignored"};
- const command_line::arg_descriptor<std::vector<std::string> > arg_p2p_seed_node = {"seed-node", "Connect to a node to retrieve peer addresses, and disconnect"};
- const command_line::arg_descriptor<bool> arg_p2p_hide_my_port = {"hide-my-port", "Do not announce yourself as peerlist candidate", false, true};
-
- const command_line::arg_descriptor<bool> arg_no_igd = {"no-igd", "Disable UPnP port mapping"};
- const command_line::arg_descriptor<bool> arg_offline = {"offline", "Do not listen for peers, nor connect to any"};
- const command_line::arg_descriptor<int64_t> arg_out_peers = {"out-peers", "set max number of out peers", -1};
- const command_line::arg_descriptor<int> arg_tos_flag = {"tos-flag", "set TOS flag", -1};
-
- const command_line::arg_descriptor<int64_t> arg_limit_rate_up = {"limit-rate-up", "set limit-rate-up [kB/s]", -1};
- const command_line::arg_descriptor<int64_t> arg_limit_rate_down = {"limit-rate-down", "set limit-rate-down [kB/s]", -1};
- const command_line::arg_descriptor<int64_t> arg_limit_rate = {"limit-rate", "set limit-rate [kB/s]", -1};
-
- const command_line::arg_descriptor<bool> arg_save_graph = {"save-graph", "Save data for dr monero", false};
- }
//-----------------------------------------------------------------------------------
template<class t_payload_net_handler>
void node_server<t_payload_net_handler>::init_options(boost::program_options::options_description& desc)
@@ -120,7 +84,6 @@ namespace nodetool
command_line::add_arg(desc, arg_p2p_seed_node);
command_line::add_arg(desc, arg_p2p_hide_my_port);
command_line::add_arg(desc, arg_no_igd);
- command_line::add_arg(desc, arg_offline);
command_line::add_arg(desc, arg_out_peers);
command_line::add_arg(desc, arg_tos_flag);
command_line::add_arg(desc, arg_limit_rate_up);
@@ -306,7 +269,7 @@ namespace nodetool
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);
m_no_igd = command_line::get_arg(vm, arg_no_igd);
- m_offline = command_line::get_arg(vm, arg_offline);
+ m_offline = command_line::get_arg(vm, cryptonote::arg_offline);
if (command_line::has_arg(vm, arg_p2p_add_peer))
{
@@ -1144,7 +1107,7 @@ namespace nodetool
template<class t_payload_net_handler>
bool node_server<t_payload_net_handler>::connect_to_seed()
{
- if (m_seed_nodes.empty())
+ if (m_seed_nodes.empty() || m_offline)
return true;
size_t try_count = 0;
@@ -1847,9 +1810,8 @@ namespace nodetool
this->islimitup=false;
}
- limit *= 1024;
epee::net_utils::connection<epee::levin::async_protocol_handler<p2p_connection_context> >::set_rate_up_limit( limit );
- MINFO("Set limit-up to " << limit/1024 << " kB/s");
+ MINFO("Set limit-up to " << limit << " kB/s");
return true;
}
@@ -1861,9 +1823,8 @@ namespace nodetool
limit=default_limit_down;
this->islimitdown=false;
}
- limit *= 1024;
epee::net_utils::connection<epee::levin::async_protocol_handler<p2p_connection_context> >::set_rate_down_limit( limit );
- MINFO("Set limit-down to " << limit/1024 << " kB/s");
+ MINFO("Set limit-down to " << limit << " kB/s");
return true;
}
@@ -1875,21 +1836,21 @@ namespace nodetool
if(limit == -1)
{
- limit_up = default_limit_up * 1024;
- limit_down = default_limit_down * 1024;
+ limit_up = default_limit_up;
+ limit_down = default_limit_down;
}
else
{
- limit_up = limit * 1024;
- limit_down = limit * 1024;
+ limit_up = limit;
+ limit_down = limit;
}
if(!this->islimitup) {
epee::net_utils::connection<epee::levin::async_protocol_handler<p2p_connection_context> >::set_rate_up_limit(limit_up);
- MINFO("Set limit-up to " << limit_up/1024 << " kB/s");
+ MINFO("Set limit-up to " << limit_up << " kB/s");
}
if(!this->islimitdown) {
epee::net_utils::connection<epee::levin::async_protocol_handler<p2p_connection_context> >::set_rate_down_limit(limit_down);
- MINFO("Set limit-down to " << limit_down/1024 << " kB/s");
+ MINFO("Set limit-down to " << limit_down << " kB/s");
}
return true;
@@ -1898,8 +1859,8 @@ namespace nodetool
template<class t_payload_net_handler>
bool node_server<t_payload_net_handler>::has_too_many_connections(const epee::net_utils::network_address &address)
{
- const uint8_t max_connections = 1;
- uint8_t count = 0;
+ const size_t max_connections = 1;
+ size_t count = 0;
m_net_server.get_config_object().foreach_connection([&](const p2p_connection_context& cntxt)
{