Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

contrib/bpf_inspect.py: abstract bpf classes #406

Merged
merged 5 commits into from
Jun 24, 2024

Conversation

Asphaltt
Copy link
Contributor

Abstract bpf classes and do some enhancement.

I've test it on 6.8 and 5.15 kernels.

Here's the enhanced result:

$ sudo drgn ./contrib/bpf_inspect.py p
     2: BPF_PROG_TYPE_TRACING            hid_tail_call
  2295: BPF_PROG_TYPE_EXT                entry                            tail_call_reachable
  2400: BPF_PROG_TYPE_EXT                entry                            tail_call_reachable

$ sudo drgn ./contrib/bpf_inspect.py m --show-details
  5108: BPF_MAP_TYPE_PROG_ARRAY          prog_array
	owner:    BPF_PROG_TYPE_KPROBE             JITed
	idx[  0]:   4250: BPF_PROG_TYPE_KPROBE             k_tailcall
	poke:       4249: BPF_PROG_TYPE_KPROBE             k_icsk_complete_hashdance        tail_call_reachable
	poke:       4251: BPF_PROG_TYPE_KPROBE             k_tcp_connect                    tail_call_reachable

$ sudo drgn ./contrib/bpf_inspect.py l --show-details
     1: BPF_LINK_TYPE_TRACING
	prog:        2: BPF_PROG_TYPE_TRACING            hid_tail_call
	attach:   __hid_bpf_tail_call
  1211: BPF_LINK_TYPE_TRACING
	prog:     4239: BPF_PROG_TYPE_TRACING            fentry_tc
	attach:   entry1
	target:   4235: BPF_PROG_TYPE_SCHED_CLS          entry1
  1212: BPF_LINK_TYPE_TRACING
	prog:     4240: BPF_PROG_TYPE_TRACING            fexit_tc
	attach:   entry1
	target:   4235: BPF_PROG_TYPE_SCHED_CLS          entry1
  1217: BPF_LINK_TYPE_TRACING
	prog:     4252: BPF_PROG_TYPE_TRACING            fentry_freplace_handler
	attach:   stub_handler
	target:   4251: BPF_PROG_TYPE_KPROBE             k_tcp_connect                    tail_call_reachable
  1218: BPF_LINK_TYPE_TRACING
	prog:     4253: BPF_PROG_TYPE_TRACING            fexit_freplace_handler
	attach:   stub_handler
	target:   4251: BPF_PROG_TYPE_KPROBE             k_tcp_connect                    tail_call_reachable
  1219: BPF_LINK_TYPE_PERF_EVENT
	prog:     4251: BPF_PROG_TYPE_KPROBE             k_tcp_connect                    tail_call_reachable
  1220: BPF_LINK_TYPE_PERF_EVENT
	prog:     4249: BPF_PROG_TYPE_KPROBE             k_icsk_complete_hashdance        tail_call_reachable

Asphaltt added 5 commits June 21, 2024 23:52
In order to inspect more and more info of bpf objects, this commit
abstracts classes, such as `BpfProg`, `BpfMap`, `BpfLink` and so on.

Signed-off-by: Leon Hwang <[email protected]>
Show "tail_call_reachable" if bpf prog is tail_call_reachable.

Signed-off-by: Leon Hwang <[email protected]>
When a link is XDP link, show ifname, ifindex and XDP mode, if --show-details.

Signed-off-by: Leon Hwang <[email protected]>
When run drgn on kernel v5.5~5.9, there is no `dst_trampoline` in `prog->
aux`. At this time, `tr` must be inited as `None` in order to avoid
panic when get `trampoline` from `prog->aux`.

Signed-off-by: Leon Hwang <[email protected]>
Currently, inspect details for PROG_ARRAY map.

For instance:

```bash
drgn ./contrib/bpf_inspect.py m --show-details
  5108: BPF_MAP_TYPE_PROG_ARRAY          prog_array
	owner:    BPF_PROG_TYPE_KPROBE             JITed
	idx[  0]:   4250: BPF_PROG_TYPE_KPROBE             k_tailcall
	poke:       4249: BPF_PROG_TYPE_KPROBE             k_icsk_complete_hashdance        tail_call_reachable
	poke:       4251: BPF_PROG_TYPE_KPROBE             k_tcp_connect                    tail_call_reachable
```

Signed-off-by: Leon Hwang <[email protected]>
@osandov osandov merged commit 0b5bbda into osandov:main Jun 24, 2024
32 of 33 checks passed
@osandov
Copy link
Owner

osandov commented Jun 24, 2024

Thanks again!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants