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

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
...@@ -32,6 +32,8 @@ ...@@ -32,6 +32,8 @@
#define ENOTSUPP 524 #define ENOTSUPP 524
#endif #endif
static int skips;
static int map_flags; static int map_flags;
#define CHECK(condition, tag, format...) ({ \ #define CHECK(condition, tag, format...) ({ \
...@@ -724,6 +726,15 @@ static void test_sockmap(int tasks, void *data) ...@@ -724,6 +726,15 @@ static void test_sockmap(int tasks, void *data)
sizeof(key), sizeof(value), sizeof(key), sizeof(value),
6, 0); 6, 0);
if (fd < 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); printf("Failed to create sockmap %i\n", fd);
goto out_sockmap; goto out_sockmap;
} }
...@@ -1701,6 +1712,6 @@ int main(void) ...@@ -1701,6 +1712,6 @@ int main(void)
map_flags = BPF_F_NO_PREALLOC; map_flags = BPF_F_NO_PREALLOC;
run_all_tests(); run_all_tests();
printf("test_maps: OK\n"); printf("test_maps: OK, %d SKIPPED\n", skips);
return 0; return 0;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment