From 811e4c2b119acc038906278d55fd8b2e369652db Mon Sep 17 00:00:00 2001 From: Nico Schottelius Date: Tue, 16 Jul 2019 12:30:29 +0200 Subject: [PATCH] Separate checksum addition/subtraction into 2 steps --- doc/plan.org | 3 +++ p4src/actions_delta_checksum.p4 | 5 +++-- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/doc/plan.org b/doc/plan.org index a848bad..dadded5 100644 --- a/doc/plan.org +++ b/doc/plan.org @@ -5335,6 +5335,9 @@ Gives off-by-one in udp, sometimes! 10:08:52.626713 IP6 (hlim 64, next-header UDP (17) payload length: 14) 2001:db8:1::a00:1.51345 > 2001:db8::1.2342: [bad udp cks +*** TODO 2019-07-16: get values: v6sum, v4sum + - v6sum = 0x9a6b + ** The NetPFGA saga Problems encountered: - The logfile for a compile run is 10k+ lines diff --git a/p4src/actions_delta_checksum.p4 b/p4src/actions_delta_checksum.p4 index 026662b..aedb110 100644 --- a/p4src/actions_delta_checksum.p4 +++ b/p4src/actions_delta_checksum.p4 @@ -54,8 +54,9 @@ action delta_udp_from_v4_to_v6() { delta_prepare(); // hdr.udp.checksum = meta.v6sum; - hdr.udp.checksum = meta.v4sum; -// hdr.udp.checksum = hdr.udp.checksum + meta.v6sum - meta.v4sum; +// hdr.udp.checksum = meta.v4sum; + hdr.udp.checksum = hdr.udp.checksum + meta.v6sum; + hdr.udp.checksum = hdr.udp.checksum - meta.v4sum; } action delta_tcp_from_v4_to_v6()