diff options
author | Steven Luong <sluong@cisco.com> | 2020-01-27 10:37:56 -0800 |
---|---|---|
committer | Damjan Marion <dmarion@me.com> | 2020-01-27 20:42:43 +0000 |
commit | 03328ec8bb86b93fa70bb6b2a9b37c40e686a1f7 (patch) | |
tree | b7ab5d60102a8127fad4bbf44027332791a45fd8 /src/vnet/interface_output.c | |
parent | 14053c9dbd75182f5302f7388d17508f3930f7ce (diff) |
interface: Add missing ip4 udp->checksum = 0 prior to computing checksum
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
Diffstat (limited to 'src/vnet/interface_output.c')
-rw-r--r-- | src/vnet/interface_output.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/vnet/interface_output.c b/src/vnet/interface_output.c index 73c7a31f010..eadee692919 100644 --- a/src/vnet/interface_output.c +++ b/src/vnet/interface_output.c @@ -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) { |