diff options
author | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-08-14 11:38:45 +0200 |
---|---|---|
committer | Allan Sandfeld Jensen <allan.jensen@theqtcompany.com> | 2015-08-14 17:16:47 +0000 |
commit | 3a97ca8dd9b96b599ae2d33e40df0dd2f7ea5859 (patch) | |
tree | 43cc572ba067417c7341db81f71ae7cc6e0fcc3e /chromium/net/base/network_interfaces_posix.cc | |
parent | f61ab1ac7f855cd281809255c0aedbb1895e1823 (diff) | |
download | qtwebengine-chromium-3a97ca8dd9b96b599ae2d33e40df0dd2f7ea5859.tar.gz |
BASELINE: Update chromium to 45.0.2454.40
Change-Id: Id2121d9f11a8fc633677236c65a3e41feef589e4
Reviewed-by: Andras Becsi <andras.becsi@theqtcompany.com>
Diffstat (limited to 'chromium/net/base/network_interfaces_posix.cc')
-rw-r--r-- | chromium/net/base/network_interfaces_posix.cc | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/chromium/net/base/network_interfaces_posix.cc b/chromium/net/base/network_interfaces_posix.cc new file mode 100644 index 00000000000..02e2473644a --- /dev/null +++ b/chromium/net/base/network_interfaces_posix.cc @@ -0,0 +1,82 @@ +// Copyright (c) 2011 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#include "net/base/net_util.h" + +#include <set> +#include <sys/types.h> + +#include "base/memory/scoped_ptr.h" + +#if !defined(OS_NACL) +#include "net/base/network_interfaces_posix.h" +#include <net/if.h> +#include <netinet/in.h> +#endif // !defined(OS_NACL) + +namespace net { + +#if !defined(OS_NACL) +namespace internal { + +// The application layer can pass |policy| defined in net_util.h to +// request filtering out certain type of interfaces. +bool ShouldIgnoreInterface(const std::string& name, int policy) { + // Filter out VMware interfaces, typically named vmnet1 and vmnet8, + // which might not be useful for use cases like WebRTC. + if ((policy & EXCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES) && + ((name.find("vmnet") != std::string::npos) || + (name.find("vnic") != std::string::npos))) { + return true; + } + + return false; +} + +// Check if the address is unspecified (i.e. made of zeroes) or loopback. +bool IsLoopbackOrUnspecifiedAddress(const sockaddr* addr) { + if (addr->sa_family == AF_INET6) { + const struct sockaddr_in6* addr_in6 = + reinterpret_cast<const struct sockaddr_in6*>(addr); + const struct in6_addr* sin6_addr = &addr_in6->sin6_addr; + if (IN6_IS_ADDR_LOOPBACK(sin6_addr) || IN6_IS_ADDR_UNSPECIFIED(sin6_addr)) { + return true; + } + } else if (addr->sa_family == AF_INET) { + const struct sockaddr_in* addr_in = + reinterpret_cast<const struct sockaddr_in*>(addr); + if (addr_in->sin_addr.s_addr == INADDR_LOOPBACK || + addr_in->sin_addr.s_addr == 0) { + return true; + } + } else { + // Skip non-IP addresses. + return true; + } + return false; +} + +} // namespace internal +#else // OS_NACL +bool GetNetworkList(NetworkInterfaceList* networks, int policy) { + NOTIMPLEMENTED(); + return false; +} + +std::string GetWifiSSID() { + NOTIMPLEMENTED(); + return ""; +} +#endif // OS_NACL + +WifiPHYLayerProtocol GetWifiPHYLayerProtocol() { + return WIFI_PHY_LAYER_PROTOCOL_UNKNOWN; +} + +scoped_ptr<ScopedWifiOptions> SetWifiOptions(int options) { + return scoped_ptr<ScopedWifiOptions>(); +} + + +} // namespace net |