From 84d1595d0103e520a8dcfb427ef1c7688100b303 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Niels=20M=C3=B6ller?= Date: Wed, 1 Sep 2021 10:50:34 +0200 Subject: [PATCH] Rename VirtualSocketServer::SetDefaultRoute --> SetDefaultSourceAddress and make docs a bit clearer. Bug: None Change-Id: I73504de96384012d18c00c527835fabab03a3791 Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/230544 Reviewed-by: Harald Alvestrand Reviewed-by: Taylor Brandstetter Reviewed-by: Jonas Oreland Commit-Queue: Niels Moller Cr-Commit-Position: refs/heads/main@{#34895} --- p2p/client/basic_port_allocator_unittest.cc | 18 ++++++------- rtc_base/virtual_socket_server.cc | 16 ++++++------ rtc_base/virtual_socket_server.h | 14 ++++++----- rtc_base/virtual_socket_unittest.cc | 28 ++++++++++----------- 4 files changed, 39 insertions(+), 37 deletions(-) diff --git a/p2p/client/basic_port_allocator_unittest.cc b/p2p/client/basic_port_allocator_unittest.cc index 455dcb943f..4925c264d7 100644 --- a/p2p/client/basic_port_allocator_unittest.cc +++ b/p2p/client/basic_port_allocator_unittest.cc @@ -176,17 +176,17 @@ class BasicPortAllocatorTestBase : public ::testing::Test, rtc::AdapterType type) { network_manager_.AddInterface(addr, if_name, type); } - // The default route is the public address that STUN server will observe when - // the endpoint is sitting on the public internet and the local port is bound - // to the "any" address. This may be different from the default local address - // which the endpoint observes. This can occur if the route to the public - // endpoint like 8.8.8.8 (specified as the default local address) is - // different from the route to the STUN server (the default route). - void AddInterfaceAsDefaultRoute(const SocketAddress& addr) { + // The default source address is the public address that STUN server will + // observe when the endpoint is sitting on the public internet and the local + // port is bound to the "any" address. Intended for simulating the situation + // that client binds the "any" address, and that's also the address returned + // by getsockname/GetLocalAddress, so that the client can learn the actual + // local address only from the STUN response. + void AddInterfaceAsDefaultSourceAddresss(const SocketAddress& addr) { AddInterface(addr); // When a binding comes from the any address, the `addr` will be used as the // srflx address. - vss_->SetDefaultRoute(addr.ipaddr()); + vss_->SetDefaultSourceAddress(addr.ipaddr()); } void RemoveInterface(const SocketAddress& addr) { network_manager_.RemoveInterface(addr); @@ -1322,7 +1322,7 @@ TEST_F(BasicPortAllocatorTest, TEST_F(BasicPortAllocatorTest, TestDisableAdapterEnumerationWithoutNatLocalhostCandDisabledDiffRoute) { ResetWithStunServerNoNat(kStunAddr); - AddInterfaceAsDefaultRoute(kClientAddr); + AddInterfaceAsDefaultSourceAddresss(kClientAddr); ASSERT_TRUE(CreateSession(ICE_CANDIDATE_COMPONENT_RTP)); session_->set_flags(PORTALLOCATOR_DISABLE_DEFAULT_LOCAL_CANDIDATE); // Expect to see 2 ports: STUN and TCP ports, localhost candidate and STUN diff --git a/rtc_base/virtual_socket_server.cc b/rtc_base/virtual_socket_server.cc index db6f97c89c..d2bf56eeff 100644 --- a/rtc_base/virtual_socket_server.cc +++ b/rtc_base/virtual_socket_server.cc @@ -723,7 +723,7 @@ VirtualSocket* VirtualSocketServer::LookupBinding(const SocketAddress& addr) { return it->second; } - IPAddress default_ip = GetDefaultRoute(addr.ipaddr().family()); + IPAddress default_ip = GetDefaultSourceAddress(addr.ipaddr().family()); if (!IPIsUnspec(default_ip) && addr.ipaddr() == default_ip) { // If we can't find a binding for the packet which is sent to the interface // corresponding to the default route, it should match a binding with the @@ -1016,7 +1016,7 @@ void VirtualSocketServer::AddPacketToNetwork(VirtualSocket* sender, // to the default route here such that the recipient will see the default // route. SocketAddress sender_addr = sender->GetLocalAddress(); - IPAddress default_ip = GetDefaultRoute(sender_addr.ipaddr().family()); + IPAddress default_ip = GetDefaultSourceAddress(sender_addr.ipaddr().family()); if (sender_addr.IsAnyIP() && !IPIsUnspec(default_ip)) { sender_addr.SetIP(default_ip); } @@ -1227,21 +1227,21 @@ bool VirtualSocketServer::CanInteractWith(VirtualSocket* local, return false; } -IPAddress VirtualSocketServer::GetDefaultRoute(int family) { +IPAddress VirtualSocketServer::GetDefaultSourceAddress(int family) { if (family == AF_INET) { - return default_route_v4_; + return default_source_address_v4_; } if (family == AF_INET6) { - return default_route_v6_; + return default_source_address_v6_; } return IPAddress(); } -void VirtualSocketServer::SetDefaultRoute(const IPAddress& from_addr) { +void VirtualSocketServer::SetDefaultSourceAddress(const IPAddress& from_addr) { RTC_DCHECK(!IPIsAny(from_addr)); if (from_addr.family() == AF_INET) { - default_route_v4_ = from_addr; + default_source_address_v4_ = from_addr; } else if (from_addr.family() == AF_INET6) { - default_route_v6_ = from_addr; + default_source_address_v6_ = from_addr; } } diff --git a/rtc_base/virtual_socket_server.h b/rtc_base/virtual_socket_server.h index 490511b4b3..77ddb76d72 100644 --- a/rtc_base/virtual_socket_server.h +++ b/rtc_base/virtual_socket_server.h @@ -163,10 +163,12 @@ class VirtualSocketServer : public SocketServer { explicit VirtualSocketServer(ThreadProcessingFakeClock* fake_clock); ~VirtualSocketServer() override; - // The default route indicates which local address to use when a socket is - // bound to the 'any' address, e.g. 0.0.0.0. - IPAddress GetDefaultRoute(int family); - void SetDefaultRoute(const IPAddress& from_addr); + // The default source address specifies which local address to use when a + // socket is bound to the 'any' address, e.g. 0.0.0.0. (If not set, the 'any' + // address is used as the source address on outgoing virtual packets, exposed + // to recipient's RecvFrom). + IPAddress GetDefaultSourceAddress(int family); + void SetDefaultSourceAddress(const IPAddress& from_addr); // Limits the network bandwidth (maximum bytes per second). Zero means that // all sends occur instantly. Defaults to 0. @@ -411,8 +413,8 @@ class VirtualSocketServer : public SocketServer { AddressMap* bindings_; ConnectionMap* connections_; - IPAddress default_route_v4_; - IPAddress default_route_v6_; + IPAddress default_source_address_v4_; + IPAddress default_source_address_v6_; uint32_t bandwidth_; uint32_t network_capacity_; diff --git a/rtc_base/virtual_socket_unittest.cc b/rtc_base/virtual_socket_unittest.cc index 44e7288e8b..2c34033969 100644 --- a/rtc_base/virtual_socket_unittest.cc +++ b/rtc_base/virtual_socket_unittest.cc @@ -189,36 +189,36 @@ class VirtualSocketServerTest : public ::testing::Test { } // Test a client can bind to the any address, and all sent packets will have - // the default route as the source address. Also, it can receive packets sent - // to the default route. - void TestDefaultRoute(const IPAddress& default_route) { - ss_.SetDefaultRoute(default_route); + // the default source address. Also, it can receive packets sent to the + // default address. + void TestDefaultSourceAddress(const IPAddress& default_address) { + ss_.SetDefaultSourceAddress(default_address); // Create client1 bound to the any address. - Socket* socket = ss_.CreateSocket(default_route.family(), SOCK_DGRAM); - socket->Bind(EmptySocketAddressWithFamily(default_route.family())); + Socket* socket = ss_.CreateSocket(default_address.family(), SOCK_DGRAM); + socket->Bind(EmptySocketAddressWithFamily(default_address.family())); SocketAddress client1_any_addr = socket->GetLocalAddress(); EXPECT_TRUE(client1_any_addr.IsAnyIP()); auto client1 = std::make_unique( std::make_unique(socket), &fake_clock_); - // Create client2 bound to the default route. - Socket* socket2 = ss_.CreateSocket(default_route.family(), SOCK_DGRAM); - socket2->Bind(SocketAddress(default_route, 0)); + // Create client2 bound to the address route. + Socket* socket2 = ss_.CreateSocket(default_address.family(), SOCK_DGRAM); + socket2->Bind(SocketAddress(default_address, 0)); SocketAddress client2_addr = socket2->GetLocalAddress(); EXPECT_FALSE(client2_addr.IsAnyIP()); auto client2 = std::make_unique( std::make_unique(socket2), &fake_clock_); - // Client1 sends to client2, client2 should see the default route as + // Client1 sends to client2, client2 should see the default address as // client1's address. SocketAddress client1_addr; EXPECT_EQ(6, client1->SendTo("bizbaz", 6, client2_addr)); EXPECT_TRUE(client2->CheckNextPacket("bizbaz", 6, &client1_addr)); EXPECT_EQ(client1_addr, - SocketAddress(default_route, client1_any_addr.port())); + SocketAddress(default_address, client1_any_addr.port())); - // Client2 can send back to client1's default route address. + // Client2 can send back to client1's default address. EXPECT_EQ(3, client2->SendTo("foo", 3, client1_addr)); EXPECT_TRUE(client1->CheckNextPacket("foo", 3, &client2_addr)); } @@ -871,14 +871,14 @@ TEST_F(VirtualSocketServerTest, basic_v6) { TEST_F(VirtualSocketServerTest, TestDefaultRoute_v4) { IPAddress ipv4_default_addr(0x01020304); - TestDefaultRoute(ipv4_default_addr); + TestDefaultSourceAddress(ipv4_default_addr); } TEST_F(VirtualSocketServerTest, TestDefaultRoute_v6) { IPAddress ipv6_default_addr; EXPECT_TRUE( IPFromString("2401:fa00:4:1000:be30:5bff:fee5:c3", &ipv6_default_addr)); - TestDefaultRoute(ipv6_default_addr); + TestDefaultSourceAddress(ipv6_default_addr); } TEST_F(VirtualSocketServerTest, connect_v4) {