diff --git a/doc/plan.org b/doc/plan.org index 1972b35..a848bad 100644 --- a/doc/plan.org +++ b/doc/plan.org @@ -5295,7 +5295,7 @@ p4@ubuntu:~/master-thesis/bin$ mx h3 "echo V4-OK | socat - UDP:10.1.1.1:2342" **** DONE Result: arp (partly?) missing? CLOSED: [2019-07-16 Tue 11:00] -**** TODO Result: udp checksum wrong +**** Result: udp checksum wrong - should be: 0xd84b - is: 0xd84c @@ -5309,7 +5309,8 @@ This is used to correct endianness! -> not needed in our case -*** TODO 2019-07-16: Wraptest in P4 +*** DONE 2019-07-16: Wraptest in P4 + CLOSED: [2019-07-16 Tue 12:09] #+BEGIN_CENTER mx h3 arp -s 10.0.0.2 00:00:0a:00:00:02 @@ -5328,6 +5329,12 @@ Result on the wire of the wraptest: -> as expected Thus carryover is already implemented. Try to use 16 bit ints + +*** TODO 2019-07-16: naive approach +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 + ** 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 a34c719..c258d18 100644 --- a/p4src/actions_delta_checksum.p4 +++ b/p4src/actions_delta_checksum.p4 @@ -53,7 +53,9 @@ action delta_prepare() action delta_udp_from_v4_to_v6() { delta_prepare(); - hdr.udp.checksum = hdr.udp.checksum + meta.v6sum - meta.v4sum; + hdr.udp.checksum = meta.v6sum; +// hdr.udp.checksum = meta.v4sum; +// hdr.udp.checksum = hdr.udp.checksum + meta.v6sum - meta.v4sum; } action delta_tcp_from_v4_to_v6()