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
|
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.
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;
|
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;
|
||||||
|
|
||||||
|
|
||||||
|
@ -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');
|
||||||
|
@ -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;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user