mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2025-01-16 19:16:50 +07:00
c99a84eac0
Add a new test for the seg6local End.BPF action. The following helpers are also tested: - bpf_lwt_push_encap within the LWT BPF IN hook - bpf_lwt_seg6_action - bpf_lwt_seg6_adjust_srh - bpf_lwt_seg6_store_bytes A chain of End.BPF actions is built. The SRH is injected through a LWT BPF IN hook before entering this chain. Each End.BPF action validates the previous one, otherwise the packet is dropped. The test succeeds if the last node in the chain receives the packet and the UDP datagram contained can be retrieved from userspace. Signed-off-by: Mathieu Xhonneux <m.xhonneux@gmail.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
128 lines
3.8 KiB
Makefile
128 lines
3.8 KiB
Makefile
# SPDX-License-Identifier: GPL-2.0
|
|
|
|
LIBDIR := ../../../lib
|
|
BPFDIR := $(LIBDIR)/bpf
|
|
APIDIR := ../../../include/uapi
|
|
GENDIR := ../../../../include/generated
|
|
GENHDR := $(GENDIR)/autoconf.h
|
|
|
|
ifneq ($(wildcard $(GENHDR)),)
|
|
GENFLAGS := -DHAVE_GENHDR
|
|
endif
|
|
|
|
CFLAGS += -Wall -O2 -I$(APIDIR) -I$(LIBDIR) -I$(BPFDIR) -I$(GENDIR) $(GENFLAGS) -I../../../include
|
|
LDLIBS += -lcap -lelf -lrt -lpthread
|
|
|
|
TEST_CUSTOM_PROGS = $(OUTPUT)/urandom_read
|
|
all: $(TEST_CUSTOM_PROGS)
|
|
|
|
$(TEST_CUSTOM_PROGS): urandom_read
|
|
|
|
urandom_read: urandom_read.c
|
|
$(CC) -o $(TEST_CUSTOM_PROGS) -static $< -Wl,--build-id
|
|
|
|
# Order correspond to 'make run_tests' order
|
|
TEST_GEN_PROGS = test_verifier test_tag test_maps test_lru_map test_lpm_map test_progs \
|
|
test_align test_verifier_log test_dev_cgroup test_tcpbpf_user \
|
|
test_sock test_btf test_sockmap
|
|
|
|
TEST_GEN_FILES = test_pkt_access.o test_xdp.o test_l4lb.o test_tcp_estats.o test_obj_id.o \
|
|
test_pkt_md_access.o test_xdp_redirect.o test_xdp_meta.o sockmap_parse_prog.o \
|
|
sockmap_verdict_prog.o dev_cgroup.o sample_ret0.o test_tracepoint.o \
|
|
test_l4lb_noinline.o test_xdp_noinline.o test_stacktrace_map.o \
|
|
sample_map_ret0.o test_tcpbpf_kern.o test_stacktrace_build_id.o \
|
|
sockmap_tcp_msg_prog.o connect4_prog.o connect6_prog.o test_adjust_tail.o \
|
|
test_btf_haskv.o test_btf_nokv.o test_sockmap_kern.o test_tunnel_kern.o \
|
|
test_get_stack_rawtp.o test_sockmap_kern.o test_sockhash_kern.o \
|
|
test_lwt_seg6local.o
|
|
|
|
# Order correspond to 'make run_tests' order
|
|
TEST_PROGS := test_kmod.sh \
|
|
test_libbpf.sh \
|
|
test_xdp_redirect.sh \
|
|
test_xdp_meta.sh \
|
|
test_offload.py \
|
|
test_sock_addr.sh \
|
|
test_tunnel.sh \
|
|
test_lwt_seg6local.sh
|
|
|
|
# Compile but not part of 'make run_tests'
|
|
TEST_GEN_PROGS_EXTENDED = test_libbpf_open test_sock_addr
|
|
|
|
include ../lib.mk
|
|
|
|
BPFOBJ := $(OUTPUT)/libbpf.a
|
|
|
|
$(TEST_GEN_PROGS): $(BPFOBJ)
|
|
|
|
$(TEST_GEN_PROGS_EXTENDED): $(OUTPUT)/libbpf.a
|
|
|
|
$(OUTPUT)/test_dev_cgroup: cgroup_helpers.c
|
|
$(OUTPUT)/test_sock: cgroup_helpers.c
|
|
$(OUTPUT)/test_sock_addr: cgroup_helpers.c
|
|
$(OUTPUT)/test_sockmap: cgroup_helpers.c
|
|
$(OUTPUT)/test_progs: trace_helpers.c
|
|
|
|
.PHONY: force
|
|
|
|
# force a rebuild of BPFOBJ when its dependencies are updated
|
|
force:
|
|
|
|
$(BPFOBJ): force
|
|
$(MAKE) -C $(BPFDIR) OUTPUT=$(OUTPUT)/
|
|
|
|
CLANG ?= clang
|
|
LLC ?= llc
|
|
LLVM_OBJCOPY ?= llvm-objcopy
|
|
BTF_PAHOLE ?= pahole
|
|
|
|
PROBE := $(shell $(LLC) -march=bpf -mcpu=probe -filetype=null /dev/null 2>&1)
|
|
|
|
# Let newer LLVM versions transparently probe the kernel for availability
|
|
# of full BPF instruction set.
|
|
ifeq ($(PROBE),)
|
|
CPU ?= probe
|
|
else
|
|
CPU ?= generic
|
|
endif
|
|
|
|
# Get Clang's default includes on this system, as opposed to those seen by
|
|
# '-target bpf'. This fixes "missing" files on some architectures/distros,
|
|
# such as asm/byteorder.h, asm/socket.h, asm/sockios.h, sys/cdefs.h etc.
|
|
#
|
|
# Use '-idirafter': Don't interfere with include mechanics except where the
|
|
# build would have failed anyways.
|
|
CLANG_SYS_INCLUDES := $(shell $(CLANG) -v -E - </dev/null 2>&1 \
|
|
| sed -n '/<...> search starts here:/,/End of search list./{ s| \(/.*\)|-idirafter \1|p }')
|
|
|
|
CLANG_FLAGS = -I. -I./include/uapi -I../../../include/uapi \
|
|
$(CLANG_SYS_INCLUDES) \
|
|
-Wno-compare-distinct-pointer-types
|
|
|
|
$(OUTPUT)/test_l4lb_noinline.o: CLANG_FLAGS += -fno-inline
|
|
$(OUTPUT)/test_xdp_noinline.o: CLANG_FLAGS += -fno-inline
|
|
|
|
BTF_LLC_PROBE := $(shell $(LLC) -march=bpf -mattr=help 2>&1 | grep dwarfris)
|
|
BTF_PAHOLE_PROBE := $(shell $(BTF_PAHOLE) --help 2>&1 | grep BTF)
|
|
BTF_OBJCOPY_PROBE := $(shell $(LLVM_OBJCOPY) --version 2>&1 | grep LLVM)
|
|
|
|
ifneq ($(BTF_LLC_PROBE),)
|
|
ifneq ($(BTF_PAHOLE_PROBE),)
|
|
ifneq ($(BTF_OBJCOPY_PROBE),)
|
|
CLANG_FLAGS += -g
|
|
LLC_FLAGS += -mattr=dwarfris
|
|
DWARF2BTF = y
|
|
endif
|
|
endif
|
|
endif
|
|
|
|
$(OUTPUT)/%.o: %.c
|
|
$(CLANG) $(CLANG_FLAGS) \
|
|
-O2 -target bpf -emit-llvm -c $< -o - | \
|
|
$(LLC) -march=bpf -mcpu=$(CPU) $(LLC_FLAGS) -filetype=obj -o $@
|
|
ifeq ($(DWARF2BTF),y)
|
|
$(BTF_PAHOLE) -J $@
|
|
endif
|
|
|
|
EXTRA_CLEAN := $(TEST_CUSTOM_PROGS)
|