X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fbier%2Fbier_lookup.c;h=f7a21a1c744c845674725a546c6c20863dfddc50;hb=e8ea6be8dfb626b5bb4ff3355ce8037724ce1d83;hp=a9fab9c80f11a1fb6ce969df360e89f010832c4d;hpb=6631780422787166550b9871c46a94c160416324;p=vpp.git diff --git a/src/vnet/bier/bier_lookup.c b/src/vnet/bier/bier_lookup.c index a9fab9c80f1..f7a21a1c744 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 @@ -220,13 +219,16 @@ bier_lookup (vlib_main_t * vm, if (PREDICT_TRUE(0 != n_clones)) { + vec_set_len(blm->blm_clones[thread_index], n_clones); num_cloned = vlib_buffer_clone(vm, bi0, blm->blm_clones[thread_index], n_clones, VLIB_BUFFER_CLONE_HEAD_SIZE); - if (num_cloned != vec_len(blm->blm_fmasks[thread_index])) + + if (num_cloned != n_clones) { + vec_set_len(blm->blm_clones[thread_index], num_cloned); vlib_node_increment_counter (vm, node->node_index, BIER_LOOKUP_ERROR_BUFFER_ALLOCATION_FAILURE, 1);