@@ -61,92 +61,23 @@ limitations under the License.
61
61
// This file contains the definitions of all the kernel bpf essentials
62
62
#include <bpf/bpf_helpers.h>
63
63
64
- /// A helper structure used by an eBPF C program
65
- /// to describe map attributes for the elf_bpf loader
66
- /// FIXME: We only need this because we are loading with iproute2
67
- struct bpf_elf_map {
68
- __u32 type ;
69
- __u32 size_key ;
70
- __u32 size_value ;
71
- __u32 max_elem ;
72
- __u32 flags ;
73
- __u32 id ;
74
- __u32 pinning ;
75
- __u32 inner_id ;
76
- __u32 inner_idx ;
77
- };
78
-
79
64
/// Simple descriptor which replaces the kernel sk_buff structure.
80
65
#define SK_BUFF struct __sk_buff
81
66
82
- /// From iproute2, annotate table with BTF which allows to read types at runtime.
83
- #define BPF_ANNOTATE_KV_PAIR (name , type_key , type_val ) \
84
- struct ____btf_map_##name { \
85
- type_key key; \
86
- type_val value; \
87
- }; \
88
- struct ____btf_map_##name \
89
- __attribute__ ((section(".maps." #name), used)) \
90
- ____btf_map_##name = {};
91
-
92
67
#define REGISTER_START ()
93
- #ifndef BTF
94
- /// Note: pinning exports the table name globally, do not remove.
95
- #define REGISTER_TABLE (NAME , TYPE , KEY_TYPE , VALUE_TYPE , MAX_ENTRIES ) \
96
- struct bpf_elf_map SEC("maps") NAME = { \
97
- .type = TYPE, \
98
- .size_key = sizeof(KEY_TYPE), \
99
- .size_value = sizeof(VALUE_TYPE), \
100
- .max_elem = MAX_ENTRIES, \
101
- .pinning = 2, \
102
- .flags = 0, \
103
- };
104
- #define REGISTER_TABLE_INNER (NAME , TYPE , KEY_TYPE , VALUE_TYPE , MAX_ENTRIES , ID , INNER_IDX ) \
105
- struct bpf_elf_map SEC("maps") NAME = { \
106
- .type = TYPE, \
107
- .size_key = sizeof(KEY_TYPE), \
108
- .size_value = sizeof(VALUE_TYPE), \
109
- .max_elem = MAX_ENTRIES, \
110
- .pinning = 2, \
111
- .flags = 0, \
112
- .id = ID, \
113
- .inner_idx = INNER_IDX, \
114
- };
115
- #define REGISTER_TABLE_OUTER (NAME , TYPE , KEY_TYPE , VALUE_TYPE , MAX_ENTRIES , INNER_ID , INNER_NAME ) \
116
- struct bpf_elf_map SEC("maps") NAME = { \
117
- .type = TYPE, \
118
- .size_key = sizeof(KEY_TYPE), \
119
- .size_value = sizeof(VALUE_TYPE), \
120
- .max_elem = MAX_ENTRIES, \
121
- .pinning = 2, \
122
- .flags = 0, \
123
- .inner_id = INNER_ID, \
124
- };
125
- #define REGISTER_TABLE_FLAGS (NAME , TYPE , KEY_TYPE , VALUE_TYPE , MAX_ENTRIES , FLAGS ) \
126
- struct bpf_elf_map SEC("maps") NAME = { \
127
- .type = TYPE, \
128
- .size_key = sizeof(KEY_TYPE), \
129
- .size_value = sizeof(VALUE_TYPE), \
130
- .max_elem = MAX_ENTRIES, \
131
- .pinning = 2, \
132
- .flags = FLAGS, \
133
- };
134
- #else
135
68
#define REGISTER_TABLE (NAME , TYPE , KEY_TYPE , VALUE_TYPE , MAX_ENTRIES ) \
136
69
struct { \
137
70
__uint(type, TYPE); \
138
71
KEY_TYPE *key; \
139
72
VALUE_TYPE *value; \
140
73
__uint(max_entries, MAX_ENTRIES); \
141
- __uint(pinning, LIBBPF_PIN_BY_NAME); \
142
74
} NAME SEC(".maps");
143
75
#define REGISTER_TABLE_FLAGS (NAME , TYPE , KEY_TYPE , VALUE_TYPE , MAX_ENTRIES , FLAGS ) \
144
76
struct { \
145
77
__uint(type, TYPE); \
146
78
KEY_TYPE *key; \
147
79
VALUE_TYPE *value; \
148
80
__uint(max_entries, MAX_ENTRIES); \
149
- __uint(pinning, LIBBPF_PIN_BY_NAME); \
150
81
__uint(map_flags, FLAGS); \
151
82
} NAME SEC(".maps");
152
83
#define REGISTER_TABLE_INNER (NAME , TYPE , KEY_TYPE , VALUE_TYPE , MAX_ENTRIES , ID , INNER_IDX ) \
@@ -162,18 +93,17 @@ struct { \
162
93
KEY_TYPE *key; \
163
94
VALUE_TYPE *value; \
164
95
__uint(max_entries, MAX_ENTRIES); \
165
- __uint(pinning, LIBBPF_PIN_BY_NAME); \
166
96
__array(values, struct INNER_NAME); \
167
- } NAME SEC(".maps");
97
+ } NAME SEC(".maps") = { \
98
+ .values = { &INNER_NAME } \
99
+ };
168
100
#define REGISTER_TABLE_NO_KEY_TYPE (NAME , TYPE , KEY_SIZE , VALUE_TYPE , MAX_ENTRIES ) \
169
101
struct { \
170
102
__uint(type, TYPE); \
171
103
__uint(key_size, KEY_SIZE); \
172
104
VALUE_TYPE *value; \
173
105
__uint(max_entries, MAX_ENTRIES); \
174
- __uint(pinning, LIBBPF_PIN_BY_NAME); \
175
106
} NAME SEC(".maps");
176
- #endif
177
107
#define REGISTER_END ()
178
108
179
109
#define BPF_MAP_LOOKUP_ELEM (table , key ) \
0 commit comments