Posted to tcl by kbk at Thu Oct 22 16:00:48 GMT 2009view raw
- proc inet_cksum8_kbk {data} {
- set sum 0
- binary scan $data cu* x
- if {[llength $x] & 1} {
- lappend x 0
- }
- foreach {v w} $x {
- set sum [expr {$sum + ($v << 8) + $w}]
- set sum [expr {($sum & 0xffff) | ($sum >> 16)}]
- }
- return $sum
- }