Support #:pseudo-header in ip-checksum

This commit is contained in:
Tony Garnock-Jones 2014-06-16 17:51:17 -04:00
parent b5e73b8462
commit 57e22a5d3c
1 changed files with 5 additions and 3 deletions

View File

@ -22,14 +22,16 @@
(define r (bitwise-and #xffff (bitwise-not x)))
(if (= r 0) #xffff r))
(define (ip-checksum offset blob)
(define (ip-checksum offset blob #:pseudo-header [pseudo-header #""])
(bit-string-case blob
([ (prefix :: binary bytes offset)
(:: binary bytes 2)
(suffix :: binary) ]
(log-info "Packet pre checksum:\n~a" (dump-bytes->string blob))
(define result (ones-complement-+16 (ones-complement-sum16 prefix)
(ones-complement-sum16 suffix)))
(define result (ones-complement-+16
(ones-complement-sum16 pseudo-header)
(ones-complement-+16 (ones-complement-sum16 prefix)
(ones-complement-sum16 suffix))))
(log-info "result: ~a" (number->string result 16))
(define checksum (ones-complement-negate16-safely result))
(log-info "Checksum ~a" (number->string checksum 16))