Index: content/renderer/p2p/ipc_network_manager.cc |
diff --git a/content/renderer/p2p/ipc_network_manager.cc b/content/renderer/p2p/ipc_network_manager.cc |
index 8995339cb58796abb7447c0cdbcc03ab2079e3be..ec48e4006a12ae1b0d1ad511ea9534dd77c63e6d 100644 |
--- a/content/renderer/p2p/ipc_network_manager.cc |
+++ b/content/renderer/p2p/ipc_network_manager.cc |
@@ -3,7 +3,7 @@ |
// found in the LICENSE file. |
#include "content/renderer/p2p/ipc_network_manager.h" |
- |
+#include <string> |
#include "base/bind.h" |
#include "base/command_line.h" |
#include "base/metrics/histogram.h" |
@@ -35,17 +35,17 @@ rtc::AdapterType ConvertConnectionTypeToAdapterType( |
} // namespace |
-IpcNetworkManager::IpcNetworkManager(P2PSocketDispatcher* socket_dispatcher) |
- : socket_dispatcher_(socket_dispatcher), |
+IpcNetworkManager::IpcNetworkManager(NetworkListManager* network_list_manager) |
+ : network_list_manager_(network_list_manager), |
start_count_(0), |
network_list_received_(false), |
weak_factory_(this) { |
- socket_dispatcher_->AddNetworkListObserver(this); |
+ network_list_manager_->AddNetworkListObserver(this); |
} |
IpcNetworkManager::~IpcNetworkManager() { |
DCHECK(!start_count_); |
- socket_dispatcher_->RemoveNetworkListObserver(this); |
+ network_list_manager_->RemoveNetworkListObserver(this); |
} |
void IpcNetworkManager::StartUpdating() { |
@@ -71,8 +71,6 @@ void IpcNetworkManager::OnNetworkListChanged( |
if (!network_list_received_) |
network_list_received_ = true; |
- // Note: 32 and 64 are the arbitrary(kind of) prefix length used to |
- // differentiate IPv4 and IPv6 addresses. |
// rtc::Network uses these prefix_length to compare network |
// interfaces discovered. |
std::vector<rtc::Network*> networks; |
@@ -84,9 +82,14 @@ void IpcNetworkManager::OnNetworkListChanged( |
uint32 address; |
memcpy(&address, &it->address[0], sizeof(uint32)); |
address = rtc::NetworkToHost32(address); |
- rtc::Network* network = new rtc::Network( |
- it->name, it->name, rtc::IPAddress(address), 32, |
- ConvertConnectionTypeToAdapterType(it->type)); |
+ rtc::IPAddress prefix = |
+ rtc::TruncateIP(rtc::IPAddress(address), it->network_prefix); |
+ rtc::Network* network = |
+ new rtc::Network(it->name, |
+ it->name, |
+ prefix, |
+ it->network_prefix, |
+ ConvertConnectionTypeToAdapterType(it->type)); |
network->AddIP(rtc::IPAddress(address)); |
networks.push_back(network); |
++ipv4_interfaces; |
@@ -95,9 +98,14 @@ void IpcNetworkManager::OnNetworkListChanged( |
memcpy(&address, &it->address[0], sizeof(in6_addr)); |
rtc::IPAddress ip6_addr(address); |
if (!rtc::IPIsPrivate(ip6_addr)) { |
- rtc::Network* network = new rtc::Network( |
- it->name, it->name, ip6_addr, 64, |
- ConvertConnectionTypeToAdapterType(it->type)); |
+ rtc::IPAddress prefix = |
+ rtc::TruncateIP(rtc::IPAddress(ip6_addr), it->network_prefix); |
+ rtc::Network* network = |
+ new rtc::Network(it->name, |
+ it->name, |
+ prefix, |
+ it->network_prefix, |
+ ConvertConnectionTypeToAdapterType(it->type)); |
network->AddIP(ip6_addr); |
networks.push_back(network); |
++ipv6_interfaces; |