diff options
author | Benoît Ganne <bganne@cisco.com> | 2019-07-22 14:21:46 +0200 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2019-10-29 09:53:17 +0000 |
commit | 16a17507f418c89ac0aacaf19d83dd07dee42d21 (patch) | |
tree | 1d45bb793116a1a3732781a6ac37e11ae339359d /src/vnet | |
parent | f7b53e155a779a45ec0cf140bd5f4cb716fb551f (diff) |
vppinfra: add vec_set_len()
l2-flood and bier nodes reset vector length without updating it to its
effective size. Introduce a helper to do it (this allows ASAN to keep
track of the new vector size).
Type: refactor
Change-Id: I2d652550c440f0553a2b49c3ee3d37b49ebc16c3
Signed-off-by: Benoît Ganne <bganne@cisco.com>
(cherry picked from commit 8a4bfdae87286ed281df855c58b669eb6b76aaf8)
Diffstat (limited to 'src/vnet')
-rw-r--r-- | src/vnet/bier/bier_lookup.c | 7 | ||||
-rw-r--r-- | src/vnet/l2/l2_flood.c | 3 |
2 files changed, 6 insertions, 4 deletions
diff --git a/src/vnet/bier/bier_lookup.c b/src/vnet/bier/bier_lookup.c index a9fab9c80f1..9361845c992 100644 --- a/src/vnet/bier/bier_lookup.c +++ b/src/vnet/bier/bier_lookup.c @@ -147,10 +147,9 @@ bier_lookup (vlib_main_t * vm, memcpy(bbs.bbs_buckets, bh0->bh_bit_string, bbs.bbs_len); /* - * reset the fmask and clone storage vectors + * reset the fmask storage vector */ vec_reset_length (blm->blm_fmasks[thread_index]); - vec_reset_length (blm->blm_clones[thread_index]); /* * Loop through the buckets in the header @@ -225,7 +224,9 @@ bier_lookup (vlib_main_t * vm, n_clones, VLIB_BUFFER_CLONE_HEAD_SIZE); - if (num_cloned != vec_len(blm->blm_fmasks[thread_index])) + vec_set_len(blm->blm_clones[thread_index], num_cloned); + + if (num_cloned != n_clones) { vlib_node_increment_counter (vm, node->node_index, diff --git a/src/vnet/l2/l2_flood.c b/src/vnet/l2/l2_flood.c index 8d34233b520..10e087767e4 100644 --- a/src/vnet/l2/l2_flood.c +++ b/src/vnet/l2/l2_flood.c @@ -213,7 +213,6 @@ VLIB_NODE_FN (l2flood_node) (vlib_main_t * vm, else if (n_clones > 1) { vec_validate (msm->clones[thread_index], n_clones); - vec_reset_length (msm->clones[thread_index]); /* * the header offset needs to be large enough to incorporate @@ -226,6 +225,8 @@ VLIB_NODE_FN (l2flood_node) (vlib_main_t * vm, n_clones, VLIB_BUFFER_CLONE_HEAD_SIZE); + vec_set_len (msm->clones[thread_index], n_cloned); + if (PREDICT_FALSE (n_cloned != n_clones)) { b0->error = node->errors[L2FLOOD_ERROR_REPL_FAIL]; |