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