nat: avoid creating negative zero checksum 73/31773/4
authorKlement Sekera <ksekera@cisco.com>
Thu, 25 Mar 2021 17:47:48 +0000 (18:47 +0100)
committerKlement Sekera <ksekera@cisco.com>
Wed, 31 Mar 2021 11:46:54 +0000 (11:46 +0000)
Type: fix
Signed-off-by: Klement Sekera <ksekera@cisco.com>
Change-Id: Ibbb72e77c751b7e775620cfb160b52ceff2da86b

src/plugins/nat/nat44-ed/nat44_ed.c

index dc784d9..6a0b962 100644 (file)
@@ -3330,7 +3330,9 @@ nat_6t_flow_ip4_translate (snat_main_t *sm, vlib_buffer_t *b, ip4_header_t *ip,
   ip_csum_t ip_sum = ip->checksum;
   ip_sum = ip_csum_sub_even (ip_sum, f->l3_csum_delta);
   ip->checksum = ip_csum_fold (ip_sum);
-  ASSERT (ip->checksum == ip4_header_checksum (ip));
+  if (0xffff == ip->checksum)
+    ip->checksum = 0;
+  ASSERT (ip4_header_checksum_is_valid (ip));
 }
 
 static_always_inline int