Skip to content

Commit 6fcfe96

Browse files
mrpreMartin KaFai Lau
authored andcommitted
selftests/bpf: Add strparser test for bpf
Add test cases for bpf + strparser and separated them from sockmap_basic, as strparser has more encapsulation and parsing capabilities compared to standard sockmap. Signed-off-by: Jiayuan Chen <[email protected]> Signed-off-by: Martin KaFai Lau <[email protected]> Acked-by: Jakub Sitnicki <[email protected]> Acked-by: John Fastabend <[email protected]> Link: https://patch.msgid.link/[email protected]
1 parent a0c1114 commit 6fcfe96

File tree

3 files changed

+507
-53
lines changed

3 files changed

+507
-53
lines changed

tools/testing/selftests/bpf/prog_tests/sockmap_basic.c

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -531,57 +531,6 @@ static void test_sockmap_skb_verdict_shutdown(void)
531531
test_sockmap_pass_prog__destroy(skel);
532532
}
533533

534-
static void test_sockmap_stream_pass(void)
535-
{
536-
int zero = 0, sent, recvd;
537-
int verdict, parser;
538-
int err, map;
539-
int c = -1, p = -1;
540-
struct test_sockmap_pass_prog *pass = NULL;
541-
char snd[256] = "0123456789";
542-
char rcv[256] = "0";
543-
544-
pass = test_sockmap_pass_prog__open_and_load();
545-
verdict = bpf_program__fd(pass->progs.prog_skb_verdict);
546-
parser = bpf_program__fd(pass->progs.prog_skb_parser);
547-
map = bpf_map__fd(pass->maps.sock_map_rx);
548-
549-
err = bpf_prog_attach(parser, map, BPF_SK_SKB_STREAM_PARSER, 0);
550-
if (!ASSERT_OK(err, "bpf_prog_attach stream parser"))
551-
goto out;
552-
553-
err = bpf_prog_attach(verdict, map, BPF_SK_SKB_STREAM_VERDICT, 0);
554-
if (!ASSERT_OK(err, "bpf_prog_attach stream verdict"))
555-
goto out;
556-
557-
err = create_pair(AF_INET, SOCK_STREAM, &c, &p);
558-
if (err)
559-
goto out;
560-
561-
/* sk_data_ready of 'p' will be replaced by strparser handler */
562-
err = bpf_map_update_elem(map, &zero, &p, BPF_NOEXIST);
563-
if (!ASSERT_OK(err, "bpf_map_update_elem(p)"))
564-
goto out_close;
565-
566-
/*
567-
* as 'prog_skb_parser' return the original skb len and
568-
* 'prog_skb_verdict' return SK_PASS, the kernel will just
569-
* pass it through to original socket 'p'
570-
*/
571-
sent = xsend(c, snd, sizeof(snd), 0);
572-
ASSERT_EQ(sent, sizeof(snd), "xsend(c)");
573-
574-
recvd = recv_timeout(p, rcv, sizeof(rcv), SOCK_NONBLOCK,
575-
IO_TIMEOUT_SEC);
576-
ASSERT_EQ(recvd, sizeof(rcv), "recv_timeout(p)");
577-
578-
out_close:
579-
close(c);
580-
close(p);
581-
582-
out:
583-
test_sockmap_pass_prog__destroy(pass);
584-
}
585534

586535
static void test_sockmap_skb_verdict_fionread(bool pass_prog)
587536
{
@@ -1101,8 +1050,6 @@ void test_sockmap_basic(void)
11011050
test_sockmap_progs_query(BPF_SK_SKB_VERDICT);
11021051
if (test__start_subtest("sockmap skb_verdict shutdown"))
11031052
test_sockmap_skb_verdict_shutdown();
1104-
if (test__start_subtest("sockmap stream parser and verdict pass"))
1105-
test_sockmap_stream_pass();
11061053
if (test__start_subtest("sockmap skb_verdict fionread"))
11071054
test_sockmap_skb_verdict_fionread(true);
11081055
if (test__start_subtest("sockmap skb_verdict fionread on drop"))

0 commit comments

Comments
 (0)