diff options
-rw-r--r-- | chrome/browser/extensions/api/dial/dial_service.cc | 3 | ||||
-rw-r--r-- | chrome/browser/extensions/api/socket/socket_api.cc | 3 | ||||
-rw-r--r-- | chrome/browser/extensions/api/system_network/system_network_api.cc | 3 | ||||
-rw-r--r-- | chrome/browser/local_discovery/privet_traffic_detector.cc | 2 | ||||
-rw-r--r-- | chrome/browser/media/webrtc_logging_handler_host.cc | 3 | ||||
-rw-r--r-- | chrome_frame/test/chrome_frame_test_utils.cc | 3 | ||||
-rw-r--r-- | cloud_print/gcp20/prototype/printer.cc | 3 | ||||
-rw-r--r-- | content/browser/renderer_host/p2p/socket_dispatcher_host.cc | 2 | ||||
-rw-r--r-- | content/browser/renderer_host/pepper/pepper_network_monitor_host.cc | 2 | ||||
-rw-r--r-- | net/base/net_util.h | 9 | ||||
-rw-r--r-- | net/base/net_util_posix.cc | 11 | ||||
-rw-r--r-- | net/base/net_util_unittest.cc | 2 | ||||
-rw-r--r-- | net/base/net_util_win.cc | 12 | ||||
-rw-r--r-- | net/dns/mdns_client.cc | 2 |
14 files changed, 44 insertions, 16 deletions
diff --git a/chrome/browser/extensions/api/dial/dial_service.cc b/chrome/browser/extensions/api/dial/dial_service.cc index 773bdc7..c1bbcff 100644 --- a/chrome/browser/extensions/api/dial/dial_service.cc +++ b/chrome/browser/extensions/api/dial/dial_service.cc @@ -113,7 +113,8 @@ void GetNetworkListOnFileThread( const scoped_refptr<base::MessageLoopProxy>& loop, const base::Callback<void(const NetworkInterfaceList& networks)>& cb) { NetworkInterfaceList list; - bool success = net::GetNetworkList(&list); + bool success = net::GetNetworkList( + &list, net::INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES); if (!success) DVLOG(1) << "Could not retrieve network list!"; diff --git a/chrome/browser/extensions/api/socket/socket_api.cc b/chrome/browser/extensions/api/socket/socket_api.cc index da173c2..cd17a7f 100644 --- a/chrome/browser/extensions/api/socket/socket_api.cc +++ b/chrome/browser/extensions/api/socket/socket_api.cc @@ -661,7 +661,8 @@ bool SocketGetNetworkListFunction::RunImpl() { void SocketGetNetworkListFunction::GetNetworkListOnFileThread() { net::NetworkInterfaceList interface_list; - if (GetNetworkList(&interface_list)) { + if (GetNetworkList(&interface_list, + net::INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES)) { content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, base::Bind(&SocketGetNetworkListFunction::SendResponseOnUIThread, this, interface_list)); diff --git a/chrome/browser/extensions/api/system_network/system_network_api.cc b/chrome/browser/extensions/api/system_network/system_network_api.cc index 25621c2..633cea3 100644 --- a/chrome/browser/extensions/api/system_network/system_network_api.cc +++ b/chrome/browser/extensions/api/system_network/system_network_api.cc @@ -27,7 +27,8 @@ bool SystemNetworkGetNetworkInterfacesFunction::RunImpl() { void SystemNetworkGetNetworkInterfacesFunction::GetListOnFileThread() { net::NetworkInterfaceList interface_list; - if (net::GetNetworkList(&interface_list)) { + if (net::GetNetworkList( + &interface_list, net::INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES)) { content::BrowserThread::PostTask(content::BrowserThread::UI, FROM_HERE, base::Bind(&SystemNetworkGetNetworkInterfacesFunction:: SendResponseOnUIThread, diff --git a/chrome/browser/local_discovery/privet_traffic_detector.cc b/chrome/browser/local_discovery/privet_traffic_detector.cc index 602e7f1..0d8f70f 100644 --- a/chrome/browser/local_discovery/privet_traffic_detector.cc +++ b/chrome/browser/local_discovery/privet_traffic_detector.cc @@ -24,7 +24,7 @@ void GetNetworkListOnFileThread( const base::Callback<void(const net::NetworkInterfaceList&)> callback) { DCHECK(content::BrowserThread::CurrentlyOn(content::BrowserThread::FILE)); net::NetworkInterfaceList networks; - if (!GetNetworkList(&networks)) + if (!GetNetworkList(&networks, net::INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES)) return; net::NetworkInterfaceList ip4_networks; diff --git a/chrome/browser/media/webrtc_logging_handler_host.cc b/chrome/browser/media/webrtc_logging_handler_host.cc index c912815..bed00cb 100644 --- a/chrome/browser/media/webrtc_logging_handler_host.cc +++ b/chrome/browser/media/webrtc_logging_handler_host.cc @@ -325,7 +325,8 @@ void WebRtcLoggingHandlerHost::LogMachineInfo() { // Network interfaces net::NetworkInterfaceList network_list; - net::GetNetworkList(&network_list); + net::GetNetworkList(&network_list, + net::EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES); info = "Discovered " + IntToString(network_list.size()) + " network interfaces:" + '\n'; pcb.Write(info.c_str(), info.length()); diff --git a/chrome_frame/test/chrome_frame_test_utils.cc b/chrome_frame/test/chrome_frame_test_utils.cc index c614214..8dfc86e 100644 --- a/chrome_frame/test/chrome_frame_test_utils.cc +++ b/chrome_frame/test/chrome_frame_test_utils.cc @@ -712,7 +712,8 @@ std::string GetLocalIPv4Address() { std::string address; net::NetworkInterfaceList nic_list; - if (!net::GetNetworkList(&nic_list)) { + if (!net::GetNetworkList(&nic_list, + net::INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES)) { LOG(ERROR) << "GetNetworkList failed to look up non-loopback adapters. " << "Tests will be run over the loopback adapter, which may " << "result in hangs."; diff --git a/cloud_print/gcp20/prototype/printer.cc b/cloud_print/gcp20/prototype/printer.cc index 1d758f7..e5828261 100644 --- a/cloud_print/gcp20/prototype/printer.cc +++ b/cloud_print/gcp20/prototype/printer.cc @@ -111,7 +111,8 @@ const char kCdd[] = net::IPAddressNumber GetLocalIp(const std::string& interface_name, bool return_ipv6_number) { net::NetworkInterfaceList interfaces; - bool success = net::GetNetworkList(&interfaces); + bool success = net::GetNetworkList( + &interfaces, net::INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES); DCHECK(success); size_t expected_address_size = return_ipv6_number ? net::kIPv6AddressSize diff --git a/content/browser/renderer_host/p2p/socket_dispatcher_host.cc b/content/browser/renderer_host/p2p/socket_dispatcher_host.cc index 1608ae0..5038342 100644 --- a/content/browser/renderer_host/p2p/socket_dispatcher_host.cc +++ b/content/browser/renderer_host/p2p/socket_dispatcher_host.cc @@ -256,7 +256,7 @@ void P2PSocketDispatcherHost::OnDestroySocket(int socket_id) { void P2PSocketDispatcherHost::DoGetNetworkList() { net::NetworkInterfaceList list; - net::GetNetworkList(&list); + net::GetNetworkList(&list, net::EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES); BrowserThread::PostTask( BrowserThread::IO, FROM_HERE, base::Bind( &P2PSocketDispatcherHost::SendNetworkList, this, list)); diff --git a/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc b/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc index b53a60b..32ed3cf 100644 --- a/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc +++ b/content/browser/renderer_host/pepper/pepper_network_monitor_host.cc @@ -32,7 +32,7 @@ bool CanUseNetworkMonitor(bool external_plugin, scoped_ptr<net::NetworkInterfaceList> GetNetworkList() { scoped_ptr<net::NetworkInterfaceList> list(new net::NetworkInterfaceList()); - net::GetNetworkList(list.get()); + net::GetNetworkList(list.get(), net::INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES); return list.Pass(); } diff --git a/net/base/net_util.h b/net/base/net_util.h index baa68e3..fe91844 100644 --- a/net/base/net_util.h +++ b/net/base/net_util.h @@ -528,11 +528,18 @@ struct NET_EXPORT NetworkInterface { typedef std::vector<NetworkInterface> NetworkInterfaceList; +// Policy settings to include/exclude VMWare host only network interfaces. +enum HostScopeVirtualInterfacePolicy { + INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, + EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, +}; + // Returns list of network interfaces except loopback interface. If an // interface has more than one address, a separate entry is added to // the list for each address. // Can be called only on a thread that allows IO. -NET_EXPORT bool GetNetworkList(NetworkInterfaceList* networks); +NET_EXPORT bool GetNetworkList(NetworkInterfaceList* networks, + HostScopeVirtualInterfacePolicy policy); // General category of the IEEE 802.11 (wifi) physical layer operating mode. enum WifiPHYLayerProtocol { diff --git a/net/base/net_util_posix.cc b/net/base/net_util_posix.cc index 5e1042b..0045938 100644 --- a/net/base/net_util_posix.cc +++ b/net/base/net_util_posix.cc @@ -63,7 +63,8 @@ bool FileURLToFilePath(const GURL& url, base::FilePath* path) { return !file_path_str.empty(); } -bool GetNetworkList(NetworkInterfaceList* networks) { +bool GetNetworkList(NetworkInterfaceList* networks, + HostScopeVirtualInterfacePolicy policy) { #if defined(OS_ANDROID) std::string network_list = android::GetNetworkList(); base::StringTokenizer network_interfaces(network_list, "\n"); @@ -138,8 +139,14 @@ bool GetNetworkList(NetworkInterfaceList* networks) { continue; } + const std::string& name = interface->ifa_name; + // Filter out VMware interfaces, typically named vmnet1 and vmnet8. + if (policy == EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES && + ((name.find("vmnet") != std::string::npos) || + (name.find("vnic") != std::string::npos))) { + continue; + } IPEndPoint address; - std::string name = interface->ifa_name; if (address.FromSockAddr(addr, addr_size)) { uint8 net_mask = 0; if (interface->ifa_netmask) { diff --git a/net/base/net_util_unittest.cc b/net/base/net_util_unittest.cc index 2259629..5d5137a 100644 --- a/net/base/net_util_unittest.cc +++ b/net/base/net_util_unittest.cc @@ -3299,7 +3299,7 @@ TEST(NetUtilTest, IsLocalhost) { // Verify GetNetworkList(). TEST(NetUtilTest, GetNetworkList) { NetworkInterfaceList list; - ASSERT_TRUE(GetNetworkList(&list)); + ASSERT_TRUE(GetNetworkList(&list, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES)); for (NetworkInterfaceList::iterator it = list.begin(); it != list.end(); ++it) { // Verify that the name is not empty. diff --git a/net/base/net_util_win.cc b/net/base/net_util_win.cc index d0efe39..b15337b 100644 --- a/net/base/net_util_win.cc +++ b/net/base/net_util_win.cc @@ -138,7 +138,8 @@ bool FileURLToFilePath(const GURL& url, base::FilePath* file_path) { return true; } -bool GetNetworkList(NetworkInterfaceList* networks) { +bool GetNetworkList(NetworkInterfaceList* networks, + HostScopeVirtualInterfacePolicy policy) { // GetAdaptersAddresses() may require IO operations. base::ThreadRestrictions::AssertIOAllowed(); bool is_xp = base::win::GetVersion() < base::win::VERSION_VISTA; @@ -170,7 +171,14 @@ bool GetNetworkList(NetworkInterfaceList* networks) { continue; } - std::string name = adapter->AdapterName; + // Ignore any HOST side vmware adapters with a description like: + // VMware Virtual Ethernet Adapter for VMnet1 + // but don't ignore any GUEST side adapters with a description like: + // VMware Accelerated AMD PCNet Adapter #2 + if (policy == EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES && + strstr(adapter->AdapterName, "VMnet") != NULL) { + continue; + } for (IP_ADAPTER_UNICAST_ADDRESS* address = adapter->FirstUnicastAddress; address; address = address->Next) { diff --git a/net/dns/mdns_client.cc b/net/dns/mdns_client.cc index 93f1d61..c55de6e 100644 --- a/net/dns/mdns_client.cc +++ b/net/dns/mdns_client.cc @@ -67,7 +67,7 @@ IPEndPoint GetMDnsIPEndPoint(AddressFamily address_family) { InterfaceIndexFamilyList GetMDnsInterfacesToBind() { NetworkInterfaceList network_list; InterfaceIndexFamilyList interfaces; - if (!GetNetworkList(&network_list)) + if (!GetNetworkList(&network_list, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES)) return interfaces; for (size_t i = 0; i < network_list.size(); ++i) { AddressFamily family = GetAddressFamily(network_list[i].address); |