Use injected clock in FakePacketTransport

Bug: webrtc:42223992
Change-Id: I2b03265427c3eb8557499207de729dbd3edf85cf
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/481060
Commit-Queue: Danil Chapovalov <danilchap@webrtc.org>
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#47981}
diff --git a/p2p/BUILD.gn b/p2p/BUILD.gn
index 8b41c90..1d31cbb 100644
--- a/p2p/BUILD.gn
+++ b/p2p/BUILD.gn
@@ -1084,7 +1084,6 @@
       "../rtc_base:ssl",
       "../rtc_base:ssl_adapter",
       "../rtc_base:threading",
-      "../rtc_base:timeutils",
       "../rtc_base/network:received_packet",
       "../rtc_base/network:sent_packet",
       "../rtc_base/synchronization:mutex",
diff --git a/p2p/base/packet_transport_internal_unittest.cc b/p2p/base/packet_transport_internal_unittest.cc
index 99e6446..fa953e6 100644
--- a/p2p/base/packet_transport_internal_unittest.cc
+++ b/p2p/base/packet_transport_internal_unittest.cc
@@ -16,6 +16,7 @@
 #include "p2p/test/fake_packet_transport.h"
 #include "rtc_base/network/received_packet.h"
 #include "rtc_base/socket_address.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 
