Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(170)

Side by Side Diff: webrtc/base/network_unittest.cc

Issue 1547883002: Revert "Enable IPv6 temporary address filtering on iOS." (Closed) Base URL: https://chromium.googlesource.com/external/webrtc@master
Patch Set: Created 4 years, 12 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « webrtc/base/network.cc ('k') | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2004 The WebRTC Project Authors. All rights reserved. 2 * Copyright 2004 The WebRTC Project Authors. All rights reserved.
3 * 3 *
4 * Use of this source code is governed by a BSD-style license 4 * Use of this source code is governed by a BSD-style license
5 * that can be found in the LICENSE file in the root of the source 5 * that can be found in the LICENSE file in the root of the source
6 * tree. An additional intellectual property rights grant can be found 6 * tree. An additional intellectual property rights grant can be found
7 * in the file PATENTS. All contributing project authors may 7 * in the file PATENTS. All contributing project authors may
8 * be found in the AUTHORS file in the root of the source tree. 8 * be found in the AUTHORS file in the root of the source tree.
9 */ 9 */
10 10
11 #include "webrtc/base/network.h" 11 #include "webrtc/base/network.h"
12 12
13 #include "webrtc/base/nethelpers.h" 13 #include "webrtc/base/nethelpers.h"
14 #include "webrtc/base/networkmonitor.h" 14 #include "webrtc/base/networkmonitor.h"
15 #include <vector> 15 #include <vector>
16 #if defined(WEBRTC_POSIX) 16 #if defined(WEBRTC_POSIX)
17 #include <sys/types.h> 17 #include <sys/types.h>
18 #include <net/if.h> 18 #if !defined(WEBRTC_ANDROID)
19 #include "webrtc/base/ifaddrs_converter.h" 19 #include <ifaddrs.h>
20 #endif // defined(WEBRTC_POSIX) 20 #else
21 #include "webrtc/base/ifaddrs-android.h"
22 #endif
23 #endif
21 #include "webrtc/base/gunit.h" 24 #include "webrtc/base/gunit.h"
22 #if defined(WEBRTC_WIN) 25 #if defined(WEBRTC_WIN)
23 #include "webrtc/base/logging.h" // For LOG_GLE 26 #include "webrtc/base/logging.h" // For LOG_GLE
24 #endif 27 #endif
25 28
26 namespace rtc { 29 namespace rtc {
27 30
28 namespace {
29
30 class FakeNetworkMonitor : public NetworkMonitorBase { 31 class FakeNetworkMonitor : public NetworkMonitorBase {
31 public: 32 public:
32 void Start() override {} 33 void Start() override {}
33 void Stop() override {} 34 void Stop() override {}
34 }; 35 };
35 36
36 class FakeNetworkMonitorFactory : public NetworkMonitorFactory { 37 class FakeNetworkMonitorFactory : public NetworkMonitorFactory {
37 public: 38 public:
38 FakeNetworkMonitorFactory() {} 39 FakeNetworkMonitorFactory() {}
39 NetworkMonitorInterface* CreateNetworkMonitor() { 40 NetworkMonitorInterface* CreateNetworkMonitor() {
40 return new FakeNetworkMonitor(); 41 return new FakeNetworkMonitor();
41 } 42 }
42 }; 43 };
43 44
44 } // namespace
45
46 class NetworkTest : public testing::Test, public sigslot::has_slots<> { 45 class NetworkTest : public testing::Test, public sigslot::has_slots<> {
47 public: 46 public:
48 NetworkTest() : callback_called_(false) {} 47 NetworkTest() : callback_called_(false) {}
49 48
50 void OnNetworksChanged() { 49 void OnNetworksChanged() {
51 callback_called_ = true; 50 callback_called_ = true;
52 } 51 }
53 52
54 NetworkManager::Stats MergeNetworkList( 53 NetworkManager::Stats MergeNetworkList(
55 BasicNetworkManager& network_manager, 54 BasicNetworkManager& network_manager,
(...skipping 27 matching lines...) Expand all
83 network_manager.networks_.clear(); 82 network_manager.networks_.clear();
84 network_manager.networks_map_.clear(); 83 network_manager.networks_map_.clear();
85 } 84 }
86 85
87 #if defined(WEBRTC_POSIX) 86 #if defined(WEBRTC_POSIX)
88 // Separated from CreateNetworks for tests. 87 // Separated from CreateNetworks for tests.
89 static void CallConvertIfAddrs(const BasicNetworkManager& network_manager, 88 static void CallConvertIfAddrs(const BasicNetworkManager& network_manager,
90 struct ifaddrs* interfaces, 89 struct ifaddrs* interfaces,
91 bool include_ignored, 90 bool include_ignored,
92 NetworkManager::NetworkList* networks) { 91 NetworkManager::NetworkList* networks) {
93 // Use the base IfAddrsConverter for test cases. 92 network_manager.ConvertIfAddrs(interfaces, include_ignored, networks);
94 rtc::scoped_ptr<IfAddrsConverter> ifaddrs_converter(new IfAddrsConverter());
95 network_manager.ConvertIfAddrs(interfaces, ifaddrs_converter.get(),
96 include_ignored, networks);
97 } 93 }
98 94
99 struct sockaddr_in6* CreateIpv6Addr(const std::string& ip_string, 95 struct sockaddr_in6* CreateIpv6Addr(const std::string& ip_string,
100 uint32_t scope_id) { 96 uint32_t scope_id) {
101 struct sockaddr_in6* ipv6_addr = new struct sockaddr_in6; 97 struct sockaddr_in6* ipv6_addr = new struct sockaddr_in6;
102 memset(ipv6_addr, 0, sizeof(struct sockaddr_in6)); 98 memset(ipv6_addr, 0, sizeof(struct sockaddr_in6));
103 ipv6_addr->sin6_family = AF_INET6; 99 ipv6_addr->sin6_family = AF_INET6;
104 ipv6_addr->sin6_scope_id = scope_id; 100 ipv6_addr->sin6_scope_id = scope_id;
105 IPAddress ip; 101 IPAddress ip;
106 IPFromString(ip_string, &ip); 102 IPFromString(ip_string, &ip);
107 ipv6_addr->sin6_addr = ip.ipv6_address(); 103 ipv6_addr->sin6_addr = ip.ipv6_address();
108 return ipv6_addr; 104 return ipv6_addr;
109 } 105 }
110 106
111 // Pointers created here need to be released via ReleaseIfAddrs. 107 // Pointers created here need to be released via ReleaseIfAddrs.
112 struct ifaddrs* AddIpv6Address(struct ifaddrs* list, 108 struct ifaddrs* AddIpv6Address(struct ifaddrs* list,
113 char* if_name, 109 char* if_name,
114 const std::string& ipv6_address, 110 const std::string& ipv6_address,
115 const std::string& ipv6_netmask, 111 const std::string& ipv6_netmask,
116 uint32_t scope_id) { 112 uint32_t scope_id) {
117 struct ifaddrs* if_addr = new struct ifaddrs; 113 struct ifaddrs* if_addr = new struct ifaddrs;
118 memset(if_addr, 0, sizeof(struct ifaddrs)); 114 memset(if_addr, 0, sizeof(struct ifaddrs));
119 if_addr->ifa_name = if_name; 115 if_addr->ifa_name = if_name;
120 if_addr->ifa_addr = reinterpret_cast<struct sockaddr*>( 116 if_addr->ifa_addr = reinterpret_cast<struct sockaddr*>(
121 CreateIpv6Addr(ipv6_address, scope_id)); 117 CreateIpv6Addr(ipv6_address, scope_id));
122 if_addr->ifa_netmask = 118 if_addr->ifa_netmask =
123 reinterpret_cast<struct sockaddr*>(CreateIpv6Addr(ipv6_netmask, 0)); 119 reinterpret_cast<struct sockaddr*>(CreateIpv6Addr(ipv6_netmask, 0));
124 if_addr->ifa_next = list; 120 if_addr->ifa_next = list;
125 if_addr->ifa_flags = IFF_RUNNING;
126 return if_addr; 121 return if_addr;
127 } 122 }
128 123
129 void ReleaseIfAddrs(struct ifaddrs* list) { 124 void ReleaseIfAddrs(struct ifaddrs* list) {
130 struct ifaddrs* if_addr = list; 125 struct ifaddrs* if_addr = list;
131 while (if_addr != nullptr) { 126 while (if_addr != nullptr) {
132 struct ifaddrs* next_addr = if_addr->ifa_next; 127 struct ifaddrs* next_addr = if_addr->ifa_next;
133 delete if_addr->ifa_addr; 128 delete if_addr->ifa_addr;
134 delete if_addr->ifa_netmask; 129 delete if_addr->ifa_netmask;
135 delete if_addr; 130 delete if_addr;
(...skipping 624 matching lines...) Expand 10 before | Expand all | Expand 10 after
760 "FFFF:FFFF:FFFF:FFFF::", 0); 755 "FFFF:FFFF:FFFF:FFFF::", 0);
761 NetworkManager::NetworkList result; 756 NetworkManager::NetworkList result;
762 BasicNetworkManager manager; 757 BasicNetworkManager manager;
763 CallConvertIfAddrs(manager, list, true, &result); 758 CallConvertIfAddrs(manager, list, true, &result);
764 EXPECT_EQ(1U, result.size()); 759 EXPECT_EQ(1U, result.size());
765 bool changed; 760 bool changed;
766 // This ensures we release the objects created in CallConvertIfAddrs. 761 // This ensures we release the objects created in CallConvertIfAddrs.
767 MergeNetworkList(manager, result, &changed); 762 MergeNetworkList(manager, result, &changed);
768 ReleaseIfAddrs(list); 763 ReleaseIfAddrs(list);
769 } 764 }
770
771 TEST_F(NetworkTest, TestConvertIfAddrsNotRunning) {
772 ifaddrs list;
773 memset(&list, 0, sizeof(list));
774 list.ifa_name = const_cast<char*>("test_iface");
775 sockaddr ifa_addr;
776 sockaddr ifa_netmask;
777 list.ifa_addr = &ifa_addr;
778 list.ifa_netmask = &ifa_netmask;
779
780 NetworkManager::NetworkList result;
781 BasicNetworkManager manager;
782 CallConvertIfAddrs(manager, &list, true, &result);
783 EXPECT_TRUE(result.empty());
784 }
785 #endif // defined(WEBRTC_POSIX) 765 #endif // defined(WEBRTC_POSIX)
786 766
787 #if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID) 767 #if defined(WEBRTC_LINUX) && !defined(WEBRTC_ANDROID)
788 // If you want to test non-default routes, you can do the following on a linux 768 // If you want to test non-default routes, you can do the following on a linux
789 // machine: 769 // machine:
790 // 1) Load the dummy network driver: 770 // 1) Load the dummy network driver:
791 // sudo modprobe dummy 771 // sudo modprobe dummy
792 // sudo ifconfig dummy0 127.0.0.1 772 // sudo ifconfig dummy0 127.0.0.1
793 // 2) Run this test and confirm the output says it found a dummy route (and 773 // 2) Run this test and confirm the output says it found a dummy route (and
794 // passes). 774 // passes).
(...skipping 204 matching lines...) Expand 10 before | Expand all | Expand 10 after
999 manager.set_default_local_addresses(GetLoopbackIP(AF_INET), 979 manager.set_default_local_addresses(GetLoopbackIP(AF_INET),
1000 GetLoopbackIP(AF_INET6)); 980 GetLoopbackIP(AF_INET6));
1001 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET, &ip)); 981 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET, &ip));
1002 EXPECT_EQ(ip, GetLoopbackIP(AF_INET)); 982 EXPECT_EQ(ip, GetLoopbackIP(AF_INET));
1003 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET6, &ip)); 983 EXPECT_TRUE(manager.GetDefaultLocalAddress(AF_INET6, &ip));
1004 EXPECT_EQ(ip, GetLoopbackIP(AF_INET6)); 984 EXPECT_EQ(ip, GetLoopbackIP(AF_INET6));
1005 manager.StopUpdating(); 985 manager.StopUpdating();
1006 } 986 }
1007 987
1008 } // namespace rtc 988 } // namespace rtc
OLDNEW
« no previous file with comments | « webrtc/base/network.cc ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698