clang-tidy: apply modernize-use-designated-initializer call/ p2p/ rtc_base/

split from
  https://webrtc-review.googlesource.com/c/src/+/404061
see there for full history and manual changes

Bug: webrtc:424706384
Change-Id: Ic0af7ad0ca739c1ea1e869bc0aa696cc1eea7086
Reviewed-on: https://webrtc-review.googlesource.com/c/src/+/405041
Reviewed-by: Harald Alvestrand <hta@webrtc.org>
Commit-Queue: Philipp Hancke <phancke@meta.com>
Reviewed-by: Danil Chapovalov <danilchap@webrtc.org>
Cr-Commit-Position: refs/heads/main@{#45397}
diff --git a/call/adaptation/resource_adaptation_processor.cc b/call/adaptation/resource_adaptation_processor.cc
index c6b1374..254d006 100644
--- a/call/adaptation/resource_adaptation_processor.cc
+++ b/call/adaptation/resource_adaptation_processor.cc
@@ -326,7 +326,8 @@
 ResourceAdaptationProcessor::FindMostLimitedResources() const {
   std::vector<scoped_refptr<Resource>> most_limited_resources;
   VideoStreamAdapter::RestrictionsWithCounters most_limited_restrictions{
-      VideoSourceRestrictions(), VideoAdaptationCounters()};
+      .restrictions = VideoSourceRestrictions(),
+      .counters = VideoAdaptationCounters()};
 
   for (const auto& resource_and_adaptation_limit_ :
        adaptation_limits_by_resources_) {
@@ -355,7 +356,7 @@
       adaptation_limits.counters == counters) {
     return;
   }
-  adaptation_limits = {restrictions, counters};
+  adaptation_limits = {.restrictions = restrictions, .counters = counters};
 
   std::map<scoped_refptr<Resource>, VideoAdaptationCounters> limitations;
   for (const auto& p : adaptation_limits_by_resources_) {
diff --git a/call/adaptation/video_stream_adapter.cc b/call/adaptation/video_stream_adapter.cc
index 5863931..e296a36 100644
--- a/call/adaptation/video_stream_adapter.cc
+++ b/call/adaptation/video_stream_adapter.cc
@@ -246,8 +246,8 @@
   // Invalidate any previously returned Adaptation.
   RTC_LOG(LS_INFO) << "Resetting restrictions";
   ++adaptation_validation_id_;
-  current_restrictions_ = {VideoSourceRestrictions(),
-                           VideoAdaptationCounters()};
+  current_restrictions_ = {.restrictions = VideoSourceRestrictions(),
+                           .counters = VideoAdaptationCounters()};
   awaiting_frame_size_change_ = std::nullopt;
   BroadcastVideoRestrictionsUpdate(input_state_provider_->InputState(),
                                    nullptr);
@@ -327,9 +327,10 @@
     VideoStreamAdapter::RestrictionsOrState step_or_state,
     const VideoStreamInputState& input_state) const {
   RTC_DCHECK(!step_or_state.valueless_by_exception());
-  return std::visit(
-      RestrictionsOrStateVisitor{adaptation_validation_id_, input_state},
-      step_or_state);
+  return std::visit(RestrictionsOrStateVisitor{.adaptation_validation_id =
+                                                   adaptation_validation_id_,
+                                               .input_state = input_state},
+                    step_or_state);
 }
 
 Adaptation VideoStreamAdapter::GetAdaptationUp(
@@ -676,7 +677,8 @@
   } else {
     awaiting_frame_size_change_ = std::nullopt;
   }
-  current_restrictions_ = {adaptation.restrictions(), adaptation.counters()};
+  current_restrictions_ = {.restrictions = adaptation.restrictions(),
+                           .counters = adaptation.counters()};
   BroadcastVideoRestrictionsUpdate(adaptation.input_state(), resource);
 }
 
diff --git a/call/bitrate_allocator.cc b/call/bitrate_allocator.cc
index 434fd81..c0744e2 100644
--- a/call/bitrate_allocator.cc
+++ b/call/bitrate_allocator.cc
@@ -143,9 +143,9 @@
   std::vector<PriorityRateObserverConfig> priority_rate_observers;
   for (const auto& observer_config : allocatable_tracks) {
     priority_rate_observers.push_back(PriorityRateObserverConfig{
-        observer_config.observer,
-        observers_capacities.at(observer_config.observer),
-        observer_config.config.bitrate_priority});
+        .allocation_key = observer_config.observer,
+        .capacity_bps = observers_capacities.at(observer_config.observer),
+        .bitrate_priority = observer_config.config.bitrate_priority});
     bitrate_priority_sum += observer_config.config.bitrate_priority;
   }
 
