summaryrefslogtreecommitdiff
path: root/src/packet/error.rs
diff options
context:
space:
mode:
authorluwenpeng <[email protected]>2023-08-07 11:30:10 +0800
committerluwenpeng <[email protected]>2023-08-07 11:30:18 +0800
commit85973cd021fda0d62c5f3e786e2abb8c8296a1df (patch)
tree19e5433d589b3501f82c40b765d5de43a839097c /src/packet/error.rs
parentda2740daf215f7486ede97169fa3f33d8abdfb62 (diff)
[feature] Add Packet Error Type
Diffstat (limited to 'src/packet/error.rs')
-rw-r--r--src/packet/error.rs48
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