ip: fix arc start in ip46-local for local mfib entries 28/35928/2
authorAlexander Chernavin <achernavin@netgate.com>
Mon, 11 Apr 2022 13:02:11 +0000 (13:02 +0000)
committerMatthew Smith <mgsmith@netgate.com>
Tue, 12 Apr 2022 16:06:43 +0000 (16:06 +0000)
commit65e770d895b13a6e5c73d13f436872ea626e47e3
tree8840bd513f485449e85d73e4d7ac4980977902a9
parentd0249ebcb2e37cd54140c078c21b6053d9d1bdfe
ip: fix arc start in ip46-local for local mfib entries

Type: fix

After changes made in f840880, VRRP IPv6 cannot reply for neighbor
solicitations requesting the link layer address of the configured
virtual address.

VRRP IPv6 enables the vrrp6-nd-input feature in the ip6-local feature
arc for an interface on which a virtual router is configured. When
neighbor solicitations arrive on that interface, ip6-local should start
feature arc walk for that interface and the messages should be processed
by vrrp6-nd-input. The problem is that currently, the feature arc is
started for the interface obtained from the receive DPO that has
interface unset (i.e. max u32) for local mfib entries. Thus, the feature
arc is started not on the interface the messages were received on and
vrrp6-nd-input is not traversed.

With this fix, if interface obtained from the receive DPO is unset, use
RX interface from the buffer to start the ip46-local feature arc.

Also, enable tests of this case for both IPv4 and IPv6 address families
that are currently tagged as extended and not run on every change. They
configure VRRP with priority 255 and are expected to be stable.

Signed-off-by: Alexander Chernavin <achernavin@netgate.com>
Change-Id: I11ef3d5a7a986e04431e8613d1510b8666094bd7
src/vnet/ip/ip4_forward.c
src/vnet/ip/ip6_forward.c
test/test_vrrp.py