Commit f7bf624b authored by Toke Høiland-Jørgensen's avatar Toke Høiland-Jørgensen Committed by Jakub Kicinski
Browse files

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: default avatarToke Høiland-Jørgensen <toke@redhat.com>
Acked-by: default avatarStanislav Fomichev <sdf@fomichev.me>
Link: https://patch.msgid.link/20250127131344.238147-2-toke@redhat.com


Signed-off-by: default avatarJakub Kicinski <kuba@kernel.org>
parent 3595599f
Loading
Loading
Loading
Loading
+13 −1
Original line number Diff line number Diff line
@@ -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",