1
- #define BPF_SOCK_ADDR_STORE (field , off , res , err ) \
1
+ #define BPF_SOCK_ADDR_STORE (field , off , res , err , flgs ) \
2
2
{ \
3
3
"wide store to bpf_sock_addr." #field "[" #off "]", \
4
4
.insns = { \
11
11
.prog_type = BPF_PROG_TYPE_CGROUP_SOCK_ADDR, \
12
12
.expected_attach_type = BPF_CGROUP_UDP6_SENDMSG, \
13
13
.errstr = err, \
14
+ .flags = flgs, \
14
15
}
15
16
16
17
/* user_ip6[0] is u64 aligned */
17
18
BPF_SOCK_ADDR_STORE (user_ip6 , 0 , ACCEPT ,
18
- NULL ),
19
+ NULL , 0 ),
19
20
BPF_SOCK_ADDR_STORE (user_ip6 , 1 , REJECT ,
20
- "invalid bpf_context access off=12 size=8" ),
21
+ "invalid bpf_context access off=12 size=8" ,
22
+ F_NEEDS_EFFICIENT_UNALIGNED_ACCESS ),
21
23
BPF_SOCK_ADDR_STORE (user_ip6 , 2 , ACCEPT ,
22
- NULL ),
24
+ NULL , 0 ),
23
25
BPF_SOCK_ADDR_STORE (user_ip6 , 3 , REJECT ,
24
- "invalid bpf_context access off=20 size=8" ),
26
+ "invalid bpf_context access off=20 size=8" ,
27
+ F_NEEDS_EFFICIENT_UNALIGNED_ACCESS ),
25
28
26
29
/* msg_src_ip6[0] is _not_ u64 aligned */
27
30
BPF_SOCK_ADDR_STORE (msg_src_ip6 , 0 , REJECT ,
28
- "invalid bpf_context access off=44 size=8" ),
31
+ "invalid bpf_context access off=44 size=8" ,
32
+ F_NEEDS_EFFICIENT_UNALIGNED_ACCESS ),
29
33
BPF_SOCK_ADDR_STORE (msg_src_ip6 , 1 , ACCEPT ,
30
- NULL ),
34
+ NULL , 0 ),
31
35
BPF_SOCK_ADDR_STORE (msg_src_ip6 , 2 , REJECT ,
32
- "invalid bpf_context access off=52 size=8" ),
36
+ "invalid bpf_context access off=52 size=8" ,
37
+ F_NEEDS_EFFICIENT_UNALIGNED_ACCESS ),
33
38
BPF_SOCK_ADDR_STORE (msg_src_ip6 , 3 , REJECT ,
34
- "invalid bpf_context access off=56 size=8" ),
39
+ "invalid bpf_context access off=56 size=8" , 0 ),
35
40
36
41
#undef BPF_SOCK_ADDR_STORE
37
42
38
- #define BPF_SOCK_ADDR_LOAD (field , off , res , err ) \
43
+ #define BPF_SOCK_ADDR_LOAD (field , off , res , err , flgs ) \
39
44
{ \
40
45
"wide load from bpf_sock_addr." #field "[" #off "]", \
41
46
.insns = { \
@@ -48,26 +53,31 @@ BPF_SOCK_ADDR_STORE(msg_src_ip6, 3, REJECT,
48
53
.prog_type = BPF_PROG_TYPE_CGROUP_SOCK_ADDR, \
49
54
.expected_attach_type = BPF_CGROUP_UDP6_SENDMSG, \
50
55
.errstr = err, \
56
+ .flags = flgs, \
51
57
}
52
58
53
59
/* user_ip6[0] is u64 aligned */
54
60
BPF_SOCK_ADDR_LOAD (user_ip6 , 0 , ACCEPT ,
55
- NULL ),
61
+ NULL , 0 ),
56
62
BPF_SOCK_ADDR_LOAD (user_ip6 , 1 , REJECT ,
57
- "invalid bpf_context access off=12 size=8" ),
63
+ "invalid bpf_context access off=12 size=8" ,
64
+ F_NEEDS_EFFICIENT_UNALIGNED_ACCESS ),
58
65
BPF_SOCK_ADDR_LOAD (user_ip6 , 2 , ACCEPT ,
59
- NULL ),
66
+ NULL , 0 ),
60
67
BPF_SOCK_ADDR_LOAD (user_ip6 , 3 , REJECT ,
61
- "invalid bpf_context access off=20 size=8" ),
68
+ "invalid bpf_context access off=20 size=8" ,
69
+ F_NEEDS_EFFICIENT_UNALIGNED_ACCESS ),
62
70
63
71
/* msg_src_ip6[0] is _not_ u64 aligned */
64
72
BPF_SOCK_ADDR_LOAD (msg_src_ip6 , 0 , REJECT ,
65
- "invalid bpf_context access off=44 size=8" ),
73
+ "invalid bpf_context access off=44 size=8" ,
74
+ F_NEEDS_EFFICIENT_UNALIGNED_ACCESS ),
66
75
BPF_SOCK_ADDR_LOAD (msg_src_ip6 , 1 , ACCEPT ,
67
- NULL ),
76
+ NULL , 0 ),
68
77
BPF_SOCK_ADDR_LOAD (msg_src_ip6 , 2 , REJECT ,
69
- "invalid bpf_context access off=52 size=8" ),
78
+ "invalid bpf_context access off=52 size=8" ,
79
+ F_NEEDS_EFFICIENT_UNALIGNED_ACCESS ),
70
80
BPF_SOCK_ADDR_LOAD (msg_src_ip6 , 3 , REJECT ,
71
- "invalid bpf_context access off=56 size=8" ),
81
+ "invalid bpf_context access off=56 size=8" , 0 ),
72
82
73
83
#undef BPF_SOCK_ADDR_LOAD
0 commit comments