Files
mars-nwe/doc/KERNEL_REFERENCE_AUDIT.md
2026-06-13 06:30:18 +02:00

2.9 KiB

Linux kernel reference imports

This file records Linux kernel code copied into the tree as historical reference material. These files are not build inputs unless a later patch explicitly wires them into a target.

Linux 2.4.37.9 SPX reference

Imported files:

Source Destination Purpose
linux-2.4.37.9/net/ipx/af_spx.c src/kernel/af_spx.c Historical SPX implementation reference.
linux-2.4.37.9/include/net/spx.h include/kernel/spx.h SPX/IPX header, state and packet field reference.

The imported SPX code is reference material for a possible future userland nwspx.c implementation. Do not compile it into nwserv, nwconn, libnwcore or libnwfs as-is. The old Linux code is kernel-specific and uses old socket, timer, locking and sk_buff APIs. A Mars implementation must be written behind the nwtransport/nwipx boundary instead.

Useful information preserved by the import:

  • SPX is modeled as SOCK_SEQPACKET over PF_IPX, not as a separate AF_SPX family.
  • IPX packet type IPX_TYPE_SPX carries the SPX header.
  • The SPX header fields are cctl, dtype, source/destination connection IDs, sequence, ackseq, and allocseq.
  • The historical state names are SPX_CLOSED, SPX_CONNECTING, and SPX_CONNECTED.
  • The code includes watchdog, retransmit and disconnect handling that can guide a later clean userland state machine.

Important caveats:

  • In Linux 2.4.37.9, net/ipx/Config.in has the SPX prompt commented out: CONFIG_SPX is not normally selectable even though af_spx.c remains in the tree.
  • net/ipx/Makefile still contains obj-$(CONFIG_SPX) += af_spx.o, so the code was a disabled/leftover experimental implementation, not a maintained normal feature.
  • The source banner identifies the implementation as old SPX work for Linux 2.1.x and the implementation contains comments describing simplified or fake RTT handling. Treat protocol mechanics as useful, not the code architecture.
  • Keep NetWare 3.x/NCP work focused on IPX socket 0x0451, SAP 0x0452 and RIP 0x0453. SPX is a later compatibility track and must not block namespace or libnwfs work.

License handling:

  • The imported file header allows GPL version 2 or later. For this repository, use the GPL-2.0 choice only, consistent with COPYING.md.
  • Preserve the original file headers when moving or studying these files; only whitespace was normalized on import so git diff --check remains clean.
  • Do not import unrelated Linux kernel code unless it is explicitly needed as reference material and recorded here.

Placement rule

Historical kernel reference code belongs under:

src/kernel/
include/kernel/

Historical NSS reference code should similarly be kept out of generic src/ and include/ paths. Existing imported NSS helper code can be moved toward src/nss/ and include/nss/ in a later mechanical cleanup, but do not mix that move with namespace implementation patches.