powerpc/perf/hv-24x7: Move cpumask file to top folder of hv-24x7 driver
[linux-2.6-microblaze.git] / tools / testing / selftests / bpf / prog_tests / prog_run_xattr.c
1 // SPDX-License-Identifier: GPL-2.0
2 #include <test_progs.h>
3 #include <network_helpers.h>
4
5 void test_prog_run_xattr(void)
6 {
7         const char *file = "./test_pkt_access.o";
8         struct bpf_object *obj;
9         char buf[10];
10         int err;
11         struct bpf_prog_test_run_attr tattr = {
12                 .repeat = 1,
13                 .data_in = &pkt_v4,
14                 .data_size_in = sizeof(pkt_v4),
15                 .data_out = buf,
16                 .data_size_out = 5,
17         };
18
19         err = bpf_prog_load(file, BPF_PROG_TYPE_SCHED_CLS, &obj,
20                             &tattr.prog_fd);
21         if (CHECK_ATTR(err, "load", "err %d errno %d\n", err, errno))
22                 return;
23
24         memset(buf, 0, sizeof(buf));
25
26         err = bpf_prog_test_run_xattr(&tattr);
27         CHECK_ATTR(err != -1 || errno != ENOSPC || tattr.retval, "run",
28               "err %d errno %d retval %d\n", err, errno, tattr.retval);
29
30         CHECK_ATTR(tattr.data_size_out != sizeof(pkt_v4), "data_size_out",
31               "incorrect output size, want %lu have %u\n",
32               sizeof(pkt_v4), tattr.data_size_out);
33
34         CHECK_ATTR(buf[5] != 0, "overflow",
35               "BPF_PROG_TEST_RUN ignored size hint\n");
36
37         tattr.data_out = NULL;
38         tattr.data_size_out = 0;
39         errno = 0;
40
41         err = bpf_prog_test_run_xattr(&tattr);
42         CHECK_ATTR(err || errno || tattr.retval, "run_no_output",
43               "err %d errno %d retval %d\n", err, errno, tattr.retval);
44
45         tattr.data_size_out = 1;
46         err = bpf_prog_test_run_xattr(&tattr);
47         CHECK_ATTR(err != -EINVAL, "run_wrong_size_out", "err %d\n", err);
48
49         bpf_object__close(obj);
50 }