aboutsummaryrefslogtreecommitdiffstats
path: root/src/vnet/tcp
diff options
context:
space:
mode:
authorFlorin Coras <fcoras@cisco.com>2021-09-09 12:04:17 -0700
committerDamjan Marion <dmarion@me.com>2021-09-13 13:39:18 +0000
commit596c45b22211c9af243b624dc037f58c0aa1c302 (patch)
tree544b30c173bfe2297e41cc6f2ad7a545342d039c /src/vnet/tcp
parentdb79ac0502f3a2ecc20d4fa2e9f9be20bfb8e18c (diff)
tcp session: initialize sw_if_index at connect time
Type: fix Signed-off-by: Florin Coras <fcoras@cisco.com> Change-Id: Id0e67a9ce9c5d8bca2cd7a30493f03a02a46dc46
Diffstat (limited to 'src/vnet/tcp')
-rw-r--r--src/vnet/tcp/tcp.c1
-rw-r--r--src/vnet/tcp/tcp_cli.c5
-rw-r--r--src/vnet/tcp/tcp_input.c1
-rw-r--r--src/vnet/tcp/tcp_output.c2
4 files changed, 5 insertions, 4 deletions
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)
{