Skip to content

Commit cded71f

Browse files
jrifeAlexei Starovoitov
authored andcommitted
selftests/bpf: Migrate ATTACH_REJECT test cases
Migrate test case from bpf/test_sock_addr.c ensuring that program attachment fails when using an inappropriate attach type. Signed-off-by: Jordan Rife <jrife@google.com> Link: https://lore.kernel.org/r/20240510190246.3247730-12-jrife@google.com Signed-off-by: Alexei Starovoitov <ast@kernel.org>
1 parent b0f3af0 commit cded71f

2 files changed

Lines changed: 102 additions & 146 deletions

File tree

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

Lines changed: 102 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -438,13 +438,19 @@ static void prog_name##_destroy(void *skel) \
438438
}
439439

440440
BPF_SKEL_FUNCS(bind4_prog, bind_v4_prog);
441+
BPF_SKEL_FUNCS_RAW(bind4_prog, bind_v4_prog);
441442
BPF_SKEL_FUNCS(bind6_prog, bind_v6_prog);
443+
BPF_SKEL_FUNCS_RAW(bind6_prog, bind_v6_prog);
442444
BPF_SKEL_FUNCS(connect4_prog, connect_v4_prog);
445+
BPF_SKEL_FUNCS_RAW(connect4_prog, connect_v4_prog);
443446
BPF_SKEL_FUNCS(connect6_prog, connect_v6_prog);
447+
BPF_SKEL_FUNCS_RAW(connect6_prog, connect_v6_prog);
444448
BPF_SKEL_FUNCS(connect_unix_prog, connect_unix_prog);
445449
BPF_SKEL_FUNCS(sendmsg4_prog, sendmsg_v4_prog);
450+
BPF_SKEL_FUNCS_RAW(sendmsg4_prog, sendmsg_v4_prog);
446451
BPF_SKEL_FUNCS(sendmsg4_prog, sendmsg_v4_deny_prog);
447452
BPF_SKEL_FUNCS(sendmsg6_prog, sendmsg_v6_prog);
453+
BPF_SKEL_FUNCS_RAW(sendmsg6_prog, sendmsg_v6_prog);
448454
BPF_SKEL_FUNCS(sendmsg6_prog, sendmsg_v6_deny_prog);
449455
BPF_SKEL_FUNCS(sendmsg6_prog, sendmsg_v6_preserve_dst_prog);
450456
BPF_SKEL_FUNCS(sendmsg6_prog, sendmsg_v6_v4mapped_prog);
@@ -506,6 +512,22 @@ static struct sock_addr_test tests[] = {
506512
NULL,
507513
LOAD_REJECT,
508514
},
515+
{
516+
SOCK_ADDR_TEST_BIND,
517+
"bind4: attach prog with wrong attach type",
518+
bind_v4_prog_load_raw,
519+
bind_v4_prog_destroy_raw,
520+
BPF_CGROUP_INET6_BIND,
521+
&user_ops,
522+
AF_INET,
523+
SOCK_STREAM,
524+
NULL,
525+
0,
526+
NULL,
527+
0,
528+
NULL,
529+
ATTACH_REJECT,
530+
},
509531
{
510532
SOCK_ADDR_TEST_BIND,
511533
"bind6: bind (stream)",
@@ -554,6 +576,22 @@ static struct sock_addr_test tests[] = {
554576
NULL,
555577
LOAD_REJECT,
556578
},
579+
{
580+
SOCK_ADDR_TEST_BIND,
581+
"bind6: attach prog with wrong attach type",
582+
bind_v6_prog_load_raw,
583+
bind_v6_prog_destroy_raw,
584+
BPF_CGROUP_INET4_BIND,
585+
&user_ops,
586+
AF_INET,
587+
SOCK_STREAM,
588+
NULL,
589+
0,
590+
NULL,
591+
0,
592+
NULL,
593+
ATTACH_REJECT,
594+
},
557595

558596
/* bind - kernel calls */
559597
{
@@ -670,6 +708,22 @@ static struct sock_addr_test tests[] = {
670708
NULL,
671709
LOAD_REJECT,
672710
},
711+
{
712+
SOCK_ADDR_TEST_CONNECT,
713+
"connect4: attach prog with wrong attach type",
714+
connect_v4_prog_load_raw,
715+
connect_v4_prog_destroy_raw,
716+
BPF_CGROUP_INET6_CONNECT,
717+
&user_ops,
718+
AF_INET,
719+
SOCK_STREAM,
720+
NULL,
721+
0,
722+
NULL,
723+
0,
724+
NULL,
725+
ATTACH_REJECT,
726+
},
673727
{
674728
SOCK_ADDR_TEST_CONNECT,
675729
"connect6: connect (stream)",
@@ -718,6 +772,22 @@ static struct sock_addr_test tests[] = {
718772
NULL,
719773
LOAD_REJECT,
720774
},
775+
{
776+
SOCK_ADDR_TEST_CONNECT,
777+
"connect6: attach prog with wrong attach type",
778+
connect_v6_prog_load_raw,
779+
connect_v6_prog_destroy_raw,
780+
BPF_CGROUP_INET4_CONNECT,
781+
&user_ops,
782+
AF_INET,
783+
SOCK_STREAM,
784+
NULL,
785+
0,
786+
NULL,
787+
0,
788+
NULL,
789+
ATTACH_REJECT,
790+
},
721791
{
722792
SOCK_ADDR_TEST_CONNECT,
723793
"connect_unix: connect (stream)",
@@ -866,6 +936,22 @@ static struct sock_addr_test tests[] = {
866936
NULL,
867937
LOAD_REJECT,
868938
},
939+
{
940+
SOCK_ADDR_TEST_SENDMSG,
941+
"sendmsg4: attach prog with wrong attach type",
942+
sendmsg_v4_prog_load_raw,
943+
sendmsg_v4_prog_destroy_raw,
944+
BPF_CGROUP_UDP6_SENDMSG,
945+
&user_ops,
946+
AF_INET,
947+
SOCK_DGRAM,
948+
NULL,
949+
0,
950+
NULL,
951+
0,
952+
NULL,
953+
ATTACH_REJECT,
954+
},
869955
{
870956
SOCK_ADDR_TEST_SENDMSG,
871957
"sendmsg6: sendmsg (dgram)",
@@ -962,6 +1048,22 @@ static struct sock_addr_test tests[] = {
9621048
NULL,
9631049
LOAD_REJECT,
9641050
},
1051+
{
1052+
SOCK_ADDR_TEST_SENDMSG,
1053+
"sendmsg6: attach prog with wrong attach type",
1054+
sendmsg_v6_prog_load_raw,
1055+
sendmsg_v6_prog_destroy_raw,
1056+
BPF_CGROUP_UDP4_SENDMSG,
1057+
&user_ops,
1058+
AF_INET6,
1059+
SOCK_DGRAM,
1060+
NULL,
1061+
0,
1062+
NULL,
1063+
0,
1064+
NULL,
1065+
ATTACH_REJECT,
1066+
},
9651067
{
9661068
SOCK_ADDR_TEST_SENDMSG,
9671069
"sendmsg_unix: sendmsg (dgram)",

tools/testing/selftests/bpf/test_sock_addr.c

Lines changed: 0 additions & 146 deletions
Original file line numberDiff line numberDiff line change
@@ -88,89 +88,11 @@ struct sock_addr_test {
8888
} expected_result;
8989
};
9090

91-
static int bind4_prog_load(const struct sock_addr_test *test);
92-
static int bind6_prog_load(const struct sock_addr_test *test);
93-
static int connect4_prog_load(const struct sock_addr_test *test);
94-
static int connect6_prog_load(const struct sock_addr_test *test);
9591
static int sendmsg4_rw_asm_prog_load(const struct sock_addr_test *test);
9692
static int sendmsg6_rw_asm_prog_load(const struct sock_addr_test *test);
9793

9894
static struct sock_addr_test tests[] = {
99-
/* bind */
100-
{
101-
"bind4: attach prog with wrong attach type",
102-
bind4_prog_load,
103-
BPF_CGROUP_INET4_BIND,
104-
BPF_CGROUP_INET6_BIND,
105-
AF_INET,
106-
SOCK_STREAM,
107-
NULL,
108-
0,
109-
NULL,
110-
0,
111-
NULL,
112-
ATTACH_REJECT,
113-
},
114-
{
115-
"bind6: attach prog with wrong attach type",
116-
bind6_prog_load,
117-
BPF_CGROUP_INET6_BIND,
118-
BPF_CGROUP_INET4_BIND,
119-
AF_INET,
120-
SOCK_STREAM,
121-
NULL,
122-
0,
123-
NULL,
124-
0,
125-
NULL,
126-
ATTACH_REJECT,
127-
},
128-
129-
/* connect */
130-
{
131-
"connect4: attach prog with wrong attach type",
132-
connect4_prog_load,
133-
BPF_CGROUP_INET4_CONNECT,
134-
BPF_CGROUP_INET6_CONNECT,
135-
AF_INET,
136-
SOCK_STREAM,
137-
NULL,
138-
0,
139-
NULL,
140-
0,
141-
NULL,
142-
ATTACH_REJECT,
143-
},
144-
{
145-
"connect6: attach prog with wrong attach type",
146-
connect6_prog_load,
147-
BPF_CGROUP_INET6_CONNECT,
148-
BPF_CGROUP_INET4_CONNECT,
149-
AF_INET,
150-
SOCK_STREAM,
151-
NULL,
152-
0,
153-
NULL,
154-
0,
155-
NULL,
156-
ATTACH_REJECT,
157-
},
158-
15995
/* sendmsg */
160-
{
161-
"sendmsg4: attach prog with wrong attach type",
162-
sendmsg4_rw_asm_prog_load,
163-
BPF_CGROUP_UDP4_SENDMSG,
164-
BPF_CGROUP_UDP6_SENDMSG,
165-
AF_INET,
166-
SOCK_DGRAM,
167-
NULL,
168-
0,
169-
NULL,
170-
0,
171-
NULL,
172-
ATTACH_REJECT,
173-
},
17496
{
17597
"sendmsg4: rewrite IP & port (asm)",
17698
sendmsg4_rw_asm_prog_load,
@@ -185,20 +107,6 @@ static struct sock_addr_test tests[] = {
185107
SRC4_REWRITE_IP,
186108
SUCCESS,
187109
},
188-
{
189-
"sendmsg6: attach prog with wrong attach type",
190-
sendmsg6_rw_asm_prog_load,
191-
BPF_CGROUP_UDP6_SENDMSG,
192-
BPF_CGROUP_UDP4_SENDMSG,
193-
AF_INET6,
194-
SOCK_DGRAM,
195-
NULL,
196-
0,
197-
NULL,
198-
0,
199-
NULL,
200-
ATTACH_REJECT,
201-
},
202110
{
203111
"sendmsg6: rewrite IP & port (asm)",
204112
sendmsg6_rw_asm_prog_load,
@@ -234,60 +142,6 @@ static int load_insns(const struct sock_addr_test *test,
234142
return ret;
235143
}
236144

237-
static int load_path(const struct sock_addr_test *test, const char *path)
238-
{
239-
struct bpf_object *obj;
240-
struct bpf_program *prog;
241-
int err;
242-
243-
obj = bpf_object__open_file(path, NULL);
244-
err = libbpf_get_error(obj);
245-
if (err) {
246-
log_err(">>> Opening BPF object (%s) error.\n", path);
247-
return -1;
248-
}
249-
250-
prog = bpf_object__next_program(obj, NULL);
251-
if (!prog)
252-
goto err_out;
253-
254-
bpf_program__set_type(prog, BPF_PROG_TYPE_CGROUP_SOCK_ADDR);
255-
bpf_program__set_expected_attach_type(prog, test->expected_attach_type);
256-
bpf_program__set_flags(prog, testing_prog_flags());
257-
258-
err = bpf_object__load(obj);
259-
if (err) {
260-
if (test->expected_result != LOAD_REJECT)
261-
log_err(">>> Loading program (%s) error.\n", path);
262-
goto err_out;
263-
}
264-
265-
return bpf_program__fd(prog);
266-
err_out:
267-
bpf_object__close(obj);
268-
return -1;
269-
}
270-
271-
static int bind4_prog_load(const struct sock_addr_test *test)
272-
{
273-
return load_path(test, BIND4_PROG_PATH);
274-
}
275-
276-
static int bind6_prog_load(const struct sock_addr_test *test)
277-
{
278-
return load_path(test, BIND6_PROG_PATH);
279-
}
280-
281-
static int connect4_prog_load(const struct sock_addr_test *test)
282-
{
283-
return load_path(test, CONNECT4_PROG_PATH);
284-
}
285-
286-
static int connect6_prog_load(const struct sock_addr_test *test)
287-
{
288-
return load_path(test, CONNECT6_PROG_PATH);
289-
}
290-
291145
static int sendmsg4_rw_asm_prog_load(const struct sock_addr_test *test)
292146
{
293147
struct sockaddr_in dst4_rw_addr;

0 commit comments

Comments
 (0)