Compare commits
9
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
d3c164e8af | ||
|
|
76c419336e | ||
|
|
5e9d0004d7 | ||
|
|
2ad0ae8420 | ||
|
|
c0c199bfe6 | ||
|
|
7ec3bcb9b9 | ||
|
|
4bd0a2dfbf | ||
|
|
431e5bc8f4 | ||
|
|
983d9a428d |
+8
-1
@@ -1 +1,8 @@
|
||||
* text=auto eol=lf
|
||||
* text=auto eol=lf
|
||||
lvglh/** linguist-vendored
|
||||
lvgl/** linguist-vendored
|
||||
.vscode/* linguist-vendored
|
||||
lib/* linguist-generated
|
||||
release/* linguist-generated
|
||||
iso/* linguist-generated
|
||||
*.asm linguist-detectable
|
||||
@@ -15,3 +15,4 @@ localenv.json
|
||||
dockerout.txt
|
||||
AGENTS.md
|
||||
*.log
|
||||
/doc/*.md
|
||||
File diff suppressed because it is too large
Load Diff
@@ -100,8 +100,8 @@ end;
|
||||
|
||||
procedure send(p_data : void; p_len : uint16);
|
||||
begin
|
||||
//push_trace('net.send');
|
||||
//writeToLogLn('L1: net.send');
|
||||
push_trace('net.send');
|
||||
writeToLogLn('L1/NET: send');
|
||||
if CBSend <> nil then CBSend(p_data, p_len);
|
||||
pop_trace;
|
||||
end;
|
||||
@@ -111,8 +111,7 @@ var
|
||||
context : PPacketContext;
|
||||
|
||||
begin
|
||||
//push_trace('net.recv');
|
||||
//writeToLogLn('L1: net.recv');
|
||||
push_trace('net.recv');
|
||||
context:= newPacketContext;
|
||||
if CBNext <> nil then CBNext(p_data, p_len, context);
|
||||
freePacketContext(context);
|
||||
@@ -129,6 +128,7 @@ end;
|
||||
procedure init;
|
||||
begin
|
||||
push_trace('net.init');
|
||||
writeToLogLn('L1/NET: init');
|
||||
//l2
|
||||
eth2.register;
|
||||
//l3
|
||||
@@ -136,6 +136,7 @@ begin
|
||||
ipv4.register;
|
||||
//l4
|
||||
icmp.register;
|
||||
tcp.register;
|
||||
udp.register;
|
||||
//l5
|
||||
dhcp.register;
|
||||
|
||||
@@ -46,6 +46,7 @@ var
|
||||
|
||||
procedure registerTypePromisc(eType : uint16; RecvCB : TRecvCallback);
|
||||
begin
|
||||
push_trace('eth2.registerTypePromisc');
|
||||
register;
|
||||
if EthTypes[eType] = nil then EthTypes[eType]:= RecvCB;
|
||||
Promisc[eType]:= true;
|
||||
@@ -53,6 +54,7 @@ end;
|
||||
|
||||
procedure registerType(eType : uint16; RecvCB : TRecvCallback);
|
||||
begin
|
||||
push_trace('eth2.registerType');
|
||||
register;
|
||||
if EthTypes[eType] = nil then EthTypes[eType]:= RecvCB;
|
||||
end;
|
||||
@@ -93,7 +95,7 @@ var
|
||||
buf : puint8;
|
||||
|
||||
begin
|
||||
//writeToLogLn(' L2: eth2.recv');
|
||||
push_trace('eth2.recv');
|
||||
buf:= puint8(p_data);
|
||||
|
||||
Header:= PEthernetHeader(buf);
|
||||
@@ -120,6 +122,7 @@ var
|
||||
begin
|
||||
push_trace('eth2.register');
|
||||
if not Registered then begin
|
||||
writeToLogLn(' L2/ETH: register');
|
||||
for i:=0 to 65535 do begin
|
||||
EthTypes[i]:= nil;
|
||||
Promisc[i]:= false;
|
||||
|
||||
@@ -96,6 +96,7 @@ var
|
||||
hSize, pSize : uint8;
|
||||
|
||||
begin
|
||||
push_trace('arp.send');
|
||||
if p_context <> nil then begin
|
||||
buf:= kalloc(sizeof(TARPHeader));
|
||||
hdr:= PARPHeader(buf);
|
||||
@@ -135,6 +136,8 @@ var
|
||||
context : PPacketContext;
|
||||
|
||||
begin
|
||||
push_trace('arp.sendGratuitous');
|
||||
writeToLogLn(' L3/ARP: sendGratuitous');
|
||||
context:= newPacketContext;
|
||||
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Destination[0]);
|
||||
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]);
|
||||
@@ -150,6 +153,7 @@ var
|
||||
CacheRecord : PARPCacheRecord;
|
||||
|
||||
begin
|
||||
push_trace('arp.sendRequestGateway');
|
||||
context:= newPacketContext;
|
||||
CacheRecord:= findCacheRecordByIP(@getIPv4Config^.Gateway[0]);
|
||||
if CacheRecord <> nil then begin
|
||||
@@ -168,6 +172,8 @@ var
|
||||
CacheRecord : PARPCacheRecord;
|
||||
|
||||
begin
|
||||
push_trace('arp.sendRequest');
|
||||
writeToLogLn(' L3/ARP: sendRequest');
|
||||
context:= newPacketContext;
|
||||
CopyIPv4(ip, @context^.IP.Destination[0]);
|
||||
CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]);
|
||||
@@ -184,6 +190,7 @@ var
|
||||
CacheRecord : PARPCacheRecord;
|
||||
|
||||
begin
|
||||
push_trace('arp.resolveIP');
|
||||
CacheRecord:= findCacheRecordByIP(ip);
|
||||
resolveIP:= nil;
|
||||
if CacheRecord = nil then begin
|
||||
@@ -203,6 +210,7 @@ var
|
||||
context : PPacketContext;
|
||||
|
||||
begin
|
||||
push_trace('arp.recv');
|
||||
{ Get our converted Header }
|
||||
Header:= PARPHeader(p_data);
|
||||
AHeader.Hardware_Type:= (Header^.Hardware_Type_Hi SHL 8) + Header^.Hardware_Type_Lo;
|
||||
@@ -298,6 +306,7 @@ procedure register;
|
||||
begin
|
||||
push_trace('arp.register');
|
||||
if not Registered then begin
|
||||
writeToLogLn(' L3/ARP: register');
|
||||
Cache:= LL_New(sizeof(TARPCacheRecord));
|
||||
eth2.registerTypePromisc($0806, @recv);
|
||||
stdio.registerCommand('ARP', @terminal_command_arp, 'Get ARP Table.');
|
||||
|
||||
@@ -46,7 +46,9 @@ var
|
||||
|
||||
function getIPv4Config : PIPv4Configuration;
|
||||
begin
|
||||
push_trace('ipv4.getIPv4Config');
|
||||
getIPv4Config:= @Config;
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
procedure send(p_data : void; p_len : uint16; p_context : PPacketContext);
|
||||
@@ -57,6 +59,7 @@ var
|
||||
buffer : void;
|
||||
|
||||
begin
|
||||
push_trace('ipv4.send');
|
||||
inc(CurrentID);
|
||||
Header.version:= 4;
|
||||
Header.header_len:= 5;
|
||||
@@ -84,6 +87,7 @@ begin
|
||||
memcpy(uint32(p_data), uint32(Buffer) + (Header.header_len * 4), p_len);
|
||||
eth2.send(Buffer, (Header.header_len * 4) + p_len, $0800, p_context);
|
||||
kfree(Buffer);
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
procedure recv(p_data : void; p_len : uint16; p_context : PPacketContext);
|
||||
@@ -95,6 +99,7 @@ var
|
||||
len : uint16;
|
||||
|
||||
begin
|
||||
push_trace('ipv4.recv');
|
||||
Header:= PIPV4Header(p_data);
|
||||
AHeader.version:= Header^.version;
|
||||
AHeader.header_len:= Header^.header_len;
|
||||
@@ -195,6 +200,7 @@ var
|
||||
begin
|
||||
push_trace('ipv4.register');
|
||||
if not Registered then begin
|
||||
writeToLogLn(' L3/IPv4: register');
|
||||
for i:=0 to 255 do begin
|
||||
Protocols[i]:= nil;
|
||||
end;
|
||||
@@ -213,6 +219,7 @@ end;
|
||||
|
||||
procedure registerProtocol(Protocol_ID : uint8; recv_callback : TRecvCallback);
|
||||
begin
|
||||
push_trace('ipv4.registerProtocol');
|
||||
register;
|
||||
if Protocols[Protocol_ID] = nil then Protocols[Protocol_ID]:= recv_callback;
|
||||
pop_trace;
|
||||
|
||||
@@ -23,7 +23,7 @@ interface
|
||||
|
||||
uses
|
||||
bios_data_area,
|
||||
lmemorymanager,
|
||||
lmemorymanager, tracer,
|
||||
net, nettypes, netutils, ipv4, arp, util;
|
||||
|
||||
type
|
||||
@@ -55,6 +55,7 @@ var
|
||||
i : uint8;
|
||||
|
||||
begin
|
||||
push_trace('icmp.nextInactiveHandler');
|
||||
nextInactiveHandler:= 0;
|
||||
for i:=1 to 255 do begin
|
||||
if not Handlers[i].Active then begin
|
||||
@@ -80,6 +81,8 @@ var
|
||||
Size : uint32;
|
||||
|
||||
begin
|
||||
push_trace('icmp.sendICMPRequest');
|
||||
writeToLogLn(' L4/ICMP: sendICMPRequest');
|
||||
handle:= nextInactiveHandler;
|
||||
Handlers[handle].Active:= true;
|
||||
Handlers[handle].OnReply:= OnRep;
|
||||
@@ -135,6 +138,8 @@ var
|
||||
Handle : uint8;
|
||||
|
||||
begin
|
||||
push_trace('icmp.recv');
|
||||
writeToLogLn(' L4/ICMP: recv');
|
||||
Header:= PICMPHeader(p_data);
|
||||
//writehexlnWND(Header^.ICMP_Type, getTerminalHWND);
|
||||
case Header^.ICMP_Type of
|
||||
@@ -243,6 +248,8 @@ var
|
||||
i : uint32;
|
||||
|
||||
begin
|
||||
push_trace('icmp.register');
|
||||
writeToLogLn(' L4/ICMP: register');
|
||||
for i:=0 to 255 do begin
|
||||
Handlers[i].Active:= false;
|
||||
Handlers[i].OnError:= nil;
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -25,7 +25,7 @@ uses
|
||||
lmemorymanager,
|
||||
nettypes, netutils,
|
||||
ipv4, net,
|
||||
util;
|
||||
tracer, util;
|
||||
|
||||
procedure register();
|
||||
function bind(bindContext : PUDPBindContext) : TUDPError;
|
||||
@@ -71,6 +71,7 @@ begin
|
||||
nullend:= true;
|
||||
end;
|
||||
pseudoBuffer:= kalloc(sizeof(TUDPPseudoHeader) + pseudoSize);
|
||||
push_trace('udp.CalculateChecksum');
|
||||
pseudoBuffer8:= puint8(pseudoBuffer);
|
||||
pseudoBuffer16:= puint16(pseudoBuffer);
|
||||
pseudoBuffer32:= puint32(pseudoBuffer);
|
||||
@@ -118,6 +119,7 @@ var
|
||||
|
||||
|
||||
begin
|
||||
push_trace('udp.send');
|
||||
if udpContext <> nil then begin
|
||||
size:= p_len + sizeof(TUDPHeader);
|
||||
buffer:= kalloc(size);
|
||||
@@ -152,6 +154,7 @@ var
|
||||
context : PUDPBindContext;
|
||||
|
||||
begin
|
||||
push_trace('udp.bind');
|
||||
result:= tueGenericError;
|
||||
if bindContext <> nil then begin
|
||||
if Ports[bindContext^.port] = nil then begin
|
||||
@@ -174,6 +177,7 @@ var
|
||||
context : PUDPBindContext;
|
||||
|
||||
begin
|
||||
push_trace('udp.unbind');
|
||||
result:= tueGenericError;
|
||||
if bindContext <> nil then begin
|
||||
context:= Ports[bindContext^.port];
|
||||
@@ -203,6 +207,7 @@ var
|
||||
size : uint16;
|
||||
|
||||
begin
|
||||
push_trace('udp.ProcessPacket');
|
||||
header:= PUDPHeader(p_data);
|
||||
if Ports[switchendian16(header^.DstPort)] <> nil then begin
|
||||
context:= PUDPPacketContext(kalloc(sizeof(TUDPPacketContext)));
|
||||
@@ -245,6 +250,8 @@ var
|
||||
Checksum : uint32;
|
||||
|
||||
begin
|
||||
push_trace('udp.register');
|
||||
writeToLogLn(' L4/UDP: register');
|
||||
for i:=0 to 65535 do begin
|
||||
Ports[i]:= nil;
|
||||
end;
|
||||
|
||||
@@ -415,7 +415,7 @@ end;
|
||||
|
||||
procedure processPacket_NAK(Header : PDHCPHeader; Options : PDHCPOptions);
|
||||
begin
|
||||
syslog.logln('DHCP', 'Process NAK.');
|
||||
writeToLogLn(' L5/DHCP: Process NAK.');
|
||||
{ Server provided a NAK, NULL configuration ready for next DISCOVER/Request }
|
||||
nullConfiguration();
|
||||
end;
|
||||
@@ -429,7 +429,7 @@ var
|
||||
cfgopt : void;
|
||||
|
||||
begin
|
||||
syslog.logln('DHCP', 'Process ACK.');
|
||||
writeToLogLn(' L5/DHCP: Process ACK.');
|
||||
getIPv4Config^.UP:= false;
|
||||
|
||||
//Copy new address
|
||||
@@ -484,7 +484,7 @@ Var
|
||||
|
||||
begin
|
||||
syslog.logln('DHCP', 'Process OFFER.');
|
||||
|
||||
writeToLogLn(' L5/DHCP: Process OFFER.');
|
||||
{ Check the Transaction ID matches our stored ID, discard if not. }
|
||||
if Header^.Transaction_ID = Configuration^.Transaction then begin
|
||||
syslog.logln('DHCP', 'XID Match');
|
||||
@@ -566,6 +566,7 @@ var
|
||||
|
||||
begin
|
||||
tracer.push_trace('dhcp.processPacket.enter');
|
||||
writeToLogLn(' L5/DHCP: processPacket');
|
||||
syslog.logln('DHCP','processPacket');
|
||||
|
||||
{ Give access to header values & process to correct endianness. }
|
||||
@@ -636,6 +637,7 @@ var
|
||||
|
||||
begin
|
||||
tracer.push_trace('dhcp.DHCPDiscover.begin');
|
||||
writeToLogLn(' L5/DHCP: DHCPDiscover');
|
||||
{ Ensure we have a socket bound. }
|
||||
if Socket <> nil then begin
|
||||
{ Clear any current configuration }
|
||||
@@ -711,6 +713,7 @@ var
|
||||
|
||||
begin
|
||||
tracer.push_trace('dhcp.register');
|
||||
writeToLogLn(' L5/DHCP: register');
|
||||
syslog.logln('DHCP', 'Register begin.');
|
||||
|
||||
{ Kalloc our Configuration Data }
|
||||
|
||||
@@ -190,7 +190,7 @@ begin
|
||||
push_trace('vmemorymanager.vtop');
|
||||
idx:= address SHR 22;
|
||||
paddress:= uint32(KERNEL_PAGE_DIRECTORY^[idx].address) SHL 12;
|
||||
loadd:= address AND $FFFFFF;
|
||||
loadd:= address AND $3FFFFF;
|
||||
vtop:= paddress + loadd;
|
||||
pop_trace;
|
||||
end;
|
||||
|
||||
Reference in New Issue
Block a user