mirror of
https://github.com/monero-project/monero.git
synced 2025-08-07 13:42:28 -04:00
Add IPv6 support
new cli options (RPC ones also apply to wallet): --p2p-bind-ipv6-address (default = "::") --p2p-bind-port-ipv6 (default same as ipv4 port for given nettype) --rpc-bind-ipv6-address (default = "::1") --p2p-use-ipv6 (default false) --rpc-use-ipv6 (default false) --p2p-require-ipv4 (default true, if ipv4 bind fails and this is true, will not continue even if ipv6 bind successful) --rpc-require-ipv4 (default true, description as above) ipv6 addresses are to be specified as "[xx:xx:xx::xx:xx]:port" except in the cases of the cli args for bind address. For those the square braces can be omitted.
This commit is contained in:
parent
8adde33e01
commit
155475d971
20 changed files with 805 additions and 113 deletions
|
@ -227,8 +227,12 @@ namespace net_utils
|
|||
std::map<std::string, t_connection_type> server_type_map;
|
||||
void create_server_type_map();
|
||||
|
||||
bool init_server(uint32_t port, const std::string address = "0.0.0.0", ssl_options_t ssl_options = ssl_support_t::e_ssl_support_autodetect);
|
||||
bool init_server(const std::string port, const std::string& address = "0.0.0.0", ssl_options_t ssl_options = ssl_support_t::e_ssl_support_autodetect);
|
||||
bool init_server(uint32_t port, const std::string& address = "0.0.0.0",
|
||||
uint32_t port_ipv6 = 0, const std::string& address_ipv6 = "::", bool use_ipv6 = false, bool require_ipv4 = true,
|
||||
ssl_options_t ssl_options = ssl_support_t::e_ssl_support_autodetect);
|
||||
bool init_server(const std::string port, const std::string& address = "0.0.0.0",
|
||||
const std::string port_ipv6 = "", const std::string address_ipv6 = "::", bool use_ipv6 = false, bool require_ipv4 = true,
|
||||
ssl_options_t ssl_options = ssl_support_t::e_ssl_support_autodetect);
|
||||
|
||||
/// Run the server's io_service loop.
|
||||
bool run_server(size_t threads_count, bool wait = true, const boost::thread::attributes& attrs = boost::thread::attributes());
|
||||
|
@ -269,6 +273,7 @@ namespace net_utils
|
|||
}
|
||||
|
||||
int get_binded_port(){return m_port;}
|
||||
int get_binded_port_ipv6(){return m_port_ipv6;}
|
||||
|
||||
long get_connections_count() const
|
||||
{
|
||||
|
@ -339,7 +344,9 @@ namespace net_utils
|
|||
/// Run the server's io_service loop.
|
||||
bool worker_thread();
|
||||
/// Handle completion of an asynchronous accept operation.
|
||||
void handle_accept(const boost::system::error_code& e);
|
||||
void handle_accept_ipv4(const boost::system::error_code& e);
|
||||
void handle_accept_ipv6(const boost::system::error_code& e);
|
||||
void handle_accept(const boost::system::error_code& e, bool ipv6 = false);
|
||||
|
||||
bool is_thread_worker();
|
||||
|
||||
|
@ -360,11 +367,16 @@ namespace net_utils
|
|||
|
||||
/// Acceptor used to listen for incoming connections.
|
||||
boost::asio::ip::tcp::acceptor acceptor_;
|
||||
boost::asio::ip::tcp::acceptor acceptor_ipv6;
|
||||
epee::net_utils::network_address default_remote;
|
||||
|
||||
std::atomic<bool> m_stop_signal_sent;
|
||||
uint32_t m_port;
|
||||
uint32_t m_port_ipv6;
|
||||
std::string m_address;
|
||||
std::string m_address_ipv6;
|
||||
bool m_use_ipv6;
|
||||
bool m_require_ipv4;
|
||||
std::string m_thread_name_prefix; //TODO: change to enum server_type, now used
|
||||
size_t m_threads_count;
|
||||
std::vector<boost::shared_ptr<boost::thread> > m_threads;
|
||||
|
@ -376,6 +388,8 @@ namespace net_utils
|
|||
|
||||
/// The next connection to be accepted
|
||||
connection_ptr new_connection_;
|
||||
connection_ptr new_connection_ipv6;
|
||||
|
||||
|
||||
boost::mutex connections_mutex;
|
||||
std::set<connection_ptr> connections_;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue