From 38049e48a7a8da115f555bbb476b0fdbfb9cbb76 Mon Sep 17 00:00:00 2001 From: Nathan Skrzypczak Date: Mon, 2 Nov 2020 17:29:52 +0100 Subject: cnat: reduce compile time Compile time reduced from ~30s to 2s for cnat_node_vip.c & cnat_node_snat.c This doesn't impact performance for now as ts update rwlock is the main bottleneck. Type: improvement Change-Id: Ic92df300ae0dfddc5235c350bd021e73e7c850d9 Signed-off-by: Nathan Skrzypczak --- src/plugins/cnat/cnat_node_snat.c | 22 +++++++++++----------- src/plugins/cnat/cnat_node_vip.c | 18 +++++++++--------- 2 files changed, 20 insertions(+), 20 deletions(-) diff --git a/src/plugins/cnat/cnat_node_snat.c b/src/plugins/cnat/cnat_node_snat.c index d92200fec05..8166df6a757 100644 --- a/src/plugins/cnat/cnat_node_snat.c +++ b/src/plugins/cnat/cnat_node_snat.c @@ -55,17 +55,17 @@ format_cnat_snat_trace (u8 * s, va_list * args) /* CNat sub for source NAT as a feature arc on ip[46]-unicast This node's sub shouldn't apply to the same flows as cnat_vip_inline */ -always_inline uword -cnat_snat_inline (vlib_main_t * vm, - vlib_node_runtime_t * node, - vlib_buffer_t * b, - cnat_node_ctx_t * ctx, int rv, cnat_session_t * session) +static uword +cnat_snat_node_fn (vlib_main_t * vm, + vlib_node_runtime_t * node, + vlib_buffer_t * b, + cnat_node_ctx_t * ctx, int rv, cnat_session_t * session) { cnat_main_t *cm = &cnat_main; int created_session = 0; - ip4_header_t *ip4; + ip4_header_t *ip4 = NULL; ip_protocol_t iproto; - ip6_header_t *ip6; + ip6_header_t *ip6 = NULL; udp_header_t *udp0; u32 arc_next0; u16 next0; @@ -182,9 +182,9 @@ VLIB_NODE_FN (cnat_snat_ip4_node) (vlib_main_t * vm, vlib_frame_t * frame) { if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE))) - return cnat_node_inline (vm, node, frame, cnat_snat_inline, AF_IP4, + return cnat_node_inline (vm, node, frame, cnat_snat_node_fn, AF_IP4, 1 /* do_trace */ ); - return cnat_node_inline (vm, node, frame, cnat_snat_inline, AF_IP4, + return cnat_node_inline (vm, node, frame, cnat_snat_node_fn, AF_IP4, 0 /* do_trace */ ); } @@ -193,9 +193,9 @@ VLIB_NODE_FN (cnat_snat_ip6_node) (vlib_main_t * vm, vlib_frame_t * frame) { if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE))) - return cnat_node_inline (vm, node, frame, cnat_snat_inline, AF_IP6, + return cnat_node_inline (vm, node, frame, cnat_snat_node_fn, AF_IP6, 1 /* do_trace */ ); - return cnat_node_inline (vm, node, frame, cnat_snat_inline, AF_IP6, + return cnat_node_inline (vm, node, frame, cnat_snat_node_fn, AF_IP6, 0 /* do_trace */ ); } diff --git a/src/plugins/cnat/cnat_node_vip.c b/src/plugins/cnat/cnat_node_vip.c index bbce5f3bd15..8dd53ad6fb4 100644 --- a/src/plugins/cnat/cnat_node_vip.c +++ b/src/plugins/cnat/cnat_node_vip.c @@ -65,11 +65,11 @@ format_cnat_translation_trace (u8 * s, va_list * args) } /* CNat sub for NAT behind a fib entry (VIP or interposed real IP) */ -always_inline uword -cnat_vip_inline (vlib_main_t * vm, - vlib_node_runtime_t * node, - vlib_buffer_t * b, - cnat_node_ctx_t * ctx, int rv, cnat_session_t * session) +static uword +cnat_vip_node_fn (vlib_main_t * vm, + vlib_node_runtime_t * node, + vlib_buffer_t * b, + cnat_node_ctx_t * ctx, int rv, cnat_session_t * session) { vlib_combined_counter_main_t *cntm = &cnat_translation_counters; const cnat_translation_t *ct = NULL; @@ -251,9 +251,9 @@ VLIB_NODE_FN (cnat_vip_ip4_node) (vlib_main_t * vm, vlib_frame_t * frame) { if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE))) - return cnat_node_inline (vm, node, frame, cnat_vip_inline, AF_IP4, + return cnat_node_inline (vm, node, frame, cnat_vip_node_fn, AF_IP4, 1 /* do_trace */ ); - return cnat_node_inline (vm, node, frame, cnat_vip_inline, AF_IP4, + return cnat_node_inline (vm, node, frame, cnat_vip_node_fn, AF_IP4, 0 /* do_trace */ ); } @@ -262,9 +262,9 @@ VLIB_NODE_FN (cnat_vip_ip6_node) (vlib_main_t * vm, vlib_frame_t * frame) { if (PREDICT_FALSE ((node->flags & VLIB_NODE_FLAG_TRACE))) - return cnat_node_inline (vm, node, frame, cnat_vip_inline, AF_IP6, + return cnat_node_inline (vm, node, frame, cnat_vip_node_fn, AF_IP6, 1 /* do_trace */ ); - return cnat_node_inline (vm, node, frame, cnat_vip_inline, AF_IP6, + return cnat_node_inline (vm, node, frame, cnat_vip_node_fn, AF_IP6, 0 /* do_trace */ ); } -- cgit 1.2.3-korg