summaryrefslogtreecommitdiffhomepage
path: root/src/kernel/FirmwareKit/NeBoot/BootNet.h
diff options
context:
space:
mode:
authorAmlal El Mahrouss <amlal@nekernel.org>2025-11-23 21:06:27 -0500
committerGitHub <noreply@github.com>2025-11-23 21:06:27 -0500
commit23040fad647634c08697451fc22ee2ca999629c8 (patch)
tree72888f88c7728c82f3f6df1f4f70591de15eab36 /src/kernel/FirmwareKit/NeBoot/BootNet.h
parente5cc7351f0577b54c528fb827a7c7e6306c3e843 (diff)
parent83d870e58457a1d335a1d9b9966a6a1887cc297b (diff)
Merge pull request #81 from nekernel-org/dev
feat! breaking changes on kernel sources.
Diffstat (limited to 'src/kernel/FirmwareKit/NeBoot/BootNet.h')
-rw-r--r--src/kernel/FirmwareKit/NeBoot/BootNet.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/src/kernel/FirmwareKit/NeBoot/BootNet.h b/src/kernel/FirmwareKit/NeBoot/BootNet.h
new file mode 100644
index 00000000..3637bab0
--- /dev/null
+++ b/src/kernel/FirmwareKit/NeBoot/BootNet.h
@@ -0,0 +1,41 @@
+/* ========================================
+
+ Copyright (C) 2024-2025, Amlal El Mahrouss, licensed under the Apache 2.0 license.
+
+======================================== */
+
+#pragma once
+
+#include <NeKit/Defines.h>
+
+#define kBootNetINetMagic "ONET"
+#define kBootNetINetMagicLength (4)
+#define kBootNetVersion (0x001)
+#define kBootNetNameLen (256U)
+
+struct _BOOTNET_INTERNET_HEADER;
+
+/// @brief Netboot Internet Header
+/// Consists of 4 magic characters, and a set of fields describing the current patch that's being
+/// sent (if m_preflight = 0)
+/// @note Can be used to patch ROMs too (if ImpliesProgram = 1)
+typedef struct _BOOTNET_INTERNET_HEADER {
+ Kernel::Char NB1; /// magic char 1 'O'
+ Kernel::Char NB2; /// magic char 2 'N'
+ Kernel::Char NB3; /// magic char 3 'E'
+ Kernel::Char NB4; /// magic char 4 'T'
+
+ Kernel::UInt16 Version;
+
+ Kernel::Char Name[kBootNetNameLen]; /// example: Modjo
+
+ Kernel::Int32 Length; /// the patch length.
+ Kernel::Char Target[kBootNetNameLen]; /// the target file.
+
+ Kernel::Boolean ImpliesProgram : 1; /// does it imply reprogramming?
+
+ Kernel::Boolean Preflight : 1; /// is it a preflight packet.
+ Kernel::Char Data[1]; /// non preflight packet has a patch blob for a **PatchTarget**
+} PACKED BOOTNET_INTERNET_HEADER;
+
+using BOOTNET_INTERNET_HEADER_PTR = BOOTNET_INTERNET_HEADER*;