[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <CACdoK4Ktf4HWtrDK9_k0yMXEg3G90qYiG9+65NbbSn3aSVaBTQ@mail.gmail.com>
Date: Wed, 29 Jun 2022 21:35:41 +0100
From: Quentin Monnet <quentin@...valent.com>
To: Daniel Müller <deso@...teo.net>
Cc: Alexei Starovoitov <ast@...nel.org>,
Daniel Borkmann <daniel@...earbox.net>,
Andrii Nakryiko <andrii@...nel.org>,
Martin KaFai Lau <kafai@...com>,
Song Liu <songliubraving@...com>, Yonghong Song <yhs@...com>,
John Fastabend <john.fastabend@...il.com>,
KP Singh <kpsingh@...nel.org>, bpf <bpf@...r.kernel.org>,
Networking <netdev@...r.kernel.org>
Subject: Re: [PATCH bpf-next 1/2] bpftool: Add feature list
(prog/map/link/attach types, helpers)
On Wed, 29 Jun 2022 at 18:33, Daniel Müller <deso@...teo.net> wrote:
>
> On Wed, Jun 29, 2022 at 03:40:18PM +0100, Quentin Monnet wrote:
> > Add a "bpftool feature list" subcommand to list BPF "features".
> > Contrarily to "bpftool feature probe", this is not about the features
> > available on the system. Instead, it lists all features known to bpftool
> > from compilation time; in other words, all program, map, attach, link
> > types known to the libbpf version in use, and all helpers found in the
> > UAPI BPF header.
> >
> > The first use case for this feature is bash completion: running the
> > command provides a list of types that can be used to produce the list of
> > candidate map types, for example.
> >
> > Now that bpftool uses "standard" names provided by libbpf for the
> > program, map, link, and attach types, having the ability to list these
> > types and helpers could also be useful in scripts to loop over existing
> > items.
> >
> > Sample output:
> >
> > # bpftool feature list prog_types | grep -vw unspec | head -n 6
> > socket_filter
> > kprobe
> > sched_cls
> > sched_act
> > tracepoint
> > xdp
> >
> > # bpftool -p feature list map_types | jq '.[1]'
> > "hash"
> >
> > # bpftool feature list attach_types | grep '^cgroup_'
> > cgroup_inet_ingress
> > cgroup_inet_egress
> > [...]
> > cgroup_inet_sock_release
> >
> > # bpftool feature list helpers | grep -vw bpf_unspec | wc -l
> > 207
> >
> > The "unspec" types and helpers are not filtered out by bpftool, so as to
> > remain closer to the enums, and to preserve the indices in the JSON
> > arrays (e.g. "hash" at index 1 == BPF_MAP_TYPE_HASH in map types list).
> >
> > Signed-off-by: Quentin Monnet <quentin@...valent.com>
> > ---
> > .../bpftool/Documentation/bpftool-feature.rst | 12 ++++
> > tools/bpf/bpftool/bash-completion/bpftool | 7 ++-
> > tools/bpf/bpftool/feature.c | 55 +++++++++++++++++++
> > 3 files changed, 73 insertions(+), 1 deletion(-)
> >
> > diff --git a/tools/bpf/bpftool/Documentation/bpftool-feature.rst b/tools/bpf/bpftool/Documentation/bpftool-feature.rst
> > index 4ce9a77bc1e0..4bf1724d0e8c 100644
> > --- a/tools/bpf/bpftool/Documentation/bpftool-feature.rst
> > +++ b/tools/bpf/bpftool/Documentation/bpftool-feature.rst
> > @@ -24,9 +24,11 @@ FEATURE COMMANDS
> > ================
> >
> > | **bpftool** **feature probe** [*COMPONENT*] [**full**] [**unprivileged**] [**macros** [**prefix** *PREFIX*]]
> > +| **bpftool** **feature list** *GROUP*
> > | **bpftool** **feature help**
> > |
> > | *COMPONENT* := { **kernel** | **dev** *NAME* }
> > +| *GROUP* := { **prog_types** | **map_types** | **attach_types** | **helpers** }
>
> Is **link_types** missing from this enumeration?
Yes of course, thanks for catching this. And for the review! v2 is on its way.
Quentin
Powered by blists - more mailing lists