
Add "bpftool net" support. Networking devices are enumerated to dump device index/name associated with xdp progs. For each networking device, tc classes and qdiscs are enumerated in order to check their bpf filters. In addition, root handle and clsact ingress/egress are also checked for bpf filters. Not all filter information is printed out. Only ifindex, kind, filter name, prog_id and tag are printed out, which are good enough to show attachment information. If the filter action is a bpf action, its bpf program id, bpf name and tag will be printed out as well. For example, $ ./bpftool net xdp [ ifindex 2 devname eth0 prog_id 198 ] tc_filters [ ifindex 2 kind qdisc_htb name prefix_matcher.o:[cls_prefix_matcher_htb] prog_id 111727 tag d08fe3b4319bc2fd act [] ifindex 2 kind qdisc_clsact_ingress name fbflow_icmp prog_id 130246 tag 3f265c7f26db62c9 act [] ifindex 2 kind qdisc_clsact_egress name prefix_matcher.o:[cls_prefix_matcher_clsact] prog_id 111726 tag 99a197826974c876 ifindex 2 kind qdisc_clsact_egress name cls_fg_dscp prog_id 108619 tag dc4630674fd72dcc act [] ifindex 2 kind qdisc_clsact_egress name fbflow_egress prog_id 130245 tag 72d2d830d6888d2c ] $ ./bpftool -jp net [{ "xdp": [{ "ifindex": 2, "devname": "eth0", "prog_id": 198 } ], "tc_filters": [{ "ifindex": 2, "kind": "qdisc_htb", "name": "prefix_matcher.o:[cls_prefix_matcher_htb]", "prog_id": 111727, "tag": "d08fe3b4319bc2fd", "act": [] },{ "ifindex": 2, "kind": "qdisc_clsact_ingress", "name": "fbflow_icmp", "prog_id": 130246, "tag": "3f265c7f26db62c9", "act": [] },{ "ifindex": 2, "kind": "qdisc_clsact_egress", "name": "prefix_matcher.o:[cls_prefix_matcher_clsact]", "prog_id": 111726, "tag": "99a197826974c876" },{ "ifindex": 2, "kind": "qdisc_clsact_egress", "name": "cls_fg_dscp", "prog_id": 108619, "tag": "dc4630674fd72dcc", "act": [] },{ "ifindex": 2, "kind": "qdisc_clsact_egress", "name": "fbflow_egress", "prog_id": 130245, "tag": "72d2d830d6888d2c" } ] } ] Signed-off-by: Yonghong Song <yhs@fb.com> Signed-off-by: Alexei Starovoitov <ast@kernel.org>
134 lines
4.0 KiB
ReStructuredText
134 lines
4.0 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 all networking device driver and tc attachment in the system.
|
|
|
|
Output will start with all xdp program attachment, 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 [
|
|
ifindex 2 devname eth0 prog_id 198
|
|
]
|
|
tc_filters [
|
|
ifindex 2 kind qdisc_htb name prefix_matcher.o:[cls_prefix_matcher_htb]
|
|
prog_id 111727 tag d08fe3b4319bc2fd act []
|
|
ifindex 2 kind qdisc_clsact_ingress name fbflow_icmp
|
|
prog_id 130246 tag 3f265c7f26db62c9 act []
|
|
ifindex 2 kind qdisc_clsact_egress name prefix_matcher.o:[cls_prefix_matcher_clsact]
|
|
prog_id 111726 tag 99a197826974c876
|
|
ifindex 2 kind qdisc_clsact_egress name cls_fg_dscp
|
|
prog_id 108619 tag dc4630674fd72dcc act []
|
|
ifindex 2 kind qdisc_clsact_egress name fbflow_egress
|
|
prog_id 130245 tag 72d2d830d6888d2c
|
|
]
|
|
|
|
|
|
|
| **# bpftool -jp net**
|
|
|
|
::
|
|
|
|
[{
|
|
"xdp": [{
|
|
"ifindex": 2,
|
|
"devname": "eth0",
|
|
"prog_id": 198
|
|
}
|
|
],
|
|
"tc_filters": [{
|
|
"ifindex": 2,
|
|
"kind": "qdisc_htb",
|
|
"name": "prefix_matcher.o:[cls_prefix_matcher_htb]",
|
|
"prog_id": 111727,
|
|
"tag": "d08fe3b4319bc2fd",
|
|
"act": []
|
|
},{
|
|
"ifindex": 2,
|
|
"kind": "qdisc_clsact_ingress",
|
|
"name": "fbflow_icmp",
|
|
"prog_id": 130246,
|
|
"tag": "3f265c7f26db62c9",
|
|
"act": []
|
|
},{
|
|
"ifindex": 2,
|
|
"kind": "qdisc_clsact_egress",
|
|
"name": "prefix_matcher.o:[cls_prefix_matcher_clsact]",
|
|
"prog_id": 111726,
|
|
"tag": "99a197826974c876"
|
|
},{
|
|
"ifindex": 2,
|
|
"kind": "qdisc_clsact_egress",
|
|
"name": "cls_fg_dscp",
|
|
"prog_id": 108619,
|
|
"tag": "dc4630674fd72dcc",
|
|
"act": []
|
|
},{
|
|
"ifindex": 2,
|
|
"kind": "qdisc_clsact_egress",
|
|
"name": "fbflow_egress",
|
|
"prog_id": 130245,
|
|
"tag": "72d2d830d6888d2c"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
|
|
|
|
SEE ALSO
|
|
========
|
|
**bpftool**\ (8), **bpftool-prog**\ (8), **bpftool-map**\ (8)
|