xref: /linux/tools/lib/bpf/bpf.h (revision 7a5980f9c0066d085319415ec15ee51f165111f5)
1e3ed2fefSWang Nan /*
2e3ed2fefSWang Nan  * common eBPF ELF operations.
3e3ed2fefSWang Nan  *
4e3ed2fefSWang Nan  * Copyright (C) 2013-2015 Alexei Starovoitov <ast@kernel.org>
5e3ed2fefSWang Nan  * Copyright (C) 2015 Wang Nan <wangnan0@huawei.com>
6e3ed2fefSWang Nan  * Copyright (C) 2015 Huawei Inc.
7203d1cacSWang Nan  *
8203d1cacSWang Nan  * This program is free software; you can redistribute it and/or
9203d1cacSWang Nan  * modify it under the terms of the GNU Lesser General Public
10203d1cacSWang Nan  * License as published by the Free Software Foundation;
11203d1cacSWang Nan  * version 2.1 of the License (not later!)
12203d1cacSWang Nan  *
13203d1cacSWang Nan  * This program is distributed in the hope that it will be useful,
14203d1cacSWang Nan  * but WITHOUT ANY WARRANTY; without even the implied warranty of
15203d1cacSWang Nan  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
16203d1cacSWang Nan  * GNU Lesser General Public License for more details.
17203d1cacSWang Nan  *
18203d1cacSWang Nan  * You should have received a copy of the GNU Lesser General Public
19203d1cacSWang Nan  * License along with this program; if not,  see <http://www.gnu.org/licenses>
20e3ed2fefSWang Nan  */
21e3ed2fefSWang Nan #ifndef __BPF_BPF_H
22e3ed2fefSWang Nan #define __BPF_BPF_H
23e3ed2fefSWang Nan 
24e3ed2fefSWang Nan #include <linux/bpf.h>
25*7a5980f9SMickaël Salaün #include <stddef.h>
26e3ed2fefSWang Nan 
27e3ed2fefSWang Nan int bpf_create_map(enum bpf_map_type map_type, int key_size, int value_size,
28a5580c7fSJoe Stringer 		   int max_entries, __u32 map_flags);
29e3ed2fefSWang Nan 
307bf98369SWang Nan /* Recommend log buffer size */
317bf98369SWang Nan #define BPF_LOG_BUF_SIZE 65536
327bf98369SWang Nan int bpf_load_program(enum bpf_prog_type type, struct bpf_insn *insns,
337bf98369SWang Nan 		     size_t insns_cnt, char *license,
3483d994d0SJoe Stringer 		     __u32 kern_version, char *log_buf,
357bf98369SWang Nan 		     size_t log_buf_sz);
367bf98369SWang Nan 
3743798bf3SHe Kuang int bpf_map_update_elem(int fd, void *key, void *value,
3883d994d0SJoe Stringer 			__u64 flags);
399742da01SWang Nan 
409742da01SWang Nan int bpf_map_lookup_elem(int fd, void *key, void *value);
419742da01SWang Nan int bpf_map_delete_elem(int fd, void *key);
429742da01SWang Nan int bpf_map_get_next_key(int fd, void *key, void *next_key);
439742da01SWang Nan int bpf_obj_pin(int fd, const char *pathname);
449742da01SWang Nan int bpf_obj_get(const char *pathname);
455dc880deSJoe Stringer int bpf_prog_attach(int prog_fd, int attachable_fd, enum bpf_attach_type type);
465dc880deSJoe Stringer int bpf_prog_detach(int attachable_fd, enum bpf_attach_type type);
475dc880deSJoe Stringer 
489742da01SWang Nan 
49e3ed2fefSWang Nan #endif
50