Lines Matching refs: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));
260 show_kprobe_multi_json(struct bpf_link_info *info, json_writer_t *wtr)
266 info->kprobe_multi.flags & BPF_F_KPROBE_MULTI_RETURN);
267 jsonw_uint_field(json_wtr, "func_cnt", info->kprobe_multi.count);
270 addrs = u64_to_ptr(info->kprobe_multi.addrs);
271 qsort(addrs, info->kprobe_multi.count, sizeof(addrs[0]), cmp_u64);
290 if (j++ == info->kprobe_multi.count)
297 show_perf_event_kprobe_json(struct bpf_link_info *info, json_writer_t *wtr)
299 jsonw_bool_field(wtr, "retprobe", info->perf_event.type == BPF_PERF_EVENT_KRETPROBE);
300 jsonw_uint_field(wtr, "addr", info->perf_event.kprobe.addr);
302 u64_to_ptr(info->perf_event.kprobe.func_name));
303 jsonw_uint_field(wtr, "offset", info->perf_event.kprobe.offset);
307 show_perf_event_uprobe_json(struct bpf_link_info *info, json_writer_t *wtr)
309 jsonw_bool_field(wtr, "retprobe", info->perf_event.type == BPF_PERF_EVENT_URETPROBE);
311 u64_to_ptr(info->perf_event.uprobe.file_name));
312 jsonw_uint_field(wtr, "offset", info->perf_event.uprobe.offset);
316 show_perf_event_tracepoint_json(struct bpf_link_info *info, json_writer_t *wtr)
319 u64_to_ptr(info->perf_event.tracepoint.tp_name));
378 show_perf_event_event_json(struct bpf_link_info *info, json_writer_t *wtr)
380 __u64 config = info->perf_event.event.config;
381 __u32 type = info->perf_event.event.type;
400 static int show_link_close_json(int fd, struct bpf_link_info *info)
408 show_link_header_json(info, json_wtr);
410 switch (info->type) {
413 u64_to_ptr(info->raw_tracepoint.tp_name));
416 err = get_prog_info(info->prog_id, &prog_info);
427 show_link_attach_type_json(info->tracing.attach_type,
429 jsonw_uint_field(json_wtr, "target_obj_id", info->tracing.target_obj_id);
430 jsonw_uint_field(json_wtr, "target_btf_id", info->tracing.target_btf_id);
434 info->cgroup.cgroup_id);
435 show_link_attach_type_json(info->cgroup.attach_type, json_wtr);
438 show_iter_json(info, json_wtr);
442 info->netns.netns_ino);
443 show_link_attach_type_json(info->netns.attach_type, json_wtr);
446 netfilter_dump_json(info, json_wtr);
449 show_link_ifindex_json(info->tcx.ifindex, json_wtr);
450 show_link_attach_type_json(info->tcx.attach_type, json_wtr);
453 show_link_ifindex_json(info->xdp.ifindex, json_wtr);
457 info->struct_ops.map_id);
460 show_kprobe_multi_json(info, json_wtr);
463 switch (info->perf_event.type) {
465 show_perf_event_event_json(info, json_wtr);
468 show_perf_event_tracepoint_json(info, json_wtr);
472 show_perf_event_kprobe_json(info, json_wtr);
476 show_perf_event_uprobe_json(info, json_wtr);
491 hashmap__for_each_key_entry(link_table, entry, info->id)
496 emit_obj_refs_json(refs_table, info->id, json_wtr);
503 static void show_link_header_plain(struct bpf_link_info *info)
507 printf("%u: ", info->id);
508 link_type_str = libbpf_bpf_link_type_str(info->type);
512 printf("type %u ", info->type);
514 if (info->type == BPF_LINK_TYPE_STRUCT_OPS)
515 printf("map %u ", info->struct_ops.map_id);
517 printf("prog %u ", info->prog_id);
547 static void show_iter_plain(struct bpf_link_info *info)
549 const char *target_name = u64_to_ptr(info->iter.target_name);
554 printf("map_id %u ", info->iter.map.map_id);
556 if (info->iter.task.tid)
557 printf("tid %u ", info->iter.task.tid);
558 else if (info->iter.task.pid)
559 printf("pid %u ", info->iter.task.pid);
563 printf("cgroup_id %llu ", info->iter.cgroup.cgroup_id);
565 cgroup_order_string(info->iter.cgroup.order));
591 void netfilter_dump_plain(const struct bpf_link_info *info)
594 unsigned int hook = info->netfilter.hooknum;
595 unsigned int pf = info->netfilter.pf;
625 printf(" prio %d", info->netfilter.priority);
627 if (info->netfilter.flags)
628 printf(" flags 0x%x", info->netfilter.flags);
631 static void show_kprobe_multi_plain(struct bpf_link_info *info)
636 if (!info->kprobe_multi.count)
639 if (info->kprobe_multi.flags & BPF_F_KPROBE_MULTI_RETURN)
643 printf("func_cnt %u ", info->kprobe_multi.count);
644 addrs = (__u64 *)u64_to_ptr(info->kprobe_multi.addrs);
645 qsort(addrs, info->kprobe_multi.count, sizeof(__u64), cmp_u64);
664 if (j++ == info->kprobe_multi.count)
669 static void show_perf_event_kprobe_plain(struct bpf_link_info *info)
673 buf = u64_to_ptr(info->perf_event.kprobe.func_name);
674 if (buf[0] == '\0' && !info->perf_event.kprobe.addr)
677 if (info->perf_event.type == BPF_PERF_EVENT_KRETPROBE)
681 if (info->perf_event.kprobe.addr)
682 printf("%llx ", info->perf_event.kprobe.addr);
684 if (info->perf_event.kprobe.offset)
685 printf("+%#x", info->perf_event.kprobe.offset);
689 static void show_perf_event_uprobe_plain(struct bpf_link_info *info)
693 buf = u64_to_ptr(info->perf_event.uprobe.file_name);
697 if (info->perf_event.type == BPF_PERF_EVENT_URETPROBE)
701 printf("%s+%#x ", buf, info->perf_event.uprobe.offset);
704 static void show_perf_event_tracepoint_plain(struct bpf_link_info *info)
708 buf = u64_to_ptr(info->perf_event.tracepoint.tp_name);
715 static void show_perf_event_event_plain(struct bpf_link_info *info)
717 __u64 config = info->perf_event.event.config;
718 __u32 type = info->perf_event.event.type;
738 static int show_link_close_plain(int fd, struct bpf_link_info *info)
744 show_link_header_plain(info);
746 switch (info->type) {
749 (const char *)u64_to_ptr(info->raw_tracepoint.tp_name));
752 err = get_prog_info(info->prog_id, &prog_info);
763 show_link_attach_type_plain(info->tracing.attach_type);
764 if (info->tracing.target_obj_id || info->tracing.target_btf_id)
766 info->tracing.target_obj_id,
767 info->tracing.target_btf_id);
770 printf("\n\tcgroup_id %zu ", (size_t)info->cgroup.cgroup_id);
771 show_link_attach_type_plain(info->cgroup.attach_type);
774 show_iter_plain(info);
777 printf("\n\tnetns_ino %u ", info->netns.netns_ino);
778 show_link_attach_type_plain(info->netns.attach_type);
781 netfilter_dump_plain(info);
785 show_link_ifindex_plain(info->tcx.ifindex);
786 show_link_attach_type_plain(info->tcx.attach_type);
790 show_link_ifindex_plain(info->xdp.ifindex);
793 show_kprobe_multi_plain(info);
796 switch (info->perf_event.type) {
798 show_perf_event_event_plain(info);
801 show_perf_event_tracepoint_plain(info);
805 show_perf_event_kprobe_plain(info);
809 show_perf_event_uprobe_plain(info);
822 hashmap__for_each_key_entry(link_table, entry, info->id)
825 emit_obj_refs_plain(refs_table, info->id, "\n\tpids ");
834 struct bpf_link_info info;
835 __u32 len = sizeof(info);
841 memset(&info, 0, sizeof(info));
844 err = bpf_link_get_info_by_fd(fd, &info, &len);
846 p_err("can't get link info: %s",
851 if (info.type == BPF_LINK_TYPE_RAW_TRACEPOINT &&
852 !info.raw_tracepoint.tp_name) {
853 info.raw_tracepoint.tp_name = ptr_to_u64(&buf);
854 info.raw_tracepoint.tp_name_len = sizeof(buf);
857 if (info.type == BPF_LINK_TYPE_ITER &&
858 !info.iter.target_name) {
859 info.iter.target_name = ptr_to_u64(&buf);
860 info.iter.target_name_len = sizeof(buf);
863 if (info.type == BPF_LINK_TYPE_KPROBE_MULTI &&
864 !info.kprobe_multi.addrs) {
865 count = info.kprobe_multi.count;
873 info.kprobe_multi.addrs = ptr_to_u64(addrs);
877 if (info.type == BPF_LINK_TYPE_PERF_EVENT) {
878 switch (info.perf_event.type) {
880 if (!info.perf_event.tracepoint.tp_name) {
881 info.perf_event.tracepoint.tp_name = ptr_to_u64(&buf);
882 info.perf_event.tracepoint.name_len = sizeof(buf);
888 if (!info.perf_event.kprobe.func_name) {
889 info.perf_event.kprobe.func_name = ptr_to_u64(&buf);
890 info.perf_event.kprobe.name_len = sizeof(buf);
896 if (!info.perf_event.uprobe.file_name) {
897 info.perf_event.uprobe.file_name = ptr_to_u64(&buf);
898 info.perf_event.uprobe.name_len = sizeof(buf);
908 show_link_close_json(fd, &info);
910 show_link_close_plain(fd, &info);