xref: /aosp_15_r20/external/cronet/net/base/network_interfaces_linux.h (revision 6777b5387eb2ff775bb5750e3f5d96f37fb7352b)
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