From 596c45b22211c9af243b624dc037f58c0aa1c302 Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Thu, 9 Sep 2021 12:04:17 -0700 Subject: tcp session: initialize sw_if_index at connect time Type: fix Signed-off-by: Florin Coras Change-Id: Id0e67a9ce9c5d8bca2cd7a30493f03a02a46dc46 --- src/vnet/tcp/tcp.c | 1 + src/vnet/tcp/tcp_cli.c | 5 +++-- src/vnet/tcp/tcp_input.c | 1 - src/vnet/tcp/tcp_output.c | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) (limited to 'src/vnet/tcp') diff --git a/src/vnet/tcp/tcp.c b/src/vnet/tcp/tcp.c index 4b1dd8e5cf5..62267bbdd1f 100644 --- a/src/vnet/tcp/tcp.c +++ b/src/vnet/tcp/tcp.c @@ -831,6 +831,7 @@ tcp_session_open (transport_endpoint_cfg_t * rmt) /* The other connection vars will be initialized after SYN ACK */ tcp_connection_timers_init (tc); tc->mss = rmt->mss; + tc->sw_if_index = rmt->peer.sw_if_index; tc->next_node_index = rmt->next_node_index; tc->next_node_opaque = rmt->next_node_opaque; diff --git a/src/vnet/tcp/tcp_cli.c b/src/vnet/tcp/tcp_cli.c index e602f114a74..c7b5c0b441e 100644 --- a/src/vnet/tcp/tcp_cli.c +++ b/src/vnet/tcp/tcp_cli.c @@ -208,8 +208,9 @@ format_tcp_vars (u8 * s, va_list * args) tc->mrtt_us * 1e3, tc->rttvar / 1000.0); s = format (s, " rtt_ts %.4f rtt_seq %u\n", tc->rtt_ts, tc->rtt_seq - tc->iss); - s = format (s, " next_node %u opaque 0x%x fib_index %u\n", - tc->next_node_index, tc->next_node_opaque, tc->c_fib_index); + s = format (s, " next_node %u opaque 0x%x fib_index %u sw_if_index %d\n", + tc->next_node_index, tc->next_node_opaque, tc->c_fib_index, + tc->sw_if_index); s = format (s, " cong: %U", format_tcp_congestion, tc); if (tc->state >= TCP_STATE_ESTABLISHED) diff --git a/src/vnet/tcp/tcp_input.c b/src/vnet/tcp/tcp_input.c index 1e27b7dcb2e..3d3272c8765 100644 --- a/src/vnet/tcp/tcp_input.c +++ b/src/vnet/tcp/tcp_input.c @@ -1933,7 +1933,6 @@ tcp46_syn_sent_inline (vlib_main_t *vm, vlib_node_runtime_t *node, new_tc->rcv_nxt = vnet_buffer (b[0])->tcp.seq_end; new_tc->irs = seq; new_tc->timers[TCP_TIMER_RETRANSMIT_SYN] = TCP_TIMER_HANDLE_INVALID; - new_tc->sw_if_index = vnet_buffer (b[0])->sw_if_index[VLIB_RX]; if (tcp_opts_tstamp (&new_tc->rcv_opts)) { diff --git a/src/vnet/tcp/tcp_output.c b/src/vnet/tcp/tcp_output.c index 82694995840..7a46798e746 100644 --- a/src/vnet/tcp/tcp_output.c +++ b/src/vnet/tcp/tcp_output.c @@ -2136,7 +2136,7 @@ tcp_output_handle_packet (tcp_connection_t * tc0, vlib_buffer_t * b0, } vnet_buffer (b0)->sw_if_index[VLIB_TX] = tc0->c_fib_index; - vnet_buffer (b0)->sw_if_index[VLIB_RX] = 0; + vnet_buffer (b0)->sw_if_index[VLIB_RX] = tc0->sw_if_index; if (!is_ip4) { -- cgit 1.2.3-korg