Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e8ddbfb4 authored by Stanislav Fomichev's avatar Stanislav Fomichev Committed by Daniel Borkmann
Browse files

selftests/bpf: skip sockmap in test_maps if kernel doesn't have support



Use recently introduced bpf_probe_map_type() to skip test_sockmap()
if map creation fails. The skipped test is indicated in the output.

Example:

test_sockmap SKIP (unsupported map type BPF_MAP_TYPE_SOCKMAP)
Fork 1024 tasks to 'test_update_delete'
...
test_sockmap SKIP (unsupported map type BPF_MAP_TYPE_SOCKMAP)
Fork 1024 tasks to 'test_update_delete'
...
test_maps: OK, 2 SKIPPED

Signed-off-by: default avatarStanislav Fomichev <sdf@google.com>
Signed-off-by: default avatarDaniel Borkmann <daniel@iogearbox.net>
parent 630afc77
Loading
Loading
Loading
Loading
+12 −1
Original line number Diff line number Diff line
@@ -32,6 +32,8 @@
#define ENOTSUPP 524
#endif

static int skips;

static int map_flags;

#define CHECK(condition, tag, format...) ({				\
@@ -724,6 +726,15 @@ static void test_sockmap(int tasks, void *data)
			    sizeof(key), sizeof(value),
			    6, 0);
	if (fd < 0) {
		if (!bpf_probe_map_type(BPF_MAP_TYPE_SOCKMAP, 0)) {
			printf("%s SKIP (unsupported map type BPF_MAP_TYPE_SOCKMAP)\n",
			       __func__);
			skips++;
			for (i = 0; i < 6; i++)
				close(sfd[i]);
			return;
		}

		printf("Failed to create sockmap %i\n", fd);
		goto out_sockmap;
	}
@@ -1701,6 +1712,6 @@ int main(void)
	map_flags = BPF_F_NO_PREALLOC;
	run_all_tests();

	printf("test_maps: OK\n");
	printf("test_maps: OK, %d SKIPPED\n", skips);
	return 0;
}