UDP Recieve now works.

git-svn-id: https://spexeah.com:8443/svn/Asuro@837 6dbc8c32-bb84-406f-8558-d1cf31a0ab0c
This commit is contained in:
kieron 2020-07-08 00:16:17 +00:00
parent c3b256e4f1
commit c3fe1ca707
73 changed files with 48 additions and 32 deletions

BIN
Asuro.iso

Binary file not shown.

Binary file not shown.

View File

@ -54,7 +54,7 @@ afd15dca933f082c73f48aba1059a04e src/include/lists.pas
2aa600f989602fd2aaed548d7344736e src/include/strings.pas 2aa600f989602fd2aaed548d7344736e src/include/strings.pas
01e4c69601c664fff8922f4a0d96c02d src/include/system.pas 01e4c69601c664fff8922f4a0d96c02d src/include/system.pas
6103928fbe8c413929cde49df82f5a1f src/include/types.pas 6103928fbe8c413929cde49df82f5a1f src/include/types.pas
177a03d217eba976acf0ead9e70d14c0 src/include/util.pas 789637d35c491e923507274ba63f0898 src/include/util.pas
be084ee5d65fdc85182ff87a3f09c831 src/driver/storage/AHCI_OLD.pas be084ee5d65fdc85182ff87a3f09c831 src/driver/storage/AHCI_OLD.pas
e9c1a0807931287779b0295a88faec30 src/driver/storage/AHCI.pas e9c1a0807931287779b0295a88faec30 src/driver/storage/AHCI.pas
ff442b1dc417a277c68b2890740ea5a2 src/driver/storage/asfs.pas ff442b1dc417a277c68b2890740ea5a2 src/driver/storage/asfs.pas
@ -80,10 +80,10 @@ d6b9b21258bcb471d91c85c85c92cdca src/driver/bus/UHCI.pas
0d38ece46e1dd89d6b9298d2dd21e809 src/driver/bus/XHCI.pas 0d38ece46e1dd89d6b9298d2dd21e809 src/driver/bus/XHCI.pas
e6bac1105d578010d8c80ad98e73da75 src/driver/net/l4/icmp.pas e6bac1105d578010d8c80ad98e73da75 src/driver/net/l4/icmp.pas
d15e40376b2ea95d309c19959bbe670c src/driver/net/l4/tcp.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 37a2153a326041fccdc8d3006ec81001 src/driver/net/l2/eth2.pas
75ae2c46702f7bb8c18ec96958eb65de src/driver/net/l1/net.pas 31163add86f65e5dfa3eb519f4cc6334 src/driver/net/l1/net.pas
a7b1395877c5bfbf03ee440f1bc30b6e src/driver/net/include/nettypes.pas d877ae603669cb210bba08cafddff767 src/driver/net/include/nettypes.pas
9ee7cf2903b026bda5113c433081d895 src/driver/net/include/netutils.pas 9ee7cf2903b026bda5113c433081d895 src/driver/net/include/netutils.pas
f26d7788d454b9eb27d65b99908aebea src/driver/net/l3/arp.pas f26d7788d454b9eb27d65b99908aebea src/driver/net/l3/arp.pas
036941af78c64a14334b3cd4751889ce src/driver/net/l3/ipv4.pas 036941af78c64a14334b3cd4751889ce src/driver/net/l3/ipv4.pas

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -153,8 +153,8 @@ type
PUDPPacketContext = ^TUDPPacketContext; PUDPPacketContext = ^TUDPPacketContext;
TUDPRecieveCallback = procedure(p_data : void; p_len : uint16; context : PUDPPacketContext); TUDPRecieveCallback = procedure(p_data : void; p_len : uint16; context : PUDPPacketContext);
TUDPPacketContext = record TUDPPacketContext = record
SrcPort : Word; SrcPort : uint16;
DstPort : Word; DstPort : uint16;
ChecksumValid : Boolean; ChecksumValid : Boolean;
Length : uint16; Length : uint16;
PacketContext : PPacketContext; PacketContext : PPacketContext;
@ -166,11 +166,11 @@ type
UID : uint32; UID : uint32;
end; end;
PUDPHeader = ^TUDPHeader; PUDPHeader = ^TUDPHeader;
TUDPHeader = bitpacked record TUDPHeader = record
SrcPort : Word; SrcPort : uint16;
DstPort : Word; DstPort : uint16;
Length : Word; Length : uint16;
Checksum : Word; Checksum : uint16;
end; end;

