Re: [PATCH bpf-next 1/2] bpftool: Add feature list (prog/map/link/attach types, helpers)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, 29 Jun 2022 at 18:33, Daniel Müller <deso@xxxxxxxxxx> 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@xxxxxxxxxxxxx>
> > ---
> >  .../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




[Index of Archives]     [Linux Samsung SoC]     [Linux Rockchip SoC]     [Linux Actions SoC]     [Linux for Synopsys ARC Processors]     [Linux NFS]     [Linux NILFS]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]


  Powered by Linux