From efdc4817bb6f3a3dd58afa7cab8773482d4a8798 Mon Sep 17 00:00:00 2001 From: Bananymous Date: Sun, 25 Feb 2024 21:32:37 +0200 Subject: [PATCH] Kernel: Print to debug log ICMP unreachable messages These messages should be forwarded to underlying sockets --- kernel/include/kernel/Networking/ICMP.h | 1 + kernel/kernel/Networking/IPv4Layer.cpp | 7 +++++++ 2 files changed, 8 insertions(+) diff --git a/kernel/include/kernel/Networking/ICMP.h b/kernel/include/kernel/Networking/ICMP.h index 689bde47..ba766c52 100644 --- a/kernel/include/kernel/Networking/ICMP.h +++ b/kernel/include/kernel/Networking/ICMP.h @@ -18,6 +18,7 @@ namespace Kernel enum ICMPType : uint8_t { EchoReply = 0x00, + DestinationUnreachable = 0x03, EchoRequest = 0x08, }; diff --git a/kernel/kernel/Networking/IPv4Layer.cpp b/kernel/kernel/Networking/IPv4Layer.cpp index 42fca57a..00f2f217 100644 --- a/kernel/kernel/Networking/IPv4Layer.cpp +++ b/kernel/kernel/Networking/IPv4Layer.cpp @@ -212,6 +212,13 @@ namespace Kernel TRY(interface.send_bytes(dst_mac, EtherType::IPv4, packet)); break; } + case ICMPType::DestinationUnreachable: + { + auto& ipv4_header = ipv4_data.slice(sizeof(ICMPHeader)).as(); + dprintln("Destination '{}' unreachable, code {2H}", ipv4_header.dst_address, icmp_header.code); + // FIXME: inform the socket + break; + } default: dprintln("Unhandleded ICMP packet (type {2H})", icmp_header.type); break;