From: Lucas Siba @ 2019-04-20 11:40 UTC To: netdev This patch updates the tc-bpf.8 example application for changes to the struct bpf_elf_map definition. In it's current form, things compile, but the resulting object file is rejected by the verifier when attempting to load it through tc.
Signed-off-by: Lucas Siba <lucas.s...@gmail.com> --- man/man8/tc-bpf.8 | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/man/man8/tc-bpf.8 b/man/man8/tc-bpf.8 index b2f9344f..b6cfeab9 100644 --- a/man/man8/tc-bpf.8 +++ b/man/man8/tc-bpf.8 @@ -597,6 +597,8 @@ struct bpf_elf_map __section("maps") map_stats = { .size_key = sizeof(uint32_t), .size_value = sizeof(struct tuple), .max_elem = BPF_MAX_MARK, + .pinning = PIN_GLOBAL_NS, + .flags = 0, }; static inline void cls_update_stats(const struct __sk_buff *skb, @@ -709,13 +711,22 @@ in both examples was: #define likely(x) __builtin_expect(!!(x), 1) #define unlikely(x) __builtin_expect(!!(x), 0) -/* Used map structure */ +/* Object pinning settings */ +#define PIN_NONE 0 +#define PIN_OBJECT_NS 1 +#define PIN_GLOBAL_NS 2 + +/* ELF map definition */ struct bpf_elf_map { __u32 type; __u32 size_key; __u32 size_value; __u32 max_elem; + __u32 flags; __u32 id; + __u32 pinning; + __u32 inner_id; + __u32 inner_idx; }; /* Some used BPF function calls. */ -- In a future patch, it might be worth changing the man page to refer to "bpf_elf.h" and "uapi/linux/bpf.h" for the definition of structures and constants, as they may be changed again without the man page being updated.