diff --git a/call/bitrate_allocator_unittest.cc b/call/bitrate_allocator_unittest.cc
index b4bb332..51cc607 100644
--- a/call/bitrate_allocator_unittest.cc
+++ b/call/bitrate_allocator_unittest.cc
@@ -135,10 +135,14 @@
       bool enforce_min_bitrate,
       double bitrate_priority,
       std::optional<TrackRateElasticity> rate_elasticity = std::nullopt) {
-    allocator_->AddObserver(
-        observer, {min_bitrate_bps, max_bitrate_bps, pad_up_bitrate_bps,
-                   /* priority_bitrate */ 0, enforce_min_bitrate,
-                   bitrate_priority, rate_elasticity});
+    allocator_->AddObserver(observer,
+                            {.min_bitrate_bps = min_bitrate_bps,
+                             .max_bitrate_bps = max_bitrate_bps,
+                             .pad_up_bitrate_bps = pad_up_bitrate_bps,
+                             .priority_bitrate_bps = 0,
+                             .enforce_min_bitrate = enforce_min_bitrate,
+                             .bitrate_priority = bitrate_priority,
+                             .rate_elasticity = rate_elasticity});
   }
   MediaStreamAllocationConfig DefaultConfig() const {
     MediaStreamAllocationConfig default_config;
@@ -334,9 +338,13 @@
                    bool enforce_min_bitrate,
                    absl::string_view /* track_id */,
                    double bitrate_priority) {
-    allocator_->AddObserver(
-        observer, {min_bitrate_bps, max_bitrate_bps, pad_up_bitrate_bps, 0,
-                   enforce_min_bitrate, bitrate_priority});
+    allocator_->AddObserver(observer,
+                            {.min_bitrate_bps = min_bitrate_bps,
+                             .max_bitrate_bps = max_bitrate_bps,
+                             .pad_up_bitrate_bps = pad_up_bitrate_bps,
+                             .priority_bitrate_bps = 0,
+                             .enforce_min_bitrate = enforce_min_bitrate,
+                             .bitrate_priority = bitrate_priority});
   }
   NiceMock<MockLimitObserver> limit_observer_;
   std::unique_ptr<BitrateAllocator> allocator_;
diff --git a/call/payload_type_picker.cc b/call/payload_type_picker.cc
index 9b4e7f1..c25c0d6 100644
--- a/call/payload_type_picker.cc
+++ b/call/payload_type_picker.cc
@@ -138,18 +138,18 @@
   // Default audio codecs. Duplicates media/engine/payload_type_mapper.cc
   const MapTableEntry default_audio_mappings[] = {
       // Static payload type assignments according to RFC 3551.
-      {{kPcmuCodecName, 8000, 1}, 0},
-      {{"GSM", 8000, 1}, 3},
-      {{"G723", 8000, 1}, 4},
-      {{"DVI4", 8000, 1}, 5},
-      {{"DVI4", 16000, 1}, 6},
-      {{"LPC", 8000, 1}, 7},
-      {{kPcmaCodecName, 8000, 1}, 8},
-      {{kG722CodecName, 8000, 1}, 9},
-      {{kL16CodecName, 44100, 2}, 10},
-      {{kL16CodecName, 44100, 1}, 11},
-      {{"QCELP", 8000, 1}, 12},
-      {{kCnCodecName, 8000, 1}, 13},
+      {.format = {kPcmuCodecName, 8000, 1}, .payload_type = 0},
+      {.format = {"GSM", 8000, 1}, .payload_type = 3},
+      {.format = {"G723", 8000, 1}, .payload_type = 4},
+      {.format = {"DVI4", 8000, 1}, .payload_type = 5},
+      {.format = {"DVI4", 16000, 1}, .payload_type = 6},
+      {.format = {"LPC", 8000, 1}, .payload_type = 7},
+      {.format = {kPcmaCodecName, 8000, 1}, .payload_type = 8},
+      {.format = {kG722CodecName, 8000, 1}, .payload_type = 9},
+      {.format = {kL16CodecName, 44100, 2}, .payload_type = 10},
+      {.format = {kL16CodecName, 44100, 1}, .payload_type = 11},
+      {.format = {"QCELP", 8000, 1}, .payload_type = 12},
+      {.format = {kCnCodecName, 8000, 1}, .payload_type = 13},
       // RFC 4566 is a bit ambiguous on the contents of the "encoding
       // parameters" field, which, for audio, encodes the number of
       // channels. It is "optional and may be omitted if the number of
@@ -158,39 +158,39 @@
       // specify a value for this parameter for MPA, I've included both 0
       // and 1 here, to increase the chances it will be correctly used if
       // someone implements an MPEG audio encoder/decoder.
-      {{"MPA", 90000, 0}, 14},
-      {{"MPA", 90000, 1}, 14},
-      {{"G728", 8000, 1}, 15},
-      {{"DVI4", 11025, 1}, 16},
-      {{"DVI4", 22050, 1}, 17},
-      {{"G729", 8000, 1}, 18},
+      {.format = {"MPA", 90000, 0}, .payload_type = 14},
+      {.format = {"MPA", 90000, 1}, .payload_type = 14},
+      {.format = {"G728", 8000, 1}, .payload_type = 15},
+      {.format = {"DVI4", 11025, 1}, .payload_type = 16},
+      {.format = {"DVI4", 22050, 1}, .payload_type = 17},
+      {.format = {"G729", 8000, 1}, .payload_type = 18},
 
       // Payload type assignments currently used by WebRTC.
       // Includes data to reduce collisions (and thus reassignments)
       // TODO(bugs.webrtc.org/400630582): Delete this, it's only for test
       // stability.
-      {{"reserved-do-not-use", 1, 0}, 102},
-      {{kCnCodecName, 16000, 1}, 105},
-      {{kCnCodecName, 32000, 1}, 106},
-      {{kOpusCodecName,
-        48000,
-        2,
-        {{kCodecParamMinPTime, "10"},
-         {kCodecParamUseInbandFec, kParamValueTrue}}},
-       111},
+      {.format = {"reserved-do-not-use", 1, 0}, .payload_type = 102},
+      {.format = {kCnCodecName, 16000, 1}, .payload_type = 105},
+      {.format = {kCnCodecName, 32000, 1}, .payload_type = 106},
+      {.format = {kOpusCodecName,
+                  48000,
+                  2,
+                  {{kCodecParamMinPTime, "10"},
+                   {kCodecParamUseInbandFec, kParamValueTrue}}},
+       .payload_type = 111},
       // RED for opus is assigned in the lower range, starting at the top.
       // Note that the FMTP refers to the opus payload type.
-      {{kRedCodecName,
-        48000,
-        2,
-        {{kCodecParamNotInNameValueFormat, "111/111"}}},
-       63},
+      {.format = {kRedCodecName,
+                  48000,
+                  2,
+                  {{kCodecParamNotInNameValueFormat, "111/111"}}},
+       .payload_type = 63},
       // TODO(solenberg): Remove the hard coded 16k,32k,48k DTMF once we
       // assign payload types dynamically for send side as well.
-      {{kDtmfCodecName, 48000, 1}, 110},
-      {{kDtmfCodecName, 32000, 1}, 112},
-      {{kDtmfCodecName, 16000, 1}, 113},
-      {{kDtmfCodecName, 8000, 1}, 126}};
+      {.format = {kDtmfCodecName, 48000, 1}, .payload_type = 110},
+      {.format = {kDtmfCodecName, 32000, 1}, .payload_type = 112},
+      {.format = {kDtmfCodecName, 16000, 1}, .payload_type = 113},
+      {.format = {kDtmfCodecName, 8000, 1}, .payload_type = 126}};
   for (const MapTableEntry& entry : default_audio_mappings) {
     AddMapping(PayloadType(entry.payload_type), CreateAudioCodec(entry.format));
   }
