pcap_file/
errors.rs

1use thiserror::Error;
2
3/// Result type for the pcap/pcapng parsing
4pub type PcapResult<T> = Result<T, PcapError>;
5
6/// Error type for the pcap/pcapng parsing
7#[derive(Error, Debug)]
8pub enum PcapError {
9    /// Buffer too small
10    #[error("Need more bytes")]
11    IncompleteBuffer,
12
13    /// Generic IO error
14    #[error("Error reading bytes")]
15    IoError(#[source] std::io::Error),
16
17    /// Invalid field
18    #[error("Invalid field value: {0}")]
19    InvalidField(&'static str),
20
21    /// UTF8 conversion error
22    #[error("UTF8 error")]
23    Utf8Error(#[source] std::str::Utf8Error),
24
25    /// From UTF8 conversion error
26    #[error("UTF8 error")]
27    FromUtf8Error(#[source] std::string::FromUtf8Error),
28
29    /// Invalid interface ID (only for Pcap NG)
30    #[error("No corresponding interface id: {0}")]
31    InvalidInterfaceId(u32),
32}
33
34impl From<std::str::Utf8Error> for PcapError {
35    fn from(err: std::str::Utf8Error) -> Self {
36        PcapError::Utf8Error(err)
37    }
38}
39
40impl From<std::string::FromUtf8Error> for PcapError {
41    fn from(err: std::string::FromUtf8Error) -> Self {
42        PcapError::FromUtf8Error(err)
43    }
44}