 249b812d80
			
		
	
	
	249b812d80
	
	
	
		
			
			simple .o parser and loader using BPF syscall. .o is a standard ELF generated by LLVM backend It parses elf file compiled by llvm .c->.o - parses 'maps' section and creates maps via BPF syscall - parses 'license' section and passes it to syscall - parses elf relocations for BPF maps and adjusts BPF_LD_IMM64 insns by storing map_fd into insn->imm and marking such insns as BPF_PSEUDO_MAP_FD - loads eBPF programs via BPF syscall One ELF file can contain multiple BPF programs. int load_bpf_file(char *path); populates prog_fd[] and map_fd[] with FDs received from bpf syscall bpf_helpers.h - helper functions available to eBPF programs written in C Signed-off-by: Alexei Starovoitov <ast@plumgrid.com> Signed-off-by: David S. Miller <davem@davemloft.net>
		
			
				
	
	
		
			24 lines
		
	
	
	
		
			694 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			24 lines
		
	
	
	
		
			694 B
			
		
	
	
	
		
			C
		
	
	
	
	
	
| #ifndef __BPF_LOAD_H
 | |
| #define __BPF_LOAD_H
 | |
| 
 | |
| #define MAX_MAPS 32
 | |
| #define MAX_PROGS 32
 | |
| 
 | |
| extern int map_fd[MAX_MAPS];
 | |
| extern int prog_fd[MAX_PROGS];
 | |
| 
 | |
| /* parses elf file compiled by llvm .c->.o
 | |
|  * . parses 'maps' section and creates maps via BPF syscall
 | |
|  * . parses 'license' section and passes it to syscall
 | |
|  * . parses elf relocations for BPF maps and adjusts BPF_LD_IMM64 insns by
 | |
|  *   storing map_fd into insn->imm and marking such insns as BPF_PSEUDO_MAP_FD
 | |
|  * . loads eBPF programs via BPF syscall
 | |
|  *
 | |
|  * One ELF file can contain multiple BPF programs which will be loaded
 | |
|  * and their FDs stored stored in prog_fd array
 | |
|  *
 | |
|  * returns zero on success
 | |
|  */
 | |
| int load_bpf_file(char *path);
 | |
| 
 | |
| #endif
 |