diff --git a/p2p/base/basic_ice_controller.cc b/p2p/base/basic_ice_controller.cc
index 3dce374..ca8f826 100644
--- a/p2p/base/basic_ice_controller.cc
+++ b/p2p/base/basic_ice_controller.cc
@@ -449,7 +449,7 @@
   if (!field_trials_->initial_select_dampening.has_value() &&
       !field_trials_->initial_select_dampening_ping_received.has_value()) {
     // experiment not enabled => select connection.
-    return {new_connection, std::nullopt};
+    return {.connection = new_connection};
   }
 
   int64_t now = TimeMillis();
@@ -470,7 +470,7 @@
                      << initial_select_timestamp_ms_
                      << " selection delayed by: " << (now - start_wait) << "ms";
     initial_select_timestamp_ms_ = 0;
-    return {new_connection, std::nullopt};
+    return {.connection = new_connection};
   }
 
   // We are not yet ready to select first connection...
@@ -493,8 +493,7 @@
   }
 
   RTC_LOG(LS_INFO) << "delay initial selection up to " << min_delay << "ms";
-  return {.connection = std::nullopt,
-          .recheck_event = IceRecheckEvent(
+  return {.recheck_event = IceRecheckEvent(
               IceSwitchReason::ICE_CONTROLLER_RECHECK, min_delay)};
 }
 
@@ -502,7 +501,7 @@
     IceSwitchReason reason,
     const Connection* new_connection) {
   if (!ReadyToSend(new_connection) || selected_connection_ == new_connection) {
-    return {std::nullopt, std::nullopt};
+    return {};
   }
 
   if (selected_connection_ == nullptr) {
@@ -515,7 +514,7 @@
   int compare_a_b_by_networks = CompareCandidatePairNetworks(
       new_connection, selected_connection_, config_.network_preference);
   if (compare_a_b_by_networks == b_is_better && !new_connection->receiving()) {
-    return {std::nullopt, std::nullopt};
+    return {};
   }
 
   bool missed_receiving_unchanged_threshold = false;
@@ -537,18 +536,18 @@
   }
 
   if (cmp < 0) {
-    return {new_connection, std::nullopt};
+    return {.connection = new_connection};
   } else if (cmp > 0) {
-    return {std::nullopt, recheck_event};
+    return {.recheck_event = recheck_event};
   }
 
   // If everything else is the same, switch only if rtt has improved by
   // a margin.
   if (new_connection->rtt() <= selected_connection_->rtt() - kMinImprovement) {
-    return {new_connection, std::nullopt};
+    return {.connection = new_connection};
   }
 
-  return {std::nullopt, recheck_event};
+  return {.recheck_event = recheck_event};
 }
 
 IceControllerInterface::SwitchResult
