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}