Fixed a bug in IPv4 pseudoIP cksum calculation which would cause invalid TCP and UDP cksums in certain cases
This commit is contained in:
parent
956455137c
commit
7327fbb58d
@ -622,6 +622,9 @@ quint32 Ip4Protocol::protocolFrameCksum(int streamIndex,
|
|||||||
sum += fieldData(ip4_proto, FieldValue, streamIndex).toUInt() & 0x00FF;
|
sum += fieldData(ip4_proto, FieldValue, streamIndex).toUInt() & 0x00FF;
|
||||||
sum += (fieldData(ip4_totLen, FieldValue, streamIndex).toUInt() & 0xFFFF) - 20;
|
sum += (fieldData(ip4_totLen, FieldValue, streamIndex).toUInt() & 0xFFFF) - 20;
|
||||||
|
|
||||||
|
while(sum>>16)
|
||||||
|
sum = (sum & 0xFFFF) + (sum >> 16);
|
||||||
|
|
||||||
// Above calculation done assuming 'big endian'
|
// Above calculation done assuming 'big endian'
|
||||||
// - so convert to host order
|
// - so convert to host order
|
||||||
//return qFromBigEndian(sum);
|
//return qFromBigEndian(sum);
|
||||||
|
Loading…
Reference in New Issue
Block a user