diff --git a/Asuro.iso b/Asuro.iso index 9b99b4a8..0b7bde5a 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 975fb57c..999605d4 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 975fb57c..999605d4 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 2b0098e9..29b6182e 100644 Binary files a/lib/arp.ppu and b/lib/arp.ppu differ diff --git a/lib/asuro.ppu b/lib/asuro.ppu index 2d8d43f1..5885ab29 100644 Binary files a/lib/asuro.ppu and b/lib/asuro.ppu differ diff --git a/lib/eth2.ppu b/lib/eth2.ppu index 06937724..e870da8f 100644 Binary files a/lib/eth2.ppu and b/lib/eth2.ppu differ diff --git a/lib/ipv4.ppu b/lib/ipv4.ppu index 4e35c663..6457ff72 100644 Binary files a/lib/ipv4.ppu and b/lib/ipv4.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index ff6a4da5..5fcddb65 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 3076ee53..fdb51ad2 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 16831fc7..cf1e42aa 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/net.ppu b/lib/net.ppu index be4899fe..cdd97f75 100644 Binary files a/lib/net.ppu and b/lib/net.ppu differ diff --git a/lib/shell.ppu b/lib/shell.ppu index 3150fb8a..2ba577e6 100644 Binary files a/lib/shell.ppu and b/lib/shell.ppu differ diff --git a/lib/terminal.ppu b/lib/terminal.ppu index f1da8766..39335bfe 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 6326d232..45da3122 100644 --- a/src/driver/net/l3/arp.pas +++ b/src/driver/net/l3/arp.pas @@ -20,6 +20,7 @@ procedure register; function IPv4ToMAC(ip : puint8) : puint8; function MACToIIPv4(mac : puint8) : puint8; procedure sendGratuitous; +procedure sendRequest(ip : puint8); procedure send(hType : uint16; pType : uint16; op : uint16; p_context : PPacketContext); implementation @@ -123,6 +124,20 @@ begin freePacketContext(context); end; +procedure sendRequest(ip : puint8); +var + context : PPacketContext; + +begin + context:= newPacketContext; + CopyIPv4(ip, @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; diff --git a/src/driver/net/l3/ipv4.pas b/src/driver/net/l3/ipv4.pas index 81b9cac2..0829172c 100644 --- a/src/driver/net/l3/ipv4.pas +++ b/src/driver/net/l3/ipv4.pas @@ -81,7 +81,9 @@ procedure terminal_command_ifconfig(params : PParamList); var Command, Sub, Address, Gateway, Netmask : pchar; _Address, _Gateway, _Netmask : puint8; + Target : TIPv4Address; context : PPacketContext; + i : uint32; begin push_trace('ipv4.terminal_command_ifconfig'); @@ -115,14 +117,21 @@ begin end; end; arp.sendGratuitous; - context:= newPacketContext; - CopyIPv4(@Config.Gateway[0], @context^.IP.Destination[0]); - CopyIPv4(@Config.Address[0], @context^.IP.Source[0]); - CopyMAC(GetMAC, @context^.MAC.Source[0]); - //copyMAC(@FORCE_MAC[0], @context^.MAC.Source[0]); - CopyMAC(@BROADCAST_MAC[0], @context^.MAC.Destination[0]); - arp.send($1, $0800, $1, context); - freePacketContext(context); + + CopyIPv4(@Config.Address[0], @Target[0]); + for i:=1 to 255 do begin + Target[3]:= i; + arp.sendRequest(@Target[0]); + end; + + // context:= newPacketContext; + // CopyIPv4(@Config.Gateway[0], @context^.IP.Destination[0]); + // CopyIPv4(@Config.Address[0], @context^.IP.Source[0]); + // CopyMAC(GetMAC, @context^.MAC.Source[0]); + // //copyMAC(@FORCE_MAC[0], @context^.MAC.Source[0]); + // CopyMAC(@BROADCAST_MAC[0], @context^.MAC.Destination[0]); + // arp.send($1, $0800, $1, context); + // freePacketContext(context); end else begin writestringWND(' MAC: ', getTerminalHWND); writeMACAddress(net.GetMAC, getTerminalHWND); diff --git a/src/include/asuro.pas b/src/include/asuro.pas index 7617bed1..3cda45a9 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 = 28014; + LINE_COUNT = 28038; 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 = '18:05:58'; + COMPILE_TIME = '18:17:20'; implementation