* [PATCH bpf-next v3 09/12] selftests: bpf: don't listen() on UDP sockets
[not found] <20200304101318.5225-1-lmb@cloudflare.com>
@ 2020-03-04 10:13 ` Lorenz Bauer
2020-03-05 12:53 ` Jakub Sitnicki
2020-03-06 15:36 ` John Fastabend
2020-03-04 10:13 ` [PATCH bpf-next v3 10/12] selftests: bpf: add tests for UDP sockets in sockmap Lorenz Bauer
2020-03-04 10:13 ` [PATCH bpf-next v3 11/12] selftests: bpf: enable UDP sockmap reuseport tests Lorenz Bauer
2 siblings, 2 replies; 8+ messages in thread
From: Lorenz Bauer @ 2020-03-04 10:13 UTC (permalink / raw)
To: john.fastabend, Shuah Khan, Alexei Starovoitov, Daniel Borkmann
Cc: kernel-team, Lorenz Bauer, linux-kselftest, netdev, bpf, linux-kernel
Most tests for TCP sockmap can be adapted to UDP sockmap if the
listen call is skipped. Rename listen_loopback, etc. to socket_loopback
and skip listen() for SOCK_DGRAM.
Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
---
.../selftests/bpf/prog_tests/sockmap_listen.c | 47 ++++++++++---------
1 file changed, 25 insertions(+), 22 deletions(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c b/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c
index b1b2acea0638..4ba41dd26d6b 100644
--- a/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c
+++ b/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c
@@ -230,7 +230,7 @@ static int enable_reuseport(int s, int progfd)
return 0;
}
-static int listen_loopback_reuseport(int family, int sotype, int progfd)
+static int socket_loopback_reuseport(int family, int sotype, int progfd)
{
struct sockaddr_storage addr;
socklen_t len;
@@ -249,6 +249,9 @@ static int listen_loopback_reuseport(int family, int sotype, int progfd)
if (err)
goto close;
+ if (sotype == SOCK_DGRAM)
+ return s;
+
err = xlisten(s, SOMAXCONN);
if (err)
goto close;
@@ -259,9 +262,9 @@ static int listen_loopback_reuseport(int family, int sotype, int progfd)
return -1;
}
-static int listen_loopback(int family, int sotype)
+static int socket_loopback(int family, int sotype)
{
- return listen_loopback_reuseport(family, sotype, -1);
+ return socket_loopback_reuseport(family, sotype, -1);
}
static void test_insert_invalid(int family, int sotype, int mapfd)
@@ -333,7 +336,7 @@ static void test_insert_listening(int family, int sotype, int mapfd)
u32 key;
int s;
- s = listen_loopback(family, sotype);
+ s = socket_loopback(family, sotype);
if (s < 0)
return;
@@ -349,7 +352,7 @@ static void test_delete_after_insert(int family, int sotype, int mapfd)
u32 key;
int s;
- s = listen_loopback(family, sotype);
+ s = socket_loopback(family, sotype);
if (s < 0)
return;
@@ -366,7 +369,7 @@ static void test_delete_after_close(int family, int sotype, int mapfd)
u64 value;
u32 key;
- s = listen_loopback(family, sotype);
+ s = socket_loopback(family, sotype);
if (s < 0)
return;
@@ -390,7 +393,7 @@ static void test_lookup_after_insert(int family, int sotype, int mapfd)
u32 key;
int s;
- s = listen_loopback(family, sotype);
+ s = socket_loopback(family, sotype);
if (s < 0)
return;
@@ -417,7 +420,7 @@ static void test_lookup_after_delete(int family, int sotype, int mapfd)
u64 value;
u32 key;
- s = listen_loopback(family, sotype);
+ s = socket_loopback(family, sotype);
if (s < 0)
return;
@@ -439,7 +442,7 @@ static void test_lookup_32_bit_value(int family, int sotype, int mapfd)
u32 key, value32;
int err, s;
- s = listen_loopback(family, sotype);
+ s = socket_loopback(family, sotype);
if (s < 0)
return;
@@ -470,11 +473,11 @@ static void test_update_listening(int family, int sotype, int mapfd)
u64 value;
u32 key;
- s1 = listen_loopback(family, sotype);
+ s1 = socket_loopback(family, sotype);
if (s1 < 0)
return;
- s2 = listen_loopback(family, sotype);
+ s2 = socket_loopback(family, sotype);
if (s2 < 0)
goto close_s1;
@@ -500,7 +503,7 @@ static void test_destroy_orphan_child(int family, int sotype, int mapfd)
u64 value;
u32 key;
- s = listen_loopback(family, sotype);
+ s = socket_loopback(family, sotype);
if (s < 0)
return;
@@ -534,7 +537,7 @@ static void test_clone_after_delete(int family, int sotype, int mapfd)
u64 value;
u32 key;
- s = listen_loopback(family, sotype);
+ s = socket_loopback(family, sotype);
if (s < 0)
return;
@@ -570,7 +573,7 @@ static void test_accept_after_delete(int family, int sotype, int mapfd)
socklen_t len;
u64 value;
- s = listen_loopback(family, sotype);
+ s = socket_loopback(family, sotype);
if (s == -1)
return;
@@ -624,7 +627,7 @@ static void test_accept_before_delete(int family, int sotype, int mapfd)
socklen_t len;
u64 value;
- s = listen_loopback(family, sotype);
+ s = socket_loopback(family, sotype);
if (s == -1)
return;
@@ -735,7 +738,7 @@ static void test_syn_recv_insert_delete(int family, int sotype, int mapfd)
int err, s;
u64 value;
- s = listen_loopback(family, sotype | SOCK_NONBLOCK);
+ s = socket_loopback(family, sotype | SOCK_NONBLOCK);
if (s < 0)
return;
@@ -877,7 +880,7 @@ static void redir_to_connected(int family, int sotype, int sock_mapfd,
zero_verdict_count(verd_mapfd);
- s = listen_loopback(family, sotype | SOCK_NONBLOCK);
+ s = socket_loopback(family, sotype | SOCK_NONBLOCK);
if (s < 0)
return;
@@ -1009,7 +1012,7 @@ static void redir_to_listening(int family, int sotype, int sock_mapfd,
zero_verdict_count(verd_mapfd);
- s = listen_loopback(family, sotype | SOCK_NONBLOCK);
+ s = socket_loopback(family, sotype | SOCK_NONBLOCK);
if (s < 0)
return;
@@ -1120,7 +1123,7 @@ static void test_reuseport_select_listening(int family, int sotype,
zero_verdict_count(verd_map);
- s = listen_loopback_reuseport(family, sotype, reuseport_prog);
+ s = socket_loopback_reuseport(family, sotype, reuseport_prog);
if (s < 0)
return;
@@ -1174,7 +1177,7 @@ static void test_reuseport_select_connected(int family, int sotype,
zero_verdict_count(verd_map);
- s = listen_loopback_reuseport(family, sotype, reuseport_prog);
+ s = socket_loopback_reuseport(family, sotype, reuseport_prog);
if (s < 0)
return;
@@ -1249,11 +1252,11 @@ static void test_reuseport_mixed_groups(int family, int sotype, int sock_map,
zero_verdict_count(verd_map);
/* Create two listeners, each in its own reuseport group */
- s1 = listen_loopback_reuseport(family, sotype, reuseport_prog);
+ s1 = socket_loopback_reuseport(family, sotype, reuseport_prog);
if (s1 < 0)
return;
- s2 = listen_loopback_reuseport(family, sotype, reuseport_prog);
+ s2 = socket_loopback_reuseport(family, sotype, reuseport_prog);
if (s2 < 0)
goto close_srv1;
--
2.20.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH bpf-next v3 10/12] selftests: bpf: add tests for UDP sockets in sockmap
[not found] <20200304101318.5225-1-lmb@cloudflare.com>
2020-03-04 10:13 ` [PATCH bpf-next v3 09/12] selftests: bpf: don't listen() on UDP sockets Lorenz Bauer
@ 2020-03-04 10:13 ` Lorenz Bauer
2020-03-06 15:38 ` John Fastabend
2020-03-04 10:13 ` [PATCH bpf-next v3 11/12] selftests: bpf: enable UDP sockmap reuseport tests Lorenz Bauer
2 siblings, 1 reply; 8+ messages in thread
From: Lorenz Bauer @ 2020-03-04 10:13 UTC (permalink / raw)
To: john.fastabend, Shuah Khan, Alexei Starovoitov, Daniel Borkmann
Cc: kernel-team, Lorenz Bauer, Jakub Sitnicki, linux-kselftest,
netdev, bpf, linux-kernel
Expand the TCP sockmap test suite to also check UDP sockets.
Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
---
.../selftests/bpf/prog_tests/sockmap_listen.c | 157 ++++++++++++++----
1 file changed, 127 insertions(+), 30 deletions(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c b/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c
index 4ba41dd26d6b..52aa468bdccd 100644
--- a/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c
+++ b/tools/testing/selftests/bpf/prog_tests/sockmap_listen.c
@@ -108,6 +108,22 @@
__ret; \
})
+#define xsend(fd, buf, len, flags) \
+ ({ \
+ ssize_t __ret = send((fd), (buf), (len), (flags)); \
+ if (__ret == -1) \
+ FAIL_ERRNO("send"); \
+ __ret; \
+ })
+
+#define xrecv(fd, buf, len, flags) \
+ ({ \
+ ssize_t __ret = recv((fd), (buf), (len), (flags)); \
+ if (__ret == -1) \
+ FAIL_ERRNO("recv"); \
+ __ret; \
+ })
+
#define xsocket(family, sotype, flags) \
({ \
int __ret = socket(family, sotype, flags); \
@@ -330,7 +346,7 @@ static void test_insert_bound(int family, int sotype, int mapfd)
xclose(s);
}
-static void test_insert_listening(int family, int sotype, int mapfd)
+static void test_insert(int family, int sotype, int mapfd)
{
u64 value;
u32 key;
@@ -467,7 +483,7 @@ static void test_lookup_32_bit_value(int family, int sotype, int mapfd)
xclose(s);
}
-static void test_update_listening(int family, int sotype, int mapfd)
+static void test_update_existing(int family, int sotype, int mapfd)
{
int s1, s2;
u64 value;
@@ -1116,7 +1132,7 @@ static void test_reuseport_select_listening(int family, int sotype,
{
struct sockaddr_storage addr;
unsigned int pass;
- int s, c, p, err;
+ int s, c, err;
socklen_t len;
u64 value;
u32 key;
@@ -1145,19 +1161,33 @@ static void test_reuseport_select_listening(int family, int sotype,
if (err)
goto close_cli;
- p = xaccept(s, NULL, NULL);
- if (p < 0)
- goto close_cli;
+ if (sotype == SOCK_STREAM) {
+ int p;
+
+ p = xaccept(s, NULL, NULL);
+ if (p < 0)
+ goto close_cli;
+ xclose(p);
+ } else {
+ char b = 'a';
+ ssize_t n;
+
+ n = xsend(c, &b, sizeof(b), 0);
+ if (n == -1)
+ goto close_cli;
+
+ n = xrecv(s, &b, sizeof(b), 0);
+ if (n == -1)
+ goto close_cli;
+ }
key = SK_PASS;
err = xbpf_map_lookup_elem(verd_map, &key, &pass);
if (err)
- goto close_peer;
+ goto close_cli;
if (pass != 1)
FAIL("want pass count 1, have %d", pass);
-close_peer:
- xclose(p);
close_cli:
xclose(c);
close_srv:
@@ -1201,9 +1231,24 @@ static void test_reuseport_select_connected(int family, int sotype,
if (err)
goto close_cli0;
- p0 = xaccept(s, NULL, NULL);
- if (err)
- goto close_cli0;
+ if (sotype == SOCK_STREAM) {
+ p0 = xaccept(s, NULL, NULL);
+ if (p0 < 0)
+ goto close_cli0;
+ } else {
+ p0 = xsocket(family, sotype, 0);
+ if (p0 < 0)
+ goto close_cli0;
+
+ len = sizeof(addr);
+ err = xgetsockname(c0, sockaddr(&addr), &len);
+ if (err)
+ goto close_cli0;
+
+ err = xconnect(p0, sockaddr(&addr), len);
+ if (err)
+ goto close_cli0;
+ }
/* Update sock_map[0] to redirect to a connected socket */
key = 0;
@@ -1216,8 +1261,24 @@ static void test_reuseport_select_connected(int family, int sotype,
if (c1 < 0)
goto close_peer0;
+ len = sizeof(addr);
+ err = xgetsockname(s, sockaddr(&addr), &len);
+ if (err)
+ goto close_srv;
+
errno = 0;
err = connect(c1, sockaddr(&addr), len);
+ if (sotype == SOCK_DGRAM) {
+ char b = 'a';
+ ssize_t n;
+
+ n = xsend(c1, &b, sizeof(b), 0);
+ if (n == -1)
+ goto close_cli1;
+
+ n = recv(c1, &b, sizeof(b), 0);
+ err = n == -1;
+ }
if (!err || errno != ECONNREFUSED)
FAIL_ERRNO("connect: expected ECONNREFUSED");
@@ -1281,7 +1342,18 @@ static void test_reuseport_mixed_groups(int family, int sotype, int sock_map,
goto close_srv2;
err = connect(c, sockaddr(&addr), len);
- if (err && errno != ECONNREFUSED) {
+ if (sotype == SOCK_DGRAM) {
+ char b = 'a';
+ ssize_t n;
+
+ n = xsend(c, &b, sizeof(b), 0);
+ if (n == -1)
+ goto close_cli;
+
+ n = recv(c, &b, sizeof(b), 0);
+ err = n == -1;
+ }
+ if (!err || errno != ECONNREFUSED) {
FAIL_ERRNO("connect: expected ECONNREFUSED");
goto close_cli;
}
@@ -1302,9 +1374,9 @@ static void test_reuseport_mixed_groups(int family, int sotype, int sock_map,
xclose(s1);
}
-#define TEST(fn) \
+#define TEST(fn, ...) \
{ \
- fn, #fn \
+ fn, #fn, __VA_ARGS__ \
}
static void test_ops_cleanup(const struct bpf_map *map)
@@ -1353,18 +1425,31 @@ static const char *map_type_str(const struct bpf_map *map)
}
}
+static const char *sotype_str(int sotype)
+{
+ switch (sotype) {
+ case SOCK_DGRAM:
+ return "UDP";
+ case SOCK_STREAM:
+ return "TCP";
+ default:
+ return "unknown";
+ }
+}
+
static void test_ops(struct test_sockmap_listen *skel, struct bpf_map *map,
int family, int sotype)
{
const struct op_test {
void (*fn)(int family, int sotype, int mapfd);
const char *name;
+ int sotype;
} tests[] = {
/* insert */
TEST(test_insert_invalid),
TEST(test_insert_opened),
- TEST(test_insert_bound),
- TEST(test_insert_listening),
+ TEST(test_insert_bound, SOCK_STREAM),
+ TEST(test_insert),
/* delete */
TEST(test_delete_after_insert),
TEST(test_delete_after_close),
@@ -1373,28 +1458,32 @@ static void test_ops(struct test_sockmap_listen *skel, struct bpf_map *map,
TEST(test_lookup_after_delete),
TEST(test_lookup_32_bit_value),
/* update */
- TEST(test_update_listening),
+ TEST(test_update_existing),
/* races with insert/delete */
- TEST(test_destroy_orphan_child),
- TEST(test_syn_recv_insert_delete),
- TEST(test_race_insert_listen),
+ TEST(test_destroy_orphan_child, SOCK_STREAM),
+ TEST(test_syn_recv_insert_delete, SOCK_STREAM),
+ TEST(test_race_insert_listen, SOCK_STREAM),
/* child clone */
- TEST(test_clone_after_delete),
- TEST(test_accept_after_delete),
- TEST(test_accept_before_delete),
+ TEST(test_clone_after_delete, SOCK_STREAM),
+ TEST(test_accept_after_delete, SOCK_STREAM),
+ TEST(test_accept_before_delete, SOCK_STREAM),
};
- const char *family_name, *map_name;
+ const char *family_name, *map_name, *sotype_name;
const struct op_test *t;
char s[MAX_TEST_NAME];
int map_fd;
family_name = family_str(family);
map_name = map_type_str(map);
+ sotype_name = sotype_str(sotype);
map_fd = bpf_map__fd(map);
for (t = tests; t < tests + ARRAY_SIZE(tests); t++) {
- snprintf(s, sizeof(s), "%s %s %s", map_name, family_name,
- t->name);
+ snprintf(s, sizeof(s), "%s %s %s %s", map_name, family_name,
+ sotype_name, t->name);
+
+ if (t->sotype != 0 && t->sotype != sotype)
+ continue;
if (!test__start_subtest(s))
continue;
@@ -1427,6 +1516,7 @@ static void test_redir(struct test_sockmap_listen *skel, struct bpf_map *map,
for (t = tests; t < tests + ARRAY_SIZE(tests); t++) {
snprintf(s, sizeof(s), "%s %s %s", map_name, family_name,
t->name);
+
if (!test__start_subtest(s))
continue;
@@ -1441,26 +1531,31 @@ static void test_reuseport(struct test_sockmap_listen *skel,
void (*fn)(int family, int sotype, int socket_map,
int verdict_map, int reuseport_prog);
const char *name;
+ int sotype;
} tests[] = {
TEST(test_reuseport_select_listening),
TEST(test_reuseport_select_connected),
TEST(test_reuseport_mixed_groups),
};
int socket_map, verdict_map, reuseport_prog;
- const char *family_name, *map_name;
+ const char *family_name, *map_name, *sotype_name;
const struct reuseport_test *t;
char s[MAX_TEST_NAME];
family_name = family_str(family);
map_name = map_type_str(map);
+ sotype_name = sotype_str(sotype);
socket_map = bpf_map__fd(map);
verdict_map = bpf_map__fd(skel->maps.verdict_map);
reuseport_prog = bpf_program__fd(skel->progs.prog_reuseport);
for (t = tests; t < tests + ARRAY_SIZE(tests); t++) {
- snprintf(s, sizeof(s), "%s %s %s", map_name, family_name,
- t->name);
+ snprintf(s, sizeof(s), "%s %s %s %s", map_name, family_name,
+ sotype_name, t->name);
+
+ if (t->sotype != 0 && t->sotype != sotype)
+ continue;
if (!test__start_subtest(s))
continue;
@@ -1473,8 +1568,10 @@ static void run_tests(struct test_sockmap_listen *skel, struct bpf_map *map,
int family)
{
test_ops(skel, map, family, SOCK_STREAM);
+ test_ops(skel, map, family, SOCK_DGRAM);
test_redir(skel, map, family, SOCK_STREAM);
test_reuseport(skel, map, family, SOCK_STREAM);
+ test_reuseport(skel, map, family, SOCK_DGRAM);
}
void test_sockmap_listen(void)
--
2.20.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* [PATCH bpf-next v3 11/12] selftests: bpf: enable UDP sockmap reuseport tests
[not found] <20200304101318.5225-1-lmb@cloudflare.com>
2020-03-04 10:13 ` [PATCH bpf-next v3 09/12] selftests: bpf: don't listen() on UDP sockets Lorenz Bauer
2020-03-04 10:13 ` [PATCH bpf-next v3 10/12] selftests: bpf: add tests for UDP sockets in sockmap Lorenz Bauer
@ 2020-03-04 10:13 ` Lorenz Bauer
2020-03-05 12:56 ` Jakub Sitnicki
2020-03-06 15:39 ` John Fastabend
2 siblings, 2 replies; 8+ messages in thread
From: Lorenz Bauer @ 2020-03-04 10:13 UTC (permalink / raw)
To: john.fastabend, Shuah Khan, Alexei Starovoitov, Daniel Borkmann
Cc: kernel-team, Lorenz Bauer, linux-kselftest, netdev, bpf, linux-kernel
Remove the guard that disables UDP tests now that sockmap
has support for them.
Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
---
tools/testing/selftests/bpf/prog_tests/select_reuseport.c | 6 ------
1 file changed, 6 deletions(-)
diff --git a/tools/testing/selftests/bpf/prog_tests/select_reuseport.c b/tools/testing/selftests/bpf/prog_tests/select_reuseport.c
index a1dd13b34d4b..821b4146b7b6 100644
--- a/tools/testing/selftests/bpf/prog_tests/select_reuseport.c
+++ b/tools/testing/selftests/bpf/prog_tests/select_reuseport.c
@@ -805,12 +805,6 @@ static void test_config(int sotype, sa_family_t family, bool inany)
char s[MAX_TEST_NAME];
const struct test *t;
- /* SOCKMAP/SOCKHASH don't support UDP yet */
- if (sotype == SOCK_DGRAM &&
- (inner_map_type == BPF_MAP_TYPE_SOCKMAP ||
- inner_map_type == BPF_MAP_TYPE_SOCKHASH))
- return;
-
for (t = tests; t < tests + ARRAY_SIZE(tests); t++) {
if (t->need_sotype && t->need_sotype != sotype)
continue; /* test not compatible with socket type */
--
2.20.1
^ permalink raw reply related [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v3 09/12] selftests: bpf: don't listen() on UDP sockets
2020-03-04 10:13 ` [PATCH bpf-next v3 09/12] selftests: bpf: don't listen() on UDP sockets Lorenz Bauer
@ 2020-03-05 12:53 ` Jakub Sitnicki
2020-03-06 15:36 ` John Fastabend
1 sibling, 0 replies; 8+ messages in thread
From: Jakub Sitnicki @ 2020-03-05 12:53 UTC (permalink / raw)
To: Lorenz Bauer
Cc: john.fastabend, Shuah Khan, Alexei Starovoitov, Daniel Borkmann,
kernel-team, linux-kselftest, netdev, bpf, linux-kernel
On Wed, Mar 04, 2020 at 11:13 AM CET, Lorenz Bauer wrote:
> Most tests for TCP sockmap can be adapted to UDP sockmap if the
> listen call is skipped. Rename listen_loopback, etc. to socket_loopback
> and skip listen() for SOCK_DGRAM.
>
> Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
> ---
FWIW, Go has net.ListenUDP so I don't think it would be very confusing
to leave the helper name as is.
Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>
[...]
^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PATCH bpf-next v3 11/12] selftests: bpf: enable UDP sockmap reuseport tests
2020-03-04 10:13 ` [PATCH bpf-next v3 11/12] selftests: bpf: enable UDP sockmap reuseport tests Lorenz Bauer
@ 2020-03-05 12:56 ` Jakub Sitnicki
2020-03-06 15:39 ` John Fastabend
1 sibling, 0 replies; 8+ messages in thread
From: Jakub Sitnicki @ 2020-03-05 12:56 UTC (permalink / raw)
To: Lorenz Bauer
Cc: john.fastabend, Shuah Khan, Alexei Starovoitov, Daniel Borkmann,
kernel-team, linux-kselftest, netdev, bpf, linux-kernel
On Wed, Mar 04, 2020 at 11:13 AM CET, Lorenz Bauer wrote:
> Remove the guard that disables UDP tests now that sockmap
> has support for them.
>
> Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
> ---
Reviewed-by: Jakub Sitnicki <jakub@cloudflare.com>
[...]
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH bpf-next v3 09/12] selftests: bpf: don't listen() on UDP sockets
2020-03-04 10:13 ` [PATCH bpf-next v3 09/12] selftests: bpf: don't listen() on UDP sockets Lorenz Bauer
2020-03-05 12:53 ` Jakub Sitnicki
@ 2020-03-06 15:36 ` John Fastabend
1 sibling, 0 replies; 8+ messages in thread
From: John Fastabend @ 2020-03-06 15:36 UTC (permalink / raw)
To: Lorenz Bauer, john.fastabend, Shuah Khan, Alexei Starovoitov,
Daniel Borkmann
Cc: kernel-team, Lorenz Bauer, linux-kselftest, netdev, bpf, linux-kernel
Lorenz Bauer wrote:
> Most tests for TCP sockmap can be adapted to UDP sockmap if the
> listen call is skipped. Rename listen_loopback, etc. to socket_loopback
> and skip listen() for SOCK_DGRAM.
>
> Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
> ---
Acked-by: John Fastabend <john.fastabend@gmail.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH bpf-next v3 10/12] selftests: bpf: add tests for UDP sockets in sockmap
2020-03-04 10:13 ` [PATCH bpf-next v3 10/12] selftests: bpf: add tests for UDP sockets in sockmap Lorenz Bauer
@ 2020-03-06 15:38 ` John Fastabend
0 siblings, 0 replies; 8+ messages in thread
From: John Fastabend @ 2020-03-06 15:38 UTC (permalink / raw)
To: Lorenz Bauer, john.fastabend, Shuah Khan, Alexei Starovoitov,
Daniel Borkmann
Cc: kernel-team, Lorenz Bauer, Jakub Sitnicki, linux-kselftest,
netdev, bpf, linux-kernel
Lorenz Bauer wrote:
> Expand the TCP sockmap test suite to also check UDP sockets.
>
> Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
> Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
> ---
> .../selftests/bpf/prog_tests/sockmap_listen.c | 157 ++++++++++++++----
> 1 file changed, 127 insertions(+), 30 deletions(-)
>
Acked-by: John Fastabend <john.fastabend@gmail.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
* RE: [PATCH bpf-next v3 11/12] selftests: bpf: enable UDP sockmap reuseport tests
2020-03-04 10:13 ` [PATCH bpf-next v3 11/12] selftests: bpf: enable UDP sockmap reuseport tests Lorenz Bauer
2020-03-05 12:56 ` Jakub Sitnicki
@ 2020-03-06 15:39 ` John Fastabend
1 sibling, 0 replies; 8+ messages in thread
From: John Fastabend @ 2020-03-06 15:39 UTC (permalink / raw)
To: Lorenz Bauer, john.fastabend, Shuah Khan, Alexei Starovoitov,
Daniel Borkmann
Cc: kernel-team, Lorenz Bauer, linux-kselftest, netdev, bpf, linux-kernel
Lorenz Bauer wrote:
> Remove the guard that disables UDP tests now that sockmap
> has support for them.
>
> Signed-off-by: Lorenz Bauer <lmb@cloudflare.com>
> ---
> tools/testing/selftests/bpf/prog_tests/select_reuseport.c | 6 ------
> 1 file changed, 6 deletions(-)
>
> diff --git a/tools/testing/selftests/bpf/prog_tests/select_reuseport.c b/tools/testing/selftests/bpf/prog_tests/select_reuseport.c
> index a1dd13b34d4b..821b4146b7b6 100644
> --- a/tools/testing/selftests/bpf/prog_tests/select_reuseport.c
> +++ b/tools/testing/selftests/bpf/prog_tests/select_reuseport.c
> @@ -805,12 +805,6 @@ static void test_config(int sotype, sa_family_t family, bool inany)
> char s[MAX_TEST_NAME];
> const struct test *t;
>
> - /* SOCKMAP/SOCKHASH don't support UDP yet */
> - if (sotype == SOCK_DGRAM &&
> - (inner_map_type == BPF_MAP_TYPE_SOCKMAP ||
> - inner_map_type == BPF_MAP_TYPE_SOCKHASH))
> - return;
> -
> for (t = tests; t < tests + ARRAY_SIZE(tests); t++) {
> if (t->need_sotype && t->need_sotype != sotype)
> continue; /* test not compatible with socket type */
> --
> 2.20.1
>
Acked-by: John Fastabend <john.fastabend@gmail.com>
^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2020-03-06 15:39 UTC | newest]
Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
[not found] <20200304101318.5225-1-lmb@cloudflare.com>
2020-03-04 10:13 ` [PATCH bpf-next v3 09/12] selftests: bpf: don't listen() on UDP sockets Lorenz Bauer
2020-03-05 12:53 ` Jakub Sitnicki
2020-03-06 15:36 ` John Fastabend
2020-03-04 10:13 ` [PATCH bpf-next v3 10/12] selftests: bpf: add tests for UDP sockets in sockmap Lorenz Bauer
2020-03-06 15:38 ` John Fastabend
2020-03-04 10:13 ` [PATCH bpf-next v3 11/12] selftests: bpf: enable UDP sockmap reuseport tests Lorenz Bauer
2020-03-05 12:56 ` Jakub Sitnicki
2020-03-06 15:39 ` John Fastabend
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).