X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fvnet%2Fdpo%2Fmpls_label_dpo.c;h=9d147f98f138253efdd802cf3849fab02284ea1e;hb=a8c3b86ebebea357b89ad181bb4c141db4c6505d;hp=bee155b9035a8e53be9d303fd7412be4e3b4e56e;hpb=7c922dc404c2c0a2d67d53ca05db1c1ae1598f44;p=vpp.git diff --git a/src/vnet/dpo/mpls_label_dpo.c b/src/vnet/dpo/mpls_label_dpo.c index bee155b9035..9d147f98f13 100644 --- a/src/vnet/dpo/mpls_label_dpo.c +++ b/src/vnet/dpo/mpls_label_dpo.c @@ -18,6 +18,7 @@ #include #include +#ifndef CLIB_MARCH_VARIANT /* * pool of all MPLS Label DPOs */ @@ -40,7 +41,7 @@ mpls_label_dpo_alloc (void) mpls_label_dpo_t *mld; pool_get_aligned(mpls_label_dpo_pool, mld, CLIB_CACHE_LINE_BYTES); - memset(mld, 0, sizeof(*mld)); + clib_memset(mld, 0, sizeof(*mld)); dpo_reset(&mld->mld_dpo); @@ -247,6 +248,7 @@ mpls_label_dpo_unlock (dpo_id_t *dpo) pool_put(mpls_label_dpo_pool, mld); } } +#endif /* CLIB_MARCH_VARIANT */ /** * @brief A struct to hold tracing information for the MPLS label imposition @@ -287,7 +289,7 @@ mpls_label_paint (vlib_buffer_t * b0, } else { - clib_memcpy(hdr0, mld0->mld_hdr, mld0->mld_n_hdr_bytes); + clib_memcpy_fast(hdr0, mld0->mld_hdr, mld0->mld_n_hdr_bytes); hdr0 = hdr0 + (mld0->mld_n_labels - 1); } @@ -482,6 +484,12 @@ mpls_label_imposition_inline (vlib_main_t * vm, exp2 = ip_dscp_to_mpls_exp(ip2->tos); exp3 = ip_dscp_to_mpls_exp(ip3->tos); } + + /* save the payload proto information in mpls opaque */ + vnet_buffer(b0)->mpls.pyld_proto = DPO_PROTO_IP4; + vnet_buffer(b1)->mpls.pyld_proto = DPO_PROTO_IP4; + vnet_buffer(b2)->mpls.pyld_proto = DPO_PROTO_IP4; + vnet_buffer(b3)->mpls.pyld_proto = DPO_PROTO_IP4; } else if (DPO_PROTO_IP6 == dproto) { @@ -516,6 +524,12 @@ mpls_label_imposition_inline (vlib_main_t * vm, exp3 = ip_dscp_to_mpls_exp( ip6_traffic_class_network_order(ip3)); } + + /* save the payload proto information in mpls opaque */ + vnet_buffer(b0)->mpls.pyld_proto = DPO_PROTO_IP6; + vnet_buffer(b1)->mpls.pyld_proto = DPO_PROTO_IP6; + vnet_buffer(b2)->mpls.pyld_proto = DPO_PROTO_IP6; + vnet_buffer(b3)->mpls.pyld_proto = DPO_PROTO_IP6; } else { @@ -785,6 +799,9 @@ mpls_label_imposition_inline (vlib_main_t * vm, ttl0 = ip0->ttl; exp0 = ip_dscp_to_mpls_exp(ip0->tos); } + + /* save the payload proto information in mpls opaque */ + vnet_buffer(b0)->mpls.pyld_proto = DPO_PROTO_IP4; } else if (DPO_PROTO_IP6 == dproto) { @@ -803,6 +820,9 @@ mpls_label_imposition_inline (vlib_main_t * vm, exp0 = ip_dscp_to_mpls_exp( ip6_traffic_class_network_order(ip0)); } + + /* save the payload proto information in mpls opaque */ + vnet_buffer(b0)->mpls.pyld_proto = DPO_PROTO_IP6; } else { @@ -902,8 +922,7 @@ format_mpls_label_imposition_trace (u8 * s, va_list * args) return (s); } -static uword -mpls_mpls_label_imposition_pipe (vlib_main_t * vm, +VLIB_NODE_FN (mpls_mpls_label_imposition_pipe_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -913,7 +932,6 @@ mpls_mpls_label_imposition_pipe (vlib_main_t * vm, } VLIB_REGISTER_NODE (mpls_mpls_label_imposition_pipe_node) = { - .function = mpls_mpls_label_imposition_pipe, .name = "mpls-label-imposition-pipe", .vector_size = sizeof (u32), @@ -923,11 +941,8 @@ VLIB_REGISTER_NODE (mpls_mpls_label_imposition_pipe_node) = { [0] = "mpls-drop", } }; -VLIB_NODE_FUNCTION_MULTIARCH (mpls_mpls_label_imposition_pipe_node, - mpls_mpls_label_imposition_pipe) -static uword -ip4_mpls_label_imposition_pipe (vlib_main_t * vm, +VLIB_NODE_FN (ip4_mpls_label_imposition_pipe_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -937,7 +952,6 @@ ip4_mpls_label_imposition_pipe (vlib_main_t * vm, } VLIB_REGISTER_NODE (ip4_mpls_label_imposition_pipe_node) = { - .function = ip4_mpls_label_imposition_pipe, .name = "ip4-mpls-label-imposition-pipe", .vector_size = sizeof (u32), @@ -947,11 +961,8 @@ VLIB_REGISTER_NODE (ip4_mpls_label_imposition_pipe_node) = { [0] = "ip4-drop", } }; -VLIB_NODE_FUNCTION_MULTIARCH (ip4_mpls_label_imposition_pipe_node, - ip4_mpls_label_imposition_pipe) -static uword -ip6_mpls_label_imposition_pipe (vlib_main_t * vm, +VLIB_NODE_FN (ip6_mpls_label_imposition_pipe_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -961,7 +972,6 @@ ip6_mpls_label_imposition_pipe (vlib_main_t * vm, } VLIB_REGISTER_NODE (ip6_mpls_label_imposition_pipe_node) = { - .function = ip6_mpls_label_imposition_pipe, .name = "ip6-mpls-label-imposition-pipe", .vector_size = sizeof (u32), @@ -971,11 +981,8 @@ VLIB_REGISTER_NODE (ip6_mpls_label_imposition_pipe_node) = { [0] = "ip6-drop", } }; -VLIB_NODE_FUNCTION_MULTIARCH (ip6_mpls_label_imposition_pipe_node, - ip6_mpls_label_imposition_pipe) -static uword -ethernet_mpls_label_imposition_pipe (vlib_main_t * vm, +VLIB_NODE_FN (ethernet_mpls_label_imposition_pipe_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -985,7 +992,6 @@ ethernet_mpls_label_imposition_pipe (vlib_main_t * vm, } VLIB_REGISTER_NODE (ethernet_mpls_label_imposition_pipe_node) = { - .function = ethernet_mpls_label_imposition_pipe, .name = "ethernet-mpls-label-imposition-pipe", .vector_size = sizeof (u32), @@ -996,11 +1002,7 @@ VLIB_REGISTER_NODE (ethernet_mpls_label_imposition_pipe_node) = { } }; -VLIB_NODE_FUNCTION_MULTIARCH (ethernet_mpls_label_imposition_pipe_node, - ethernet_mpls_label_imposition_pipe) - -static uword -mpls_mpls_label_imposition_uniform (vlib_main_t * vm, +VLIB_NODE_FN (mpls_mpls_label_imposition_uniform_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -1010,7 +1012,6 @@ mpls_mpls_label_imposition_uniform (vlib_main_t * vm, } VLIB_REGISTER_NODE (mpls_mpls_label_imposition_uniform_node) = { - .function = mpls_mpls_label_imposition_uniform, .name = "mpls-label-imposition-uniform", .vector_size = sizeof (u32), @@ -1020,11 +1021,8 @@ VLIB_REGISTER_NODE (mpls_mpls_label_imposition_uniform_node) = { [0] = "mpls-drop", } }; -VLIB_NODE_FUNCTION_MULTIARCH (mpls_mpls_label_imposition_uniform_node, - mpls_mpls_label_imposition_uniform) -static uword -ip4_mpls_label_imposition_uniform (vlib_main_t * vm, +VLIB_NODE_FN (ip4_mpls_label_imposition_uniform_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -1034,7 +1032,6 @@ ip4_mpls_label_imposition_uniform (vlib_main_t * vm, } VLIB_REGISTER_NODE (ip4_mpls_label_imposition_uniform_node) = { - .function = ip4_mpls_label_imposition_uniform, .name = "ip4-mpls-label-imposition-uniform", .vector_size = sizeof (u32), @@ -1044,11 +1041,8 @@ VLIB_REGISTER_NODE (ip4_mpls_label_imposition_uniform_node) = { [0] = "ip4-drop", } }; -VLIB_NODE_FUNCTION_MULTIARCH (ip4_mpls_label_imposition_uniform_node, - ip4_mpls_label_imposition_uniform) -static uword -ip6_mpls_label_imposition_uniform (vlib_main_t * vm, +VLIB_NODE_FN (ip6_mpls_label_imposition_uniform_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -1058,7 +1052,6 @@ ip6_mpls_label_imposition_uniform (vlib_main_t * vm, } VLIB_REGISTER_NODE (ip6_mpls_label_imposition_uniform_node) = { - .function = ip6_mpls_label_imposition_uniform, .name = "ip6-mpls-label-imposition-uniform", .vector_size = sizeof (u32), @@ -1068,11 +1061,8 @@ VLIB_REGISTER_NODE (ip6_mpls_label_imposition_uniform_node) = { [0] = "ip6-drop", } }; -VLIB_NODE_FUNCTION_MULTIARCH (ip6_mpls_label_imposition_uniform_node, - ip6_mpls_label_imposition_uniform) -static uword -ethernet_mpls_label_imposition_uniform (vlib_main_t * vm, +VLIB_NODE_FN (ethernet_mpls_label_imposition_uniform_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -1082,7 +1072,6 @@ ethernet_mpls_label_imposition_uniform (vlib_main_t * vm, } VLIB_REGISTER_NODE (ethernet_mpls_label_imposition_uniform_node) = { - .function = ethernet_mpls_label_imposition_uniform, .name = "ethernet-mpls-label-imposition-uniform", .vector_size = sizeof (u32), @@ -1093,11 +1082,8 @@ VLIB_REGISTER_NODE (ethernet_mpls_label_imposition_uniform_node) = { } }; -VLIB_NODE_FUNCTION_MULTIARCH (ethernet_mpls_label_imposition_uniform_node, - ethernet_mpls_label_imposition_uniform) -static uword -ip4_mpls_label_imposition_pipe_no_ip_ttl_decr (vlib_main_t * vm, +VLIB_NODE_FN (ip4_mpls_label_imposition_pipe_no_ip_ttl_decr_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -1107,7 +1093,6 @@ ip4_mpls_label_imposition_pipe_no_ip_ttl_decr (vlib_main_t * vm, } VLIB_REGISTER_NODE (ip4_mpls_label_imposition_pipe_no_ip_ttl_decr_node) = { - .function = ip4_mpls_label_imposition_pipe_no_ip_ttl_decr, .name = "ip4-mpls-label-imposition-pipe-no-ip-ttl-decr", .vector_size = sizeof (u32), @@ -1117,11 +1102,8 @@ VLIB_REGISTER_NODE (ip4_mpls_label_imposition_pipe_no_ip_ttl_decr_node) = { [0] = "ip4-drop", } }; -VLIB_NODE_FUNCTION_MULTIARCH (ip4_mpls_label_imposition_pipe_no_ip_ttl_decr_node, - ip4_mpls_label_imposition_pipe_no_ip_ttl_decr) -static uword -ip6_mpls_label_imposition_pipe_no_ip_ttl_decr (vlib_main_t * vm, +VLIB_NODE_FN (ip6_mpls_label_imposition_pipe_no_ip_ttl_decr_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -1131,7 +1113,6 @@ ip6_mpls_label_imposition_pipe_no_ip_ttl_decr (vlib_main_t * vm, } VLIB_REGISTER_NODE (ip6_mpls_label_imposition_pipe_no_ip_ttl_decr_node) = { - .function = ip6_mpls_label_imposition_pipe_no_ip_ttl_decr, .name = "ip6-mpls-label-imposition-pipe-no-ip-ttl-decr", .vector_size = sizeof (u32), @@ -1141,11 +1122,8 @@ VLIB_REGISTER_NODE (ip6_mpls_label_imposition_pipe_no_ip_ttl_decr_node) = { [0] = "ip6-drop", } }; -VLIB_NODE_FUNCTION_MULTIARCH (ip6_mpls_label_imposition_pipe_no_ip_ttl_decr_node, - ip6_mpls_label_imposition_pipe_no_ip_ttl_decr) -static uword -ip4_mpls_label_imposition_uniform_no_ip_ttl_decr (vlib_main_t * vm, +VLIB_NODE_FN (ip4_mpls_label_imposition_uniform_no_ip_ttl_decr_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -1156,7 +1134,6 @@ ip4_mpls_label_imposition_uniform_no_ip_ttl_decr (vlib_main_t * vm, } VLIB_REGISTER_NODE (ip4_mpls_label_imposition_uniform_no_ip_ttl_decr_node) = { - .function = ip4_mpls_label_imposition_uniform_no_ip_ttl_decr, .name = "ip4-mpls-label-imposition-uniform-no-ip-ttl-decr", .vector_size = sizeof (u32), @@ -1166,11 +1143,8 @@ VLIB_REGISTER_NODE (ip4_mpls_label_imposition_uniform_no_ip_ttl_decr_node) = { [0] = "ip4-drop", } }; -VLIB_NODE_FUNCTION_MULTIARCH (ip4_mpls_label_imposition_uniform_no_ip_ttl_decr_node, - ip4_mpls_label_imposition_uniform_no_ip_ttl_decr) -static uword -ip6_mpls_label_imposition_uniform_no_ip_ttl_decr (vlib_main_t * vm, +VLIB_NODE_FN (ip6_mpls_label_imposition_uniform_no_ip_ttl_decr_node) (vlib_main_t * vm, vlib_node_runtime_t * node, vlib_frame_t * frame) { @@ -1181,7 +1155,6 @@ ip6_mpls_label_imposition_uniform_no_ip_ttl_decr (vlib_main_t * vm, } VLIB_REGISTER_NODE (ip6_mpls_label_imposition_uniform_no_ip_ttl_decr_node) = { - .function = ip6_mpls_label_imposition_uniform_no_ip_ttl_decr, .name = "ip6-mpls-label-imposition-uniform-no-ip-ttl-decr", .vector_size = sizeof (u32), @@ -1191,10 +1164,9 @@ VLIB_REGISTER_NODE (ip6_mpls_label_imposition_uniform_no_ip_ttl_decr_node) = { [0] = "ip6-drop", } }; -VLIB_NODE_FUNCTION_MULTIARCH (ip6_mpls_label_imposition_uniform_no_ip_ttl_decr_node, - ip6_mpls_label_imposition_uniform_no_ip_ttl_decr) +#ifndef CLIB_MARCH_VARIANT static void mpls_label_dpo_mem_show (void) { @@ -1218,7 +1190,7 @@ mpls_label_interpose (const dpo_id_t *original, mld = mpls_label_dpo_get(original->dpoi_index); mld_clone->mld_locks = 0; - clib_memcpy(&mld_clone->mld_hdr, + clib_memcpy_fast(&mld_clone->mld_hdr, &mld->mld_hdr, sizeof(mld_clone->mld_hdr)); mld_clone->mld_payload_proto = mld->mld_payload_proto; @@ -1359,3 +1331,4 @@ mpls_label_dpo_get_type (mpls_label_dpo_flags_t flags) { return (mpls_label_dpo_types[flags]); } +#endif /* CLIB_MARCH_VARIANT */