net_parser_rs/flow/layer4/
mod.rs

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