X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=Modules%2FIPStack%2Flink.c;h=0191efb8b7024a094e102d2299d07893c193c226;hb=07173b260d76a7e6482838c02d5deb2ead2afbb2;hp=cb59f0f1782f3e41bf95792336fa9d12bdcc47b6;hpb=0f48b41ce8edd3b6d549d641b35901e4b51a5132;p=tpg%2Facess2.git diff --git a/Modules/IPStack/link.c b/Modules/IPStack/link.c index cb59f0f1..0191efb8 100644 --- a/Modules/IPStack/link.c +++ b/Modules/IPStack/link.c @@ -70,7 +70,7 @@ void Link_RegisterType(Uint16 Type, tPacketCallback Callback) */ void Link_SendPacket(tAdapter *Adapter, Uint16 Type, tMacAddr To, int Length, void *Buffer) { - int bufSize = sizeof(tEthernetHeader) + Length + 4; + int bufSize = sizeof(tEthernetHeader) + ((Length+3)&~3) + 4; Uint8 buf[bufSize]; // dynamic stack arrays ftw! tEthernetHeader *hdr = (void*)buf; @@ -83,9 +83,8 @@ void Link_SendPacket(tAdapter *Adapter, Uint16 Type, tMacAddr To, int Length, vo memcpy(hdr->Data, Buffer, Length); - *(Uint32*) &hdr->Data[Length] = 0; - *(Uint32*) &hdr->Data[Length] = htonl( Link_CalculateCRC(buf, bufSize) ); - + *(Uint32*) &hdr->Data[bufSize-4] = 0; + *(Uint32*) &hdr->Data[bufSize-4] = htonl( Link_CalculateCRC(buf, bufSize) ); VFS_Write(Adapter->DeviceFD, bufSize, buf); }