net_parser_rs/flow/layer3/
mod.rs

1pub mod arp;
2pub mod ipv4;
3pub mod ipv6;
4
5use crate::flow::Flow;
6use crate::flow::errors::Error;
7use crate::flow::info::layer2::Info;
8
9pub trait FlowExtraction {
10    fn extract_flow(&self, l2: Info) -> Result<Flow, Error>;
11}
12
13///
14/// Errors encountered during layer3 flow extraction
15///
16pub mod errors {
17    use crate::flow::layer3::arp;
18    use crate::flow::layer3::ipv4;
19    use crate::flow::layer3::ipv6;
20    use thiserror::{Error as ThisError};
21
22    #[derive(Debug, ThisError)]
23    pub enum Error {
24        #[error("ARP Error: {0:?}")]
25        Arp(#[from] arp::errors::Error),
26        #[error("IPv4 Error: {0:?}")]
27        IPv4(#[from] ipv4::errors::Error),
28        #[error("IPv6 Error: {0:?}")]
29        IPv6(#[from] ipv6::errors::Error)
30    }
31
32    unsafe impl Sync for Error {}
33    unsafe impl Send for Error {}
34}