summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorMartin KaFai Lau <martin.lau@kernel.org>2022-12-06 22:35:54 +0300
committerAlexei Starovoitov <ast@kernel.org>2022-12-06 23:42:38 +0300
commitaa67961f3243dfff26c47769f87b4d94b07ec71f (patch)
tree44da0e18495e15d321e6ea98274a51d16fac3a6d /tools
parentfa55ef14ef4fe06198c0ce811b603aec24134bc2 (diff)
downloadlinux-aa67961f3243dfff26c47769f87b4d94b07ec71f.tar.xz
selftests/bpf: Allow building bpf tests with CONFIG_XFRM_INTERFACE=[m|n]
It is useful to use vmlinux.h in the xfrm_info test like other kfunc tests do. In particular, it is common for kfunc bpf prog that requires to use other core kernel structures in vmlinux.h Although vmlinux.h is preferred, it needs a ___local flavor of struct bpf_xfrm_info in order to build the bpf selftests when CONFIG_XFRM_INTERFACE=[m|n]. Cc: Eyal Birger <eyal.birger@gmail.com> Fixes: 90a3a05eb33f ("selftests/bpf: add xfrm_info tests") Signed-off-by: Martin KaFai Lau <martin.lau@kernel.org> Link: https://lore.kernel.org/r/20221206193554.1059757-1-martin.lau@linux.dev Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Diffstat (limited to 'tools')
-rw-r--r--tools/testing/selftests/bpf/progs/xfrm_info.c13
1 files changed, 9 insertions, 4 deletions
diff --git a/tools/testing/selftests/bpf/progs/xfrm_info.c b/tools/testing/selftests/bpf/progs/xfrm_info.c
index 3acedcdd962d..f6a501fbba2b 100644
--- a/tools/testing/selftests/bpf/progs/xfrm_info.c
+++ b/tools/testing/selftests/bpf/progs/xfrm_info.c
@@ -3,18 +3,23 @@
#include "bpf_tracing_net.h"
#include <bpf/bpf_helpers.h>
+struct bpf_xfrm_info___local {
+ u32 if_id;
+ int link;
+} __attribute__((preserve_access_index));
+
__u32 req_if_id;
__u32 resp_if_id;
int bpf_skb_set_xfrm_info(struct __sk_buff *skb_ctx,
- const struct bpf_xfrm_info *from) __ksym;
+ const struct bpf_xfrm_info___local *from) __ksym;
int bpf_skb_get_xfrm_info(struct __sk_buff *skb_ctx,
- struct bpf_xfrm_info *to) __ksym;
+ struct bpf_xfrm_info___local *to) __ksym;
SEC("tc")
int set_xfrm_info(struct __sk_buff *skb)
{
- struct bpf_xfrm_info info = { .if_id = req_if_id };
+ struct bpf_xfrm_info___local info = { .if_id = req_if_id };
return bpf_skb_set_xfrm_info(skb, &info) ? TC_ACT_SHOT : TC_ACT_UNSPEC;
}
@@ -22,7 +27,7 @@ int set_xfrm_info(struct __sk_buff *skb)
SEC("tc")
int get_xfrm_info(struct __sk_buff *skb)
{
- struct bpf_xfrm_info info = {};
+ struct bpf_xfrm_info___local info = {};
if (bpf_skb_get_xfrm_info(skb, &info) < 0)
return TC_ACT_SHOT;