Struct EnhancedPacketBlock

Source
pub struct EnhancedPacketBlock<'a> {
    pub block_type: u32,
    pub block_len1: u32,
    pub if_id: u32,
    pub ts_high: u32,
    pub ts_low: u32,
    pub caplen: u32,
    pub origlen: u32,
    pub data: &'a [u8],
    pub options: Vec<PcapNGOption<'a>>,
    pub block_len2: u32,
}
Expand description

An Enhanced Packet Block (EPB) is the standard container for storing the packets coming from the network.

This struct is a thin abstraction layer, and stores the raw block data. For ex the data field is stored with the padding. It implements the PcapNGPacketBlock trait, which provides helper functions.

§Examples

use pcap_parser::pcapng::parse_enhancedpacketblock_le;
use pcap_parser::traits::PcapNGPacketBlock;

let (i, epb) = parse_enhancedpacketblock_le(pcap_data).unwrap();
let packet_data = epb.packet_data();
if packet_data.len() < epb.orig_len() as usize {
    // packet was truncated
} else {
    // we have a full packet
}

Fields§

§block_type: u32§block_len1: u32§if_id: u32§ts_high: u32§ts_low: u32§caplen: u32

Captured packet length

§origlen: u32

Original packet length

§data: &'a [u8]

Raw data from packet (with padding)

§options: Vec<PcapNGOption<'a>>§block_len2: u32

Implementations§

Source§

impl EnhancedPacketBlock<'_>

Source

pub fn decode_ts(&self, ts_offset: u64, resolution: u64) -> (u32, u32)

Decode the packet timestamp

To decode the timestamp, the raw values if_tsresol and if_tsoffset are required. These values are stored as options in the InterfaceDescriptionBlock matching the interface ID.

Return the timestamp seconds and fractional part (in resolution units)

Source

pub fn decode_ts_f64(&self, ts_offset: u64, resolution: u64) -> f64

Decode the packet timestamp as f64

To decode the timestamp, the resolution and offset are required. These values are stored as options in the InterfaceDescriptionBlock matching the interface ID.

Trait Implementations§

Source§

impl<'a> Debug for EnhancedPacketBlock<'a>

Source§

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

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

impl PcapNGPacketBlock for EnhancedPacketBlock<'_>

Source§

fn big_endian(&self) -> bool

Return true if block is encoded as big-endian
Source§

fn truncated(&self) -> bool

Return true if block data was truncated (typically when snaplen < origlen)
Source§

fn orig_len(&self) -> u32

Return the original length of the packet
Source§

fn raw_packet_data(&self) -> &[u8]

Return the raw captured packet data, with padding if present, and eventually truncated.
Source§

fn packet_data(&self) -> &[u8]

Return the captured packet data without padding Read more
Source§

impl ToVec for EnhancedPacketBlock<'_>

Available on crate feature serialize only.
Source§

fn fix(&mut self)

Check and correct all fields: use magic, version and fix lengths fields

Source§

fn to_vec_raw(&self) -> Result<Vec<u8>, GenError>

Serialize to bytes representation (little-endian). Do not check values
Source§

fn to_vec(&mut self) -> Result<Vec<u8>, GenError>

Serialize to bytes representation (little-endian). Check values and fix all fields before serializing.

Auto Trait Implementations§

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> 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, 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.