summaryrefslogtreecommitdiff
path: root/Kernel/Net/UDP.h
diff options
context:
space:
mode:
Diffstat (limited to 'Kernel/Net/UDP.h')
-rw-r--r--Kernel/Net/UDP.h32
1 files changed, 32 insertions, 0 deletions
diff --git a/Kernel/Net/UDP.h b/Kernel/Net/UDP.h
new file mode 100644
index 0000000000..ba6d02af37
--- /dev/null
+++ b/Kernel/Net/UDP.h
@@ -0,0 +1,32 @@
+#pragma once
+
+#include <Kernel/Net/IPv4.h>
+
+class [[gnu::packed]] UDPPacket {
+public:
+ UDPPacket() { }
+ ~UDPPacket() { }
+
+ word source_port() const { return m_source_port; }
+ void set_source_port(word port) { m_source_port = port; }
+
+ word destination_port() const { return m_destination_port; }
+ void set_destination_port(word port) { m_destination_port = port; }
+
+ word length() const { return m_length; }
+ void set_length(word length) { m_length = length; }
+
+ word checksum() const { return m_checksum; }
+ void set_checksum(word checksum) { m_checksum = checksum; }
+
+ const void* payload() const { return this + 1; }
+ void* payload() { return this + 1; }
+
+private:
+ NetworkOrdered<word> m_source_port;
+ NetworkOrdered<word> m_destination_port;
+ NetworkOrdered<word> m_length;
+ NetworkOrdered<word> m_checksum;
+};
+
+static_assert(sizeof(UDPPacket) == 8);