pcap_parser/pcapng/
unknown.rs1use nom::error::ParseError;
2use nom::IResult;
3
4use crate::endianness::{PcapBE, PcapEndianness, PcapLE};
5use crate::PcapError;
6
7use super::*;
8
9#[derive(Debug)]
11pub struct UnknownBlock<'a> {
12 pub block_type: u32,
14 pub block_len1: u32,
15 pub data: &'a [u8],
16 pub block_len2: u32,
17}
18
19impl<'a, En: PcapEndianness> PcapNGBlockParser<'a, En, UnknownBlock<'a>> for UnknownBlock<'a> {
20 const HDR_SZ: usize = 12;
21 const MAGIC: u32 = 0;
22
23 fn inner_parse<E: ParseError<&'a [u8]>>(
24 block_type: u32,
25 block_len1: u32,
26 i: &'a [u8],
27 block_len2: u32,
28 ) -> IResult<&'a [u8], UnknownBlock<'a>, E> {
29 let block = UnknownBlock {
30 block_type,
31 block_len1,
32 data: i,
33 block_len2,
34 };
35 Ok((i, block))
36 }
37}
38
39pub fn parse_unknownblock_le(i: &[u8]) -> IResult<&[u8], UnknownBlock<'_>, PcapError<&[u8]>> {
41 ng_block_parser::<UnknownBlock, PcapLE, _, _>()(i)
42}
43
44pub fn parse_unknownblock_be(i: &[u8]) -> IResult<&[u8], UnknownBlock<'_>, PcapError<&[u8]>> {
46 ng_block_parser::<UnknownBlock, PcapBE, _, _>()(i)
47}