Packet

Struct Packet 

Source
pub struct Packet<'a> { /* private fields */ }

Implementations§

Source§

impl<'a> Packet<'a>

Source

pub fn from_bytes( buf: &'a [u8], link_type: LinkType, mode: ParseMode, ) -> Result<Self, PacketHeaderError>

Parse a packet from raw bytes using the specified link type and parse mode.

This method directly parses all protocol layers without using an iterator, collecting them into a structured Packet.

§Arguments
  • buf - The raw packet bytes
  • link_type - The link layer type of the packet
  • mode - Parse mode: Outermost ignores tunnels, Innermost parses through them

Returns a reference to the link layer header.

Source

pub fn arp(&self) -> Option<&ArpHeaderFull<'a>>

Returns a reference to the ARP header, if present.

Source

pub fn network(&self) -> Option<&NetworkLayer<'a>>

Returns a reference to the network layer header, if present.

Source

pub fn transport(&self) -> Option<&TransportLayer<'a>>

Returns a reference to the transport layer header, if present.

Source

pub fn tunnels(&self) -> &[NetworkTunnelLayer<'a>]

Returns a slice of IP tunnel layer headers.

Source

pub fn data(&self) -> &'a [u8]

Returns the remaining payload data after all parsed headers.

Trait Implementations§

Source§

impl<'a> Clone for Packet<'a>

Source§

fn clone(&self) -> Packet<'a>

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl<'a> Debug for Packet<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl<'a> Display for Packet<'a>

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl TryFrom<&Packet<'_>> for SmallVec<[VniLayer; 4]>

Convert a Packet to a VNI layer stack

This efficiently extracts VNI information from:

  1. Link layer (VLAN tags) - produces SmallVec<[VniLayer; 2]>
  2. Tunnel layers - each NetworkTunnelLayer converted to VniLayer

The result is the concatenation of link VNI layers followed by tunnel VNI layers. This operation may fail (returning Err(())) if any tunnel layer cannot be converted.

Source§

type Error = ()

The type returned in the event of a conversion error.
Source§

fn try_from(packet: &Packet<'_>) -> Result<Self, Self::Error>

Performs the conversion.

Auto Trait Implementations§

§

impl<'a> Freeze for Packet<'a>

§

impl<'a> RefUnwindSafe for Packet<'a>

§

impl<'a> Send for Packet<'a>

§

impl<'a> Sync for Packet<'a>

§

impl<'a> Unpin for Packet<'a>

§

impl<'a> UnwindSafe for Packet<'a>

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T> ToSmolStr for T
where T: Display + ?Sized,

Source§

impl<T> ToString for T
where T: Display + ?Sized,

Source§

fn to_string(&self) -> String

Converts the given value to a String. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.