Checksum fixes (#24)

* Checksum 0x0000 is returned as 0xFFFF (mandatory for UDP, common for TCP)

* Both checksum zero values (0x0000 and 0xFFFF) are accepted when receiving

* Rename parameter in VerifySum16 to expectedSum16

---------

Co-authored-by: Pat Whittingslow <graded.sp@gmail.com>
This commit is contained in:
ddirect
2026-01-26 22:22:54 +02:00
committed by GitHub
parent 85f018a02c
commit 5e61b4600d
3 changed files with 38 additions and 12 deletions
+5 -1
View File
@@ -131,9 +131,13 @@ func (ifrm Frame) SetCRC(cs uint16) {
// CalculateHeaderCRC calculates the CRC for this IPv4 frame.
func (ifrm Frame) CalculateHeaderCRC() uint16 {
var crc lneto.CRC791
ifrm.CRCWriteHeader(&crc)
return crc.Sum16()
}
func (ifrm Frame) CRCWriteHeader(crc *lneto.CRC791) {
crc.Write(ifrm.buf[0:10])
crc.Write(ifrm.buf[12:20])
return crc.Sum16()
}
func (ifrm Frame) CRCWriteTCPPseudo(crc *lneto.CRC791) {