From b25bf6ef1151ec4641f8121eb56593d810d45a9a Mon Sep 17 00:00:00 2001 From: Mark Rousskov Date: Tue, 4 Mar 2025 22:42:44 +0000 Subject: [PATCH 1/3] Add event for dc::Path creation This allows a subscriber with knowledge of the concrete path type to downcast it and register interest for events (e.g., to pull the path secret ID or other relevant metadata as it gets produced). --- quic/s2n-quic-core/events/connection.rs | 8 + quic/s2n-quic-core/src/event.rs | 9 + quic/s2n-quic-core/src/event/generated.rs | 106 +++++ .../src/event/generated/metrics.rs | 15 + .../src/event/generated/metrics/aggregate.rs | 362 ++++++++++-------- .../src/event/generated/metrics/probe.rs | 99 ++--- .../src/space/session_context.rs | 8 +- 7 files changed, 388 insertions(+), 219 deletions(-) diff --git a/quic/s2n-quic-core/events/connection.rs b/quic/s2n-quic-core/events/connection.rs index d53e1fff1..fb14fec21 100644 --- a/quic/s2n-quic-core/events/connection.rs +++ b/quic/s2n-quic-core/events/connection.rs @@ -437,6 +437,14 @@ struct DcStateChanged { state: DcState, } +#[event("transport:dc_path_created")] +/// The DC path has been created +struct DcPathCreated<'a> { + /// This is the dc::Path struct, it's just type-erased. But if an event subscriber knows the + /// type they can downcast. + path: &'a (dyn core::any::Any + Send + 'static), +} + // NOTE - This event MUST come last, since connection-level aggregation depends on it #[event("connectivity:connection_closed")] //= https://tools.ietf.org/id/draft-marx-qlog-event-definitions-quic-h3-02#5.1.3 diff --git a/quic/s2n-quic-core/src/event.rs b/quic/s2n-quic-core/src/event.rs index d2f1544b1..5151a7ccf 100644 --- a/quic/s2n-quic-core/src/event.rs +++ b/quic/s2n-quic-core/src/event.rs @@ -82,6 +82,15 @@ impl<'a> IntoEvent<&'a str> for &'a str { } } +impl<'a> IntoEvent<&'a (dyn core::any::Any + Send + 'static)> + for &'a (dyn core::any::Any + Send + 'static) +{ + #[inline] + fn into_event(self) -> Self { + self + } +} + impl IntoEvent> for RangeInclusive { #[inline] fn into_event(self) -> RangeInclusive { diff --git a/quic/s2n-quic-core/src/event/generated.rs b/quic/s2n-quic-core/src/event/generated.rs index 8f5c7f6c1..d8725ac9f 100644 --- a/quic/s2n-quic-core/src/event/generated.rs +++ b/quic/s2n-quic-core/src/event/generated.rs @@ -2655,6 +2655,25 @@ pub mod api { } #[derive(Clone, Debug)] #[non_exhaustive] + #[doc = " The DC path has been created"] + pub struct DcPathCreated<'a> { + #[doc = " This is the dc::Path struct, it's just type-erased. But if an event subscriber knows the"] + #[doc = " type they can downcast."] + pub path: &'a (dyn core::any::Any + Send + 'static), + } + #[cfg(any(test, feature = "testing"))] + impl<'a> crate::event::snapshot::Fmt for DcPathCreated<'a> { + fn fmt(&self, fmt: &mut core::fmt::Formatter) -> core::fmt::Result { + let mut fmt = fmt.debug_struct("DcPathCreated"); + fmt.field("path", &self.path); + fmt.finish() + } + } + impl<'a> Event for DcPathCreated<'a> { + const NAME: &'static str = "transport:dc_path_created"; + } + #[derive(Clone, Debug)] + #[non_exhaustive] #[doc = " Connection closed"] pub struct ConnectionClosed { pub error: crate::connection::Error, @@ -4172,6 +4191,17 @@ pub mod tracing { tracing :: event ! (target : "dc_state_changed" , parent : id , tracing :: Level :: DEBUG , { state = tracing :: field :: debug (state) }); } #[inline] + fn on_dc_path_created( + &mut self, + context: &mut Self::ConnectionContext, + _meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + let id = context.id(); + let api::DcPathCreated { path } = event; + tracing :: event ! (target : "dc_path_created" , parent : id , tracing :: Level :: DEBUG , { path = tracing :: field :: debug (path) }); + } + #[inline] fn on_connection_closed( &mut self, context: &mut Self::ConnectionContext, @@ -6334,6 +6364,22 @@ pub mod builder { } } #[derive(Clone, Debug)] + #[doc = " The DC path has been created"] + pub struct DcPathCreated<'a> { + #[doc = " This is the dc::Path struct, it's just type-erased. But if an event subscriber knows the"] + #[doc = " type they can downcast."] + pub path: &'a (dyn core::any::Any + Send + 'static), + } + impl<'a> IntoEvent> for DcPathCreated<'a> { + #[inline] + fn into_event(self) -> api::DcPathCreated<'a> { + let DcPathCreated { path } = self; + api::DcPathCreated { + path: path.into_event(), + } + } + } + #[derive(Clone, Debug)] #[doc = " Connection closed"] pub struct ConnectionClosed { pub error: crate::connection::Error, @@ -7353,6 +7399,18 @@ mod traits { let _ = meta; let _ = event; } + #[doc = "Called when the `DcPathCreated` event is triggered"] + #[inline] + fn on_dc_path_created( + &mut self, + context: &mut Self::ConnectionContext, + meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + let _ = context; + let _ = meta; + let _ = event; + } #[doc = "Called when the `ConnectionClosed` event is triggered"] #[inline] fn on_connection_closed( @@ -8039,6 +8097,16 @@ mod traits { (self.1).on_dc_state_changed(&mut context.1, meta, event); } #[inline] + fn on_dc_path_created( + &mut self, + context: &mut Self::ConnectionContext, + meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + (self.0).on_dc_path_created(&mut context.0, meta, event); + (self.1).on_dc_path_created(&mut context.1, meta, event); + } + #[inline] fn on_connection_closed( &mut self, context: &mut Self::ConnectionContext, @@ -8473,6 +8541,8 @@ mod traits { fn on_bbr_state_changed(&mut self, event: builder::BbrStateChanged); #[doc = "Publishes a `DcStateChanged` event to the publisher's subscriber"] fn on_dc_state_changed(&mut self, event: builder::DcStateChanged); + #[doc = "Publishes a `DcPathCreated` event to the publisher's subscriber"] + fn on_dc_path_created(&mut self, event: builder::DcPathCreated); #[doc = "Publishes a `ConnectionClosed` event to the publisher's subscriber"] fn on_connection_closed(&mut self, event: builder::ConnectionClosed); #[doc = r" Returns the QUIC version negotiated for the current connection, if any"] @@ -8924,6 +8994,15 @@ mod traits { self.subscriber.on_event(&self.meta, &event); } #[inline] + fn on_dc_path_created(&mut self, event: builder::DcPathCreated) { + let event = event.into_event(); + self.subscriber + .on_dc_path_created(self.context, &self.meta, &event); + self.subscriber + .on_connection_event(self.context, &self.meta, &event); + self.subscriber.on_event(&self.meta, &event); + } + #[inline] fn on_connection_closed(&mut self, event: builder::ConnectionClosed) { let event = event.into_event(); self.subscriber @@ -9230,6 +9309,7 @@ pub mod testing { pub pacing_rate_updated: u64, pub bbr_state_changed: u64, pub dc_state_changed: u64, + pub dc_path_created: u64, pub connection_closed: u64, pub version_information: u64, pub endpoint_packet_sent: u64, @@ -9321,6 +9401,7 @@ pub mod testing { pacing_rate_updated: 0, bbr_state_changed: 0, dc_state_changed: 0, + dc_path_created: 0, connection_closed: 0, version_information: 0, endpoint_packet_sent: 0, @@ -9965,6 +10046,20 @@ pub mod testing { self.output.push(out); } } + fn on_dc_path_created( + &mut self, + _context: &mut Self::ConnectionContext, + meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + self.dc_path_created += 1; + if self.location.is_some() { + let meta = crate::event::snapshot::Fmt::to_snapshot(meta); + let event = crate::event::snapshot::Fmt::to_snapshot(event); + let out = format!("{meta:?} {event:?}"); + self.output.push(out); + } + } fn on_connection_closed( &mut self, _context: &mut Self::ConnectionContext, @@ -10177,6 +10272,7 @@ pub mod testing { pub pacing_rate_updated: u64, pub bbr_state_changed: u64, pub dc_state_changed: u64, + pub dc_path_created: u64, pub connection_closed: u64, pub version_information: u64, pub endpoint_packet_sent: u64, @@ -10258,6 +10354,7 @@ pub mod testing { pacing_rate_updated: 0, bbr_state_changed: 0, dc_state_changed: 0, + dc_path_created: 0, connection_closed: 0, version_information: 0, endpoint_packet_sent: 0, @@ -10800,6 +10897,15 @@ pub mod testing { self.output.push(out); } } + fn on_dc_path_created(&mut self, event: builder::DcPathCreated) { + self.dc_path_created += 1; + let event = event.into_event(); + if self.location.is_some() { + let event = crate::event::snapshot::Fmt::to_snapshot(&event); + let out = format!("{event:?}"); + self.output.push(out); + } + } fn on_connection_closed(&mut self, event: builder::ConnectionClosed) { self.connection_closed += 1; let event = event.into_event(); diff --git a/quic/s2n-quic-core/src/event/generated/metrics.rs b/quic/s2n-quic-core/src/event/generated/metrics.rs index 45c798ae9..2e8e09171 100644 --- a/quic/s2n-quic-core/src/event/generated/metrics.rs +++ b/quic/s2n-quic-core/src/event/generated/metrics.rs @@ -70,6 +70,7 @@ pub struct Context { pacing_rate_updated: u64, bbr_state_changed: u64, dc_state_changed: u64, + dc_path_created: u64, connection_closed: u64, } impl event::Subscriber for Subscriber @@ -128,6 +129,7 @@ where pacing_rate_updated: 0, bbr_state_changed: 0, dc_state_changed: 0, + dc_path_created: 0, connection_closed: 0, } } @@ -620,6 +622,17 @@ where .on_dc_state_changed(&mut context.recorder, meta, event); } #[inline] + fn on_dc_path_created( + &mut self, + context: &mut Self::ConnectionContext, + meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + context.dc_path_created += 1; + self.subscriber + .on_dc_path_created(&mut context.recorder, meta, event); + } + #[inline] fn on_connection_closed( &mut self, context: &mut Self::ConnectionContext, @@ -735,6 +748,8 @@ impl Drop for Context { .increment_counter("bbr_state_changed", self.bbr_state_changed as _); self.recorder .increment_counter("dc_state_changed", self.dc_state_changed as _); + self.recorder + .increment_counter("dc_path_created", self.dc_path_created as _); self.recorder .increment_counter("connection_closed", self.connection_closed as _); } diff --git a/quic/s2n-quic-core/src/event/generated/metrics/aggregate.rs b/quic/s2n-quic-core/src/event/generated/metrics/aggregate.rs index b149dd44c..42963119c 100644 --- a/quic/s2n-quic-core/src/event/generated/metrics/aggregate.rs +++ b/quic/s2n-quic-core/src/event/generated/metrics/aggregate.rs @@ -13,7 +13,7 @@ use crate::event::{ }, }; use alloc::{boxed::Box, vec::Vec}; -static INFO: &[Info; 162usize] = &[ +static INFO: &[Info; 163usize] = &[ info::Builder { id: 0usize, name: Str::new("application_protocol_information\0"), @@ -700,288 +700,294 @@ static INFO: &[Info; 162usize] = &[ .build(), info::Builder { id: 114usize, - name: Str::new("connection_closed\0"), + name: Str::new("dc_path_created\0"), units: Units::None, } .build(), info::Builder { id: 115usize, + name: Str::new("connection_closed\0"), + units: Units::None, + } + .build(), + info::Builder { + id: 116usize, name: Str::new("connection_closed.latency\0"), units: Units::Duration, } .build(), info::Builder { - id: 116usize, + id: 117usize, name: Str::new("connection_closed.error\0"), units: Units::None, } .build(), info::Builder { - id: 117usize, + id: 118usize, name: Str::new("version_information\0"), units: Units::None, } .build(), info::Builder { - id: 118usize, + id: 119usize, name: Str::new("endpoint_packet_sent\0"), units: Units::None, } .build(), info::Builder { - id: 119usize, + id: 120usize, name: Str::new("endpoint_packet_received\0"), units: Units::None, } .build(), info::Builder { - id: 120usize, + id: 121usize, name: Str::new("endpoint_datagram_sent\0"), units: Units::None, } .build(), info::Builder { - id: 121usize, + id: 122usize, name: Str::new("endpoint_datagram_sent.bytes\0"), units: Units::Bytes, } .build(), info::Builder { - id: 122usize, + id: 123usize, name: Str::new("endpoint_datagram_sent.bytes.total\0"), units: Units::Bytes, } .build(), info::Builder { - id: 123usize, + id: 124usize, name: Str::new("endpoint_datagram_sent.gso_offset\0"), units: Units::None, } .build(), info::Builder { - id: 124usize, + id: 125usize, name: Str::new("endpoint_datagram_received\0"), units: Units::None, } .build(), info::Builder { - id: 125usize, + id: 126usize, name: Str::new("endpoint_datagram_received.bytes\0"), units: Units::Bytes, } .build(), info::Builder { - id: 126usize, + id: 127usize, name: Str::new("endpoint_datagram_received.bytes.total\0"), units: Units::Bytes, } .build(), info::Builder { - id: 127usize, + id: 128usize, name: Str::new("endpoint_datagram_dropped\0"), units: Units::None, } .build(), info::Builder { - id: 128usize, + id: 129usize, name: Str::new("endpoint_datagram_dropped.bytes\0"), units: Units::Bytes, } .build(), info::Builder { - id: 129usize, + id: 130usize, name: Str::new("endpoint_datagram_dropped.bytes.total\0"), units: Units::Bytes, } .build(), info::Builder { - id: 130usize, + id: 131usize, name: Str::new("endpoint_datagram_dropped.reason\0"), units: Units::None, } .build(), info::Builder { - id: 131usize, + id: 132usize, name: Str::new("endpoint_connection_attempt_failed\0"), units: Units::None, } .build(), info::Builder { - id: 132usize, + id: 133usize, name: Str::new("endpoint_connection_attempt_failed.error\0"), units: Units::None, } .build(), info::Builder { - id: 133usize, + id: 134usize, name: Str::new("platform_tx\0"), units: Units::None, } .build(), info::Builder { - id: 134usize, + id: 135usize, name: Str::new("platform_tx.packets.total\0"), units: Units::None, } .build(), info::Builder { - id: 135usize, + id: 136usize, name: Str::new("platform_tx.packets\0"), units: Units::None, } .build(), info::Builder { - id: 136usize, + id: 137usize, name: Str::new("platform_tx.syscalls.total\0"), units: Units::None, } .build(), info::Builder { - id: 137usize, + id: 138usize, name: Str::new("platform_tx.syscalls\0"), units: Units::None, } .build(), info::Builder { - id: 138usize, + id: 139usize, name: Str::new("platform_tx.syscalls.blocked.total\0"), units: Units::None, } .build(), info::Builder { - id: 139usize, + id: 140usize, name: Str::new("platform_tx.syscalls.blocked\0"), units: Units::None, } .build(), info::Builder { - id: 140usize, + id: 141usize, name: Str::new("platform_tx.errors.total\0"), units: Units::None, } .build(), info::Builder { - id: 141usize, + id: 142usize, name: Str::new("platform_tx.errors\0"), units: Units::None, } .build(), info::Builder { - id: 142usize, + id: 143usize, name: Str::new("platform_tx.errors.dropped.total\0"), units: Units::None, } .build(), info::Builder { - id: 143usize, + id: 144usize, name: Str::new("platform_tx.errors.dropped\0"), units: Units::None, } .build(), info::Builder { - id: 144usize, + id: 145usize, name: Str::new("platform_tx_error\0"), units: Units::None, } .build(), info::Builder { - id: 145usize, + id: 146usize, name: Str::new("platform_rx\0"), units: Units::None, } .build(), info::Builder { - id: 146usize, + id: 147usize, name: Str::new("platform_rx.packets.total\0"), units: Units::None, } .build(), info::Builder { - id: 147usize, + id: 148usize, name: Str::new("platform_rx.packets\0"), units: Units::None, } .build(), info::Builder { - id: 148usize, + id: 149usize, name: Str::new("platform_rx.syscalls.total\0"), units: Units::None, } .build(), info::Builder { - id: 149usize, + id: 150usize, name: Str::new("platform_rx.syscalls\0"), units: Units::None, } .build(), info::Builder { - id: 150usize, + id: 151usize, name: Str::new("platform_rx.syscalls.blocked.total\0"), units: Units::None, } .build(), info::Builder { - id: 151usize, + id: 152usize, name: Str::new("platform_rx.syscalls.blocked\0"), units: Units::None, } .build(), info::Builder { - id: 152usize, + id: 153usize, name: Str::new("platform_rx.errors.total\0"), units: Units::None, } .build(), info::Builder { - id: 153usize, + id: 154usize, name: Str::new("platform_rx.errors\0"), units: Units::None, } .build(), info::Builder { - id: 154usize, + id: 155usize, name: Str::new("platform_rx.errors.dropped.total\0"), units: Units::None, } .build(), info::Builder { - id: 155usize, + id: 156usize, name: Str::new("platform_rx.errors.dropped\0"), units: Units::None, } .build(), info::Builder { - id: 156usize, + id: 157usize, name: Str::new("platform_rx_error\0"), units: Units::None, } .build(), info::Builder { - id: 157usize, + id: 158usize, name: Str::new("platform_feature_configured\0"), units: Units::None, } .build(), info::Builder { - id: 158usize, + id: 159usize, name: Str::new("platform_event_loop_wakeup\0"), units: Units::None, } .build(), info::Builder { - id: 159usize, + id: 160usize, name: Str::new("platform_event_loop_sleep\0"), units: Units::None, } .build(), info::Builder { - id: 160usize, + id: 161usize, name: Str::new("platform_event_loop_sleep.processing_duration\0"), units: Units::Duration, } .build(), info::Builder { - id: 161usize, + id: 162usize, name: Str::new("platform_event_loop_started\0"), units: Units::None, } @@ -994,7 +1000,7 @@ pub struct ConnectionContext { } pub struct Subscriber { #[allow(dead_code)] - counters: Box<[R::Counter; 76usize]>, + counters: Box<[R::Counter; 77usize]>, #[allow(dead_code)] bool_counters: Box<[R::BoolCounter; 3usize]>, #[allow(dead_code)] @@ -1029,7 +1035,7 @@ impl Subscriber { #[allow(unused_mut)] #[inline] pub fn new(registry: R) -> Self { - let mut counters = Vec::with_capacity(76usize); + let mut counters = Vec::with_capacity(77usize); let mut bool_counters = Vec::with_capacity(3usize); let mut nominal_counters = Vec::with_capacity(29usize); let mut nominal_counter_offsets = Vec::with_capacity(29usize); @@ -1089,31 +1095,32 @@ impl Subscriber { counters.push(registry.register_counter(&INFO[106usize])); counters.push(registry.register_counter(&INFO[108usize])); counters.push(registry.register_counter(&INFO[114usize])); - counters.push(registry.register_counter(&INFO[117usize])); + counters.push(registry.register_counter(&INFO[115usize])); counters.push(registry.register_counter(&INFO[118usize])); counters.push(registry.register_counter(&INFO[119usize])); counters.push(registry.register_counter(&INFO[120usize])); - counters.push(registry.register_counter(&INFO[124usize])); - counters.push(registry.register_counter(&INFO[127usize])); - counters.push(registry.register_counter(&INFO[131usize])); - counters.push(registry.register_counter(&INFO[133usize])); + counters.push(registry.register_counter(&INFO[121usize])); + counters.push(registry.register_counter(&INFO[125usize])); + counters.push(registry.register_counter(&INFO[128usize])); + counters.push(registry.register_counter(&INFO[132usize])); counters.push(registry.register_counter(&INFO[134usize])); - counters.push(registry.register_counter(&INFO[136usize])); - counters.push(registry.register_counter(&INFO[138usize])); - counters.push(registry.register_counter(&INFO[140usize])); - counters.push(registry.register_counter(&INFO[142usize])); - counters.push(registry.register_counter(&INFO[144usize])); + counters.push(registry.register_counter(&INFO[135usize])); + counters.push(registry.register_counter(&INFO[137usize])); + counters.push(registry.register_counter(&INFO[139usize])); + counters.push(registry.register_counter(&INFO[141usize])); + counters.push(registry.register_counter(&INFO[143usize])); counters.push(registry.register_counter(&INFO[145usize])); counters.push(registry.register_counter(&INFO[146usize])); - counters.push(registry.register_counter(&INFO[148usize])); - counters.push(registry.register_counter(&INFO[150usize])); - counters.push(registry.register_counter(&INFO[152usize])); - counters.push(registry.register_counter(&INFO[154usize])); - counters.push(registry.register_counter(&INFO[156usize])); + counters.push(registry.register_counter(&INFO[147usize])); + counters.push(registry.register_counter(&INFO[149usize])); + counters.push(registry.register_counter(&INFO[151usize])); + counters.push(registry.register_counter(&INFO[153usize])); + counters.push(registry.register_counter(&INFO[155usize])); counters.push(registry.register_counter(&INFO[157usize])); counters.push(registry.register_counter(&INFO[158usize])); counters.push(registry.register_counter(&INFO[159usize])); - counters.push(registry.register_counter(&INFO[161usize])); + counters.push(registry.register_counter(&INFO[160usize])); + counters.push(registry.register_counter(&INFO[162usize])); bool_counters.push(registry.register_bool_counter(&INFO[23usize])); bool_counters.push(registry.register_bool_counter(&INFO[33usize])); bool_counters.push(registry.register_bool_counter(&INFO[96usize])); @@ -1411,7 +1418,7 @@ impl Subscriber { let mut count = 0; for variant in ::VARIANTS.iter() { nominal_counters - .push(registry.register_nominal_counter(&INFO[116usize], variant)); + .push(registry.register_nominal_counter(&INFO[117usize], variant)); count += 1; } debug_assert_ne!(count, 0, "field type needs at least one variant"); @@ -1422,7 +1429,7 @@ impl Subscriber { let mut count = 0; for variant in ::VARIANTS.iter() { nominal_counters - .push(registry.register_nominal_counter(&INFO[130usize], variant)); + .push(registry.register_nominal_counter(&INFO[131usize], variant)); count += 1; } debug_assert_ne!(count, 0, "field type needs at least one variant"); @@ -1433,7 +1440,7 @@ impl Subscriber { let mut count = 0; for variant in ::VARIANTS.iter() { nominal_counters - .push(registry.register_nominal_counter(&INFO[132usize], variant)); + .push(registry.register_nominal_counter(&INFO[133usize], variant)); count += 1; } debug_assert_ne!(count, 0, "field type needs at least one variant"); @@ -1461,23 +1468,23 @@ impl Subscriber { measures.push(registry.register_measure(&INFO[103usize])); measures.push(registry.register_measure(&INFO[104usize])); measures.push(registry.register_measure(&INFO[105usize])); - measures.push(registry.register_measure(&INFO[121usize])); measures.push(registry.register_measure(&INFO[122usize])); measures.push(registry.register_measure(&INFO[123usize])); - measures.push(registry.register_measure(&INFO[125usize])); + measures.push(registry.register_measure(&INFO[124usize])); measures.push(registry.register_measure(&INFO[126usize])); - measures.push(registry.register_measure(&INFO[128usize])); + measures.push(registry.register_measure(&INFO[127usize])); measures.push(registry.register_measure(&INFO[129usize])); - measures.push(registry.register_measure(&INFO[135usize])); - measures.push(registry.register_measure(&INFO[137usize])); - measures.push(registry.register_measure(&INFO[139usize])); - measures.push(registry.register_measure(&INFO[141usize])); - measures.push(registry.register_measure(&INFO[143usize])); - measures.push(registry.register_measure(&INFO[147usize])); - measures.push(registry.register_measure(&INFO[149usize])); - measures.push(registry.register_measure(&INFO[151usize])); - measures.push(registry.register_measure(&INFO[153usize])); - measures.push(registry.register_measure(&INFO[155usize])); + measures.push(registry.register_measure(&INFO[130usize])); + measures.push(registry.register_measure(&INFO[136usize])); + measures.push(registry.register_measure(&INFO[138usize])); + measures.push(registry.register_measure(&INFO[140usize])); + measures.push(registry.register_measure(&INFO[142usize])); + measures.push(registry.register_measure(&INFO[144usize])); + measures.push(registry.register_measure(&INFO[148usize])); + measures.push(registry.register_measure(&INFO[150usize])); + measures.push(registry.register_measure(&INFO[152usize])); + measures.push(registry.register_measure(&INFO[154usize])); + measures.push(registry.register_measure(&INFO[156usize])); timers.push(registry.register_timer(&INFO[47usize])); timers.push(registry.register_timer(&INFO[48usize])); timers.push(registry.register_timer(&INFO[49usize])); @@ -1491,8 +1498,8 @@ impl Subscriber { timers.push(registry.register_timer(&INFO[110usize])); timers.push(registry.register_timer(&INFO[111usize])); timers.push(registry.register_timer(&INFO[112usize])); - timers.push(registry.register_timer(&INFO[115usize])); - timers.push(registry.register_timer(&INFO[160usize])); + timers.push(registry.register_timer(&INFO[116usize])); + timers.push(registry.register_timer(&INFO[161usize])); { #[allow(unused_imports)] use api::*; @@ -1588,31 +1595,32 @@ impl Subscriber { 48usize => (&INFO[106usize], entry), 49usize => (&INFO[108usize], entry), 50usize => (&INFO[114usize], entry), - 51usize => (&INFO[117usize], entry), + 51usize => (&INFO[115usize], entry), 52usize => (&INFO[118usize], entry), 53usize => (&INFO[119usize], entry), 54usize => (&INFO[120usize], entry), - 55usize => (&INFO[124usize], entry), - 56usize => (&INFO[127usize], entry), - 57usize => (&INFO[131usize], entry), - 58usize => (&INFO[133usize], entry), + 55usize => (&INFO[121usize], entry), + 56usize => (&INFO[125usize], entry), + 57usize => (&INFO[128usize], entry), + 58usize => (&INFO[132usize], entry), 59usize => (&INFO[134usize], entry), - 60usize => (&INFO[136usize], entry), - 61usize => (&INFO[138usize], entry), - 62usize => (&INFO[140usize], entry), - 63usize => (&INFO[142usize], entry), - 64usize => (&INFO[144usize], entry), + 60usize => (&INFO[135usize], entry), + 61usize => (&INFO[137usize], entry), + 62usize => (&INFO[139usize], entry), + 63usize => (&INFO[141usize], entry), + 64usize => (&INFO[143usize], entry), 65usize => (&INFO[145usize], entry), 66usize => (&INFO[146usize], entry), - 67usize => (&INFO[148usize], entry), - 68usize => (&INFO[150usize], entry), - 69usize => (&INFO[152usize], entry), - 70usize => (&INFO[154usize], entry), - 71usize => (&INFO[156usize], entry), + 67usize => (&INFO[147usize], entry), + 68usize => (&INFO[149usize], entry), + 69usize => (&INFO[151usize], entry), + 70usize => (&INFO[153usize], entry), + 71usize => (&INFO[155usize], entry), 72usize => (&INFO[157usize], entry), 73usize => (&INFO[158usize], entry), 74usize => (&INFO[159usize], entry), - 75usize => (&INFO[161usize], entry), + 75usize => (&INFO[160usize], entry), + 76usize => (&INFO[162usize], entry), _ => unsafe { core::hint::unreachable_unchecked() }, }) } @@ -1813,19 +1821,19 @@ impl Subscriber { let offset = *entry; let variants = ::VARIANTS; let entries = &self.nominal_counters[offset..offset + variants.len()]; - (&INFO[116usize], entries, variants) + (&INFO[117usize], entries, variants) } 27usize => { let offset = *entry; let variants = ::VARIANTS; let entries = &self.nominal_counters[offset..offset + variants.len()]; - (&INFO[130usize], entries, variants) + (&INFO[131usize], entries, variants) } 28usize => { let offset = *entry; let variants = ::VARIANTS; let entries = &self.nominal_counters[offset..offset + variants.len()]; - (&INFO[132usize], entries, variants) + (&INFO[133usize], entries, variants) } _ => unsafe { core::hint::unreachable_unchecked() }, }) @@ -1866,23 +1874,23 @@ impl Subscriber { 18usize => (&INFO[103usize], entry), 19usize => (&INFO[104usize], entry), 20usize => (&INFO[105usize], entry), - 21usize => (&INFO[121usize], entry), - 22usize => (&INFO[122usize], entry), - 23usize => (&INFO[123usize], entry), - 24usize => (&INFO[125usize], entry), - 25usize => (&INFO[126usize], entry), - 26usize => (&INFO[128usize], entry), - 27usize => (&INFO[129usize], entry), - 28usize => (&INFO[135usize], entry), - 29usize => (&INFO[137usize], entry), - 30usize => (&INFO[139usize], entry), - 31usize => (&INFO[141usize], entry), - 32usize => (&INFO[143usize], entry), - 33usize => (&INFO[147usize], entry), - 34usize => (&INFO[149usize], entry), - 35usize => (&INFO[151usize], entry), - 36usize => (&INFO[153usize], entry), - 37usize => (&INFO[155usize], entry), + 21usize => (&INFO[122usize], entry), + 22usize => (&INFO[123usize], entry), + 23usize => (&INFO[124usize], entry), + 24usize => (&INFO[126usize], entry), + 25usize => (&INFO[127usize], entry), + 26usize => (&INFO[129usize], entry), + 27usize => (&INFO[130usize], entry), + 28usize => (&INFO[136usize], entry), + 29usize => (&INFO[138usize], entry), + 30usize => (&INFO[140usize], entry), + 31usize => (&INFO[142usize], entry), + 32usize => (&INFO[144usize], entry), + 33usize => (&INFO[148usize], entry), + 34usize => (&INFO[150usize], entry), + 35usize => (&INFO[152usize], entry), + 36usize => (&INFO[154usize], entry), + 37usize => (&INFO[156usize], entry), _ => unsafe { core::hint::unreachable_unchecked() }, }) } @@ -1925,8 +1933,8 @@ impl Subscriber { 10usize => (&INFO[110usize], entry), 11usize => (&INFO[111usize], entry), 12usize => (&INFO[112usize], entry), - 13usize => (&INFO[115usize], entry), - 14usize => (&INFO[160usize], entry), + 13usize => (&INFO[116usize], entry), + 14usize => (&INFO[161usize], entry), _ => unsafe { core::hint::unreachable_unchecked() }, }) } @@ -2764,6 +2772,20 @@ impl event::Subscriber for Subscriber { let _ = event; } #[inline] + fn on_dc_path_created( + &mut self, + context: &mut Self::ConnectionContext, + meta: &api::ConnectionMeta, + event: &api::DcPathCreated, + ) { + #[allow(unused_imports)] + use api::*; + self.count(114usize, 50usize, 1usize); + let _ = context; + let _ = meta; + let _ = event; + } + #[inline] fn on_connection_closed( &mut self, context: &mut Self::ConnectionContext, @@ -2772,13 +2794,13 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(114usize, 50usize, 1usize); + self.count(115usize, 51usize, 1usize); self.time( - 115usize, + 116usize, 13usize, meta.timestamp.saturating_duration_since(context.start_time), ); - self.count_nominal(116usize, 26usize, &event.error); + self.count_nominal(117usize, 26usize, &event.error); let _ = context; let _ = meta; let _ = event; @@ -2791,7 +2813,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(117usize, 51usize, 1usize); + self.count(118usize, 52usize, 1usize); let _ = event; let _ = meta; } @@ -2803,7 +2825,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(118usize, 52usize, 1usize); + self.count(119usize, 53usize, 1usize); let _ = event; let _ = meta; } @@ -2815,7 +2837,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(119usize, 53usize, 1usize); + self.count(120usize, 54usize, 1usize); let _ = event; let _ = meta; } @@ -2827,10 +2849,10 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(120usize, 54usize, 1usize); - self.measure(121usize, 21usize, event.len); - self.measure(122usize, 22usize, event.len); - self.measure(123usize, 23usize, event.gso_offset); + self.count(121usize, 55usize, 1usize); + self.measure(122usize, 21usize, event.len); + self.measure(123usize, 22usize, event.len); + self.measure(124usize, 23usize, event.gso_offset); let _ = event; let _ = meta; } @@ -2842,9 +2864,9 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(124usize, 55usize, 1usize); - self.measure(125usize, 24usize, event.len); - self.measure(126usize, 25usize, event.len); + self.count(125usize, 56usize, 1usize); + self.measure(126usize, 24usize, event.len); + self.measure(127usize, 25usize, event.len); let _ = event; let _ = meta; } @@ -2856,10 +2878,10 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(127usize, 56usize, 1usize); - self.measure(128usize, 26usize, event.len); - self.measure(129usize, 27usize, event.len); - self.count_nominal(130usize, 27usize, &event.reason); + self.count(128usize, 57usize, 1usize); + self.measure(129usize, 26usize, event.len); + self.measure(130usize, 27usize, event.len); + self.count_nominal(131usize, 27usize, &event.reason); let _ = event; let _ = meta; } @@ -2871,8 +2893,8 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(131usize, 57usize, 1usize); - self.count_nominal(132usize, 28usize, &event.error); + self.count(132usize, 58usize, 1usize); + self.count_nominal(133usize, 28usize, &event.error); let _ = event; let _ = meta; } @@ -2880,17 +2902,17 @@ impl event::Subscriber for Subscriber { fn on_platform_tx(&mut self, meta: &api::EndpointMeta, event: &api::PlatformTx) { #[allow(unused_imports)] use api::*; - self.count(133usize, 58usize, 1usize); - self.count(134usize, 59usize, event.count); - self.measure(135usize, 28usize, event.count); - self.count(136usize, 60usize, event.syscalls); - self.measure(137usize, 29usize, event.syscalls); - self.count(138usize, 61usize, event.blocked_syscalls); - self.measure(139usize, 30usize, event.blocked_syscalls); - self.count(140usize, 62usize, event.total_errors); - self.measure(141usize, 31usize, event.total_errors); - self.count(142usize, 63usize, event.dropped_errors); - self.measure(143usize, 32usize, event.dropped_errors); + self.count(134usize, 59usize, 1usize); + self.count(135usize, 60usize, event.count); + self.measure(136usize, 28usize, event.count); + self.count(137usize, 61usize, event.syscalls); + self.measure(138usize, 29usize, event.syscalls); + self.count(139usize, 62usize, event.blocked_syscalls); + self.measure(140usize, 30usize, event.blocked_syscalls); + self.count(141usize, 63usize, event.total_errors); + self.measure(142usize, 31usize, event.total_errors); + self.count(143usize, 64usize, event.dropped_errors); + self.measure(144usize, 32usize, event.dropped_errors); let _ = event; let _ = meta; } @@ -2898,7 +2920,7 @@ impl event::Subscriber for Subscriber { fn on_platform_tx_error(&mut self, meta: &api::EndpointMeta, event: &api::PlatformTxError) { #[allow(unused_imports)] use api::*; - self.count(144usize, 64usize, 1usize); + self.count(145usize, 65usize, 1usize); let _ = event; let _ = meta; } @@ -2906,17 +2928,17 @@ impl event::Subscriber for Subscriber { fn on_platform_rx(&mut self, meta: &api::EndpointMeta, event: &api::PlatformRx) { #[allow(unused_imports)] use api::*; - self.count(145usize, 65usize, 1usize); - self.count(146usize, 66usize, event.count); - self.measure(147usize, 33usize, event.count); - self.count(148usize, 67usize, event.syscalls); - self.measure(149usize, 34usize, event.syscalls); - self.count(150usize, 68usize, event.blocked_syscalls); - self.measure(151usize, 35usize, event.blocked_syscalls); - self.count(152usize, 69usize, event.total_errors); - self.measure(153usize, 36usize, event.total_errors); - self.count(154usize, 70usize, event.dropped_errors); - self.measure(155usize, 37usize, event.dropped_errors); + self.count(146usize, 66usize, 1usize); + self.count(147usize, 67usize, event.count); + self.measure(148usize, 33usize, event.count); + self.count(149usize, 68usize, event.syscalls); + self.measure(150usize, 34usize, event.syscalls); + self.count(151usize, 69usize, event.blocked_syscalls); + self.measure(152usize, 35usize, event.blocked_syscalls); + self.count(153usize, 70usize, event.total_errors); + self.measure(154usize, 36usize, event.total_errors); + self.count(155usize, 71usize, event.dropped_errors); + self.measure(156usize, 37usize, event.dropped_errors); let _ = event; let _ = meta; } @@ -2924,7 +2946,7 @@ impl event::Subscriber for Subscriber { fn on_platform_rx_error(&mut self, meta: &api::EndpointMeta, event: &api::PlatformRxError) { #[allow(unused_imports)] use api::*; - self.count(156usize, 71usize, 1usize); + self.count(157usize, 72usize, 1usize); let _ = event; let _ = meta; } @@ -2936,7 +2958,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(157usize, 72usize, 1usize); + self.count(158usize, 73usize, 1usize); let _ = event; let _ = meta; } @@ -2948,7 +2970,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(158usize, 73usize, 1usize); + self.count(159usize, 74usize, 1usize); let _ = event; let _ = meta; } @@ -2960,8 +2982,8 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(159usize, 74usize, 1usize); - self.time(160usize, 14usize, event.processing_duration); + self.count(160usize, 75usize, 1usize); + self.time(161usize, 14usize, event.processing_duration); let _ = event; let _ = meta; } @@ -2973,7 +2995,7 @@ impl event::Subscriber for Subscriber { ) { #[allow(unused_imports)] use api::*; - self.count(161usize, 75usize, 1usize); + self.count(162usize, 76usize, 1usize); let _ = event; let _ = meta; } diff --git a/quic/s2n-quic-core/src/event/generated/metrics/probe.rs b/quic/s2n-quic-core/src/event/generated/metrics/probe.rs index 87a63f5c5..4262b3544 100644 --- a/quic/s2n-quic-core/src/event/generated/metrics/probe.rs +++ b/quic/s2n-quic-core/src/event/generated/metrics/probe.rs @@ -69,32 +69,33 @@ mod counter { 102usize => Self(pacing_rate_updated), 106usize => Self(bbr_state_changed), 108usize => Self(dc_state_changed), - 114usize => Self(connection_closed), - 117usize => Self(version_information), - 118usize => Self(endpoint_packet_sent), - 119usize => Self(endpoint_packet_received), - 120usize => Self(endpoint_datagram_sent), - 124usize => Self(endpoint_datagram_received), - 127usize => Self(endpoint_datagram_dropped), - 131usize => Self(endpoint_connection_attempt_failed), - 133usize => Self(platform_tx), - 134usize => Self(platform_tx__packets__total), - 136usize => Self(platform_tx__syscalls__total), - 138usize => Self(platform_tx__syscalls__blocked__total), - 140usize => Self(platform_tx__errors__total), - 142usize => Self(platform_tx__errors__dropped__total), - 144usize => Self(platform_tx_error), - 145usize => Self(platform_rx), - 146usize => Self(platform_rx__packets__total), - 148usize => Self(platform_rx__syscalls__total), - 150usize => Self(platform_rx__syscalls__blocked__total), - 152usize => Self(platform_rx__errors__total), - 154usize => Self(platform_rx__errors__dropped__total), - 156usize => Self(platform_rx_error), - 157usize => Self(platform_feature_configured), - 158usize => Self(platform_event_loop_wakeup), - 159usize => Self(platform_event_loop_sleep), - 161usize => Self(platform_event_loop_started), + 114usize => Self(dc_path_created), + 115usize => Self(connection_closed), + 118usize => Self(version_information), + 119usize => Self(endpoint_packet_sent), + 120usize => Self(endpoint_packet_received), + 121usize => Self(endpoint_datagram_sent), + 125usize => Self(endpoint_datagram_received), + 128usize => Self(endpoint_datagram_dropped), + 132usize => Self(endpoint_connection_attempt_failed), + 134usize => Self(platform_tx), + 135usize => Self(platform_tx__packets__total), + 137usize => Self(platform_tx__syscalls__total), + 139usize => Self(platform_tx__syscalls__blocked__total), + 141usize => Self(platform_tx__errors__total), + 143usize => Self(platform_tx__errors__dropped__total), + 145usize => Self(platform_tx_error), + 146usize => Self(platform_rx), + 147usize => Self(platform_rx__packets__total), + 149usize => Self(platform_rx__syscalls__total), + 151usize => Self(platform_rx__syscalls__blocked__total), + 153usize => Self(platform_rx__errors__total), + 155usize => Self(platform_rx__errors__dropped__total), + 157usize => Self(platform_rx_error), + 158usize => Self(platform_feature_configured), + 159usize => Self(platform_event_loop_wakeup), + 160usize => Self(platform_event_loop_sleep), + 162usize => Self(platform_event_loop_started), _ => unreachable!("invalid info: {info:?}"), } } @@ -206,6 +207,8 @@ mod counter { fn bbr_state_changed(value: u64); # [link_name = s2n_quic__event__counter__dc_state_changed] fn dc_state_changed(value: u64); + # [link_name = s2n_quic__event__counter__dc_path_created] + fn dc_path_created(value: u64); # [link_name = s2n_quic__event__counter__connection_closed] fn connection_closed(value: u64); # [link_name = s2n_quic__event__counter__version_information] @@ -324,9 +327,9 @@ mod counter { 98usize => Self(slow_start_exited__cause), 107usize => Self(bbr_state_changed__state), 113usize => Self(dc_state_changed__state), - 116usize => Self(connection_closed__error), - 130usize => Self(endpoint_datagram_dropped__reason), - 132usize => Self(endpoint_connection_attempt_failed__error), + 117usize => Self(connection_closed__error), + 131usize => Self(endpoint_datagram_dropped__reason), + 133usize => Self(endpoint_connection_attempt_failed__error), _ => unreachable!("invalid info: {info:?}"), } } @@ -458,23 +461,23 @@ mod measure { 103usize => Self(pacing_rate_updated__bytes_per_second), 104usize => Self(pacing_rate_updated__burst_size), 105usize => Self(pacing_rate_updated__pacing_gain), - 121usize => Self(endpoint_datagram_sent__bytes), - 122usize => Self(endpoint_datagram_sent__bytes__total), - 123usize => Self(endpoint_datagram_sent__gso_offset), - 125usize => Self(endpoint_datagram_received__bytes), - 126usize => Self(endpoint_datagram_received__bytes__total), - 128usize => Self(endpoint_datagram_dropped__bytes), - 129usize => Self(endpoint_datagram_dropped__bytes__total), - 135usize => Self(platform_tx__packets), - 137usize => Self(platform_tx__syscalls), - 139usize => Self(platform_tx__syscalls__blocked), - 141usize => Self(platform_tx__errors), - 143usize => Self(platform_tx__errors__dropped), - 147usize => Self(platform_rx__packets), - 149usize => Self(platform_rx__syscalls), - 151usize => Self(platform_rx__syscalls__blocked), - 153usize => Self(platform_rx__errors), - 155usize => Self(platform_rx__errors__dropped), + 122usize => Self(endpoint_datagram_sent__bytes), + 123usize => Self(endpoint_datagram_sent__bytes__total), + 124usize => Self(endpoint_datagram_sent__gso_offset), + 126usize => Self(endpoint_datagram_received__bytes), + 127usize => Self(endpoint_datagram_received__bytes__total), + 129usize => Self(endpoint_datagram_dropped__bytes), + 130usize => Self(endpoint_datagram_dropped__bytes__total), + 136usize => Self(platform_tx__packets), + 138usize => Self(platform_tx__syscalls), + 140usize => Self(platform_tx__syscalls__blocked), + 142usize => Self(platform_tx__errors), + 144usize => Self(platform_tx__errors__dropped), + 148usize => Self(platform_rx__packets), + 150usize => Self(platform_rx__syscalls), + 152usize => Self(platform_rx__syscalls__blocked), + 154usize => Self(platform_rx__errors), + 156usize => Self(platform_rx__errors__dropped), _ => unreachable!("invalid info: {info:?}"), } } @@ -602,8 +605,8 @@ mod timer { 110usize => Self(dc_state_changed__no_version_negotiated__latency), 111usize => Self(dc_state_changed__path_secrets__latency), 112usize => Self(dc_state_changed__complete__latency), - 115usize => Self(connection_closed__latency), - 160usize => Self(platform_event_loop_sleep__processing_duration), + 116usize => Self(connection_closed__latency), + 161usize => Self(platform_event_loop_sleep__processing_duration), _ => unreachable!("invalid info: {info:?}"), } } diff --git a/quic/s2n-quic-transport/src/space/session_context.rs b/quic/s2n-quic-transport/src/space/session_context.rs index 438b18e1f..214cb9053 100644 --- a/quic/s2n-quic-transport/src/space/session_context.rs +++ b/quic/s2n-quic-transport/src/space/session_context.rs @@ -31,7 +31,7 @@ use s2n_quic_core::{ dc::{self, Endpoint as _}, event::{ self, - builder::{DcState, DcStateChanged}, + builder::{DcPathCreated, DcState, DcStateChanged}, IntoEvent, }, packet::number::PacketNumberSpace, @@ -474,6 +474,12 @@ impl Config::ENDPOINT_TYPE.into_event(), ); let dc_path = self.dc.new_path(&conn_info); + + // &mut would be ideal but events currently need to be `Clone`, and we're OK with + // pushing interior mutability for now. dc is all unstable anyway. + self.publisher + .on_dc_path_created(DcPathCreated { path: &dc_path }); + crate::dc::Manager::new(dc_path, dc_version, self.publisher) } else { if Config::DcEndpoint::ENABLED { From 4893953cb362a77f9b8e0a0cb2e69991bb0d0ed1 Mon Sep 17 00:00:00 2001 From: Mark Rousskov Date: Wed, 5 Mar 2025 15:08:41 +0000 Subject: [PATCH 2/3] Bless snaphosts --- .../snapshots/tests__dc__dc_handshake_self_test__events.snap | 2 ++ ...s__dc__dc_mtls_handshake_auth_failure_self_test__events.snap | 2 ++ .../tests__dc__dc_mtls_handshake_self_test__events.snap | 2 ++ .../tests__dc__dc_not_secret_control_packet__events.snap | 2 ++ .../snapshots/tests__dc__dc_secret_control_packet__events.snap | 2 ++ 5 files changed, 10 insertions(+) diff --git a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_handshake_self_test__events.snap b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_handshake_self_test__events.snap index 79fa6d408..56685073f 100644 --- a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_handshake_self_test__events.snap +++ b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_handshake_self_test__events.snap @@ -118,6 +118,7 @@ count#frame_received.frame|PADDING=1 count#application_protocol_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=99.999ms +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=99.999ms timer#dc_state_changed.no_version_negotiated.latency=99.999ms @@ -465,6 +466,7 @@ count#application_protocol_information=1 count#server_name_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=1µs +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=1µs timer#dc_state_changed.no_version_negotiated.latency=1µs diff --git a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_auth_failure_self_test__events.snap b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_auth_failure_self_test__events.snap index 2df227bec..3403d95ac 100644 --- a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_auth_failure_self_test__events.snap +++ b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_auth_failure_self_test__events.snap @@ -123,6 +123,7 @@ count#frame_received.frame|CRYPTO=1 count#application_protocol_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=99.999ms +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=99.999ms timer#dc_state_changed.no_version_negotiated.latency=99.999ms @@ -316,6 +317,7 @@ count#application_protocol_information=1 count#server_name_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=1µs +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=1µs timer#dc_state_changed.no_version_negotiated.latency=1µs diff --git a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_self_test__events.snap b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_self_test__events.snap index 60de1e8fa..d4e5b18cf 100644 --- a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_self_test__events.snap +++ b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_mtls_handshake_self_test__events.snap @@ -123,6 +123,7 @@ count#frame_received.frame|CRYPTO=1 count#application_protocol_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=99.999ms +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=99.999ms timer#dc_state_changed.no_version_negotiated.latency=99.999ms @@ -470,6 +471,7 @@ count#application_protocol_information=1 count#server_name_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=1µs +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=1µs timer#dc_state_changed.no_version_negotiated.latency=1µs diff --git a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_not_secret_control_packet__events.snap b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_not_secret_control_packet__events.snap index ec98d7d33..6e0287b7d 100644 --- a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_not_secret_control_packet__events.snap +++ b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_not_secret_control_packet__events.snap @@ -123,6 +123,7 @@ count#frame_received.frame|CRYPTO=1 count#application_protocol_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=99.999ms +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=99.999ms timer#dc_state_changed.no_version_negotiated.latency=99.999ms @@ -565,6 +566,7 @@ count#application_protocol_information=1 count#server_name_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=1µs +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=1µs timer#dc_state_changed.no_version_negotiated.latency=1µs diff --git a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_secret_control_packet__events.snap b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_secret_control_packet__events.snap index 1ddaacf9c..72c716ae7 100644 --- a/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_secret_control_packet__events.snap +++ b/quic/s2n-quic/src/tests/snapshots/tests__dc__dc_secret_control_packet__events.snap @@ -123,6 +123,7 @@ count#frame_received.frame|CRYPTO=1 count#application_protocol_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=99.999ms +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=99.999ms timer#dc_state_changed.no_version_negotiated.latency=99.999ms @@ -561,6 +562,7 @@ count#application_protocol_information=1 count#server_name_information=1 count#transport_parameters_received=1 timer#transport_parameters_received.latency=1µs +count#dc_path_created=1 count#dc_state_changed=1 timer#dc_state_changed.version_negotiated.latency=1µs timer#dc_state_changed.no_version_negotiated.latency=1µs From 4c841f6c32ea7a71ce9c472310e4399017aa54ff Mon Sep 17 00:00:00 2001 From: Mark Rousskov Date: Wed, 5 Mar 2025 15:19:47 +0000 Subject: [PATCH 3/3] Fix Rust target detection --- dc/wireshark/generate-bindings.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/dc/wireshark/generate-bindings.sh b/dc/wireshark/generate-bindings.sh index 0cc31b326..a287a78b2 100755 --- a/dc/wireshark/generate-bindings.sh +++ b/dc/wireshark/generate-bindings.sh @@ -79,7 +79,7 @@ OPTIONS=( mkdir -p src/wireshark_sys/ -RUST_TARGET=$(rustup show | awk 'NF' | awk 'END{print $2}') +RUST_TARGET=$(rustc -vV | grep release: | awk '{ print $2 }') # This list is filtered to roughly what our current usage requires. # It's possible there's a better way to do this -- some of the Wireshark