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.