1b1b53d41SAndrey Ignatov // SPDX-License-Identifier: GPL-2.0
2b1b53d41SAndrey Ignatov // Copyright (c) 2020 Facebook
3b1b53d41SAndrey Ignatov 
4b1b53d41SAndrey Ignatov #include <test_progs.h>
5b1b53d41SAndrey Ignatov #include <network_helpers.h>
6b1b53d41SAndrey Ignatov 
7650c9dbdSAlexei Starovoitov #include "map_ptr_kern.lskel.h"
8b1b53d41SAndrey Ignatov 
test_map_ptr(void)9b1b53d41SAndrey Ignatov void test_map_ptr(void)
10b1b53d41SAndrey Ignatov {
11650c9dbdSAlexei Starovoitov 	struct map_ptr_kern_lskel *skel;
12b1b53d41SAndrey Ignatov 	char buf[128];
13b1b53d41SAndrey Ignatov 	int err;
147a85e4dfSYauheni Kaliuta 	int page_size = getpagesize();
15*04fcb5f9SDelyan Kratunov 	LIBBPF_OPTS(bpf_test_run_opts, topts,
16*04fcb5f9SDelyan Kratunov 		.data_in = &pkt_v4,
17*04fcb5f9SDelyan Kratunov 		.data_size_in = sizeof(pkt_v4),
18*04fcb5f9SDelyan Kratunov 		.data_out = buf,
19*04fcb5f9SDelyan Kratunov 		.data_size_out = sizeof(buf),
20*04fcb5f9SDelyan Kratunov 		.repeat = 1,
21*04fcb5f9SDelyan Kratunov 	);
22b1b53d41SAndrey Ignatov 
23650c9dbdSAlexei Starovoitov 	skel = map_ptr_kern_lskel__open();
247a85e4dfSYauheni Kaliuta 	if (!ASSERT_OK_PTR(skel, "skel_open"))
25b1b53d41SAndrey Ignatov 		return;
26b1b53d41SAndrey Ignatov 
27650c9dbdSAlexei Starovoitov 	skel->maps.m_ringbuf.max_entries = page_size;
287a85e4dfSYauheni Kaliuta 
29650c9dbdSAlexei Starovoitov 	err = map_ptr_kern_lskel__load(skel);
307a85e4dfSYauheni Kaliuta 	if (!ASSERT_OK(err, "skel_load"))
317a85e4dfSYauheni Kaliuta 		goto cleanup;
327a85e4dfSYauheni Kaliuta 
337a85e4dfSYauheni Kaliuta 	skel->bss->page_size = page_size;
347a85e4dfSYauheni Kaliuta 
35*04fcb5f9SDelyan Kratunov 	err = bpf_prog_test_run_opts(skel->progs.cg_skb.prog_fd, &topts);
36b1b53d41SAndrey Ignatov 
37*04fcb5f9SDelyan Kratunov 	if (!ASSERT_OK(err, "test_run"))
38b1b53d41SAndrey Ignatov 		goto cleanup;
39b1b53d41SAndrey Ignatov 
40*04fcb5f9SDelyan Kratunov 	if (!ASSERT_NEQ(topts.retval, 0, "test_run retval"))
41b1b53d41SAndrey Ignatov 		goto cleanup;
42b1b53d41SAndrey Ignatov 
43b1b53d41SAndrey Ignatov cleanup:
44650c9dbdSAlexei Starovoitov 	map_ptr_kern_lskel__destroy(skel);
45b1b53d41SAndrey Ignatov }
46