net_parser_rs/flow/layer3/
mod.rs1pub 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
13pub 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}