From 8f3454cb57f67a05234a0100c1c7f4887c275cf1 Mon Sep 17 00:00:00 2001 From: Amlal Date: Tue, 25 Feb 2025 08:58:58 +0100 Subject: IMPL: Business logic for NetBoot. TODO: Read NBINet packet from host or localhost. Signed-off-by: Amlal --- dev/Boot/Mod/NetBoot/NetBoot.cc | 36 ++++++++++++++++++++++++++++++++---- 1 file changed, 32 insertions(+), 4 deletions(-) (limited to 'dev/Boot/Mod/NetBoot/NetBoot.cc') diff --git a/dev/Boot/Mod/NetBoot/NetBoot.cc b/dev/Boot/Mod/NetBoot/NetBoot.cc index ac87d256..2d924333 100644 --- a/dev/Boot/Mod/NetBoot/NetBoot.cc +++ b/dev/Boot/Mod/NetBoot/NetBoot.cc @@ -9,12 +9,40 @@ #include #include +#include EXTERN_C Int32 ModuleMain(NeOS::HEL::BootInfoHeader* handover) { -#ifdef __NE_AMD64__ + NetBootInternetHeader inet{}; + + /// TODO: Read Packet from localhost + + if (inet.PatchLength < 0) + { + Boot::BTextWriter writer; + writer.Write("NetBootLauncher: No Patch attached to packet.\r"); + + return kEfiFail; + } + else if (inet.Preflight) + { + Boot::BTextWriter writer; + writer.Write("NetBootLauncher: Preflight over preflight response.\r"); + + return kEfiFail; + } + else if (inet.EEPROM) + { + Boot::BTextWriter writer; + writer.Write("NetBootLauncher: EEPROM flash not available for now.\r"); + + return kEfiFail; + } + + Boot::BootThread thread(inet.Data); + + if (thread.IsValid()) + return thread.Start(handover, YES); + return kEfiFail; -#else - return kEfiOk; -#endif } -- cgit v1.2.3