1 /* SPDX-License-Identifier: LGPL-2.1 */
4 * common eBPF ELF operations.
6 * Copyright (C) 2013-2015 Alexei Starovoitov <ast@kernel.org>
7 * Copyright (C) 2015 Wang Nan <wangnan0@huawei.com>
8 * Copyright (C) 2015 Huawei Inc.
10 * This program is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU Lesser General Public
12 * License as published by the Free Software Foundation;
13 * version 2.1 of the License (not later!)
15 * This program is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License for more details.
20 * You should have received a copy of the GNU Lesser General Public
21 * License along with this program; if not, see <http://www.gnu.org/licenses>
26 #include <linux/bpf.h>
29 int bpf_create_map_node(enum bpf_map_type map_type
, const char *name
,
30 int key_size
, int value_size
, int max_entries
,
31 __u32 map_flags
, int node
);
32 int bpf_create_map_name(enum bpf_map_type map_type
, const char *name
,
33 int key_size
, int value_size
, int max_entries
,
35 int bpf_create_map(enum bpf_map_type map_type
, int key_size
, int value_size
,
36 int max_entries
, __u32 map_flags
);
37 int bpf_create_map_in_map_node(enum bpf_map_type map_type
, const char *name
,
38 int key_size
, int inner_map_fd
, int max_entries
,
39 __u32 map_flags
, int node
);
40 int bpf_create_map_in_map(enum bpf_map_type map_type
, const char *name
,
41 int key_size
, int inner_map_fd
, int max_entries
,
44 /* Recommend log buffer size */
45 #define BPF_LOG_BUF_SIZE (256 * 1024)
46 int bpf_load_program_name(enum bpf_prog_type type
, const char *name
,
47 const struct bpf_insn
*insns
,
48 size_t insns_cnt
, const char *license
,
49 __u32 kern_version
, char *log_buf
,
51 int bpf_load_program(enum bpf_prog_type type
, const struct bpf_insn
*insns
,
52 size_t insns_cnt
, const char *license
,
53 __u32 kern_version
, char *log_buf
,
55 int bpf_verify_program(enum bpf_prog_type type
, const struct bpf_insn
*insns
,
56 size_t insns_cnt
, int strict_alignment
,
57 const char *license
, __u32 kern_version
,
58 char *log_buf
, size_t log_buf_sz
, int log_level
);
60 int bpf_map_update_elem(int fd
, const void *key
, const void *value
,
63 int bpf_map_lookup_elem(int fd
, const void *key
, void *value
);
64 int bpf_map_delete_elem(int fd
, const void *key
);
65 int bpf_map_get_next_key(int fd
, const void *key
, void *next_key
);
66 int bpf_obj_pin(int fd
, const char *pathname
);
67 int bpf_obj_get(const char *pathname
);
68 int bpf_prog_attach(int prog_fd
, int attachable_fd
, enum bpf_attach_type type
,
70 int bpf_prog_detach(int attachable_fd
, enum bpf_attach_type type
);
71 int bpf_prog_detach2(int prog_fd
, int attachable_fd
, enum bpf_attach_type type
);
72 int bpf_prog_test_run(int prog_fd
, int repeat
, void *data
, __u32 size
,
73 void *data_out
, __u32
*size_out
, __u32
*retval
,
75 int bpf_prog_get_next_id(__u32 start_id
, __u32
*next_id
);
76 int bpf_map_get_next_id(__u32 start_id
, __u32
*next_id
);
77 int bpf_prog_get_fd_by_id(__u32 id
);
78 int bpf_map_get_fd_by_id(__u32 id
);
79 int bpf_obj_get_info_by_fd(int prog_fd
, void *info
, __u32
*info_len
);
80 int bpf_prog_query(int target_fd
, enum bpf_attach_type type
, __u32 query_flags
,
81 __u32
*attach_flags
, __u32
*prog_ids
, __u32
*prog_cnt
);