Skip to content

Commit

Permalink
selftests/bpf: Test access to bpf map pointer
Browse files Browse the repository at this point in the history
Add selftests to test access to map pointers from bpf program for all
map types except struct_ops (that one would need additional work).

verifier test focuses mostly on scenarios that must be rejected.

prog_tests test focuses on accessing multiple fields both scalar and a
nested struct from bpf program and verifies that those fields have
expected values.

Signed-off-by: Andrey Ignatov <[email protected]>
Signed-off-by: Daniel Borkmann <[email protected]>
Acked-by: John Fastabend <[email protected]>
Acked-by: Martin KaFai Lau <[email protected]>
Link: https://lore.kernel.org/bpf/139a6a17f8016491e39347849b951525335c6eb4.1592600985.git.rdna@fb.com
  • Loading branch information
rdna authored and borkmann committed Jun 22, 2020
1 parent 2872e9a commit b1b53d4
Show file tree
Hide file tree
Showing 3 changed files with 780 additions and 0 deletions.
32 changes: 32 additions & 0 deletions tools/testing/selftests/bpf/prog_tests/map_ptr.c
Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
// SPDX-License-Identifier: GPL-2.0
// Copyright (c) 2020 Facebook

#include <test_progs.h>
#include <network_helpers.h>

#include "map_ptr_kern.skel.h"

void test_map_ptr(void)
{
struct map_ptr_kern *skel;
__u32 duration = 0, retval;
char buf[128];
int err;

skel = map_ptr_kern__open_and_load();
if (CHECK(!skel, "skel_open_load", "open_load failed\n"))
return;

err = bpf_prog_test_run(bpf_program__fd(skel->progs.cg_skb), 1, &pkt_v4,
sizeof(pkt_v4), buf, NULL, &retval, NULL);

if (CHECK(err, "test_run", "err=%d errno=%d\n", err, errno))
goto cleanup;

if (CHECK(!retval, "retval", "retval=%d map_type=%u line=%u\n", retval,
skel->bss->g_map_type, skel->bss->g_line))
goto cleanup;

cleanup:
map_ptr_kern__destroy(skel);
}
Loading

0 comments on commit b1b53d4

Please sign in to comment.