Lines Matching refs:info
128 show_link_header_json(struct bpf_link_info *info, json_writer_t *wtr) in show_link_header_json() argument
132 jsonw_uint_field(wtr, "id", info->id); in show_link_header_json()
133 link_type_str = libbpf_bpf_link_type_str(info->type); in show_link_header_json()
137 jsonw_uint_field(wtr, "type", info->type); in show_link_header_json()
139 jsonw_uint_field(json_wtr, "prog_id", info->prog_id); in show_link_header_json()
201 static void show_iter_json(struct bpf_link_info *info, json_writer_t *wtr) in show_iter_json() argument
203 const char *target_name = u64_to_ptr(info->iter.target_name); in show_iter_json()
208 jsonw_uint_field(wtr, "map_id", info->iter.map.map_id); in show_iter_json()
210 if (info->iter.task.tid) in show_iter_json()
211 jsonw_uint_field(wtr, "tid", info->iter.task.tid); in show_iter_json()
212 else if (info->iter.task.pid) in show_iter_json()
213 jsonw_uint_field(wtr, "pid", info->iter.task.pid); in show_iter_json()
217 jsonw_lluint_field(wtr, "cgroup_id", info->iter.cgroup.cgroup_id); in show_iter_json()
219 cgroup_order_string(info->iter.cgroup.order)); in show_iter_json()
223 void netfilter_dump_json(const struct bpf_link_info *info, json_writer_t *wtr) in netfilter_dump_json() argument
226 info->netfilter.pf); in netfilter_dump_json()
228 info->netfilter.hooknum); in netfilter_dump_json()
230 info->netfilter.priority); in netfilter_dump_json()
232 info->netfilter.flags); in netfilter_dump_json()
235 static int get_prog_info(int prog_id, struct bpf_prog_info *info) in get_prog_info() argument
237 __u32 len = sizeof(*info); in get_prog_info()
244 memset(info, 0, sizeof(*info)); in get_prog_info()
245 err = bpf_prog_get_info_by_fd(prog_fd, info, &len); in get_prog_info()
286 show_kprobe_multi_json(struct bpf_link_info *info, json_writer_t *wtr) in show_kprobe_multi_json() argument
292 info->kprobe_multi.flags & BPF_F_KPROBE_MULTI_RETURN); in show_kprobe_multi_json()
293 jsonw_uint_field(json_wtr, "func_cnt", info->kprobe_multi.count); in show_kprobe_multi_json()
294 jsonw_uint_field(json_wtr, "missed", info->kprobe_multi.missed); in show_kprobe_multi_json()
297 data = get_addr_cookie_array(u64_to_ptr(info->kprobe_multi.addrs), in show_kprobe_multi_json()
298 u64_to_ptr(info->kprobe_multi.cookies), in show_kprobe_multi_json()
299 info->kprobe_multi.count); in show_kprobe_multi_json()
324 if (j++ == info->kprobe_multi.count) in show_kprobe_multi_json()
338 show_uprobe_multi_json(struct bpf_link_info *info, json_writer_t *wtr) in show_uprobe_multi_json() argument
343 info->uprobe_multi.flags & BPF_F_UPROBE_MULTI_RETURN); in show_uprobe_multi_json()
344 jsonw_string_field(json_wtr, "path", (char *) u64_to_ptr(info->uprobe_multi.path)); in show_uprobe_multi_json()
345 jsonw_uint_field(json_wtr, "func_cnt", info->uprobe_multi.count); in show_uprobe_multi_json()
346 jsonw_int_field(json_wtr, "pid", (int) info->uprobe_multi.pid); in show_uprobe_multi_json()
350 for (i = 0; i < info->uprobe_multi.count; i++) { in show_uprobe_multi_json()
353 u64_to_arr(info->uprobe_multi.offsets)[i]); in show_uprobe_multi_json()
355 u64_to_arr(info->uprobe_multi.ref_ctr_offsets)[i]); in show_uprobe_multi_json()
357 u64_to_arr(info->uprobe_multi.cookies)[i]); in show_uprobe_multi_json()
364 show_perf_event_kprobe_json(struct bpf_link_info *info, json_writer_t *wtr) in show_perf_event_kprobe_json() argument
366 jsonw_bool_field(wtr, "retprobe", info->perf_event.type == BPF_PERF_EVENT_KRETPROBE); in show_perf_event_kprobe_json()
367 jsonw_uint_field(wtr, "addr", info->perf_event.kprobe.addr); in show_perf_event_kprobe_json()
369 u64_to_ptr(info->perf_event.kprobe.func_name)); in show_perf_event_kprobe_json()
370 jsonw_uint_field(wtr, "offset", info->perf_event.kprobe.offset); in show_perf_event_kprobe_json()
371 jsonw_uint_field(wtr, "missed", info->perf_event.kprobe.missed); in show_perf_event_kprobe_json()
372 jsonw_uint_field(wtr, "cookie", info->perf_event.kprobe.cookie); in show_perf_event_kprobe_json()
376 show_perf_event_uprobe_json(struct bpf_link_info *info, json_writer_t *wtr) in show_perf_event_uprobe_json() argument
378 jsonw_bool_field(wtr, "retprobe", info->perf_event.type == BPF_PERF_EVENT_URETPROBE); in show_perf_event_uprobe_json()
380 u64_to_ptr(info->perf_event.uprobe.file_name)); in show_perf_event_uprobe_json()
381 jsonw_uint_field(wtr, "offset", info->perf_event.uprobe.offset); in show_perf_event_uprobe_json()
382 jsonw_uint_field(wtr, "cookie", info->perf_event.uprobe.cookie); in show_perf_event_uprobe_json()
383 jsonw_uint_field(wtr, "ref_ctr_offset", info->perf_event.uprobe.ref_ctr_offset); in show_perf_event_uprobe_json()
387 show_perf_event_tracepoint_json(struct bpf_link_info *info, json_writer_t *wtr) in show_perf_event_tracepoint_json() argument
390 u64_to_ptr(info->perf_event.tracepoint.tp_name)); in show_perf_event_tracepoint_json()
391 jsonw_uint_field(wtr, "cookie", info->perf_event.tracepoint.cookie); in show_perf_event_tracepoint_json()
450 show_perf_event_event_json(struct bpf_link_info *info, json_writer_t *wtr) in show_perf_event_event_json() argument
452 __u64 config = info->perf_event.event.config; in show_perf_event_event_json()
453 __u32 type = info->perf_event.event.type; in show_perf_event_event_json()
468 jsonw_uint_field(wtr, "cookie", info->perf_event.event.cookie); in show_perf_event_event_json()
474 static int show_link_close_json(int fd, struct bpf_link_info *info) in show_link_close_json() argument
482 show_link_header_json(info, json_wtr); in show_link_close_json()
484 switch (info->type) { in show_link_close_json()
487 u64_to_ptr(info->raw_tracepoint.tp_name)); in show_link_close_json()
488 jsonw_uint_field(json_wtr, "cookie", info->raw_tracepoint.cookie); in show_link_close_json()
491 err = get_prog_info(info->prog_id, &prog_info); in show_link_close_json()
502 show_link_attach_type_json(info->tracing.attach_type, in show_link_close_json()
504 jsonw_uint_field(json_wtr, "target_obj_id", info->tracing.target_obj_id); in show_link_close_json()
505 jsonw_uint_field(json_wtr, "target_btf_id", info->tracing.target_btf_id); in show_link_close_json()
506 jsonw_uint_field(json_wtr, "cookie", info->tracing.cookie); in show_link_close_json()
510 info->cgroup.cgroup_id); in show_link_close_json()
511 show_link_attach_type_json(info->cgroup.attach_type, json_wtr); in show_link_close_json()
514 show_iter_json(info, json_wtr); in show_link_close_json()
518 info->netns.netns_ino); in show_link_close_json()
519 show_link_attach_type_json(info->netns.attach_type, json_wtr); in show_link_close_json()
522 netfilter_dump_json(info, json_wtr); in show_link_close_json()
525 show_link_ifindex_json(info->tcx.ifindex, json_wtr); in show_link_close_json()
526 show_link_attach_type_json(info->tcx.attach_type, json_wtr); in show_link_close_json()
529 show_link_ifindex_json(info->netkit.ifindex, json_wtr); in show_link_close_json()
530 show_link_attach_type_json(info->netkit.attach_type, json_wtr); in show_link_close_json()
533 jsonw_uint_field(json_wtr, "map_id", info->sockmap.map_id); in show_link_close_json()
534 show_link_attach_type_json(info->sockmap.attach_type, json_wtr); in show_link_close_json()
537 show_link_ifindex_json(info->xdp.ifindex, json_wtr); in show_link_close_json()
541 info->struct_ops.map_id); in show_link_close_json()
544 show_kprobe_multi_json(info, json_wtr); in show_link_close_json()
547 show_uprobe_multi_json(info, json_wtr); in show_link_close_json()
550 switch (info->perf_event.type) { in show_link_close_json()
552 show_perf_event_event_json(info, json_wtr); in show_link_close_json()
555 show_perf_event_tracepoint_json(info, json_wtr); in show_link_close_json()
559 show_perf_event_kprobe_json(info, json_wtr); in show_link_close_json()
563 show_perf_event_uprobe_json(info, json_wtr); in show_link_close_json()
578 hashmap__for_each_key_entry(link_table, entry, info->id) in show_link_close_json()
583 emit_obj_refs_json(refs_table, info->id, json_wtr); in show_link_close_json()
590 static void show_link_header_plain(struct bpf_link_info *info) in show_link_header_plain() argument
594 printf("%u: ", info->id); in show_link_header_plain()
595 link_type_str = libbpf_bpf_link_type_str(info->type); in show_link_header_plain()
599 printf("type %u ", info->type); in show_link_header_plain()
601 if (info->type == BPF_LINK_TYPE_STRUCT_OPS) in show_link_header_plain()
602 printf("map %u ", info->struct_ops.map_id); in show_link_header_plain()
604 printf("prog %u ", info->prog_id); in show_link_header_plain()
634 static void show_iter_plain(struct bpf_link_info *info) in show_iter_plain() argument
636 const char *target_name = u64_to_ptr(info->iter.target_name); in show_iter_plain()
641 printf("map_id %u ", info->iter.map.map_id); in show_iter_plain()
643 if (info->iter.task.tid) in show_iter_plain()
644 printf("tid %u ", info->iter.task.tid); in show_iter_plain()
645 else if (info->iter.task.pid) in show_iter_plain()
646 printf("pid %u ", info->iter.task.pid); in show_iter_plain()
650 printf("cgroup_id %llu ", info->iter.cgroup.cgroup_id); in show_iter_plain()
652 cgroup_order_string(info->iter.cgroup.order)); in show_iter_plain()
678 void netfilter_dump_plain(const struct bpf_link_info *info) in netfilter_dump_plain() argument
681 unsigned int hook = info->netfilter.hooknum; in netfilter_dump_plain()
682 unsigned int pf = info->netfilter.pf; in netfilter_dump_plain()
712 printf(" prio %d", info->netfilter.priority); in netfilter_dump_plain()
714 if (info->netfilter.flags) in netfilter_dump_plain()
715 printf(" flags 0x%x", info->netfilter.flags); in netfilter_dump_plain()
718 static void show_kprobe_multi_plain(struct bpf_link_info *info) in show_kprobe_multi_plain() argument
723 if (!info->kprobe_multi.count) in show_kprobe_multi_plain()
726 if (info->kprobe_multi.flags & BPF_F_KPROBE_MULTI_RETURN) in show_kprobe_multi_plain()
730 printf("func_cnt %u ", info->kprobe_multi.count); in show_kprobe_multi_plain()
731 if (info->kprobe_multi.missed) in show_kprobe_multi_plain()
732 printf("missed %llu ", info->kprobe_multi.missed); in show_kprobe_multi_plain()
733 data = get_addr_cookie_array(u64_to_ptr(info->kprobe_multi.addrs), in show_kprobe_multi_plain()
734 u64_to_ptr(info->kprobe_multi.cookies), in show_kprobe_multi_plain()
735 info->kprobe_multi.count); in show_kprobe_multi_plain()
756 if (j++ == info->kprobe_multi.count) in show_kprobe_multi_plain()
763 static void show_uprobe_multi_plain(struct bpf_link_info *info) in show_uprobe_multi_plain() argument
767 if (!info->uprobe_multi.count) in show_uprobe_multi_plain()
770 if (info->uprobe_multi.flags & BPF_F_UPROBE_MULTI_RETURN) in show_uprobe_multi_plain()
775 printf("path %s ", (char *) u64_to_ptr(info->uprobe_multi.path)); in show_uprobe_multi_plain()
776 printf("func_cnt %u ", info->uprobe_multi.count); in show_uprobe_multi_plain()
778 if (info->uprobe_multi.pid) in show_uprobe_multi_plain()
779 printf("pid %u ", info->uprobe_multi.pid); in show_uprobe_multi_plain()
782 for (i = 0; i < info->uprobe_multi.count; i++) { in show_uprobe_multi_plain()
784 u64_to_arr(info->uprobe_multi.offsets)[i], in show_uprobe_multi_plain()
785 u64_to_arr(info->uprobe_multi.ref_ctr_offsets)[i], in show_uprobe_multi_plain()
786 u64_to_arr(info->uprobe_multi.cookies)[i]); in show_uprobe_multi_plain()
790 static void show_perf_event_kprobe_plain(struct bpf_link_info *info) in show_perf_event_kprobe_plain() argument
794 buf = u64_to_ptr(info->perf_event.kprobe.func_name); in show_perf_event_kprobe_plain()
795 if (buf[0] == '\0' && !info->perf_event.kprobe.addr) in show_perf_event_kprobe_plain()
798 if (info->perf_event.type == BPF_PERF_EVENT_KRETPROBE) in show_perf_event_kprobe_plain()
802 if (info->perf_event.kprobe.addr) in show_perf_event_kprobe_plain()
803 printf("%llx ", info->perf_event.kprobe.addr); in show_perf_event_kprobe_plain()
805 if (info->perf_event.kprobe.offset) in show_perf_event_kprobe_plain()
806 printf("+%#x", info->perf_event.kprobe.offset); in show_perf_event_kprobe_plain()
807 if (info->perf_event.kprobe.missed) in show_perf_event_kprobe_plain()
808 printf(" missed %llu", info->perf_event.kprobe.missed); in show_perf_event_kprobe_plain()
809 if (info->perf_event.kprobe.cookie) in show_perf_event_kprobe_plain()
810 printf(" cookie %llu", info->perf_event.kprobe.cookie); in show_perf_event_kprobe_plain()
814 static void show_perf_event_uprobe_plain(struct bpf_link_info *info) in show_perf_event_uprobe_plain() argument
818 buf = u64_to_ptr(info->perf_event.uprobe.file_name); in show_perf_event_uprobe_plain()
822 if (info->perf_event.type == BPF_PERF_EVENT_URETPROBE) in show_perf_event_uprobe_plain()
826 printf("%s+%#x ", buf, info->perf_event.uprobe.offset); in show_perf_event_uprobe_plain()
827 if (info->perf_event.uprobe.cookie) in show_perf_event_uprobe_plain()
828 printf("cookie %llu ", info->perf_event.uprobe.cookie); in show_perf_event_uprobe_plain()
829 if (info->perf_event.uprobe.ref_ctr_offset) in show_perf_event_uprobe_plain()
830 printf("ref_ctr_offset 0x%llx ", info->perf_event.uprobe.ref_ctr_offset); in show_perf_event_uprobe_plain()
833 static void show_perf_event_tracepoint_plain(struct bpf_link_info *info) in show_perf_event_tracepoint_plain() argument
837 buf = u64_to_ptr(info->perf_event.tracepoint.tp_name); in show_perf_event_tracepoint_plain()
842 if (info->perf_event.tracepoint.cookie) in show_perf_event_tracepoint_plain()
843 printf("cookie %llu ", info->perf_event.tracepoint.cookie); in show_perf_event_tracepoint_plain()
846 static void show_perf_event_event_plain(struct bpf_link_info *info) in show_perf_event_event_plain() argument
848 __u64 config = info->perf_event.event.config; in show_perf_event_event_plain()
849 __u32 type = info->perf_event.event.type; in show_perf_event_event_plain()
865 if (info->perf_event.event.cookie) in show_perf_event_event_plain()
866 printf("cookie %llu ", info->perf_event.event.cookie); in show_perf_event_event_plain()
872 static int show_link_close_plain(int fd, struct bpf_link_info *info) in show_link_close_plain() argument
878 show_link_header_plain(info); in show_link_close_plain()
880 switch (info->type) { in show_link_close_plain()
883 (const char *)u64_to_ptr(info->raw_tracepoint.tp_name)); in show_link_close_plain()
884 if (info->raw_tracepoint.cookie) in show_link_close_plain()
885 printf("cookie %llu ", info->raw_tracepoint.cookie); in show_link_close_plain()
888 err = get_prog_info(info->prog_id, &prog_info); in show_link_close_plain()
899 show_link_attach_type_plain(info->tracing.attach_type); in show_link_close_plain()
900 if (info->tracing.target_obj_id || info->tracing.target_btf_id) in show_link_close_plain()
902 info->tracing.target_obj_id, in show_link_close_plain()
903 info->tracing.target_btf_id); in show_link_close_plain()
904 if (info->tracing.cookie) in show_link_close_plain()
905 printf("\n\tcookie %llu ", info->tracing.cookie); in show_link_close_plain()
908 printf("\n\tcgroup_id %zu ", (size_t)info->cgroup.cgroup_id); in show_link_close_plain()
909 show_link_attach_type_plain(info->cgroup.attach_type); in show_link_close_plain()
912 show_iter_plain(info); in show_link_close_plain()
915 printf("\n\tnetns_ino %u ", info->netns.netns_ino); in show_link_close_plain()
916 show_link_attach_type_plain(info->netns.attach_type); in show_link_close_plain()
919 netfilter_dump_plain(info); in show_link_close_plain()
923 show_link_ifindex_plain(info->tcx.ifindex); in show_link_close_plain()
924 show_link_attach_type_plain(info->tcx.attach_type); in show_link_close_plain()
928 show_link_ifindex_plain(info->netkit.ifindex); in show_link_close_plain()
929 show_link_attach_type_plain(info->netkit.attach_type); in show_link_close_plain()
933 printf("map_id %u ", info->sockmap.map_id); in show_link_close_plain()
934 show_link_attach_type_plain(info->sockmap.attach_type); in show_link_close_plain()
938 show_link_ifindex_plain(info->xdp.ifindex); in show_link_close_plain()
941 show_kprobe_multi_plain(info); in show_link_close_plain()
944 show_uprobe_multi_plain(info); in show_link_close_plain()
947 switch (info->perf_event.type) { in show_link_close_plain()
949 show_perf_event_event_plain(info); in show_link_close_plain()
952 show_perf_event_tracepoint_plain(info); in show_link_close_plain()
956 show_perf_event_kprobe_plain(info); in show_link_close_plain()
960 show_perf_event_uprobe_plain(info); in show_link_close_plain()
973 hashmap__for_each_key_entry(link_table, entry, info->id) in show_link_close_plain()
976 emit_obj_refs_plain(refs_table, info->id, "\n\tpids "); in show_link_close_plain()
986 struct bpf_link_info info; in do_show_link() local
987 __u32 len = sizeof(info); in do_show_link()
994 memset(&info, 0, sizeof(info)); in do_show_link()
997 err = bpf_link_get_info_by_fd(fd, &info, &len); in do_show_link()
1004 if (info.type == BPF_LINK_TYPE_RAW_TRACEPOINT && in do_show_link()
1005 !info.raw_tracepoint.tp_name) { in do_show_link()
1006 info.raw_tracepoint.tp_name = ptr_to_u64(&buf); in do_show_link()
1007 info.raw_tracepoint.tp_name_len = sizeof(buf); in do_show_link()
1010 if (info.type == BPF_LINK_TYPE_ITER && in do_show_link()
1011 !info.iter.target_name) { in do_show_link()
1012 info.iter.target_name = ptr_to_u64(&buf); in do_show_link()
1013 info.iter.target_name_len = sizeof(buf); in do_show_link()
1016 if (info.type == BPF_LINK_TYPE_KPROBE_MULTI && in do_show_link()
1017 !info.kprobe_multi.addrs) { in do_show_link()
1018 count = info.kprobe_multi.count; in do_show_link()
1026 info.kprobe_multi.addrs = ptr_to_u64(addrs); in do_show_link()
1034 info.kprobe_multi.cookies = ptr_to_u64(cookies); in do_show_link()
1038 if (info.type == BPF_LINK_TYPE_UPROBE_MULTI && in do_show_link()
1039 !info.uprobe_multi.offsets) { in do_show_link()
1040 count = info.uprobe_multi.count; in do_show_link()
1048 info.uprobe_multi.offsets = ptr_to_u64(offsets); in do_show_link()
1056 info.uprobe_multi.ref_ctr_offsets = ptr_to_u64(ref_ctr_offsets); in do_show_link()
1065 info.uprobe_multi.cookies = ptr_to_u64(cookies); in do_show_link()
1066 info.uprobe_multi.path = ptr_to_u64(path_buf); in do_show_link()
1067 info.uprobe_multi.path_size = sizeof(path_buf); in do_show_link()
1071 if (info.type == BPF_LINK_TYPE_PERF_EVENT) { in do_show_link()
1072 switch (info.perf_event.type) { in do_show_link()
1074 if (!info.perf_event.tracepoint.tp_name) { in do_show_link()
1075 info.perf_event.tracepoint.tp_name = ptr_to_u64(&buf); in do_show_link()
1076 info.perf_event.tracepoint.name_len = sizeof(buf); in do_show_link()
1082 if (!info.perf_event.kprobe.func_name) { in do_show_link()
1083 info.perf_event.kprobe.func_name = ptr_to_u64(&buf); in do_show_link()
1084 info.perf_event.kprobe.name_len = sizeof(buf); in do_show_link()
1090 if (!info.perf_event.uprobe.file_name) { in do_show_link()
1091 info.perf_event.uprobe.file_name = ptr_to_u64(&buf); in do_show_link()
1092 info.perf_event.uprobe.name_len = sizeof(buf); in do_show_link()
1102 show_link_close_json(fd, &info); in do_show_link()
1104 show_link_close_plain(fd, &info); in do_show_link()