#[non_exhaustive]pub struct QuicInitial {
pub version: QuicVersion,
pub dcid: Vec<u8>,
pub scid: Vec<u8>,
pub token_present: bool,
pub sni: Option<String>,
pub alpn: Vec<String>,
pub client_hello: Option<TlsClientHello>,
}quic only.Expand description
One decoded QUIC Initial packet with its TLS ClientHello extracted.
Fields (Non-exhaustive)§
This struct is marked as non-exhaustive
Struct { .. } syntax; cannot be matched against without a wildcard ..; and struct update syntax will not work.version: QuicVersionQUIC version. Use QuicVersion::is_v1 /
QuicVersion::is_v2 for routing.
dcid: Vec<u8>§scid: Vec<u8>§token_present: booltrue when a Retry token was attached.
sni: Option<String>Server Name Indication extracted from the TLS
ClientHello extension. None when the ClientHello
was present but lacked an SNI extension.
alpn: Vec<String>ALPN protocol identifiers from the TLS ClientHello
extension (e.g. ["h3", "h3-29"]). Empty when the
extension was absent.
client_hello: Option<TlsClientHello>tls only.The full TLS ClientHello recovered from the Initial’s
CRYPTO stream — present only when the tls feature is also
enabled (issue #82). Carries the cipher / extension /
version lists JA4 needs; feed it to crate::tls::ja4_quic
or use the crate::quic::ja4 convenience. None when the
CRYPTO stream held no parseable ClientHello.
Trait Implementations§
Source§impl Clone for QuicInitial
impl Clone for QuicInitial
Source§impl Debug for QuicInitial
impl Debug for QuicInitial
Source§impl<'de> Deserialize<'de> for QuicInitial
Available on crate feature serde only.
impl<'de> Deserialize<'de> for QuicInitial
serde only.Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for QuicInitial
Source§impl PartialEq for QuicInitial
impl PartialEq for QuicInitial
Source§impl Serialize for QuicInitial
Available on crate feature serde only.
impl Serialize for QuicInitial
serde only.