Skip to content

Commit

Permalink
selftests/bpf: Run SYN cookies with reuseport BPF test only for TCP
Browse files Browse the repository at this point in the history
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: eecd618 ("selftests/bpf: Mark SYN cookie test skipped for UDP sockets")
Reported-by: Alexei Starovoitov <ast@kernel.org>
Signed-off-by: Jakub Sitnicki <jakub@cloudflare.com>
Signed-off-by: Alexei Starovoitov <ast@kernel.org>
Acked-by: Martin KaFai Lau <kafai@fb.com>
Link: https://lore.kernel.org/bpf/20200224135327.121542-2-jakub@cloudflare.com
  • Loading branch information
Jakub Sitnicki authored and Alexei Starovoitov committed Feb 25, 2020
1 parent 779e422 commit e036042
Showing 1 changed file with 9 additions and 8 deletions.
17 changes: 9 additions & 8 deletions tools/testing/selftests/bpf/prog_tests/select_reuseport.c
Original file line number Diff line number Diff line change
Expand Up @@ -509,11 +509,6 @@ static void test_syncookie(int type, sa_family_t family)
.pass_on_failure = 0,
};

if (type != SOCK_STREAM) {
test__skip();
return;
}

/*
* +1 for TCP-SYN and
* +1 for the TCP-ACK (ack the syncookie)
Expand Down Expand Up @@ -787,20 +782,23 @@ 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)
{
const struct test {
void (*fn)(int sotype, sa_family_t family);
const char *name;
bool no_inner_map;
int need_sotype;
} 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_sk_select_port),
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_detach_bpf),
};
Expand All @@ -814,6 +812,9 @@ static void test_config(int sotype, sa_family_t family, bool inany)
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 */

snprintf(s, sizeof(s), "%s %s/%s %s %s",
maptype_str(inner_map_type),
family_str(family), sotype_str(sotype),
Expand Down

0 comments on commit e036042

Please sign in to comment.