Commit e0360423 authored by Jakub Sitnicki's avatar Jakub Sitnicki Committed by Alexei Starovoitov

selftests/bpf: Run SYN cookies with reuseport BPF test only for TCP

Currently we run SYN cookies test for all socket types and mark the test as
skipped if socket type is not compatible. This causes confusion because
skipped test might indicate a problem with the testing environment.

Instead, run the test only for the socket type which supports SYN cookies.

Also, switch to using designated initializers when setting up tests, so
that we can tweak only some test parameters, leaving the rest initialized
to default values.

Fixes: eecd618b ("selftests/bpf: Mark SYN cookie test skipped for UDP sockets")
Reported-by: default avatarAlexei Starovoitov <ast@kernel.org>
Signed-off-by: default avatarJakub Sitnicki <jakub@cloudflare.com>
Signed-off-by: default avatarAlexei Starovoitov <ast@kernel.org>
Acked-by: default avatarMartin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20200224135327.121542-2-jakub@cloudflare.com
parent 779e422d
...@@ -509,11 +509,6 @@ static void test_syncookie(int type, sa_family_t family) ...@@ -509,11 +509,6 @@ static void test_syncookie(int type, sa_family_t family)
.pass_on_failure = 0, .pass_on_failure = 0,
}; };
if (type != SOCK_STREAM) {
test__skip();
return;
}
/* /*
* +1 for TCP-SYN and * +1 for TCP-SYN and
* +1 for the TCP-ACK (ack the syncookie) * +1 for the TCP-ACK (ack the syncookie)
...@@ -787,7 +782,7 @@ static const char *sotype_str(int sotype) ...@@ -787,7 +782,7 @@ static const char *sotype_str(int sotype)
} }
} }
#define TEST_INIT(fn, ...) { fn, #fn, __VA_ARGS__ } #define TEST_INIT(fn_, ...) { .fn = fn_, .name = #fn_, __VA_ARGS__ }
static void test_config(int sotype, sa_family_t family, bool inany) static void test_config(int sotype, sa_family_t family, bool inany)
{ {
...@@ -795,12 +790,15 @@ static void test_config(int sotype, sa_family_t family, bool inany) ...@@ -795,12 +790,15 @@ static void test_config(int sotype, sa_family_t family, bool inany)
void (*fn)(int sotype, sa_family_t family); void (*fn)(int sotype, sa_family_t family);
const char *name; const char *name;
bool no_inner_map; bool no_inner_map;
int need_sotype;
} tests[] = { } tests[] = {
TEST_INIT(test_err_inner_map, true /* no_inner_map */), TEST_INIT(test_err_inner_map,
.no_inner_map = true),
TEST_INIT(test_err_skb_data), TEST_INIT(test_err_skb_data),
TEST_INIT(test_err_sk_select_port), TEST_INIT(test_err_sk_select_port),
TEST_INIT(test_pass), TEST_INIT(test_pass),
TEST_INIT(test_syncookie), TEST_INIT(test_syncookie,
.need_sotype = SOCK_STREAM),
TEST_INIT(test_pass_on_err), TEST_INIT(test_pass_on_err),
TEST_INIT(test_detach_bpf), TEST_INIT(test_detach_bpf),
}; };
...@@ -814,6 +812,9 @@ static void test_config(int sotype, sa_family_t family, bool inany) ...@@ -814,6 +812,9 @@ static void test_config(int sotype, sa_family_t family, bool inany)
return; return;
for (t = tests; t < tests + ARRAY_SIZE(tests); t++) { for (t = tests; t < tests + ARRAY_SIZE(tests); t++) {
if (t->need_sotype && t->need_sotype != sotype)
continue; /* test not compatible with socket type */
snprintf(s, sizeof(s), "%s %s/%s %s %s", snprintf(s, sizeof(s), "%s %s/%s %s %s",
maptype_str(inner_map_type), maptype_str(inner_map_type),
family_str(family), sotype_str(sotype), family_str(family), sotype_str(sotype),
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment