diff options
Diffstat (limited to 'tools/lib/bpf/bpf.c')
| -rw-r--r-- | tools/lib/bpf/bpf.c | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/tools/lib/bpf/bpf.c b/tools/lib/bpf/bpf.c index 4fe444b8092e..6e178987af8e 100644 --- a/tools/lib/bpf/bpf.c +++ b/tools/lib/bpf/bpf.c | |||
| @@ -117,6 +117,28 @@ int bpf_load_program(enum bpf_prog_type type, const struct bpf_insn *insns, | |||
| 117 | return sys_bpf(BPF_PROG_LOAD, &attr, sizeof(attr)); | 117 | return sys_bpf(BPF_PROG_LOAD, &attr, sizeof(attr)); |
| 118 | } | 118 | } |
| 119 | 119 | ||
| 120 | int bpf_verify_program(enum bpf_prog_type type, const struct bpf_insn *insns, | ||
| 121 | size_t insns_cnt, int strict_alignment, | ||
| 122 | const char *license, __u32 kern_version, | ||
| 123 | char *log_buf, size_t log_buf_sz) | ||
| 124 | { | ||
| 125 | union bpf_attr attr; | ||
| 126 | |||
| 127 | bzero(&attr, sizeof(attr)); | ||
| 128 | attr.prog_type = type; | ||
| 129 | attr.insn_cnt = (__u32)insns_cnt; | ||
| 130 | attr.insns = ptr_to_u64(insns); | ||
| 131 | attr.license = ptr_to_u64(license); | ||
| 132 | attr.log_buf = ptr_to_u64(log_buf); | ||
| 133 | attr.log_size = log_buf_sz; | ||
| 134 | attr.log_level = 2; | ||
| 135 | log_buf[0] = 0; | ||
| 136 | attr.kern_version = kern_version; | ||
| 137 | attr.prog_flags = strict_alignment ? BPF_F_STRICT_ALIGNMENT : 0; | ||
| 138 | |||
| 139 | return sys_bpf(BPF_PROG_LOAD, &attr, sizeof(attr)); | ||
| 140 | } | ||
| 141 | |||
| 120 | int bpf_map_update_elem(int fd, const void *key, const void *value, | 142 | int bpf_map_update_elem(int fd, const void *key, const void *value, |
| 121 | __u64 flags) | 143 | __u64 flags) |
| 122 | { | 144 | { |
