From 30be19ce98e539142288a6e18cae9fea1bf0536f Mon Sep 17 00:00:00 2001 From: Xiaoming Jiang Date: Thu, 11 Aug 2022 15:04:48 +0000 Subject: ip: only set rx_sw_if_index when connection found to avoid following crash like tcp punt Type: fix Signed-off-by: Xiaoming Jiang Change-Id: I894a881cec1888b392d26fdfb385f97c31113ef1 --- src/vnet/tcp/tcp_inlines.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/vnet') diff --git a/src/vnet/tcp/tcp_inlines.h b/src/vnet/tcp/tcp_inlines.h index d57b3059066..69f8ce7ff27 100644 --- a/src/vnet/tcp/tcp_inlines.h +++ b/src/vnet/tcp/tcp_inlines.h @@ -237,10 +237,6 @@ tcp_input_lookup_buffer (vlib_buffer_t * b, u8 thread_index, u32 * error, tcp_header_t *tcp; u8 result = 0; - /* 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; - if (is_ip4) { ip4_header_t *ip4 = vlib_buffer_get_current (b); @@ -297,7 +293,7 @@ tcp_input_lookup_buffer (vlib_buffer_t * b, u8 thread_index, u32 * error, { ip6_main_t *im = &ip6_main; fib_index = vec_elt (im->fib_index_by_sw_if_index, - vnet_buffer (b)->sw_if_index[VLIB_RX]); + vnet_buffer (b)->ip.rx_sw_if_index); } tc = session_lookup_connection_wt6 (fib_index, &ip6->dst_address, @@ -308,6 +304,10 @@ 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; + if (is_nolookup) tc = (transport_connection_t *) tcp_connection_get (vnet_buffer (b)-> -- cgit 1.2.3-korg