diff --git a/p4src/actions_delta_checksum.p4 b/p4src/actions_delta_checksum.p4 index 958dc18..42291ff 100644 --- a/p4src/actions_delta_checksum.p4 +++ b/p4src/actions_delta_checksum.p4 @@ -48,7 +48,7 @@ action v6sum() { tmp = tmp + (bit<32>) hdr.ipv6.next_header; // 8 bit carryover = tmp >> 16; /* maximum is 18*(2**16) >> 16 == 18 */ -ffff) + carryover; /* Now tmp contains at maximum 65554*/ + tmp = (tmp & 0xffff) + carryover; /* Now tmp contains at maximum 65554*/ carryover = tmp >> 16; /* Now carryover contains at maximum 1 */ tmp = tmp + carryover; /* No overrun possible anymore */