diff options
author | Anton Kling <anton@kling.gg> | 2024-06-11 13:33:01 +0200 |
---|---|---|
committer | Anton Kling <anton@kling.gg> | 2024-06-11 15:18:40 +0200 |
commit | abf9cf5bec2712465400417cc8232fee2d1cce28 (patch) | |
tree | 3e43f9cc8e194aa20de6e2e5a1916a10ced69f44 /kernel/network/ipv4.c | |
parent | b118759096ef08bfcc003933059de46a7a964ad7 (diff) |
TCP stuff
Diffstat (limited to 'kernel/network/ipv4.c')
-rw-r--r-- | kernel/network/ipv4.c | 8 |
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); |