1 // Copyright 2014 The Chromium Authors 2 // Use of this source code is governed by a BSD-style license that can be 3 // found in the LICENSE file. 4 5 #ifndef NET_BASE_NETWORK_INTERFACES_LINUX_H_ 6 #define NET_BASE_NETWORK_INTERFACES_LINUX_H_ 7 8 // This file is only used to expose some of the internals 9 // of network_interfaces_linux.cc to address_tracker_linux and tests. 10 11 #include <string> 12 #include <unordered_set> 13 14 #include "base/files/scoped_file.h" 15 #include "net/base/address_tracker_linux.h" 16 #include "net/base/net_export.h" 17 #include "net/base/network_interfaces.h" 18 19 namespace net::internal { 20 21 typedef char* (*GetInterfaceNameFunction)(int interface_index, char* ifname); 22 23 typedef std::string (*GetInterfaceSSIDFunction)(const std::string& ifname); 24 25 NET_EXPORT bool GetNetworkListImpl( 26 NetworkInterfaceList* networks, 27 int policy, 28 const std::unordered_set<int>& online_links, 29 const internal::AddressTrackerLinux::AddressMap& address_map, 30 GetInterfaceNameFunction get_interface_name); 31 32 // Gets the current Wi-Fi SSID based on |interfaces|. Returns 33 // empty string if there are no interfaces or if two interfaces have different 34 // connection types. Otherwise returns the SSID of all interfaces if they have 35 // the same SSID. This is adapted from 36 // NetworkChangeNotifier::ConnectionTypeFromInterfaceList. 37 NET_EXPORT std::string GetWifiSSIDFromInterfaceListInternal( 38 const NetworkInterfaceList& interfaces, 39 internal::GetInterfaceSSIDFunction get_interface_ssid); 40 41 // Returns a socket useful for performing ioctl()s. 42 base::ScopedFD GetSocketForIoctl(); 43 44 } // namespace net::internal 45 46 #endif // NET_BASE_NETWORK_INTERFACES_LINUX_H_ 47