summaryrefslogtreecommitdiffstats
path: root/tools/testing/selftests/bpf/test_select_reuseport_common.h
diff options
context:
space:
mode:
authorMartin KaFai Lau2018-08-08 10:01:31 +0200
committerDaniel Borkmann2018-08-11 01:58:46 +0200
commit91134d849a0e8fbc70b8607d280e0d325dcaf7bb (patch)
tree4bc949c2a15c2c0d1cdbb390740f508fe7644623 /tools/testing/selftests/bpf/test_select_reuseport_common.h
parentbpf: test BPF_MAP_TYPE_REUSEPORT_SOCKARRAY (diff)
downloadkernel-qcow2-linux-91134d849a0e8fbc70b8607d280e0d325dcaf7bb.tar.gz
kernel-qcow2-linux-91134d849a0e8fbc70b8607d280e0d325dcaf7bb.tar.xz
kernel-qcow2-linux-91134d849a0e8fbc70b8607d280e0d325dcaf7bb.zip
bpf: Test BPF_PROG_TYPE_SK_REUSEPORT
This patch add tests for the new BPF_PROG_TYPE_SK_REUSEPORT. The tests cover: - IPv4/IPv6 + TCP/UDP - TCP syncookie - TCP fastopen - Cases when the bpf_sk_select_reuseport() returning errors - Cases when the bpf prog returns SK_DROP - Values from sk_reuseport_md - outer_map => reuseport_array The test depends on commit 3eee1f75f2b9 ("bpf: fix bpf_skb_load_bytes_relative pkt length check") Signed-off-by: Martin KaFai Lau <kafai@fb.com> Acked-by: Alexei Starovoitov <ast@kernel.org> Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Diffstat (limited to 'tools/testing/selftests/bpf/test_select_reuseport_common.h')
-rw-r--r--tools/testing/selftests/bpf/test_select_reuseport_common.h36
1 files changed, 36 insertions, 0 deletions
diff --git a/tools/testing/selftests/bpf/test_select_reuseport_common.h b/tools/testing/selftests/bpf/test_select_reuseport_common.h
new file mode 100644
index 000000000000..08eb2a9f145f
--- /dev/null
+++ b/tools/testing/selftests/bpf/test_select_reuseport_common.h
@@ -0,0 +1,36 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/* Copyright (c) 2018 Facebook */
+
+#ifndef __TEST_SELECT_REUSEPORT_COMMON_H
+#define __TEST_SELECT_REUSEPORT_COMMON_H
+
+#include <linux/types.h>
+
+enum result {
+ DROP_ERR_INNER_MAP,
+ DROP_ERR_SKB_DATA,
+ DROP_ERR_SK_SELECT_REUSEPORT,
+ DROP_MISC,
+ PASS,
+ PASS_ERR_SK_SELECT_REUSEPORT,
+ NR_RESULTS,
+};
+
+struct cmd {
+ __u32 reuseport_index;
+ __u32 pass_on_failure;
+};
+
+struct data_check {
+ __u32 ip_protocol;
+ __u32 skb_addrs[8];
+ __u16 skb_ports[2];
+ __u16 eth_protocol;
+ __u8 bind_inany;
+ __u8 equal_check_end[0];
+
+ __u32 len;
+ __u32 hash;
+};
+
+#endif