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_ATOMIC_OP(BPF_DW, BPF_ADD, 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_ATOMIC_OP(BPF_DW, BPF_ADD, 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,