Commit cd387ce5 authored by Mykyta Yatsenko's avatar Mykyta Yatsenko Committed by Andrii Nakryiko
Browse files

selftests/bpf: Test struct_ops bpf map auto-attach



Adding selftest to verify that struct_ops maps are auto attached by
bpf skeleton's `*__attach` function.

Signed-off-by: default avatarMykyta Yatsenko <yatsenko@meta.com>
Signed-off-by: default avatarAndrii Nakryiko <andrii@kernel.org>
Link: https://lore.kernel.org/bpf/20240621180324.238379-1-yatsenko@meta.com
parent 2bb138cb
Loading
Loading
Loading
Loading
+35 −0
Original line number Diff line number Diff line
@@ -185,6 +185,39 @@ static void test_dctcp(void)
		close(fd);
}

static void test_dctcp_autoattach_map(void)
{
	struct cb_opts cb_opts = {
		.cc = "bpf_dctcp",
	};
	struct network_helper_opts opts = {
		.post_socket_cb	= cc_cb,
		.cb_opts	= &cb_opts,
	};
	struct bpf_dctcp *dctcp_skel;
	struct bpf_link *link;

	dctcp_skel = bpf_dctcp__open_and_load();
	if (!ASSERT_OK_PTR(dctcp_skel, "bpf_dctcp__open_and_load"))
		return;

	bpf_map__set_autoattach(dctcp_skel->maps.dctcp, true);
	bpf_map__set_autoattach(dctcp_skel->maps.dctcp_nouse, false);

	if (!ASSERT_OK(bpf_dctcp__attach(dctcp_skel), "bpf_dctcp__attach"))
		goto destroy;

	/* struct_ops is auto-attached  */
	link = dctcp_skel->links.dctcp;
	if (!ASSERT_OK_PTR(link, "link"))
		goto destroy;

	do_test(&opts);

destroy:
	bpf_dctcp__destroy(dctcp_skel);
}

static char *err_str;
static bool found;

@@ -598,4 +631,6 @@ void test_bpf_tcp_ca(void)
		test_tcp_ca_kfunc();
	if (test__start_subtest("cc_cubic"))
		test_cc_cubic();
	if (test__start_subtest("dctcp_autoattach_map"))
		test_dctcp_autoattach_map();
}