Skip to content

Commit

Permalink
selftests/bpf: Add connmark read test
Browse files Browse the repository at this point in the history
Test that the prog can read from the connection mark. This test is nice
because it ensures progs can interact with netfilter subsystem
correctly.

Signed-off-by: Daniel Xu <dxu@dxuuu.xyz>
Signed-off-by: Daniel Borkmann <daniel@iogearbox.net>
Acked-by: Kumar Kartikeya Dwivedi <memxor@gmail.com>
Link: https://lore.kernel.org/bpf/d3bc620a491e4c626c20d80631063922cbe13e2b.1660254747.git.dxu@dxuuu.xyz
  • Loading branch information
Daniel Xu authored and Daniel Borkmann committed Aug 15, 2022
1 parent e81fbd4 commit 99799de
Show file tree
Hide file tree
Showing 2 changed files with 5 additions and 1 deletion.
3 changes: 2 additions & 1 deletion tools/testing/selftests/bpf/prog_tests/bpf_nf.c
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ static int connect_to_server(int srv_fd)

static void test_bpf_nf_ct(int mode)
{
const char *iptables = "iptables -t raw %s PREROUTING -j CT";
const char *iptables = "iptables -t raw %s PREROUTING -j CONNMARK --set-mark 42/0";
int srv_fd = -1, client_fd = -1, srv_client_fd = -1;
struct sockaddr_in peer_addr = {};
struct test_bpf_nf *skel;
Expand Down Expand Up @@ -114,6 +114,7 @@ static void test_bpf_nf_ct(int mode)
/* expected status is IPS_SEEN_REPLY */
ASSERT_EQ(skel->bss->test_status, 2, "Test for ct status update ");
ASSERT_EQ(skel->data->test_exist_lookup, 0, "Test existing connection lookup");
ASSERT_EQ(skel->bss->test_exist_lookup_mark, 43, "Test existing connection lookup ctmark");
end:
if (srv_client_fd != -1)
close(srv_client_fd);
Expand Down
3 changes: 3 additions & 0 deletions tools/testing/selftests/bpf/progs/test_bpf_nf.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@ __be16 sport = 0;
__be32 daddr = 0;
__be16 dport = 0;
int test_exist_lookup = -ENOENT;
u32 test_exist_lookup_mark = 0;

struct nf_conn;

Expand Down Expand Up @@ -174,6 +175,8 @@ nf_ct_test(struct nf_conn *(*lookup_fn)(void *, struct bpf_sock_tuple *, u32,
sizeof(opts_def));
if (ct) {
test_exist_lookup = 0;
if (ct->mark == 42)
test_exist_lookup_mark = 43;
bpf_ct_release(ct);
} else {
test_exist_lookup = opts_def.error;
Expand Down

0 comments on commit 99799de

Please sign in to comment.