diff --git a/Asuro.iso b/Asuro.iso index 7749b732..71af8d21 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 1b1a91da..5d7e3a58 100755 Binary files a/bin/kernel.bin and b/bin/kernel.bin differ diff --git a/checksums.md5 b/checksums.md5 index a35f1e93..4e1509c8 100644 --- a/checksums.md5 +++ b/checksums.md5 @@ -54,7 +54,7 @@ afd15dca933f082c73f48aba1059a04e src/include/lists.pas 2aa600f989602fd2aaed548d7344736e src/include/strings.pas 01e4c69601c664fff8922f4a0d96c02d src/include/system.pas 6103928fbe8c413929cde49df82f5a1f src/include/types.pas -177a03d217eba976acf0ead9e70d14c0 src/include/util.pas +789637d35c491e923507274ba63f0898 src/include/util.pas be084ee5d65fdc85182ff87a3f09c831 src/driver/storage/AHCI_OLD.pas e9c1a0807931287779b0295a88faec30 src/driver/storage/AHCI.pas ff442b1dc417a277c68b2890740ea5a2 src/driver/storage/asfs.pas @@ -80,10 +80,10 @@ d6b9b21258bcb471d91c85c85c92cdca src/driver/bus/UHCI.pas 0d38ece46e1dd89d6b9298d2dd21e809 src/driver/bus/XHCI.pas e6bac1105d578010d8c80ad98e73da75 src/driver/net/l4/icmp.pas d15e40376b2ea95d309c19959bbe670c src/driver/net/l4/tcp.pas -3a02b37b3f8e93bef04927d5a7f309ba src/driver/net/l4/udp.pas +9863f5fcb07e10a6776e15dea8c0180c src/driver/net/l4/udp.pas 37a2153a326041fccdc8d3006ec81001 src/driver/net/l2/eth2.pas -75ae2c46702f7bb8c18ec96958eb65de src/driver/net/l1/net.pas -a7b1395877c5bfbf03ee440f1bc30b6e src/driver/net/include/nettypes.pas +31163add86f65e5dfa3eb519f4cc6334 src/driver/net/l1/net.pas +d877ae603669cb210bba08cafddff767 src/driver/net/include/nettypes.pas 9ee7cf2903b026bda5113c433081d895 src/driver/net/include/netutils.pas f26d7788d454b9eb27d65b99908aebea src/driver/net/l3/arp.pas 036941af78c64a14334b3cd4751889ce src/driver/net/l3/ipv4.pas diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index 1b1a91da..5d7e3a58 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/ACE.ppu b/lib/ACE.ppu index 3e5a2f1d..98f3b497 100644 Binary files a/lib/ACE.ppu and b/lib/ACE.ppu differ diff --git a/lib/BPE.ppu b/lib/BPE.ppu index 08a77ab2..1323d9a1 100644 Binary files a/lib/BPE.ppu and b/lib/BPE.ppu differ diff --git a/lib/BTSSE.ppu b/lib/BTSSE.ppu index c197fade..1334f5ee 100644 Binary files a/lib/BTSSE.ppu and b/lib/BTSSE.ppu differ diff --git a/lib/CFE.ppu b/lib/CFE.ppu index 2735070e..13a3e3e7 100644 Binary files a/lib/CFE.ppu and b/lib/CFE.ppu differ diff --git a/lib/CSOE.ppu b/lib/CSOE.ppu index cf7d783a..19c6a6c5 100644 Binary files a/lib/CSOE.ppu and b/lib/CSOE.ppu differ diff --git a/lib/DBGE.ppu b/lib/DBGE.ppu index d9dad3f1..876ca71c 100644 Binary files a/lib/DBGE.ppu and b/lib/DBGE.ppu differ diff --git a/lib/DBZ.ppu b/lib/DBZ.ppu index b9b869f6..9069d71c 100644 Binary files a/lib/DBZ.ppu and b/lib/DBZ.ppu differ diff --git a/lib/DFE.ppu b/lib/DFE.ppu index 1ef081ac..10a4946d 100644 Binary files a/lib/DFE.ppu and b/lib/DFE.ppu differ diff --git a/lib/E1000.ppu b/lib/E1000.ppu index e51407b9..1333cbf9 100644 Binary files a/lib/E1000.ppu and b/lib/E1000.ppu differ diff --git a/lib/EHCI.ppu b/lib/EHCI.ppu index c4cf0389..7fb636cf 100644 Binary files a/lib/EHCI.ppu and b/lib/EHCI.ppu differ diff --git a/lib/GPF.ppu b/lib/GPF.ppu index 07b4475d..190f2260 100644 Binary files a/lib/GPF.ppu and b/lib/GPF.ppu differ diff --git a/lib/IDE.ppu b/lib/IDE.ppu index f8a263c9..0100d1d3 100644 Binary files a/lib/IDE.ppu and b/lib/IDE.ppu differ diff --git a/lib/IDOE.ppu b/lib/IDOE.ppu index 6d3e6b74..99d27e08 100644 Binary files a/lib/IDOE.ppu and b/lib/IDOE.ppu differ diff --git a/lib/IOPE.ppu b/lib/IOPE.ppu index 59c05a78..e6aaf17e 100644 Binary files a/lib/IOPE.ppu and b/lib/IOPE.ppu differ diff --git a/lib/MCE.ppu b/lib/MCE.ppu index ac7d37fa..cc392592 100644 Binary files a/lib/MCE.ppu and b/lib/MCE.ppu differ diff --git a/lib/NCE.ppu b/lib/NCE.ppu index e0711c5f..eaf3937f 100644 Binary files a/lib/NCE.ppu and b/lib/NCE.ppu differ diff --git a/lib/NMIE.ppu b/lib/NMIE.ppu index 918bb5ad..b12cce00 100644 Binary files a/lib/NMIE.ppu and b/lib/NMIE.ppu differ diff --git a/lib/OHCI.ppu b/lib/OHCI.ppu index cf844131..5ddf7242 100644 Binary files a/lib/OHCI.ppu and b/lib/OHCI.ppu differ diff --git a/lib/OOBE.ppu b/lib/OOBE.ppu index 4d5cc841..acaaf314 100644 Binary files a/lib/OOBE.ppu and b/lib/OOBE.ppu differ diff --git a/lib/PCI.ppu b/lib/PCI.ppu index d50d7fe8..384532f7 100644 Binary files a/lib/PCI.ppu and b/lib/PCI.ppu differ diff --git a/lib/PF.ppu b/lib/PF.ppu index f1a30a9c..9765e1ca 100644 Binary files a/lib/PF.ppu and b/lib/PF.ppu differ diff --git a/lib/PS2_KEYBOARD_ISR.ppu b/lib/PS2_KEYBOARD_ISR.ppu index 0fc07c71..469a6e0a 100644 Binary files a/lib/PS2_KEYBOARD_ISR.ppu and b/lib/PS2_KEYBOARD_ISR.ppu differ diff --git a/lib/RTC.ppu b/lib/RTC.ppu index dde56c35..ffdd9daf 100644 Binary files a/lib/RTC.ppu and b/lib/RTC.ppu differ diff --git a/lib/SFE.ppu b/lib/SFE.ppu index be171362..d5efd70d 100644 Binary files a/lib/SFE.ppu and b/lib/SFE.ppu differ diff --git a/lib/SNPE.ppu b/lib/SNPE.ppu index 330966d1..99cda5ef 100644 Binary files a/lib/SNPE.ppu and b/lib/SNPE.ppu differ diff --git a/lib/TMR_0_ISR.ppu b/lib/TMR_0_ISR.ppu index f591e544..d73dffde 100644 Binary files a/lib/TMR_0_ISR.ppu and b/lib/TMR_0_ISR.ppu differ diff --git a/lib/UHCI.ppu b/lib/UHCI.ppu index 25b82591..0a80b47b 100644 Binary files a/lib/UHCI.ppu and b/lib/UHCI.ppu differ diff --git a/lib/UIE.ppu b/lib/UIE.ppu index ee077a6f..3c0406e8 100644 Binary files a/lib/UIE.ppu and b/lib/UIE.ppu differ diff --git a/lib/USB.ppu b/lib/USB.ppu index ac13399e..0c354771 100644 Binary files a/lib/USB.ppu and b/lib/USB.ppu differ diff --git a/lib/XHCI.ppu b/lib/XHCI.ppu index 14e06651..a62ed873 100644 Binary files a/lib/XHCI.ppu and b/lib/XHCI.ppu differ diff --git a/lib/arp.ppu b/lib/arp.ppu index 432698b9..8504bc4d 100644 Binary files a/lib/arp.ppu and b/lib/arp.ppu differ diff --git a/lib/asuro.ppu b/lib/asuro.ppu index 4625cf0b..f352bbd2 100644 Binary files a/lib/asuro.ppu and b/lib/asuro.ppu differ diff --git a/lib/console.ppu b/lib/console.ppu index e53b75a2..6f274dc2 100644 Binary files a/lib/console.ppu and b/lib/console.ppu differ diff --git a/lib/cpu.ppu b/lib/cpu.ppu index 5edf47a8..79e79128 100644 Binary files a/lib/cpu.ppu and b/lib/cpu.ppu differ diff --git a/lib/drivermanagement.ppu b/lib/drivermanagement.ppu index c35ee705..75862882 100644 Binary files a/lib/drivermanagement.ppu and b/lib/drivermanagement.ppu differ diff --git a/lib/eth2.ppu b/lib/eth2.ppu index 0725d8c9..e9b8a014 100644 Binary files a/lib/eth2.ppu and b/lib/eth2.ppu differ diff --git a/lib/fat32.ppu b/lib/fat32.ppu index 3c3581a6..346ecf83 100644 Binary files a/lib/fat32.ppu and b/lib/fat32.ppu differ diff --git a/lib/icmp.ppu b/lib/icmp.ppu index 14c7f4a7..0edcb9af 100644 Binary files a/lib/icmp.ppu and b/lib/icmp.ppu differ diff --git a/lib/idt.ppu b/lib/idt.ppu index 67b295c7..dfb7e6f0 100644 Binary files a/lib/idt.ppu and b/lib/idt.ppu differ diff --git a/lib/ipv4.ppu b/lib/ipv4.ppu index a0a07a4d..4a657348 100644 Binary files a/lib/ipv4.ppu and b/lib/ipv4.ppu differ diff --git a/lib/irq.ppu b/lib/irq.ppu index ebc51121..a2773333 100644 Binary files a/lib/irq.ppu and b/lib/irq.ppu differ diff --git a/lib/isrmanager.ppu b/lib/isrmanager.ppu index 700c5427..b74049a7 100644 Binary files a/lib/isrmanager.ppu and b/lib/isrmanager.ppu differ diff --git a/lib/kernel.ppu b/lib/kernel.ppu index fb0f5f16..775a3d82 100644 Binary files a/lib/kernel.ppu and b/lib/kernel.ppu differ diff --git a/lib/keyboard.ppu b/lib/keyboard.ppu index 3434f29e..0e41cd78 100644 Binary files a/lib/keyboard.ppu and b/lib/keyboard.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index be17a683..ccf13eed 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 73fbfb1f..46e30898 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index d5fb2ca2..b9ec797d 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/lists.ppu b/lib/lists.ppu index 8150c953..e8fb315c 100644 Binary files a/lib/lists.ppu and b/lib/lists.ppu differ diff --git a/lib/lmemorymanager.ppu b/lib/lmemorymanager.ppu index a4eb1597..f05861d6 100644 Binary files a/lib/lmemorymanager.ppu and b/lib/lmemorymanager.ppu differ diff --git a/lib/memview.ppu b/lib/memview.ppu index beb41893..932dd5a3 100644 Binary files a/lib/memview.ppu and b/lib/memview.ppu differ diff --git a/lib/mouse.ppu b/lib/mouse.ppu index 798203fe..271b37e6 100644 Binary files a/lib/mouse.ppu and b/lib/mouse.ppu differ diff --git a/lib/net.ppu b/lib/net.ppu index 3eb018f4..9aa6a840 100644 Binary files a/lib/net.ppu and b/lib/net.ppu differ diff --git a/lib/netlog.ppu b/lib/netlog.ppu index ee928991..88a972a6 100644 Binary files a/lib/netlog.ppu and b/lib/netlog.ppu differ diff --git a/lib/nettypes.ppu b/lib/nettypes.ppu index 553b5c6e..a51ffe1a 100644 Binary files a/lib/nettypes.ppu and b/lib/nettypes.ppu differ diff --git a/lib/netutils.ppu b/lib/netutils.ppu index 5eba3b98..82afa8a8 100644 Binary files a/lib/netutils.ppu and b/lib/netutils.ppu differ diff --git a/lib/pmemorymanager.ppu b/lib/pmemorymanager.ppu index 7483fc85..0e7632bf 100644 Binary files a/lib/pmemorymanager.ppu and b/lib/pmemorymanager.ppu differ diff --git a/lib/serial.ppu b/lib/serial.ppu index dd4caf8a..9ae2fbe6 100644 Binary files a/lib/serial.ppu and b/lib/serial.ppu differ diff --git a/lib/shell.ppu b/lib/shell.ppu index a333ed26..8bc697fe 100644 Binary files a/lib/shell.ppu and b/lib/shell.ppu differ diff --git a/lib/storagemanagement.ppu b/lib/storagemanagement.ppu index 8594c955..9df7c322 100644 Binary files a/lib/storagemanagement.ppu and b/lib/storagemanagement.ppu differ diff --git a/lib/strings.ppu b/lib/strings.ppu index 414880dd..0853d20d 100644 Binary files a/lib/strings.ppu and b/lib/strings.ppu differ diff --git a/lib/terminal.ppu b/lib/terminal.ppu index 5adb6e36..67178495 100644 Binary files a/lib/terminal.ppu and b/lib/terminal.ppu differ diff --git a/lib/tracer.ppu b/lib/tracer.ppu index 055936f9..b106814c 100644 Binary files a/lib/tracer.ppu and b/lib/tracer.ppu differ diff --git a/lib/util.ppu b/lib/util.ppu index 2e571bbe..4c50a03f 100644 Binary files a/lib/util.ppu and b/lib/util.ppu differ diff --git a/lib/vmemorymanager.ppu b/lib/vmemorymanager.ppu index e80a8416..26831813 100644 Binary files a/lib/vmemorymanager.ppu and b/lib/vmemorymanager.ppu differ diff --git a/lib/vmlog.ppu b/lib/vmlog.ppu index 39795c13..64201509 100644 Binary files a/lib/vmlog.ppu and b/lib/vmlog.ppu differ diff --git a/lib/vmstate.ppu b/lib/vmstate.ppu index 58807714..52b94065 100644 Binary files a/lib/vmstate.ppu and b/lib/vmstate.ppu differ diff --git a/src/driver/net/include/nettypes.pas b/src/driver/net/include/nettypes.pas index 43d03577..6aaf032c 100644 --- a/src/driver/net/include/nettypes.pas +++ b/src/driver/net/include/nettypes.pas @@ -153,8 +153,8 @@ type PUDPPacketContext = ^TUDPPacketContext; TUDPRecieveCallback = procedure(p_data : void; p_len : uint16; context : PUDPPacketContext); TUDPPacketContext = record - SrcPort : Word; - DstPort : Word; + SrcPort : uint16; + DstPort : uint16; ChecksumValid : Boolean; Length : uint16; PacketContext : PPacketContext; @@ -166,11 +166,11 @@ type UID : uint32; end; PUDPHeader = ^TUDPHeader; - TUDPHeader = bitpacked record - SrcPort : Word; - DstPort : Word; - Length : Word; - Checksum : Word; + TUDPHeader = record + SrcPort : uint16; + DstPort : uint16; + Length : uint16; + Checksum : uint16; end; diff --git a/src/driver/net/l4/udp.pas b/src/driver/net/l4/udp.pas index 98f1f276..5fe1acf6 100644 --- a/src/driver/net/l4/udp.pas +++ b/src/driver/net/l4/udp.pas @@ -74,53 +74,69 @@ var context : PUDPPacketContext; buf : puint8; bind : PUDPBindContext; + hex : puint8; + i : uint32; + size : uint16; begin writeToLogLn(' L4: udp.recv'); header:= PUDPHeader(p_data); - if switchendian16(header^.SrcPort) = 22294 then WriteStringln('Src-E: 22294'); - if header^.SrcPort = 22294 then WriteStringln('Src: 22294'); - if switchendian16(header^.DstPort) = 22294 then WriteStringln('Dst-E: 22294'); - if header^.DstPort = 22294 then WriteStringln('Dst: 22294'); - if Ports[header^.DstPort] <> nil then begin - bind:= Ports[header^.DstPort]; + //writestringln('UDP Packet: '); + //hex:= puint8(p_data); + //for i:=0 to 7 do begin + // writehexpair(hex^); + // hex:= hex+1; + //end; + //writestringln(' '); + //Writeintln(switchendian16(header^.SrcPort)); + //Writeintln(header^.SrcPort); + //Writeintln(switchendian16(header^.DstPort)); + //Writeintln(header^.DstPort); + //writestringln(''); + if Ports[switchendian16(header^.DstPort)] <> nil then begin context:= PUDPPacketContext(kalloc(sizeof(TUDPPacketContext))); context^.PacketContext:= p_context; - context^.SrcPort:= header^.SrcPort; - context^.DstPort:= header^.DstPort; + context^.SrcPort:= switchendian16(header^.SrcPort); + context^.DstPort:= switchendian16(header^.DstPort); context^.ChecksumValid:= false; - context^.Length:= header^.Length; + context^.Length:= switchendian16(header^.Length); buf:= puint8(p_data); - buf:= buf + (sizeof(TUDPHeader)); - bind^.Callback(void(buf), context^.Length, context); + buf:= buf + sizeof(TUDPHeader); + size:= context^.Length - sizeof(TUDPHeader); + bind:= Ports[context^.DstPort]; + bind^.Callback(void(buf), size, context); end; end; procedure TestRecv(p_data : void; p_len : uint16; context : PUDPPacketContext); var Output : PChar; + i : uint16; begin - Output:= PChar(kalloc(p_len+1)); - memcpy(uint32(p_data), uint32(Output), p_len); - Output[p_len+1]:= Char(0); - Writestringln(Output); + Output:= PChar(p_data); + for i:=0 to p_len-1 do begin + writechar(Output[i]); + end; + writestringln(' '); end; procedure register(); var i : uint16; - context : TUDPBindContext; + context : PUDPBindContext; r : TUDPError; begin for i:=0 to 65535 do begin Ports[i]:= nil; end; - context.Port:= 22294; - context.Callback:= @TestRecv; - context.UID:= 4398724; - r:= bind(@context); + context:= PUDPBindContext(kalloc(sizeof(TUDPBindContext))); + context^.Port:= 22294; + context^.Callback:= @TestRecv; + context^.UID:= 4398724; + r:= bind(context); + writestring('[TestBind] '); case r of tueOK:writestringln('22294 bind OK'); tuePortInUse:writestringln('22294 port in use'); diff --git a/src/include/util.pas b/src/include/util.pas index 72b399c4..781314dd 100644 --- a/src/include/util.pas +++ b/src/include/util.pas @@ -100,7 +100,7 @@ end; function switchendian16(b : uint16) : uint16; begin - switchendian16:= ((b AND $FF00) SHR 8) OR ((b AND $00FF) SHR 8); + switchendian16:= ((b AND $FF00) SHR 8) OR ((b AND $00FF) SHL 8); end; function switchendian32(b : uint32) : uint32;