View File

@ -74,53 +74,69 @@ var
context : PUDPPacketContext; context : PUDPPacketContext;
buf : puint8; buf : puint8;
bind : PUDPBindContext; bind : PUDPBindContext;
hex : puint8;
i : uint32;
size : uint16;
begin begin
writeToLogLn(' L4: udp.recv'); writeToLogLn(' L4: udp.recv');
header:= PUDPHeader(p_data); header:= PUDPHeader(p_data);
if switchendian16(header^.SrcPort) = 22294 then WriteStringln('Src-E: 22294'); //writestringln('UDP Packet: ');
if header^.SrcPort = 22294 then WriteStringln('Src: 22294'); //hex:= puint8(p_data);
if switchendian16(header^.DstPort) = 22294 then WriteStringln('Dst-E: 22294'); //for i:=0 to 7 do begin
if header^.DstPort = 22294 then WriteStringln('Dst: 22294'); // writehexpair(hex^);
if Ports[header^.DstPort] <> nil then begin // hex:= hex+1;
bind:= Ports[header^.DstPort]; //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:= PUDPPacketContext(kalloc(sizeof(TUDPPacketContext)));
context^.PacketContext:= p_context; context^.PacketContext:= p_context;
context^.SrcPort:= header^.SrcPort; context^.SrcPort:= switchendian16(header^.SrcPort);
context^.DstPort:= header^.DstPort; context^.DstPort:= switchendian16(header^.DstPort);
context^.ChecksumValid:= false; context^.ChecksumValid:= false;
context^.Length:= header^.Length; context^.Length:= switchendian16(header^.Length);
buf:= puint8(p_data); buf:= puint8(p_data);
buf:= buf + (sizeof(TUDPHeader)); buf:= buf + sizeof(TUDPHeader);
bind^.Callback(void(buf), context^.Length, context); size:= context^.Length - sizeof(TUDPHeader);
bind:= Ports[context^.DstPort];
bind^.Callback(void(buf), size, context);
end; end;
end; end;
procedure TestRecv(p_data : void; p_len : uint16; context : PUDPPacketContext); procedure TestRecv(p_data : void; p_len : uint16; context : PUDPPacketContext);
var var
Output : PChar; Output : PChar;
i : uint16;
begin begin
Output:= PChar(kalloc(p_len+1)); Output:= PChar(p_data);
memcpy(uint32(p_data), uint32(Output), p_len); for i:=0 to p_len-1 do begin
Output[p_len+1]:= Char(0); writechar(Output[i]);
Writestringln(Output); end;
writestringln(' ');
end; end;
procedure register(); procedure register();
var var
i : uint16; i : uint16;
context : TUDPBindContext; context : PUDPBindContext;
r : TUDPError; r : TUDPError;
begin begin
for i:=0 to 65535 do begin for i:=0 to 65535 do begin
Ports[i]:= nil; Ports[i]:= nil;
end; end;
context.Port:= 22294; context:= PUDPBindContext(kalloc(sizeof(TUDPBindContext)));
context.Callback:= @TestRecv; context^.Port:= 22294;
context.UID:= 4398724; context^.Callback:= @TestRecv;
r:= bind(@context); context^.UID:= 4398724;
r:= bind(context);
writestring('[TestBind] ');
case r of case r of
tueOK:writestringln('22294 bind OK'); tueOK:writestringln('22294 bind OK');
tuePortInUse:writestringln('22294 port in use'); tuePortInUse:writestringln('22294 port in use');

View File

@ -100,7 +100,7 @@ end;
function switchendian16(b : uint16) : uint16; function switchendian16(b : uint16) : uint16;
begin 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; end;
function switchendian32(b : uint32) : uint32; function switchendian32(b : uint32) : uint32;