@@ -4,17 +4,23 @@
#include <linux/bpf.h>
#include "bpf_helpers.h"
-struct bpf_map_def SEC("maps") cg_ids = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 *key;
+ __u64 *value;
+} cg_ids SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(__u32),
- .value_size = sizeof(__u64),
.max_entries = 1,
};
-struct bpf_map_def SEC("maps") pidmap = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 *key;
+ __u32 *value;
+} pidmap SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(__u32),
- .value_size = sizeof(__u32),
.max_entries = 1,
};
@@ -2,17 +2,23 @@
#include <linux/bpf.h>
#include "bpf_helpers.h"
-struct bpf_map_def SEC("maps") htab = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 *key;
+ long *value;
+} htab SEC(".maps") = {
.type = BPF_MAP_TYPE_HASH,
- .key_size = sizeof(__u32),
- .value_size = sizeof(long),
.max_entries = 2,
};
-struct bpf_map_def SEC("maps") array = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 *key;
+ long *value;
+} array SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(__u32),
- .value_size = sizeof(long),
.max_entries = 2,
};
@@ -4,31 +4,49 @@
int _version SEC("version") = 1;
-struct bpf_map_def SEC("maps") sock_map_rx = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 key_size;
+ __u32 value_size;
+} sock_map_rx SEC(".maps") = {
.type = BPF_MAP_TYPE_SOCKMAP,
+ .max_entries = 20,
.key_size = sizeof(int),
.value_size = sizeof(int),
- .max_entries = 20,
};
-struct bpf_map_def SEC("maps") sock_map_tx = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 key_size;
+ __u32 value_size;
+} sock_map_tx SEC(".maps") = {
.type = BPF_MAP_TYPE_SOCKMAP,
+ .max_entries = 20,
.key_size = sizeof(int),
.value_size = sizeof(int),
- .max_entries = 20,
};
-struct bpf_map_def SEC("maps") sock_map_msg = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 key_size;
+ __u32 value_size;
+} sock_map_msg SEC(".maps") = {
.type = BPF_MAP_TYPE_SOCKMAP,
+ .max_entries = 20,
.key_size = sizeof(int),
.value_size = sizeof(int),
- .max_entries = 20,
};
-struct bpf_map_def SEC("maps") sock_map_break = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ int *key;
+ int *value;
+} sock_map_break SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(int),
- .value_size = sizeof(int),
.max_entries = 20,
};
@@ -5,22 +5,30 @@
#include <linux/types.h>
#include "bpf_helpers.h"
-struct bpf_map_def SEC("maps") mim_array = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 key_size;
+ __u32 value_size;
+} mim_array SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY_OF_MAPS,
+ .max_entries = 1,
.key_size = sizeof(int),
/* must be sizeof(__u32) for map in map */
.value_size = sizeof(__u32),
- .max_entries = 1,
- .map_flags = 0,
};
-struct bpf_map_def SEC("maps") mim_hash = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 key_size;
+ __u32 value_size;
+} mim_hash SEC(".maps") = {
.type = BPF_MAP_TYPE_HASH_OF_MAPS,
+ .max_entries = 1,
.key_size = sizeof(int),
/* must be sizeof(__u32) for map in map */
.value_size = sizeof(__u32),
- .max_entries = 1,
- .map_flags = 0,
};
SEC("xdp_mimtest")
@@ -16,10 +16,13 @@
int _version SEC("version") = 1;
-struct bpf_map_def SEC("maps") test_map_id = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 *key;
+ __u64 *value;
+} test_map_id SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(__u32),
- .value_size = sizeof(__u64),
.max_entries = 1,
};
@@ -10,10 +10,13 @@
#define NUM_CGROUP_LEVELS 4
-struct bpf_map_def SEC("maps") cgroup_ids = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 *key;
+ __u64 *value;
+} cgroup_ids SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(__u32),
- .value_size = sizeof(__u64),
.max_entries = NUM_CGROUP_LEVELS,
};
@@ -16,10 +16,13 @@
#define THROTTLE_RATE_BPS (5 * 1000 * 1000)
/* flow_key => last_tstamp timestamp used */
-struct bpf_map_def SEC("maps") flow_map = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ uint32_t *key;
+ uint64_t *value;
+} flow_map SEC(".maps") = {
.type = BPF_MAP_TYPE_HASH,
- .key_size = sizeof(uint32_t),
- .value_size = sizeof(uint64_t),
.max_entries = 1,
};
@@ -16,10 +16,13 @@
#include "bpf_helpers.h"
#include "bpf_endian.h"
-struct bpf_map_def SEC("maps") results = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 *key;
+ __u64 *value;
+} results SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(__u32),
- .value_size = sizeof(__u64),
.max_entries = 1,
};
@@ -10,20 +10,28 @@
int _version SEC("version") = 1;
-struct bpf_map_def __attribute__ ((section("maps"), used)) map_in = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 key_size;
+ __u32 value_size;
+} map_in SEC(".maps") = {
.type = MAP_TYPE,
+ .max_entries = 32,
.key_size = 0,
.value_size = sizeof(__u32),
- .max_entries = 32,
- .map_flags = 0,
};
-struct bpf_map_def __attribute__ ((section("maps"), used)) map_out = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 key_size;
+ __u32 value_size;
+} map_out SEC(".maps") = {
.type = MAP_TYPE,
+ .max_entries = 32,
.key_size = 0,
.value_size = sizeof(__u32),
- .max_entries = 32,
- .map_flags = 0,
};
SEC("test")
@@ -28,59 +28,89 @@
* are established and verdicts are decided.
*/
-struct bpf_map_def SEC("maps") sock_map = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 key_size;
+ __u32 value_size;
+} sock_map SEC(".maps") = {
.type = TEST_MAP_TYPE,
+ .max_entries = 20,
.key_size = sizeof(int),
.value_size = sizeof(int),
- .max_entries = 20,
};
-struct bpf_map_def SEC("maps") sock_map_txmsg = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 key_size;
+ __u32 value_size;
+} sock_map_txmsg SEC(".maps") = {
.type = TEST_MAP_TYPE,
+ .max_entries = 20,
.key_size = sizeof(int),
.value_size = sizeof(int),
- .max_entries = 20,
};
-struct bpf_map_def SEC("maps") sock_map_redir = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ __u32 key_size;
+ __u32 value_size;
+} sock_map_redir SEC(".maps") = {
.type = TEST_MAP_TYPE,
+ .max_entries = 20,
.key_size = sizeof(int),
.value_size = sizeof(int),
- .max_entries = 20,
};
-struct bpf_map_def SEC("maps") sock_apply_bytes = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ int *key;
+ int *value;
+} sock_apply_bytes SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(int),
- .value_size = sizeof(int),
.max_entries = 1
};
-struct bpf_map_def SEC("maps") sock_cork_bytes = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ int *key;
+ int *value;
+} sock_cork_bytes SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(int),
- .value_size = sizeof(int),
.max_entries = 1
};
-struct bpf_map_def SEC("maps") sock_bytes = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ int *key;
+ int *value;
+} sock_bytes SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(int),
- .value_size = sizeof(int),
.max_entries = 6
};
-struct bpf_map_def SEC("maps") sock_redir_flags = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ int *key;
+ int *value;
+} sock_redir_flags SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(int),
- .value_size = sizeof(int),
.max_entries = 1
};
-struct bpf_map_def SEC("maps") sock_skb_opts = {
+struct {
+ __u32 type;
+ __u32 max_entries;
+ int *key;
+ int *value;
+} sock_skb_opts SEC(".maps") = {
.type = BPF_MAP_TYPE_ARRAY,
- .key_size = sizeof(int),
- .value_size = sizeof(int),
.max_entries = 1
};
Convert all the rest of selftests that use BPF maps. These are either maps with integer key/value or special types of maps that don't event allow BTF type information for key/value. Signed-off-by: Andrii Nakryiko <andriin@fb.com> --- .../selftests/bpf/progs/get_cgroup_id_kern.c | 18 +++-- .../selftests/bpf/progs/sample_map_ret0.c | 18 +++-- .../bpf/progs/sockmap_verdict_prog.c | 36 +++++++--- .../selftests/bpf/progs/test_map_in_map.c | 20 ++++-- .../testing/selftests/bpf/progs/test_obj_id.c | 9 ++- .../bpf/progs/test_skb_cgroup_id_kern.c | 9 ++- .../testing/selftests/bpf/progs/test_tc_edt.c | 9 ++- .../bpf/progs/test_tcp_check_syncookie_kern.c | 9 ++- .../selftests/bpf/test_queue_stack_map.h | 20 ++++-- .../testing/selftests/bpf/test_sockmap_kern.h | 72 +++++++++++++------ 10 files changed, 154 insertions(+), 66 deletions(-)