| // 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_ |