Add explanation for CDP checksum algorithm

This commit is contained in:
Wolfgang Denk 2005-11-10 20:59:46 +01:00
parent ea339205a9
commit 3ada834e30
1 changed files with 4 additions and 1 deletions

View File

@ -829,7 +829,10 @@ static ushort CDP_compute_csum(const uchar *buff, ushort len)
}
if (len) {
leftover = (signed short)(*(const signed char *)buff);
/* * XXX CISCO SUCKS big time! (and blows too) */
/* CISCO SUCKS big time! (and blows too):
* CDP uses the IP checksum algorithm with a twist;
* for the last byte it *sign* extends and sums.
*/
result = (result & 0xffff0000) | ((result + leftover) & 0x0000ffff);
}
while (result >> 16)