Add explanation for CDP checksum algorithm

master
Wolfgang Denk 19 years ago
parent ea339205a9
commit 3ada834e30
  1. 5
      net/net.c

@ -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)

Loading…
Cancel
Save