aboutsummaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/bpf/sockmap_tcp_msg_prog.c
diff options
context:
space:
mode:
authorJohn Fastabend <[email protected]>2018-03-18 19:57:31 +0000
committerDaniel Borkmann <[email protected]>2018-03-19 20:14:39 +0000
commit82a8616889d506cb690cfc0afb2ccadda120461d (patch)
tree69830c783d9c4b3ee6d7857fabbd9f0b89ac58af /tools/testing/selftests/bpf/sockmap_tcp_msg_prog.c
parentbpf: sk_msg program helper bpf_sk_msg_pull_data (diff)
downloadkernel-82a8616889d506cb690cfc0afb2ccadda120461d.tar.gz
kernel-82a8616889d506cb690cfc0afb2ccadda120461d.zip
bpf: add map tests for BPF_PROG_TYPE_SK_MSG
Add map tests to attach BPF_PROG_TYPE_SK_MSG types to a sockmap. Signed-off-by: John Fastabend <[email protected]> Acked-by: David S. Miller <[email protected]> Signed-off-by: Daniel Borkmann <[email protected]>
Diffstat (limited to 'tools/testing/selftests/bpf/sockmap_tcp_msg_prog.c')
-rw-r--r--tools/testing/selftests/bpf/sockmap_tcp_msg_prog.c33
1 files changed, 33 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/sockmap_tcp_msg_prog.c b/tools/testing/selftests/bpf/sockmap_tcp_msg_prog.c
new file mode 100644
index 000000000000..12a7b5c82ed6
--- /dev/null
+++ b/tools/testing/selftests/bpf/sockmap_tcp_msg_prog.c
@@ -0,0 +1,33 @@
+#include <linux/bpf.h>
+#include "bpf_helpers.h"
+#include "bpf_util.h"
+#include "bpf_endian.h"
+
+int _version SEC("version") = 1;
+
+#define bpf_printk(fmt, ...) \
+({ \
+ char ____fmt[] = fmt; \
+ bpf_trace_printk(____fmt, sizeof(____fmt), \
+ ##__VA_ARGS__); \
+})
+
+SEC("sk_msg1")
+int bpf_prog1(struct sk_msg_md *msg)
+{
+ void *data_end = (void *)(long) msg->data_end;
+ void *data = (void *)(long) msg->data;
+
+ char *d;
+
+ if (data + 8 > data_end)
+ return SK_DROP;
+
+ bpf_printk("data length %i\n", (__u64)msg->data_end - (__u64)msg->data);
+ d = (char *)data;
+ bpf_printk("hello sendmsg hook %i %i\n", d[0], d[1]);
+
+ return SK_PASS;
+}
+
+char _license[] SEC("license") = "GPL";