wireparse/error/
mod.rs

1use snafu::prelude::*;
2
3pub type Result<T> = core::result::Result<T, NetpackError>;
4
5#[derive(Clone, Debug, Eq, PartialEq, Hash)]
6pub enum NetpackError {
7    BufferTooSmall {
8        provided_size: usize,
9        requried_size: usize,
10    },
11    EthernetFrame(EthFrameError),
12    Arp(ArpError),
13}
14
15#[derive(Snafu, Clone, Debug, Eq, PartialEq, Hash)]
16pub enum EthFrameError {
17    #[snafu(display(
18        "Not enough bytes. Recieved {}, expected {}",
19        provided_size,
20        expected_size,
21    ))]
22    NotEnoughBytes {
23        provided_size: usize,
24        expected_size: usize,
25    },
26}
27
28impl From<EthFrameError> for NetpackError {
29    fn from(val: EthFrameError) -> Self {
30        NetpackError::EthernetFrame(val)
31    }
32}
33
34#[derive(Snafu, Clone, Debug, Eq, PartialEq, Hash)]
35pub enum ArpError {
36    #[snafu(display(
37        "Not enough bytes to read arp address lengths. Recieved {}, expected {}",
38        provided_size,
39        expected_size,
40    ))]
41    NotEnoughBytesForAddrLengths {
42        provided_size: usize,
43        expected_size: usize,
44    },
45    #[snafu(display(
46        "Not enough bytes to read arp addresses. Recieved {}, expected {}",
47        provided_size,
48        expected_size,
49    ))]
50    NotEnoughBytesForAddrs {
51        provided_size: usize,
52        expected_size: usize,
53    },
54}
55
56impl From<ArpError> for NetpackError {
57    fn from(val: ArpError) -> Self {
58        NetpackError::Arp(val)
59    }
60}