wireguard: fix ipv6 payload_length computation 18/37018/1
authorAloys Augustin <aloaugus@cisco.com>
Thu, 25 Aug 2022 11:00:31 +0000 (13:00 +0200)
committerAloys Augustin <aloaugus@cisco.com>
Thu, 25 Aug 2022 11:01:58 +0000 (13:01 +0200)
The ipv6 header length should not be counted in the ipv6 payload length.
This is similar to https://gerrit.fd.io/r/c/vpp/+/36945.

Type: fix
Change-Id: I22de0ff828175829102a85288513ee3f55709108
Signed-off-by: Aloys Augustin <aloaugus@cisco.com>
src/plugins/wireguard/wireguard_output_tun.c

index 5449c49..d1b1d6b 100644 (file)
@@ -504,12 +504,11 @@ wg_output_tun_inline (vlib_main_t *vm, vlib_node_runtime_t *node,
       else
        {
          hdr6_out->wg.header.type = MESSAGE_DATA;
-         hdr6_out->udp.length = clib_host_to_net_u16 (encrypted_packet_len +
-                                                      sizeof (udp_header_t));
+         hdr6_out->ip6.payload_length = hdr6_out->udp.length =
+           clib_host_to_net_u16 (encrypted_packet_len +
+                                 sizeof (udp_header_t));
          b[0]->current_length =
            (encrypted_packet_len + sizeof (ip6_udp_header_t));
-         hdr6_out->ip6.payload_length =
-           clib_host_to_net_u16 (b[0]->current_length);
        }
 
     out: