OLD | NEW |
---|---|
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "net/base/network_interfaces.h" | 5 #include "net/base/network_interfaces.h" |
6 | 6 |
7 #include <ostream> | 7 #include <ostream> |
8 #include <string> | 8 #include <string> |
9 #include <unordered_set> | 9 #include <unordered_set> |
10 | 10 |
(...skipping 18 matching lines...) Expand all Loading... | |
29 #include <netinet/in_var.h> | 29 #include <netinet/in_var.h> |
30 #endif // !OS_IOS | 30 #endif // !OS_IOS |
31 #endif // OS_MACOSX | 31 #endif // OS_MACOSX |
32 #endif // !OS_NACL && !OS_WIN | 32 #endif // !OS_NACL && !OS_WIN |
33 #include "testing/gtest/include/gtest/gtest.h" | 33 #include "testing/gtest/include/gtest/gtest.h" |
34 #include "url/gurl.h" | 34 #include "url/gurl.h" |
35 | 35 |
36 #if defined(OS_WIN) | 36 #if defined(OS_WIN) |
37 #include <iphlpapi.h> | 37 #include <iphlpapi.h> |
38 #include <objbase.h> | 38 #include <objbase.h> |
39 #include "base/win/windows_version.h" | |
40 #endif // OS_WIN | 39 #endif // OS_WIN |
41 | 40 |
42 #if !defined(OS_MACOSX) && !defined(OS_NACL) && !defined(OS_WIN) | 41 #if !defined(OS_MACOSX) && !defined(OS_NACL) && !defined(OS_WIN) |
43 #include "net/base/address_tracker_linux.h" | 42 #include "net/base/address_tracker_linux.h" |
44 #endif // !OS_MACOSX && !OS_NACL && !OS_WIN | 43 #endif // !OS_MACOSX && !OS_NACL && !OS_WIN |
45 | 44 |
46 #if defined(OS_WIN) | 45 #if defined(OS_WIN) |
47 #include "net/base/network_interfaces_win.h" | 46 #include "net/base/network_interfaces_win.h" |
48 #else // OS_WIN | 47 #else // OS_WIN |
49 #include "net/base/network_interfaces_posix.h" | 48 #include "net/base/network_interfaces_posix.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
131 | 130 |
132 // Verify that the address is correct. | 131 // Verify that the address is correct. |
133 EXPECT_TRUE(it->address.IsValid()) << "Invalid address of size " | 132 EXPECT_TRUE(it->address.IsValid()) << "Invalid address of size " |
134 << it->address.size(); | 133 << it->address.size(); |
135 EXPECT_FALSE(it->address.IsZero()); | 134 EXPECT_FALSE(it->address.IsZero()); |
136 EXPECT_GT(it->prefix_length, 1u); | 135 EXPECT_GT(it->prefix_length, 1u); |
137 EXPECT_LE(it->prefix_length, it->address.size() * 8); | 136 EXPECT_LE(it->prefix_length, it->address.size() * 8); |
138 | 137 |
139 #if defined(OS_WIN) | 138 #if defined(OS_WIN) |
140 // On Windows |name| is NET_LUID. | 139 // On Windows |name| is NET_LUID. |
141 base::ScopedNativeLibrary phlpapi_lib( | |
142 base::FilePath(FILE_PATH_LITERAL("iphlpapi.dll"))); | |
143 ASSERT_TRUE(phlpapi_lib.is_valid()); | |
144 typedef NETIO_STATUS (WINAPI* ConvertInterfaceIndexToLuid)(NET_IFINDEX, | 140 typedef NETIO_STATUS (WINAPI* ConvertInterfaceIndexToLuid)(NET_IFINDEX, |
145 PNET_LUID); | 141 PNET_LUID); |
146 ConvertInterfaceIndexToLuid interface_to_luid = | |
147 reinterpret_cast<ConvertInterfaceIndexToLuid>( | |
148 phlpapi_lib.GetFunctionPointer("ConvertInterfaceIndexToLuid")); | |
149 | |
150 typedef NETIO_STATUS (WINAPI* ConvertInterfaceLuidToGuid)(NET_LUID*, | 142 typedef NETIO_STATUS (WINAPI* ConvertInterfaceLuidToGuid)(NET_LUID*, |
151 GUID*); | 143 GUID*); |
mmenke
2016/05/18 17:54:03
Actually, you need to remove these two typedefs as
maksims (do not use this acc)
2016/05/19 05:58:31
Done. Thank you for explanations!
| |
152 ConvertInterfaceLuidToGuid luid_to_guid = | |
153 reinterpret_cast<ConvertInterfaceLuidToGuid>( | |
154 phlpapi_lib.GetFunctionPointer("ConvertInterfaceLuidToGuid")); | |
155 | 144 |
156 if (interface_to_luid && luid_to_guid) { | 145 NET_LUID luid; |
157 NET_LUID luid; | 146 EXPECT_EQ(static_cast<DWORD>(NO_ERROR), |
158 EXPECT_EQ(static_cast<DWORD>(NO_ERROR), | 147 ConvertInterfaceIndexToLuid(it->interface_index, &luid)); |
159 interface_to_luid(it->interface_index, &luid)); | 148 GUID guid; |
160 GUID guid; | 149 EXPECT_EQ(static_cast<DWORD>(NO_ERROR), |
161 EXPECT_EQ(static_cast<DWORD>(NO_ERROR), luid_to_guid(&luid, &guid)); | 150 ConvertInterfaceLuidToGuid(&luid, &guid)); |
162 LPOLESTR name; | 151 LPOLESTR name; |
163 StringFromCLSID(guid, &name); | 152 StringFromCLSID(guid, &name); |
164 EXPECT_STREQ(base::UTF8ToWide(it->name).c_str(), name); | 153 EXPECT_STREQ(base::UTF8ToWide(it->name).c_str(), name); |
165 CoTaskMemFree(name); | 154 CoTaskMemFree(name); |
166 continue; | 155 |
167 } else { | |
168 EXPECT_LT(base::win::GetVersion(), base::win::VERSION_VISTA); | |
169 EXPECT_LT(it->interface_index, 1u << 24u); // Must fit 0.x.x.x. | |
170 EXPECT_NE(it->interface_index, 0u); // 0 means to use default. | |
171 } | |
172 if (it->type == NetworkChangeNotifier::CONNECTION_WIFI) { | 156 if (it->type == NetworkChangeNotifier::CONNECTION_WIFI) { |
173 EXPECT_NE(WIFI_PHY_LAYER_PROTOCOL_NONE, GetWifiPHYLayerProtocol()); | 157 EXPECT_NE(WIFI_PHY_LAYER_PROTOCOL_NONE, GetWifiPHYLayerProtocol()); |
174 } | 158 } |
175 #elif !defined(OS_ANDROID) | 159 #elif !defined(OS_ANDROID) |
176 char name[IF_NAMESIZE]; | 160 char name[IF_NAMESIZE]; |
177 EXPECT_TRUE(if_indextoname(it->interface_index, name)); | 161 EXPECT_TRUE(if_indextoname(it->interface_index, name)); |
178 EXPECT_STREQ(it->name.c_str(), name); | 162 EXPECT_STREQ(it->name.c_str(), name); |
179 #endif | 163 #endif |
180 } | 164 } |
181 } | 165 } |
(...skipping 301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
483 adapter_address.FirstPrefix = &adapter_prefix; | 467 adapter_address.FirstPrefix = &adapter_prefix; |
484 | 468 |
485 // Address of offline links should be ignored. | 469 // Address of offline links should be ignored. |
486 ASSERT_TRUE(FillAdapterAddress( | 470 ASSERT_TRUE(FillAdapterAddress( |
487 &adapter_address /* adapter_address */, ifname_em1 /* ifname */, | 471 &adapter_address /* adapter_address */, ifname_em1 /* ifname */, |
488 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */, | 472 ipv6_address /* ip_address */, ipv6_prefix /* ip_netmask */, |
489 addresses /* sock_addrs */)); | 473 addresses /* sock_addrs */)); |
490 adapter_address.OperStatus = IfOperStatusDown; | 474 adapter_address.OperStatus = IfOperStatusDown; |
491 | 475 |
492 EXPECT_TRUE(internal::GetNetworkListImpl( | 476 EXPECT_TRUE(internal::GetNetworkListImpl( |
493 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, true, &adapter_address)); | 477 &results, INCLUDE_HOST_SCOPE_VIRTUAL_INTERFACES, true, &adapter_address)); |
mmenke
2016/05/18 17:54:03
All 7 of the "internal::GetNetworkListImpl" calls
maksims (do not use this acc)
2016/05/19 05:58:31
Done.
| |
494 | 478 |
495 EXPECT_EQ(results.size(), 0ul); | 479 EXPECT_EQ(results.size(), 0ul); |
496 | 480 |
497 // Address on loopback interface should be trimmed out. | 481 // Address on loopback interface should be trimmed out. |
498 ASSERT_TRUE(FillAdapterAddress( | 482 ASSERT_TRUE(FillAdapterAddress( |
499 &adapter_address /* adapter_address */, ifname_em1 /* ifname */, | 483 &adapter_address /* adapter_address */, ifname_em1 /* ifname */, |
500 ipv6_local_address /* ip_address */, ipv6_prefix /* ip_netmask */, | 484 ipv6_local_address /* ip_address */, ipv6_prefix /* ip_netmask */, |
501 addresses /* sock_addrs */)); | 485 addresses /* sock_addrs */)); |
502 adapter_address.IfType = IF_TYPE_SOFTWARE_LOOPBACK; | 486 adapter_address.IfType = IF_TYPE_SOFTWARE_LOOPBACK; |
503 | 487 |
(...skipping 238 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
742 // We can't check the result of GetHostName() directly, since the result | 726 // We can't check the result of GetHostName() directly, since the result |
743 // will differ across machines. Our goal here is to simply exercise the | 727 // will differ across machines. Our goal here is to simply exercise the |
744 // code path, and check that things "look about right". | 728 // code path, and check that things "look about right". |
745 std::string hostname = GetHostName(); | 729 std::string hostname = GetHostName(); |
746 EXPECT_FALSE(hostname.empty()); | 730 EXPECT_FALSE(hostname.empty()); |
747 } | 731 } |
748 | 732 |
749 } // namespace | 733 } // namespace |
750 | 734 |
751 } // namespace net | 735 } // namespace net |
OLD | NEW |