From: Rong Tao rongtao@cestc.cn
commit 472caa69183f("netfilter: nat: un-export nf_nat_used_tuple") introduce NF_NAT_MANIP_SRC/DST enum in include/net/netfilter/nf_nat.h, and commit b06b45e82b59("selftests/bpf: add tests for bpf_ct_set_nat_info kfunc") use NF_NAT_MANIP_SRC/DST in test_bpf_nf.c. We copy enum nf_nat_manip_type to test_bpf_nf.c fix this error.
How to reproduce the error:
$ make -C tools/testing/selftests/bpf/ ... CLNG-BPF [test_maps] test_bpf_nf.bpf.o error: use of undeclared identifier 'NF_NAT_MANIP_SRC' bpf_ct_set_nat_info(ct, &saddr, sport, NF_NAT_MANIP_SRC); ^ error: use of undeclared identifier 'NF_NAT_MANIP_DST' bpf_ct_set_nat_info(ct, &daddr, dport, NF_NAT_MANIP_DST); ^ 2 errors generated.
Link: https://lore.kernel.org/lkml/202210280447.STsT1gvq-lkp@intel.com/ Reported-by: kernel test robot lkp@intel.com Signed-off-by: Rong Tao rongtao@cestc.cn --- 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 227e85e85dda..307ca166ff34 100644 --- a/tools/testing/selftests/bpf/progs/test_bpf_nf.c +++ b/tools/testing/selftests/bpf/progs/test_bpf_nf.c @@ -3,6 +3,11 @@ #include <bpf/bpf_helpers.h> #include <bpf/bpf_endian.h>
+enum nf_nat_manip_type { + NF_NAT_MANIP_SRC, + NF_NAT_MANIP_DST +}; + #define EAFNOSUPPORT 97 #define EPROTO 71 #define ENONET 64
On 11/11, Rong Tao wrote:
From: Rong Tao rongtao@cestc.cn
commit 472caa69183f("netfilter: nat: un-export nf_nat_used_tuple") introduce NF_NAT_MANIP_SRC/DST enum in include/net/netfilter/nf_nat.h, and commit b06b45e82b59("selftests/bpf: add tests for bpf_ct_set_nat_info kfunc") use NF_NAT_MANIP_SRC/DST in test_bpf_nf.c. We copy enum nf_nat_manip_type to test_bpf_nf.c fix this error.
How to reproduce the error:
$ make -C tools/testing/selftests/bpf/ ... CLNG-BPF [test_maps] test_bpf_nf.bpf.o error: use of undeclared identifier 'NF_NAT_MANIP_SRC' bpf_ct_set_nat_info(ct, &saddr, sport, NF_NAT_MANIP_SRC); ^ error: use of undeclared identifier 'NF_NAT_MANIP_DST' bpf_ct_set_nat_info(ct, &daddr, dport, NF_NAT_MANIP_DST); ^ 2 errors generated.
$ grep NF_NAT_MANIP_SRC ./tools/testing/selftests/bpf/tools/include/vmlinux.h NF_NAT_MANIP_SRC = 0,
Doesn't look like your kernel config compiles netfilter nat modules?
Link: https://lore.kernel.org/lkml/202210280447.STsT1gvq-lkp@intel.com/ Reported-by: kernel test robot lkp@intel.com Signed-off-by: Rong Tao rongtao@cestc.cn
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 227e85e85dda..307ca166ff34 100644 --- a/tools/testing/selftests/bpf/progs/test_bpf_nf.c +++ b/tools/testing/selftests/bpf/progs/test_bpf_nf.c @@ -3,6 +3,11 @@ #include <bpf/bpf_helpers.h> #include <bpf/bpf_endian.h>
+enum nf_nat_manip_type {
- NF_NAT_MANIP_SRC,
- NF_NAT_MANIP_DST
+};
- #define EAFNOSUPPORT 97 #define EPROTO 71 #define ENONET 64
-- 2.31.1
On 11/11, Rong Tao wrote:
From: Rong Tao rongtao@cestc.cn
commit 472caa69183f("netfilter: nat: un-export nf_nat_used_tuple") introduce NF_NAT_MANIP_SRC/DST enum in include/net/netfilter/nf_nat.h, and commit b06b45e82b59("selftests/bpf: add tests for bpf_ct_set_nat_info kfunc") use NF_NAT_MANIP_SRC/DST in test_bpf_nf.c. We copy enum nf_nat_manip_type to test_bpf_nf.c fix this error.
How to reproduce the error:
$ make -C tools/testing/selftests/bpf/ ... CLNG-BPF [test_maps] test_bpf_nf.bpf.o error: use of undeclared identifier 'NF_NAT_MANIP_SRC' bpf_ct_set_nat_info(ct, &saddr, sport, NF_NAT_MANIP_SRC); ^ error: use of undeclared identifier 'NF_NAT_MANIP_DST' bpf_ct_set_nat_info(ct, &daddr, dport, NF_NAT_MANIP_DST); ^ 2 errors generated.
$ grep NF_NAT_MANIP_SRC ./tools/testing/selftests/bpf/tools/include/vmlinux.h NF_NAT_MANIP_SRC = 0,
Doesn't look like your kernel config compiles netfilter nat modules?
yes, in bpf kself-test config (tools/testing/selftests/bpf/config) nf_nat is compiled as built-in. This issue occurs just if it is compiled as module.
Regards, Lorenzo
Link: https://lore.kernel.org/lkml/202210280447.STsT1gvq-lkp@intel.com/ Reported-by: kernel test robot lkp@intel.com Signed-off-by: Rong Tao rongtao@cestc.cn
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 227e85e85dda..307ca166ff34 100644 --- a/tools/testing/selftests/bpf/progs/test_bpf_nf.c +++ b/tools/testing/selftests/bpf/progs/test_bpf_nf.c @@ -3,6 +3,11 @@ #include <bpf/bpf_helpers.h> #include <bpf/bpf_endian.h>
+enum nf_nat_manip_type {
- NF_NAT_MANIP_SRC,
- NF_NAT_MANIP_DST
+};
- #define EAFNOSUPPORT 97 #define EPROTO 71 #define ENONET 64
-- 2.31.1
On Fri, Nov 11, 2022 at 9:54 AM Lorenzo Bianconi lorenzo@kernel.org wrote:
On 11/11, Rong Tao wrote:
From: Rong Tao rongtao@cestc.cn
commit 472caa69183f("netfilter: nat: un-export nf_nat_used_tuple") introduce NF_NAT_MANIP_SRC/DST enum in include/net/netfilter/nf_nat.h, and commit b06b45e82b59("selftests/bpf: add tests for bpf_ct_set_nat_info kfunc") use NF_NAT_MANIP_SRC/DST in test_bpf_nf.c. We copy enum nf_nat_manip_type to test_bpf_nf.c fix this error.
How to reproduce the error:
$ make -C tools/testing/selftests/bpf/ ... CLNG-BPF [test_maps] test_bpf_nf.bpf.o error: use of undeclared identifier 'NF_NAT_MANIP_SRC' bpf_ct_set_nat_info(ct, &saddr, sport, NF_NAT_MANIP_SRC); ^ error: use of undeclared identifier 'NF_NAT_MANIP_DST' bpf_ct_set_nat_info(ct, &daddr, dport, NF_NAT_MANIP_DST); ^ 2 errors generated.
$ grep NF_NAT_MANIP_SRC ./tools/testing/selftests/bpf/tools/include/vmlinux.h NF_NAT_MANIP_SRC = 0,
Doesn't look like your kernel config compiles netfilter nat modules?
yes, in bpf kself-test config (tools/testing/selftests/bpf/config) nf_nat is compiled as built-in. This issue occurs just if it is compiled as module.
Right, but if we unconditionally define this enum, I think you'll break the case where it's compiled as a built-in? Since at least in my vmlinux.h I have all the defines and this test includes vmlinux.h...
Regards, Lorenzo
Link: https://lore.kernel.org/lkml/202210280447.STsT1gvq-lkp@intel.com/ Reported-by: kernel test robot lkp@intel.com Signed-off-by: Rong Tao rongtao@cestc.cn
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 227e85e85dda..307ca166ff34 100644 --- a/tools/testing/selftests/bpf/progs/test_bpf_nf.c +++ b/tools/testing/selftests/bpf/progs/test_bpf_nf.c @@ -3,6 +3,11 @@ #include <bpf/bpf_helpers.h> #include <bpf/bpf_endian.h>
+enum nf_nat_manip_type {
- NF_NAT_MANIP_SRC,
- NF_NAT_MANIP_DST
+};
- #define EAFNOSUPPORT 97 #define EPROTO 71 #define ENONET 64
-- 2.31.1
On Fri, Nov 11, 2022 at 9:54 AM Lorenzo Bianconi lorenzo@kernel.org wrote:
On 11/11, Rong Tao wrote:
From: Rong Tao rongtao@cestc.cn
commit 472caa69183f("netfilter: nat: un-export nf_nat_used_tuple") introduce NF_NAT_MANIP_SRC/DST enum in include/net/netfilter/nf_nat.h, and commit b06b45e82b59("selftests/bpf: add tests for bpf_ct_set_nat_info kfunc") use NF_NAT_MANIP_SRC/DST in test_bpf_nf.c. We copy enum nf_nat_manip_type to test_bpf_nf.c fix this error.
How to reproduce the error:
$ make -C tools/testing/selftests/bpf/ ... CLNG-BPF [test_maps] test_bpf_nf.bpf.o error: use of undeclared identifier 'NF_NAT_MANIP_SRC' bpf_ct_set_nat_info(ct, &saddr, sport, NF_NAT_MANIP_SRC); ^ error: use of undeclared identifier 'NF_NAT_MANIP_DST' bpf_ct_set_nat_info(ct, &daddr, dport, NF_NAT_MANIP_DST); ^ 2 errors generated.
$ grep NF_NAT_MANIP_SRC ./tools/testing/selftests/bpf/tools/include/vmlinux.h NF_NAT_MANIP_SRC = 0,
Doesn't look like your kernel config compiles netfilter nat modules?
yes, in bpf kself-test config (tools/testing/selftests/bpf/config) nf_nat is compiled as built-in. This issue occurs just if it is compiled as module.
Right, but if we unconditionally define this enum, I think you'll break the case where it's compiled as a built-in? Since at least in my vmlinux.h I have all the defines and this test includes vmlinux.h...
yes, it is correct.
Regards, Lorenzo
Link: https://lore.kernel.org/lkml/202210280447.STsT1gvq-lkp@intel.com/ Reported-by: kernel test robot lkp@intel.com Signed-off-by: Rong Tao rongtao@cestc.cn
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 227e85e85dda..307ca166ff34 100644 --- a/tools/testing/selftests/bpf/progs/test_bpf_nf.c +++ b/tools/testing/selftests/bpf/progs/test_bpf_nf.c @@ -3,6 +3,11 @@ #include <bpf/bpf_helpers.h> #include <bpf/bpf_endian.h>
+enum nf_nat_manip_type {
- NF_NAT_MANIP_SRC,
- NF_NAT_MANIP_DST
+};
- #define EAFNOSUPPORT 97 #define EPROTO 71 #define ENONET 64
-- 2.31.1
On Fri, Nov 11, 2022 at 10:12 AM Lorenzo Bianconi lorenzo@kernel.org wrote:
On Fri, Nov 11, 2022 at 9:54 AM Lorenzo Bianconi lorenzo@kernel.org wrote:
On 11/11, Rong Tao wrote:
From: Rong Tao rongtao@cestc.cn
commit 472caa69183f("netfilter: nat: un-export nf_nat_used_tuple") introduce NF_NAT_MANIP_SRC/DST enum in include/net/netfilter/nf_nat.h, and commit b06b45e82b59("selftests/bpf: add tests for bpf_ct_set_nat_info kfunc") use NF_NAT_MANIP_SRC/DST in test_bpf_nf.c. We copy enum nf_nat_manip_type to test_bpf_nf.c fix this error.
How to reproduce the error:
$ make -C tools/testing/selftests/bpf/ ... CLNG-BPF [test_maps] test_bpf_nf.bpf.o error: use of undeclared identifier 'NF_NAT_MANIP_SRC' bpf_ct_set_nat_info(ct, &saddr, sport, NF_NAT_MANIP_SRC); ^ error: use of undeclared identifier 'NF_NAT_MANIP_DST' bpf_ct_set_nat_info(ct, &daddr, dport, NF_NAT_MANIP_DST); ^ 2 errors generated.
$ grep NF_NAT_MANIP_SRC ./tools/testing/selftests/bpf/tools/include/vmlinux.h NF_NAT_MANIP_SRC = 0,
Doesn't look like your kernel config compiles netfilter nat modules?
yes, in bpf kself-test config (tools/testing/selftests/bpf/config) nf_nat is compiled as built-in. This issue occurs just if it is compiled as module.
Right, but if we unconditionally define this enum, I think you'll break the case where it's compiled as a built-in? Since at least in my vmlinux.h I have all the defines and this test includes vmlinux.h...
yes, it is correct.
And it will break the CI:
$ grep NETFILTER tools/testing/selftests/bpf/config CONFIG_NETFILTER=y
So yeah, not sure what to do here. The selftests expect "sane" configs (see that bpf/config above) which is not what the bot seems to be doing...
Regards, Lorenzo
Link: https://lore.kernel.org/lkml/202210280447.STsT1gvq-lkp@intel.com/ Reported-by: kernel test robot lkp@intel.com Signed-off-by: Rong Tao rongtao@cestc.cn
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 227e85e85dda..307ca166ff34 100644 --- a/tools/testing/selftests/bpf/progs/test_bpf_nf.c +++ b/tools/testing/selftests/bpf/progs/test_bpf_nf.c @@ -3,6 +3,11 @@ #include <bpf/bpf_helpers.h> #include <bpf/bpf_endian.h>
+enum nf_nat_manip_type {
- NF_NAT_MANIP_SRC,
- NF_NAT_MANIP_DST
+};
- #define EAFNOSUPPORT 97 #define EPROTO 71 #define ENONET 64
-- 2.31.1
On Fri, Nov 11, 2022 at 10:55 AM Stanislav Fomichev sdf@google.com wrote:
On Fri, Nov 11, 2022 at 10:12 AM Lorenzo Bianconi lorenzo@kernel.org wrote:
On Fri, Nov 11, 2022 at 9:54 AM Lorenzo Bianconi lorenzo@kernel.org wrote:
On 11/11, Rong Tao wrote:
From: Rong Tao rongtao@cestc.cn
commit 472caa69183f("netfilter: nat: un-export nf_nat_used_tuple") introduce NF_NAT_MANIP_SRC/DST enum in include/net/netfilter/nf_nat.h, and commit b06b45e82b59("selftests/bpf: add tests for bpf_ct_set_nat_info kfunc") use NF_NAT_MANIP_SRC/DST in test_bpf_nf.c. We copy enum nf_nat_manip_type to test_bpf_nf.c fix this error.
How to reproduce the error:
$ make -C tools/testing/selftests/bpf/ ... CLNG-BPF [test_maps] test_bpf_nf.bpf.o error: use of undeclared identifier 'NF_NAT_MANIP_SRC' bpf_ct_set_nat_info(ct, &saddr, sport, NF_NAT_MANIP_SRC); ^ error: use of undeclared identifier 'NF_NAT_MANIP_DST' bpf_ct_set_nat_info(ct, &daddr, dport, NF_NAT_MANIP_DST); ^ 2 errors generated.
$ grep NF_NAT_MANIP_SRC ./tools/testing/selftests/bpf/tools/include/vmlinux.h NF_NAT_MANIP_SRC = 0,
Doesn't look like your kernel config compiles netfilter nat modules?
yes, in bpf kself-test config (tools/testing/selftests/bpf/config) nf_nat is compiled as built-in. This issue occurs just if it is compiled as module.
Right, but if we unconditionally define this enum, I think you'll break the case where it's compiled as a built-in? Since at least in my vmlinux.h I have all the defines and this test includes vmlinux.h...
yes, it is correct.
And it will break the CI:
It does break CI ([0]). We could use BPF CO-RE and ___suffix rule to avoid this. But we can also say that selftests/bpf/config{,<arch>} has to be used by bots that want to build BPF selftests.
[0] https://github.com/kernel-patches/bpf/actions/runs/3446651033/jobs/575259286...
$ grep NETFILTER tools/testing/selftests/bpf/config CONFIG_NETFILTER=y
So yeah, not sure what to do here. The selftests expect "sane" configs (see that bpf/config above) which is not what the bot seems to be doing...
Regards, Lorenzo
Link: https://lore.kernel.org/lkml/202210280447.STsT1gvq-lkp@intel.com/ Reported-by: kernel test robot lkp@intel.com Signed-off-by: Rong Tao rongtao@cestc.cn
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 227e85e85dda..307ca166ff34 100644 --- a/tools/testing/selftests/bpf/progs/test_bpf_nf.c +++ b/tools/testing/selftests/bpf/progs/test_bpf_nf.c @@ -3,6 +3,11 @@ #include <bpf/bpf_helpers.h> #include <bpf/bpf_endian.h>
+enum nf_nat_manip_type {
- NF_NAT_MANIP_SRC,
- NF_NAT_MANIP_DST
+};
- #define EAFNOSUPPORT 97 #define EPROTO 71 #define ENONET 64
-- 2.31.1
First of all, thank you all for your suggestions on this compilation issue.
It does break CI ([0]). We could use BPF CO-RE and ___suffix rule to avoid this. But we can also say that selftests/bpf/config{,<arch>} has to be used by bots that want to build BPF selftests.
[0] https://github.com/kernel-patches/bpf/actions/runs/3446651033/jobs/575259286...
I try to use bpf_core_enum_value_exists() and bpf_core_enum_value(), However, as far as my knowledge is concerned, I have to redefine a NF_NAT_MANIP_SRC enumeration, but this would conflict with the situation where there is no secondary compilation problem. How do I fix this with CO-RE, it seems that there is no similar CO-RE+ __suffix solution for enumerations in selftests. Can you give me some tips or help me?
linux-kselftest-mirror@lists.linaro.org