Files
Alireza Asgari 1221246d3b selftests: net: cover UDP splice checksum fragment alignment
Exercise software UDP checksums when splice() transfers multiple pipe
fragments into a corked datagram. Use separate source pipes so short writes
cannot merge, and use odd fragment lengths to expose checksum-position
errors between fragments.

Cover IPv4, IPv6 and IPv4-mapped destinations, connected and unconnected
sockets, resident prefixes, even and odd fragment lengths, and a fragment
starting near a page boundary. Ordinary sends provide a control. Check the
complete payload and reject extra datagrams after a successful send.

Keep receive waits bounded and skip unavailable address families or pipe
capacities. The test uses only loopback sockets with ephemeral ports and
has no dependency on the application that exposed the regression.

Signed-off-by: Alireza Asgari <[email protected]>
Link: https://patch.msgid.link/[email protected]
Signed-off-by: Jakub Kicinski <[email protected]>
2026-09-29 17:11:30 -07:00

247 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 \
cork_fragsize.py \
double_udp_encap.sh \
drop_monitor_tests.sh \
ecmp_rehash.sh \
exception_cache.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 \
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_flowlabel_mgr \
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 \
udp_splice_checksum \
# 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