Re: [PATCH bpf-next] selftests/bpf: Fix undeclared identifier build errors of test_bpf_nf.c

From: Eduard Zingerman
Date: Mon Jan 16 2023 - 07:30:36 EST


On Mon, 2023-01-16 at 12:55 +0800, Tiezhu Yang wrote:
> $ make -C tools/testing/selftests/bpf/
>
> CLNG-BPF [test_maps] test_bpf_nf.bpf.o
> progs/test_bpf_nf.c:160:42: error: use of undeclared identifier 'NF_NAT_MANIP_SRC'
> bpf_ct_set_nat_info(ct, &saddr, sport, NF_NAT_MANIP_SRC);
> ^
> progs/test_bpf_nf.c:163:42: error: use of undeclared identifier 'NF_NAT_MANIP_DST'
> bpf_ct_set_nat_info(ct, &daddr, dport, NF_NAT_MANIP_DST);
> ^
> 2 errors generated.
>
> Copy the definitions in include/net/netfilter/nf_nat.h to test_bpf_nf.c
> to fix the above build errors.
>
> Fixes: b06b45e82b59 ("selftests/bpf: add tests for bpf_ct_set_nat_info kfunc")
> Signed-off-by: Tiezhu Yang <yangtiezhu@xxxxxxxxxxx>
> ---
> tools/testing/selftests/bpf/progs/test_bpf_nf.c | 5 +++++
> 1 file changed, 5 insertions(+)
>
> diff --git a/tools/testing/selftests/bpf/progs/test_bpf_nf.c b/tools/testing/selftests/bpf/progs/test_bpf_nf.c
> index 227e85e..114f961 100644
> --- a/tools/testing/selftests/bpf/progs/test_bpf_nf.c
> +++ b/tools/testing/selftests/bpf/progs/test_bpf_nf.c
> @@ -34,6 +34,11 @@ __be16 dport = 0;
> int test_exist_lookup = -ENOENT;
> u32 test_exist_lookup_mark = 0;
>
> +enum nf_nat_manip_type {
> + NF_NAT_MANIP_SRC,
> + NF_NAT_MANIP_DST
> +};
> +

This is confusing, when I build the kernel/tests I get the declaration of
the "enum nf_nat_manip_type" from the vmlinux.h (which is included from test_bpf_nf.c).
Which means that this patch results in compilation error with my configuration.
Is there a chance that your kernel is configured without some necessary netfilter
configuration options? Have you tried this patch with BPF CI?

> struct nf_conn;
>
> struct bpf_ct_opts___local {