Re: [PATCH bpf-next v2] tools/bpf: bpftool: improve output format for bpftool net

2018-09-18 Thread Daniel Borkmann
On 09/18/2018 01:13 AM, Yonghong Song wrote:
> This is a followup patch for Commit f6f3bac08ff9
> ("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 

Applied to bpf-next, thanks!


[PATCH bpf-next v2] tools/bpf: bpftool: improve output format for bpftool net

2018-09-17 Thread Yonghong Song
This is a followup patch for Commit f6f3bac08ff9
("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 
---
 .../bpf/bpftool/Documentation/bpftool-net.rst |  78 +++--
 tools/bpf/bpftool/main.h  |   3 +-
 tools/bpf/bpftool/net.c   | 103 --
 tools/bpf/bpftool/netlink_dumper.c|  85 +++
 tools/bpf/bpftool/netlink_dumper.h|  22 ++--
 5 files changed, 161 insertions(+), 130 deletions(-)

Changelogs:
 v1 -> v2:
. Addressed several output format suggestions from Daniel

diff --git a/tools/bpf/bpftool/Documentation/bpftool-net.rst 
b/tools/bpf/bpftool/Documentation/bpftool-net.rst
index 48a61837a264..408ec30d8872 100644
--- a/tools/bpf/bpftool/Documentation/bpftool-net.rst
+++ b/tools/bpf/bpftool/Documentation/bpftool-net.rst
@@ -26,9 +26,20 @@ NET COMMANDS
 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
+  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**,
@@ -61,21 +72,15 @@ EXAMPLES
 
 ::
 
-  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 []
-