1#ifndef __BPF_ELF__
2#define __BPF_ELF__
3
4#include <asm/types.h>
5
6/* Note:
7 *
8 * Below ELF section names and bpf_elf_map structure definition
9 * are not (!) kernel ABI. It's rather a "contract" between the
10 * application and the BPF loader in tc. For compatibility, the
11 * section names should stay as-is. Introduction of aliases, if
12 * needed, are a possibility, though.
13 */
14
15/* ELF section names, etc */
16#define ELF_SECTION_LICENSE	"license"
17#define ELF_SECTION_MAPS	"maps"
18#define ELF_SECTION_CLASSIFIER	"classifier"
19#define ELF_SECTION_ACTION	"action"
20
21#define ELF_MAX_MAPS		64
22#define ELF_MAX_LICENSE_LEN	128
23
24/* Object pinning settings */
25#define PIN_NONE		0
26#define PIN_OBJECT_NS		1
27#define PIN_GLOBAL_NS		2
28
29/* ELF map definition */
30struct bpf_elf_map {
31	__u32 type;
32	__u32 size_key;
33	__u32 size_value;
34	__u32 max_elem;
35	__u32 id;
36	__u32 pinning;
37};
38
39#endif /* __BPF_ELF__ */
40