[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20230824143959.1134019-4-liujian56@huawei.com>
Date: Thu, 24 Aug 2023 22:39:55 +0800
From: Liu Jian <liujian56@...wei.com>
To: <john.fastabend@...il.com>, <jakub@...udflare.com>, <ast@...nel.org>,
<daniel@...earbox.net>, <andrii@...nel.org>, <martin.lau@...ux.dev>,
<song@...nel.org>, <yonghong.song@...ux.dev>, <kpsingh@...nel.org>,
<sdf@...gle.com>, <haoluo@...gle.com>, <jolsa@...nel.org>,
<davem@...emloft.net>, <edumazet@...gle.com>, <kuba@...nel.org>,
<pabeni@...hat.com>, <dsahern@...nel.org>
CC: <netdev@...r.kernel.org>, <bpf@...r.kernel.org>, <liujian56@...wei.com>
Subject: [PATCH bpf-next v3 3/7] selftests/bpf: Add txmsg redir permanently test for sockmap
Add one test for txmsg redir permanently test for sockmap.
Signed-off-by: Liu Jian <liujian56@...wei.com>
---
.../selftests/bpf/progs/test_sockmap_kern.h | 3 ++-
tools/testing/selftests/bpf/test_sockmap.c | 27 ++++++++++++++++---
2 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/tools/testing/selftests/bpf/progs/test_sockmap_kern.h b/tools/testing/selftests/bpf/progs/test_sockmap_kern.h
index 99d2ea9fb658..b0a2ddd55b83 100644
--- a/tools/testing/selftests/bpf/progs/test_sockmap_kern.h
+++ b/tools/testing/selftests/bpf/progs/test_sockmap_kern.h
@@ -298,8 +298,9 @@ int bpf_prog6(struct sk_msg_md *msg)
f = bpf_map_lookup_elem(&sock_redir_flags, &zero);
if (f && *f) {
- key = 2;
flags = *f;
+ if (flags & BPF_F_INGRESS)
+ key = 2;
}
#ifdef SOCKMAP
return bpf_msg_redirect_map(msg, &sock_map_redir, key, flags);
diff --git a/tools/testing/selftests/bpf/test_sockmap.c b/tools/testing/selftests/bpf/test_sockmap.c
index 845e1580e86e..c602ac8780a8 100644
--- a/tools/testing/selftests/bpf/test_sockmap.c
+++ b/tools/testing/selftests/bpf/test_sockmap.c
@@ -1166,14 +1166,27 @@ static int run_options(struct sockmap_options *options, int cg_fd, int test)
}
+ if (txmsg_permanent) {
+ int txmsg_flag = BPF_F_PERMANENT;
+
+ i = 0;
+ err = bpf_map_update_elem(map_fd[6], &i, &txmsg_flag, BPF_ANY);
+ if (err) {
+ fprintf(stderr,
+ "ERROR: bpf_map_update_elem (txmsg_permanent): %d (%s)\n",
+ err, strerror(errno));
+ goto out;
+ }
+ }
+
if (txmsg_ingress) {
- int in = BPF_F_INGRESS;
+ int txmsg_flag = BPF_F_INGRESS;
if (txmsg_permanent)
- in |= BPF_F_PERMANENT;
+ txmsg_flag |= BPF_F_PERMANENT;
i = 0;
- err = bpf_map_update_elem(map_fd[6], &i, &in, BPF_ANY);
+ err = bpf_map_update_elem(map_fd[6], &i, &txmsg_flag, BPF_ANY);
if (err) {
fprintf(stderr,
"ERROR: bpf_map_update_elem (txmsg_ingress): %d (%s)\n",
@@ -1490,6 +1503,13 @@ static void test_txmsg_redir(int cgrp, struct sockmap_options *opt)
test_send(opt, cgrp);
}
+static void test_txmsg_redir_permanent(int cgrp, struct sockmap_options *opt)
+{
+ txmsg_redir = 1;
+ txmsg_permanent = 1;
+ test_send(opt, cgrp);
+}
+
static void test_txmsg_redir_wait_sndmem(int cgrp, struct sockmap_options *opt)
{
txmsg_redir = 1;
@@ -1872,6 +1892,7 @@ static int populate_progs(char *bpf_file)
struct _test test[] = {
{"txmsg test passthrough", test_txmsg_pass},
{"txmsg test redirect", test_txmsg_redir},
+ {"txmsg test redirect permanent", test_txmsg_redir_permanent},
{"txmsg test redirect wait send mem", test_txmsg_redir_wait_sndmem},
{"txmsg test drop", test_txmsg_drop},
{"txmsg test ingress redirect", test_txmsg_ingress_redir},
--
2.34.1
Powered by blists - more mailing lists