diff --git a/Asuro.iso b/Asuro.iso index 5c1a070b..5edfb8b9 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 0c746dfb..377b6967 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 0c746dfb..377b6967 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 b96ef865..cba56cf5 100644 Binary files a/lib/arp.ppu and b/lib/arp.ppu differ diff --git a/lib/asuro.ppu b/lib/asuro.ppu index 750093e3..4a73c84c 100644 Binary files a/lib/asuro.ppu and b/lib/asuro.ppu differ diff --git a/lib/eth2.ppu b/lib/eth2.ppu index ba4557f8..60ab71cf 100644 Binary files a/lib/eth2.ppu and b/lib/eth2.ppu differ diff --git a/lib/ipv4.ppu b/lib/ipv4.ppu index 7c1ce197..7f8c9d92 100644 Binary files a/lib/ipv4.ppu and b/lib/ipv4.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 70c8e131..c195f447 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 3ac72ae6..1dea5f8e 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 587ada2b..7259ac2b 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/net.ppu b/lib/net.ppu index 550c5e01..be4899fe 100644 Binary files a/lib/net.ppu and b/lib/net.ppu differ diff --git a/lib/shell.ppu b/lib/shell.ppu index 3bc76c6d..c6dd1594 100644 Binary files a/lib/shell.ppu and b/lib/shell.ppu differ diff --git a/lib/terminal.ppu b/lib/terminal.ppu index e16a9aac..1b9a16b8 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 568ebad2..6326d232 100644 --- a/src/driver/net/l3/arp.pas +++ b/src/driver/net/l3/arp.pas @@ -19,6 +19,7 @@ type procedure register; function IPv4ToMAC(ip : puint8) : puint8; function MACToIIPv4(mac : puint8) : puint8; +procedure sendGratuitous; procedure send(hType : uint16; pType : uint16; op : uint16; p_context : PPacketContext); implementation @@ -108,6 +109,20 @@ begin end; end; +procedure sendGratuitous; +var + context : PPacketContext; + +begin + context:= newPacketContext; + CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Destination[0]); + CopyIPv4(@getIPv4Config^.Address[0], @context^.IP.Source[0]); + CopyMAC(GetMAC, @context^.MAC.Source[0]); + CopyMAC(@BROADCAST_MAC[0], @context^.MAC.Destination[0]); + arp.send($1, $0800, $1, context); + freePacketContext(context); +end; + procedure recv(p_data : void; p_len : uint16; p_context : PPacketContext); var Header : PARPHeader; @@ -135,11 +150,7 @@ begin { Process ARP Packet } Merge:= false; - writeToLogLn(' L3: arp.findByIP'); - console.redrawWindows; CacheElement:= findCacheRecordByIP(@AHeader.Source_Protocol[0]); - writeToLogLn(' L3: arp.findByIPDone'); - console.redrawWindows; if CacheElement <> nil then begin copyMAC(@AHeader.Source_Hardware[0], @CacheElement^.MAC[0]); Merge:= true; diff --git a/src/driver/net/l3/ipv4.pas b/src/driver/net/l3/ipv4.pas index 4f8956c9..8d9c36a3 100644 --- a/src/driver/net/l3/ipv4.pas +++ b/src/driver/net/l3/ipv4.pas @@ -114,6 +114,7 @@ begin Config.UP:= false; end; end; + arp.sendGratuitous; context:= newPacketContext; CopyIPv4(@Config.Gateway[0], @context^.IP.Destination[0]); CopyIPv4(@Config.Address[0], @context^.IP.Source[0]); diff --git a/src/include/asuro.pas b/src/include/asuro.pas index ac5b028e..9f144cb3 100644 --- a/src/include/asuro.pas +++ b/src/include/asuro.pas @@ -9,14 +9,14 @@ const VERSION_SUB = '1'; REVISION = '677'; RELEASE = 'ia'; - LINE_COUNT = 28002; + LINE_COUNT = 28014; FILE_COUNT = 90; DRIVER_COUNT = 32; FPC_VERSION = '2.6.4'; NASM_VERSION = '2.10.09'; MAKE_VERSION = '3.81'; COMPILE_DATE = '10/05/18'; - COMPILE_TIME = '17:21:45'; + COMPILE_TIME = '17:56:16'; implementation