@@ -26,7 +27,7 @@
 
 TEST(PacketTransportInternal,
      NotifyPacketReceivedPassthrougPacketToRegisteredListener) {
-  FakePacketTransport packet_transport("test");
+  FakePacketTransport packet_transport(CreateTestEnvironment(), "test");
   MockFunction<void(PacketTransportInternal*, const ReceivedIpPacket&)>
       receiver;
 
@@ -44,7 +45,7 @@
 }
 
 TEST(PacketTransportInternal, NotifiesOnceOnClose) {
-  FakePacketTransport packet_transport("test");
+  FakePacketTransport packet_transport(CreateTestEnvironment(), "test");
   int call_count = 0;
   packet_transport.SetOnCloseCallback([&]() { ++call_count; });
   ASSERT_EQ(call_count, 0);
diff --git a/p2p/test/fake_packet_transport.h b/p2p/test/fake_packet_transport.h
index 0a91225..6cf7260 100644
--- a/p2p/test/fake_packet_transport.h
+++ b/p2p/test/fake_packet_transport.h
@@ -16,10 +16,11 @@
 #include <optional>
 #include <string>
 
+#include "absl/strings/string_view.h"
+#include "api/environment/environment.h"
 #include "api/task_queue/pending_task_safety_flag.h"
 #include "api/task_queue/task_queue_base.h"
 #include "api/transport/ecn_marking.h"
-#include "api/units/timestamp.h"
 #include "p2p/base/packet_transport_internal.h"
 #include "rtc_base/async_packet_socket.h"
 #include "rtc_base/copy_on_write_buffer.h"
@@ -28,15 +29,14 @@
 #include "rtc_base/network_route.h"
 #include "rtc_base/socket.h"
 #include "rtc_base/socket_address.h"
-#include "rtc_base/time_utils.h"
 
 namespace webrtc {
 
 // Used to simulate a packet-based transport.
 class FakePacketTransport : public PacketTransportInternal {
  public:
-  explicit FakePacketTransport(const std::string& transport_name)
-      : transport_name_(transport_name) {}
+  FakePacketTransport(const Environment& env, absl::string_view transport_name)
+      : env_(env), transport_name_(transport_name) {}
   ~FakePacketTransport() override {
     if (dest_ && dest_->dest_ == this) {
       dest_->dest_ = nullptr;
@@ -79,7 +79,8 @@
     CopyOnWriteBuffer packet(data, len);
     SendPacketInternal(packet, options);
 
-    SentPacketInfo sent_packet(options.packet_id, TimeMillis());
+    SentPacketInfo sent_packet(options.packet_id,
+                               env_.clock().TimeInMilliseconds());
     // Because handlers of NotifySentPacket may be sending packets,
     // dispatch this call to a new task.
     TaskQueueBase::Current()->PostTask(
@@ -147,11 +148,12 @@
     last_sent_packet_options_ = options;
     if (dest_) {
       dest_->NotifyPacketReceived(ReceivedIpPacket(
-          packet, SocketAddress(), Timestamp::Micros(TimeMicros()),
+          packet, SocketAddress(), env_.clock().CurrentTime(),
           options.ect_1 ? EcnMarking::kEct1 : EcnMarking::kNotEct));
     }
   }
 
+  const Environment env_;
   CopyOnWriteBuffer last_sent_packet_;
   AsyncSocketPacketOptions last_sent_packet_options_;
   std::string transport_name_;
diff --git a/pc/channel_unittest.cc b/pc/channel_unittest.cc
index 5a2bd15..095e5b5 100644
--- a/pc/channel_unittest.cc
+++ b/pc/channel_unittest.cc
@@ -214,11 +214,11 @@
       // Based on flags, create fake DTLS or raw packet transports.
 
       if (flags1 & RAW_PACKET_TRANSPORT) {
-        fake_rtp_packet_transport1_.reset(
-            new FakePacketTransport("channel1_rtp"));
+        fake_rtp_packet_transport1_ =
+            std::make_unique<FakePacketTransport>(env_, "channel1_rtp");
         if (!(flags1 & RTCP_MUX)) {
-          fake_rtcp_packet_transport1_.reset(
-              new FakePacketTransport("channel1_rtcp"));
+          fake_rtcp_packet_transport1_ =
+              std::make_unique<FakePacketTransport>(env_, "channel1_rtcp");
         }
       } else {
         // Confirmed to work with KT_RSA and KT_ECDSA.
@@ -239,11 +239,11 @@
       }
       // Based on flags, create fake DTLS or raw packet transports.
       if (flags2 & RAW_PACKET_TRANSPORT) {
-        fake_rtp_packet_transport2_.reset(
-            new FakePacketTransport("channel2_rtp"));
+        fake_rtp_packet_transport2_ =
+            std::make_unique<FakePacketTransport>(env_, "channel2_rtp");
         if (!(flags2 & RTCP_MUX)) {
-          fake_rtcp_packet_transport2_.reset(
-              new FakePacketTransport("channel2_rtcp"));
+          fake_rtcp_packet_transport2_ =
+              std::make_unique<FakePacketTransport>(env_, "channel2_rtcp");
         }
       } else {
         // Confirmed to work with KT_RSA and KT_ECDSA.
diff --git a/pc/rtp_transport_unittest.cc b/pc/rtp_transport_unittest.cc
index 9827f97..e7f4d38 100644
--- a/pc/rtp_transport_unittest.cc
+++ b/pc/rtp_transport_unittest.cc
@@ -14,6 +14,7 @@
 #include <cstdint>
 #include <optional>
 
+#include "api/environment/environment.h"
 #include "api/rtc_error.h"
 #include "api/rtp_header_extension_id.h"
 #include "api/rtp_parameters.h"
@@ -33,7 +34,7 @@
 #include "rtc_base/logging.h"
 #include "rtc_base/network/sent_packet.h"
 #include "rtc_base/network_route.h"
-#include "test/create_test_field_trials.h"
+#include "test/create_test_environment.h"
 #include "test/gmock.h"
 #include "test/gtest.h"
 #include "test/run_loop.h"
@@ -112,12 +113,13 @@
 };
 
 TEST(RtpTransportTest, SettingRtcpAndRtpSignalsReady) {
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
 
   SignalObserver observer(&transport);
-  FakePacketTransport fake_rtcp("fake_rtcp");
+  FakePacketTransport fake_rtcp(env, "fake_rtcp");
   fake_rtcp.SetWritable(true);
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetWritable(true);
 
   transport.SetRtcpPacketTransport(&fake_rtcp);  // rtcp ready
@@ -127,11 +129,12 @@
 }
 
 TEST(RtpTransportTest, SettingRtpAndRtcpSignalsReady) {
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
   SignalObserver observer(&transport);
-  FakePacketTransport fake_rtcp("fake_rtcp");
+  FakePacketTransport fake_rtcp(env, "fake_rtcp");
   fake_rtcp.SetWritable(true);
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetWritable(true);
 
   transport.SetRtpPacketTransport(&fake_rtp);  // rtp ready
@@ -141,9 +144,10 @@
 }
 
 TEST(RtpTransportTest, SettingRtpWithRtcpMuxEnabledSignalsReady) {
-  RtpTransport transport(kMuxEnabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxEnabled, env.field_trials());
   SignalObserver observer(&transport);
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetWritable(true);
 
   transport.SetRtpPacketTransport(&fake_rtp);  // rtp ready
@@ -151,9 +155,10 @@
 }
 
 TEST(RtpTransportTest, DisablingRtcpMuxSignalsNotReady) {
-  RtpTransport transport(kMuxEnabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxEnabled, env.field_trials());
   SignalObserver observer(&transport);
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetWritable(true);
 
   transport.SetRtpPacketTransport(&fake_rtp);  // rtp ready
@@ -164,9 +169,10 @@
 }
 
 TEST(RtpTransportTest, EnablingRtcpMuxSignalsReady) {
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
   SignalObserver observer(&transport);
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetWritable(true);
 
   transport.SetRtpPacketTransport(&fake_rtp);  // rtp ready
@@ -178,9 +184,10 @@
 
 // Tests the SignalNetworkRoute is fired when setting a packet transport.
 TEST(RtpTransportTest, SetRtpTransportWithNetworkRouteChanged) {
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
   SignalObserver observer(&transport);
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
 
   EXPECT_FALSE(observer.network_route());
 
@@ -207,9 +214,10 @@
 }
 
 TEST(RtpTransportTest, SetRtcpTransportWithNetworkRouteChanged) {
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
   SignalObserver observer(&transport);
-  FakePacketTransport fake_rtcp("fake_rtcp");
+  FakePacketTransport fake_rtcp(env, "fake_rtcp");
 
   EXPECT_FALSE(observer.network_route());
 
@@ -241,9 +249,10 @@
   // If the RTCP-mux is not enabled, RTCP packets are expected to be sent over
   // the RtcpPacketTransport.
   test::RunLoop thread;
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
-  FakePacketTransport fake_rtcp("fake_rtcp");
-  FakePacketTransport fake_rtp("fake_rtp");
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
+  FakePacketTransport fake_rtcp(env, "fake_rtcp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   transport.SetRtcpPacketTransport(&fake_rtcp);  // rtcp ready
   transport.SetRtpPacketTransport(&fake_rtp);    // rtp ready
   SignalObserver observer(&transport);
@@ -268,9 +277,10 @@
 }
 
 TEST(RtpTransportTest, ChangingReadyToSendStateOnlySignalsWhenChanged) {
-  RtpTransport transport(kMuxEnabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxEnabled, env.field_trials());
   TransportObserver observer(&transport);
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetWritable(true);
 
   // State changes, so we should signal.
@@ -292,7 +302,8 @@
 
 TEST(RtpTransportTest, RegisterAndUnregisterRtpHeaderExtensionMap) {
   test::RunLoop thread;
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
   RtpHeaderExtensions extensions1 = {RtpExtension(
       "urn:ietf:params:rtp-hdrext:ssrc-audio-level", RtpHeaderExtensionId(1))};
   RtpHeaderExtensions extensions2 = {
@@ -311,7 +322,7 @@
                                      0x10, 0x00, 0x00, 0x00};
   CopyOnWriteBuffer rtp_packet1(kRtpData1, sizeof(kRtpData1));
   RtpPacketReceived parsed_packet1;
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetDestination(&fake_rtp, true);
   transport.SetRtpPacketTransport(&fake_rtp);
   TransportObserver observer(&transport);
@@ -370,7 +381,8 @@
 
 TEST(RtpTransportTest, VerifyRtpHeaderExtensionMapRejectsIdReassignment) {
   test::RunLoop loop;
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
   RtpHeaderExtensions extensions1 = {RtpExtension(
       "urn:ietf:params:rtp-hdrext:ssrc-audio-level", RtpHeaderExtensionId(1))};
   RtpHeaderExtensions extensions2 = {
@@ -396,7 +408,8 @@
 TEST(RtpTransportTest,
      VerifyRtpHeaderExtensionMapAllowsIdReuseAfterUnregister) {
   test::RunLoop loop;
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
   RtpHeaderExtensions extensions1 = {RtpExtension(
       "urn:ietf:params:rtp-hdrext:ssrc-audio-level", RtpHeaderExtensionId(1))};
   RtpHeaderExtensions extensions2 = {
@@ -420,8 +433,9 @@
 // received.
 TEST(RtpTransportTest, SignalDemuxedRtcp) {
   test::RunLoop thread;
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
-  FakePacketTransport fake_rtp("fake_rtp");
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetDestination(&fake_rtp, true);
   transport.SetRtpPacketTransport(&fake_rtp);
   TransportObserver observer(&transport);
@@ -444,8 +458,9 @@
 // handled payload type is received.
 TEST(RtpTransportTest, SignalHandledRtpPayloadType) {
   test::RunLoop thread;
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
-  FakePacketTransport fake_rtp("fake_rtp");
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetDestination(&fake_rtp, true);
   transport.SetRtpPacketTransport(&fake_rtp);
   TransportObserver observer(&transport);
@@ -469,9 +484,10 @@
 
 TEST(RtpTransportTest, ReceivedPacketEcnMarkingPropagatedToDemuxedPacket) {
   test::RunLoop thread;
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
   // Setup FakePacketTransport to send packets to itself.
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetDestination(&fake_rtp, true);
   transport.SetRtpPacketTransport(&fake_rtp);
   TransportObserver observer(&transport);
@@ -494,14 +510,15 @@
 
 TEST(RtpTransportTest, RtcpSentAsEct1IfReceivedRtpPacketAsEct1) {
   test::RunLoop thread;
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
   // Setup FakePacketTransport to send packets to itself.
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetDestination(&fake_rtp, true);
   transport.SetRtpPacketTransport(&fake_rtp);
   // Setup RTCP transport to send to another fake transport.
-  FakePacketTransport fake_rtcp_recipient("rtcp_recipient");
-  FakePacketTransport fake_rtcp("fake_rtcp");
+  FakePacketTransport fake_rtcp_recipient(env, "rtcp_recipient");
+  FakePacketTransport fake_rtcp(env, "fake_rtcp");
   fake_rtcp.SetDestination(&fake_rtcp_recipient, true);
   transport.SetRtcpPacketTransport(&fake_rtcp);
 
@@ -530,8 +547,9 @@
 // unhandled payload type is received.
 TEST(RtpTransportTest, DontSignalUnhandledRtpPayloadType) {
   test::RunLoop thread;
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
-  FakePacketTransport fake_rtp("fake_rtp");
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetDestination(&fake_rtp, true);
   transport.SetRtpPacketTransport(&fake_rtp);
   TransportObserver observer(&transport);
@@ -556,10 +574,11 @@
 TEST(RtpTransportTest, DontChangeReadyToSendStateOnSendFailure) {
   // ReadyToSendState should only care about if transport is writable.
   test::RunLoop thread;
-  RtpTransport transport(kMuxEnabled, CreateTestFieldTrials());
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxEnabled, env.field_trials());
   TransportObserver observer(&transport);
 
-  FakePacketTransport fake_rtp("fake_rtp");
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   fake_rtp.SetDestination(&fake_rtp, true);
   transport.SetRtpPacketTransport(&fake_rtp);
   fake_rtp.SetWritable(true);
@@ -579,8 +598,9 @@
 TEST(RtpTransportTest, RecursiveOnSentPacketDoesNotCrash) {
   const int kShortTimeout = 100;
   test::RunLoop loop;
-  RtpTransport transport(kMuxDisabled, CreateTestFieldTrials());
-  FakePacketTransport fake_rtp("fake_rtp");
+  const Environment env = CreateTestEnvironment();
+  RtpTransport transport(kMuxDisabled, env.field_trials());
+  FakePacketTransport fake_rtp(env, "fake_rtp");
   transport.SetRtpPacketTransport(&fake_rtp);
   fake_rtp.SetDestination(&fake_rtp, true);
   TransportObserver observer(&transport);
diff --git a/pc/srtp_transport_unittest.cc b/pc/srtp_transport_unittest.cc
index c309973..9649c7e 100644
--- a/pc/srtp_transport_unittest.cc
+++ b/pc/srtp_transport_unittest.cc
@@ -18,7 +18,7 @@
 #include <utility>
 #include <vector>
 
-#include "api/field_trials.h"
+#include "api/environment/environment.h"
 #include "api/rtp_header_extension_id.h"
 #include "api/transport/ecn_marking.h"
 #include "api/units/timestamp.h"
@@ -34,7 +34,7 @@
 #include "rtc_base/containers/flat_set.h"
 #include "rtc_base/copy_on_write_buffer.h"
 #include "rtc_base/ssl_stream_adapter.h"
-#include "test/create_test_field_trials.h"
+#include "test/create_test_environment.h"
 #include "test/gtest.h"
 #include "test/run_loop.h"
 
@@ -60,18 +60,18 @@
     bool rtcp_mux_enabled = true;
 
     rtp_packet_transport1_ =
-        std::make_unique<FakePacketTransport>("fake_packet_transport1");
+        std::make_unique<FakePacketTransport>(env_, "fake_packet_transport1");
     rtp_packet_transport2_ =
-        std::make_unique<FakePacketTransport>("fake_packet_transport2");
+        std::make_unique<FakePacketTransport>(env_, "fake_packet_transport2");
 
     bool asymmetric = false;
     rtp_packet_transport1_->SetDestination(rtp_packet_transport2_.get(),
                                            asymmetric);
 
     srtp_transport1_ =
-        std::make_unique<SrtpTransport>(rtcp_mux_enabled, field_trials_);
+        std::make_unique<SrtpTransport>(rtcp_mux_enabled, env_.field_trials());
     srtp_transport2_ =
-        std::make_unique<SrtpTransport>(rtcp_mux_enabled, field_trials_);
+        std::make_unique<SrtpTransport>(rtcp_mux_enabled, env_.field_trials());
 
     srtp_transport1_->SetRtpPacketTransport(rtp_packet_transport1_.get());
     srtp_transport2_->SetRtpPacketTransport(rtp_packet_transport2_.get());
@@ -282,6 +282,7 @@
                                                    encrypted_headers);
   }
   test::RunLoop main_thread;
+  const Environment env_ = CreateTestEnvironment();
 
   std::unique_ptr<SrtpTransport> srtp_transport1_;
   std::unique_ptr<SrtpTransport> srtp_transport2_;
@@ -293,7 +294,6 @@
   TransportObserver rtp_sink2_;
 
   int sequence_number_ = 0;
-  FieldTrials field_trials_ = CreateTestFieldTrials();
 };
 
 TEST_F(SrtpTransportTest, SendAndRecvPacket_AES_CM_128_HMAC_SHA1_80) {
@@ -354,12 +354,12 @@
 }
 
 TEST_F(SrtpTransportTest, RemoveSrtpReceiveStream) {
-  FieldTrials field_trials =
-      CreateTestFieldTrials("WebRTC-SrtpRemoveReceiveStream/Enabled/");
-  auto srtp_transport =
-      std::make_unique<SrtpTransport>(/*rtcp_mux_enabled=*/true, field_trials);
-  auto rtp_packet_transport =
-      std::make_unique<FakePacketTransport>("fake_packet_transport_loopback");
+  Environment env = CreateTestEnvironment(
+      {.field_trials = "WebRTC-SrtpRemoveReceiveStream/Enabled/"});
+  auto srtp_transport = std::make_unique<SrtpTransport>(
+      /*rtcp_mux_enabled=*/true, env.field_trials());
+  auto rtp_packet_transport = std::make_unique<FakePacketTransport>(
+      env, "fake_packet_transport_loopback");
 
   bool asymmetric = false;
   rtp_packet_transport->SetDestination(rtp_packet_transport.get(), asymmetric);