refactor: namespace cleanup pass 2
continuous-integration/drone/push Build is passing

- Rename driver.intf.serial -> driver.io.serial (intf/ -> io/)
- Move net protocols to driver.net.proto.* (net/ -> net/proto/)
  - arp, dhcp, eth2, icmp, ipv4, tcp, udp
- Move netdev to driver.net.dev.* (netdev/ -> net/dev/)
  - e1000
- Move driver.net.pas into driver/net/
- Move driver.video.pas into driver/video/
- Rename arch.x86.faults -> arch.x86.fault, move to fault/ dir
- Move driver.storage.ctl.ahci.pas into ctl/ahci/
- Move driver.storage.ctl.ide.pas into ctl/ide/
- Move linker.script and version to toolchain/
- Update all unit references and namespace doc

35 files changed, 237 insertions(+), 234 deletions(-)
This commit is contained in:
2026-03-08 10:00:41 +00:00
parent 6fa008ed79
commit 021aa0d82e
35 changed files with 237 additions and 234 deletions
+1
View File
@@ -18,3 +18,4 @@ lessons_learnt.md
*.log
/doc/*.md
wasuro
src/core/core.version.pas
+28 -26
View File
@@ -39,7 +39,6 @@ src/
│ ├── arch.x86.irq.pas
│ ├── arch.x86.isr.pas
│ ├── arch.x86.cpu.pas
│ ├── arch.x86.faults.pas
│ ├── arch.x86.util.pas # x86 I/O: outb/inb, CLI/STI, TSC, BSOD
│ ├── arch.x86.multiboot.pas
│ ├── arch.x86.bda.pas # BIOS Data Area
@@ -49,6 +48,7 @@ src/
│ │ └── stub.asm # Multiboot boot stub (NASM)
│ │
│ ├── fault/
│ │ ├── arch.x86.fault.pas
│ │ ├── arch.x86.fault.ace.pas
│ │ ├── arch.x86.fault.bpe.pas
│ │ ├── arch.x86.fault.btsse.pas
@@ -171,8 +171,8 @@ src/
│ │ ├── driver.hid.usb.keyboard.pas
│ │ └── driver.hid.usb.mouse.pas
│ │
│ ├── interface/
│ │ └── driver.interface.serial.pas
│ ├── io/
│ │ └── driver.io.serial.pas
│ │
│ ├── timer/
│ │ └── driver.timer.rtc.pas
@@ -217,16 +217,18 @@ src/
│ ├── net/
│ │ ├── driver.net.types.pas
│ │ ├── driver.net.util.pas
│ │ ├── driver.net.eth2.pas
│ │ ├── driver.net.arp.pas
│ │ ├── driver.net.ipv4.pas
│ │ ├── driver.net.icmp.pas
│ │ ├── driver.net.tcp.pas
│ │ ├── driver.net.udp.pas
│ │ ── driver.net.dhcp.pas
│ │
├── netdev/
│ │ └── driver.netdev.e1000.pas
│ │
│ │ ├── proto/
│ │ ├── driver.net.proto.eth2.pas
│ │ ├── driver.net.proto.arp.pas
│ │ ├── driver.net.proto.ipv4.pas
│ │ ├── driver.net.proto.icmp.pas
│ │ │ ├── driver.net.proto.tcp.pas
│ │ │ ├── driver.net.proto.udp.pas
│ │ └── driver.net.proto.dhcp.pas
│ │
│ │ └── dev/
│ │ └── driver.net.dev.e1000.pas
│ │
│ ├── video/
│ │ ├── driver.video.types.pas
@@ -293,7 +295,7 @@ src/
| `irq.pas` | `arch/x86/arch.x86.irq.pas` | `irq` | `arch.x86.irq` |
| `isr.pas` | `arch/x86/arch.x86.isr.pas` | `isr` | `arch.x86.isr` |
| `cpu.pas` | `arch/x86/arch.x86.cpu.pas` | `cpu` | `arch.x86.cpu` |
| `faults.pas` | `arch/x86/arch.x86.faults.pas` | `faults` | `arch.x86.faults` |
| `faults.pas` | `arch/x86/fault/arch.x86.fault.pas` | `faults` | `arch.x86.fault` |
| `contextswitcher.pas` | `arch/x86/proc/arch.x86.proc.sched.pas` | `contextswitcher` | `arch.x86.proc.sched` |
| `processloader.pas` | `arch/x86/proc/arch.x86.proc.loader.pas` | `processloader` | `arch.x86.proc.loader` |
| `v86.pas` | `arch/x86/arch.x86.v86.pas` | `v86` | `arch.x86.v86` |
@@ -462,11 +464,11 @@ src/
| `driver/hid/usb/usb_keyboard.pas` | `driver/hid/usb/driver.hid.usb.keyboard.pas` | `usb_keyboard` | `driver.hid.usb.keyboard` |
| `driver/hid/usb/usb_mouse.pas` | `driver/hid/usb/driver.hid.usb.mouse.pas` | `usb_mouse` | `driver.hid.usb.mouse` |
### Driver — Interface (`driver/interface/`)
### Driver — IO (`driver/io/`)
| Old path | New path | Old unit | New unit |
|----------|----------|----------|----------|
| `driver/interface/serial.pas` | `driver/interface/driver.interface.serial.pas` | `serial` | `driver.interface.serial` |
| `driver/io/serial.pas` | `driver/io/driver.io.serial.pas` | `serial` | `driver.io.serial` |
### Driver — Timer (`driver/timer/`)
@@ -536,21 +538,21 @@ src/
| `driver/net/l1/net.pas` | `driver/driver.net.pas` | `net` | `driver.net` |
| `driver/net/include/nettypes.pas` | `driver/net/driver.net.types.pas` | `nettypes` | `driver.net.types` |
| `driver/net/include/netutils.pas` | `driver/net/driver.net.util.pas` | `netutils` | `driver.net.util` |
| `driver/net/l2/eth2.pas` | `driver/net/driver.net.eth2.pas` | `eth2` | `driver.net.eth2` |
| `driver/net/l3/arp.pas` | `driver/net/driver.net.arp.pas` | `arp` | `driver.net.arp` |
| `driver/net/l3/ipv4.pas` | `driver/net/driver.net.ipv4.pas` | `ipv4` | `driver.net.ipv4` |
| `driver/net/l4/icmp.pas` | `driver/net/driver.net.icmp.pas` | `icmp` | `driver.net.icmp` |
| `driver/net/l4/tcp.pas` | `driver/net/driver.net.tcp.pas` | `tcp` | `driver.net.tcp` |
| `driver/net/l4/udp.pas` | `driver/net/driver.net.udp.pas` | `udp` | `driver.net.udp` |
| `driver/net/l5/dhcp.pas` | `driver/net/driver.net.dhcp.pas` | `dhcp` | `driver.net.dhcp` |
| `driver/net/l2/eth2.pas` | `driver/net/proto/driver.net.proto.eth2.pas` | `eth2` | `driver.net.proto.eth2` |
| `driver/net/l3/arp.pas` | `driver/net/proto/driver.net.proto.arp.pas` | `arp` | `driver.net.proto.arp` |
| `driver/net/l3/ipv4.pas` | `driver/net/proto/driver.net.proto.ipv4.pas` | `ipv4` | `driver.net.proto.ipv4` |
| `driver/net/l4/icmp.pas` | `driver/net/proto/driver.net.proto.icmp.pas` | `icmp` | `driver.net.proto.icmp` |
| `driver/net/l4/tcp.pas` | `driver/net/proto/driver.net.proto.tcp.pas` | `tcp` | `driver.net.proto.tcp` |
| `driver/net/l4/udp.pas` | `driver/net/proto/driver.net.proto.udp.pas` | `udp` | `driver.net.proto.udp` |
| `driver/net/l5/dhcp.pas` | `driver/net/proto/driver.net.proto.dhcp.pas` | `dhcp` | `driver.net.proto.dhcp` |
> **Note:** The old layer folders (`l1/`, `l2/`, `l3/`, `l4/`, `l5/`, `include/`) are flattened — protocol names are self-descriptive.
> **Note:** The old layer folders (`l1/`, `l2/`, `l3/`, `l4/`, `l5/`, `include/`) are now grouped under `proto/` — protocol names are self-descriptive.
### Driver — Network Device (`driver/netdev/`)
### Driver — Network Device (`driver/net/dev/`)
| Old path | New path | Old unit | New unit |
|----------|----------|----------|----------|
| `driver/netdev/E1000.pas` | `driver/netdev/driver.netdev.e1000.pas` | `E1000` | `driver.netdev.e1000` |
| `driver/netdev/E1000.pas` | `driver/net/dev/driver.net.dev.e1000.pas` | `E1000` | `driver.net.dev.e1000` |
### Driver — Video (`driver/video/`)
+1 -1
View File
@@ -22,7 +22,7 @@ unit app.dhclient;
interface
uses
io.stdio, core.util, arch.x86.util, core.strings, debug.tracer, driver.net.dhcp;
io.stdio, core.util, arch.x86.util, core.strings, debug.tracer, driver.net.proto.dhcp;
procedure init();
+6 -6
View File
@@ -29,7 +29,7 @@ uses
//drivers
driver.storage.ctl.ram, driver.mgr,
//network
driver.net.ipv4, driver.net.arp, driver.net.tcp,
driver.net.proto.ipv4, driver.net.proto.arp, driver.net.proto.tcp,
//dispatch
driver.storage.filedispatch,
//wasm
@@ -56,11 +56,11 @@ begin
io.stdio.registerCommand('PS', @proc.mgr.terminal_command_ps, 'List running processes.');
io.stdio.registerCommand('KILL', @proc.mgr.terminal_command_kill, 'Force-kill a process by PID.');
io.stdio.registerCommand('TERMINATE', @proc.mgr.terminal_command_terminate, 'Gracefully terminate a process by PID.');
io.stdio.registerCommand('ARP', @driver.net.arp.terminal_command_arp, 'Get ARP Table.');
io.stdio.registerCommand('IFCONFIG', @driver.net.ipv4.terminal_command_ifconfig, 'Configure Network Settings.');
io.stdio.registerCommand('TCPCONNECT', @driver.net.tcp.terminal_command_tcpconnect, 'Connect to a TCP host and send Hello World.');
io.stdio.registerCommand('TCPLISTEN', @driver.net.tcp.terminal_command_tcplisten, 'Listen on a TCP port and log received data.');
io.stdio.registerCommand('TCPHTTP', @driver.net.tcp.terminal_command_tcphttp, 'Send HTTP GET to a host IP (port 80 default).');
io.stdio.registerCommand('ARP', @driver.net.proto.arp.terminal_command_arp, 'Get ARP Table.');
io.stdio.registerCommand('IFCONFIG', @driver.net.proto.ipv4.terminal_command_ifconfig, 'Configure Network Settings.');
io.stdio.registerCommand('TCPCONNECT', @driver.net.proto.tcp.terminal_command_tcpconnect, 'Connect to a TCP host and send Hello World.');
io.stdio.registerCommand('TCPLISTEN', @driver.net.proto.tcp.terminal_command_tcplisten, 'Listen on a TCP port and log received data.');
io.stdio.registerCommand('TCPHTTP', @driver.net.proto.tcp.terminal_command_tcphttp, 'Send HTTP GET to a host IP (port 80 default).');
io.stdio.registerCommand('USB', @driver.bus.usb.core.terminal_command_usb, 'driver.bus.usb subsystem information.');
{ Initialize baked-in programs }
+2 -2
View File
@@ -20,7 +20,7 @@ procedure init();
implementation
uses
arch.x86.bda, driver.net.types, driver.net.icmp, driver.net.util, core.strings,
arch.x86.bda, driver.net.types, driver.net.proto.icmp, driver.net.util, core.strings,
proc.mgr, core.util, arch.x86.util, memory.heap;
const
@@ -93,7 +93,7 @@ begin
{ Send ICMP echo request }
st^.Result := prWaiting;
st^.SendTime := Counters.c64;
driver.net.icmp.sendICMPRequest(ip, i, 128, @on_reply, @on_error, void(st));
driver.net.proto.icmp.sendICMPRequest(ip, i, 128, @on_reply, @on_error, void(st));
{ Spin-yield until callback fires or timeout }
tStart := Counters.c32;
+1 -1
View File
@@ -78,7 +78,7 @@ uses
arch.x86.cpu,
arch.x86.isr.types,
driver.timer.rtc,
driver.intf.serial,
driver.io.serial,
io.syslog;
function MsSinceSystemBoot : uint64;
@@ -17,7 +17,7 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit arch.x86.faults;
unit arch.x86.fault;
interface
+1 -1
View File
@@ -274,7 +274,7 @@ function Round(d: Double): int64;
implementation
{ ---- Raw driver.intf.serial debug helpers (COM1 $3F8, no dependencies) ---- }
{ ---- Raw driver.io.serial debug helpers (COM1 $3F8, no dependencies) ---- }
procedure serial_putch(ch: char); assembler;
asm
+7 -7
View File
@@ -36,10 +36,10 @@ uses
driver.video.desktop,
driver.video.doublebuffer,
driver.mgr,
driver.netdev.e1000,
driver.net.dev.e1000,
driver.bus.usb.ehci,
driver.storage.fs.fat32,
arch.x86.faults,
arch.x86.fault,
core.ds.fifo,
driver.storage.fs.mgr,
driver.storage.fs.flatfs,
@@ -76,7 +76,7 @@ uses
driver.hid.ps2.mouse,
core.rand,
driver.timer.rtc,
driver.intf.serial,
driver.io.serial,
boot.splash,
io.stdio,
driver.storage.mgr,
@@ -153,9 +153,9 @@ begin
System.init();
{ Serial Init }
driver.intf.serial.init();
driver.io.serial.init();
{ Syslog Init — right after driver.intf.serial so log hooks work }
{ Syslog Init — right after driver.io.serial so log hooks work }
io.syslog.init();
io.syslog.writestringln('Booting Asuro...');
@@ -201,7 +201,7 @@ begin
arch.x86.idt.init();
arch.x86.irq.init();
arch.x86.isr.mgr.init();
arch.x86.faults.init();
arch.x86.fault.init();
driver.timer.rtc.init();
arch.x86.memory.physical.init();
@@ -281,7 +281,7 @@ begin
driver.hid.ps2.keyboard.init(keyboard_layout);
driver.hid.ps2.mouse.init();
driver.exp.testdriver.init();
driver.netdev.e1000.init();
driver.net.dev.e1000.init();
driver.storage.ctl.ahci.init();
io.syslog.logln('KERNEL', 'DEVICE DRIVERS: INIT END.');
+5 -5
View File
@@ -3,12 +3,12 @@ unit core.version;
interface
const
VERSION = '1.1.3-alpha-166-ge922f086';
VERSION = '1.1.3-alpha-167-g6fa008ed';
VERSION_MAJOR = '1';
VERSION_MINOR = '1';
VERSION_SUB = '3';
REVISION = 'e922f086';
RELEASE = 'alpha-166-ge922f086';
REVISION = '6fa008ed';
RELEASE = 'alpha-167-g6fa008ed';
LINE_COUNT = 98036;
FILE_COUNT = 170;
DRIVER_COUNT = 69;
@@ -16,8 +16,8 @@ const
NASM_VERSION = '2.16.01';
MAKE_VERSION = '4.3';
COMPILE_DATE = '08/03/26';
COMPILE_TIME = '01:23:57';
CHECKSUM = 'cf6e92836483838a6c23a5993ede9b1c';
COMPILE_TIME = '09:59:10';
CHECKSUM = '73cd0068c4c908d288a4ac5b480dc00f';
implementation
@@ -17,7 +17,7 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit driver.intf.serial;
unit driver.io.serial;
interface
@@ -13,11 +13,11 @@
// limitations under the License.
{
Driver->NetDev->driver.netdev.e1000 - Intel driver.netdev.e1000/I217/82577LM Network Card Driver.
Driver->NetDev->driver.net.dev.e1000 - Intel driver.net.dev.e1000/I217/82577LM Network Card Driver.
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit driver.netdev.e1000;
unit driver.net.dev.e1000;
interface
@@ -253,7 +253,7 @@ var
i : uint32;
begin
push_trace('driver.netdev.e1000.readMACAddress');
push_trace('driver.net.dev.e1000.readMACAddress');
res:= true;
if (eeprom_exists) then begin
temp:= EEPROMRead(0);
@@ -307,9 +307,9 @@ begin
outptr:= puint8(vtop(uint32(ptr)));//puint8(uint32(ptr) - KERNEL_VIRTUAL_BASE);
io.syslog.log('driver.netdev.e1000 Driver', 'RX VMem: ');
io.syslog.log('driver.net.dev.e1000 Driver', 'RX VMem: ');
io.syslog.writehexln(uint32(ptr));
io.syslog.log('driver.netdev.e1000 Driver', 'RX Mem: ');
io.syslog.log('driver.net.dev.e1000 Driver', 'RX Mem: ');
io.syslog.writehexln(uint32(outptr));
writeCommand(REG_TXDESCLO, uint32(uint64(outptr) SHR 32));
@@ -399,11 +399,11 @@ end;
procedure writeCardType();
begin
io.syslog.log('driver.netdev.e1000 Driver', 'Card Type: ');
io.syslog.log('driver.net.dev.e1000 Driver', 'Card Type: ');
case card_type of
ctUnknown:io.syslog.writestringln('Unknown');
ct82577LM:io.syslog.writestringln('82577LM');
ctE1000:io.syslog.writestringln('Generic driver.netdev.e1000');
ctE1000:io.syslog.writestringln('Generic driver.net.dev.e1000');
ctI217:io.syslog.writestringln('I217');
end;
end;
@@ -464,7 +464,7 @@ begin
TestPacket[26]:= mac[4];
TestPacket[27]:= mac[5];
sendPacket(void(@TestPacket[0]), 42);
io.stdio.bufWriteStrLn(stdout_buf, 'driver.netdev.e1000 ARP Testpacket Sent.');
io.stdio.bufWriteStrLn(stdout_buf, 'driver.net.dev.e1000 ARP Testpacket Sent.');
pop_trace;
end;
@@ -473,7 +473,7 @@ begin
io.stdio.bufWriteStr(stdout_buf, 'Card: ');
case card_type of
ctUnknown:io.stdio.bufWriteStrLn(stdout_buf, 'Unknown');
ctE1000:io.stdio.bufWriteStrLn(stdout_buf, 'driver.netdev.e1000 Generic');
ctE1000:io.stdio.bufWriteStrLn(stdout_buf, 'driver.net.dev.e1000 Generic');
ct82577LM:io.stdio.bufWriteStrLn(stdout_buf, '82577LM');
ctI217:io.stdio.bufWriteStrLn(stdout_buf, 'I217');
else io.stdio.bufWriteStrLn(stdout_buf, 'UNIDENTIFIED!!!');
@@ -510,9 +510,9 @@ var
iline : uint8;
begin
push_trace('driver.netdev.e1000.load');
push_trace('driver.net.dev.e1000.load');
io.syslog.logln('driver.netdev.e1000 Driver', 'Load Start.');
io.syslog.logln('driver.net.dev.e1000 Driver', 'Load Start.');
writeCardType();
@@ -532,12 +532,12 @@ begin
eeprom_exists:= false;
detectEEPROM();
if eeprom_exists then io.syslog.logln('driver.netdev.e1000 Driver', 'EEPROM Exists: YES.') else io.syslog.logln('driver.netdev.e1000 Driver', 'EEPROM Exists: NO.');
if eeprom_exists then io.syslog.logln('driver.net.dev.e1000 Driver', 'EEPROM Exists: YES.') else io.syslog.logln('driver.net.dev.e1000 Driver', 'EEPROM Exists: NO.');
if not readMACAddress() then begin
io.syslog.logln('driver.netdev.e1000 Driver', 'MAC Read Failed.');
io.syslog.logln('driver.net.dev.e1000 Driver', 'MAC Read Failed.');
load:= false;
end else begin
io.syslog.log('driver.netdev.e1000 Driver', 'MAC Address: ');
io.syslog.log('driver.net.dev.e1000 Driver', 'MAC Address: ');
io.syslog.writehexpair(mac[0]); io.syslog.writestring(':');
io.syslog.writehexpair(mac[1]); io.syslog.writestring(':');
io.syslog.writehexpair(mac[2]); io.syslog.writestring(':');
@@ -561,11 +561,11 @@ begin
load:= true;
if load then registercommand('driver.netdev.e1000', @terminal_command_e1000status, 'driver.netdev.e1000 Information.');
if load then registercommand('driver.net.dev.e1000', @terminal_command_e1000status, 'driver.net.dev.e1000 Information.');
if load then registercommand('MAC', @console_command_mac, 'Print MAC Address.');
end;
io.syslog.logln('driver.netdev.e1000 Driver', 'Load Finish.');
io.syslog.logln('driver.net.dev.e1000 Driver', 'Load Finish.');
pop_trace;
end;
@@ -602,7 +602,7 @@ var
dev : TDeviceIdentifier;
begin
push_trace('driver.netdev.e1000.init');
push_trace('driver.net.dev.e1000.init');
card_type:= ctUnknown;
dev.Bus:= biPCI;
dev.id0:= INTEL_VEND;
@@ -611,7 +611,7 @@ begin
dev.id3:= idANY;
dev.id4:= E1000_DEV;
dev.ex:= nil;
driver.mgr.register_driver('driver.netdev.e1000 Ethernet Driver', @dev, @loadE1000);
driver.mgr.register_driver('driver.net.dev.e1000 Ethernet Driver', @dev, @loadE1000);
dev.id4:= I217_DEV;
driver.mgr.register_driver('I217 Ethernet Driver', @dev, @loadI217);
dev.id4:= LM82577_DEV;
@@ -39,11 +39,11 @@ procedure writeToLogLn(str : pchar);
implementation
uses
driver.netdev.e1000, //dev
driver.net.eth2, //L2
driver.net.arp, driver.net.ipv4, //L3
driver.net.icmp, driver.net.tcp, driver.net.udp, //L4
driver.net.dhcp; //L5
driver.net.dev.e1000, //dev
driver.net.proto.eth2, //L2
driver.net.proto.arp, driver.net.proto.ipv4, //L3
driver.net.proto.icmp, driver.net.proto.tcp, driver.net.proto.udp, //L4
driver.net.proto.dhcp; //L5
var
CBSend : TNetSendCallback = nil;
@@ -130,16 +130,16 @@ begin
push_trace('driver.net.init');
writeToLogLn('L1/NET: init');
//l2
driver.net.eth2.register;
driver.net.proto.eth2.register;
//l3
driver.net.arp.register;
driver.net.ipv4.register;
driver.net.proto.arp.register;
driver.net.proto.ipv4.register;
//l4
driver.net.icmp.register;
driver.net.tcp.register;
driver.net.udp.register;
driver.net.proto.icmp.register;
driver.net.proto.tcp.register;
driver.net.proto.udp.register;
//l5
driver.net.dhcp.register;
driver.net.proto.dhcp.register;
pop_trace;
end;
@@ -17,7 +17,7 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit driver.net.arp;
unit driver.net.proto.arp;
interface
@@ -25,7 +25,7 @@ uses
debug.tracer, memory.heap,
core.util, arch.x86.util, core.ds.lists,
driver.net, driver.net.types, driver.net.util,
driver.net.eth2, driver.net.ipv4, io.stdio;
driver.net.proto.eth2, driver.net.proto.ipv4, io.stdio;
type
PARPCacheRecord = ^TARPCacheRecord;
@@ -58,7 +58,7 @@ var
r : PARPCacheRecord;
begin
push_trace('driver.net.arp.findCacheRecordByMAC');
push_trace('driver.net.proto.arp.findCacheRecordByMAC');
findCacheRecordByMAC:= nil;
if LL_Size(Cache) > 0 then begin
for i:=0 to LL_Size(Cache)-1 do begin
@@ -77,7 +77,7 @@ var
r : PARPCacheRecord;
begin
push_trace('driver.net.arp.findCacheRecordByIP');
push_trace('driver.net.proto.arp.findCacheRecordByIP');
findCacheRecordByIP:= nil;
if LL_Size(Cache) > 0 then begin
for i:=0 to LL_Size(Cache)-1 do begin
@@ -97,7 +97,7 @@ var
hSize, pSize : uint8;
begin
push_trace('driver.net.arp.send');
push_trace('driver.net.proto.arp.send');
if p_context <> nil then begin
buf:= kalloc(sizeof(TARPHeader));
hdr:= PARPHeader(buf);
@@ -126,7 +126,7 @@ begin
if MACEqual(@p_context^.MAC.Destination[0], @NULL_MAC[0]) then begin
CopyMAC(@BROADCAST_MAC[0], @p_context^.MAC.Destination[0]);
end;
driver.net.eth2.send(buf, sizeof(TARPHeader), $0806, p_context);
driver.net.proto.eth2.send(buf, sizeof(TARPHeader), $0806, p_context);
end;
kfree(buf);
end;
@@ -137,14 +137,14 @@ var
context : PPacketContext;
begin
push_trace('driver.net.arp.sendGratuitous');
push_trace('driver.net.proto.arp.sendGratuitous');
writeToLogLn(' L3/ARP: sendGratuitous');
context:= newPacketContext;
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Destination[0]);
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]);
CopyMAC(GetMAC, @context^.MAC.Source[0]);
CopyMAC(@NULL_MAC[0], @context^.MAC.Destination[0]);
driver.net.arp.send($1, $0800, $1, context);
driver.net.proto.arp.send($1, $0800, $1, context);
freePacketContext(context);
end;
@@ -154,7 +154,7 @@ var
CacheRecord : PARPCacheRecord;
begin
push_trace('driver.net.arp.sendRequestGateway');
push_trace('driver.net.proto.arp.sendRequestGateway');
context:= newPacketContext;
CacheRecord:= findCacheRecordByIP(@getIPv4Config^.Gateway[0]);
if CacheRecord <> nil then begin
@@ -162,7 +162,7 @@ begin
CopyIPv4(ip, @context^.IP.Destination[0]);
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]);
CopyMAC(GetMAC, @context^.MAC.Source[0]);
driver.net.arp.send($1, $0800, $1, context);
driver.net.proto.arp.send($1, $0800, $1, context);
end;
freePacketContext(context);
end;
@@ -173,7 +173,7 @@ var
CacheRecord : PARPCacheRecord;
begin
push_trace('driver.net.arp.sendRequest');
push_trace('driver.net.proto.arp.sendRequest');
writeToLogLn(' L3/ARP: sendRequest');
context:= newPacketContext;
CopyIPv4(ip, @context^.IP.Destination[0]);
@@ -181,7 +181,7 @@ begin
CopyMAC(GetMAC, @context^.MAC.Source[0]);
CacheRecord:= findCacheRecordByIP(@getIPv4Config^.Gateway[0]);
CopyMAC(@NULL_MAC[0], @context^.MAC.Destination[0]);
driver.net.arp.send($1, $0800, $1, context);
driver.net.proto.arp.send($1, $0800, $1, context);
freePacketContext(context);
sendRequestGateway(ip);
end;
@@ -191,7 +191,7 @@ var
CacheRecord : PARPCacheRecord;
begin
push_trace('driver.net.arp.resolveIP');
push_trace('driver.net.proto.arp.resolveIP');
CacheRecord:= findCacheRecordByIP(ip);
resolveIP:= nil;
if CacheRecord = nil then begin
@@ -211,7 +211,7 @@ var
context : PPacketContext;
begin
push_trace('driver.net.arp.recv');
push_trace('driver.net.proto.arp.recv');
{ Get our converted Header }
Header:= PARPHeader(p_data);
AHeader.Hardware_Type:= (Header^.Hardware_Type_Hi SHL 8) + Header^.Hardware_Type_Lo;
@@ -305,11 +305,11 @@ end;
procedure register;
begin
push_trace('driver.net.arp.register');
push_trace('driver.net.proto.arp.register');
if not Registered then begin
writeToLogLn(' L3/ARP: register');
Cache:= LL_New(sizeof(TARPCacheRecord));
driver.net.eth2.registerTypePromisc($0806, @recv);
driver.net.proto.eth2.registerTypePromisc($0806, @recv);
Registered:= true;
end;
pop_trace;
@@ -320,7 +320,7 @@ var
r : PARPCacheRecord;
begin
push_trace('driver.net.arp.IPv4ToMAC');
push_trace('driver.net.proto.arp.IPv4ToMAC');
register;
IPv4ToMAC:= nil;
r:= findCacheRecordByIP(ip);
@@ -335,7 +335,7 @@ var
r : PARPCacheRecord;
begin
push_trace('driver.net.arp.MACToIPv4');
push_trace('driver.net.proto.arp.MACToIPv4');
register;
MACToIIPv4:= nil;
r:= findCacheRecordByMAC(mac);
@@ -17,7 +17,7 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit driver.net.eth2;
unit driver.net.proto.eth2;
interface
@@ -36,7 +36,7 @@ procedure register;
implementation
uses
driver.net.arp;
driver.net.proto.arp;
var
Registered : Boolean = false;
@@ -46,7 +46,7 @@ var
procedure registerTypePromisc(eType : uint16; RecvCB : TRecvCallback);
begin
push_trace('driver.net.eth2.registerTypePromisc');
push_trace('driver.net.proto.eth2.registerTypePromisc');
register;
if EthTypes[eType] = nil then EthTypes[eType]:= RecvCB;
Promisc[eType]:= true;
@@ -54,7 +54,7 @@ end;
procedure registerType(eType : uint16; RecvCB : TRecvCallback);
begin
push_trace('driver.net.eth2.registerType');
push_trace('driver.net.proto.eth2.registerType');
register;
if EthTypes[eType] = nil then EthTypes[eType]:= RecvCB;
end;
@@ -70,8 +70,8 @@ var
begin
pad:= 46 - p_len;
if pad < 0 then pad:= 0;
push_trace('driver.net.eth2.send');
writeToLogLn(' L2: driver.net.eth2.send');
push_trace('driver.net.proto.eth2.send');
writeToLogLn(' L2: driver.net.proto.eth2.send');
if p_context <> nil then begin
size:= sizeof(TEthernetHeader) + p_len + pad;// + 4;
buffer:= kalloc(size);
@@ -95,7 +95,7 @@ var
buf : puint8;
begin
push_trace('driver.net.eth2.recv');
push_trace('driver.net.proto.eth2.recv');
buf:= puint8(p_data);
Header:= PEthernetHeader(buf);
@@ -120,7 +120,7 @@ var
i : uint16;
begin
push_trace('driver.net.eth2.register');
push_trace('driver.net.proto.eth2.register');
if not Registered then begin
writeToLogLn(' L2/ETH: register');
for i:=0 to 65535 do begin
@@ -17,14 +17,14 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit driver.net.icmp;
unit driver.net.proto.icmp;
interface
uses
arch.x86.bda,
memory.heap, debug.tracer,
driver.net, driver.net.types, driver.net.util, driver.net.ipv4, driver.net.arp, core.util, arch.x86.util;
driver.net, driver.net.types, driver.net.util, driver.net.proto.ipv4, driver.net.proto.arp, core.util, arch.x86.util;
type
TARPErrorCode = (aecFailedToResolveHost, aecNoRouteToHost, aecTimeout, aecTTLExpired);
@@ -50,7 +50,7 @@ var
i : uint8;
begin
push_trace('driver.net.icmp.nextInactiveHandler');
push_trace('driver.net.proto.icmp.nextInactiveHandler');
nextInactiveHandler:= 0;
for i:=1 to 255 do begin
if not Handlers[i].Active then begin
@@ -76,7 +76,7 @@ var
Size : uint32;
begin
push_trace('driver.net.icmp.sendICMPRequest');
push_trace('driver.net.proto.icmp.sendICMPRequest');
writeToLogLn(' L4/ICMP: sendICMPRequest');
handle:= nextInactiveHandler;
Handlers[handle].Active:= true;
@@ -84,9 +84,9 @@ begin
Handlers[handle].OnError:= OnErr;
Handlers[handle].UserData:= userData;
if SameSubnetIPv4(ip, @getIPv4Config^.Address[0], @getIPv4Config^.Netmask[0]) then begin
dest_mac:= driver.net.arp.resolveIP(ip);
dest_mac:= driver.net.proto.arp.resolveIP(ip);
end else begin
dest_mac:= driver.net.arp.resolveIP(@getIPv4Config^.Gateway[0]);
dest_mac:= driver.net.proto.arp.resolveIP(@getIPv4Config^.Gateway[0]);
end;
if dest_mac = nil then begin
if Handlers[handle].OnError <> nil then Handlers[handle].OnError(nil, aecFailedToResolveHost, Handlers[handle].UserData);
@@ -116,7 +116,7 @@ begin
Header^.ICMP_CHK_Hi:= CHK AND $FF;
Header^.ICMP_CHK_Lo:= CHK SHR 8;
driver.net.ipv4.send(Buffer, size, context);
driver.net.proto.ipv4.send(Buffer, size, context);
freePacketContext(context);
end;
@@ -134,7 +134,7 @@ var
Handle : uint8;
begin
push_trace('driver.net.icmp.recv');
push_trace('driver.net.proto.icmp.recv');
writeToLogLn(' L4/ICMP: recv');
Header:= PICMPHeader(p_data);
//writehexlnWND(Header^.ICMP_Type, getTerminalHWND);
@@ -150,7 +150,7 @@ begin
Header^.ICMP_CHK_Lo:= CHK SHR 8;
p_context^.Protocol.L4:= $01;
p_context^.TTL:= 128;
driver.net.ipv4.send(p_data, p_len, p_context);
driver.net.proto.ipv4.send(p_data, p_len, p_context);
end;
$00:begin //Reply
Handle:= Header^.Identifier;
@@ -172,7 +172,7 @@ var
i : uint32;
begin
push_trace('driver.net.icmp.register');
push_trace('driver.net.proto.icmp.register');
writeToLogLn(' L4/ICMP: register');
for i:=0 to 255 do begin
Handlers[i].Active:= false;
@@ -180,7 +180,7 @@ begin
Handlers[i].OnReply:= nil;
Handlers[i].UserData:= nil;
end;
driver.net.ipv4.registerProtocol($01, @recv);
driver.net.proto.ipv4.registerProtocol($01, @recv);
end;
end.
@@ -17,7 +17,7 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit driver.net.ipv4;
unit driver.net.proto.ipv4;
interface
@@ -26,7 +26,7 @@ uses
core.util, arch.x86.util, core.strings,
driver.net, driver.net.types, driver.net.util,
core.ds.lists,
driver.net.eth2, io.stdio;
driver.net.proto.eth2, io.stdio;
procedure send(p_data : void; p_len : uint16; p_context : PPacketContext);
procedure registerProtocol(Protocol_ID : uint8; recv_callback : TRecvCallback);
@@ -37,7 +37,7 @@ procedure terminal_command_ifconfig(params : PParamList; stdin_buf, stdout_buf,
implementation
uses
driver.net.arp;
driver.net.proto.arp;
var
Registered : Boolean = false;
@@ -47,7 +47,7 @@ var
function getIPv4Config : PIPv4Configuration;
begin
push_trace('driver.net.ipv4.getIPv4Config');
push_trace('driver.net.proto.ipv4.getIPv4Config');
getIPv4Config:= @Config;
pop_trace;
end;
@@ -60,7 +60,7 @@ var
buffer : void;
begin
push_trace('driver.net.ipv4.send');
push_trace('driver.net.proto.ipv4.send');
inc(CurrentID);
Header.version:= 4;
Header.header_len:= 5;
@@ -86,7 +86,7 @@ begin
Buffer:= kalloc(Len);
memcpy(uint32(@Header), uint32(Buffer), Header.header_len * 4);
memcpy(uint32(p_data), uint32(Buffer) + (Header.header_len * 4), p_len);
driver.net.eth2.send(Buffer, (Header.header_len * 4) + p_len, $0800, p_context);
driver.net.proto.eth2.send(Buffer, (Header.header_len * 4) + p_len, $0800, p_context);
kfree(Buffer);
pop_trace;
end;
@@ -100,7 +100,7 @@ var
len : uint16;
begin
push_trace('driver.net.ipv4.recv');
push_trace('driver.net.proto.ipv4.recv');
Header:= PIPV4Header(p_data);
AHeader.version:= Header^.version;
AHeader.header_len:= Header^.header_len;
@@ -175,9 +175,9 @@ begin
Config.UP:= false;
end;
end;
driver.net.arp.sendGratuitous;
driver.net.proto.arp.sendGratuitous;
CopyIPv4(@Config.Gateway[0], @Target[0]);
driver.net.arp.sendRequest(@Target[0]);
driver.net.proto.arp.sendRequest(@Target[0]);
end else begin
io.stdio.bufWriteStr(stdout_buf, ' MAC: ');
writeMACAddress(driver.net.GetMAC, stdout_buf);
@@ -199,7 +199,7 @@ var
i : uint8;
begin
push_trace('driver.net.ipv4.register');
push_trace('driver.net.proto.ipv4.register');
if not Registered then begin
writeToLogLn(' L3/IPv4: register');
for i:=0 to 255 do begin
@@ -211,7 +211,7 @@ begin
Config.Netmask[i]:= 0;
end;
Config.UP:= false;
driver.net.eth2.registerType($0800, @recv);
driver.net.proto.eth2.registerType($0800, @recv);
Registered:= true;
end;
pop_trace;
@@ -219,7 +219,7 @@ end;
procedure registerProtocol(Protocol_ID : uint8; recv_callback : TRecvCallback);
begin
push_trace('driver.net.ipv4.registerProtocol');
push_trace('driver.net.proto.ipv4.registerProtocol');
register;
if Protocols[Protocol_ID] = nil then Protocols[Protocol_ID]:= recv_callback;
pop_trace;
File diff suppressed because it is too large Load Diff
@@ -17,14 +17,14 @@
@author(Kieron Morris <kjm@kieronmorris.me>)
}
unit driver.net.udp;
unit driver.net.proto.udp;
interface
uses
memory.heap,
driver.net.types, driver.net.util,
driver.net.ipv4, driver.net,
driver.net.proto.ipv4, driver.net,
debug.tracer, core.util, arch.x86.util;
procedure register();
@@ -71,7 +71,7 @@ begin
nullend:= true;
end;
pseudoBuffer:= kalloc(sizeof(TUDPPseudoHeader) + pseudoSize);
push_trace('driver.net.udp.CalculateChecksum');
push_trace('driver.net.proto.udp.CalculateChecksum');
pseudoBuffer8:= puint8(pseudoBuffer);
pseudoBuffer16:= puint16(pseudoBuffer);
pseudoBuffer32:= puint32(pseudoBuffer);
@@ -119,7 +119,7 @@ var
begin
push_trace('driver.net.udp.send');
push_trace('driver.net.proto.udp.send');
if udpContext <> nil then begin
size:= p_len + sizeof(TUDPHeader);
buffer:= kalloc(size);
@@ -141,7 +141,7 @@ begin
udpContext^.context^.Protocol.L4:= $11;
driver.net.ipv4.send(buffer, size, udpContext^.context);
driver.net.proto.ipv4.send(buffer, size, udpContext^.context);
kfree(buffer);
kfree(void(hdr));
@@ -154,7 +154,7 @@ var
context : PUDPBindContext;
begin
push_trace('driver.net.udp.bind');
push_trace('driver.net.proto.udp.bind');
result:= tueGenericError;
if bindContext <> nil then begin
if Ports[bindContext^.port] = nil then begin
@@ -177,7 +177,7 @@ var
context : PUDPBindContext;
begin
push_trace('driver.net.udp.unbind');
push_trace('driver.net.proto.udp.unbind');
result:= tueGenericError;
if bindContext <> nil then begin
context:= Ports[bindContext^.port];
@@ -207,7 +207,7 @@ var
size : uint16;
begin
push_trace('driver.net.udp.ProcessPacket');
push_trace('driver.net.proto.udp.ProcessPacket');
header:= PUDPHeader(p_data);
if Ports[switchendian16(header^.DstPort)] <> nil then begin
context:= PUDPPacketContext(kalloc(sizeof(TUDPPacketContext)));
@@ -250,7 +250,7 @@ var
Checksum : uint32;
begin
push_trace('driver.net.udp.register');
push_trace('driver.net.proto.udp.register');
writeToLogLn(' L4/UDP: register');
for i:=0 to 65535 do begin
Ports[i]:= nil;
@@ -269,7 +269,7 @@ begin
//writehexln(Checksum);
//while true do begin end;
driver.net.ipv4.registerProtocol($11, @ProcessPacket);
driver.net.proto.ipv4.registerProtocol($11, @ProcessPacket);
end;
end.

Some files were not shown because too many files have changed in this diff Show More