vlib_buffer_advance (b0, -(word)vec_len(e0->rewrite));
h0 = vlib_buffer_get_current (b0);
- memcpy (h0, e0->rewrite, vec_len(e0->rewrite));
+ clib_memcpy (h0, e0->rewrite, vec_len(e0->rewrite));
next0 = e0->output_next_index;
},
};
+VLIB_NODE_FUNCTION_MULTIARCH (mpls_policy_encap_node, mpls_policy_encap)
+
static clib_error_t *
mpls_policy_encap_init (vlib_main_t * vm)
{
mpls_main_t * mm = &mpls_main;
clib_error_t * error;
+ u32 ip6_next_index;
if ((error = vlib_call_init_function (vm, mpls_init)))
return error;
vlib_node_add_next (mm->vlib_main,
ip4_classify_node.index,
mpls_policy_encap_node.index);
+
+ /*
+ * Must add the same arc to ip6_classify so the
+ * next-index vectors are congruent
+ */
+ ip6_next_index =
+ vlib_node_add_next (mm->vlib_main,
+ ip6_classify_node.index,
+ mpls_policy_encap_node.index);
+
+ if (ip6_next_index != mm->ip_classify_mpls_policy_encap_next_index)
+ return clib_error_return
+ (0, "ip4/ip6 classifier next vector botch: %d vs %d",
+ ip6_next_index, mm->ip_classify_mpls_policy_encap_next_index);
+
return 0;
}