diff --git a/p2p/base/p2p_transport_channel.cc b/p2p/base/p2p_transport_channel.cc
index 4904e5b..323cdd2 100644
--- a/p2p/base/p2p_transport_channel.cc
+++ b/p2p/base/p2p_transport_channel.cc
@@ -219,18 +219,21 @@
   ParseFieldTrials(field_trials);
 
   IceControllerFactoryArgs args{
-      [this] { return GetState(); }, [this] { return GetIceRole(); },
-      [this](const Connection* connection) {
-        return IsPortPruned(connection->port()) ||
-               IsRemoteCandidatePruned(connection->remote_candidate());
-      },
-      &ice_field_trials_,
-      field_trials ? field_trials->Lookup("WebRTC-IceControllerFieldTrials")
-                   : ""};
+      .ice_transport_state_func = [this] { return GetState(); },
+      .ice_role_func = [this] { return GetIceRole(); },
+      .is_connection_pruned_func =
+          [this](const Connection* connection) {
+            return IsPortPruned(connection->port()) ||
+                   IsRemoteCandidatePruned(connection->remote_candidate());
+          },
+      .ice_field_trials = &ice_field_trials_,
+      .ice_controller_field_trials =
+          field_trials ? field_trials->Lookup("WebRTC-IceControllerFieldTrials")
+                       : ""};
 
   if (active_ice_controller_factory) {
-    ActiveIceControllerFactoryArgs active_args{args,
-                                               /* ice_agent= */ this};
+    ActiveIceControllerFactoryArgs active_args{.legacy_args = args,
+                                               .ice_agent = this};
     ice_controller_ = active_ice_controller_factory->Create(active_args);
   } else {
     ice_controller_ = std::make_unique<WrappingActiveIceController>(
diff --git a/p2p/base/stun_port_unittest.cc b/p2p/base/stun_port_unittest.cc
index 963335b..6fa8096 100644
--- a/p2p/base/stun_port_unittest.cc
+++ b/p2p/base/stun_port_unittest.cc
@@ -760,10 +760,10 @@
 }
 
 const IPAddressTypeTestConfig kAllIPAddressTypeTestConfigs[] = {
-    {"127.0.0.1", webrtc::IPAddressType::kLoopback},
-    {"localhost", webrtc::IPAddressType::kLoopback},
-    {"10.0.0.3", webrtc::IPAddressType::kPrivate},
-    {"1.1.1.1", webrtc::IPAddressType::kPublic},
+    {.address = "127.0.0.1", .address_type = webrtc::IPAddressType::kLoopback},
+    {.address = "localhost", .address_type = webrtc::IPAddressType::kLoopback},
+    {.address = "10.0.0.3", .address_type = webrtc::IPAddressType::kPrivate},
+    {.address = "1.1.1.1", .address_type = webrtc::IPAddressType::kPublic},
 };
 
 INSTANTIATE_TEST_SUITE_P(All,
@@ -1019,9 +1019,11 @@
 }
 
 const IPAddressTypeTestConfig kAllIPv6AddressTypeTestConfigs[] = {
-    {"::1", webrtc::IPAddressType::kLoopback},
-    {"fd00:4860:4860::8844", webrtc::IPAddressType::kPrivate},
-    {"2001:4860:4860::8888", webrtc::IPAddressType::kPublic},
+    {.address = "::1", .address_type = webrtc::IPAddressType::kLoopback},
+    {.address = "fd00:4860:4860::8844",
+     .address_type = webrtc::IPAddressType::kPrivate},
+    {.address = "2001:4860:4860::8888",
+     .address_type = webrtc::IPAddressType::kPublic},
 };
 
 INSTANTIATE_TEST_SUITE_P(All,
diff --git a/p2p/base/turn_port_unittest.cc b/p2p/base/turn_port_unittest.cc
index e296ed7..152f70a 100644
--- a/p2p/base/turn_port_unittest.cc
+++ b/p2p/base/turn_port_unittest.cc
@@ -2183,13 +2183,14 @@
   absl::string_view address;
   IPAddressType address_type;
 } kAllIPAddressTypeTestConfigs[] = {
-    {"127.0.0.1", IPAddressType::kLoopback},
-    {"localhost", IPAddressType::kLoopback},
-    {"::1", IPAddressType::kLoopback},
-    {"10.0.0.3", IPAddressType::kPrivate},
-    {"fd00:4860:4860::8844", IPAddressType::kPrivate},
-    {"1.1.1.1", IPAddressType::kPublic},
-    {"2001:4860:4860::8888", IPAddressType::kPublic},
+    {.address = "127.0.0.1", .address_type = IPAddressType::kLoopback},
+    {.address = "localhost", .address_type = IPAddressType::kLoopback},
+    {.address = "::1", .address_type = IPAddressType::kLoopback},
+    {.address = "10.0.0.3", .address_type = IPAddressType::kPrivate},
+    {.address = "fd00:4860:4860::8844",
+     .address_type = IPAddressType::kPrivate},
+    {.address = "1.1.1.1", .address_type = IPAddressType::kPublic},
+    {.address = "2001:4860:4860::8888", .address_type = IPAddressType::kPublic},
 };
 
 // Used by the test framework to print the param value for parameterized tests.
diff --git a/p2p/base/wrapping_active_ice_controller_unittest.cc b/p2p/base/wrapping_active_ice_controller_unittest.cc
index df31376..074f3b6 100644
--- a/p2p/base/wrapping_active_ice_controller_unittest.cc
+++ b/p2p/base/wrapping_active_ice_controller_unittest.cc
@@ -128,10 +128,10 @@
   std::vector<const Connection*> conns_to_forget{kConnectionTwo};
   int recheck_delay_ms = 10;
   IceControllerInterface::SwitchResult switch_result{
-      kConnection,
-      IceRecheckEvent(IceSwitchReason::ICE_CONTROLLER_RECHECK,
-                      recheck_delay_ms),
-      conns_to_forget};
+      .connection = kConnection,
+      .recheck_event = IceRecheckEvent(IceSwitchReason::ICE_CONTROLLER_RECHECK,
+                                       recheck_delay_ms),
+      .connections_to_forget_state_on = conns_to_forget};
 
   // ICE controller should switch to given connection immediately.
   Sequence check_then_switch;
@@ -174,10 +174,10 @@
   std::vector<const Connection*> conns_to_prune{kConnectionThree};
   int recheck_delay_ms = 10;
   IceControllerInterface::SwitchResult switch_result{
-      kConnection,
-      IceRecheckEvent(IceSwitchReason::ICE_CONTROLLER_RECHECK,
-                      recheck_delay_ms),
-      conns_to_forget};
+      .connection = kConnection,
+      .recheck_event = IceRecheckEvent(IceSwitchReason::ICE_CONTROLLER_RECHECK,
+                                       recheck_delay_ms),
+      .connections_to_forget_state_on = conns_to_forget};
 
   Sequence sort_and_switch;
   EXPECT_CALL(agent, UpdateConnectionStates()).InSequence(sort_and_switch);
