selftests/net: Add test for loading devbound XDP program in generic mode

Add a test to bpf_offload.py for loading a devbound XDP program in
generic mode, checking that it fails correctly.

Signed-off-by: Toke Høiland-Jørgensen <toke@redhat.com>
Acked-by: Stanislav Fomichev <sdf@fomichev.me>
Link: https://patch.msgid.link/20250127131344.238147-2-toke@redhat.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
This commit is contained in:
Toke Høiland-Jørgensen
2025-01-27 14:13:43 +01:00
committed by Jakub Kicinski
parent 3595599fa8
commit f7bf624b1f

View File

@@ -215,12 +215,14 @@ def bpftool_map_list_wait(expected=0, n_retry=20, ns=""):
raise Exception("Time out waiting for map counts to stabilize want %d, have %d" % (expected, nmaps))
def bpftool_prog_load(sample, file_name, maps=[], prog_type="xdp", dev=None,
fail=True, include_stderr=False):
fail=True, include_stderr=False, dev_bind=None):
args = "prog load %s %s" % (os.path.join(bpf_test_dir, sample), file_name)
if prog_type is not None:
args += " type " + prog_type
if dev is not None:
args += " dev " + dev
elif dev_bind is not None:
args += " xdpmeta_dev " + dev_bind
if len(maps):
args += " map " + " map ".join(maps)
@@ -980,6 +982,16 @@ try:
rm("/sys/fs/bpf/offload")
sim.wait_for_flush()
bpftool_prog_load("sample_ret0.bpf.o", "/sys/fs/bpf/devbound",
dev_bind=sim['ifname'])
devbound = bpf_pinned("/sys/fs/bpf/devbound")
start_test("Test dev-bound program in generic mode...")
ret, _, err = sim.set_xdp(devbound, "generic", fail=False, include_stderr=True)
fail(ret == 0, "devbound program in generic mode allowed")
check_extack(err, "Can't attach device-bound programs in generic mode.", args)
rm("/sys/fs/bpf/devbound")
sim.wait_for_flush()
start_test("Test XDP load failure...")
sim.dfs["dev/bpf_bind_verifier_accept"] = 0
ret, _, err = bpftool_prog_load("sample_ret0.bpf.o", "/sys/fs/bpf/offload",