Home | History | Annotate | Download | only in include
      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_PROG	"prog"
     19 #define ELF_SECTION_CLASSIFIER	"classifier"
     20 #define ELF_SECTION_ACTION	"action"
     21 
     22 #define ELF_MAX_MAPS		64
     23 #define ELF_MAX_LICENSE_LEN	128
     24 
     25 /* Object pinning settings */
     26 #define PIN_NONE		0
     27 #define PIN_OBJECT_NS		1
     28 #define PIN_GLOBAL_NS		2
     29 
     30 /* ELF map definition */
     31 struct bpf_elf_map {
     32 	__u32 type;
     33 	__u32 size_key;
     34 	__u32 size_value;
     35 	__u32 max_elem;
     36 	__u32 flags;
     37 	__u32 id;
     38 	__u32 pinning;
     39 	__u32 inner_id;
     40 	__u32 inner_idx;
     41 };
     42 
     43 #endif /* __BPF_ELF__ */
     44