Struct pcap_parser::pcapng::EnhancedPacketBlock[][src]

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

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: u32block_len1: u32if_id: u32ts_high: u32ts_low: u32caplen: 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

impl<'a> EnhancedPacketBlock<'a>[src]

pub fn decode_ts(&self, ts_offset: u64, ts_resol: u8) -> (u32, u32, u64)[src]

Decode the packet timestamp

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

impl<'a> Debug for EnhancedPacketBlock<'a>[src]

impl<'a> PcapNGPacketBlock for EnhancedPacketBlock<'a>[src]

impl<'a> ToVec for EnhancedPacketBlock<'a>[src]

fn fix(&mut self)[src]

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

Auto Trait Implementations

impl<'a> RefUnwindSafe for EnhancedPacketBlock<'a>

impl<'a> Send for EnhancedPacketBlock<'a>

impl<'a> Sync for EnhancedPacketBlock<'a>

impl<'a> Unpin for EnhancedPacketBlock<'a>

impl<'a> UnwindSafe for EnhancedPacketBlock<'a>

Blanket Implementations

impl<T> Any for T where
    T: 'static + ?Sized
[src]

impl<T> Borrow<T> for T where
    T: ?Sized
[src]

impl<T> BorrowMut<T> for T where
    T: ?Sized
[src]

impl<T> Conv for T

impl<T> Conv for T

impl<T> FmtForward for T

impl<T> From<T> for T[src]

impl<T, U> Into<U> for T where
    U: From<T>, 
[src]

impl<T> Pipe for T where
    T: ?Sized

impl<T> Pipe for T

impl<T> PipeAsRef for T

impl<T> PipeBorrow for T

impl<T> PipeDeref for T

impl<T> PipeRef for T

impl<T> Tap for T

impl<T> Tap for T

impl<T, U> TapAsRef<U> for T where
    U: ?Sized

impl<T, U> TapBorrow<U> for T where
    U: ?Sized

impl<T> TapDeref for T

impl<T> TryConv for T

impl<T> TryConv for T

impl<T, U> TryFrom<U> for T where
    U: Into<T>, 
[src]

type Error = Infallible

The type returned in the event of a conversion error.

impl<T, U> TryInto<U> for T where
    U: TryFrom<T>, 
[src]

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

The type returned in the event of a conversion error.