Linux Audio

Check our new training course

Loading...
Note: File does not exist in v6.13.7.
  1{
  2	"meta access, test1",
  3	.insns = {
  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),
 12	BPF_EXIT_INSN(),
 13	},
 14	.result = ACCEPT,
 15	.prog_type = BPF_PROG_TYPE_XDP,
 16},
 17{
 18	"meta access, test2",
 19	.insns = {
 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),
 30	BPF_EXIT_INSN(),
 31	},
 32	.result = REJECT,
 33	.errstr = "invalid access to packet, off=-8",
 34	.prog_type = BPF_PROG_TYPE_XDP,
 35},
 36{
 37	"meta access, test3",
 38	.insns = {
 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),
 48	BPF_EXIT_INSN(),
 49	},
 50	.result = REJECT,
 51	.errstr = "invalid access to packet",
 52	.prog_type = BPF_PROG_TYPE_XDP,
 53},
 54{
 55	"meta access, test4",
 56	.insns = {
 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),
 67	BPF_EXIT_INSN(),
 68	},
 69	.result = REJECT,
 70	.errstr = "invalid access to packet",
 71	.prog_type = BPF_PROG_TYPE_XDP,
 72},
 73{
 74	"meta access, test5",
 75	.insns = {
 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),
 86	BPF_EXIT_INSN(),
 87	},
 88	.result = REJECT,
 89	.errstr = "R3 !read_ok",
 90	.prog_type = BPF_PROG_TYPE_XDP,
 91},
 92{
 93	"meta access, test6",
 94	.insns = {
 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),
105	BPF_EXIT_INSN(),
106	},
107	.result = REJECT,
108	.errstr = "invalid access to packet",
109	.prog_type = BPF_PROG_TYPE_XDP,
110},
111{
112	"meta access, test7",
113	.insns = {
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),
124	BPF_EXIT_INSN(),
125	},
126	.result = ACCEPT,
127	.prog_type = BPF_PROG_TYPE_XDP,
128},
129{
130	"meta access, test8",
131	.insns = {
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),
140	BPF_EXIT_INSN(),
141	},
142	.result = ACCEPT,
143	.prog_type = BPF_PROG_TYPE_XDP,
144},
145{
146	"meta access, test9",
147	.insns = {
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),
157	BPF_EXIT_INSN(),
158	},
159	.result = REJECT,
160	.errstr = "invalid access to packet",
161	.prog_type = BPF_PROG_TYPE_XDP,
162},
163{
164	"meta access, test10",
165	.insns = {
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),
184	BPF_EXIT_INSN(),
185	},
186	.result = REJECT,
187	.errstr = "invalid access to packet",
188	.prog_type = BPF_PROG_TYPE_XDP,
189},
190{
191	"meta access, test11",
192	.insns = {
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),
209	BPF_EXIT_INSN(),
210	},
211	.result = ACCEPT,
212	.prog_type = BPF_PROG_TYPE_XDP,
213},
214{
215	"meta access, test12",
216	.insns = {
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),
231	BPF_EXIT_INSN(),
232	},
233	.result = ACCEPT,
234	.prog_type = BPF_PROG_TYPE_XDP,
235},