4 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
5 offsetof(struct xdp_md
, data_meta
)),
6 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
7 BPF_MOV64_REG(BPF_REG_0
, BPF_REG_2
),
8 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_0
, 8),
9 BPF_JMP_REG(BPF_JGT
, BPF_REG_0
, BPF_REG_3
, 1),
10 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_2
, 0),
11 BPF_MOV64_IMM(BPF_REG_0
, 0),
15 .prog_type
= BPF_PROG_TYPE_XDP
,
20 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
21 offsetof(struct xdp_md
, data_meta
)),
22 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
23 BPF_MOV64_REG(BPF_REG_0
, BPF_REG_2
),
24 BPF_ALU64_IMM(BPF_SUB
, BPF_REG_0
, 8),
25 BPF_MOV64_REG(BPF_REG_4
, BPF_REG_2
),
26 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_4
, 8),
27 BPF_JMP_REG(BPF_JGT
, BPF_REG_4
, BPF_REG_3
, 1),
28 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_0
, 0),
29 BPF_MOV64_IMM(BPF_REG_0
, 0),
33 .errstr
= "invalid access to packet, off=-8",
34 .prog_type
= BPF_PROG_TYPE_XDP
,
39 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
40 offsetof(struct xdp_md
, data_meta
)),
41 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
,
42 offsetof(struct xdp_md
, data_end
)),
43 BPF_MOV64_REG(BPF_REG_0
, BPF_REG_2
),
44 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_0
, 8),
45 BPF_JMP_REG(BPF_JGT
, BPF_REG_0
, BPF_REG_3
, 1),
46 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_2
, 0),
47 BPF_MOV64_IMM(BPF_REG_0
, 0),
51 .errstr
= "invalid access to packet",
52 .prog_type
= BPF_PROG_TYPE_XDP
,
57 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
58 offsetof(struct xdp_md
, data_meta
)),
59 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
,
60 offsetof(struct xdp_md
, data_end
)),
61 BPF_LDX_MEM(BPF_W
, BPF_REG_4
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
62 BPF_MOV64_REG(BPF_REG_0
, BPF_REG_4
),
63 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_0
, 8),
64 BPF_JMP_REG(BPF_JGT
, BPF_REG_0
, BPF_REG_3
, 1),
65 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_2
, 0),
66 BPF_MOV64_IMM(BPF_REG_0
, 0),
70 .errstr
= "invalid access to packet",
71 .prog_type
= BPF_PROG_TYPE_XDP
,
76 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
,
77 offsetof(struct xdp_md
, data_meta
)),
78 BPF_LDX_MEM(BPF_W
, BPF_REG_4
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
79 BPF_MOV64_REG(BPF_REG_0
, BPF_REG_3
),
80 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_0
, 8),
81 BPF_JMP_REG(BPF_JGT
, BPF_REG_0
, BPF_REG_4
, 3),
82 BPF_MOV64_IMM(BPF_REG_2
, -8),
83 BPF_RAW_INSN(BPF_JMP
| BPF_CALL
, 0, 0, 0, BPF_FUNC_xdp_adjust_meta
),
84 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_3
, 0),
85 BPF_MOV64_IMM(BPF_REG_0
, 0),
89 .errstr
= "R3 !read_ok",
90 .prog_type
= BPF_PROG_TYPE_XDP
,
95 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
96 offsetof(struct xdp_md
, data_meta
)),
97 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
98 BPF_MOV64_REG(BPF_REG_0
, BPF_REG_3
),
99 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_0
, 8),
100 BPF_MOV64_REG(BPF_REG_4
, BPF_REG_2
),
101 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_4
, 8),
102 BPF_JMP_REG(BPF_JGT
, BPF_REG_4
, BPF_REG_0
, 1),
103 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_2
, 0),
104 BPF_MOV64_IMM(BPF_REG_0
, 0),
108 .errstr
= "invalid access to packet",
109 .prog_type
= BPF_PROG_TYPE_XDP
,
112 "meta access, test7",
114 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
115 offsetof(struct xdp_md
, data_meta
)),
116 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
117 BPF_MOV64_REG(BPF_REG_0
, BPF_REG_3
),
118 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_0
, 8),
119 BPF_MOV64_REG(BPF_REG_4
, BPF_REG_2
),
120 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_4
, 8),
121 BPF_JMP_REG(BPF_JGT
, BPF_REG_4
, BPF_REG_3
, 1),
122 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_2
, 0),
123 BPF_MOV64_IMM(BPF_REG_0
, 0),
127 .prog_type
= BPF_PROG_TYPE_XDP
,
130 "meta access, test8",
132 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
133 offsetof(struct xdp_md
, data_meta
)),
134 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
135 BPF_MOV64_REG(BPF_REG_4
, BPF_REG_2
),
136 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_4
, 0xFFFF),
137 BPF_JMP_REG(BPF_JGT
, BPF_REG_4
, BPF_REG_3
, 1),
138 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_2
, 0),
139 BPF_MOV64_IMM(BPF_REG_0
, 0),
143 .prog_type
= BPF_PROG_TYPE_XDP
,
146 "meta access, test9",
148 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
149 offsetof(struct xdp_md
, data_meta
)),
150 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
151 BPF_MOV64_REG(BPF_REG_4
, BPF_REG_2
),
152 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_4
, 0xFFFF),
153 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_4
, 1),
154 BPF_JMP_REG(BPF_JGT
, BPF_REG_4
, BPF_REG_3
, 1),
155 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_2
, 0),
156 BPF_MOV64_IMM(BPF_REG_0
, 0),
160 .errstr
= "invalid access to packet",
161 .prog_type
= BPF_PROG_TYPE_XDP
,
164 "meta access, test10",
166 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
167 offsetof(struct xdp_md
, data_meta
)),
168 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
169 BPF_LDX_MEM(BPF_W
, BPF_REG_4
, BPF_REG_1
,
170 offsetof(struct xdp_md
, data_end
)),
171 BPF_MOV64_IMM(BPF_REG_5
, 42),
172 BPF_MOV64_IMM(BPF_REG_6
, 24),
173 BPF_STX_MEM(BPF_DW
, BPF_REG_10
, BPF_REG_5
, -8),
174 BPF_STX_XADD(BPF_DW
, BPF_REG_10
, BPF_REG_6
, -8),
175 BPF_LDX_MEM(BPF_DW
, BPF_REG_5
, BPF_REG_10
, -8),
176 BPF_JMP_IMM(BPF_JGT
, BPF_REG_5
, 100, 6),
177 BPF_ALU64_REG(BPF_ADD
, BPF_REG_3
, BPF_REG_5
),
178 BPF_MOV64_REG(BPF_REG_5
, BPF_REG_3
),
179 BPF_MOV64_REG(BPF_REG_6
, BPF_REG_2
),
180 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_6
, 8),
181 BPF_JMP_REG(BPF_JGT
, BPF_REG_6
, BPF_REG_5
, 1),
182 BPF_LDX_MEM(BPF_B
, BPF_REG_2
, BPF_REG_2
, 0),
183 BPF_MOV64_IMM(BPF_REG_0
, 0),
187 .errstr
= "invalid access to packet",
188 .prog_type
= BPF_PROG_TYPE_XDP
,
191 "meta access, test11",
193 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
194 offsetof(struct xdp_md
, data_meta
)),
195 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
196 BPF_MOV64_IMM(BPF_REG_5
, 42),
197 BPF_MOV64_IMM(BPF_REG_6
, 24),
198 BPF_STX_MEM(BPF_DW
, BPF_REG_10
, BPF_REG_5
, -8),
199 BPF_STX_XADD(BPF_DW
, BPF_REG_10
, BPF_REG_6
, -8),
200 BPF_LDX_MEM(BPF_DW
, BPF_REG_5
, BPF_REG_10
, -8),
201 BPF_JMP_IMM(BPF_JGT
, BPF_REG_5
, 100, 6),
202 BPF_ALU64_REG(BPF_ADD
, BPF_REG_2
, BPF_REG_5
),
203 BPF_MOV64_REG(BPF_REG_5
, BPF_REG_2
),
204 BPF_MOV64_REG(BPF_REG_6
, BPF_REG_2
),
205 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_6
, 8),
206 BPF_JMP_REG(BPF_JGT
, BPF_REG_6
, BPF_REG_3
, 1),
207 BPF_LDX_MEM(BPF_B
, BPF_REG_5
, BPF_REG_5
, 0),
208 BPF_MOV64_IMM(BPF_REG_0
, 0),
212 .prog_type
= BPF_PROG_TYPE_XDP
,
215 "meta access, test12",
217 BPF_LDX_MEM(BPF_W
, BPF_REG_2
, BPF_REG_1
,
218 offsetof(struct xdp_md
, data_meta
)),
219 BPF_LDX_MEM(BPF_W
, BPF_REG_3
, BPF_REG_1
, offsetof(struct xdp_md
, data
)),
220 BPF_LDX_MEM(BPF_W
, BPF_REG_4
, BPF_REG_1
,
221 offsetof(struct xdp_md
, data_end
)),
222 BPF_MOV64_REG(BPF_REG_5
, BPF_REG_3
),
223 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_5
, 16),
224 BPF_JMP_REG(BPF_JGT
, BPF_REG_5
, BPF_REG_4
, 5),
225 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_3
, 0),
226 BPF_MOV64_REG(BPF_REG_5
, BPF_REG_2
),
227 BPF_ALU64_IMM(BPF_ADD
, BPF_REG_5
, 16),
228 BPF_JMP_REG(BPF_JGT
, BPF_REG_5
, BPF_REG_3
, 1),
229 BPF_LDX_MEM(BPF_B
, BPF_REG_0
, BPF_REG_2
, 0),
230 BPF_MOV64_IMM(BPF_REG_0
, 0),
234 .prog_type
= BPF_PROG_TYPE_XDP
,