use snafu::prelude::*;
pub type Result<T> = core::result::Result<T, NetpackError>;
#[derive(Clone, Debug, Eq, PartialEq, Hash)]
pub enum NetpackError {
BufferTooSmall {
provided_size: usize,
requried_size: usize,
},
EthernetFrame(EthFrameError),
Arp(ArpError),
}
#[derive(Snafu, Clone, Debug, Eq, PartialEq, Hash)]
pub enum EthFrameError {
#[snafu(display(
"Not enough bytes. Recieved {}, expected {}",
provided_size,
expected_size,
))]
NotEnoughBytes {
provided_size: usize,
expected_size: usize,
},
}
impl From<EthFrameError> for NetpackError {
fn from(val: EthFrameError) -> Self {
NetpackError::EthernetFrame(val)
}
}
#[derive(Snafu, Clone, Debug, Eq, PartialEq, Hash)]
pub enum ArpError {
#[snafu(display(
"Not enough bytes to read arp address lengths. Recieved {}, expected {}",
provided_size,
expected_size,
))]
NotEnoughBytesForAddrLengths {
provided_size: usize,
expected_size: usize,
},
#[snafu(display(
"Not enough bytes to read arp addresses. Recieved {}, expected {}",
provided_size,
expected_size,
))]
NotEnoughBytesForAddrs {
provided_size: usize,
expected_size: usize,
},
}
impl From<ArpError> for NetpackError {
fn from(val: ArpError) -> Self {
NetpackError::Arp(val)
}
}