pub struct PcapNgParser { /* private fields */ }
Expand description
Parses a PcapNg from a slice of bytes.
You can match on PcapError::IncompleteBuffer
to know if the parser need more data.
§Example
use std::fs::File;
use pcap_file::pcapng::PcapNgParser;
use pcap_file::PcapError;
let pcap = std::fs::read("test.pcapng").expect("Error reading file");
let mut src = &pcap[..];
let (rem, mut pcapng_parser) = PcapNgParser::new(src).unwrap();
src = rem;
loop {
match pcapng_parser.next_block(src) {
Ok((rem, block)) => {
// Do something
// Don't forget to update src
src = rem;
},
Err(PcapError::IncompleteBuffer) => {
// Load more data into src
},
Err(_) => {
// Handle parsing error
},
}
}
Implementations§
Source§impl PcapNgParser
impl PcapNgParser
Sourcepub fn new(src: &[u8]) -> Result<(&[u8], Self), PcapError>
pub fn new(src: &[u8]) -> Result<(&[u8], Self), PcapError>
Creates a new PcapNgParser
.
Parses the first block which must be a valid SectionHeaderBlock.
Sourcepub fn next_block<'a>(
&mut self,
src: &'a [u8],
) -> Result<(&'a [u8], Block<'a>), PcapError>
pub fn next_block<'a>( &mut self, src: &'a [u8], ) -> Result<(&'a [u8], Block<'a>), PcapError>
Returns the remainder and the next Block
.
Sourcepub fn next_raw_block<'a>(
&mut self,
src: &'a [u8],
) -> Result<(&'a [u8], RawBlock<'a>), PcapError>
pub fn next_raw_block<'a>( &mut self, src: &'a [u8], ) -> Result<(&'a [u8], RawBlock<'a>), PcapError>
Returns the remainder and the next RawBlock
.
Sourcepub fn section(&self) -> &SectionHeaderBlock<'static>
pub fn section(&self) -> &SectionHeaderBlock<'static>
Returns the current SectionHeaderBlock
.
Sourcepub fn interfaces(&self) -> &[InterfaceDescriptionBlock<'static>]
pub fn interfaces(&self) -> &[InterfaceDescriptionBlock<'static>]
Returns all the current InterfaceDescriptionBlock
.
Sourcepub fn packet_interface(
&self,
packet: &EnhancedPacketBlock<'_>,
) -> Option<&InterfaceDescriptionBlock<'_>>
pub fn packet_interface( &self, packet: &EnhancedPacketBlock<'_>, ) -> Option<&InterfaceDescriptionBlock<'_>>
Returns the InterfaceDescriptionBlock
corresponding to the given packet.
Auto Trait Implementations§
impl Freeze for PcapNgParser
impl RefUnwindSafe for PcapNgParser
impl Send for PcapNgParser
impl Sync for PcapNgParser
impl Unpin for PcapNgParser
impl UnwindSafe for PcapNgParser
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