Skip to content

Commit 1bb46ff

Browse files
committed
feat(s2n-quic-dc): add map events
1 parent afc56cd commit 1bb46ff

File tree

16 files changed

+3023
-381
lines changed

16 files changed

+3023
-381
lines changed

dc/s2n-quic-dc/events/common.rs

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
struct ConnectionMeta {
5+
id: u64,
6+
}
7+
8+
struct EndpointMeta {}
9+
10+
struct ConnectionInfo {}

dc/s2n-quic-dc/events/map.rs

+176
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,176 @@
1+
// Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
2+
// SPDX-License-Identifier: Apache-2.0
3+
4+
#[event("path_secret_map:initialized")]
5+
#[subject(endpoint)]
6+
struct PathSecretMapInitialized {
7+
/// The capacity of the path secret map
8+
capacity: usize,
9+
10+
/// The port that the path secret is listening on
11+
control_socket_port: u16,
12+
}
13+
14+
#[event("path_secret_map:uninitialized")]
15+
#[subject(endpoint)]
16+
struct PathSecretMapUninitialized {
17+
/// The capacity of the path secret map
18+
capacity: usize,
19+
20+
/// The port that the path secret is listening on
21+
control_socket_port: u16,
22+
23+
/// The number of entries in the map
24+
entries: usize,
25+
}
26+
27+
#[event("path_secret_map:background_handshake_requested")]
28+
#[subject(endpoint)]
29+
/// Emitted when a background handshake is requested
30+
struct PathSecretMapBackgroundHandshakeRequested<'a> {
31+
peer_address: SocketAddress<'a>,
32+
}
33+
34+
#[event("path_secret_map:entry_replaced")]
35+
#[subject(endpoint)]
36+
/// Emitted when the entry is inserted into the path secret map
37+
struct PathSecretMapEntryInserted<'a> {
38+
peer_address: SocketAddress<'a>,
39+
40+
credential_id: &'a [u8],
41+
}
42+
43+
#[event("path_secret_map:entry_replaced")]
44+
#[subject(endpoint)]
45+
/// Emitted when the entry is considered ready for use
46+
struct PathSecretMapEntryReady<'a> {
47+
peer_address: SocketAddress<'a>,
48+
49+
credential_id: &'a [u8],
50+
}
51+
52+
#[event("path_secret_map:entry_replaced")]
53+
#[subject(endpoint)]
54+
/// Emitted when an entry is replaced by a new one for the same `peer_address`
55+
struct PathSecretMapEntryReplaced<'a> {
56+
peer_address: SocketAddress<'a>,
57+
58+
new_credential_id: &'a [u8],
59+
60+
previous_credential_id: &'a [u8],
61+
}
62+
63+
#[event("path_secret_map:unknown_path_secret_packet_sent")]
64+
#[subject(endpoint)]
65+
/// Emitted when an UnknownPathSecret packet was sent
66+
struct UnknownPathSecretPacketSent<'a> {
67+
peer_address: SocketAddress<'a>,
68+
credential_id: &'a [u8],
69+
}
70+
71+
#[event("path_secret_map:unknown_path_secret_packet_received")]
72+
#[subject(endpoint)]
73+
/// Emitted when an UnknownPathSecret packet was received
74+
struct UnknownPathSecretPacketReceived<'a> {
75+
peer_address: SocketAddress<'a>,
76+
credential_id: &'a [u8],
77+
}
78+
79+
#[event("path_secret_map:unknown_path_secret_packet_accepted")]
80+
#[subject(endpoint)]
81+
/// Emitted when an UnknownPathSecret packet was authentic and processed
82+
struct UnknownPathSecretPacketAccepted<'a> {
83+
peer_address: SocketAddress<'a>,
84+
credential_id: &'a [u8],
85+
}
86+
87+
#[event("path_secret_map:unknown_path_secret_packet_rejected")]
88+
#[subject(endpoint)]
89+
/// Emitted when an UnknownPathSecret packet was rejected as invalid
90+
struct UnknownPathSecretPacketRejected<'a> {
91+
peer_address: SocketAddress<'a>,
92+
credential_id: &'a [u8],
93+
}
94+
95+
#[event("path_secret_map:replay_definitely_detected")]
96+
#[subject(endpoint)]
97+
/// Emitted when credential replay was definitely detected
98+
struct ReplayDefinitelyDetected<'a> {
99+
credential_id: &'a [u8],
100+
key_id: u64,
101+
}
102+
103+
#[event("path_secret_map:replay_potentially_detected")]
104+
#[subject(endpoint)]
105+
/// Emitted when credential replay was potentially detected, but could not be verified
106+
/// due to a limiting tracking window
107+
struct ReplayPotentiallyDetected<'a> {
108+
credential_id: &'a [u8],
109+
key_id: u64,
110+
gap: u64,
111+
}
112+
113+
#[event("path_secret_map:replay_detected_packet_sent")]
114+
#[subject(endpoint)]
115+
/// Emitted when an ReplayDetected packet was sent
116+
struct ReplayDetectedPacketSent<'a> {
117+
peer_address: SocketAddress<'a>,
118+
credential_id: &'a [u8],
119+
}
120+
121+
#[event("path_secret_map:replay_detected_packet_received")]
122+
#[subject(endpoint)]
123+
/// Emitted when an ReplayDetected packet was received
124+
struct ReplayDetectedPacketReceived<'a> {
125+
peer_address: SocketAddress<'a>,
126+
credential_id: &'a [u8],
127+
}
128+
129+
#[event("path_secret_map:replay_detected_packet_accepted")]
130+
#[subject(endpoint)]
131+
/// Emitted when an StaleKey packet was authentic and processed
132+
struct ReplayDetectedPacketAccepted<'a> {
133+
peer_address: SocketAddress<'a>,
134+
credential_id: &'a [u8],
135+
key_id: u64,
136+
}
137+
138+
#[event("path_secret_map:replay_detected_packet_rejected")]
139+
#[subject(endpoint)]
140+
/// Emitted when an ReplayDetected packet was rejected as invalid
141+
struct ReplayDetectedPacketRejected<'a> {
142+
peer_address: SocketAddress<'a>,
143+
credential_id: &'a [u8],
144+
}
145+
146+
#[event("path_secret_map:stale_key_packet_sent")]
147+
#[subject(endpoint)]
148+
/// Emitted when an StaleKey packet was sent
149+
struct StaleKeyPacketSent<'a> {
150+
peer_address: SocketAddress<'a>,
151+
credential_id: &'a [u8],
152+
}
153+
154+
#[event("path_secret_map:stale_key_packet_received")]
155+
#[subject(endpoint)]
156+
/// Emitted when an StaleKey packet was received
157+
struct StaleKeyPacketReceived<'a> {
158+
peer_address: SocketAddress<'a>,
159+
credential_id: &'a [u8],
160+
}
161+
162+
#[event("path_secret_map:stale_key_packet_accepted")]
163+
#[subject(endpoint)]
164+
/// Emitted when an StaleKey packet was authentic and processed
165+
struct StaleKeyPacketAccepted<'a> {
166+
peer_address: SocketAddress<'a>,
167+
credential_id: &'a [u8],
168+
}
169+
170+
#[event("path_secret_map:stale_key_packet_rejected")]
171+
#[subject(endpoint)]
172+
/// Emitted when an StaleKey packet was rejected as invalid
173+
struct StaleKeyPacketRejected<'a> {
174+
peer_address: SocketAddress<'a>,
175+
credential_id: &'a [u8],
176+
}

dc/s2n-quic-dc/src/event.rs

+21-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,27 @@
44
#[cfg(any(test, feature = "testing"))]
55
use s2n_quic_core::event::snapshot;
66

7-
pub use s2n_quic_core::event::{Event, IntoEvent, Timestamp};
7+
pub use s2n_quic_core::event::{Event, IntoEvent};
8+
9+
/// Provides metadata related to an event
10+
pub trait Meta: core::fmt::Debug {
11+
/// A context from which the event is being emitted
12+
///
13+
/// An event can occur in the context of an Endpoint or Connection
14+
fn subject(&self) -> api::Subject;
15+
}
16+
17+
impl Meta for api::ConnectionMeta {
18+
fn subject(&self) -> api::Subject {
19+
builder::Subject::Connection { id: self.id }.into_event()
20+
}
21+
}
22+
23+
impl Meta for api::EndpointMeta {
24+
fn subject(&self) -> api::Subject {
25+
builder::Subject::Endpoint {}.into_event()
26+
}
27+
}
828

929
mod generated;
1030
pub use generated::*;

0 commit comments

Comments
 (0)