interface: Add missing ip4 udp->checksum = 0 prior to computing checksum 53/24553/2
authorSteven Luong <sluong@cisco.com>
Mon, 27 Jan 2020 18:37:56 +0000 (10:37 -0800)
committerDamjan Marion <dmarion@me.com>
Mon, 27 Jan 2020 20:42:43 +0000 (20:42 +0000)
For ip4 tcp, ip6 tcp, and ip6 udp packet, we set checksum = 0 prior to
computing the checksum. We missed ip4 udp case. This oversight requires all
clients to set udp->checksum = 0 if ip4 udp checksum offload is needed.

Type: fix

Signed-off-by: Steven Luong <sluong@cisco.com>
Change-Id: Ic608811e82099f3bec469e123671e9b281f38d76

src/vnet/interface_output.c

index 73c7a31..eadee69 100644 (file)
@@ -189,7 +189,10 @@ calc_checksums (vlib_main_t * vm, vlib_buffer_t * b)
          th->checksum = ip4_tcp_udp_compute_checksum (vm, b, ip4);
        }
       else if (b->flags & VNET_BUFFER_F_OFFLOAD_UDP_CKSUM)
-       uh->checksum = ip4_tcp_udp_compute_checksum (vm, b, ip4);
+       {
+         uh->checksum = 0;
+         uh->checksum = ip4_tcp_udp_compute_checksum (vm, b, ip4);
+       }
     }
   else if (is_ip6)
     {