From 2d9a6b76f1d8c5e8db1c099be811cb2cda051f20 Mon Sep 17 00:00:00 2001 From: Steven Siloti Date: Thu, 11 Feb 2016 19:56:52 -0800 Subject: [PATCH] use asio::protcol instead of an enum/bool --- include/libtorrent/address.hpp | 2 - include/libtorrent/aux_/session_impl.hpp | 2 +- include/libtorrent/kademlia/dht_observer.hpp | 2 +- include/libtorrent/kademlia/node.hpp | 30 ++++++++----- include/libtorrent/kademlia/routing_table.hpp | 11 +++-- simulation/setup_dht.cpp | 6 +-- src/kademlia/dht_tracker.cpp | 10 ++--- src/kademlia/node.cpp | 45 ++++++++++++------- src/kademlia/routing_table.cpp | 6 +-- src/kademlia/rpc_manager.cpp | 4 +- src/kademlia/traversal_algorithm.cpp | 6 +-- src/session_impl.cpp | 6 +-- test/test_dht.cpp | 44 +++++++++--------- 13 files changed, 97 insertions(+), 77 deletions(-) diff --git a/include/libtorrent/address.hpp b/include/libtorrent/address.hpp index 0efad18ee..0682991b5 100644 --- a/include/libtorrent/address.hpp +++ b/include/libtorrent/address.hpp @@ -61,8 +61,6 @@ POSSIBILITY OF SUCH DAMAGE. namespace libtorrent { - enum address_type { ipv4, ipv6, num_address_type }; - #if defined TORRENT_BUILD_SIMULATOR typedef sim::asio::ip::address address; typedef sim::asio::ip::address_v4 address_v4; diff --git a/include/libtorrent/aux_/session_impl.hpp b/include/libtorrent/aux_/session_impl.hpp index 8b037d98e..ac819bca5 100644 --- a/include/libtorrent/aux_/session_impl.hpp +++ b/include/libtorrent/aux_/session_impl.hpp @@ -604,7 +604,7 @@ namespace libtorrent // implements dht_observer virtual void set_external_address(address const& ip , address const& source) TORRENT_OVERRIDE; - virtual address external_address(address_type at) TORRENT_OVERRIDE; + virtual address external_address(udp proto) TORRENT_OVERRIDE; virtual void get_peers(sha1_hash const& ih) TORRENT_OVERRIDE; virtual void announce(sha1_hash const& ih, address const& addr, int port) TORRENT_OVERRIDE; virtual void outgoing_get_peers(sha1_hash const& target diff --git a/include/libtorrent/kademlia/dht_observer.hpp b/include/libtorrent/kademlia/dht_observer.hpp index 773cbfc1c..58da0c3a9 100644 --- a/include/libtorrent/kademlia/dht_observer.hpp +++ b/include/libtorrent/kademlia/dht_observer.hpp @@ -68,7 +68,7 @@ namespace libtorrent { namespace dht { virtual void set_external_address(address const& addr , address const& source) = 0; - virtual address external_address(address_type at) = 0; + virtual address external_address(udp proto) = 0; virtual void get_peers(sha1_hash const& ih) = 0; virtual void outgoing_get_peers(sha1_hash const& target , sha1_hash const& sent_target, udp::endpoint const& ep) = 0; diff --git a/include/libtorrent/kademlia/node.hpp b/include/libtorrent/kademlia/node.hpp index 046a52cb3..48c12606f 100644 --- a/include/libtorrent/kademlia/node.hpp +++ b/include/libtorrent/kademlia/node.hpp @@ -73,9 +73,6 @@ namespace libtorrent { namespace dht struct traversal_algorithm; struct dht_observer; -extern char const* address_type_names[num_address_type]; -extern char const* address_type_keys[num_address_type]; - void TORRENT_EXTRA_EXPORT write_nodes_entry(entry& r, nodes_t const& nodes); struct null_type {}; @@ -102,7 +99,7 @@ protected: class TORRENT_EXTRA_EXPORT node : boost::noncopyable { public: - node(address_type at, udp_socket_interface* sock + node(udp proto, udp_socket_interface* sock , libtorrent::dht_settings const& settings, node_id nid , dht_observer* observer, counters& cnt , std::map const& nodes @@ -209,18 +206,18 @@ public: dht_observer* observer() const { return m_observer; } - address_type native_address_type() { return m_address_type; } - char const* native_address_name() { return address_type_names[m_address_type]; } - char const* native_nodes_key() { return address_type_keys[m_address_type]; } + udp protocol() { return m_protocol.protocol; } + char const* protocol_family_name() { return m_protocol.family_name; } + char const* protocol_nodes_key() { return m_protocol.nodes_key; } bool native_address(udp::endpoint ep) const - { return native_address(ep.address()); } + { return ep.protocol().family() == m_protocol.protocol.family(); } bool native_address(tcp::endpoint ep) const - { return native_address(ep.address()); } + { return ep.protocol().family() == m_protocol.protocol.family(); } bool native_address(address addr) const { - return (addr.is_v4() && m_address_type == ipv4) - || (addr.is_v6() && m_address_type == ipv6); + return (addr.is_v4() && m_protocol.protocol == m_protocol.protocol.v4()) + || (addr.is_v6() && m_protocol.protocol == m_protocol.protocol.v6()); } private: @@ -254,9 +251,18 @@ public: std::map const& m_nodes; private: + struct protocol_descriptor + { + udp protocol; + char const* family_name; + char const* nodes_key; + }; + + static protocol_descriptor const& map_protocol_to_descriptor(udp protocol); + dht_observer* m_observer; - address_type m_address_type; + protocol_descriptor const& m_protocol; time_point m_last_tracker_tick; diff --git a/include/libtorrent/kademlia/routing_table.hpp b/include/libtorrent/kademlia/routing_table.hpp index c0d2e1b4a..dbaa45c50 100644 --- a/include/libtorrent/kademlia/routing_table.hpp +++ b/include/libtorrent/kademlia/routing_table.hpp @@ -132,7 +132,7 @@ public: // Perhaps replacement nodes should be in a separate vector. typedef std::vector table_t; - routing_table(node_id const& id, address_type at + routing_table(node_id const& id, udp proto , int bucket_size , dht_settings const& settings , dht_logger* log); @@ -246,10 +246,13 @@ public: bool native_address(address addr) const { - return (addr.is_v4() && m_address_type == ipv4) - || (addr.is_v6() && m_address_type == ipv6); + return (addr.is_v4() && m_protocol == udp::v4()) + || (addr.is_v6() && m_protocol == udp::v6()); } + bool native_endpoint(udp::endpoint ep) const + { return ep.protocol() == m_protocol; } + private: #ifndef TORRENT_DISABLE_LOGGING @@ -277,7 +280,7 @@ private: table_t m_buckets; node_id m_id; // our own node id - address_type m_address_type; // address type to be stored + udp m_protocol; // protocol this table is for // the last seen depth (i.e. levels in the routing table) // it's mutable because it's updated by depth(), which is const diff --git a/simulation/setup_dht.cpp b/simulation/setup_dht.cpp index 32f816b36..dab8ef800 100644 --- a/simulation/setup_dht.cpp +++ b/simulation/setup_dht.cpp @@ -86,12 +86,12 @@ struct dht_node final : lt::dht::udp_socket_interface : m_io_service(sim, (flags & dht_network::bind_ipv6) ? addr6_from_int(idx) : addr_from_int(idx)) #if LIBSIMULATOR_USE_MOVE , m_socket(m_io_service) - , m_dht((flags & dht_network::bind_ipv6) ? ipv6 : ipv4 + , m_dht((flags & dht_network::bind_ipv6) ? udp::v6() : udp::v4() , this, sett, id_from_addr(m_io_service.get_ips().front()) , nullptr, cnt, std::map()) #else , m_socket(new asio::ip::udp::socket(m_io_service)) - , m_dht(new lt::dht::node((flags & dht_network::bind_ipv6) ? ipv6 : ipv4 + , m_dht(new lt::dht::node((flags & dht_network::bind_ipv6) ? udp::v6() : udp::v4() , this, sett, id_from_addr(m_io_service.get_ips().front()) , nullptr, cnt, std::map())) #endif @@ -122,7 +122,7 @@ struct dht_node final : lt::dht::udp_socket_interface // reserving space in the vector before emplacing any nodes). dht_node(dht_node&& n) noexcept : m_socket(std::move(n.m_socket)) - , m_dht(n.m_ipv6 ? ipv6 : ipv4, this, n.m_dht.settings(), n.m_dht.nid() + , m_dht(n.m_ipv6 ? udp::v6() : udp::v4(), this, n.m_dht.settings(), n.m_dht.nid() , n.m_dht.observer(), n.m_dht.stats_counters() , std::map()) { diff --git a/src/kademlia/dht_tracker.cpp b/src/kademlia/dht_tracker.cpp index 5a21dc965..796550b52 100644 --- a/src/kademlia/dht_tracker.cpp +++ b/src/kademlia/dht_tracker.cpp @@ -97,10 +97,10 @@ namespace libtorrent { namespace dht , dht_storage_constructor_type storage_constructor , entry const& state) : m_counters(cnt) - , m_dht(ipv4, this, settings, extract_node_id(state, "node-id") + , m_dht(udp::v4(), this, settings, extract_node_id(state, "node-id") , observer, cnt, m_nodes, storage_constructor) #if TORRENT_USE_IPV6 - , m_dht6(ipv6, this, settings, extract_node_id(state, "node-id6") + , m_dht6(udp::v6(), this, settings, extract_node_id(state, "node-id6") , observer, cnt, m_nodes, storage_constructor) #endif , m_send_fun(send_fun) @@ -120,9 +120,9 @@ namespace libtorrent { namespace dht m_blocker.set_block_timer(m_settings.block_timeout); m_blocker.set_rate_limit(m_settings.block_ratelimit); - m_nodes.insert(std::make_pair(m_dht.native_address_name(), &m_dht)); + m_nodes.insert(std::make_pair(m_dht.protocol_family_name(), &m_dht)); #if TORRENT_USE_IPV6 - m_nodes.insert(std::make_pair(m_dht6.native_address_name(), &m_dht6)); + m_nodes.insert(std::make_pair(m_dht6.protocol_family_name(), &m_dht6)); #endif #ifndef TORRENT_DISABLE_LOGGING @@ -226,7 +226,7 @@ namespace libtorrent { namespace dht time_duration d = n.connection_timeout(); error_code ec; #if TORRENT_USE_IPV6 - deadline_timer& timer = n.native_address_type() == ipv4 ? m_connection_timer : m_connection_timer6; + deadline_timer& timer = n.protocol() == udp::v4() ? m_connection_timer : m_connection_timer6; #else deadline_timer& timer = m_connection_timer; #endif diff --git a/src/kademlia/node.cpp b/src/kademlia/node.cpp index 1f4744b33..42af049ef 100644 --- a/src/kademlia/node.cpp +++ b/src/kademlia/node.cpp @@ -69,17 +69,14 @@ namespace libtorrent { namespace dht using detail::write_endpoint; -char const* address_type_names[num_address_type] = { "n4", "n6" }; -char const* address_type_keys[num_address_type] = { "nodes", "nodes6" }; - namespace { void nop() {} -node_id calculate_node_id(node_id const& nid, dht_observer* observer, address_type at) +node_id calculate_node_id(node_id const& nid, dht_observer* observer, udp protocol) { address external_address; - if (observer) external_address = observer->external_address(at); + if (observer) external_address = observer->external_address(protocol); // if we don't have an observer, don't pretend that external_address is valid // generating an ID based on 0.0.0.0 would be terrible. random is better @@ -96,19 +93,19 @@ node_id calculate_node_id(node_id const& nid, dht_observer* observer, address_ty } // anonymous namespace -node::node(address_type at, udp_socket_interface* sock +node::node(udp proto, udp_socket_interface* sock , dht_settings const& settings, node_id nid , dht_observer* observer , struct counters& cnt , std::map const& nodes , dht_storage_constructor_type storage_constructor) : m_settings(settings) - , m_id(calculate_node_id(nid, observer, at)) - , m_table(m_id, at, 8, settings, observer) + , m_id(calculate_node_id(nid, observer, proto)) + , m_table(m_id, proto, 8, settings, observer) , m_rpc(m_id, m_settings, m_table, sock, observer) , m_nodes(nodes) , m_observer(observer) - , m_address_type(at) + , m_protocol(map_protocol_to_descriptor(proto)) , m_last_tracker_tick(aux::time_now()) , m_last_self_refresh(min_time()) , m_sock(sock) @@ -132,7 +129,7 @@ void node::update_node_id() // it's possible that our external address hasn't actually changed. If our // current ID is still valid, don't do anything. - if (verify_id(m_id, m_observer->external_address(m_address_type))) + if (verify_id(m_id, m_observer->external_address(protocol()))) return; #ifndef TORRENT_DISABLE_LOGGING @@ -140,7 +137,7 @@ void node::update_node_id() , "updating node ID (because external IP address changed)"); #endif - m_id = generate_id(m_observer->external_address(m_address_type)); + m_id = generate_id(m_observer->external_address(protocol())); m_table.update_node_id(m_id); } @@ -610,9 +607,9 @@ struct ping_observer : observer // look for nodes #if TORRENT_USE_IPV6 - address_type at = algorithm()->get_node().native_address_type(); + udp protocol = algorithm()->get_node().protocol(); #endif - char const* nodes_key = algorithm()->get_node().native_nodes_key(); + char const* nodes_key = algorithm()->get_node().protocol_nodes_key(); bdecode_node n = r.dict_find_string(nodes_key); if (n) { @@ -626,7 +623,7 @@ struct ping_observer : observer nodes += 20; udp::endpoint ep; #if TORRENT_USE_IPV6 - if (at == ipv6) + if (protocol == udp::v6()) ep = detail::read_v6_endpoint(nodes); else #endif @@ -1201,7 +1198,7 @@ void node::write_nodes_entries(sha1_hash const& info_hash { nodes_t n; m_table.find_node(info_hash, n, 0); - write_nodes_entry(r[native_nodes_key()], n); + write_nodes_entry(r[protocol_nodes_key()], n); return; } @@ -1221,8 +1218,24 @@ void node::write_nodes_entries(sha1_hash const& info_hash continue; nodes_t n; wanted_node->second->m_table.find_node(info_hash, n, 0); - write_nodes_entry(r[wanted_node->second->native_nodes_key()], n); + write_nodes_entry(r[wanted_node->second->protocol_nodes_key()], n); } } +node::protocol_descriptor const& node::map_protocol_to_descriptor(udp protocol) +{ + static protocol_descriptor descriptors[] = + { {udp::v4(), "n4", "nodes"} + , {udp::v6(), "n6", "nodes6"} }; + + for (int i = 0; i < sizeof(descriptors) / sizeof(protocol_descriptor); ++i) + { + if (descriptors[i].protocol == protocol) + return descriptors[i]; + } + + TORRENT_ASSERT(false); + throw std::out_of_range("unknown protocol"); +} + } } // namespace libtorrent::dht diff --git a/src/kademlia/routing_table.cpp b/src/kademlia/routing_table.cpp index ec31cca25..e8157c85f 100644 --- a/src/kademlia/routing_table.cpp +++ b/src/kademlia/routing_table.cpp @@ -124,7 +124,7 @@ void ip_set::erase(address addr) erase_one(m_ip4s, addr.to_v4().to_bytes()); } -routing_table::routing_table(node_id const& id, address_type at, int bucket_size +routing_table::routing_table(node_id const& id, udp proto, int bucket_size , dht_settings const& settings , dht_logger* log) : @@ -133,7 +133,7 @@ routing_table::routing_table(node_id const& id, address_type at, int bucket_size #endif m_settings(settings) , m_id(id) - , m_address_type(at) + , m_protocol(proto) , m_depth(0) , m_last_self_refresh(min_time()) , m_bucket_size(bucket_size) @@ -611,7 +611,7 @@ routing_table::add_node_status_t routing_table::add_node_impl(node_entry e) #endif // don't add if the address isn't the right type - if (!native_address(e.addr())) + if (!native_endpoint(e.ep())) return failed_to_add; // if we already have this (IP,port), don't do anything diff --git a/src/kademlia/rpc_manager.cpp b/src/kademlia/rpc_manager.cpp index 7a23fc18b..cf67e5e14 100644 --- a/src/kademlia/rpc_manager.cpp +++ b/src/kademlia/rpc_manager.cpp @@ -287,7 +287,7 @@ bool rpc_manager::incoming(msg const& m, node_id* id) if (!o) { #ifndef TORRENT_DISABLE_LOGGING - if (m_table.native_address(m.addr.address())) + if (m_table.native_endpoint(m.addr)) { m_log->log(dht_logger::rpc_manager, "reply with unknown transaction id size: %d from %s" , int(transaction_id.size()), print_endpoint(m.addr).c_str()); @@ -470,7 +470,7 @@ bool rpc_manager::invoke(entry& e, udp::endpoint target_addr node& n = o->algorithm()->get_node(); if (!n.native_address(o->target_addr())) { - a["want"].list().push_back(entry(n.native_address_name())); + a["want"].list().push_back(entry(n.protocol_family_name())); } o->set_target(target_addr); diff --git a/src/kademlia/traversal_algorithm.cpp b/src/kademlia/traversal_algorithm.cpp index da80bcd37..af124087e 100644 --- a/src/kademlia/traversal_algorithm.cpp +++ b/src/kademlia/traversal_algorithm.cpp @@ -617,9 +617,9 @@ void traversal_observer::reply(msg const& m) // look for nodes #if TORRENT_USE_IPV6 - address_type at = algorithm()->get_node().native_address_type(); + udp protocol = algorithm()->get_node().protocol(); #endif - char const* nodes_key = algorithm()->get_node().native_nodes_key(); + char const* nodes_key = algorithm()->get_node().protocol_nodes_key(); bdecode_node n = r.dict_find_string(nodes_key); if (n) { @@ -633,7 +633,7 @@ void traversal_observer::reply(msg const& m) nodes += 20; udp::endpoint ep; #if TORRENT_USE_IPV6 - if (at == ipv6) + if (protocol == udp::v6()) ep = read_v6_endpoint(nodes); else #endif diff --git a/src/session_impl.cpp b/src/session_impl.cpp index e6c0cb5b0..697e451c3 100644 --- a/src/session_impl.cpp +++ b/src/session_impl.cpp @@ -6779,15 +6779,15 @@ namespace aux { set_external_address(ip, source_dht, source); } - address session_impl::external_address(address_type at) + address session_impl::external_address(udp proto) { #if !TORRENT_USE_IPV6 - TORRENT_UNUSED(at); + TORRENT_UNUSED(proto); #endif address addr; #if TORRENT_USE_IPV6 - if (at == ipv6) + if (proto == udp::v6()) addr = address_v6(); else #endif diff --git a/test/test_dht.cpp b/test/test_dht.cpp index b35db16b9..ece38d1ba 100644 --- a/test/test_dht.cpp +++ b/test/test_dht.cpp @@ -479,7 +479,7 @@ struct obs : dht::dht_observer , address const& source) TORRENT_OVERRIDE {} - virtual address external_address(address_type at) TORRENT_OVERRIDE + virtual address external_address(udp proto) TORRENT_OVERRIDE { return address_v4::from_string("236.0.0.1"); } @@ -523,8 +523,8 @@ void do_test_dht(address(&rand_addr)()) counters cnt; udp::endpoint source(rand_addr(), 20); std::map nodes; - dht::node node(source.protocol() == udp::v4() ? ipv4 : ipv6 - , &s, sett, node_id(0), &observer, cnt, nodes); + dht::node node(source.protocol(), &s, sett + , node_id(0), &observer, cnt, nodes); // DHT should be running on port 48199 now bdecode_node response; @@ -1265,7 +1265,7 @@ void do_test_dht(address(&rand_addr)()) // s.restrict_routing_ips = false; node_id id = to_hash("3123456789abcdef01232456789abcdef0123456"); const int bucket_size = 10; - dht::routing_table table(id, source.protocol() == udp::v4() ? ipv4 : ipv6, bucket_size, s, &observer); + dht::routing_table table(id, source.protocol(), bucket_size, s, &observer); std::vector nodes; TEST_EQUAL(table.size().get<0>(), 0); @@ -1515,7 +1515,7 @@ void do_test_dht(address(&rand_addr)()) g_sent_packets.clear(); do { - dht::node node(ipv4, &s, sett, (node_id::min)(), &observer, cnt, nodes); + dht::node node(udp::v4(), &s, sett, (node_id::min)(), &observer, cnt, nodes); udp::endpoint initial_node(address_v4::from_string("4.4.4.4"), 1234); std::vector nodesv; @@ -1587,7 +1587,7 @@ void do_test_dht(address(&rand_addr)()) do { dht::node_id target = to_hash("1234876923549721020394873245098347598635"); - dht::node node(ipv4, &s, sett, (node_id::min)(), &observer, cnt, nodes); + dht::node node(udp::v4(), &s, sett, (node_id::min)(), &observer, cnt, nodes); udp::endpoint initial_node(address_v4::from_string("4.4.4.4"), 1234); node.m_table.add_node(initial_node); @@ -1682,7 +1682,7 @@ void do_test_dht(address(&rand_addr)()) g_sent_packets.clear(); do { - dht::node node(ipv4, &s, sett, (node_id::min)(), &observer, cnt, nodes); + dht::node node(udp::v4(), &s, sett, (node_id::min)(), &observer, cnt, nodes); udp::endpoint initial_node(address_v4::from_string("4.4.4.4"), 1234); node.m_table.add_node(initial_node); @@ -1728,7 +1728,7 @@ void do_test_dht(address(&rand_addr)()) g_sent_packets.clear(); do { - dht::node node(ipv4, &s, sett, (node_id::min)(), &observer, cnt, nodes); + dht::node node(udp::v4(), &s, sett, (node_id::min)(), &observer, cnt, nodes); udp::endpoint initial_node(address_v4::from_string("4.4.4.4"), 1234); node.m_table.add_node(initial_node); @@ -1815,7 +1815,7 @@ void do_test_dht(address(&rand_addr)()) // set the branching factor to k to make this a little easier int old_branching = sett.search_branching; sett.search_branching = 8; - dht::node node(ipv4, &s, sett, (node_id::min)(), &observer, cnt, nodes); + dht::node node(udp::v4(), &s, sett, (node_id::min)(), &observer, cnt, nodes); enum { num_test_nodes = 8 }; node_entry nodes[num_test_nodes] = { node_entry(items[0].target, udp::endpoint(address_v4::from_string("1.1.1.1"), 1231)) @@ -1915,7 +1915,7 @@ void do_test_dht(address(&rand_addr)()) // set the branching factor to k to make this a little easier int old_branching = sett.search_branching; sett.search_branching = 8; - dht::node node(ipv4, &s, sett, (node_id::min)(), &observer, cnt, nodes); + dht::node node(udp::v4(), &s, sett, (node_id::min)(), &observer, cnt, nodes); enum { num_test_nodes = 8 }; node_entry nodes[num_test_nodes] = { node_entry(items[0].target, udp::endpoint(address_v4::from_string("1.1.1.1"), 1231)) @@ -2017,7 +2017,7 @@ void do_test_dht(address(&rand_addr)()) // set the branching factor to k to make this a little easier int old_branching = sett.search_branching; sett.search_branching = 8; - dht::node node(ipv4, &s, sett, (node_id::min)(), &observer, cnt, nodes); + dht::node node(udp::v4(), &s, sett, (node_id::min)(), &observer, cnt, nodes); sha1_hash target = hasher(public_key, item_pk_len).final(); enum { num_test_nodes = 9 }; // we need K + 1 nodes to create the failing sequence node_entry nodes[num_test_nodes] = @@ -2113,8 +2113,8 @@ TORRENT_TEST(dht_dual_stack) obs observer; counters cnt; std::map nodes; - dht::node node4(ipv4, &s, sett, node_id(0), &observer, cnt, nodes); - dht::node node6(ipv6, &s, sett, node_id(0), &observer, cnt, nodes); + dht::node node4(udp::v4(), &s, sett, node_id(0), &observer, cnt, nodes); + dht::node node6(udp::v6(), &s, sett, node_id(0), &observer, cnt, nodes); nodes.insert(std::make_pair("n4", &node4)); nodes.insert(std::make_pair("n6", &node6)); @@ -2419,7 +2419,7 @@ TORRENT_TEST(routing_table_uniform) node_id id = to_hash("1234876923549721020394873245098347598635"); node_id diff = to_hash("15764f7459456a9453f8719b09547c11d5f34061"); - routing_table tbl(id, ipv4, 8, sett, &observer); + routing_table tbl(id, udp::v4(), 8, sett, &observer); // insert 256 nodes evenly distributed across the ID space. // we expect to fill the top 5 buckets @@ -2462,7 +2462,7 @@ TORRENT_TEST(routing_table_balance) sett.extended_routing_table = false; node_id id = to_hash("1234876923549721020394873245098347598635"); - routing_table tbl(id, ipv4, 8, sett, &observer); + routing_table tbl(id, udp::v4(), 8, sett, &observer); // insert nodes in the routing table that will force it to split // and make sure we don't end up with a table completely out of balance @@ -2494,7 +2494,7 @@ TORRENT_TEST(routing_table_extended) for (int i = 0; i < 256; ++i) node_id_prefix.push_back(i); std::random_shuffle(node_id_prefix.begin(), node_id_prefix.end()); - routing_table tbl(id, ipv4, 8, sett, &observer); + routing_table tbl(id, udp::v4(), 8, sett, &observer); for (int i = 0; i < 256; ++i) { add_and_replace(id, diff); @@ -2527,7 +2527,7 @@ TORRENT_TEST(routing_table_set_id) node_id_prefix.reserve(256); for (int i = 0; i < 256; ++i) node_id_prefix.push_back(i); std::random_shuffle(node_id_prefix.begin(), node_id_prefix.end()); - routing_table tbl(id, ipv4, 8, sett, &observer); + routing_table tbl(id, udp::v4(), 8, sett, &observer); for (int i = 0; i < 256; ++i) { id[0] = node_id_prefix[i]; @@ -2573,7 +2573,7 @@ TORRENT_TEST(read_only_node) counters cnt; std::map nodes; - dht::node node(ipv4, &s, sett, node_id(0), &observer, cnt, nodes); + dht::node node(udp::v4(), &s, sett, node_id(0), &observer, cnt, nodes); udp::endpoint source(address::from_string("10.0.0.1"), 20); bdecode_node response; msg_args args; @@ -2661,7 +2661,7 @@ TORRENT_TEST(invalid_error_msg) counters cnt; std::map nodes; - dht::node node(ipv4, &s, sett, node_id(0), &observer, cnt, nodes); + dht::node node(udp::v4(), &s, sett, node_id(0), &observer, cnt, nodes); udp::endpoint source(address::from_string("10.0.0.1"), 20); entry e; @@ -2699,9 +2699,9 @@ TORRENT_TEST(rpc_invalid_error_msg) counters cnt; std::map nodes; - dht::routing_table table(node_id(), ipv4, 8, sett, &observer); + dht::routing_table table(node_id(), udp::v4(), 8, sett, &observer); dht::rpc_manager rpc(node_id(), sett, table, &s, &observer); - dht::node node(ipv4, &s, sett, node_id(0), &observer, cnt, nodes); + dht::node node(udp::v4(), &s, sett, node_id(0), &observer, cnt, nodes); udp::endpoint source(address::from_string("10.0.0.1"), 20); @@ -2788,7 +2788,7 @@ TORRENT_TEST(dht_verify_node_address) s.extended_routing_table = false; node_id id = to_hash("3123456789abcdef01232456789abcdef0123456"); const int bucket_size = 10; - dht::routing_table table(id, ipv4, bucket_size, s, &observer); + dht::routing_table table(id, udp::v4(), bucket_size, s, &observer); std::vector nodes; TEST_EQUAL(table.size().get<0>(), 0);