| // Copyright (c) 2014 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. |
| |
| #ifndef NET_BASE_NETWORK_INTERFACES_LINUX_H_ |
| #define NET_BASE_NETWORK_INTERFACES_LINUX_H_ |
| |
| // This file is only used to expose some of the internals |
| // of network_interfaces_linux.cc to address_tracker_linux and tests. |
| |
| #include <string> |
| #include <unordered_set> |
| |
| #include "base/files/scoped_file.h" |
| #include "net/base/address_tracker_linux.h" |
| #include "net/base/net_export.h" |
| #include "net/base/network_interfaces.h" |
| |
| namespace net { |
| namespace internal { |
| |
| typedef char* (*GetInterfaceNameFunction)(int interface_index, char* ifname); |
| |
| typedef std::string (*GetInterfaceSSIDFunction)(const std::string& ifname); |
| |
| NET_EXPORT bool GetNetworkListImpl( |
| NetworkInterfaceList* networks, |
| int policy, |
| const std::unordered_set<int>& online_links, |
| const internal::AddressTrackerLinux::AddressMap& address_map, |
| GetInterfaceNameFunction get_interface_name); |
| |
| // Gets the current Wi-Fi SSID based on |interfaces|. Returns |
| // empty string if there are no interfaces or if two interfaces have different |
| // connection types. Otherwise returns the SSID of all interfaces if they have |
| // the same SSID. This is adapted from |
| // NetworkChangeNotifier::ConnectionTypeFromInterfaceList. |
| NET_EXPORT std::string GetWifiSSIDFromInterfaceListInternal( |
| const NetworkInterfaceList& interfaces, |
| internal::GetInterfaceSSIDFunction get_interface_ssid); |
| |
| // Returns a socket useful for performing ioctl()s. |
| base::ScopedFD GetSocketForIoctl(); |
| |
| } // namespace internal |
| } // namespace net |
| |
| #endif // NET_BASE_NETWORK_INTERFACES_LINUX_H_ |