Treat wlan as a WiFi adapter name on all platforms.
wlan was previously classified as WiFi only on Android, while some non-Android platforms may use the same name for a WiFi adapter. This causes a WiFi interface to be assigned a higher network cost than designed when we rely on the name matching to identify the network type, which has further implication in the ICE candidate pair selection. Bug: webrtc:10992 Change-Id: I8d2bb18cf9a0e3a06a104f359a85f802526a2ff9 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/154464 Commit-Queue: Qingsi Wang <qingsi@webrtc.org> Reviewed-by: Alex Drake <alexdrake@webrtc.org> Cr-Commit-Position: refs/heads/master@{#29309}
This commit is contained in:
@ -211,10 +211,15 @@ AdapterType GetAdapterTypeFromName(const char* network_name) {
|
||||
// an ifaddr struct. See ConvertIfAddrs in this file.
|
||||
return ADAPTER_TYPE_LOOPBACK;
|
||||
}
|
||||
|
||||
if (MatchTypeNameWithIndexPattern(network_name, "eth")) {
|
||||
return ADAPTER_TYPE_ETHERNET;
|
||||
}
|
||||
|
||||
if (MatchTypeNameWithIndexPattern(network_name, "wlan")) {
|
||||
return ADAPTER_TYPE_WIFI;
|
||||
}
|
||||
|
||||
if (MatchTypeNameWithIndexPattern(network_name, "ipsec") ||
|
||||
MatchTypeNameWithIndexPattern(network_name, "tun") ||
|
||||
MatchTypeNameWithIndexPattern(network_name, "utun") ||
|
||||
@ -241,9 +246,6 @@ AdapterType GetAdapterTypeFromName(const char* network_name) {
|
||||
MatchTypeNameWithIndexPattern(network_name, "clat")) {
|
||||
return ADAPTER_TYPE_CELLULAR;
|
||||
}
|
||||
if (MatchTypeNameWithIndexPattern(network_name, "wlan")) {
|
||||
return ADAPTER_TYPE_WIFI;
|
||||
}
|
||||
#endif
|
||||
|
||||
return ADAPTER_TYPE_UNKNOWN;
|
||||
|
@ -859,6 +859,12 @@ TEST_F(NetworkTest, TestGetAdapterTypeFromNameMatching) {
|
||||
ClearNetworks(manager);
|
||||
ReleaseIfAddrs(addr_list);
|
||||
|
||||
strcpy(if_name, "wlan0");
|
||||
addr_list = InstallIpv6Network(if_name, ipv6_address1, ipv6_mask, manager);
|
||||
EXPECT_EQ(ADAPTER_TYPE_WIFI, GetAdapterType(manager));
|
||||
ClearNetworks(manager);
|
||||
ReleaseIfAddrs(addr_list);
|
||||
|
||||
#if defined(WEBRTC_IOS)
|
||||
strcpy(if_name, "pdp_ip0");
|
||||
addr_list = InstallIpv6Network(if_name, ipv6_address1, ipv6_mask, manager);
|
||||
@ -879,12 +885,6 @@ TEST_F(NetworkTest, TestGetAdapterTypeFromNameMatching) {
|
||||
ClearNetworks(manager);
|
||||
ReleaseIfAddrs(addr_list);
|
||||
|
||||
strcpy(if_name, "wlan1");
|
||||
addr_list = InstallIpv6Network(if_name, ipv6_address2, ipv6_mask, manager);
|
||||
EXPECT_EQ(ADAPTER_TYPE_WIFI, GetAdapterType(manager));
|
||||
ClearNetworks(manager);
|
||||
ReleaseIfAddrs(addr_list);
|
||||
|
||||
strcpy(if_name, "v4-rmnet_data0");
|
||||
addr_list = InstallIpv6Network(if_name, ipv6_address2, ipv6_mask, manager);
|
||||
EXPECT_EQ(ADAPTER_TYPE_CELLULAR, GetAdapterType(manager));
|
||||
@ -896,15 +896,6 @@ TEST_F(NetworkTest, TestGetAdapterTypeFromNameMatching) {
|
||||
EXPECT_EQ(ADAPTER_TYPE_CELLULAR, GetAdapterType(manager));
|
||||
ClearNetworks(manager);
|
||||
ReleaseIfAddrs(addr_list);
|
||||
#else
|
||||
// TODO(deadbeef): If not iOS or Android, "wlan0" should be treated as
|
||||
// "unknown"? Why? This should be fixed if there's no good reason.
|
||||
strcpy(if_name, "wlan0");
|
||||
addr_list = InstallIpv6Network(if_name, ipv6_address1, ipv6_mask, manager);
|
||||
|
||||
EXPECT_EQ(ADAPTER_TYPE_UNKNOWN, GetAdapterType(manager));
|
||||
ClearNetworks(manager);
|
||||
ReleaseIfAddrs(addr_list);
|
||||
#endif
|
||||
}
|
||||
#endif // defined(WEBRTC_POSIX)
|
||||
|
Reference in New Issue
Block a user