ipsec: clear L4-cksum flags when decap'ing packets 38/39238/8
authorFrédéric Perrin <fred@fperrin.net>
Fri, 14 Jul 2023 10:13:42 +0000 (11:13 +0100)
committerFan Zhang <fanzhang.oss@gmail.com>
Thu, 7 Sep 2023 08:07:51 +0000 (08:07 +0000)
Type: fix

Signed-off-by: Frédéric Perrin <fred@fperrin.net>
Change-Id: I45191b7316c88038bcd57d62aeb07bb109cf4a4d

src/vnet/ipsec/ah_decrypt.c
src/vnet/ipsec/esp_decrypt.c

index f20f620..5f98693 100644 (file)
@@ -325,6 +325,8 @@ ah_decrypt_inline (vlib_main_t * vm,
        + pd->icv_padding_len;
       vlib_buffer_advance (b[0], pd->ip_hdr_size + ah_hdr_len);
       b[0]->flags |= VLIB_BUFFER_TOTAL_LENGTH_VALID;
+      b[0]->flags &= ~(VNET_BUFFER_F_L4_CHECKSUM_COMPUTED |
+                      VNET_BUFFER_F_L4_CHECKSUM_CORRECT);
 
       if (PREDICT_TRUE (ipsec_sa_is_set_IS_TUNNEL (sa0)))
        {                       /* tunnel mode */
index 2c1efa2..74410a8 100644 (file)
@@ -840,7 +840,9 @@ esp_decrypt_post_crypto (vlib_main_t *vm, vlib_node_runtime_t *node,
   u16 adv = pd->iv_sz + esp_sz;
   u16 tail = sizeof (esp_footer_t) + pad_length + icv_sz;
   u16 tail_orig = sizeof (esp_footer_t) + pad_length + pd->icv_sz;
-  b->flags &= ~VLIB_BUFFER_TOTAL_LENGTH_VALID;
+  b->flags &=
+    ~(VLIB_BUFFER_TOTAL_LENGTH_VALID | VNET_BUFFER_F_L4_CHECKSUM_COMPUTED |
+      VNET_BUFFER_F_L4_CHECKSUM_CORRECT);
 
   if ((pd->flags & tun_flags) == 0 && !is_tun) /* transport mode */
     {