Struct pcap_file::pcap::PcapParser
source · pub struct PcapParser { /* private fields */ }
Expand description
Parses a Pcap from a slice of bytes.
You can match on PcapError::IncompleteBuffer
to known if the parser need more data.
Example
use pcap_file::pcap::PcapParser;
use pcap_file::PcapError;
let pcap = vec![0_u8; 0];
let mut src = &pcap[..];
// Creates a new parser and parse the pcap header
let (rem, pcap_parser) = PcapParser::new(&pcap[..]).unwrap();
src = rem;
loop {
match pcap_parser.next_packet(src) {
Ok((rem, packet)) => {
// Do something
// Don't forget to update src
src = rem;
// No more data, if no more incoming either then this is the end of the file
if rem.is_empty() {
break;
}
},
Err(PcapError::IncompleteBuffer) => {}, // Load more data into src
Err(_) => {}, // Parsing error
}
}
Implementations§
source§impl PcapParser
impl PcapParser
sourcepub fn new(slice: &[u8]) -> PcapResult<(&[u8], PcapParser)>
pub fn new(slice: &[u8]) -> PcapResult<(&[u8], PcapParser)>
Creates a new PcapParser
.
Returns the remainder and the parser.
sourcepub fn next_packet<'a>(
&self,
slice: &'a [u8]
) -> PcapResult<(&'a [u8], PcapPacket<'a>)>
pub fn next_packet<'a>(
&self,
slice: &'a [u8]
) -> PcapResult<(&'a [u8], PcapPacket<'a>)>
Returns the remainder and the next PcapPacket
.
sourcepub fn next_raw_packet<'a>(
&self,
slice: &'a [u8]
) -> PcapResult<(&'a [u8], RawPcapPacket<'a>)>
pub fn next_raw_packet<'a>(
&self,
slice: &'a [u8]
) -> PcapResult<(&'a [u8], RawPcapPacket<'a>)>
Returns the remainder and the next RawPcapPacket
.
sourcepub fn header(&self) -> PcapHeader
pub fn header(&self) -> PcapHeader
Returns the header of the pcap file.