linux/tools/testing/selftests/net
Ido Schimmel f96a3d7455 ipv4: Fix incorrect route flushing when source address is deleted
Cited commit added the table ID to the FIB info structure, but did not
prevent structures with different table IDs from being consolidated.
This can lead to routes being flushed from a VRF when an address is
deleted from a different VRF.

Fix by taking the table ID into account when looking for a matching FIB
info. This is already done for FIB info structures backed by a nexthop
object in fib_find_info_nh().

Add test cases that fail before the fix:

 # ./fib_tests.sh -t ipv4_del_addr

 IPv4 delete address route tests
     Regular FIB info
     TEST: Route removed from VRF when source address deleted            [ OK ]
     TEST: Route in default VRF not removed                              [ OK ]
     TEST: Route removed in default VRF when source address deleted      [ OK ]
     TEST: Route in VRF is not removed by address delete                 [ OK ]
     Identical FIB info with different table ID
     TEST: Route removed from VRF when source address deleted            [FAIL]
     TEST: Route in default VRF not removed                              [ OK ]
 RTNETLINK answers: File exists
     TEST: Route removed in default VRF when source address deleted      [ OK ]
     TEST: Route in VRF is not removed by address delete                 [FAIL]

 Tests passed:   6
 Tests failed:   2

And pass after:

 # ./fib_tests.sh -t ipv4_del_addr

 IPv4 delete address route tests
     Regular FIB info
     TEST: Route removed from VRF when source address deleted            [ OK ]
     TEST: Route in default VRF not removed                              [ OK ]
     TEST: Route removed in default VRF when source address deleted      [ OK ]
     TEST: Route in VRF is not removed by address delete                 [ OK ]
     Identical FIB info with different table ID
     TEST: Route removed from VRF when source address deleted            [ OK ]
     TEST: Route in default VRF not removed                              [ OK ]
     TEST: Route removed in default VRF when source address deleted      [ OK ]
     TEST: Route in VRF is not removed by address delete                 [ OK ]

 Tests passed:   8
 Tests failed:   0

