UDP Recieve now works.
git-svn-id: https://spexeah.com:8443/svn/Asuro@837 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
parent
c3b256e4f1
commit
c3fe1ca707
BIN
bin/kernel.bin
BIN
bin/kernel.bin
Binary file not shown.
@ -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
|
||||
|
Binary file not shown.
BIN
lib/ACE.ppu
BIN
lib/ACE.ppu
Binary file not shown.
BIN
lib/BPE.ppu
BIN
lib/BPE.ppu
Binary file not shown.
BIN
lib/BTSSE.ppu
BIN
lib/BTSSE.ppu
Binary file not shown.
BIN
lib/CFE.ppu
BIN
lib/CFE.ppu
Binary file not shown.
BIN
lib/CSOE.ppu
BIN
lib/CSOE.ppu
Binary file not shown.
BIN
lib/DBGE.ppu
BIN
lib/DBGE.ppu
Binary file not shown.
BIN
lib/DBZ.ppu
BIN
lib/DBZ.ppu
Binary file not shown.
BIN
lib/DFE.ppu
BIN
lib/DFE.ppu
Binary file not shown.
BIN
lib/E1000.ppu
BIN
lib/E1000.ppu
Binary file not shown.
BIN
lib/EHCI.ppu
BIN
lib/EHCI.ppu
Binary file not shown.
BIN
lib/GPF.ppu
BIN
lib/GPF.ppu
Binary file not shown.
BIN
lib/IDE.ppu
BIN
lib/IDE.ppu
Binary file not shown.
BIN
lib/IDOE.ppu
BIN
lib/IDOE.ppu
Binary file not shown.
BIN
lib/IOPE.ppu
BIN
lib/IOPE.ppu
Binary file not shown.
BIN
lib/MCE.ppu
BIN
lib/MCE.ppu
Binary file not shown.
BIN
lib/NCE.ppu
BIN
lib/NCE.ppu
Binary file not shown.
BIN
lib/NMIE.ppu
BIN
lib/NMIE.ppu
Binary file not shown.
BIN
lib/OHCI.ppu
BIN
lib/OHCI.ppu
Binary file not shown.
BIN
lib/OOBE.ppu
BIN
lib/OOBE.ppu
Binary file not shown.
BIN
lib/PCI.ppu
BIN
lib/PCI.ppu
Binary file not shown.
BIN
lib/PF.ppu
BIN
lib/PF.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/RTC.ppu
BIN
lib/RTC.ppu
Binary file not shown.
BIN
lib/SFE.ppu
BIN
lib/SFE.ppu
Binary file not shown.
BIN
lib/SNPE.ppu
BIN
lib/SNPE.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/UHCI.ppu
BIN
lib/UHCI.ppu
Binary file not shown.
BIN
lib/UIE.ppu
BIN
lib/UIE.ppu
Binary file not shown.
BIN
lib/USB.ppu
BIN
lib/USB.ppu
Binary file not shown.
BIN
lib/XHCI.ppu
BIN
lib/XHCI.ppu
Binary file not shown.
BIN
lib/arp.ppu
BIN
lib/arp.ppu
Binary file not shown.
BIN
lib/asuro.ppu
BIN
lib/asuro.ppu
Binary file not shown.
BIN
lib/console.ppu
BIN
lib/console.ppu
Binary file not shown.
BIN
lib/cpu.ppu
BIN
lib/cpu.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/eth2.ppu
BIN
lib/eth2.ppu
Binary file not shown.
BIN
lib/fat32.ppu
BIN
lib/fat32.ppu
Binary file not shown.
BIN
lib/icmp.ppu
BIN
lib/icmp.ppu
Binary file not shown.
BIN
lib/idt.ppu
BIN
lib/idt.ppu
Binary file not shown.
BIN
lib/ipv4.ppu
BIN
lib/ipv4.ppu
Binary file not shown.
BIN
lib/irq.ppu
BIN
lib/irq.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/kernel.ppu
BIN
lib/kernel.ppu
Binary file not shown.
BIN
lib/keyboard.ppu
BIN
lib/keyboard.ppu
Binary file not shown.
Binary file not shown.
Binary file not shown.
BIN
lib/libpsystem.a
BIN
lib/libpsystem.a
Binary file not shown.
BIN
lib/lists.ppu
BIN
lib/lists.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/memview.ppu
BIN
lib/memview.ppu
Binary file not shown.
BIN
lib/mouse.ppu
BIN
lib/mouse.ppu
Binary file not shown.
BIN
lib/net.ppu
BIN
lib/net.ppu
Binary file not shown.
BIN
lib/netlog.ppu
BIN
lib/netlog.ppu
Binary file not shown.
BIN
lib/nettypes.ppu
BIN
lib/nettypes.ppu
Binary file not shown.
BIN
lib/netutils.ppu
BIN
lib/netutils.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/serial.ppu
BIN
lib/serial.ppu
Binary file not shown.
BIN
lib/shell.ppu
BIN
lib/shell.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/strings.ppu
BIN
lib/strings.ppu
Binary file not shown.
BIN
lib/terminal.ppu
BIN
lib/terminal.ppu
Binary file not shown.
BIN
lib/tracer.ppu
BIN
lib/tracer.ppu
Binary file not shown.
BIN
lib/util.ppu
BIN
lib/util.ppu
Binary file not shown.
Binary file not shown.
BIN
lib/vmlog.ppu
BIN
lib/vmlog.ppu
Binary file not shown.
BIN
lib/vmstate.ppu
BIN
lib/vmstate.ppu
Binary file not shown.
@ -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;
|
||||
|
||||
|
||||
|
@ -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');
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user