about summary refs log tree commit diff
path: root/src/ethertype.rs
diff options
context:
space:
mode:
authorgennyble <gen@nyble.dev>2025-05-17 09:53:23 -0500
committergennyble <gen@nyble.dev>2025-05-17 09:53:23 -0500
commit2bd66b9a04be8a63d7ee0be2d633ead183fa7e76 (patch)
tree8962e5bc5b0e8ac1af7f01f0db875bc60d8d44c3 /src/ethertype.rs
downloadskim-2bd66b9a04be8a63d7ee0be2d633ead183fa7e76.tar.gz
skim-2bd66b9a04be8a63d7ee0be2d633ead183fa7e76.zip
initial commit; meow
Diffstat (limited to 'src/ethertype.rs')
-rw-r--r--src/ethertype.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/src/ethertype.rs b/src/ethertype.rs
new file mode 100644
index 0000000..0d728f3
--- /dev/null
+++ b/src/ethertype.rs
@@ -0,0 +1,20 @@
+#[derive(Copy, Clone, Debug, PartialEq)]
+pub enum EtherType {
+	/// The frame type is IEEE 802.3 and this is it's length
+	Length(u16),
+	IPv4,
+	IPv6,
+	Unknown(u16),
+}
+
+impl EtherType {
+	//TODO: check ethertype is correct
+	pub fn new(n: u16) -> Self {
+		match n {
+			n if n <= 1500 => Self::Length(n),
+			0x0800 => Self::IPv4,
+			0x86DD => Self::IPv6,
+			n => Self::Unknown(n),
+		}
+	}
+}