mirror of
https://github.com/torvalds/linux.git
synced 2026-04-18 06:44:00 -04:00
Add a selftest that verifies the dst_cache in seg6 lwtunnel is not
shared between the input (forwarding) and output (locally generated)
paths.
The test creates three namespaces (ns_src, ns_router, ns_dst)
connected in a line. An SRv6 encap route on ns_router encapsulates
traffic destined to cafe::1 with SID fc00::100. The SID is
reachable only for forwarded traffic (from ns_src) via an ip rule
matching the ingress interface (iif veth-r0 lookup 100), and
blackholed in the main table.
The test verifies that:
1. A packet generated locally on ns_router does not reach
ns_dst with an empty cache, since the SID is blackholed;
2. A forwarded packet from ns_src populates the input cache
from table 100 and reaches ns_dst;
3. A packet generated locally on ns_router still does not
reach ns_dst after the input cache is populated,
confirming the output path does not reuse the input
cache entry.
Both the forwarded and local packets are pinned to the same CPU
with taskset, since dst_cache is per-cpu.
Cc: Shuah Khan <shuah@kernel.org>
Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
Reviewed-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Reviewed-by: Justin Iurman <justin.iurman@gmail.com>
Link: https://patch.msgid.link/20260404004405.4057-3-andrea.mayer@uniroma2.it
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
232 lines
4.6 KiB
Makefile
232 lines
4.6 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
# Makefile for net selftests
|
|
|
|
CFLAGS += -Wall -Wl,--no-as-needed -O2 -g
|
|
CFLAGS += -I../../../../usr/include/ $(KHDR_INCLUDES)
|
|
# Additional include paths needed by kselftest.h
|
|
CFLAGS += -I../
|
|
|
|
TEST_PROGS := \
|
|
altnames.sh \
|
|
amt.sh \
|
|
arp_ndisc_evict_nocarrier.sh \
|
|
arp_ndisc_untracked_subnets.sh \
|
|
bareudp.sh \
|
|
big_tcp.sh \
|
|
bind_bhash.sh \
|
|
bpf_offload.py \
|
|
bridge_vlan_dump.sh \
|
|
broadcast_ether_dst.sh \
|
|
broadcast_pmtu.sh \
|
|
busy_poll_test.sh \
|
|
cmsg_ip.sh \
|
|
cmsg_so_mark.sh \
|
|
cmsg_so_priority.sh \
|
|
cmsg_time.sh \
|
|
double_udp_encap.sh \
|
|
drop_monitor_tests.sh \
|
|
fcnal-ipv4.sh \
|
|
fcnal-ipv6.sh \
|
|
fcnal-other.sh \
|
|
fdb_flush.sh \
|
|
fdb_notify.sh \
|
|
fib-onlink-tests.sh \
|
|
fib_nexthop_multiprefix.sh \
|
|
fib_nexthop_nongw.sh \
|
|
fib_nexthops.sh \
|
|
fib_rule_tests.sh \
|
|
fib_tests.sh \
|
|
fin_ack_lat.sh \
|
|
fq_band_pktlimit.sh \
|
|
gre_gso.sh \
|
|
gre_ipv6_lladdr.sh \
|
|
icmp.sh \
|
|
icmp_redirect.sh \
|
|
io_uring_zerocopy_tx.sh \
|
|
ioam6.sh \
|
|
ip6_gre_headroom.sh \
|
|
ip_defrag.sh \
|
|
ip_local_port_range.sh \
|
|
ipv6_flowlabel.sh \
|
|
ipv6_force_forwarding.sh \
|
|
ipv6_route_update_soft_lockup.sh \
|
|
ipvtap_test.sh \
|
|
l2_tos_ttl_inherit.sh \
|
|
l2tp.sh \
|
|
link_netns.py \
|
|
lwt_dst_cache_ref_loop.sh \
|
|
msg_zerocopy.sh \
|
|
nat6to4.sh \
|
|
ndisc_unsolicited_na_test.sh \
|
|
netdev-l2addr.sh \
|
|
netdevice.sh \
|
|
netns-name.sh \
|
|
netns-sysctl.sh \
|
|
nl_netdev.py \
|
|
pmtu.sh \
|
|
psock_snd.sh \
|
|
reuseaddr_ports_exhausted.sh \
|
|
reuseport_addr_any.sh \
|
|
route_hint.sh \
|
|
route_localnet.sh \
|
|
rps_default_mask.sh \
|
|
rtnetlink.py \
|
|
rtnetlink.sh \
|
|
rtnetlink_notification.sh \
|
|
run_afpackettests \
|
|
run_netsocktests \
|
|
rxtimestamp.sh \
|
|
sctp_vrf.sh \
|
|
skf_net_off.sh \
|
|
so_txtime.sh \
|
|
srv6_end_dt46_l3vpn_test.sh \
|
|
srv6_end_dt4_l3vpn_test.sh \
|
|
srv6_end_dt6_l3vpn_test.sh \
|
|
srv6_end_dx4_netfilter_test.sh \
|
|
srv6_end_dx6_netfilter_test.sh \
|
|
srv6_end_flavors_test.sh \
|
|
srv6_end_next_csid_l3vpn_test.sh \
|
|
srv6_end_x_next_csid_l3vpn_test.sh \
|
|
srv6_hencap_red_l3vpn_test.sh \
|
|
srv6_hl2encap_red_l2vpn_test.sh \
|
|
srv6_iptunnel_cache.sh \
|
|
stress_reuseport_listen.sh \
|
|
tcp_fastopen_backup_key.sh \
|
|
test_bpf.sh \
|
|
test_bridge_backup_port.sh \
|
|
test_bridge_neigh_suppress.sh \
|
|
test_ingress_egress_chaining.sh \
|
|
test_neigh.sh \
|
|
test_so_rcv.sh \
|
|
test_vxlan_fdb_changelink.sh \
|
|
test_vxlan_mdb.sh \
|
|
test_vxlan_nh.sh \
|
|
test_vxlan_nolocalbypass.sh \
|
|
test_vxlan_under_vrf.sh \
|
|
test_vxlan_vnifiltering.sh \
|
|
tfo_passive.sh \
|
|
traceroute.sh \
|
|
txtimestamp.sh \
|
|
udpgro.sh \
|
|
udpgro_bench.sh \
|
|
udpgro_frglist.sh \
|
|
udpgro_fwd.sh \
|
|
udpgso.sh \
|
|
udpgso_bench.sh \
|
|
unicast_extensions.sh \
|
|
veth.sh \
|
|
vlan_bridge_binding.sh \
|
|
vlan_hw_filter.sh \
|
|
vrf-xfrm-tests.sh \
|
|
vrf_route_leaking.sh \
|
|
vrf_strict_mode_test.sh \
|
|
xfrm_policy.sh \
|
|
# end of TEST_PROGS
|
|
|
|
TEST_PROGS_EXTENDED := \
|
|
xfrm_policy_add_speed.sh \
|
|
# end of TEST_PROGS_EXTENDED
|
|
|
|
TEST_GEN_FILES := \
|
|
bind_bhash \
|
|
cmsg_sender \
|
|
fin_ack_lat \
|
|
hwtstamp_config \
|
|
io_uring_zerocopy_tx \
|
|
ioam6_parser \
|
|
ip_defrag \
|
|
ip_local_port_range \
|
|
ipsec \
|
|
ipv6_flowlabel \
|
|
ipv6_flowlabel_mgr \
|
|
msg_zerocopy \
|
|
nettest \
|
|
psock_fanout \
|
|
psock_snd \
|
|
psock_tpacket \
|
|
reuseaddr_ports_exhausted \
|
|
reuseport_addr_any \
|
|
rxtimestamp \
|
|
sctp_hello \
|
|
skf_net_off \
|
|
so_netns_cookie \
|
|
so_rcv_listener \
|
|
so_txtime \
|
|
socket \
|
|
stress_reuseport_listen \
|
|
tcp_fastopen_backup_key \
|
|
tcp_inq \
|
|
tcp_mmap \
|
|
tfo \
|
|
timestamping \
|
|
txring_overwrite \
|
|
txtimestamp \
|
|
udpgso \
|
|
udpgso_bench_rx \
|
|
udpgso_bench_tx \
|
|
# end of TEST_GEN_FILES
|
|
|
|
TEST_GEN_PROGS := \
|
|
bind_timewait \
|
|
bind_wildcard \
|
|
epoll_busy_poll \
|
|
icmp_rfc4884 \
|
|
ipv6_fragmentation \
|
|
proc_net_pktgen \
|
|
reuseaddr_conflict \
|
|
reuseport_bpf \
|
|
reuseport_bpf_cpu \
|
|
reuseport_bpf_numa \
|
|
reuseport_dualstack \
|
|
sk_bind_sendto_listen \
|
|
sk_connect_zero_addr \
|
|
sk_so_peek_off \
|
|
so_incoming_cpu \
|
|
tap \
|
|
tcp_port_share \
|
|
tls \
|
|
# end of TEST_GEN_PROGS
|
|
|
|
TEST_FILES := \
|
|
fcnal-test.sh \
|
|
in_netns.sh \
|
|
lib.sh \
|
|
settings \
|
|
# end of TEST_FILES
|
|
|
|
# YNL files, must be before "include ..lib.mk"
|
|
YNL_GEN_FILES := busy_poller
|
|
YNL_GEN_PROGS := \
|
|
netlink-dumps \
|
|
tun \
|
|
# end of YNL_GEN_PROGS
|
|
|
|
TEST_GEN_FILES += $(YNL_GEN_FILES)
|
|
TEST_GEN_PROGS += $(YNL_GEN_PROGS)
|
|
|
|
TEST_GEN_FILES += $(patsubst %.c,%.o,$(wildcard *.bpf.c))
|
|
|
|
TEST_INCLUDES := forwarding/lib.sh
|
|
|
|
include ../lib.mk
|
|
|
|
# YNL build
|
|
YNL_GENS := \
|
|
netdev \
|
|
rt-addr \
|
|
rt-link \
|
|
rt-neigh \
|
|
rt-route \
|
|
# end of YNL_GENS
|
|
|
|
include ynl.mk
|
|
|
|
$(OUTPUT)/epoll_busy_poll: LDLIBS += -lcap
|
|
$(OUTPUT)/reuseport_bpf_numa: LDLIBS += -lnuma
|
|
$(OUTPUT)/tcp_mmap: LDLIBS += -lpthread -lcrypto
|
|
$(OUTPUT)/tcp_inq: LDLIBS += -lpthread
|
|
$(OUTPUT)/bind_bhash: LDLIBS += -lpthread
|
|
$(OUTPUT)/io_uring_zerocopy_tx: CFLAGS += -I../../../include/
|
|
|
|
include bpf.mk
|