diff --git a/Asuro.iso b/Asuro.iso index e65ca920..e0033b0f 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index d792b2dc..ab4e4e84 100755 Binary files a/bin/kernel.bin and b/bin/kernel.bin differ diff --git a/iso/boot/asuro.bin b/iso/boot/asuro.bin index d792b2dc..ab4e4e84 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/arp.ppu b/lib/arp.ppu index 1b478617..fdbb7c6a 100644 Binary files a/lib/arp.ppu and b/lib/arp.ppu differ diff --git a/lib/asuro.ppu b/lib/asuro.ppu index 9078008b..8101cac6 100644 Binary files a/lib/asuro.ppu and b/lib/asuro.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index e8837282..d93f1f2d 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 14386e26..215961f0 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 1faac530..fe5f98ae 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/shell.ppu b/lib/shell.ppu index ae980b9c..3006ec6c 100644 Binary files a/lib/shell.ppu and b/lib/shell.ppu differ diff --git a/lib/terminal.ppu b/lib/terminal.ppu index 3e2bf407..7f3a4bed 100644 Binary files a/lib/terminal.ppu and b/lib/terminal.ppu differ diff --git a/src/driver/net/l3/arp.pas b/src/driver/net/l3/arp.pas index 96379484..6ebd4145 100644 --- a/src/driver/net/l3/arp.pas +++ b/src/driver/net/l3/arp.pas @@ -197,55 +197,51 @@ begin copyIPv4(@Header^.Destination_Protocol[0], @AHeader.Destination_Protocol[0]); { Process ARP Packet } - Merge:= false; CacheElement:= findCacheRecordByIP(@AHeader.Source_Protocol[0]); if CacheElement = nil then CacheElement:= findCacheRecordByMAC(@AHeader.Source_Hardware[0]); if CacheElement <> nil then begin copyMAC(@AHeader.Source_Hardware[0], @CacheElement^.MAC[0]); copyIPv4(@AHeader.Source_Protocol[0], @CacheElement^.IP[0]); - Merge:= true; end else begin - if not Merge then begin - CacheElement:= PARPCacheRecord(LL_Add(Cache)); - CopyMAC(@AHeader.Source_Hardware[0], @CacheElement^.MAC[0]); - copyIPv4(@AHeader.Source_Protocol[0], @CacheElement^.IP[0]); - end; - if IPEqual(@AHeader.Destination_Protocol[0], @getIPv4Config^.Address[0]) then begin - case AHeader.Operation of - $1:begin { ARP Request } - writeToLogLn(' arp.recv.arp.req'); - context:= newPacketContext; - copyMAC(@AHeader.Source_Hardware[0], @context^.MAC.Destination[0]); - copyIPv4(@AHeader.Source_Protocol[0], @context^.IP.Destination[0]); - copyMAC(getMAC, @context^.MAC.Source[0]); - copyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]); - send($1, $0800, $2, context); - freePacketContext(context); - end; - $2:begin { ARP Reply } - writeToLogLn(' arp.recv.arp.rep'); - end; - $3:begin { RARP Request } - writeToLogLn(' arp.recv.rarp.req'); - end; - $4:begin { RARP Reply } - writeToLogLn(' arp.recv.rarp.rep'); - end; - $5:begin { DRARP Request } - writeToLogLn(' arp.recv.drarp.req'); - end; - $6:begin { DRARP Reply } - writeToLogLn(' arp.recv.drarp.rep'); - end; - $7:begin { DRARP Error } - writeToLogLn(' arp.recv.drarp.err'); - end; - $8:begin { InARP Request } - writeToLogLn(' arp.recv.inarp.req'); - end; - $9:begin { InARP Reply } - writeToLogLn(' arp.recv.inarp.rep'); - end; + CacheElement:= PARPCacheRecord(LL_Add(Cache)); + CopyMAC(@AHeader.Source_Hardware[0], @CacheElement^.MAC[0]); + copyIPv4(@AHeader.Source_Protocol[0], @CacheElement^.IP[0]); + end; + if IPEqual(@AHeader.Destination_Protocol[0], @getIPv4Config^.Address[0]) then begin + case AHeader.Operation of + $1:begin { ARP Request } + writeToLogLn(' arp.recv.arp.req'); + context:= newPacketContext; + copyMAC(@AHeader.Source_Hardware[0], @context^.MAC.Destination[0]); + copyIPv4(@AHeader.Source_Protocol[0], @context^.IP.Destination[0]); + copyMAC(getMAC, @context^.MAC.Source[0]); + copyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]); + send($1, $0800, $2, context); + freePacketContext(context); + end; + $2:begin { ARP Reply } + writeToLogLn(' arp.recv.arp.rep'); + end; + $3:begin { RARP Request } + writeToLogLn(' arp.recv.rarp.req'); + end; + $4:begin { RARP Reply } + writeToLogLn(' arp.recv.rarp.rep'); + end; + $5:begin { DRARP Request } + writeToLogLn(' arp.recv.drarp.req'); + end; + $6:begin { DRARP Reply } + writeToLogLn(' arp.recv.drarp.rep'); + end; + $7:begin { DRARP Error } + writeToLogLn(' arp.recv.drarp.err'); + end; + $8:begin { InARP Request } + writeToLogLn(' arp.recv.inarp.req'); + end; + $9:begin { InARP Reply } + writeToLogLn(' arp.recv.inarp.rep'); end; end; end; diff --git a/src/include/asuro.pas b/src/include/asuro.pas index aed1fca1..8b753810 100644 --- a/src/include/asuro.pas +++ b/src/include/asuro.pas @@ -9,14 +9,14 @@ const VERSION_SUB = '1'; REVISION = '728'; RELEASE = 'ia'; - LINE_COUNT = 28529; + LINE_COUNT = 28525; FILE_COUNT = 90; DRIVER_COUNT = 32; FPC_VERSION = '2.6.4'; NASM_VERSION = '2.10.09'; MAKE_VERSION = '3.81'; COMPILE_DATE = '13/05/18'; - COMPILE_TIME = '12:06:37'; + COMPILE_TIME = '12:08:40'; implementation