@@ -239,10 +239,10 @@
   std::vector<const Connection*> conns_to_forget{kConnectionTwo};
   int recheck_delay_ms = 10;
   IceControllerInterface::SwitchResult switch_result{
-      kConnection,
-      IceRecheckEvent(IceSwitchReason::ICE_CONTROLLER_RECHECK,
-                      recheck_delay_ms),
-      conns_to_forget};
+      .connection = kConnection,
+      .recheck_event = IceRecheckEvent(IceSwitchReason::ICE_CONTROLLER_RECHECK,
+                                       recheck_delay_ms),
+      .connections_to_forget_state_on = conns_to_forget};
 
   // Sort and switch should take place as the subsequent task.
   Sequence sort_and_switch;
diff --git a/p2p/dtls/dtls_transport_unittest.cc b/p2p/dtls/dtls_transport_unittest.cc
index fd06974..d31f64f 100644
--- a/p2p/dtls/dtls_transport_unittest.cc
+++ b/p2p/dtls/dtls_transport_unittest.cc
@@ -731,8 +731,8 @@
   int version_bytes;
   const std::vector<HandshakeTestEvent>& events;
 } kEventsPerVersion[] = {
-    {kDtls12VersionBytes, dtls_12_handshake_events},
-    {kDtls13VersionBytes, dtls_13_handshake_events},
+    {.version_bytes = kDtls12VersionBytes, .events = dtls_12_handshake_events},
+    {.version_bytes = kDtls13VersionBytes, .events = dtls_13_handshake_events},
 };
 
 struct EndpointConfig {
diff --git a/p2p/test/turn_server.cc b/p2p/test/turn_server.cc
index 57fb0fd..0f03db9 100644
--- a/p2p/test/turn_server.cc
+++ b/p2p/test/turn_server.cc
@@ -128,7 +128,8 @@
 
   RTC_DCHECK(server_listen_sockets_.end() ==
              server_listen_sockets_.find(socket));
-  server_listen_sockets_[socket] = {proto, std::move(ssl_adapter_factory)};
+  server_listen_sockets_[socket] = {
+      .proto = proto, .ssl_adapter_factory = std::move(ssl_adapter_factory)};
   socket->SignalReadEvent.connect(this, &TurnServer::OnNewInternalConnection);
 }
 
