diff --git a/Asuro.iso b/Asuro.iso index 6618938b..22ed69a6 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 8d49399c..bec21ed4 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 8d49399c..bec21ed4 100755 Binary files a/iso/boot/asuro.bin and b/iso/boot/asuro.bin differ diff --git a/lib/E1000.ppu b/lib/E1000.ppu index 7f549ae9..03bc3721 100644 Binary files a/lib/E1000.ppu and b/lib/E1000.ppu differ diff --git a/lib/arp.ppu b/lib/arp.ppu index 66b889f2..afaea4aa 100644 Binary files a/lib/arp.ppu and b/lib/arp.ppu differ diff --git a/lib/asuro.ppu b/lib/asuro.ppu index 992f7433..0c92f2b0 100644 Binary files a/lib/asuro.ppu and b/lib/asuro.ppu differ diff --git a/lib/eth2.ppu b/lib/eth2.ppu index 3a8222ef..d36a06de 100644 Binary files a/lib/eth2.ppu and b/lib/eth2.ppu differ diff --git a/lib/ipv4.ppu b/lib/ipv4.ppu index 57888ab4..b6ed1d33 100644 Binary files a/lib/ipv4.ppu and b/lib/ipv4.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index eb65b519..a93e2ae4 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index c6b21b3a..128e3a43 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index 0c9b1a75..4cca910b 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/net.ppu b/lib/net.ppu index 6eba62df..ff35b07b 100644 Binary files a/lib/net.ppu and b/lib/net.ppu differ diff --git a/lib/netutils.ppu b/lib/netutils.ppu index e0fe8f1c..05d15846 100644 Binary files a/lib/netutils.ppu and b/lib/netutils.ppu differ diff --git a/lib/shell.ppu b/lib/shell.ppu index eba7a625..e7924060 100644 Binary files a/lib/shell.ppu and b/lib/shell.ppu differ diff --git a/lib/terminal.ppu b/lib/terminal.ppu index 081cc578..2a8a7783 100644 Binary files a/lib/terminal.ppu and b/lib/terminal.ppu differ diff --git a/src/driver/net/include/netutils.pas b/src/driver/net/include/netutils.pas index 560fe4b9..48002a5b 100644 --- a/src/driver/net/include/netutils.pas +++ b/src/driver/net/include/netutils.pas @@ -11,6 +11,8 @@ function stringToMAC(str : pchar) : puint8; function stringToIPv4(str : pchar) : puint8; procedure writeMACAddress(mac : puint8; WND : HWND); procedure writeIPv4Address(ip : puint8; WND : HWND); +procedure writeMACAddressEx(mac : puint8; WND : HWND); +procedure writeIPv4AddressEx(ip : puint8; WND : HWND); function MACEqual(mac1 : puint8; mac2 : puint8) : boolean; function IPEqual(ip1 : puint8; ip2 : puint8) : boolean; function newPacketContext : PPacketContext; @@ -80,6 +82,32 @@ begin pop_trace; end; +procedure writeIPv4AddressEx(ip : puint8; WND : HWND); +var + i : integer; + +begin + push_trace('netutils.writeIPv4Address'); + console.writeintWND(ip[0], WND); + for i:=1 to 3 do begin + console.writestringWND('.', WND); + console.writeintWND(ip[i], WND); + end; +end; + +procedure writeMACAddressEx(mac : puint8; WND : HWND); +var + i : integer; + +begin + push_trace('netutils.writeMACAddress'); + console.writehexpairWND(mac[0], WND); + for i:=1 to 5 do begin + console.writestringWND(':', WND); + console.writehexpairWND(mac[i], WND); + end; +end; + procedure writeIPv4Address(ip : puint8; WND : HWND); var i : integer; diff --git a/src/driver/net/l3/arp.pas b/src/driver/net/l3/arp.pas index abd66de5..e082b638 100644 --- a/src/driver/net/l3/arp.pas +++ b/src/driver/net/l3/arp.pas @@ -4,7 +4,7 @@ interface uses tracer, lmemorymanager, - util, lists, console, + util, lists, console, terminal, net, nettypes, netutils, netlog, eth2, ipv4; @@ -189,12 +189,33 @@ begin end; end; +procedure terminal_command_arp(Params : PParamList); +var + i : uint32; + elm : PARPCacheRecord; + +begin + if LL_Size(Cache) > 0 then begin + writestringlnWND('MAC IPv4', getTerminalHWND); + For i:=0 to LL_Size(Cache)-1 do begin + elm:= PARPCacheRecord(LL_Get(Cache, i)); + writeMACAddressEx(@elm^.MAC[0], getTerminalHWND); + writestringWND(' ', getTerminalHWND); + writeIPv4AddressEx(@elm^.IP[0], getTerminalHWND); + writestringlnWND(' ', getTerminalHWND); + end; + end else begin + writestringlnWND('No entries in ARP table.', getTerminalHWND); + end; +end; + procedure register; begin push_trace('arp.register'); if not Registered then begin Cache:= LL_New(sizeof(TARPCacheRecord)); eth2.registerType($0806, @recv); + terminal.registerCommand('ARP', @terminal_command_arp, 'Get ARP Table.'); Registered:= true; end; pop_trace; diff --git a/src/include/asuro.pas b/src/include/asuro.pas index ef053456..fc90c8e9 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 = 27855; + LINE_COUNT = 27904; FILE_COUNT = 89; DRIVER_COUNT = 32; FPC_VERSION = '2.6.4'; NASM_VERSION = '2.10.09'; MAKE_VERSION = '3.81'; COMPILE_DATE = '10/05/18'; - COMPILE_TIME = '14:03:49'; + COMPILE_TIME = '14:21:06'; implementation