summaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/bpf/progs/bpf_iter_bpf_sk_storage_helpers.c
diff options
context:
space:
mode:
authorFlorent Revest <revest@chromium.org>2020-12-04 12:36:07 +0100
committerDaniel Borkmann <daniel@iogearbox.net>2020-12-04 22:32:40 +0100
commit593f6d41abbbc63e1ad297f7a36ab6060a812f0c (patch)
tree6981d03f07a50c74b5ee6deec1a57d35a92fe69e /tools/testing/selftests/bpf/progs/bpf_iter_bpf_sk_storage_helpers.c
parenta50a85e40c59cf27ca3b324a5aa4c7f35314f251 (diff)
downloadlinux-stable-593f6d41abbbc63e1ad297f7a36ab6060a812f0c.tar.gz
linux-stable-593f6d41abbbc63e1ad297f7a36ab6060a812f0c.tar.bz2
linux-stable-593f6d41abbbc63e1ad297f7a36ab6060a812f0c.zip
selftests/bpf: Add an iterator selftest for bpf_sk_storage_delete
The eBPF program iterates over all entries (well, only one) of a socket local storage map and deletes them all. The test makes sure that the entry is indeed deleted. Signed-off-by: Florent Revest <revest@google.com> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net> Acked-by: Martin KaFai Lau <kafai@fb.com> Link: https://lore.kernel.org/bpf/20201204113609.1850150-4-revest@google.com
Diffstat (limited to 'tools/testing/selftests/bpf/progs/bpf_iter_bpf_sk_storage_helpers.c')
-rw-r--r--tools/testing/selftests/bpf/progs/bpf_iter_bpf_sk_storage_helpers.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/progs/bpf_iter_bpf_sk_storage_helpers.c b/tools/testing/selftests/bpf/progs/bpf_iter_bpf_sk_storage_helpers.c
new file mode 100644
index 000000000000..01ff3235e413
--- /dev/null
+++ b/tools/testing/selftests/bpf/progs/bpf_iter_bpf_sk_storage_helpers.c
@@ -0,0 +1,23 @@
+// SPDX-License-Identifier: GPL-2.0
+/* Copyright (c) 2020 Google LLC. */
+#include "bpf_iter.h"
+#include <bpf/bpf_helpers.h>
+#include <bpf/bpf_tracing.h>
+
+char _license[] SEC("license") = "GPL";
+
+struct {
+ __uint(type, BPF_MAP_TYPE_SK_STORAGE);
+ __uint(map_flags, BPF_F_NO_PREALLOC);
+ __type(key, int);
+ __type(value, int);
+} sk_stg_map SEC(".maps");
+
+SEC("iter/bpf_sk_storage_map")
+int delete_bpf_sk_storage_map(struct bpf_iter__bpf_sk_storage_map *ctx)
+{
+ if (ctx->sk)
+ bpf_sk_storage_delete(&sk_stg_map, ctx->sk);
+
+ return 0;
+}