ip: Add ip46-local node for local swif[rx] 08/33708/10
authorNathan Skrzypczak <nathan.skrzypczak@gmail.com>
Thu, 9 Sep 2021 16:31:36 +0000 (18:31 +0200)
committerNeale Ranns <neale@graphiant.com>
Thu, 21 Oct 2021 16:39:37 +0000 (16:39 +0000)
commitbfa86084af0e4d0cc8ad8ccbeafe999b748a990e
tree2b2f072cd1b46dde857188c8f9cd11600d2c8409
parent1b6fb40bad69a6582e2a9a7ff8d3bcb65ddfe8ad
ip: Add ip46-local node for local swif[rx]

Type: improvement

This adds a new ip[46]-receive node, sibling
of ip[46]-local. Its goal is to set
vnet_buffer (b)->ip.rx_sw_if_index to the
sw_if_index of the local interface.

In dependant nodes further down the line (e.g.
hoststack) we then set sw_if_idx[rx] to this
value. So that we know which local interface
did receive the packet.

The TCP issue this fixes is that :

On accepts, we were setting tc->sw_if_index
to the source sw_if_index. We should use
the dest sw_if_index, so that packets
coming back on this connection have the
right source sw_if_index. And also setting
it in the tx-ed packet.

Change-Id: I569ed673e15c21e71f365c3ad45439b05bd14a9f
Signed-off-by: Nathan Skrzypczak <nathan.skrzypczak@gmail.com>
src/vnet/buffer.h
src/vnet/dpo/receive_dpo.c
src/vnet/ip/ip4_forward.c
src/vnet/ip/ip6_forward.c
src/vnet/tcp/tcp_inlines.h