Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

selftests/bpf: fix missing BPF object files

After commit afef88e65554 ("selftests/bpf: Store BPF object files with
.bpf.o extension"), we should use *.bpf.o instead of *.o.

In addition, use the BPF_FILE variable to save the BPF object file name,
which can be better identified and modified.

Fixes: afef88e65554 ("selftests/bpf: Store BPF object files with .bpf.o extension")
Signed-off-by: Wang Yufen <wangyufen@huawei.com>
Acked-by: Stanislav Fomichev <sdf@google.com>
Link: https://lore.kernel.org/r/1666235134-562-1-git-send-email-wangyufen@huawei.com
Signed-off-by: Alexei Starovoitov <ast@kernel.org>

authored by

Wang Yufen and committed by
Alexei Starovoitov
98af3746 fb73a20e

+40 -29
+5 -2
tools/testing/selftests/bpf/test_bpftool_metadata.sh
··· 4 4 # Kselftest framework requirement - SKIP code is 4. 5 5 ksft_skip=4 6 6 7 + BPF_FILE_USED="metadata_used.bpf.o" 8 + BPF_FILE_UNUSED="metadata_unused.bpf.o" 9 + 7 10 TESTNAME=bpftool_metadata 8 11 BPF_FS=$(awk '$3 == "bpf" {print $2; exit}' /proc/mounts) 9 12 BPF_DIR=$BPF_FS/test_$TESTNAME ··· 58 55 59 56 trap cleanup EXIT 60 57 61 - bpftool prog load metadata_unused.o $BPF_DIR/unused 58 + bpftool prog load $BPF_FILE_UNUSED $BPF_DIR/unused 62 59 63 60 METADATA_PLAIN="$(bpftool prog)" 64 61 echo "$METADATA_PLAIN" | grep 'a = "foo"' > /dev/null ··· 70 67 71 68 rm $BPF_DIR/unused 72 69 73 - bpftool prog load metadata_used.o $BPF_DIR/used 70 + bpftool prog load $BPF_FILE_USED $BPF_DIR/used 74 71 75 72 METADATA_PLAIN="$(bpftool prog)" 76 73 echo "$METADATA_PLAIN" | grep 'a = "bar"' > /dev/null
+4 -2
tools/testing/selftests/bpf/test_flow_dissector.sh
··· 2 2 # SPDX-License-Identifier: GPL-2.0 3 3 # 4 4 # Load BPF flow dissector and verify it correctly dissects traffic 5 + 6 + BPF_FILE="bpf_flow.bpf.o" 5 7 export TESTNAME=test_flow_dissector 6 8 unmount=0 7 9 ··· 24 22 if bpftool="$(which bpftool)"; then 25 23 echo "Testing global flow dissector..." 26 24 27 - $bpftool prog loadall ./bpf_flow.o /sys/fs/bpf/flow \ 25 + $bpftool prog loadall $BPF_FILE /sys/fs/bpf/flow \ 28 26 type flow_dissector 29 27 30 28 if ! unshare --net $bpftool prog attach pinned \ ··· 97 95 fi 98 96 99 97 # Attach BPF program 100 - ./flow_dissector_load -p bpf_flow.o -s _dissect 98 + ./flow_dissector_load -p $BPF_FILE -s _dissect 101 99 102 100 # Setup 103 101 tc qdisc add dev lo ingress
+9 -8
tools/testing/selftests/bpf/test_lwt_ip_encap.sh
··· 38 38 # ping: SRC->[encap at veth2:ingress]->GRE:decap->DST 39 39 # ping replies go DST->SRC directly 40 40 41 + BPF_FILE="test_lwt_ip_encap.bpf.o" 41 42 if [[ $EUID -ne 0 ]]; then 42 43 echo "This script must be run as root" 43 44 echo "FAIL" ··· 374 373 # install replacement routes (LWT/eBPF), pings succeed 375 374 if [ "${ENCAP}" == "IPv4" ] ; then 376 375 ip -netns ${NS1} route add ${IPv4_DST} encap bpf xmit obj \ 377 - test_lwt_ip_encap.o sec encap_gre dev veth1 ${VRF} 376 + ${BPF_FILE} sec encap_gre dev veth1 ${VRF} 378 377 ip -netns ${NS1} -6 route add ${IPv6_DST} encap bpf xmit obj \ 379 - test_lwt_ip_encap.o sec encap_gre dev veth1 ${VRF} 378 + ${BPF_FILE} sec encap_gre dev veth1 ${VRF} 380 379 elif [ "${ENCAP}" == "IPv6" ] ; then 381 380 ip -netns ${NS1} route add ${IPv4_DST} encap bpf xmit obj \ 382 - test_lwt_ip_encap.o sec encap_gre6 dev veth1 ${VRF} 381 + ${BPF_FILE} sec encap_gre6 dev veth1 ${VRF} 383 382 ip -netns ${NS1} -6 route add ${IPv6_DST} encap bpf xmit obj \ 384 - test_lwt_ip_encap.o sec encap_gre6 dev veth1 ${VRF} 383 + ${BPF_FILE} sec encap_gre6 dev veth1 ${VRF} 385 384 else 386 385 echo " unknown encap ${ENCAP}" 387 386 TEST_STATUS=1 ··· 432 431 # install replacement routes (LWT/eBPF), pings succeed 433 432 if [ "${ENCAP}" == "IPv4" ] ; then 434 433 ip -netns ${NS2} route add ${IPv4_DST} encap bpf in obj \ 435 - test_lwt_ip_encap.o sec encap_gre dev veth2 ${VRF} 434 + ${BPF_FILE} sec encap_gre dev veth2 ${VRF} 436 435 ip -netns ${NS2} -6 route add ${IPv6_DST} encap bpf in obj \ 437 - test_lwt_ip_encap.o sec encap_gre dev veth2 ${VRF} 436 + ${BPF_FILE} sec encap_gre dev veth2 ${VRF} 438 437 elif [ "${ENCAP}" == "IPv6" ] ; then 439 438 ip -netns ${NS2} route add ${IPv4_DST} encap bpf in obj \ 440 - test_lwt_ip_encap.o sec encap_gre6 dev veth2 ${VRF} 439 + ${BPF_FILE} sec encap_gre6 dev veth2 ${VRF} 441 440 ip -netns ${NS2} -6 route add ${IPv6_DST} encap bpf in obj \ 442 - test_lwt_ip_encap.o sec encap_gre6 dev veth2 ${VRF} 441 + ${BPF_FILE} sec encap_gre6 dev veth2 ${VRF} 443 442 else 444 443 echo "FAIL: unknown encap ${ENCAP}" 445 444 TEST_STATUS=1
+5 -4
tools/testing/selftests/bpf/test_lwt_seg6local.sh
··· 23 23 24 24 # Kselftest framework requirement - SKIP code is 4. 25 25 ksft_skip=4 26 + BPF_FILE="test_lwt_seg6local.bpf.o" 26 27 readonly NS1="ns1-$(mktemp -u XXXXXX)" 27 28 readonly NS2="ns2-$(mktemp -u XXXXXX)" 28 29 readonly NS3="ns3-$(mktemp -u XXXXXX)" ··· 118 117 ip netns exec ${NS1} ip -6 addr add fb00::1/16 dev lo 119 118 ip netns exec ${NS1} ip -6 route add fb00::6 dev veth1 via fb00::21 120 119 121 - ip netns exec ${NS2} ip -6 route add fb00::6 encap bpf in obj test_lwt_seg6local.o sec encap_srh dev veth2 120 + ip netns exec ${NS2} ip -6 route add fb00::6 encap bpf in obj ${BPF_FILE} sec encap_srh dev veth2 122 121 ip netns exec ${NS2} ip -6 route add fd00::1 dev veth3 via fb00::43 scope link 123 122 124 123 ip netns exec ${NS3} ip -6 route add fc42::1 dev veth5 via fb00::65 125 - ip netns exec ${NS3} ip -6 route add fd00::1 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec add_egr_x dev veth4 124 + ip netns exec ${NS3} ip -6 route add fd00::1 encap seg6local action End.BPF endpoint obj ${BPF_FILE} sec add_egr_x dev veth4 126 125 127 - ip netns exec ${NS4} ip -6 route add fd00::2 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec pop_egr dev veth6 126 + ip netns exec ${NS4} ip -6 route add fd00::2 encap seg6local action End.BPF endpoint obj ${BPF_FILE} sec pop_egr dev veth6 128 127 ip netns exec ${NS4} ip -6 addr add fc42::1 dev lo 129 128 ip netns exec ${NS4} ip -6 route add fd00::3 dev veth7 via fb00::87 130 129 131 130 ip netns exec ${NS5} ip -6 route add fd00::4 table 117 dev veth9 via fb00::109 132 - ip netns exec ${NS5} ip -6 route add fd00::3 encap seg6local action End.BPF endpoint obj test_lwt_seg6local.o sec inspect_t dev veth8 131 + ip netns exec ${NS5} ip -6 route add fd00::3 encap seg6local action End.BPF endpoint obj ${BPF_FILE} sec inspect_t dev veth8 133 132 134 133 ip netns exec ${NS6} ip -6 addr add fb00::6/16 dev lo 135 134 ip netns exec ${NS6} ip -6 addr add fd00::4/16 dev lo
+2 -1
tools/testing/selftests/bpf/test_tc_edt.sh
··· 5 5 # with dst port = 9000 down to 5MBps. Then it measures actual 6 6 # throughput of the flow. 7 7 8 + BPF_FILE="test_tc_edt.bpf.o" 8 9 if [[ $EUID -ne 0 ]]; then 9 10 echo "This script must be run as root" 10 11 echo "FAIL" ··· 55 54 ip netns exec ${NS_SRC} tc qdisc add dev veth_src root fq 56 55 ip netns exec ${NS_SRC} tc qdisc add dev veth_src clsact 57 56 ip netns exec ${NS_SRC} tc filter add dev veth_src egress \ 58 - bpf da obj test_tc_edt.o sec cls_test 57 + bpf da obj ${BPF_FILE} sec cls_test 59 58 60 59 61 60 # start the listener
+3 -2
tools/testing/selftests/bpf/test_tc_tunnel.sh
··· 3 3 # 4 4 # In-place tunneling 5 5 6 + BPF_FILE="test_tc_tunnel.bpf.o" 6 7 # must match the port that the bpf program filters on 7 8 readonly port=8000 8 9 ··· 197 196 # client can no longer connect 198 197 ip netns exec "${ns1}" tc qdisc add dev veth1 clsact 199 198 ip netns exec "${ns1}" tc filter add dev veth1 egress \ 200 - bpf direct-action object-file ./test_tc_tunnel.o \ 199 + bpf direct-action object-file ${BPF_FILE} \ 201 200 section "encap_${tuntype}_${mac}" 202 201 echo "test bpf encap without decap (expect failure)" 203 202 server_listen ··· 297 296 ip netns exec "${ns2}" ip link del dev testtun0 298 297 ip netns exec "${ns2}" tc qdisc add dev veth2 clsact 299 298 ip netns exec "${ns2}" tc filter add dev veth2 ingress \ 300 - bpf direct-action object-file ./test_tc_tunnel.o section decap 299 + bpf direct-action object-file ${BPF_FILE} section decap 301 300 echo "test bpf encap with bpf decap" 302 301 client_connect 303 302 verify_data
+3 -2
tools/testing/selftests/bpf/test_tunnel.sh
··· 45 45 # 5) Tunnel protocol handler, ex: vxlan_rcv, decap the packet 46 46 # 6) Forward the packet to the overlay tnl dev 47 47 48 + BPF_FILE="test_tunnel_kern.bpf.o" 48 49 BPF_PIN_TUNNEL_DIR="/sys/fs/bpf/tc/tunnel" 49 50 PING_ARG="-c 3 -w 10 -q" 50 51 ret=0 ··· 546 545 > /sys/kernel/debug/tracing/trace 547 546 setup_xfrm_tunnel 548 547 mkdir -p ${BPF_PIN_TUNNEL_DIR} 549 - bpftool prog loadall ./test_tunnel_kern.o ${BPF_PIN_TUNNEL_DIR} 548 + bpftool prog loadall ${BPF_FILE} ${BPF_PIN_TUNNEL_DIR} 550 549 tc qdisc add dev veth1 clsact 551 550 tc filter add dev veth1 proto ip ingress bpf da object-pinned \ 552 551 ${BPF_PIN_TUNNEL_DIR}/xfrm_get_state ··· 573 572 SET=$2 574 573 GET=$3 575 574 mkdir -p ${BPF_PIN_TUNNEL_DIR} 576 - bpftool prog loadall ./test_tunnel_kern.o ${BPF_PIN_TUNNEL_DIR}/ 575 + bpftool prog loadall ${BPF_FILE} ${BPF_PIN_TUNNEL_DIR}/ 577 576 tc qdisc add dev $DEV clsact 578 577 tc filter add dev $DEV egress bpf da object-pinned ${BPF_PIN_TUNNEL_DIR}/$SET 579 578 tc filter add dev $DEV ingress bpf da object-pinned ${BPF_PIN_TUNNEL_DIR}/$GET
+5 -4
tools/testing/selftests/bpf/test_xdp_meta.sh
··· 1 1 #!/bin/sh 2 2 3 + BPF_FILE="test_xdp_meta.bpf.o" 3 4 # Kselftest framework requirement - SKIP code is 4. 4 5 readonly KSFT_SKIP=4 5 6 readonly NS1="ns1-$(mktemp -u XXXXXX)" ··· 43 42 ip netns exec ${NS1} tc qdisc add dev veth1 clsact 44 43 ip netns exec ${NS2} tc qdisc add dev veth2 clsact 45 44 46 - ip netns exec ${NS1} tc filter add dev veth1 ingress bpf da obj test_xdp_meta.o sec t 47 - ip netns exec ${NS2} tc filter add dev veth2 ingress bpf da obj test_xdp_meta.o sec t 45 + ip netns exec ${NS1} tc filter add dev veth1 ingress bpf da obj ${BPF_FILE} sec t 46 + ip netns exec ${NS2} tc filter add dev veth2 ingress bpf da obj ${BPF_FILE} sec t 48 47 49 - ip netns exec ${NS1} ip link set dev veth1 xdp obj test_xdp_meta.o sec x 50 - ip netns exec ${NS2} ip link set dev veth2 xdp obj test_xdp_meta.o sec x 48 + ip netns exec ${NS1} ip link set dev veth1 xdp obj ${BPF_FILE} sec x 49 + ip netns exec ${NS2} ip link set dev veth2 xdp obj ${BPF_FILE} sec x 51 50 52 51 ip netns exec ${NS1} ip link set dev veth1 up 53 52 ip netns exec ${NS2} ip link set dev veth2 up
+4 -4
tools/testing/selftests/bpf/test_xdp_vlan.sh
··· 200 200 # ---------------------------------------------------------------------- 201 201 # In ns1: ingress use XDP to remove VLAN tags 202 202 export DEVNS1=veth1 203 - export FILE=test_xdp_vlan.o 203 + export BPF_FILE=test_xdp_vlan.bpf.o 204 204 205 205 # First test: Remove VLAN by setting VLAN ID 0, using "xdp_vlan_change" 206 206 export XDP_PROG=xdp_vlan_change 207 - ip netns exec ${NS1} ip link set $DEVNS1 $XDP_MODE object $FILE section $XDP_PROG 207 + ip netns exec ${NS1} ip link set $DEVNS1 $XDP_MODE object $BPF_FILE section $XDP_PROG 208 208 209 209 # In ns1: egress use TC to add back VLAN tag 4011 210 210 # (del cmd) ··· 212 212 # 213 213 ip netns exec ${NS1} tc qdisc add dev $DEVNS1 clsact 214 214 ip netns exec ${NS1} tc filter add dev $DEVNS1 egress \ 215 - prio 1 handle 1 bpf da obj $FILE sec tc_vlan_push 215 + prio 1 handle 1 bpf da obj $BPF_FILE sec tc_vlan_push 216 216 217 217 # Now the namespaces can reach each-other, test with ping: 218 218 ip netns exec ${NS2} ping -i 0.2 -W 2 -c 2 $IPADDR1 ··· 226 226 # 227 227 export XDP_PROG=xdp_vlan_remove_outer2 228 228 ip netns exec ${NS1} ip link set $DEVNS1 $XDP_MODE off 229 - ip netns exec ${NS1} ip link set $DEVNS1 $XDP_MODE object $FILE section $XDP_PROG 229 + ip netns exec ${NS1} ip link set $DEVNS1 $XDP_MODE object $BPF_FILE section $XDP_PROG 230 230 231 231 # Now the namespaces should still be able reach each-other, test with ping: 232 232 ip netns exec ${NS2} ping -i 0.2 -W 2 -c 2 $IPADDR1