Fixes: 5a56a0b3a4 ("net: Don't delete routes in different VRFs")
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Reviewed-by: David Ahern <dsahern@kernel.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2022-12-06 20:34:43 -08:00
..
af_unix af_unix: Add test for sock_diag and UDIAG_SHOW_UID. 2022-12-01 10:32:20 +01:00
bpf selftests net: fix kselftest net fatal error 2022-06-29 20:15:57 -07:00
forwarding selftests: net: tsn_lib: run phc2sys in automatic mode 2022-09-26 13:22:01 -07:00
mptcp selftests: mptcp: fix mibit vs mbit mix up 2022-11-17 21:43:58 -08:00
openvswitch selftests: add openvswitch selftest suite 2022-10-27 12:31:24 +02:00
.gitignore af_unix: Add test for sock_diag and UDIAG_SHOW_UID. 2022-12-01 10:32:20 +01:00
altnames.sh selftest: net: fix typo in altname test 2021-09-12 10:48:26 +01:00
amt.sh selftests: set amt.sh executable 2022-01-05 10:27:19 -08:00
arp_ndisc_evict_nocarrier.sh selftests: net: add arp_ndisc_evict_nocarrier 2021-11-01 19:57:15 -07:00
arp_ndisc_untracked_subnets.sh selftests: net: arp_ndisc_untracked_subnets: test for arp_accept and accept_untracked_na 2022-07-15 18:55:50 -07:00
bareudp.sh selftests: set conf.all.rp_filter=0 in bareudp.sh 2020-11-12 16:14:38 -08:00
bind_bhash.c selftests/net: Add test for timing a bind request to a port with a populated bhash entry 2022-08-24 19:30:09 -07:00
bind_bhash.sh selftests/net: Add test for timing a bind request to a port with a populated bhash entry 2022-08-24 19:30:09 -07:00
cmsg_ipv6.sh selftests: net: basic test for IPV6_2292* 2022-02-17 14:22:09 +00:00
cmsg_sender.c net/cmsg_sender: Remove a semicolon 2022-07-01 13:52:28 +01:00
cmsg_so_mark.sh selftests: net: cmsg_so_mark: test with SO_MARK set by setsockopt 2022-02-10 15:04:51 +00:00
cmsg_time.sh selftests: net: test standard socket cmsgs across UDP and ICMP sockets 2022-02-10 15:04:52 +00:00
config selftests/tls: Fix tls selftests dependency to correct algorithm 2022-12-02 20:48:47 -08:00
devlink_port_split.py selftests: net: devlink_port_split: check devlink returned an element before dereferencing it 2021-06-28 16:14:38 -07:00
drop_monitor_tests.sh selftests: net: Add drop monitor test 2020-09-30 18:01:26 -07:00
fcnal-test.sh selftests/net: Find nettest in current directory 2022-11-21 12:58:26 +00:00
fib_nexthop_multiprefix.sh
fib_nexthop_nongw.sh selftests/net: test nexthop without gw 2022-07-14 14:41:19 +02:00
fib_nexthops.sh ipv4: Fix route deletion when nexthop info is not specified 2022-11-28 16:56:04 -08:00
fib_rule_tests.sh selftests: net: fib_rule_tests: fix support for running individual tests 2022-07-01 13:37:13 +01:00
fib_tests.sh ipv4: Fix incorrect route flushing when source address is deleted 2022-12-06 20:34:43 -08:00
fib-onlink-tests.sh
fin_ack_lat.c
fin_ack_lat.sh
gre_gso.sh selftests: net: switch to socat in the GSO GRE test 2021-11-12 19:59:01 -08:00
gro.c Networking changes for 5.17. 2022-01-10 19:06:09 -08:00
gro.sh selftests/net: allow GRO coalesce test on veth 2021-08-26 12:03:49 +01:00
hwtstamp_config.c
icmp_redirect.sh selftests: icmp_redirect: pass xfail=0 to log_test() 2021-12-12 12:56:41 +00:00
icmp.sh selftests/net: Add icmp.sh for testing ICMP dummy address responses 2021-06-18 12:13:24 -07:00
in_netns.sh
io_uring_zerocopy_tx.c selftest/net: adjust io_uring sendzc notif handling 2022-09-23 14:57:27 -06:00
io_uring_zerocopy_tx.sh selftests/net: don't tests batched TCP io_uring zc 2022-11-02 08:27:24 -06:00
ioam6_parser.c selftests: net: ioam: expect support for Queue depth data 2022-01-21 19:26:39 -08:00
ioam6.sh selftests: net: fix IOAM test skip return code 2022-08-02 09:51:31 +02:00
ip6_gre_headroom.sh
ip_defrag.c
ip_defrag.sh
ipsec.c selftests/net: Refactor xfrm_fill_key() to use array of structs 2022-08-16 11:28:13 +02:00
ipv6_flowlabel_mgr.c
ipv6_flowlabel.c ping: support ipv6 ping socket flow labels 2022-07-22 12:40:27 +01:00
ipv6_flowlabel.sh ping: support ipv6 ping socket flow labels 2022-07-22 12:40:27 +01:00
l2_tos_ttl_inherit.sh selftests/net: test l2 tunnel TOS/TTL inheriting 2022-08-19 16:48:41 -07:00
l2tp.sh
Makefile selftests: add selftest for chaining of tc ingress handling to egress 2022-10-19 14:04:36 +01:00
msg_zerocopy.c
msg_zerocopy.sh
ndisc_unsolicited_na_test.sh net/ipv6: Expand and rename accept_unsolicited_na to accept_untracked_na 2022-05-31 11:36:57 +02:00
netdevice.sh
nettest.c net-next: Fix IP_UNICAST_IF option behavior for connected sockets 2022-08-31 19:51:06 -07:00
pmtu.sh selftests/net: Find nettest in current directory 2022-11-21 12:58:26 +00:00
psock_fanout.c selftests: net: fix array_size.cocci warning 2022-03-17 15:21:16 +01:00
psock_lib.h
psock_snd.c selftests/net: enable lo.accept_local in psock_snd test 2022-05-25 21:58:35 -07:00
psock_snd.sh selftests/net: remove min gso test in packet_snd 2021-08-02 10:34:04 +01:00
psock_tpacket.c
reuseaddr_conflict.c
reuseaddr_ports_exhausted.c selftests/net: fix warnings on reuseaddr_ports_exhausted 2021-03-16 15:01:21 -07:00
reuseaddr_ports_exhausted.sh
reuseport_addr_any.c
reuseport_addr_any.sh
reuseport_bpf_cpu.c
reuseport_bpf_numa.c selftests: net: fix array_size.cocci warning 2022-03-07 12:23:27 +00:00
reuseport_bpf.c selftests: Fix the if conditions of in test_extra_filter() 2022-09-27 11:00:02 +02:00
reuseport_dualstack.c
route_localnet.sh
rtnetlink.sh selftests: rtnetlink: correct xfrm policy rule in kci_test_ipsec_offload 2022-12-02 20:49:30 -08:00
run_afpackettests selftests/net: Use kselftest skip code for skipped tests 2021-08-24 16:49:09 -07:00
run_netsocktests
rxtimestamp.c selftests/net: remove ARRAY_SIZE define from individual tests 2021-12-10 17:50:57 -07:00
rxtimestamp.sh
settings kselftests/net: adapt the timeout to the largest runtime 2022-01-13 12:53:22 +00:00
setup_loopback.sh selftests/net: allow GRO coalesce test on veth 2021-08-26 12:03:49 +01:00
setup_veth.sh selftests/net: allow GRO coalesce test on veth 2021-08-26 12:03:49 +01:00
sk_bind_sendto_listen.c selftests/net: Add sk_bind_sendto_listen and sk_connect_zero_addr 2022-08-24 19:30:09 -07:00
sk_connect_zero_addr.c selftests/net: Add sk_bind_sendto_listen and sk_connect_zero_addr 2022-08-24 19:30:09 -07:00
so_netns_cookie.c tools/testing: add a selftest for SO_NETNS_COOKIE 2021-06-24 11:13:05 -07:00
so_txtime.c selftests/net: so_txtime: usage(): fix documentation of default clock 2022-05-03 13:18:26 +02:00
so_txtime.sh selftests/net: so_txtime multi-host support 2021-03-31 17:48:21 -07:00
socket.c selftests/net: remove ARRAY_SIZE define from individual tests 2021-12-10 17:50:57 -07:00
srv6_end_dt4_l3vpn_test.sh selftests/net: Use kselftest skip code for skipped tests 2021-08-24 16:49:09 -07:00
srv6_end_dt6_l3vpn_test.sh selftests/net: Use kselftest skip code for skipped tests 2021-08-24 16:49:09 -07:00
srv6_end_dt46_l3vpn_test.sh selftests/net: Use kselftest skip code for skipped tests 2021-08-24 16:49:09 -07:00
srv6_end_next_csid_l3vpn_test.sh selftests: seg6: add selftest for NEXT-C-SID flavor in SRv6 End behavior 2022-09-20 12:33:22 +02:00
srv6_hencap_red_l3vpn_test.sh selftests: seg6: add selftest for SRv6 H.Encaps.Red behavior 2022-07-29 12:14:03 +01:00
srv6_hl2encap_red_l2vpn_test.sh selftests: seg6: add selftest for SRv6 H.L2Encaps.Red behavior 2022-07-29 12:14:03 +01:00
stress_reuseport_listen.c net: selftests: Stress reuseport listen 2022-05-12 16:52:18 -07:00
stress_reuseport_listen.sh net: selftests: Stress reuseport listen 2022-05-12 16:52:18 -07:00
tap.c selftests: add few test cases for tap driver 2022-08-05 08:59:15 +01:00
tcp_fastopen_backup_key.c selftests/net: remove ARRAY_SIZE define from individual tests 2021-12-10 17:50:57 -07:00
tcp_fastopen_backup_key.sh
tcp_inq.c
tcp_mmap.c selftests: net: tcp_mmap: Use huge pages in receive path 2020-08-20 16:14:53 -07:00
test_blackhole_dev.sh
test_bpf.sh
test_ingress_egress_chaining.sh selftests: add selftest for chaining of tc ingress handling to egress 2022-10-19 14:04:36 +01:00
test_vxlan_fdb_changelink.sh
test_vxlan_under_vrf.sh selftests: test_vxlan_under_vrf: Fix broken test case 2022-03-25 17:00:11 -07:00
test_vxlan_vnifiltering.sh selftests: add new tests for vxlan vnifiltering 2022-03-01 08:38:02 +00:00
timestamping.c selftests/net: timestamping: Fix bind_phc check 2022-01-31 11:44:04 +00:00
tls.c selftests: tls: handful of memrnd() and length checks 2022-07-28 21:49:59 -07:00
toeplitz_client.sh selftests/net: toeplitz test 2021-08-05 13:14:09 +01:00
toeplitz.c selftests: net: fix array_size.cocci warning 2022-03-17 15:21:16 +01:00
toeplitz.sh selftests: net: Use "grep -E" instead of "egrep" 2022-12-02 20:56:41 -08:00
traceroute.sh
tun.c selftest: tun: add test for NAPI dismantle 2022-06-30 11:34:10 -07:00
txring_overwrite.c
txtimestamp.c selftests: net: change fprintf format specifiers 2022-03-21 16:37:54 -07:00
txtimestamp.sh
udpgro_bench.sh selftests/net: fix missing xdp_dummy 2022-11-18 12:01:14 +00:00
udpgro_frglist.sh selftests/net: fix missing xdp_dummy 2022-11-18 12:01:14 +00:00
udpgro_fwd.sh selftests/net: fix missing xdp_dummy 2022-11-18 12:01:14 +00:00
udpgro.sh selftests/net: fix missing xdp_dummy 2022-11-18 12:01:14 +00:00
udpgso_bench_rx.c selftests/net: udpgso_bench_rx: fix port argument 2021-11-11 12:24:26 +00:00
udpgso_bench_tx.c selftests/net: udpgso_bench_tx: fix dst ip argument 2021-12-29 17:29:50 -08:00
udpgso_bench.sh selftests/net: pass ipv6_args to udpgso_bench's IPv6 TCP test 2022-06-23 21:19:03 -07:00
udpgso.c selftests: Calculate udpgso segment count without header adjustment 2021-12-23 19:20:06 -08:00
udpgso.sh
unicast_extensions.sh selftests/net: Use kselftest skip code for skipped tests 2021-08-24 16:49:09 -07:00
veth.sh selftests/net: fix missing xdp_dummy 2022-11-18 12:01:14 +00:00
vrf_route_leaking.sh selftests: Add VRF route leaking tests 2020-10-14 17:14:28 -07:00
vrf_strict_mode_test.sh selftests: net: vrf_strict_mode_test: add support to select a test to run 2022-05-02 10:48:29 +02:00
vrf-xfrm-tests.sh
xfrm_policy.sh xfrm: Fix wraparound in xfrm_policy_addr_delta() 2021-01-04 10:35:09 +01:00