X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdpo%2Fmpls_disposition.c;h=7bc2cb65f87d475de22536799f04ac760818952e;hb=282872127;hp=2956e541d57e61abbbb67101e549f515a6254f9a;hpb=31ed74407643595fdce206e9d7487108fb8b33ab;p=vpp.git diff --git a/src/vnet/dpo/mpls_disposition.c b/src/vnet/dpo/mpls_disposition.c index 2956e541d57..7bc2cb65f87 100644 --- a/src/vnet/dpo/mpls_disposition.c +++ b/src/vnet/dpo/mpls_disposition.c @@ -18,6 +18,7 @@ #include #include +#ifndef CLIB_MARCH_VARIANT /* * pool of all MPLS Label DPOs */ @@ -29,7 +30,7 @@ mpls_disp_dpo_alloc (void) mpls_disp_dpo_t *mdd; pool_get_aligned(mpls_disp_dpo_pool, mdd, CLIB_CACHE_LINE_BYTES); - memset(mdd, 0, sizeof(*mdd)); + clib_memset(mdd, 0, sizeof(*mdd)); dpo_reset(&mdd->mdd_dpo); @@ -87,8 +88,12 @@ format_mpls_disp_dpo (u8 *s, va_list *args) mdd = mpls_disp_dpo_get(index); - s = format(s, "mpls-disposition:[%d]:[%U, %U]", - index, + s = format(s, "mpls-disposition:[%d]:[", index); + + if (0 != mdd->mdd_rpf_id) + s = format(s, "rpf-id:%d ", mdd->mdd_rpf_id); + + s = format(s, "%U, %U]", format_dpo_proto, mdd->mdd_payload_proto, format_fib_mpls_lsp_mode, mdd->mdd_mode); @@ -123,6 +128,7 @@ mpls_disp_dpo_unlock (dpo_id_t *dpo) pool_put(mpls_disp_dpo_pool, mdd); } } +#endif /* CLIB_MARCH_VARIANT */ /** * @brief A struct to hold tracing information for the MPLS label disposition @@ -130,7 +136,9 @@ mpls_disp_dpo_unlock (dpo_id_t *dpo) */ typedef struct mpls_label_disposition_trace_t_ { - index_t mdd; + dpo_proto_t mddt_payload_proto; + fib_rpf_id_t mddt_rpf_id; + fib_mpls_lsp_mode_t mddt_mode; } mpls_label_disposition_trace_t; extern vlib_node_registration_t ip4_mpls_label_disposition_pipe_node; @@ -162,7 +170,7 @@ mpls_label_disposition_inline (vlib_main_t * vm, { if (FIB_MPLS_LSP_MODE_PIPE == mode) error_node = - vlib_node_get_runtime(vm, ip6_mpls_label_disposition_uniform_node.index); + vlib_node_get_runtime(vm, ip6_mpls_label_disposition_pipe_node.index); else error_node = vlib_node_get_runtime(vm, ip6_mpls_label_disposition_uniform_node.index); @@ -291,13 +299,17 @@ mpls_label_disposition_inline (vlib_main_t * vm, mpls_label_disposition_trace_t *tr = vlib_add_trace(vm, node, b0, sizeof(*tr)); - tr->mdd = mddi0; + tr->mddt_payload_proto = mdd0->mdd_payload_proto; + tr->mddt_rpf_id = mdd0->mdd_rpf_id; + tr->mddt_mode = mdd0->mdd_mode; } if (PREDICT_FALSE(b1->flags & VLIB_BUFFER_IS_TRACED)) { mpls_label_disposition_trace_t *tr = vlib_add_trace(vm, node, b1, sizeof(*tr)); - tr->mdd = mddi1; + tr->mddt_payload_proto = mdd1->mdd_payload_proto; + tr->mddt_rpf_id = mdd1->mdd_rpf_id; + tr->mddt_mode = mdd1->mdd_mode; } vlib_validate_buffer_enqueue_x2(vm, node, next_index, to_next, @@ -381,7 +393,9 @@ mpls_label_disposition_inline (vlib_main_t * vm, { mpls_label_disposition_trace_t *tr = vlib_add_trace(vm, node, b0, sizeof(*tr)); - tr->mdd = mddi0; + tr->mddt_payload_proto = mdd0->mdd_payload_proto; + tr->mddt_rpf_id = mdd0->mdd_rpf_id; + tr->mddt_mode = mdd0->mdd_mode; } vlib_validate_buffer_enqueue_x1(vm, node, next_index, to_next, @@ -401,12 +415,15 @@ format_mpls_label_disposition_trace (u8 * s, va_list * args) t = va_arg(*args, mpls_label_disposition_trace_t *); - s = format(s, "disp:%d", t->mdd); + s = format(s, "rpf-id:%d %U, %U", + t->mddt_rpf_id, + format_dpo_proto, t->mddt_payload_proto, + format_fib_mpls_lsp_mode, t->mddt_mode); + return (s); } -static uword -ip4_mpls_label_disposition_pipe (vlib_main_t * vm, +VLIB_NODE_FN (ip4_mpls_label_disposition_pipe_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -415,7 +432,6 @@ ip4_mpls_label_disposition_pipe (vlib_main_t * vm, } VLIB_REGISTER_NODE(ip4_mpls_label_disposition_pipe_node) = { - .function = ip4_mpls_label_disposition_pipe, .name = "ip4-mpls-label-disposition-pipe", .vector_size = sizeof(u32), @@ -424,11 +440,8 @@ VLIB_REGISTER_NODE(ip4_mpls_label_disposition_pipe_node) = { .n_errors = IP4_N_ERROR, .error_strings = ip4_error_strings, }; -VLIB_NODE_FUNCTION_MULTIARCH(ip4_mpls_label_disposition_pipe_node, - ip4_mpls_label_disposition_pipe) -static uword -ip6_mpls_label_disposition_pipe (vlib_main_t * vm, +VLIB_NODE_FN (ip6_mpls_label_disposition_pipe_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -437,7 +450,6 @@ ip6_mpls_label_disposition_pipe (vlib_main_t * vm, } VLIB_REGISTER_NODE(ip6_mpls_label_disposition_pipe_node) = { - .function = ip6_mpls_label_disposition_pipe, .name = "ip6-mpls-label-disposition-pipe", .vector_size = sizeof(u32), @@ -446,11 +458,8 @@ VLIB_REGISTER_NODE(ip6_mpls_label_disposition_pipe_node) = { .n_errors = IP6_N_ERROR, .error_strings = ip6_error_strings, }; -VLIB_NODE_FUNCTION_MULTIARCH(ip6_mpls_label_disposition_pipe_node, - ip6_mpls_label_disposition_pipe) -static uword -ip4_mpls_label_disposition_uniform (vlib_main_t * vm, +VLIB_NODE_FN (ip4_mpls_label_disposition_uniform_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -459,7 +468,6 @@ ip4_mpls_label_disposition_uniform (vlib_main_t * vm, } VLIB_REGISTER_NODE(ip4_mpls_label_disposition_uniform_node) = { - .function = ip4_mpls_label_disposition_uniform, .name = "ip4-mpls-label-disposition-uniform", .vector_size = sizeof(u32), @@ -468,11 +476,8 @@ VLIB_REGISTER_NODE(ip4_mpls_label_disposition_uniform_node) = { .n_errors = IP4_N_ERROR, .error_strings = ip4_error_strings, }; -VLIB_NODE_FUNCTION_MULTIARCH(ip4_mpls_label_disposition_uniform_node, - ip4_mpls_label_disposition_uniform) -static uword -ip6_mpls_label_disposition_uniform (vlib_main_t * vm, +VLIB_NODE_FN (ip6_mpls_label_disposition_uniform_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -481,7 +486,6 @@ ip6_mpls_label_disposition_uniform (vlib_main_t * vm, } VLIB_REGISTER_NODE(ip6_mpls_label_disposition_uniform_node) = { - .function = ip6_mpls_label_disposition_uniform, .name = "ip6-mpls-label-disposition-uniform", .vector_size = sizeof(u32), @@ -490,9 +494,8 @@ VLIB_REGISTER_NODE(ip6_mpls_label_disposition_uniform_node) = { .n_errors = IP6_N_ERROR, .error_strings = ip6_error_strings, }; -VLIB_NODE_FUNCTION_MULTIARCH(ip6_mpls_label_disposition_uniform_node, - ip6_mpls_label_disposition_uniform) +#ifndef CLIB_MARCH_VARIANT static void mpls_disp_dpo_mem_show (void) { @@ -550,3 +553,4 @@ mpls_disp_dpo_module_init(void) dpo_register(DPO_MPLS_DISPOSITION_UNIFORM, &mdd_vft, mpls_label_disp_uniform_nodes); } +#endif /* CLIB_MARCH_VARIANT */