Subject: Re: [PATCH net-next] selftests: forwarding: lib.sh: ignore "Address not found"

From: Ido Schimmel <[email-masked]>
Date: Wed, 7 Aug 2024 09:59:56 +0300

On Wed, Aug 07, 2024 at 12:08:15PM +0800, Geliang Tang wrote:
> On Tue, 2024-08-06 at 10:40 +0300, Ido Schimmel wrote:
> > On Tue, Aug 06, 2024 at 12:20:38PM +0800, Geliang Tang wrote:
> > > From: Geliang Tang <[email-masked]>
> > > 
> > > So many "Address not found" messages occur at the end of forwarding
> > > tests
> > > when using "ip address del" command for an invalid address:
> > 
> > Can you give an example of an invalid address that triggers this
> > message?
> > 
> > > 
> > > TEST: FDB limits interacting with FDB type local                   
> > > [ OK ]
> > > Error: ipv4: Address not found.
> > > 
> > > ... ...
> > > TEST: IGMPv3 S,G port entry automatic add to a *,G port            
> > > [ OK ]
> > > Error: ipv4: Address not found.
> > > Error: ipv6: address not found.
> > > 
> > > ... ...
> > > TEST: Isolated port flooding                                       
> > > [ OK ]
> > > Error: ipv4: Address not found.
> > > Error: ipv6: address not found.
> > > 
> > > ... ...
> > > TEST: Externally learned FDB entry - ageing & roaming              
> > > [ OK ]
> > > Error: ipv4: Address not found.
> > > Error: ipv6: address not found.
> > 
> > I'm unable to reproduce these with net-next and iproute2-next. Please
> > debug this to understand the root cause or provide more details on
> > how
> > to reproduce.
> 
> I did get these errors with the latest net-next and iproute2-next. For
> example, I got these errors of "bridge_mdb_port_down.sh":
> 
> $ sudo ./bridge_mdb_port_down.sh 
> TEST: MDB add/del entry to port with state down                  [ OK ]
> Error: ipv4: Address not found.
> Error: ipv6: address not found.
> Error: ipv4: Address not found.
> Error: ipv6: address not found.
> 
> These errors occur when using h1_destroy() and h2_destroy() to delete
> the addresses of h1 (192.0.2.1, 2001:db8:1::1) and h2 (192.0.2.2,
> 2001:db8:1::2):
> 
> h1_destroy()
> {
>         simple_if_fini $h1 192.0.2.1/24 2001:db8:1::1/64
> }
> 
> h2_destroy()
> {
>         simple_if_fini $h2 192.0.2.2/24 2001:db8:1::2/64
> }
> 
> It seems that when invoking h1_destroy() and h2_destroy(), both h1 and
> h2 no longer have IP addresses.

This is unexpected, I do see the addresses on my end. Maybe you have
some network manager that is deleting these addresses for some reason?

Try tracing __inet_del_ifa() while running the tests:

# bpftrace -e 'k:__inet_del_ifa { @bla[comm] = count(); }'
Attaching 1 probe...
^C

@bla[ip]: 2

> 
> I added "ifconfig" to show the addresses of h1 and h2 before invoking
> h1_destroy() and h2_destroy() like this:
> 
> '''
> @@ -105,7 +105,9 @@ cleanup()
>         pre_cleanup
>  
>         switch_destroy
> +       ifconfig $h1
>         h1_destroy
> +       ifconfig $h2
>         h2_destroy
>  
>         vrf_cleanup
> '''
> 
> And got these messages:
> 
> TEST: MDB add/del entry to port with state down                 [ OK ]
> veth0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
>         ether f2:ca:02:ee:05:19  txqueuelen 1000  (Ethernet)
>         RX packets 149  bytes 17355 (17.3 KB)
>         RX errors 0  dropped 0  overruns 0  frame 0
>         TX packets 81  bytes 9165 (9.1 KB)
>         TX errors 0  dropped 12 overruns 0  carrier 0  collisions 0
> 
> Error: ipv4: Address not found.
> Error: ipv6: address not found.
> veth3: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
>         ether 92:df:97:5c:98:7e  txqueuelen 1000  (Ethernet)
>         RX packets 67  bytes 6252 (6.2 KB)
>         RX errors 0  dropped 0  overruns 0  frame 0
>         TX packets 39  bytes 4997 (4.9 KB)
>         TX errors 0  dropped 56 overruns 0  carrier 0  collisions 0
> 
> Error: ipv4: Address not found.
> Error: ipv6: address not found.
> 
> -Geliang
> 
> > 
> > > 
> > > This patch gnores these messages and redirects them to /dev/null in
> > > __addr_add_del().
> > > 
> > > Signed-off-by: Geliang Tang <[email-masked]>
> > > ---
> > >  tools/testing/selftests/net/forwarding/lib.sh | 2 +-
> > >  1 file changed, 1 insertion(+), 1 deletion(-)
> > > 
> > > diff --git a/tools/testing/selftests/net/forwarding/lib.sh
> > > b/tools/testing/selftests/net/forwarding/lib.sh
> > > index ff96bb7535ff..8670b6053cde 100644
> > > --- a/tools/testing/selftests/net/forwarding/lib.sh
> > > +++ b/tools/testing/selftests/net/forwarding/lib.sh
> > > @@ -839,7 +839,7 @@ __addr_add_del()
> > >  	array=("${@}")
> > >  
> > >  	for addrstr in "${array[@]}"; do
> > > -		ip address $add_del $addrstr dev $if_name
> > > +		ip address $add_del $addrstr dev $if_name &>
> > > /dev/null
> > >  	done
> > >  }
> > >  
> > > -- 
> > > 2.43.0
> > > 
>