+ 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
+ * all the L3 headers that could be touched when doing BVI
+ * processing. So take the current l2 length plus 2 * IPv6
+ * headers (for tunnel encap)
+ */
+ n_cloned = vlib_buffer_clone (vm, bi0,
+ msm->clones[thread_index],
+ n_clones,
+ (vnet_buffer (b0)->l2.l2_len +
+ sizeof (udp_header_t) +
+ 2 * sizeof (ip6_header_t)));
+
+ if (PREDICT_FALSE (n_cloned != n_clones))
+ {
+ b0->error = node->errors[L2FLOOD_ERROR_REPL_FAIL];
+ }