pub enum BuiltinProtocol {
Show 25 variants
Ethernet(EthernetProtocol),
LinuxSll(LinuxSllProtocol),
Arp(ArpProtocol),
Vlan(VlanProtocol),
Mpls(MplsProtocol),
Ipv4(Ipv4Protocol),
Ipv6(Ipv6Protocol),
Tcp(TcpProtocol),
Udp(UdpProtocol),
Icmp(IcmpProtocol),
Icmpv6(Icmpv6Protocol),
Gre(GreProtocol),
Vxlan(VxlanProtocol),
Gtp(GtpProtocol),
Ipsec(IpsecProtocol),
Bgp(BgpProtocol),
Ospf(OspfProtocol),
Dns(DnsProtocol),
Dhcp(DhcpProtocol),
Ntp(NtpProtocol),
Tls(TlsProtocol),
Ssh(SshProtocol),
Quic(QuicProtocol),
Netlink(NetlinkProtocol),
Rtnetlink(RtnetlinkProtocol),
}Expand description
Enum of all built-in protocol parsers.
This enables static dispatch (no vtable overhead) for all built-in protocols. The compiler can inline match arms and optimize branch prediction.
Variants§
Ethernet(EthernetProtocol)
LinuxSll(LinuxSllProtocol)
Arp(ArpProtocol)
Vlan(VlanProtocol)
Mpls(MplsProtocol)
Ipv4(Ipv4Protocol)
Ipv6(Ipv6Protocol)
Tcp(TcpProtocol)
Udp(UdpProtocol)
Icmp(IcmpProtocol)
Icmpv6(Icmpv6Protocol)
Gre(GreProtocol)
Vxlan(VxlanProtocol)
Gtp(GtpProtocol)
Ipsec(IpsecProtocol)
Bgp(BgpProtocol)
Ospf(OspfProtocol)
Dns(DnsProtocol)
Dhcp(DhcpProtocol)
Ntp(NtpProtocol)
Tls(TlsProtocol)
Ssh(SshProtocol)
Quic(QuicProtocol)
Netlink(NetlinkProtocol)
Rtnetlink(RtnetlinkProtocol)
Trait Implementations§
Source§impl Clone for BuiltinProtocol
impl Clone for BuiltinProtocol
Source§fn clone(&self) -> BuiltinProtocol
fn clone(&self) -> BuiltinProtocol
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for BuiltinProtocol
impl Debug for BuiltinProtocol
Source§impl From<ArpProtocol> for BuiltinProtocol
impl From<ArpProtocol> for BuiltinProtocol
Source§fn from(p: ArpProtocol) -> Self
fn from(p: ArpProtocol) -> Self
Converts to this type from the input type.
Source§impl From<BgpProtocol> for BuiltinProtocol
impl From<BgpProtocol> for BuiltinProtocol
Source§fn from(p: BgpProtocol) -> Self
fn from(p: BgpProtocol) -> Self
Converts to this type from the input type.
Source§impl From<DhcpProtocol> for BuiltinProtocol
impl From<DhcpProtocol> for BuiltinProtocol
Source§fn from(p: DhcpProtocol) -> Self
fn from(p: DhcpProtocol) -> Self
Converts to this type from the input type.
Source§impl From<DnsProtocol> for BuiltinProtocol
impl From<DnsProtocol> for BuiltinProtocol
Source§fn from(p: DnsProtocol) -> Self
fn from(p: DnsProtocol) -> Self
Converts to this type from the input type.
Source§impl From<EthernetProtocol> for BuiltinProtocol
Conversion traits for ergonomic registration.
impl From<EthernetProtocol> for BuiltinProtocol
Conversion traits for ergonomic registration.
Source§fn from(p: EthernetProtocol) -> Self
fn from(p: EthernetProtocol) -> Self
Converts to this type from the input type.
Source§impl From<GreProtocol> for BuiltinProtocol
impl From<GreProtocol> for BuiltinProtocol
Source§fn from(p: GreProtocol) -> Self
fn from(p: GreProtocol) -> Self
Converts to this type from the input type.
Source§impl From<GtpProtocol> for BuiltinProtocol
impl From<GtpProtocol> for BuiltinProtocol
Source§fn from(p: GtpProtocol) -> Self
fn from(p: GtpProtocol) -> Self
Converts to this type from the input type.
Source§impl From<IcmpProtocol> for BuiltinProtocol
impl From<IcmpProtocol> for BuiltinProtocol
Source§fn from(p: IcmpProtocol) -> Self
fn from(p: IcmpProtocol) -> Self
Converts to this type from the input type.
Source§impl From<Icmpv6Protocol> for BuiltinProtocol
impl From<Icmpv6Protocol> for BuiltinProtocol
Source§fn from(p: Icmpv6Protocol) -> Self
fn from(p: Icmpv6Protocol) -> Self
Converts to this type from the input type.
Source§impl From<IpsecProtocol> for BuiltinProtocol
impl From<IpsecProtocol> for BuiltinProtocol
Source§fn from(p: IpsecProtocol) -> Self
fn from(p: IpsecProtocol) -> Self
Converts to this type from the input type.
Source§impl From<Ipv4Protocol> for BuiltinProtocol
impl From<Ipv4Protocol> for BuiltinProtocol
Source§fn from(p: Ipv4Protocol) -> Self
fn from(p: Ipv4Protocol) -> Self
Converts to this type from the input type.
Source§impl From<Ipv6Protocol> for BuiltinProtocol
impl From<Ipv6Protocol> for BuiltinProtocol
Source§fn from(p: Ipv6Protocol) -> Self
fn from(p: Ipv6Protocol) -> Self
Converts to this type from the input type.
Source§impl From<LinuxSllProtocol> for BuiltinProtocol
impl From<LinuxSllProtocol> for BuiltinProtocol
Source§fn from(p: LinuxSllProtocol) -> Self
fn from(p: LinuxSllProtocol) -> Self
Converts to this type from the input type.
Source§impl From<MplsProtocol> for BuiltinProtocol
impl From<MplsProtocol> for BuiltinProtocol
Source§fn from(p: MplsProtocol) -> Self
fn from(p: MplsProtocol) -> Self
Converts to this type from the input type.
Source§impl From<NetlinkProtocol> for BuiltinProtocol
impl From<NetlinkProtocol> for BuiltinProtocol
Source§fn from(p: NetlinkProtocol) -> Self
fn from(p: NetlinkProtocol) -> Self
Converts to this type from the input type.
Source§impl From<NtpProtocol> for BuiltinProtocol
impl From<NtpProtocol> for BuiltinProtocol
Source§fn from(p: NtpProtocol) -> Self
fn from(p: NtpProtocol) -> Self
Converts to this type from the input type.
Source§impl From<OspfProtocol> for BuiltinProtocol
impl From<OspfProtocol> for BuiltinProtocol
Source§fn from(p: OspfProtocol) -> Self
fn from(p: OspfProtocol) -> Self
Converts to this type from the input type.
Source§impl From<QuicProtocol> for BuiltinProtocol
impl From<QuicProtocol> for BuiltinProtocol
Source§fn from(p: QuicProtocol) -> Self
fn from(p: QuicProtocol) -> Self
Converts to this type from the input type.
Source§impl From<RtnetlinkProtocol> for BuiltinProtocol
impl From<RtnetlinkProtocol> for BuiltinProtocol
Source§fn from(p: RtnetlinkProtocol) -> Self
fn from(p: RtnetlinkProtocol) -> Self
Converts to this type from the input type.
Source§impl From<SshProtocol> for BuiltinProtocol
impl From<SshProtocol> for BuiltinProtocol
Source§fn from(p: SshProtocol) -> Self
fn from(p: SshProtocol) -> Self
Converts to this type from the input type.
Source§impl From<TcpProtocol> for BuiltinProtocol
impl From<TcpProtocol> for BuiltinProtocol
Source§fn from(p: TcpProtocol) -> Self
fn from(p: TcpProtocol) -> Self
Converts to this type from the input type.
Source§impl From<TlsProtocol> for BuiltinProtocol
impl From<TlsProtocol> for BuiltinProtocol
Source§fn from(p: TlsProtocol) -> Self
fn from(p: TlsProtocol) -> Self
Converts to this type from the input type.
Source§impl From<UdpProtocol> for BuiltinProtocol
impl From<UdpProtocol> for BuiltinProtocol
Source§fn from(p: UdpProtocol) -> Self
fn from(p: UdpProtocol) -> Self
Converts to this type from the input type.
Source§impl From<VlanProtocol> for BuiltinProtocol
impl From<VlanProtocol> for BuiltinProtocol
Source§fn from(p: VlanProtocol) -> Self
fn from(p: VlanProtocol) -> Self
Converts to this type from the input type.
Source§impl From<VxlanProtocol> for BuiltinProtocol
impl From<VxlanProtocol> for BuiltinProtocol
Source§fn from(p: VxlanProtocol) -> Self
fn from(p: VxlanProtocol) -> Self
Converts to this type from the input type.
Source§impl Protocol for BuiltinProtocol
impl Protocol for BuiltinProtocol
Source§fn display_name(&self) -> &'static str
fn display_name(&self) -> &'static str
Human-readable display name.
Source§fn can_parse(&self, context: &ParseContext) -> Option<u32>
fn can_parse(&self, context: &ParseContext) -> Option<u32>
Check if this parser can handle the given context.
Returns a priority score (higher = more specific match).
Returns
None if this parser cannot handle the context.Source§fn parse<'a>(&self, data: &'a [u8], context: &ParseContext) -> ParseResult<'a>
fn parse<'a>(&self, data: &'a [u8], context: &ParseContext) -> ParseResult<'a>
Parse bytes into structured fields.
Source§fn schema_fields(&self) -> Vec<FieldDescriptor>
fn schema_fields(&self) -> Vec<FieldDescriptor>
Return the schema fields this protocol produces.
Source§fn child_protocols(&self) -> &[&'static str]
fn child_protocols(&self) -> &[&'static str]
Protocols that might follow this one.
Source§fn payload_mode(&self) -> PayloadMode
fn payload_mode(&self) -> PayloadMode
How should remaining bytes be handled after parsing? Read more
Source§fn dependencies(&self) -> &'static [&'static str]
fn dependencies(&self) -> &'static [&'static str]
Protocols that must be parsed before this one can be reached. Read more
Source§fn parse_projected<'a>(
&self,
data: &'a [u8],
context: &ParseContext,
fields: Option<&HashSet<String>>,
) -> ParseResult<'a>
fn parse_projected<'a>( &self, data: &'a [u8], context: &ParseContext, fields: Option<&HashSet<String>>, ) -> ParseResult<'a>
Parse with field projection - only extract requested fields. Read more
Source§fn cheap_fields(&self) -> &'static [&'static str]
fn cheap_fields(&self) -> &'static [&'static str]
Returns fields that are “cheap” to extract (header fields parsed anyway). Read more
Source§fn expensive_fields(&self) -> &'static [&'static str]
fn expensive_fields(&self) -> &'static [&'static str]
Returns fields that are “expensive” to extract. Read more
impl Copy for BuiltinProtocol
Auto Trait Implementations§
impl Freeze for BuiltinProtocol
impl RefUnwindSafe for BuiltinProtocol
impl Send for BuiltinProtocol
impl Sync for BuiltinProtocol
impl Unpin for BuiltinProtocol
impl UnwindSafe for BuiltinProtocol
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more