Lines Matching refs:attr

72 static inline int sys_bpf(enum bpf_cmd cmd, union bpf_attr *attr,
75 return syscall(__NR_bpf, cmd, attr, size);
78 static inline int sys_bpf_fd(enum bpf_cmd cmd, union bpf_attr *attr,
83 fd = sys_bpf(cmd, attr, size);
87 int sys_bpf_prog_load(union bpf_attr *attr, unsigned int size, int attempts)
92 fd = sys_bpf_fd(BPF_PROG_LOAD, attr, size);
114 union bpf_attr attr;
118 memset(&attr, 0, attr_sz);
119 attr.prog_type = BPF_PROG_TYPE_SOCKET_FILTER;
120 attr.insns = ptr_to_u64(insns);
121 attr.insn_cnt = insn_cnt;
122 attr.license = ptr_to_u64("GPL");
123 attr.prog_token_fd = token_fd;
125 attr.prog_flags |= BPF_F_TOKEN_FD;
127 prog_fd = sys_bpf_fd(BPF_PROG_LOAD, &attr, attr_sz);
176 union bpf_attr attr;
181 memset(&attr, 0, attr_sz);
186 attr.map_type = map_type;
188 libbpf_strlcpy(attr.map_name, map_name, sizeof(attr.map_name));
189 attr.key_size = key_size;
190 attr.value_size = value_size;
191 attr.max_entries = max_entries;
193 attr.btf_fd = OPTS_GET(opts, btf_fd, 0);
194 attr.btf_key_type_id = OPTS_GET(opts, btf_key_type_id, 0);
195 attr.btf_value_type_id = OPTS_GET(opts, btf_value_type_id, 0);
196 attr.btf_vmlinux_value_type_id = OPTS_GET(opts, btf_vmlinux_value_type_id, 0);
197 attr.value_type_btf_obj_fd = OPTS_GET(opts, value_type_btf_obj_fd, 0);
199 attr.inner_map_fd = OPTS_GET(opts, inner_map_fd, 0);
200 attr.map_flags = OPTS_GET(opts, map_flags, 0);
201 attr.map_extra = OPTS_GET(opts, map_extra, 0);
202 attr.numa_node = OPTS_GET(opts, numa_node, 0);
203 attr.map_ifindex = OPTS_GET(opts, map_ifindex, 0);
205 attr.map_token_fd = OPTS_GET(opts, token_fd, 0);
207 fd = sys_bpf_fd(BPF_MAP_CREATE, &attr, attr_sz);
247 union bpf_attr attr;
261 memset(&attr, 0, attr_sz);
263 attr.prog_type = prog_type;
264 attr.expected_attach_type = OPTS_GET(opts, expected_attach_type, 0);
266 attr.prog_btf_fd = OPTS_GET(opts, prog_btf_fd, 0);
267 attr.prog_flags = OPTS_GET(opts, prog_flags, 0);
268 attr.prog_ifindex = OPTS_GET(opts, prog_ifindex, 0);
269 attr.kern_version = OPTS_GET(opts, kern_version, 0);
270 attr.prog_token_fd = OPTS_GET(opts, token_fd, 0);
273 libbpf_strlcpy(attr.prog_name, prog_name, sizeof(attr.prog_name));
274 attr.license = ptr_to_u64(license);
279 attr.insns = ptr_to_u64(insns);
280 attr.insn_cnt = (__u32)insn_cnt;
288 attr.attach_btf_id = OPTS_GET(opts, attach_btf_id, 0);
290 attr.attach_prog_fd = attach_prog_fd;
292 attr.attach_btf_obj_fd = attach_btf_obj_fd;
303 attr.func_info_rec_size = func_info_rec_size;
304 attr.func_info = ptr_to_u64(func_info);
305 attr.func_info_cnt = OPTS_GET(opts, func_info_cnt, 0);
309 attr.line_info_rec_size = line_info_rec_size;
310 attr.line_info = ptr_to_u64(line_info);
311 attr.line_info_cnt = OPTS_GET(opts, line_info_cnt, 0);
313 attr.fd_array = ptr_to_u64(OPTS_GET(opts, fd_array, NULL));
316 attr.log_buf = ptr_to_u64(log_buf);
317 attr.log_size = log_size;
318 attr.log_level = log_level;
321 fd = sys_bpf_prog_load(&attr, attr_sz, attempts);
322 OPTS_SET(opts, log_true_size, attr.log_true_size);
331 if (!finfo && attr.func_info_cnt &&
332 attr.func_info_rec_size < func_info_rec_size) {
335 attr.func_info_cnt,
337 attr.func_info_rec_size);
343 attr.func_info = ptr_to_u64(finfo);
344 attr.func_info_rec_size = func_info_rec_size;
345 } else if (!linfo && attr.line_info_cnt &&
346 attr.line_info_rec_size < line_info_rec_size) {
348 attr.line_info_cnt,
350 attr.line_info_rec_size);
356 attr.line_info = ptr_to_u64(linfo);
357 attr.line_info_rec_size = line_info_rec_size;
362 fd = sys_bpf_prog_load(&attr, attr_sz, attempts);
363 OPTS_SET(opts, log_true_size, attr.log_true_size);
373 attr.log_buf = ptr_to_u64(log_buf);
374 attr.log_size = log_size;
375 attr.log_level = 1;
377 fd = sys_bpf_prog_load(&attr, attr_sz, attempts);
378 OPTS_SET(opts, log_true_size, attr.log_true_size);
391 union bpf_attr attr;
394 memset(&attr, 0, attr_sz);
395 attr.map_fd = fd;
396 attr.key = ptr_to_u64(key);
397 attr.value = ptr_to_u64(value);
398 attr.flags = flags;
400 ret = sys_bpf(BPF_MAP_UPDATE_ELEM, &attr, attr_sz);
407 union bpf_attr attr;
410 memset(&attr, 0, attr_sz);
411 attr.map_fd = fd;
412 attr.key = ptr_to_u64(key);
413 attr.value = ptr_to_u64(value);
415 ret = sys_bpf(BPF_MAP_LOOKUP_ELEM, &attr, attr_sz);
422 union bpf_attr attr;
425 memset(&attr, 0, attr_sz);
426 attr.map_fd = fd;
427 attr.key = ptr_to_u64(key);
428 attr.value = ptr_to_u64(value);
429 attr.flags = flags;
431 ret = sys_bpf(BPF_MAP_LOOKUP_ELEM, &attr, attr_sz);
438 union bpf_attr attr;
441 memset(&attr, 0, attr_sz);
442 attr.map_fd = fd;
443 attr.key = ptr_to_u64(key);
444 attr.value = ptr_to_u64(value);
446 ret = sys_bpf(BPF_MAP_LOOKUP_AND_DELETE_ELEM, &attr, attr_sz);
453 union bpf_attr attr;
456 memset(&attr, 0, attr_sz);
457 attr.map_fd = fd;
458 attr.key = ptr_to_u64(key);
459 attr.value = ptr_to_u64(value);
460 attr.flags = flags;
462 ret = sys_bpf(BPF_MAP_LOOKUP_AND_DELETE_ELEM, &attr, attr_sz);
469 union bpf_attr attr;
472 memset(&attr, 0, attr_sz);
473 attr.map_fd = fd;
474 attr.key = ptr_to_u64(key);
476 ret = sys_bpf(BPF_MAP_DELETE_ELEM, &attr, attr_sz);
483 union bpf_attr attr;
486 memset(&attr, 0, attr_sz);
487 attr.map_fd = fd;
488 attr.key = ptr_to_u64(key);
489 attr.flags = flags;
491 ret = sys_bpf(BPF_MAP_DELETE_ELEM, &attr, attr_sz);
498 union bpf_attr attr;
501 memset(&attr, 0, attr_sz);
502 attr.map_fd = fd;
503 attr.key = ptr_to_u64(key);
504 attr.next_key = ptr_to_u64(next_key);
506 ret = sys_bpf(BPF_MAP_GET_NEXT_KEY, &attr, attr_sz);
513 union bpf_attr attr;
516 memset(&attr, 0, attr_sz);
517 attr.map_fd = fd;
519 ret = sys_bpf(BPF_MAP_FREEZE, &attr, attr_sz);
529 union bpf_attr attr;
535 memset(&attr, 0, attr_sz);
536 attr.batch.map_fd = fd;
537 attr.batch.in_batch = ptr_to_u64(in_batch);
538 attr.batch.out_batch = ptr_to_u64(out_batch);
539 attr.batch.keys = ptr_to_u64(keys);
540 attr.batch.values = ptr_to_u64(values);
541 attr.batch.count = *count;
542 attr.batch.elem_flags = OPTS_GET(opts, elem_flags, 0);
543 attr.batch.flags = OPTS_GET(opts, flags, 0);
545 ret = sys_bpf(cmd, &attr, attr_sz);
546 *count = attr.batch.count;
585 union bpf_attr attr;
591 memset(&attr, 0, attr_sz);
592 attr.path_fd = OPTS_GET(opts, path_fd, 0);
593 attr.pathname = ptr_to_u64((void *)pathname);
594 attr.file_flags = OPTS_GET(opts, file_flags, 0);
595 attr.bpf_fd = fd;
597 ret = sys_bpf(BPF_OBJ_PIN, &attr, attr_sz);
614 union bpf_attr attr;
620 memset(&attr, 0, attr_sz);
621 attr.path_fd = OPTS_GET(opts, path_fd, 0);
622 attr.pathname = ptr_to_u64((void *)pathname);
623 attr.file_flags = OPTS_GET(opts, file_flags, 0);
625 fd = sys_bpf_fd(BPF_OBJ_GET, &attr, attr_sz);
645 union bpf_attr attr;
658 memset(&attr, 0, attr_sz);
659 attr.target_fd = target;
660 attr.attach_bpf_fd = prog_fd;
661 attr.attach_type = type;
662 attr.replace_bpf_fd = OPTS_GET(opts, replace_fd, 0);
663 attr.expected_revision = OPTS_GET(opts, expected_revision, 0);
666 attr.attach_flags = flags | BPF_F_ID;
667 attr.relative_id = relative_id;
669 attr.attach_flags = flags;
670 attr.relative_fd = relative_fd;
673 ret = sys_bpf(BPF_PROG_ATTACH, &attr, attr_sz);
683 union bpf_attr attr;
696 memset(&attr, 0, attr_sz);
697 attr.target_fd = target;
698 attr.attach_bpf_fd = prog_fd;
699 attr.attach_type = type;
700 attr.expected_revision = OPTS_GET(opts, expected_revision, 0);
703 attr.attach_flags = flags | BPF_F_ID;
704 attr.relative_id = relative_id;
706 attr.attach_flags = flags;
707 attr.relative_fd = relative_fd;
710 ret = sys_bpf(BPF_PROG_DETACH, &attr, attr_sz);
731 union bpf_attr attr;
747 memset(&attr, 0, attr_sz);
748 attr.link_create.prog_fd = prog_fd;
749 attr.link_create.target_fd = target_fd;
750 attr.link_create.attach_type = attach_type;
751 attr.link_create.flags = OPTS_GET(opts, flags, 0);
754 attr.link_create.target_btf_id = target_btf_id;
760 attr.link_create.iter_info = ptr_to_u64(OPTS_GET(opts, iter_info, (void *)0));
761 attr.link_create.iter_info_len = iter_info_len;
764 attr.link_create.perf_event.bpf_cookie = OPTS_GET(opts, perf_event.bpf_cookie, 0);
769 attr.link_create.kprobe_multi.flags = OPTS_GET(opts, kprobe_multi.flags, 0);
770 attr.link_create.kprobe_multi.cnt = OPTS_GET(opts, kprobe_multi.cnt, 0);
771 attr.link_create.kprobe_multi.syms = ptr_to_u64(OPTS_GET(opts, kprobe_multi.syms, 0));
772 attr.link_create.kprobe_multi.addrs = ptr_to_u64(OPTS_GET(opts, kprobe_multi.addrs, 0));
773 attr.link_create.kprobe_multi.cookies = ptr_to_u64(OPTS_GET(opts, kprobe_multi.cookies, 0));
778 attr.link_create.uprobe_multi.flags = OPTS_GET(opts, uprobe_multi.flags, 0);
779 attr.link_create.uprobe_multi.cnt = OPTS_GET(opts, uprobe_multi.cnt, 0);
780 attr.link_create.uprobe_multi.path = ptr_to_u64(OPTS_GET(opts, uprobe_multi.path, 0));
781 attr.link_create.uprobe_multi.offsets = ptr_to_u64(OPTS_GET(opts, uprobe_multi.offsets, 0));
782 attr.link_create.uprobe_multi.ref_ctr_offsets = ptr_to_u64(OPTS_GET(opts, uprobe_multi.ref_ctr_offsets, 0));
783 attr.link_create.uprobe_multi.cookies = ptr_to_u64(OPTS_GET(opts, uprobe_multi.cookies, 0));
784 attr.link_create.uprobe_multi.pid = OPTS_GET(opts, uprobe_multi.pid, 0);
792 attr.link_create.tracing.cookie = OPTS_GET(opts, tracing.cookie, 0);
797 attr.link_create.netfilter.pf = OPTS_GET(opts, netfilter.pf, 0);
798 attr.link_create.netfilter.hooknum = OPTS_GET(opts, netfilter.hooknum, 0);
799 attr.link_create.netfilter.priority = OPTS_GET(opts, netfilter.priority, 0);
800 attr.link_create.netfilter.flags = OPTS_GET(opts, netfilter.flags, 0);
811 attr.link_create.tcx.relative_id = relative_id;
812 attr.link_create.flags |= BPF_F_ID;
814 attr.link_create.tcx.relative_fd = relative_fd;
816 attr.link_create.tcx.expected_revision = OPTS_GET(opts, tcx.expected_revision, 0);
827 attr.link_create.netkit.relative_id = relative_id;
828 attr.link_create.flags |= BPF_F_ID;
830 attr.link_create.netkit.relative_fd = relative_fd;
832 attr.link_create.netkit.expected_revision = OPTS_GET(opts, netkit.expected_revision, 0);
842 fd = sys_bpf_fd(BPF_LINK_CREATE, &attr, attr_sz);
855 if (attr.link_create.target_fd || attr.link_create.target_btf_id)
879 union bpf_attr attr;
882 memset(&attr, 0, attr_sz);
883 attr.link_detach.link_fd = link_fd;
885 ret = sys_bpf(BPF_LINK_DETACH, &attr, attr_sz);
893 union bpf_attr attr;
902 memset(&attr, 0, attr_sz);
903 attr.link_update.link_fd = link_fd;
904 attr.link_update.new_prog_fd = new_prog_fd;
905 attr.link_update.flags = OPTS_GET(opts, flags, 0);
907 attr.link_update.old_prog_fd = OPTS_GET(opts, old_prog_fd, 0);
909 attr.link_update.old_map_fd = OPTS_GET(opts, old_map_fd, 0);
911 ret = sys_bpf(BPF_LINK_UPDATE, &attr, attr_sz);
918 union bpf_attr attr;
921 memset(&attr, 0, attr_sz);
922 attr.iter_create.link_fd = link_fd;
924 fd = sys_bpf_fd(BPF_ITER_CREATE, &attr, attr_sz);
932 union bpf_attr attr;
938 memset(&attr, 0, attr_sz);
939 attr.query.target_fd = target;
940 attr.query.attach_type = type;
941 attr.query.query_flags = OPTS_GET(opts, query_flags, 0);
942 attr.query.count = OPTS_GET(opts, count, 0);
943 attr.query.prog_ids = ptr_to_u64(OPTS_GET(opts, prog_ids, NULL));
944 attr.query.link_ids = ptr_to_u64(OPTS_GET(opts, link_ids, NULL));
945 attr.query.prog_attach_flags = ptr_to_u64(OPTS_GET(opts, prog_attach_flags, NULL));
946 attr.query.link_attach_flags = ptr_to_u64(OPTS_GET(opts, link_attach_flags, NULL));
948 ret = sys_bpf(BPF_PROG_QUERY, &attr, attr_sz);
950 OPTS_SET(opts, attach_flags, attr.query.attach_flags);
951 OPTS_SET(opts, revision, attr.query.revision);
952 OPTS_SET(opts, count, attr.query.count);
979 union bpf_attr attr;
985 memset(&attr, 0, attr_sz);
986 attr.test.prog_fd = prog_fd;
987 attr.test.batch_size = OPTS_GET(opts, batch_size, 0);
988 attr.test.cpu = OPTS_GET(opts, cpu, 0);
989 attr.test.flags = OPTS_GET(opts, flags, 0);
990 attr.test.repeat = OPTS_GET(opts, repeat, 0);
991 attr.test.duration = OPTS_GET(opts, duration, 0);
992 attr.test.ctx_size_in = OPTS_GET(opts, ctx_size_in, 0);
993 attr.test.ctx_size_out = OPTS_GET(opts, ctx_size_out, 0);
994 attr.test.data_size_in = OPTS_GET(opts, data_size_in, 0);
995 attr.test.data_size_out = OPTS_GET(opts, data_size_out, 0);
996 attr.test.ctx_in = ptr_to_u64(OPTS_GET(opts, ctx_in, NULL));
997 attr.test.ctx_out = ptr_to_u64(OPTS_GET(opts, ctx_out, NULL));
998 attr.test.data_in = ptr_to_u64(OPTS_GET(opts, data_in, NULL));
999 attr.test.data_out = ptr_to_u64(OPTS_GET(opts, data_out, NULL));
1001 ret = sys_bpf(BPF_PROG_TEST_RUN, &attr, attr_sz);
1003 OPTS_SET(opts, data_size_out, attr.test.data_size_out);
1004 OPTS_SET(opts, ctx_size_out, attr.test.ctx_size_out);
1005 OPTS_SET(opts, duration, attr.test.duration);
1006 OPTS_SET(opts, retval, attr.test.retval);
1014 union bpf_attr attr;
1017 memset(&attr, 0, attr_sz);
1018 attr.start_id = start_id;
1020 err = sys_bpf(cmd, &attr, attr_sz);
1022 *next_id = attr.next_id;
1051 union bpf_attr attr;
1057 memset(&attr, 0, attr_sz);
1058 attr.prog_id = id;
1059 attr.open_flags = OPTS_GET(opts, open_flags, 0);
1061 fd = sys_bpf_fd(BPF_PROG_GET_FD_BY_ID, &attr, attr_sz);
1074 union bpf_attr attr;
1080 memset(&attr, 0, attr_sz);
1081 attr.map_id = id;
1082 attr.open_flags = OPTS_GET(opts, open_flags, 0);
1084 fd = sys_bpf_fd(BPF_MAP_GET_FD_BY_ID, &attr, attr_sz);
1097 union bpf_attr attr;
1103 memset(&attr, 0, attr_sz);
1104 attr.btf_id = id;
1105 attr.open_flags = OPTS_GET(opts, open_flags, 0);
1107 fd = sys_bpf_fd(BPF_BTF_GET_FD_BY_ID, &attr, attr_sz);
1120 union bpf_attr attr;
1126 memset(&attr, 0, attr_sz);
1127 attr.link_id = id;
1128 attr.open_flags = OPTS_GET(opts, open_flags, 0);
1130 fd = sys_bpf_fd(BPF_LINK_GET_FD_BY_ID, &attr, attr_sz);
1142 union bpf_attr attr;
1145 memset(&attr, 0, attr_sz);
1146 attr.info.bpf_fd = bpf_fd;
1147 attr.info.info_len = *info_len;
1148 attr.info.info = ptr_to_u64(info);
1150 err = sys_bpf(BPF_OBJ_GET_INFO_BY_FD, &attr, attr_sz);
1152 *info_len = attr.info.info_len;
1179 union bpf_attr attr;
1182 memset(&attr, 0, attr_sz);
1183 attr.raw_tracepoint.name = ptr_to_u64(name);
1184 attr.raw_tracepoint.prog_fd = prog_fd;
1186 fd = sys_bpf_fd(BPF_RAW_TRACEPOINT_OPEN, &attr, attr_sz);
1193 union bpf_attr attr;
1201 memset(&attr, 0, attr_sz);
1215 attr.btf = ptr_to_u64(btf_data);
1216 attr.btf_size = btf_size;
1218 attr.btf_flags = OPTS_GET(opts, btf_flags, 0);
1219 attr.btf_token_fd = OPTS_GET(opts, token_fd, 0);
1227 attr.btf_log_buf = ptr_to_u64(log_buf);
1228 attr.btf_log_size = (__u32)log_size;
1229 attr.btf_log_level = log_level;
1232 fd = sys_bpf_fd(BPF_BTF_LOAD, &attr, attr_sz);
1234 attr.btf_log_buf = ptr_to_u64(log_buf);
1235 attr.btf_log_size = (__u32)log_size;
1236 attr.btf_log_level = 1;
1237 fd = sys_bpf_fd(BPF_BTF_LOAD, &attr, attr_sz);
1240 OPTS_SET(opts, log_true_size, attr.btf_log_true_size);
1249 union bpf_attr attr;
1252 memset(&attr, 0, attr_sz);
1253 attr.task_fd_query.pid = pid;
1254 attr.task_fd_query.fd = fd;
1255 attr.task_fd_query.flags = flags;
1256 attr.task_fd_query.buf = ptr_to_u64(buf);
1257 attr.task_fd_query.buf_len = *buf_len;
1259 err = sys_bpf(BPF_TASK_FD_QUERY, &attr, attr_sz);
1261 *buf_len = attr.task_fd_query.buf_len;
1262 *prog_id = attr.task_fd_query.prog_id;
1263 *fd_type = attr.task_fd_query.fd_type;
1264 *probe_offset = attr.task_fd_query.probe_offset;
1265 *probe_addr = attr.task_fd_query.probe_addr;
1273 union bpf_attr attr;
1276 memset(&attr, 0, attr_sz);
1277 attr.enable_stats.type = type;
1279 fd = sys_bpf_fd(BPF_ENABLE_STATS, &attr, attr_sz);
1287 union bpf_attr attr;
1293 memset(&attr, 0, attr_sz);
1294 attr.prog_bind_map.prog_fd = prog_fd;
1295 attr.prog_bind_map.map_fd = map_fd;
1296 attr.prog_bind_map.flags = OPTS_GET(opts, flags, 0);
1298 ret = sys_bpf(BPF_PROG_BIND_MAP, &attr, attr_sz);
1305 union bpf_attr attr;
1311 memset(&attr, 0, attr_sz);
1312 attr.token_create.bpffs_fd = bpffs_fd;
1313 attr.token_create.flags = OPTS_GET(opts, flags, 0);
1315 fd = sys_bpf_fd(BPF_TOKEN_CREATE, &attr, attr_sz);