ipsec: fix vector after remove entry in spd 65/35365/1
authorGabriel Oginski <gabrielx.oginski@intel.com>
Fri, 18 Feb 2022 08:05:00 +0000 (08:05 +0000)
committerGabriel Oginski <gabrielx.oginski@intel.com>
Fri, 18 Feb 2022 08:15:10 +0000 (09:15 +0100)
Originally after remove the policy entry in spd, macro "vec_del1"
can change localization of the last entry in vector and finally the
entry list has not been sorted.
This patch fixes this issue by change executed macro "vec_delete"
instead of "vec_del1".

Type: fix

Signed-off-by: Gabriel Oginski <gabrielx.oginski@intel.com>
Change-Id: I396591cbbe17646e1d243aedb4cdc272ed4d5e25

src/vnet/ipsec/ipsec_spd_policy.c

index 85acf7a..36405bd 100644 (file)
@@ -217,7 +217,7 @@ ipsec_add_del_policy (vlib_main_t * vm,
                                spd->policies[policy->type][ii]);
        if (ipsec_policy_is_equal (vp, policy))
          {
-           vec_del1 (spd->policies[policy->type], ii);
+           vec_delete (spd->policies[policy->type], 1, ii);
            ipsec_sa_unlock (vp->sa_index);
            pool_put (im->policies, vp);
            break;