]> git.ipfire.org Git - thirdparty/nftables.git/blob - tests/py/any/meta.t.payload
tests: py: Add meta time tests without 'meta' keyword
[thirdparty/nftables.git] / tests / py / any / meta.t.payload
1 # meta length 1000
2 ip test-ip4 input
3 [ meta load len => reg 1 ]
4 [ cmp eq reg 1 0x000003e8 ]
5
6 # meta length 22
7 ip test-ip4 input
8 [ meta load len => reg 1 ]
9 [ cmp eq reg 1 0x00000016 ]
10
11 # meta length != 233
12 ip test-ip4 input
13 [ meta load len => reg 1 ]
14 [ cmp neq reg 1 0x000000e9 ]
15
16 # meta length 33-45
17 ip test-ip4 input
18 [ meta load len => reg 1 ]
19 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
20 [ cmp gte reg 1 0x21000000 ]
21 [ cmp lte reg 1 0x2d000000 ]
22
23 # meta length != 33-45
24 ip test-ip4 input
25 [ meta load len => reg 1 ]
26 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
27 [ range neq reg 1 0x21000000 0x2d000000 ]
28
29 # meta length { 33, 55, 67, 88}
30 __set%d test-ip4 3
31 __set%d test-ip4 0
32 element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
33 ip test-ip4 input
34 [ meta load len => reg 1 ]
35 [ lookup reg 1 set __set%d ]
36
37 # meta length { 33-55, 67-88}
38 __set%d test-ip4 7
39 __set%d test-ip4 0
40 element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] element 43000000 : 0 [end] element 59000000 : 1 [end]
41 ip test-ip4 input
42 [ meta load len => reg 1 ]
43 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
44 [ lookup reg 1 set __set%d ]
45
46 # meta length { 33-55, 56-88, 100-120}
47 __set%d test-ip4 7
48 __set%d test-ip4 0
49 element 00000000 : 1 [end] element 21000000 : 0 [end] element 59000000 : 1 [end] element 64000000 : 0 [end] element 79000000 : 1 [end]
50 ip test-ip4 input
51 [ meta load len => reg 1 ]
52 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
53 [ lookup reg 1 set __set%d ]
54
55 # meta length != { 33, 55, 67, 88}
56 __set%d test-ip4 3
57 __set%d test-ip4 0
58 element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
59 ip test-ip4 input
60 [ meta load len => reg 1 ]
61 [ lookup reg 1 set __set%d 0x1 ]
62
63 # meta protocol { ip, arp, ip6, vlan }
64 __set%d test-ip4 3
65 __set%d test-ip4 0
66 element 00000008 : 0 [end] element 00000608 : 0 [end] element 0000dd86 : 0 [end] element 00000081 : 0 [end]
67 ip test-ip4 input
68 [ meta load protocol => reg 1 ]
69 [ lookup reg 1 set __set%d ]
70
71 # meta protocol != {ip, arp, ip6, 8021q}
72 __set%d test-ip4 3
73 __set%d test-ip4 0
74 element 00000008 : 0 [end] element 00000608 : 0 [end] element 0000dd86 : 0 [end] element 00000081 : 0 [end]
75 ip test-ip4 input
76 [ meta load protocol => reg 1 ]
77 [ lookup reg 1 set __set%d 0x1 ]
78
79 # meta protocol ip
80 ip test-ip4 input
81 [ meta load protocol => reg 1 ]
82 [ cmp eq reg 1 0x00000008 ]
83
84 # meta protocol != ip
85 ip test-ip4 input
86 [ meta load protocol => reg 1 ]
87 [ cmp neq reg 1 0x00000008 ]
88
89 # meta l4proto 22
90 ip test-ip4 input
91 [ meta load l4proto => reg 1 ]
92 [ cmp eq reg 1 0x00000016 ]
93
94 # meta l4proto != 233
95 ip test-ip4 input
96 [ meta load l4proto => reg 1 ]
97 [ cmp neq reg 1 0x000000e9 ]
98
99 # meta l4proto 33-45
100 ip test-ip4 input
101 [ meta load l4proto => reg 1 ]
102 [ cmp gte reg 1 0x00000021 ]
103 [ cmp lte reg 1 0x0000002d ]
104
105 # meta l4proto != 33-45
106 ip test-ip4 input
107 [ meta load l4proto => reg 1 ]
108 [ range neq reg 1 0x00000021 0x0000002d ]
109
110 # meta l4proto { 33, 55, 67, 88}
111 __set%d test-ip4 3
112 __set%d test-ip4 0
113 element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
114 ip test-ip4 input
115 [ meta load l4proto => reg 1 ]
116 [ lookup reg 1 set __set%d ]
117
118 # meta l4proto != { 33, 55, 67, 88}
119 __set%d test-ip4 3
120 __set%d test-ip4 0
121 element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
122 ip test-ip4 input
123 [ meta load l4proto => reg 1 ]
124 [ lookup reg 1 set __set%d 0x1 ]
125
126 # meta mark 0x4
127 ip test-ip4 input
128 [ meta load mark => reg 1 ]
129 [ cmp eq reg 1 0x00000004 ]
130
131 # meta mark 0x32
132 ip test-ip4 input
133 [ meta load mark => reg 1 ]
134 [ cmp eq reg 1 0x00000032 ]
135
136 # meta mark and 0x03 == 0x01
137 ip test-ip4 input
138 [ meta load mark => reg 1 ]
139 [ bitwise reg 1 = ( reg 1 & 0x00000003 ) ^ 0x00000000 ]
140 [ cmp eq reg 1 0x00000001 ]
141
142 # meta mark and 0x03 != 0x01
143 ip test-ip4 input
144 [ meta load mark => reg 1 ]
145 [ bitwise reg 1 = ( reg 1 & 0x00000003 ) ^ 0x00000000 ]
146 [ cmp neq reg 1 0x00000001 ]
147
148 # meta mark 0x10
149 ip test-ip4 input
150 [ meta load mark => reg 1 ]
151 [ cmp eq reg 1 0x00000010 ]
152
153 # meta mark != 0x10
154 ip test-ip4 input
155 [ meta load mark => reg 1 ]
156 [ cmp neq reg 1 0x00000010 ]
157
158 # meta mark 0xffffff00/24
159 ip test-ip4 input
160 [ meta load mark => reg 1 ]
161 [ bitwise reg 1 = ( reg 1 & 0xffffff00 ) ^ 0x00000000 ]
162 [ cmp eq reg 1 0xffffff00 ]
163
164 # meta mark or 0x03 == 0x01
165 ip test-ip4 input
166 [ meta load mark => reg 1 ]
167 [ bitwise reg 1 = ( reg 1 & 0xfffffffc ) ^ 0x00000003 ]
168 [ cmp eq reg 1 0x00000001 ]
169
170 # meta mark or 0x03 != 0x01
171 ip test-ip4 input
172 [ meta load mark => reg 1 ]
173 [ bitwise reg 1 = ( reg 1 & 0xfffffffc ) ^ 0x00000003 ]
174 [ cmp neq reg 1 0x00000001 ]
175
176 # meta mark xor 0x03 == 0x01
177 ip test-ip4 input
178 [ meta load mark => reg 1 ]
179 [ cmp eq reg 1 0x00000002 ]
180
181 # meta mark xor 0x03 != 0x01
182 ip test-ip4 input
183 [ meta load mark => reg 1 ]
184 [ cmp neq reg 1 0x00000002 ]
185
186 # meta iif "lo" accept
187 ip test-ip4 input
188 [ meta load iif => reg 1 ]
189 [ cmp eq reg 1 0x00000001 ]
190 [ immediate reg 0 accept ]
191
192 # meta iif != "lo" accept
193 ip test-ip4 input
194 [ meta load iif => reg 1 ]
195 [ cmp neq reg 1 0x00000001 ]
196 [ immediate reg 0 accept ]
197
198 # meta iifname "dummy0"
199 ip test-ip4 input
200 [ meta load iifname => reg 1 ]
201 [ cmp eq reg 1 0x6d6d7564 0x00003079 0x00000000 0x00000000 ]
202
203 # meta iifname != "dummy0"
204 ip test-ip4 input
205 [ meta load iifname => reg 1 ]
206 [ cmp neq reg 1 0x6d6d7564 0x00003079 0x00000000 0x00000000 ]
207
208 # meta iifname {"dummy0", "lo"}
209 __set%d test-ip4 3
210 __set%d test-ip4 0
211 element 6d6d7564 00003079 00000000 00000000 : 0 [end] element 00006f6c 00000000 00000000 00000000 : 0 [end]
212 ip test-ip4 input
213 [ meta load iifname => reg 1 ]
214 [ lookup reg 1 set __set%d ]
215
216 # meta iifname != {"dummy0", "lo"}
217 __set%d test-ip4 3
218 __set%d test-ip4 0
219 element 6d6d7564 00003079 00000000 00000000 : 0 [end] element 00006f6c 00000000 00000000 00000000 : 0 [end]
220 ip test-ip4 input
221 [ meta load iifname => reg 1 ]
222 [ lookup reg 1 set __set%d 0x1 ]
223
224 # meta iifname "dummy*"
225 ip test-ip4 input
226 [ meta load iifname => reg 1 ]
227 [ cmp eq reg 1 0x6d6d7564 0x00000079 ]
228
229 # meta iifname "dummy\*"
230 ip test-ip4 input
231 [ meta load iifname => reg 1 ]
232 [ cmp eq reg 1 0x6d6d7564 0x00002a79 0x00000000 0x00000000 ]
233
234 # meta iiftype {ether, ppp, ipip, ipip6, loopback, sit, ipgre}
235 __set%d test-ip4 3
236 __set%d test-ip4 0
237 element 00000001 : 0 [end] element 00000200 : 0 [end] element 00000300 : 0 [end] element 00000301 : 0 [end] element 00000304 : 0 [end] element 00000308 : 0 [end] element 0000030a : 0 [end]
238 ip test-ip4 input
239 [ meta load iiftype => reg 1 ]
240 [ lookup reg 1 set __set%d ]
241
242 # meta iiftype != {ether, ppp, ipip, ipip6, loopback, sit, ipgre}
243 __set%d test-ip4 3
244 __set%d test-ip4 0
245 element 00000001 : 0 [end] element 00000200 : 0 [end] element 00000300 : 0 [end] element 00000301 : 0 [end] element 00000304 : 0 [end] element 00000308 : 0 [end] element 0000030a : 0 [end]
246 ip test-ip4 input
247 [ meta load iiftype => reg 1 ]
248 [ lookup reg 1 set __set%d 0x1 ]
249
250 # meta iiftype != ether
251 ip test-ip4 input
252 [ meta load iiftype => reg 1 ]
253 [ cmp neq reg 1 0x00000001 ]
254
255 # meta iiftype ether
256 ip test-ip4 input
257 [ meta load iiftype => reg 1 ]
258 [ cmp eq reg 1 0x00000001 ]
259
260 # meta iiftype != ppp
261 ip test-ip4 input
262 [ meta load iiftype => reg 1 ]
263 [ cmp neq reg 1 0x00000200 ]
264
265 # meta iiftype ppp
266 ip test-ip4 input
267 [ meta load iiftype => reg 1 ]
268 [ cmp eq reg 1 0x00000200 ]
269
270 # meta oif "lo" accept
271 ip test-ip4 input
272 [ meta load oif => reg 1 ]
273 [ cmp eq reg 1 0x00000001 ]
274 [ immediate reg 0 accept ]
275
276 # meta oif != "lo" accept
277 ip test-ip4 input
278 [ meta load oif => reg 1 ]
279 [ cmp neq reg 1 0x00000001 ]
280 [ immediate reg 0 accept ]
281
282 # meta oifname "dummy0"
283 ip test-ip4 input
284 [ meta load oifname => reg 1 ]
285 [ cmp eq reg 1 0x6d6d7564 0x00003079 0x00000000 0x00000000 ]
286
287 # meta oifname != "dummy0"
288 ip test-ip4 input
289 [ meta load oifname => reg 1 ]
290 [ cmp neq reg 1 0x6d6d7564 0x00003079 0x00000000 0x00000000 ]
291
292 # meta oifname { "dummy0", "lo"}
293 __set%d test-ip4 3
294 __set%d test-ip4 0
295 element 6d6d7564 00003079 00000000 00000000 : 0 [end] element 00006f6c 00000000 00000000 00000000 : 0 [end]
296 ip test-ip4 input
297 [ meta load oifname => reg 1 ]
298 [ lookup reg 1 set __set%d ]
299
300 # meta oifname "dummy*"
301 ip test-ip4 input
302 [ meta load oifname => reg 1 ]
303 [ cmp eq reg 1 0x6d6d7564 0x00000079 ]
304
305 # meta oifname "dummy\*"
306 ip test-ip4 input
307 [ meta load oifname => reg 1 ]
308 [ cmp eq reg 1 0x6d6d7564 0x00002a79 0x00000000 0x00000000 ]
309
310 # meta oiftype {ether, ppp, ipip, ipip6, loopback, sit, ipgre}
311 __set%d test-ip4 3
312 __set%d test-ip4 0
313 element 00000001 : 0 [end] element 00000200 : 0 [end] element 00000300 : 0 [end] element 00000301 : 0 [end] element 00000304 : 0 [end] element 00000308 : 0 [end] element 0000030a : 0 [end]
314 ip test-ip4 input
315 [ meta load oiftype => reg 1 ]
316 [ lookup reg 1 set __set%d ]
317
318 # meta oiftype != {ether, ppp, ipip, ipip6, loopback, sit, ipgre}
319 __set%d test-ip4 3
320 __set%d test-ip4 0
321 element 00000001 : 0 [end] element 00000200 : 0 [end] element 00000300 : 0 [end] element 00000301 : 0 [end] element 00000304 : 0 [end] element 00000308 : 0 [end] element 0000030a : 0 [end]
322 ip test-ip4 input
323 [ meta load oiftype => reg 1 ]
324 [ lookup reg 1 set __set%d 0x1 ]
325
326 # meta oiftype != ether
327 ip test-ip4 input
328 [ meta load oiftype => reg 1 ]
329 [ cmp neq reg 1 0x00000001 ]
330
331 # meta oiftype ether
332 ip test-ip4 input
333 [ meta load oiftype => reg 1 ]
334 [ cmp eq reg 1 0x00000001 ]
335
336 # meta skuid {"bin", "root", "daemon"} accept
337 __set%d test-ip4 3
338 __set%d test-ip4 0
339 element 00000001 : 0 [end] element 00000000 : 0 [end] element 00000002 : 0 [end]
340 ip test-ip4 input
341 [ meta load skuid => reg 1 ]
342 [ lookup reg 1 set __set%d ]
343 [ immediate reg 0 accept ]
344
345 # meta skuid != {"bin", "root", "daemon"} accept
346 __set%d test-ip4 3
347 __set%d test-ip4 0
348 element 00000001 : 0 [end] element 00000000 : 0 [end] element 00000002 : 0 [end]
349 ip test-ip4 input
350 [ meta load skuid => reg 1 ]
351 [ lookup reg 1 set __set%d 0x1 ]
352 [ immediate reg 0 accept ]
353
354 # meta skuid "root"
355 ip test-ip4 input
356 [ meta load skuid => reg 1 ]
357 [ cmp eq reg 1 0x00000000 ]
358
359 # meta skuid != "root"
360 ip test-ip4 input
361 [ meta load skuid => reg 1 ]
362 [ cmp neq reg 1 0x00000000 ]
363
364 # meta skuid lt 3000 accept
365 ip test-ip4 input
366 [ meta load skuid => reg 1 ]
367 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
368 [ cmp lt reg 1 0xb80b0000 ]
369 [ immediate reg 0 accept ]
370
371 # meta skuid gt 3000 accept
372 ip test-ip4 input
373 [ meta load skuid => reg 1 ]
374 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
375 [ cmp gt reg 1 0xb80b0000 ]
376 [ immediate reg 0 accept ]
377
378 # meta skuid eq 3000 accept
379 ip test-ip4 input
380 [ meta load skuid => reg 1 ]
381 [ cmp eq reg 1 0x00000bb8 ]
382 [ immediate reg 0 accept ]
383
384 # meta skuid 3001-3005 accept
385 ip test-ip4 input
386 [ meta load skuid => reg 1 ]
387 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
388 [ cmp gte reg 1 0xb90b0000 ]
389 [ cmp lte reg 1 0xbd0b0000 ]
390 [ immediate reg 0 accept ]
391
392 # meta skuid != 2001-2005 accept
393 ip test-ip4 input
394 [ meta load skuid => reg 1 ]
395 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
396 [ range neq reg 1 0xd1070000 0xd5070000 ]
397 [ immediate reg 0 accept ]
398
399 # meta skgid {"bin", "root", "daemon"} accept
400 __set%d test-ip4 3
401 __set%d test-ip4 0
402 element 00000001 : 0 [end] element 00000000 : 0 [end] element 00000002 : 0 [end]
403 ip test-ip4 input
404 [ meta load skgid => reg 1 ]
405 [ lookup reg 1 set __set%d ]
406 [ immediate reg 0 accept ]
407
408 # meta skgid != {"bin", "root", "daemon"} accept
409 __set%d test-ip4 3
410 __set%d test-ip4 0
411 element 00000001 : 0 [end] element 00000000 : 0 [end] element 00000002 : 0 [end]
412 ip test-ip4 input
413 [ meta load skgid => reg 1 ]
414 [ lookup reg 1 set __set%d 0x1 ]
415 [ immediate reg 0 accept ]
416
417 # meta skgid "root"
418 ip test-ip4 input
419 [ meta load skgid => reg 1 ]
420 [ cmp eq reg 1 0x00000000 ]
421
422 # meta skgid != "root"
423 ip test-ip4 input
424 [ meta load skgid => reg 1 ]
425 [ cmp neq reg 1 0x00000000 ]
426
427 # meta skgid lt 3000 accept
428 ip test-ip4 input
429 [ meta load skgid => reg 1 ]
430 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
431 [ cmp lt reg 1 0xb80b0000 ]
432 [ immediate reg 0 accept ]
433
434 # meta skgid gt 3000 accept
435 ip test-ip4 input
436 [ meta load skgid => reg 1 ]
437 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
438 [ cmp gt reg 1 0xb80b0000 ]
439 [ immediate reg 0 accept ]
440
441 # meta skgid eq 3000 accept
442 ip test-ip4 input
443 [ meta load skgid => reg 1 ]
444 [ cmp eq reg 1 0x00000bb8 ]
445 [ immediate reg 0 accept ]
446
447 # meta skgid 2001-2005 accept
448 ip test-ip4 input
449 [ meta load skgid => reg 1 ]
450 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
451 [ cmp gte reg 1 0xd1070000 ]
452 [ cmp lte reg 1 0xd5070000 ]
453 [ immediate reg 0 accept ]
454
455 # meta skgid != 2001-2005 accept
456 ip test-ip4 input
457 [ meta load skgid => reg 1 ]
458 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
459 [ range neq reg 1 0xd1070000 0xd5070000 ]
460 [ immediate reg 0 accept ]
461
462 # meta mark set 0xffffffc8 xor 0x16
463 ip test-ip4 input
464 [ immediate reg 1 0xffffffde ]
465 [ meta set mark with reg 1 ]
466
467 # meta mark set 0x16 and 0x16
468 ip test-ip4 input
469 [ immediate reg 1 0x00000016 ]
470 [ meta set mark with reg 1 ]
471
472 # meta mark set 0xffffffe9 or 0x16
473 ip test-ip4 input
474 [ immediate reg 1 0xffffffff ]
475 [ meta set mark with reg 1 ]
476
477 # meta mark set 0xffffffde and 0x16
478 ip test-ip4 input
479 [ immediate reg 1 0x00000016 ]
480 [ meta set mark with reg 1 ]
481
482 # meta mark set 0xf045ffde or 0x10
483 ip test-ip4 input
484 [ immediate reg 1 0xf045ffde ]
485 [ meta set mark with reg 1 ]
486
487 # meta mark set 0xffffffde or 0x16
488 ip test-ip4 input
489 [ immediate reg 1 0xffffffde ]
490 [ meta set mark with reg 1 ]
491
492 # meta mark set 0x32 or 0xfffff
493 ip test-ip4 input
494 [ immediate reg 1 0x000fffff ]
495 [ meta set mark with reg 1 ]
496
497 # meta mark set 0xfffe xor 0x16
498 ip test-ip4 input
499 [ immediate reg 1 0x0000ffe8 ]
500 [ meta set mark with reg 1 ]
501
502 # meta iif "lo"
503 ip test-ip4 input
504 [ meta load iif => reg 1 ]
505 [ cmp eq reg 1 0x00000001 ]
506
507 # meta oif "lo"
508 ip test-ip4 input
509 [ meta load oif => reg 1 ]
510 [ cmp eq reg 1 0x00000001 ]
511
512 # meta oifname "dummy2" accept
513 ip test-ip4 input
514 [ meta load oifname => reg 1 ]
515 [ cmp eq reg 1 0x6d6d7564 0x00003279 0x00000000 0x00000000 ]
516 [ immediate reg 0 accept ]
517
518 # meta skuid 3000
519 ip test-ip4 input
520 [ meta load skuid => reg 1 ]
521 [ cmp eq reg 1 0x00000bb8 ]
522
523 # meta skgid 3000
524 ip test-ip4 input
525 [ meta load skgid => reg 1 ]
526 [ cmp eq reg 1 0x00000bb8 ]
527
528 # meta rtclassid "cosmos"
529 ip test-ip4 input
530 [ meta load rtclassid => reg 1 ]
531 [ cmp eq reg 1 0x00000000 ]
532
533 # meta pkttype broadcast
534 ip test-ip4 input
535 [ meta load pkttype => reg 1 ]
536 [ cmp eq reg 1 0x00000001 ]
537
538 # meta pkttype host
539 ip test-ip4 input
540 [ meta load pkttype => reg 1 ]
541 [ cmp eq reg 1 0x00000000 ]
542
543 # meta pkttype multicast
544 ip test-ip4 input
545 [ meta load pkttype => reg 1 ]
546 [ cmp eq reg 1 0x00000002 ]
547
548 # meta pkttype != broadcast
549 ip test-ip4 input
550 [ meta load pkttype => reg 1 ]
551 [ cmp neq reg 1 0x00000001 ]
552
553 # meta pkttype != host
554 ip test-ip4 input
555 [ meta load pkttype => reg 1 ]
556 [ cmp neq reg 1 0x00000000 ]
557
558 # meta pkttype != multicast
559 ip test-ip4 input
560 [ meta load pkttype => reg 1 ]
561 [ cmp neq reg 1 0x00000002 ]
562
563 # pkttype { broadcast, multicast} accept
564 __set%d test-ip4 3
565 __set%d test-ip4 0
566 element 00000001 : 0 [end] element 00000002 : 0 [end]
567 ip test-ip4 input
568 [ meta load pkttype => reg 1 ]
569 [ lookup reg 1 set __set%d ]
570 [ immediate reg 0 accept ]
571
572 # meta cpu 1
573 ip test-ip4 input
574 [ meta load cpu => reg 1 ]
575 [ cmp eq reg 1 0x00000001 ]
576
577 # meta cpu != 1
578 ip test-ip4 input
579 [ meta load cpu => reg 1 ]
580 [ cmp neq reg 1 0x00000001 ]
581
582 # meta cpu 1-3
583 ip test-ip4 input
584 [ meta load cpu => reg 1 ]
585 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
586 [ cmp gte reg 1 0x01000000 ]
587 [ cmp lte reg 1 0x03000000 ]
588
589 # meta cpu != 1-2
590 ip test-ip4 input
591 [ meta load cpu => reg 1 ]
592 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
593 [ range neq reg 1 0x01000000 0x02000000 ]
594
595 # meta cpu { 2,3}
596 __set%d test-ip4 3
597 __set%d test-ip4 0
598 element 00000002 : 0 [end] element 00000003 : 0 [end]
599 ip test-ip4 input
600 [ meta load cpu => reg 1 ]
601 [ lookup reg 1 set __set%d ]
602
603 # meta cpu != { 2,3}
604 __set%d test-ip4 3
605 __set%d test-ip4 0
606 element 00000002 : 0 [end] element 00000003 : 0 [end]
607 ip test-ip4 input
608 [ meta load cpu => reg 1 ]
609 [ lookup reg 1 set __set%d 0x1 ]
610
611 # meta cpu { 2-3, 5-7}
612 __set%d test-ip4 7
613 __set%d test-ip4 0
614 element 00000000 : 1 [end] element 02000000 : 0 [end] element 04000000 : 1 [end] element 05000000 : 0 [end] element 08000000 : 1 [end]
615 ip test-ip4 input
616 [ meta load cpu => reg 1 ]
617 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
618 [ lookup reg 1 set __set%d ]
619
620 # meta iifgroup 0
621 ip test-ip4 input
622 [ meta load iifgroup => reg 1 ]
623 [ cmp eq reg 1 0x00000000 ]
624
625 # meta iifgroup != 0
626 ip test-ip4 input
627 [ meta load iifgroup => reg 1 ]
628 [ cmp neq reg 1 0x00000000 ]
629
630 # meta iifgroup "default"
631 ip test-ip4 input
632 [ meta load iifgroup => reg 1 ]
633 [ cmp eq reg 1 0x00000000 ]
634
635 # meta iifgroup != "default"
636 ip test-ip4 input
637 [ meta load iifgroup => reg 1 ]
638 [ cmp neq reg 1 0x00000000 ]
639
640 # meta iifgroup { 11,33}
641 __set%d test-ip4 3
642 __set%d test-ip4 0
643 element 0000000b : 0 [end] element 00000021 : 0 [end]
644 ip test-ip4 input
645 [ meta load iifgroup => reg 1 ]
646 [ lookup reg 1 set __set%d ]
647
648 # meta oifgroup 0
649 ip test-ip4 input
650 [ meta load oifgroup => reg 1 ]
651 [ cmp eq reg 1 0x00000000 ]
652
653 # meta oifgroup != 0
654 ip test-ip4 input
655 [ meta load oifgroup => reg 1 ]
656 [ cmp neq reg 1 0x00000000 ]
657
658 # meta oifgroup "default"
659 ip test-ip4 input
660 [ meta load oifgroup => reg 1 ]
661 [ cmp eq reg 1 0x00000000 ]
662
663 # meta oifgroup != "default"
664 ip test-ip4 input
665 [ meta load oifgroup => reg 1 ]
666 [ cmp neq reg 1 0x00000000 ]
667
668 # meta oifgroup { 11,33}
669 __set%d test-ip4 3
670 __set%d test-ip4 0
671 element 0000000b : 0 [end] element 00000021 : 0 [end]
672 ip test-ip4 input
673 [ meta load oifgroup => reg 1 ]
674 [ lookup reg 1 set __set%d ]
675
676 # meta cgroup 1048577
677 ip test-ip4 input
678 [ meta load cgroup => reg 1 ]
679 [ cmp eq reg 1 0x00100001 ]
680
681 # meta cgroup != 1048577
682 ip test-ip4 input
683 [ meta load cgroup => reg 1 ]
684 [ cmp neq reg 1 0x00100001 ]
685
686 # meta cgroup { 1048577, 1048578 }
687 __set%d test-ip4 3
688 __set%d test-ip4 0
689 element 00100001 : 0 [end] element 00100002 : 0 [end]
690 ip test-ip4 input
691 [ meta load cgroup => reg 1 ]
692 [ lookup reg 1 set __set%d ]
693
694 # meta cgroup != { 1048577, 1048578}
695 __set%d test-ip4 3
696 __set%d test-ip4 0
697 element 00100001 : 0 [end] element 00100002 : 0 [end]
698 ip test-ip4 input
699 [ meta load cgroup => reg 1 ]
700 [ lookup reg 1 set __set%d 0x1 ]
701
702 # meta cgroup 1048577-1048578
703 ip test-ip4 input
704 [ meta load cgroup => reg 1 ]
705 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
706 [ cmp gte reg 1 0x01001000 ]
707 [ cmp lte reg 1 0x02001000 ]
708
709 # meta cgroup != 1048577-1048578
710 ip test-ip4 input
711 [ meta load cgroup => reg 1 ]
712 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
713 [ range neq reg 1 0x01001000 0x02001000 ]
714
715 # meta iif . meta oif { "lo" . "lo" }
716 __set%d test-ip4 3
717 __set%d test-ip4 0
718 element 00000001 00000001 : 0 [end]
719 ip test-ip4 output
720 [ meta load iif => reg 1 ]
721 [ meta load oif => reg 9 ]
722 [ lookup reg 1 set __set%d ]
723
724 # meta iif . meta oif . meta mark { "lo" . "lo" . 0x0000000a }
725 __set%d test-ip4 3
726 __set%d test-ip4 0
727 element 00000001 00000001 0000000a : 0 [end]
728 ip test-ip4 output
729 [ meta load iif => reg 1 ]
730 [ meta load oif => reg 9 ]
731 [ meta load mark => reg 10 ]
732 [ lookup reg 1 set __set%d ]
733
734 # meta iif . meta oif vmap { "lo" . "lo" : drop }
735 __map%d test-ip4 b
736 __map%d test-ip4 0
737 element 00000001 00000001 : drop 0 [end]
738 ip test-ip4 output
739 [ meta load iif => reg 1 ]
740 [ meta load oif => reg 9 ]
741 [ lookup reg 1 set __map%d dreg 0 ]
742
743 # meta random eq 1
744 ip test-ip4 input
745 [ meta load prandom => reg 1 ]
746 [ cmp eq reg 1 0x01000000 ]
747
748 # meta random gt 1000000
749 ip test-ip4 input
750 [ meta load prandom => reg 1 ]
751 [ cmp gt reg 1 0x40420f00 ]
752
753 # meta priority root
754 ip test-ip4 input
755 [ meta load priority => reg 1 ]
756 [ cmp eq reg 1 0xffffffff ]
757
758 # meta priority none
759 netdev test-netdev ingress
760 [ meta load priority => reg 1 ]
761 [ cmp eq reg 1 0x00000000 ]
762
763 # meta priority 1:1234
764 ip test-ip4 input
765 [ meta load priority => reg 1 ]
766 [ cmp eq reg 1 0x00011234 ]
767
768 # meta priority bcad:dadc
769 ip test-ip4 input
770 [ meta load priority => reg 1 ]
771 [ cmp eq reg 1 0xbcaddadc ]
772
773 # meta priority aabb:0
774 ip test-ip4 input
775 [ meta load priority => reg 1 ]
776 [ cmp eq reg 1 0xaabb0000 ]
777
778 # meta priority != bcad:dadc
779 ip test-ip4 input
780 [ meta load priority => reg 1 ]
781 [ cmp neq reg 1 0xbcaddadc ]
782
783 # meta priority != aabb:0
784 ip test-ip4 input
785 [ meta load priority => reg 1 ]
786 [ cmp neq reg 1 0xaabb0000 ]
787
788 # meta priority bcad:dada-bcad:dadc
789 ip test-ip4 input
790 [ meta load priority => reg 1 ]
791 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
792 [ cmp gte reg 1 0xdadaadbc ]
793 [ cmp lte reg 1 0xdcdaadbc ]
794
795 # meta priority != bcad:dada-bcad:dadc
796 ip test-ip4 input
797 [ meta load priority => reg 1 ]
798 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
799 [ range neq reg 1 0xdadaadbc 0xdcdaadbc ]
800
801 # meta priority {bcad:dada, bcad:dadc, aaaa:bbbb}
802 __set%d test-ip4 3
803 __set%d test-ip4 0
804 element bcaddada : 0 [end] element bcaddadc : 0 [end] element aaaabbbb : 0 [end]
805 ip test-ip4 input
806 [ meta load priority => reg 1 ]
807 [ lookup reg 1 set __set%d ]
808
809 # meta priority set cafe:beef
810 ip test-ip4 input
811 [ immediate reg 1 0xcafebeef ]
812 [ meta set priority with reg 1 ]
813
814 # meta priority != {bcad:dada, bcad:dadc, aaaa:bbbb}
815 __set%d test-ip4 3
816 __set%d test-ip4 0
817 element bcaddada : 0 [end] element bcaddadc : 0 [end] element aaaabbbb : 0 [end]
818 ip test-ip4 input
819 [ meta load priority => reg 1 ]
820 [ lookup reg 1 set __set%d 0x1 ]
821
822 # meta priority 0x87654321
823 ip test-ip4 input
824 [ meta load priority => reg 1 ]
825 [ cmp eq reg 1 0x87654321 ]
826
827 # meta priority 2271560481
828 ip test-ip4 input
829 [ meta load priority => reg 1 ]
830 [ cmp eq reg 1 0x87654321 ]
831
832 # meta length { 33-55, 66-88}
833 __set%d test-ip4 7 size 5
834 __set%d test-ip4 0
835 element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] element 42000000 : 0 [end] element 59000000 : 1 [end]
836 ip test-ip4 input
837 [ meta load len => reg 1 ]
838 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
839 [ lookup reg 1 set __set%d ]
840
841 # meta length != { 33-55, 66-88}
842 __set%d test-ip4 7 size 5
843 __set%d test-ip4 0
844 element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] element 42000000 : 0 [end] element 59000000 : 1 [end]
845 ip test-ip4 input
846 [ meta load len => reg 1 ]
847 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
848 [ lookup reg 1 set __set%d 0x1 ]
849
850 # meta l4proto { 33-55, 66-88}
851 __set%d test-ip4 7 size 5
852 __set%d test-ip4 0
853 element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] element 00000042 : 0 [end] element 00000059 : 1 [end]
854 ip test-ip4 input
855 [ meta load l4proto => reg 1 ]
856 [ lookup reg 1 set __set%d ]
857
858 # meta l4proto != { 33-55, 66-88}
859 __set%d test-ip4 7 size 5
860 __set%d test-ip4 0
861 element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] element 00000042 : 0 [end] element 00000059 : 1 [end]
862 ip test-ip4 input
863 [ meta load l4proto => reg 1 ]
864 [ lookup reg 1 set __set%d 0x1 ]
865
866 # meta skuid { 2001-2005, 3001-3005} accept
867 __set%d test-ip4 7 size 5
868 __set%d test-ip4 0
869 element 00000000 : 1 [end] element d1070000 : 0 [end] element d6070000 : 1 [end] element b90b0000 : 0 [end] element be0b0000 : 1 [end]
870 ip test-ip4 input
871 [ meta load skuid => reg 1 ]
872 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
873 [ lookup reg 1 set __set%d ]
874 [ immediate reg 0 accept ]
875
876 # meta iifgroup {"default", 11}
877 __set%d test-ip4 3 size 2
878 __set%d test-ip4 0
879 element 00000000 : 0 [end] element 0000000b : 0 [end]
880 ip test-ip4 input
881 [ meta load iifgroup => reg 1 ]
882 [ lookup reg 1 set __set%d ]
883
884 # meta iifgroup != {"default", 11}
885 __set%d test-ip4 3 size 2
886 __set%d test-ip4 0
887 element 00000000 : 0 [end] element 0000000b : 0 [end]
888 ip test-ip4 input
889 [ meta load iifgroup => reg 1 ]
890 [ lookup reg 1 set __set%d 0x1 ]
891
892 # meta iifgroup {11-33, 44-55}
893 __set%d test-ip4 7 size 5
894 __set%d test-ip4 0
895 element 00000000 : 1 [end] element 0b000000 : 0 [end] element 22000000 : 1 [end] element 2c000000 : 0 [end] element 38000000 : 1 [end]
896 ip test-ip4 input
897 [ meta load iifgroup => reg 1 ]
898 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
899 [ lookup reg 1 set __set%d ]
900
901 # meta iifgroup != { 11,33}
902 __set%d test-ip4 3 size 2
903 __set%d test-ip4 0
904 element 0000000b : 0 [end] element 00000021 : 0 [end]
905 ip test-ip4 input
906 [ meta load iifgroup => reg 1 ]
907 [ lookup reg 1 set __set%d 0x1 ]
908
909 # meta iifgroup != {11-33, 44-55}
910 __set%d test-ip4 7 size 5
911 __set%d test-ip4 0
912 element 00000000 : 1 [end] element 0b000000 : 0 [end] element 22000000 : 1 [end] element 2c000000 : 0 [end] element 38000000 : 1 [end]
913 ip test-ip4 input
914 [ meta load iifgroup => reg 1 ]
915 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
916 [ lookup reg 1 set __set%d 0x1 ]
917
918 # meta oifgroup {"default", 11}
919 __set%d test-ip4 3 size 2
920 __set%d test-ip4 0
921 element 00000000 : 0 [end] element 0000000b : 0 [end]
922 ip test-ip4 input
923 [ meta load oifgroup => reg 1 ]
924 [ lookup reg 1 set __set%d ]
925
926 # meta oifgroup {11-33, 44-55}
927 __set%d test-ip4 7 size 5
928 __set%d test-ip4 0
929 element 00000000 : 1 [end] element 0b000000 : 0 [end] element 22000000 : 1 [end] element 2c000000 : 0 [end] element 38000000 : 1 [end]
930 ip test-ip4 input
931 [ meta load oifgroup => reg 1 ]
932 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
933 [ lookup reg 1 set __set%d ]
934
935 # meta oifgroup != { 11,33}
936 __set%d test-ip4 3 size 2
937 __set%d test-ip4 0
938 element 0000000b : 0 [end] element 00000021 : 0 [end]
939 ip test-ip4 input
940 [ meta load oifgroup => reg 1 ]
941 [ lookup reg 1 set __set%d 0x1 ]
942
943 # meta oifgroup != {11-33, 44-55}
944 __set%d test-ip4 7 size 5
945 __set%d test-ip4 0
946 element 00000000 : 1 [end] element 0b000000 : 0 [end] element 22000000 : 1 [end] element 2c000000 : 0 [end] element 38000000 : 1 [end]
947 ip test-ip4 input
948 [ meta load oifgroup => reg 1 ]
949 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
950 [ lookup reg 1 set __set%d 0x1 ]
951
952 # meta skuid != { 2001-2005, 3001-3005} accept
953 __set%d test-ip4 7 size 5
954 __set%d test-ip4 0
955 element 00000000 : 1 [end] element d1070000 : 0 [end] element d6070000 : 1 [end] element b90b0000 : 0 [end] element be0b0000 : 1 [end]
956 ip test-ip4 input
957 [ meta load skuid => reg 1 ]
958 [ byteorder reg 1 = hton(reg 1, 4, 4) ]
959 [ lookup reg 1 set __set%d 0x1 ]
960 [ immediate reg 0 accept ]
961
962 # meta oifgroup != {"default", 11}
963 __set%d test-ip4 3 size 2
964 __set%d test-ip4 0
965 element 00000000 : 0 [end] element 0000000b : 0 [end]
966 ip test-ip4 input
967 [ meta load oifgroup => reg 1 ]
968 [ lookup reg 1 set __set%d 0x1 ]
969
970 # meta time "1970-05-23 21:07:14" drop
971 ip meta-test input
972 [ meta load time => reg 1 ]
973 [ cmp eq reg 1 0x43f05400 0x002bd503 ]
974 [ immediate reg 0 drop ]
975
976 # meta time 12341234 drop
977 ip meta-test input
978 [ meta load time => reg 1 ]
979 [ cmp eq reg 1 0x74a8f400 0x002bd849 ]
980 [ immediate reg 0 drop ]
981
982 # meta time "2019-06-21 17:00:00" drop
983 ip meta-test input
984 [ meta load time => reg 1 ]
985 [ cmp eq reg 1 0x767d6000 0x15aa3ebc ]
986 [ immediate reg 0 drop ]
987
988 # meta time "2019-07-01 00:00:00" drop
989 ip meta-test input
990 [ meta load time => reg 1 ]
991 [ cmp eq reg 1 0xe750c000 0x15ad18e0 ]
992 [ immediate reg 0 drop ]
993
994 # meta time "2019-07-01 00:01:00" drop
995 ip meta-test input
996 [ meta load time => reg 1 ]
997 [ cmp eq reg 1 0xdf981800 0x15ad18ee ]
998 [ immediate reg 0 drop ]
999
1000 # meta time "2019-07-01 00:00:01" drop
1001 ip meta-test input
1002 [ meta load time => reg 1 ]
1003 [ cmp eq reg 1 0x22eb8a00 0x15ad18e1 ]
1004 [ immediate reg 0 drop ]
1005
1006 # meta time < "2022-07-01 11:00:00" accept
1007 ip test-ip4 input
1008 [ meta load time => reg 1 ]
1009 [ byteorder reg 1 = hton(reg 1, 8, 8) ]
1010 [ cmp lt reg 1 0xf3a8fd16 0x00a07719 ]
1011 [ immediate reg 0 accept ]
1012
1013 # meta time > "2022-07-01 11:00:00" accept
1014 ip test-ip4 input
1015 [ meta load time => reg 1 ]
1016 [ byteorder reg 1 = hton(reg 1, 8, 8) ]
1017 [ cmp gt reg 1 0xf3a8fd16 0x00a07719 ]
1018 [ immediate reg 0 accept ]
1019
1020 # meta day "Saturday" drop
1021 ip test-ip4 input
1022 [ meta load day => reg 1 ]
1023 [ cmp eq reg 1 0x00000006 ]
1024 [ immediate reg 0 drop ]
1025
1026 # meta day 6 drop
1027 ip test-ip4 input
1028 [ meta load day => reg 1 ]
1029 [ cmp eq reg 1 0x00000006 ]
1030 [ immediate reg 0 drop ]
1031
1032 # meta hour "17:00" drop
1033 ip test-ip4 input
1034 [ meta load hour => reg 1 ]
1035 [ cmp eq reg 1 0x0000d2f0 ]
1036 [ immediate reg 0 drop ]
1037
1038 # meta hour "17:00:00" drop
1039 ip test-ip4 input
1040 [ meta load hour => reg 1 ]
1041 [ cmp eq reg 1 0x0000d2f0 ]
1042 [ immediate reg 0 drop ]
1043
1044 # meta hour "17:00:01" drop
1045 ip meta-test input
1046 [ meta load hour => reg 1 ]
1047 [ cmp eq reg 1 0x0000d2f1 ]
1048 [ immediate reg 0 drop ]
1049
1050 # meta hour "00:00" drop
1051 ip meta-test input
1052 [ meta load hour => reg 1 ]
1053 [ cmp eq reg 1 0x00013560 ]
1054 [ immediate reg 0 drop ]
1055
1056 # meta hour "00:01" drop
1057 ip meta-test input
1058 [ meta load hour => reg 1 ]
1059 [ cmp eq reg 1 0x0001359c ]
1060 [ immediate reg 0 drop ]
1061
1062 # time < "2022-07-01 11:00:00" accept
1063 ip test-ip4 input
1064 [ meta load time => reg 1 ]
1065 [ byteorder reg 1 = hton(reg 1, 8, 8) ]
1066 [ cmp lt reg 1 0xf3a8fd16 0x00a07719 ]
1067 [ immediate reg 0 accept ]
1068
1069 # time > "2022-07-01 11:00:00" accept
1070 ip test-ip4 input
1071 [ meta load time => reg 1 ]
1072 [ byteorder reg 1 = hton(reg 1, 8, 8) ]
1073 [ cmp gt reg 1 0xf3a8fd16 0x00a07719 ]
1074 [ immediate reg 0 accept ]