summaryrefslogtreecommitdiff
path: root/kernel/network/ipv4.c
diff options
context:
space:
mode:
authorAnton Kling <anton@kling.gg>2024-06-11 13:33:01 +0200
committerAnton Kling <anton@kling.gg>2024-06-11 15:18:40 +0200
commitabf9cf5bec2712465400417cc8232fee2d1cce28 (patch)
tree3e43f9cc8e194aa20de6e2e5a1916a10ced69f44 /kernel/network/ipv4.c
parentb118759096ef08bfcc003933059de46a7a964ad7 (diff)
TCP stuff
Diffstat (limited to 'kernel/network/ipv4.c')
-rw-r--r--kernel/network/ipv4.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/kernel/network/ipv4.c b/kernel/network/ipv4.c
index 4fe3799..cceee8e 100644
--- a/kernel/network/ipv4.c
+++ b/kernel/network/ipv4.c
@@ -84,15 +84,17 @@ void handle_ipv4(const u8 *payload, u32 packet_length) {
assert(ipv4_total_length <= packet_length);
ipv4_t src_ip;
- memcpy(&src_ip, payload + 12, sizeof(u8[4]));
+ memcpy(&src_ip.d, payload + 12, sizeof(u8[4]));
+ ipv4_t dst_ip;
+ memcpy(&dst_ip.d, payload + 16, sizeof(u8[4]));
u8 protocol = *(payload + 9);
switch (protocol) {
case 0x6:
- handle_tcp(src_ip, payload + 20, ipv4_total_length - 20);
+ handle_tcp(src_ip, dst_ip, payload + 20, ipv4_total_length - 20);
break;
case 0x11:
- handle_udp(src_ip, payload + 20, ipv4_total_length - 20);
+ handle_udp(src_ip, dst_ip, payload + 20, ipv4_total_length - 20);
break;
default:
kprintf("Protocol given in IPv4 header not handeld: %x\n", protocol);