mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-23 19:13:15 +07:00
7900efc192
This is a followup patch for Commit f6f3bac08f
("tools/bpf: bpftool: add net support").
Some improvements are made for the bpftool net output.
Specially, plain output is more concise such that
per attachment should nicely fit in one line.
Compared to previous output, the prog tag is removed
since it can be easily obtained with program id.
Similar to xdp attachments, the device name is added
to tc attachments.
The bpf program attached through shared block
mechanism is supported as well.
$ ip link add dev v1 type veth peer name v2
$ tc qdisc add dev v1 ingress_block 10 egress_block 20 clsact
$ tc qdisc add dev v2 ingress_block 10 egress_block 20 clsact
$ tc filter add block 10 protocol ip prio 25 bpf obj bpf_shared.o sec ingress flowid 1:1
$ tc filter add block 20 protocol ip prio 30 bpf obj bpf_cyclic.o sec classifier flowid 1:1
$ bpftool net
xdp:
tc:
v2(7) clsact/ingress bpf_shared.o:[ingress] id 23
v2(7) clsact/egress bpf_cyclic.o:[classifier] id 24
v1(8) clsact/ingress bpf_shared.o:[ingress] id 23
v1(8) clsact/egress bpf_cyclic.o:[classifier] id 24
The documentation and "bpftool net help" are updated
to make it clear that current implementation only
supports xdp and tc attachments. For programs
attached to cgroups, "bpftool cgroup" can be used
to dump attachments. For other programs e.g.
sk_{filter,skb,msg,reuseport} and lwt/seg6,
iproute2 tools should be used.
The new output:
$ bpftool net
xdp:
eth0(2) driver id 198
tc:
eth0(2) clsact/ingress fbflow_icmp id 335 act [{icmp_action id 336}]
eth0(2) clsact/egress fbflow_egress id 334
$ bpftool -jp net
[{
"xdp": [{
"devname": "eth0",
"ifindex": 2,
"mode": "driver",
"id": 198
}
],
"tc": [{
"devname": "eth0",
"ifindex": 2,
"kind": "clsact/ingress",
"name": "fbflow_icmp",
"id": 335,
"act": [{
"name": "icmp_action",
"id": 336
}
]
},{
"devname": "eth0",
"ifindex": 2,
"kind": "clsact/egress",
"name": "fbflow_egress",
"id": 334
}
]
}
]
Signed-off-by: Yonghong Song <yhs@fb.com>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
140 lines
4.4 KiB
ReStructuredText
140 lines
4.4 KiB
ReStructuredText
================
|
|
bpftool-net
|
|
================
|
|
-------------------------------------------------------------------------------
|
|
tool for inspection of netdev/tc related bpf prog attachments
|
|
-------------------------------------------------------------------------------
|
|
|
|
:Manual section: 8
|
|
|
|
SYNOPSIS
|
|
========
|
|
|
|
**bpftool** [*OPTIONS*] **net** *COMMAND*
|
|
|
|
*OPTIONS* := { [{ **-j** | **--json** }] [{ **-p** | **--pretty** }] }
|
|
|
|
*COMMANDS* :=
|
|
{ **show** | **list** } [ **dev** name ] | **help**
|
|
|
|
NET COMMANDS
|
|
============
|
|
|
|
| **bpftool** **net { show | list } [ dev name ]**
|
|
| **bpftool** **net help**
|
|
|
|
DESCRIPTION
|
|
===========
|
|
**bpftool net { show | list } [ dev name ]**
|
|
List bpf program attachments in the kernel networking subsystem.
|
|
|
|
Currently, only device driver xdp attachments and tc filter
|
|
classification/action attachments are implemented, i.e., for
|
|
program types **BPF_PROG_TYPE_SCHED_CLS**,
|
|
**BPF_PROG_TYPE_SCHED_ACT** and **BPF_PROG_TYPE_XDP**.
|
|
For programs attached to a particular cgroup, e.g.,
|
|
**BPF_PROG_TYPE_CGROUP_SKB**, **BPF_PROG_TYPE_CGROUP_SOCK**,
|
|
**BPF_PROG_TYPE_SOCK_OPS** and **BPF_PROG_TYPE_CGROUP_SOCK_ADDR**,
|
|
users can use **bpftool cgroup** to dump cgroup attachments.
|
|
For sk_{filter, skb, msg, reuseport} and lwt/seg6
|
|
bpf programs, users should consult other tools, e.g., iproute2.
|
|
|
|
The current output will start with all xdp program attachments, followed by
|
|
all tc class/qdisc bpf program attachments. Both xdp programs and
|
|
tc programs are ordered based on ifindex number. If multiple bpf
|
|
programs attached to the same networking device through **tc filter**,
|
|
the order will be first all bpf programs attached to tc classes, then
|
|
all bpf programs attached to non clsact qdiscs, and finally all
|
|
bpf programs attached to root and clsact qdisc.
|
|
|
|
**bpftool net help**
|
|
Print short help message.
|
|
|
|
OPTIONS
|
|
=======
|
|
-h, --help
|
|
Print short generic help message (similar to **bpftool help**).
|
|
|
|
-v, --version
|
|
Print version number (similar to **bpftool version**).
|
|
|
|
-j, --json
|
|
Generate JSON output. For commands that cannot produce JSON, this
|
|
option has no effect.
|
|
|
|
-p, --pretty
|
|
Generate human-readable JSON output. Implies **-j**.
|
|
|
|
EXAMPLES
|
|
========
|
|
|
|
| **# bpftool net**
|
|
|
|
::
|
|
|
|
xdp:
|
|
eth0(2) driver id 198
|
|
|
|
tc:
|
|
eth0(2) htb name prefix_matcher.o:[cls_prefix_matcher_htb] id 111727 act []
|
|
eth0(2) clsact/ingress fbflow_icmp id 130246 act []
|
|
eth0(2) clsact/egress prefix_matcher.o:[cls_prefix_matcher_clsact] id 111726
|
|
eth0(2) clsact/egress cls_fg_dscp id 108619 act []
|
|
eth0(2) clsact/egress fbflow_egress id 130245
|
|
|
|
|
|
|
| **# bpftool -jp net**
|
|
|
|
::
|
|
|
|
[{
|
|
"xdp": [{
|
|
"devname": "eth0",
|
|
"ifindex": 2,
|
|
"mode": "driver",
|
|
"id": 198
|
|
}
|
|
],
|
|
"tc": [{
|
|
"devname": "eth0",
|
|
"ifindex": 2,
|
|
"kind": "htb",
|
|
"name": "prefix_matcher.o:[cls_prefix_matcher_htb]",
|
|
"id": 111727,
|
|
"act": []
|
|
},{
|
|
"devname": "eth0",
|
|
"ifindex": 2,
|
|
"kind": "clsact/ingress",
|
|
"name": "fbflow_icmp",
|
|
"id": 130246,
|
|
"act": []
|
|
},{
|
|
"devname": "eth0",
|
|
"ifindex": 2,
|
|
"kind": "clsact/egress",
|
|
"name": "prefix_matcher.o:[cls_prefix_matcher_clsact]",
|
|
"id": 111726,
|
|
},{
|
|
"devname": "eth0",
|
|
"ifindex": 2,
|
|
"kind": "clsact/egress",
|
|
"name": "cls_fg_dscp",
|
|
"id": 108619,
|
|
"act": []
|
|
},{
|
|
"devname": "eth0",
|
|
"ifindex": 2,
|
|
"kind": "clsact/egress",
|
|
"name": "fbflow_egress",
|
|
"id": 130245,
|
|
}
|
|
]
|
|
}
|
|
]
|
|
|
|
|
|
SEE ALSO
|
|
========
|
|
**bpftool**\ (8), **bpftool-prog**\ (8), **bpftool-map**\ (8)
|