From 904638f4625c82d166d67870f9cf8088dd29a8b2 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Wed, 10 Nov 2021 07:39:51 -0800 Subject: [PATCH] ip: always set ip rx_sw_if_index Type: improvement Signed-off-by: Florin Coras Change-Id: I43f6bfa028ee37227f27a2fe0303662bf2631b10 --- src/vnet/ip/ip4_forward.c | 8 +++++--- src/vnet/ip/ip6_forward.c | 9 ++++++--- src/vnet/tcp/tcp_inlines.h | 5 +---- 3 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/vnet/ip/ip4_forward.c b/src/vnet/ip/ip4_forward.c index 900a1b4ce8e..58af706e2b2 100644 --- a/src/vnet/ip/ip4_forward.c +++ b/src/vnet/ip/ip4_forward.c @@ -1534,7 +1534,7 @@ ip4_local_check_src (vlib_buffer_t *b, ip4_header_t *ip0, vnet_buffer (b)->ip.rx_sw_if_index = rd->rd_sw_if_index; } else - vnet_buffer (b)->ip.rx_sw_if_index = ~0; + vnet_buffer (b)->ip.rx_sw_if_index = vnet_buffer (b)->sw_if_index[VLIB_RX]; /* * vnet_buffer()->ip.adj_index[VLIB_RX] will be set to the index of the @@ -1622,8 +1622,10 @@ ip4_local_check_src_x2 (vlib_buffer_t **b, ip4_header_t **ip, } else { - vnet_buffer (b[0])->ip.rx_sw_if_index = ~0; - vnet_buffer (b[1])->ip.rx_sw_if_index = ~0; + vnet_buffer (b[0])->ip.rx_sw_if_index = + vnet_buffer (b[0])->sw_if_index[VLIB_RX]; + vnet_buffer (b[1])->ip.rx_sw_if_index = + vnet_buffer (b[1])->sw_if_index[VLIB_RX]; } /* diff --git a/src/vnet/ip/ip6_forward.c b/src/vnet/ip/ip6_forward.c index b9f9892f929..833ce142999 100644 --- a/src/vnet/ip/ip6_forward.c +++ b/src/vnet/ip/ip6_forward.c @@ -1481,8 +1481,10 @@ ip6_local_inline (vlib_main_t *vm, vlib_node_runtime_t *node, } else { - vnet_buffer (b[0])->ip.rx_sw_if_index = ~0; - vnet_buffer (b[1])->ip.rx_sw_if_index = ~0; + vnet_buffer (b[0])->ip.rx_sw_if_index = + vnet_buffer (b[0])->ip.adj_index[VLIB_RX]; + vnet_buffer (b[1])->ip.rx_sw_if_index = + vnet_buffer (b[1])->ip.adj_index[VLIB_RX]; } } /* head_of_feature_arc */ @@ -1618,7 +1620,8 @@ ip6_local_inline (vlib_main_t *vm, vlib_node_runtime_t *node, vnet_buffer (b[0])->ip.rx_sw_if_index = rd->rd_sw_if_index; } else - vnet_buffer (b[0])->ip.rx_sw_if_index = ~0; + vnet_buffer (b[0])->ip.rx_sw_if_index = + vnet_buffer (b[0])->ip.adj_index[VLIB_RX]; } /* head_of_feature_arc */ next[0] = lm->local_next_by_ip_protocol[ip->protocol]; diff --git a/src/vnet/tcp/tcp_inlines.h b/src/vnet/tcp/tcp_inlines.h index e82f308d9b8..d57b3059066 100644 --- a/src/vnet/tcp/tcp_inlines.h +++ b/src/vnet/tcp/tcp_inlines.h @@ -239,10 +239,7 @@ tcp_input_lookup_buffer (vlib_buffer_t * b, u8 thread_index, u32 * error, /* Set the sw_if_index[VLIB_RX] to the interface we received * the connection on (the local interface) */ - vnet_buffer (b)->sw_if_index[VLIB_RX] = - vnet_buffer (b)->ip.rx_sw_if_index != ~0 ? - vnet_buffer (b)->ip.rx_sw_if_index : - vnet_buffer (b)->sw_if_index[VLIB_RX]; + vnet_buffer (b)->sw_if_index[VLIB_RX] = vnet_buffer (b)->ip.rx_sw_if_index; if (is_ip4) { -- 2.16.6