diff --git a/Asuro.iso b/Asuro.iso index 66ded369..45e83403 100644 Binary files a/Asuro.iso and b/Asuro.iso differ diff --git a/bin/kernel.bin b/bin/kernel.bin index 8e3b26a5..0306dcad 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 8e3b26a5..0306dcad 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 afaea4aa..25ffe914 100644 Binary files a/lib/arp.ppu and b/lib/arp.ppu differ diff --git a/lib/asuro.ppu b/lib/asuro.ppu index 3811e24f..cfb11448 100644 Binary files a/lib/asuro.ppu and b/lib/asuro.ppu differ diff --git a/lib/eth2.ppu b/lib/eth2.ppu index 9bf6c2f2..1f8dfa53 100644 Binary files a/lib/eth2.ppu and b/lib/eth2.ppu differ diff --git a/lib/ipv4.ppu b/lib/ipv4.ppu index b6ed1d33..39cd956a 100644 Binary files a/lib/ipv4.ppu and b/lib/ipv4.ppu differ diff --git a/lib/libpconsole.a b/lib/libpconsole.a index 66b968c8..6542938d 100644 Binary files a/lib/libpconsole.a and b/lib/libpconsole.a differ diff --git a/lib/libpmultiboot.a b/lib/libpmultiboot.a index 27991422..45d9c116 100644 Binary files a/lib/libpmultiboot.a and b/lib/libpmultiboot.a differ diff --git a/lib/libpsystem.a b/lib/libpsystem.a index d2902b78..526bbf21 100644 Binary files a/lib/libpsystem.a and b/lib/libpsystem.a differ diff --git a/lib/net.ppu b/lib/net.ppu index ff35b07b..55908cb7 100644 Binary files a/lib/net.ppu and b/lib/net.ppu differ diff --git a/lib/shell.ppu b/lib/shell.ppu index 4fd5d710..87d9fdad 100644 Binary files a/lib/shell.ppu and b/lib/shell.ppu differ diff --git a/lib/terminal.ppu b/lib/terminal.ppu index bcf09df8..9866683d 100644 Binary files a/lib/terminal.ppu and b/lib/terminal.ppu differ diff --git a/src/driver/net/l2/eth2.pas b/src/driver/net/l2/eth2.pas index f4700f2c..79781871 100644 --- a/src/driver/net/l2/eth2.pas +++ b/src/driver/net/l2/eth2.pas @@ -8,7 +8,8 @@ uses nettypes, netutils, net, netlog, - console; + console, + crc; procedure send(p_data : void; p_len : uint16; eth_type : uint16; p_context : PPacketContext); procedure registerType(eType : uint16; RecvCB : TRecvCallback); @@ -38,6 +39,7 @@ var hdr : TEthernetHeader; pad : sint32; size : uint32; + FCS : puint32; begin pad:= 46 - p_len; @@ -45,7 +47,7 @@ begin push_trace('eth2.send'); writeToLogLn(' L2: eth2.send'); if p_context <> nil then begin - size:= pad + p_len + sizeof(TEthernetHeader); + size:= sizeof(TEthernetHeader) + p_len + pad + 4; buffer:= kalloc(size); copyMAC(@p_context^.MAC.Source[0], @hdr.src[0]); copyMAC(@p_context^.MAC.Destination[0], @hdr.dst[0]); @@ -53,6 +55,8 @@ begin hdr.EthTypeLo:= eth_type AND $FF; memcpy(uint32(@hdr), uint32(buffer), sizeof(TEthernetHeader)); memcpy(uint32(p_data), uint32(buffer)+sizeof(TEthernetHeader), p_len); + FCS:= puint32((uint32(buffer) + size) - 4); + FCS^:= crc32(puint8(buffer), size - 4); net.send(buffer, size); kfree(buffer); end; diff --git a/src/include/asuro.pas b/src/include/asuro.pas index 9680cd3e..9977949d 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 = 27909; - FILE_COUNT = 89; + LINE_COUNT = 28004; + 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 = '15:00:26'; + COMPILE_TIME = '15:27:24'; implementation