Namespace Restructure #54
@@ -18,3 +18,4 @@ lessons_learnt.md
|
||||
*.log
|
||||
/doc/*.md
|
||||
wasuro
|
||||
src/core/core.version.pas
|
||||
|
||||
+28
-26
@@ -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/`)
|
||||
|
||||
|
||||
@@ -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
@@ -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 }
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
@@ -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.');
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
+18
-18
@@ -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);
|
||||
+25
-25
File diff suppressed because it is too large
Load Diff
@@ -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
|
||||
+11
-11
@@ -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.
|
||||
+12
-12
@@ -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
Reference in New Issue
Block a user