1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
|
--- net/base/network_interfaces_linux.cc.orig 2016-05-11 19:02:24 UTC
+++ net/base/network_interfaces_linux.cc
@@ -4,12 +4,14 @@
#include "net/base/network_interfaces_linux.h"
+#if !defined(OS_FREEBSD)
#if !defined(OS_ANDROID)
#include <linux/ethtool.h>
#endif // !defined(OS_ANDROID)
#include <linux/if.h>
#include <linux/sockios.h>
#include <linux/wireless.h>
+#endif // !defined(OS_FREEBSD)
#include <set>
#include <sys/ioctl.h>
#include <sys/types.h>
@@ -44,6 +46,7 @@ bool TryConvertNativeToNetIPAttributes(i
// are still progressing through duplicated address detection (DAD)
// and shouldn't be used by the application layer until DAD process
// is completed.
+#if !defined(OS_FREEBSD)
if (native_attributes & (
#if !defined(OS_ANDROID)
IFA_F_OPTIMISTIC | IFA_F_DADFAILED |
@@ -61,6 +64,10 @@ bool TryConvertNativeToNetIPAttributes(i
}
return true;
+#else
+ // the flags tested above are not present on FreeBSD
+ return false;
+#endif // !OS_FREEBSD
}
} // namespace
@@ -79,13 +86,15 @@ NetworkChangeNotifier::ConnectionType Ge
if (!s.is_valid())
return NetworkChangeNotifier::CONNECTION_UNKNOWN;
+#if !defined(OS_FREEBSD)
// Test wireless extensions for CONNECTION_WIFI
struct iwreq pwrq = {};
strncpy(pwrq.ifr_name, ifname.c_str(), IFNAMSIZ - 1);
if (ioctl(s.get(), SIOCGIWNAME, &pwrq) != -1)
return NetworkChangeNotifier::CONNECTION_WIFI;
+#endif // !defined(OS_FREEBSD)
-#if !defined(OS_ANDROID)
+#if !defined(OS_ANDROID) && !defined(OS_FREEBSD)
// Test ethtool for CONNECTION_ETHERNET
struct ethtool_cmd ecmd = {};
ecmd.cmd = ETHTOOL_GSET;
@@ -94,12 +103,13 @@ NetworkChangeNotifier::ConnectionType Ge
strncpy(ifr.ifr_name, ifname.c_str(), IFNAMSIZ - 1);
if (ioctl(s.get(), SIOCETHTOOL, &ifr) != -1)
return NetworkChangeNotifier::CONNECTION_ETHERNET;
-#endif // !defined(OS_ANDROID)
+#endif // !defined(OS_ANDROID) && !defined(OS_FREEBSD)
return NetworkChangeNotifier::CONNECTION_UNKNOWN;
}
std::string GetInterfaceSSID(const std::string& ifname) {
+#if !defined(OS_FREEBSD)
base::ScopedFD ioctl_socket(socket(AF_INET, SOCK_DGRAM, 0));
if (!ioctl_socket.is_valid())
return "";
@@ -111,9 +121,11 @@ std::string GetInterfaceSSID(const std::
wreq.u.essid.length = IW_ESSID_MAX_SIZE;
if (ioctl(ioctl_socket.get(), SIOCGIWESSID, &wreq) != -1)
return ssid;
+#endif // !defined(OS_FREEBSD)
return "";
}
+#if !defined(OS_FREEBSD)
bool GetNetworkListImpl(
NetworkInterfaceList* networks,
int policy,
@@ -182,6 +194,7 @@ bool GetNetworkListImpl(
return true;
}
+#endif // !defined(OS_FREEBSD)
std::string GetWifiSSIDFromInterfaceListInternal(
const NetworkInterfaceList& interfaces,
@@ -206,12 +219,16 @@ bool GetNetworkList(NetworkInterfaceList
if (networks == NULL)
return false;
+#if !defined(OS_FREEBSD)
internal::AddressTrackerLinux tracker;
tracker.Init();
return internal::GetNetworkListImpl(
networks, policy, tracker.GetOnlineLinks(), tracker.GetAddressMap(),
&internal::AddressTrackerLinux::GetInterfaceName);
+#else
+ return false;
+#endif
}
std::string GetWifiSSID() {
|