Files
linux/tools/testing/selftests/net/Makefile
Andrea Mayer 1016a547c6 selftests: seg6: add test for post-encap SID route lookup
Add a selftest for the SEG6_IPTUNNEL_TABLE attribute, which selects the FIB
table for the post-encap SID route lookup. This looks up the route for the
first SID, the outer destination of the encapsulated packet.

Two routers provide L3 VPN services over an IPv6 underlay. Each router uses
a separate VRF per tenant, with default blackhole routes (IPv4 and IPv6)
that drop unmatched traffic. Tenant traffic is encapsulated, then
decapsulated with an End.DT46.
The encap routes are installed in the tenant VRF, but the routes that match
the first SIDs live in a separate underlay table (500). The "lookup 500"
attribute points the lookup there rather than to the VRF.

The test covers both the input path, where forwarded host traffic triggers
encapsulation, and the output path, where a router originates traffic from
its own loopback inside a VRF.
With the "lookup" attribute, traffic reaches its destination on both paths.
Without it, on the input path the lookup stays in the VRF and hits the
blackhole, and on the output path it falls through to the main table, which
has no matching route.

Signed-off-by: Andrea Mayer <andrea.mayer@uniroma2.it>
Reviewed-by: Nicolas Dichtel <nicolas.dichtel@6wind.com>
Link: https://patch.msgid.link/20260711162907.6521-3-andrea.mayer@uniroma2.it
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
2026-07-22 08:01:02 -07:00

244 lines
4.9 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 \
big_tcp_tunnels.sh \
bind_bhash.sh \
bpf_offload.py \
bridge_stp_mode.sh \
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 \
ecmp_rehash.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 \
fou_mcast_encap.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 \
ip6_tunnel.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 \
macvlan_mcast_shared_mac.sh \
msg_zerocopy.sh \
nat6to4.sh \
ndisc_unsolicited_na_test.sh \
netdev-l2addr.sh \
netdevice.sh \
netns-name.sh \
netns-sysctl.sh \
nk_qlease.py \
nl_netdev.py \
nl_nlctrl.py \
pmtu.sh \
protodown.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 \
srv6_encap_lookup_l3vpn_test.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_ecmp_failover.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_vnifilter_notify.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 \
xfrm_state.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 \
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 \
getsockopt_iter \
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