diff --git a/rtc_base/async_dns_resolver.cc b/rtc_base/async_dns_resolver.cc
index b11175a..5847650 100644
--- a/rtc_base/async_dns_resolver.cc
+++ b/rtc_base/async_dns_resolver.cc
@@ -48,8 +48,7 @@
                     std::vector<IPAddress>& addresses) {
   addresses.clear();
   struct addrinfo* result = nullptr;
-  struct addrinfo hints = {0};
-  hints.ai_family = family;
+  struct addrinfo hints = {.ai_flags = AI_ADDRCONFIG, .ai_family = family};
   // `family` here will almost always be AF_UNSPEC, because `family` comes from
   // AsyncResolver::addr_.family(), which comes from a SocketAddress constructed
   // with a hostname. When a SocketAddress is constructed with a hostname, its
@@ -67,7 +66,6 @@
   // Android (source code, not documentation):
   // https://android.googlesource.com/platform/bionic/+/
   // 7e0bfb511e85834d7c6cb9631206b62f82701d60/libc/netbsd/net/getaddrinfo.c#1657
-  hints.ai_flags = AI_ADDRCONFIG;
   int ret =
       getaddrinfo(std::string(hostname).c_str(), nullptr, &hints, &result);
   if (ret != 0) {
diff --git a/rtc_base/base64_unittest.cc b/rtc_base/base64_unittest.cc
index 51c90d5..d3804b2 100644
--- a/rtc_base/base64_unittest.cc
+++ b/rtc_base/base64_unittest.cc
@@ -66,11 +66,11 @@
 };
 
 const Base64DecodeTestCase kBase64DecodeTestCases[] = {
-    {"InvalidCharacters", "invalid;;;", std::nullopt},
-    {"InvalidLength", "abcde", std::nullopt},
-    {"ValidInput", "abcd", "i\xB7\x1D"},
-    {"ValidInputPadding", "abc=", "i\xB7"},
-    {"EmptyInput", "", ""},
+    {.name = "InvalidCharacters", .data = "invalid;;;", .result = std::nullopt},
+    {.name = "InvalidLength", .data = "abcde", .result = std::nullopt},
+    {.name = "ValidInput", .data = "abcd", .result = "i\xB7\x1D"},
+    {.name = "ValidInputPadding", .data = "abc=", .result = "i\xB7"},
+    {.name = "EmptyInput", .data = "", .result = ""},
 };
 
 using Base64DecodeTest = TestWithParam<Base64DecodeTestCase>;
@@ -93,31 +93,35 @@
 
 const Base64DecodeTestCase kBase64DecodeForgivingTestCases[] = {
     {
-        "ForgivingPadding",
-        "abc",
-        "i\xB7",
+        .name = "ForgivingPadding",
+        .data = "abc",
+        .result = "i\xB7",
     },
     {
-        "WhitespaceForgivenTab",
-        "ab\tcd",
-        "i\xB7\x1D",
+        .name = "WhitespaceForgivenTab",
+        .data = "ab\tcd",
+        .result = "i\xB7\x1D",
     },
     {
-        "WhitespaceForgivenSpace",
-        "a bc d",
-        "i\xB7\x1D",
+        .name = "WhitespaceForgivenSpace",
+        .data = "a bc d",
+        .result = "i\xB7\x1D",
     },
     {
-        "WhitespaceForgivenNewline",
-        "a\nbc\nd",
-        "i\xB7\x1D",
+        .name = "WhitespaceForgivenNewline",
+        .data = "a\nbc\nd",
+        .result = "i\xB7\x1D",
     },
     {
-        "WhitespaceForgivenCarriageReturn",
-        "a\r\nbc\rd",
-        "i\xB7\x1D",
+        .name = "WhitespaceForgivenCarriageReturn",
+        .data = "a\r\nbc\rd",
+        .result = "i\xB7\x1D",
     },
-    {"WhitespaceForgivenLineFeed", "a\fbcd", "i\xB7\x1D"},
+    {
+        .name = "WhitespaceForgivenLineFeed",
+        .data = "a\fbcd",
+        .result = "i\xB7\x1D",
+    },
 };
 
 using Base64DecodeForgivingTest = TestWithParam<Base64DecodeTestCase>;
diff --git a/rtc_base/experiments/field_trial_units.cc b/rtc_base/experiments/field_trial_units.cc
index f65db33..1322f29 100644
--- a/rtc_base/experiments/field_trial_units.cc
+++ b/rtc_base/experiments/field_trial_units.cc
@@ -34,16 +34,18 @@
 
 std::optional<ValueWithUnit> ParseValueWithUnit(absl::string_view str) {
   if (str == "inf") {
-    return ValueWithUnit{std::numeric_limits<double>::infinity(), ""};
+    return ValueWithUnit{.value = std::numeric_limits<double>::infinity(),
+                         .unit = ""};
   } else if (str == "-inf") {
-    return ValueWithUnit{-std::numeric_limits<double>::infinity(), ""};
+    return ValueWithUnit{.value = -std::numeric_limits<double>::infinity(),
+                         .unit = ""};
   } else {
     double double_val;
     char unit_char[RTC_TRIAL_UNIT_SIZE];
     unit_char[0] = 0;
     if (sscanf(std::string(str).c_str(), "%lf%" RTC_TRIAL_UNIT_LENGTH_STR "s",
                &double_val, unit_char) >= 1) {
-      return ValueWithUnit{double_val, unit_char};
+      return ValueWithUnit{.value = double_val, .unit = unit_char};
     }
   }
   return std::nullopt;
diff --git a/rtc_base/experiments/quality_scaling_experiment_unittest.cc b/rtc_base/experiments/quality_scaling_experiment_unittest.cc
index 65e9253..acd7d00 100644
--- a/rtc_base/experiments/quality_scaling_experiment_unittest.cc
+++ b/rtc_base/experiments/quality_scaling_experiment_unittest.cc
@@ -58,8 +58,17 @@
 }
 
 TEST(QualityScalingExperimentTest, ParseSettings) {
-  const QualityScalingExperiment::Settings kExpected = {1, 2, 3,    4,     5, 6,
-                                                        7, 8, 0.9f, 0.99f, 1};
+  const QualityScalingExperiment::Settings kExpected = {.vp8_low = 1,
+                                                        .vp8_high = 2,
+                                                        .vp9_low = 3,
+                                                        .vp9_high = 4,
+                                                        .h264_low = 5,
+                                                        .h264_high = 6,
+                                                        .generic_low = 7,
+                                                        .generic_high = 8,
+                                                        .alpha_high = 0.9f,
+                                                        .alpha_low = 0.99f,
+                                                        .drop = 1};
   FieldTrials field_trials(
       "WebRTC-Video-QualityScaling/Enabled-1,2,3,4,5,6,7,8,0.9,0.99,1/");
   const auto settings = QualityScalingExperiment::ParseSettings(field_trials);
diff --git a/rtc_base/logging.cc b/rtc_base/logging.cc
index f157205..53faf0e 100644
--- a/rtc_base/logging.cc
+++ b/rtc_base/logging.cc
@@ -460,7 +460,8 @@
   const char* tag = nullptr;
   switch (*fmt) {
     case LogArgType::kLogMetadata: {
-      meta = {va_arg(args, LogMetadata), ERRCTX_NONE, 0};
+      meta = {
+          .meta = va_arg(args, LogMetadata), .err_ctx = ERRCTX_NONE, .err = 0};
       break;
     }
     case LogArgType::kLogMetadataErr: {
diff --git a/rtc_base/openssl_stream_adapter.cc b/rtc_base/openssl_stream_adapter.cc
index 50be6b5..4acbb55 100644
--- a/rtc_base/openssl_stream_adapter.cc
+++ b/rtc_base/openssl_stream_adapter.cc
@@ -82,10 +82,10 @@
 
 // This isn't elegant, but it's better than an external reference
 constexpr SrtpCipherMapEntry kSrtpCipherMap[] = {
-    {"SRTP_AES128_CM_SHA1_80", kSrtpAes128CmSha1_80},
-    {"SRTP_AES128_CM_SHA1_32", kSrtpAes128CmSha1_32},
-    {"SRTP_AEAD_AES_128_GCM", kSrtpAeadAes128Gcm},
-    {"SRTP_AEAD_AES_256_GCM", kSrtpAeadAes256Gcm}};
+    {.internal_name = "SRTP_AES128_CM_SHA1_80", .id = kSrtpAes128CmSha1_80},
+    {.internal_name = "SRTP_AES128_CM_SHA1_32", .id = kSrtpAes128CmSha1_32},
+    {.internal_name = "SRTP_AEAD_AES_128_GCM", .id = kSrtpAeadAes128Gcm},
+    {.internal_name = "SRTP_AEAD_AES_256_GCM", .id = kSrtpAeadAes256Gcm}};
 
 #ifdef OPENSSL_IS_BORINGSSL
 // Enabled by EnableTimeCallbackForTesting. Should never be set in production
@@ -1271,16 +1271,17 @@
 
 static const cipher_list OK_DTLS13_ciphers[] = {
 #ifdef TLS1_3_CK_AES_128_GCM_SHA256  // BoringSSL TLS 1.3
-    {static_cast<uint16_t>(TLS1_3_CK_AES_128_GCM_SHA256 & 0xffff),
-     "TLS_AES_128_GCM_SHA256"},
+    {.cipher = static_cast<uint16_t>(TLS1_3_CK_AES_128_GCM_SHA256 & 0xffff),
+     .cipher_str = "TLS_AES_128_GCM_SHA256"},
 #endif
 #ifdef TLS1_3_CK_AES_256_GCM_SHA256  // BoringSSL TLS 1.3
     {static_cast<uint16_t>(TLS1_3_CK_AES_256_GCM_SHA256 & 0xffff),
      "TLS_AES_256_GCM_SHA256"},
 #endif
 #ifdef TLS1_3_CK_CHACHA20_POLY1305_SHA256  // BoringSSL TLS 1.3
-    {static_cast<uint16_t>(TLS1_3_CK_CHACHA20_POLY1305_SHA256 & 0xffff),
-     "TLS_CHACHA20_POLY1305_SHA256"},
+    {.cipher =
+         static_cast<uint16_t>(TLS1_3_CK_CHACHA20_POLY1305_SHA256 & 0xffff),
+     .cipher_str = "TLS_CHACHA20_POLY1305_SHA256"},
 #endif
 };
 
diff --git a/rtc_base/physical_socket_server.cc b/rtc_base/physical_socket_server.cc
index 2116af1..10adcfe 100644
--- a/rtc_base/physical_socket_server.cc
+++ b/rtc_base/physical_socket_server.cc
@@ -1631,7 +1631,7 @@
     return;
   }
 
-  struct epoll_event event = {0};
+  struct epoll_event event = {};
   event.events = GetEpollEvents(pdispatcher->GetRequestedEvents());
   if (event.events == 0u) {
     // Don't add at all if we don't have any requested events. Could indicate a
@@ -1654,7 +1654,7 @@
     return;
   }
 
-  struct epoll_event event = {0};
+  struct epoll_event event = {};
   int err = epoll_ctl(epoll_fd_, EPOLL_CTL_DEL, fd, &event);
   RTC_DCHECK(err == 0 || errno == ENOENT);
   // Ignore ENOENT, which could occur if this descriptor wasn't added due to
@@ -1672,7 +1672,7 @@
     return;
   }
 
-  struct epoll_event event = {0};
+  struct epoll_event event = {};
   event.events = GetEpollEvents(pdispatcher->GetRequestedEvents());
   event.data.u64 = key;
   // Remove if we don't have any requested events. Could indicate a closed
diff --git a/rtc_base/ssl_identity_unittest.cc b/rtc_base/ssl_identity_unittest.cc
index fb6ff08..136ef60 100644
--- a/rtc_base/ssl_identity_unittest.cc
+++ b/rtc_base/ssl_identity_unittest.cc
@@ -514,58 +514,63 @@
       int64_t want;
     } static const data[] = {
         // clang-format off
-        // clang formatting breaks this nice alignment
+      // clang formatting breaks this nice alignment
 
       // Valid examples.
-      {"19700101000000Z",  true,  0},
-      {"700101000000Z",    false, 0},
-      {"19700101000001Z",  true,  1},
-      {"700101000001Z",    false, 1},
-      {"19700101000100Z",  true,  60},
-      {"19700101000101Z",  true,  61},
-      {"19700101010000Z",  true,  3600},
-      {"19700101010001Z",  true,  3601},
-      {"19700101010100Z",  true,  3660},
-      {"19700101010101Z",  true,  3661},
-      {"710911012345Z",    false, 53400225},
-      {"20000101000000Z",  true,  946684800},
-      {"20000101000000Z",  true,  946684800},
-      {"20151130140156Z",  true,  1448892116},
-      {"151130140156Z",    false, 1448892116},
-      {"20491231235959Z",  true,  2524607999},
-      {"491231235959Z",    false, 2524607999},
-      {"20500101000000Z",  true,  2524607999+1},
-      {"20700101000000Z",  true,  3155760000},
-      {"21000101000000Z",  true,  4102444800},
-      {"24000101000000Z",  true,  13569465600},
+      {.string="19700101000000Z",  .long_format=true,  .want=0},
+      {.string="700101000000Z",    .long_format=false, .want=0},
+      {.string="19700101000001Z",  .long_format=true,  .want=1},
+      {.string="700101000001Z",    .long_format=false, .want=1},
+      {.string="19700101000100Z",  .long_format=true,  .want=60},
+      {.string="19700101000101Z",  .long_format=true,  .want=61},
+      {.string="19700101010000Z",  .long_format=true,  .want=3600},
+      {.string="19700101010001Z",  .long_format=true,  .want=3601},
+      {.string="19700101010100Z",  .long_format=true,  .want=3660},
+      {.string="19700101010101Z",  .long_format=true,  .want=3661},
+      {.string="710911012345Z",    .long_format=false, .want=53400225},
+      {.string="20000101000000Z",  .long_format=true,  .want=946684800},
+      {.string="20000101000000Z",  .long_format=true,  .want=946684800},
+      {.string="20151130140156Z",  .long_format=true,  .want=1448892116},
+      {.string="151130140156Z",    .long_format=false, .want=1448892116},
+      {.string="20491231235959Z",  .long_format=true,  .want=2524607999},
+      {.string="491231235959Z",    .long_format=false, .want=2524607999},
+      {.string="20500101000000Z",  .long_format=true,  .want=2524607999+1},
+      {.string="20700101000000Z",  .long_format=true,  .want=3155760000},
+      {.string="21000101000000Z",  .long_format=true,  .want=4102444800},
+      {.string="24000101000000Z",  .long_format=true,  .want=13569465600},
 
       // Invalid examples.
-      {"19700101000000",    true,  -1},  // missing Z long format
-      {"19700101000000X",   true,  -1},  // X instead of Z long format
-      {"197001010000000",   true,  -1},  // 0 instead of Z long format
-      {"1970010100000000Z", true,  -1},  // excess digits long format
-      {"700101000000",      false, -1},  // missing Z short format
-      {"700101000000X",     false, -1},  // X instead of Z short format
-      {"7001010000000",     false, -1},  // 0 instead of Z short format
-      {"70010100000000Z",   false, -1},  // excess digits short format
-      {":9700101000000Z",   true,  -1},  // invalid character
-      {"1:700101000001Z",   true,  -1},  // invalid character
-      {"19:00101000100Z",   true,  -1},  // invalid character
-      {"197:0101000101Z",   true,  -1},  // invalid character
-      {"1970:101010000Z",   true,  -1},  // invalid character
-      {"19700:01010001Z",   true,  -1},  // invalid character
-      {"197001:1010100Z",   true,  -1},  // invalid character
-      {"1970010:010101Z",   true,  -1},  // invalid character
-      {"70010100:000Z",     false, -1},  // invalid character
-      {"700101000:01Z",     false, -1},  // invalid character
-      {"2000010100:000Z",   true,  -1},  // invalid character
-      {"21000101000:00Z",   true,  -1},  // invalid character
-      {"240001010000:0Z",   true,  -1},  // invalid character
-      {"500101000000Z",     false, -1},  // but too old for epoch
-      {"691231235959Z",     false, -1},  // too old for epoch
-      {"19611118043000Z",   false, -1},  // way too old for epoch
-
-        // clang-format off
+      // Long format: missing Z, X instead of Z, 0 instead of Z,
+      // excess digits.
+      {.string="19700101000000",    .long_format=true,  .want=-1},
+      {.string="19700101000000X",   .long_format=true,  .want=-1},
+      {.string="197001010000000",   .long_format=true,  .want=-1},
+      {.string="1970010100000000Z", .long_format=true,  .want=-1},
+      // Short format: missing Z, X instead of Z, 0 instead of Z,
+      // excess digits.
+      {.string="700101000000",      .long_format=false, .want=-1},
+      {.string="700101000000X",     .long_format=false, .want=-1},
+      {.string="7001010000000",     .long_format=false, .want=-1},
+      {.string="70010100000000Z",   .long_format=false, .want=-1},
+      // Invalid character.
+      {.string=":9700101000000Z",   .long_format=true,  .want=-1},
+      {.string="1:700101000001Z",   .long_format=true,  .want=-1},
+      {.string="19:00101000100Z",   .long_format=true,  .want=-1},
+      {.string="197:0101000101Z",   .long_format=true,  .want=-1},
+      {.string="1970:101010000Z",   .long_format=true,  .want=-1},
+      {.string="19700:01010001Z",   .long_format=true,  .want=-1},
+      {.string="197001:1010100Z",   .long_format=true,  .want=-1},
+      {.string="1970010:010101Z",   .long_format=true,  .want=-1},
+      {.string="70010100:000Z",     .long_format=false, .want=-1},
+      {.string="700101000:01Z",     .long_format=false, .want=-1},
+      {.string="2000010100:000Z",   .long_format=true,  .want=-1},
+      {.string="21000101000:00Z",   .long_format=true,  .want=-1},
+      {.string="240001010000:0Z",   .long_format=true,  .want=-1},
+      // Dates prior to unix epoch (January 1st, 1970).
+      {.string="500101000000Z",     .long_format=false, .want=-1},
+      {.string="691231235959Z",     .long_format=false, .want=-1},
+      {.string="19611118043000Z",   .long_format=false, .want=-1},
+      // clang-format off
     };
 
     unsigned char buf[EVP_MAX_MD_SIZE];
diff --git a/rtc_base/synchronization/yield.cc b/rtc_base/synchronization/yield.cc
index 812dfe6..f53ceb2 100644
--- a/rtc_base/synchronization/yield.cc
+++ b/rtc_base/synchronization/yield.cc
@@ -29,7 +29,7 @@
     !RTC_USE_NATIVE_MUTEX_ON_MAC
   sched_yield();
 #else
-  static const struct timespec ts_null = {0};
+  static const struct timespec ts_null = {.tv_sec = 0, .tv_nsec = 0};
   nanosleep(&ts_null, nullptr);
 #endif
 }