lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
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

Powered by Openwall GNU/*/Linux Powered by OpenVZ