diff options
| author | luwenpeng <[email protected]> | 2023-08-07 11:30:10 +0800 |
|---|---|---|
| committer | luwenpeng <[email protected]> | 2023-08-07 11:30:18 +0800 |
| commit | 85973cd021fda0d62c5f3e786e2abb8c8296a1df (patch) | |
| tree | 19e5433d589b3501f82c40b765d5de43a839097c /src/packet/error.rs | |
| parent | da2740daf215f7486ede97169fa3f33d8abdfb62 (diff) | |
[feature] Add Packet Error Type
Diffstat (limited to 'src/packet/error.rs')
| -rw-r--r-- | src/packet/error.rs | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/src/packet/error.rs b/src/packet/error.rs new file mode 100644 index 0000000..20eceec --- /dev/null +++ b/src/packet/error.rs @@ -0,0 +1,48 @@ +#[derive(Debug)] +pub enum PacketError { + InvalidPacketLength, + + // L2 + IncompleteEthernetFrame, + UnsupportEthernetType, + + // L3 + IncompleteIpv4Header, + IncompleteIpv6Header, + + InvalidIpv4HeaderLength, + InvalidIpv6HeaderLength, + + UnsupportIPProtocol, + + // L4 + IncompleteUdpHeader, + IncompleteTcpHeader, + + // L7 + IncompleteAppHeader, + UnsupportAppProtocol, +} + +impl core::fmt::Display for PacketError { + fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result { + match *self { + PacketError::InvalidPacketLength => write!(f, "Invalid Packet Length"), + // L2 + PacketError::IncompleteEthernetFrame => write!(f, "Incomplete Ethernet Frame"), + PacketError::UnsupportEthernetType => write!(f, "Unsupport Ethernet Type"), + // L3 + PacketError::IncompleteIpv4Header => write!(f, "Incomplete IPv4 Header"), + PacketError::IncompleteIpv6Header => write!(f, "Incomplete IPv6 Header"), + PacketError::InvalidIpv4HeaderLength => write!(f, "Invalid IPv4 Header Length"), + PacketError::InvalidIpv6HeaderLength => write!(f, "Invalid IPv6 Header Length"), + PacketError::UnsupportIPProtocol => write!(f, "Unsupport IP Protocol"), + // L4 + PacketError::IncompleteUdpHeader => write!(f, "Incomplete UDP Header"), + PacketError::IncompleteTcpHeader => write!(f, "Incomplete TCP Header"), + // L7 + PacketError::IncompleteAppHeader => write!(f, "Incomplete App Header"), + PacketError::UnsupportAppProtocol => write!(f, "Unsupport App Protocol"), + } + } +}
\ No newline at end of file |
