Re: [PATCH testsuite] tests/bpf: use new API if version >= 0.6

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

 



On Fri, Feb 18, 2022 at 10:08 PM Ondrej Mosnacek <omosnace@xxxxxxxxxx> wrote:
> In version 0.7 the old API is deprecated and without this patch the
> testsuite fails to build with -Werror with this version.
>
> Signed-off-by: Ondrej Mosnacek <omosnace@xxxxxxxxxx>
> ---
>  tests/bpf/bpf_common.c | 27 +++++++++++++++++++++++----
>  1 file changed, 23 insertions(+), 4 deletions(-)
>
> diff --git a/tests/bpf/bpf_common.c b/tests/bpf/bpf_common.c
> index f499034..88aae2f 100644
> --- a/tests/bpf/bpf_common.c
> +++ b/tests/bpf/bpf_common.c
> @@ -1,12 +1,28 @@
>  #include "bpf_common.h"
>
> +/*
> + * v0.7 deprecates some functions in favor of a new API (introduced in v0.6).
> + * Make this work with both to satisfy -Werror (and older distros).
> + */
> +#if defined(LIBBPF_MAJOR_VERSION)
> +#if LIBBPF_MAJOR_VERSION > 0 || (LIBBPF_MAJOR_VERSION == 0 && \
> +       LIBBPF_MINOR_VERSION > 6)
> +#define USE_NEW_API
> +#endif
> +#endif
> +
>  int create_bpf_map(void)
>  {
>         int map_fd, key;
>         long long value = 0;
>
> +#ifdef USE_NEW_API
> +       map_fd = bpf_map_create(BPF_MAP_TYPE_ARRAY, NULL, sizeof(key),
> +                               sizeof(value), 256, NULL);
> +#else
>         map_fd = bpf_create_map(BPF_MAP_TYPE_ARRAY, sizeof(key),
>                                 sizeof(value), 256, 0);
> +#endif
>         if (map_fd < 0) {
>                 fprintf(stderr, "Failed to create BPF map: %s\n",
>                         strerror(errno));
> @@ -18,17 +34,20 @@ int create_bpf_map(void)
>
>  int create_bpf_prog(void)
>  {
> -       int prog_fd;
> -       size_t insns_cnt;
> -
>         struct bpf_insn prog[] = {
>                 BPF_MOV64_IMM(BPF_REG_0, 1),
>                 BPF_EXIT_INSN(),
>         };
> -       insns_cnt = sizeof(prog) / sizeof(struct bpf_insn);
> +       size_t insns_cnt = sizeof(prog) / sizeof(struct bpf_insn);
> +       int prog_fd;
>
> +#ifdef USE_NEW_API
> +       prog_fd = bpf_prog_load(BPF_PROG_TYPE_SOCKET_FILTER, NULL, "GPF",

Now merged, with the "General Protection Fault license" typo fixed :)

https://github.com/SELinuxProject/selinux-testsuite/commit/92c29366dffad9e8b1ef621d4fc07816ed121efe

> +                               prog, insns_cnt, NULL);
> +#else
>         prog_fd = bpf_load_program(BPF_PROG_TYPE_SOCKET_FILTER, prog,
>                                    insns_cnt, "GPL", 0, NULL, 0);
> +#endif
>
>         if (prog_fd < 0) {
>                 fprintf(stderr, "Failed to load BPF prog: %s\n",
> --
> 2.35.1
>


-- 
Ondrej Mosnacek
Software Engineer, Linux Security - SELinux kernel
Red Hat, Inc.




[Index of Archives]     [Selinux Refpolicy]     [Linux SGX]     [Fedora Users]     [Fedora Desktop]     [Yosemite Photos]     [Yosemite Camping]     [Yosemite Campsites]     [KDE Users]     [Gnome Users]

  Powered by Linux