Home | History | Annotate | Download | only in apf

Lines Matching refs:gen

176     private void assertVerdict(int expected, ApfGenerator gen, byte[] packet, int filterAge)
178 assertReturnCodesEqual(expected, apfSimulate(gen.generate(), packet, null,
182 private void assertPass(ApfGenerator gen, byte[] packet, int filterAge)
184 assertVerdict(PASS, gen, packet, filterAge);
187 private void assertDrop(ApfGenerator gen, byte[] packet, int filterAge)
189 assertVerdict(DROP, gen, packet, filterAge);
192 private void assertPass(ApfGenerator gen)
194 assertVerdict(PASS, gen, new byte[MIN_PKT_SIZE], 0);
197 private void assertDrop(ApfGenerator gen)
199 assertVerdict(DROP, gen, new byte[MIN_PKT_SIZE], 0);
212 ApfGenerator gen = new ApfGenerator(MIN_APF_VERSION);
213 assertPass(gen);
216 gen = new ApfGenerator(MIN_APF_VERSION);
217 gen.addJump(gen.PASS_LABEL);
218 byte[] program = gen.generate();
224 gen = new ApfGenerator(MIN_APF_VERSION);
225 gen.addJump(gen.DROP_LABEL);
226 program = gen.generate();
233 gen = new ApfGenerator(MIN_APF_VERSION);
234 gen.addJumpIfR0Equals(0, gen.DROP_LABEL);
235 assertDrop(gen);
238 gen = new ApfGenerator(MIN_APF_VERSION);
239 gen.addJumpIfR0NotEquals(0, gen.DROP_LABEL);
240 assertPass(gen);
241 gen = new ApfGenerator(MIN_APF_VERSION);
242 gen.addLoadImmediate(Register.R0, 1);
243 gen.addJumpIfR0NotEquals(0, gen.DROP_LABEL);
244 assertDrop(gen);
247 gen = new ApfGenerator(MIN_APF_VERSION);
248 gen.addJumpIfR0EqualsR1(gen.DROP_LABEL);
249 assertDrop(gen);
252 gen = new ApfGenerator(MIN_APF_VERSION);
253 gen.addJumpIfR0NotEqualsR1(gen.DROP_LABEL);
254 assertPass(gen);
255 gen = new ApfGenerator(MIN_APF_VERSION);
256 gen.addLoadImmediate(Register.R0, 1);
257 gen.addJumpIfR0NotEqualsR1(gen.DROP_LABEL);
258 assertDrop(gen);
261 gen = new ApfGenerator(MIN_APF_VERSION);
262 gen.addLoadImmediate(Register.R0, 1234567890);
263 gen.addJumpIfR0Equals(1234567890, gen.DROP_LABEL);
264 assertDrop(gen);
267 gen = new ApfGenerator(MIN_APF_VERSION);
268 gen.addAdd(1234567890);
269 gen.addJumpIfR0Equals(1234567890, gen.DROP_LABEL);
270 assertDrop(gen);
273 gen = new ApfGenerator(MIN_APF_VERSION);
274 gen.addAdd(-1234567890);
275 gen.addJumpIfR0Equals(-1234567890, gen.DROP_LABEL);
276 assertDrop(gen);
279 gen = new ApfGenerator(MIN_APF_VERSION);
280 gen.addOr(1234567890);
281 gen.addJumpIfR0Equals(1234567890, gen.DROP_LABEL);
282 assertDrop(gen);
285 gen = new ApfGenerator(MIN_APF_VERSION);
286 gen.addLoadImmediate(Register.R0, 1234567890);
287 gen.addAnd(123456789);
288 gen.addJumpIfR0Equals(1234567890 & 123456789, gen.DROP_LABEL);
289 assertDrop(gen);
292 gen = new ApfGenerator(MIN_APF_VERSION);
293 gen.addLoadImmediate(Register.R0, 1234567890);
294 gen.addLeftShift(1);
295 gen.addJumpIfR0Equals(1234567890 << 1, gen.DROP_LABEL);
296 assertDrop(gen);
299 gen = new ApfGenerator(MIN_APF_VERSION);
300 gen.addLoadImmediate(Register.R0, 1234567890);
301 gen.addRightShift(1);
302 gen.addJumpIfR0Equals(1234567890 >> 1, gen.DROP_LABEL);
303 assertDrop(gen);
306 gen = new ApfGenerator(MIN_APF_VERSION);
307 gen.addLoadImmediate(Register.R0, 1234567890);
308 gen.addMul(2);
309 gen.addJumpIfR0Equals(1234567890 * 2, gen.DROP_LABEL);
310 assertDrop(gen);
313 gen = new ApfGenerator(MIN_APF_VERSION);
314 gen.addLoadImmediate(Register.R0, 1234567890);
315 gen.addDiv(2);
316 gen.addJumpIfR0Equals(1234567890 / 2, gen.DROP_LABEL);
317 assertDrop(gen);
320 gen = new ApfGenerator(MIN_APF_VERSION);
321 gen.addDiv(0);
322 gen.addJump(gen.DROP_LABEL);
323 assertPass(gen);
326 gen = new ApfGenerator(MIN_APF_VERSION);
327 gen.addLoadImmediate(Register.R1, 1234567890);
328 gen.addAddR1();
329 gen.addJumpIfR0Equals(1234567890, gen.DROP_LABEL);
330 assertDrop(gen);
333 gen = new ApfGenerator(MIN_APF_VERSION);
334 gen.addLoadImmediate(Register.R1, -1234567890);
335 gen.addAddR1();
336 gen.addJumpIfR0Equals(-1234567890, gen.DROP_LABEL);
337 assertDrop(gen);
340 gen = new ApfGenerator(MIN_APF_VERSION);
341 gen.addLoadImmediate(Register.R1, 1234567890);
342 gen.addOrR1();
343 gen.addJumpIfR0Equals(1234567890, gen.DROP_LABEL);
344 assertDrop(gen);
347 gen = new ApfGenerator(MIN_APF_VERSION);
348 gen.addLoadImmediate(Register.R0, 1234567890);
349 gen.addLoadImmediate(Register.R1, 123456789);
350 gen.addAndR1();
351 gen.addJumpIfR0Equals(1234567890 & 123456789, gen.DROP_LABEL);
352 assertDrop(gen);
355 gen = new ApfGenerator(MIN_APF_VERSION);
356 gen.addLoadImmediate(Register.R0, 1234567890);
357 gen.addLoadImmediate(Register.R1, 1);
358 gen.addLeftShiftR1();
359 gen.addJumpIfR0Equals(1234567890 << 1, gen.DROP_LABEL);
360 assertDrop(gen);
363 gen = new ApfGenerator(MIN_APF_VERSION);
364 gen.addLoadImmediate(Register.R0, 1234567890);
365 gen.addLoadImmediate(Register.R1, -1);
366 gen.addLeftShiftR1();
367 gen.addJumpIfR0Equals(1234567890 >> 1, gen.DROP_LABEL);
368 assertDrop(gen);
371 gen = new ApfGenerator(MIN_APF_VERSION);
372 gen.addLoadImmediate(Register.R0, 1234567890);
373 gen.addLoadImmediate(Register.R1, 2);
374 gen.addMulR1();
375 gen.addJumpIfR0Equals(1234567890 * 2, gen.DROP_LABEL);
376 assertDrop(gen);
379 gen = new ApfGenerator(MIN_APF_VERSION);
380 gen.addLoadImmediate(Register.R0, 1234567890);
381 gen.addLoadImmediate(Register.R1, 2);
382 gen.addDivR1();
383 gen.addJumpIfR0Equals(1234567890 / 2, gen.DROP_LABEL);
384 assertDrop(gen);
387 gen = new ApfGenerator(MIN_APF_VERSION);
388 gen.addDivR1();
389 gen.addJump(gen.DROP_LABEL);
390 assertPass(gen);
393 gen = new ApfGenerator(MIN_APF_VERSION);
394 gen.addLoad8(Register.R0, 1);
395 gen.addJumpIfR0Equals(45, gen.DROP_LABEL);
396 assertDrop(gen, new byte[]{123,45,0,0,0,0,0,0,0,0,0,0,0,0,0}, 0);
399 gen = new ApfGenerator(MIN_APF_VERSION);
400 gen.addLoad8(Register.R0, 16);
401 gen.addJumpIfR0Equals(0, gen.DROP_LABEL);
402 assertPass(gen, new byte[]{123,45,0,0,0,0,0,0,0,0,0,0,0,0,0}, 0);
405 gen = new ApfGenerator(MIN_APF_VERSION);
406 gen.addLoad16(Register.R0, 1);
407 gen.addJumpIfR0Equals((45 << 8) | 67, gen.DROP_LABEL);
408 assertDrop(gen, new byte[]{123,45,67,0,0,0,0,0,0,0,0,0,0,0,0}, 0);
411 gen = new ApfGenerator(MIN_APF_VERSION);
412 gen.addLoad32(Register.R0, 1);
413 gen.addJumpIfR0Equals((45 << 24) | (67 << 16) | (89 << 8) | 12, gen.DROP_LABEL);
414 assertDrop(gen, new byte[]{123,45,67,89,12,0,0,0,0,0,0,0,0,0,0}, 0);
417 gen = new ApfGenerator(MIN_APF_VERSION);
418 gen.addLoadImmediate(Register.R1, 1);
419 gen.addLoad8Indexed(Register.R0, 0);
420 gen.addJumpIfR0Equals(45, gen.DROP_LABEL);
421 assertDrop(gen, new byte[]{123,45,0,0,0,0,0,0,0,0,0,0,0,0,0}, 0);
424 gen = new ApfGenerator(MIN_APF_VERSION);
425 gen.addLoadImmediate(Register.R1, 8);
426 gen.addLoad8Indexed(Register.R0, 8);
427 gen.addJumpIfR0Equals(0, gen.DROP_LABEL);
428 assertPass(gen, new byte[]{123,45,0,0,0,0,0,0,0,0,0,0,0,0,0}, 0);
431 gen = new ApfGenerator(MIN_APF_VERSION);
432 gen.addLoadImmediate(Register.R1, 1);
433 gen.addLoad16Indexed(Register.R0, 0);
434 gen.addJumpIfR0Equals((45 << 8) | 67, gen.DROP_LABEL);
435 assertDrop(gen, new byte[]{123,45,67,0,0,0,0,0,0,0,0,0,0,0,0}, 0);
438 gen = new ApfGenerator(MIN_APF_VERSION);
439 gen.addLoadImmediate(Register.R1, 1);
440 gen.addLoad32Indexed(Register.R0, 0);
441 gengen.DROP_LABEL);
442 assertDrop(gen, new byte[]{123,45,67,89,12,0,0,0,0,0,0,0,0,0,0}, 0);
445 gen = new ApfGenerator(MIN_APF_VERSION);
446 gen.addJumpIfR0GreaterThan(0, gen.DROP_LABEL);
447 assertPass(gen);
448 gen = new ApfGenerator(MIN_APF_VERSION);
449 gen.addLoadImmediate(Register.R0, 1);
450 gen.addJumpIfR0GreaterThan(0, gen.DROP_LABEL);
451 assertDrop(gen);
454 gen = new ApfGenerator(MIN_APF_VERSION);
455 gen.addJumpIfR0LessThan(0, gen.DROP_LABEL);
456 assertPass(gen);
457 gen = new ApfGenerator(MIN_APF_VERSION);
458 gen.addJumpIfR0LessThan(1, gen.DROP_LABEL);
459 assertDrop(gen);
462 gen = new ApfGenerator(MIN_APF_VERSION);
463 gen.addJumpIfR0AnyBitsSet(3, gen.DROP_LABEL);
464 assertPass(gen);
465 gen = new ApfGenerator(MIN_APF_VERSION);
466 gen.addLoadImmediate(Register.R0, 1);
467 gen.addJumpIfR0AnyBitsSet(3, gen.DROP_LABEL);
468 assertDrop(gen);
469 gen = new ApfGenerator(MIN_APF_VERSION);
470 gen.addLoadImmediate(Register.R0, 3);
471 gen.addJumpIfR0AnyBitsSet(3, gen.DROP_LABEL);
472 assertDrop(gen);
475 gen = new ApfGenerator(MIN_APF_VERSION);
476 gen.addJumpIfR0GreaterThanR1(gen.DROP_LABEL);
477 assertPass(gen);
478 gen = new ApfGenerator(MIN_APF_VERSION);
479 gen.addLoadImmediate(Register.R0, 2);
480 gen.addLoadImmediate(Register.R1, 1);
481 gen.addJumpIfR0GreaterThanR1(gen.DROP_LABEL);
482 assertDrop(gen);
485 gen = new ApfGenerator(MIN_APF_VERSION);
486 gen.addJumpIfR0LessThanR1(gen.DROP_LABEL);
487 assertPass(gen);
488 gen = new ApfGenerator(MIN_APF_VERSION);
489 gen.addLoadImmediate(Register.R1, 1);
490 gen.addJumpIfR0LessThanR1(gen.DROP_LABEL);
491 assertDrop(gen);
494 gen = new ApfGenerator(MIN_APF_VERSION);
495 gen.addLoadImmediate(Register.R1, 3);
496 gen.addJumpIfR0AnyBitsSetR1(gen.DROP_LABEL);
497 assertPass(gen);
498 gen = new ApfGenerator(MIN_APF_VERSION);
499 gen.addLoadImmediate(Register.R1, 3);
500 gen.addLoadImmediate(Register.R0, 1);
501 gen.addJumpIfR0AnyBitsSetR1(gen.DROP_LABEL);
502 assertDrop(gen);
503 gen = new ApfGenerator(MIN_APF_VERSION);
504 gen.addLoadImmediate(Register.R1, 3);
505 gen.addLoadImmediate(Register.R0, 3);
506 gen.addJumpIfR0AnyBitsSetR1(gen.DROP_LABEL);
507 assertDrop(gen);
510 gen = new ApfGenerator(MIN_APF_VERSION);
511 gen.addLoadFromMemory(Register.R0, 0);
512 gen.addJumpIfR0Equals(0, gen.DROP_LABEL);
513 assertDrop(gen);
516 gen = new ApfGenerator(MIN_APF_VERSION);
517 gen.addLoadImmediate(Register.R1, 1234567890);
518 gen.addStoreToMemory(Register.R1, 12);
519 gen.addLoadFromMemory(Register.R0, 12);
520 gen.addJumpIfR0Equals(1234567890, gen.DROP_LABEL);
521 assertDrop(gen);
524 gen = new ApfGenerator(MIN_APF_VERSION);
525 gen.addLoadFromMemory(Register.R0, gen.FILTER_AGE_MEMORY_SLOT);
526 gen.addJumpIfR0Equals(1234567890, gen.DROP_LABEL);
527 assertDrop(gen, new byte[MIN_PKT_SIZE], 1234567890);
530 gen = new ApfGenerator(MIN_APF_VERSION);
531 gen.addLoadFromMemory(Register.R0, gen.PACKET_SIZE_MEMORY_SLOT);
532 gen.addJumpIfR0Equals(MIN_PKT_SIZE, gen.DROP_LABEL);
533 assertDrop(gen);
536 gen = new ApfGenerator(MIN_APF_VERSION);
537 gen.addLoadFromMemory(Register.R0, gen.IPV4_HEADER_SIZE_MEMORY_SLOT);
538 gen.addJumpIfR0Equals(20, gen.DROP_LABEL);
539 assertDrop(gen, new byte[]{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0x45}, 0);
542 gen = new ApfGenerator(MIN_APF_VERSION);
543 gen.addLoadImmediate(Register.R0, 1234567890);
544 gen.addNot(Register.R0);
545 gen.addJumpIfR0Equals(~1234567890, gen.DROP_LABEL);
546 assertDrop(gen);
549 gen = new ApfGenerator(MIN_APF_VERSION);
550 gen.addLoadImmediate(Register.R0, 1234567890);
551 gen.addNeg(Register.R0);
552 gen.addJumpIfR0Equals(-1234567890, gen.DROP_LABEL);
553 assertDrop(gen);
556 gen = new ApfGenerator(MIN_APF_VERSION);
557 gen.addLoadImmediate(Register.R1, 1234567890);
558 gen.addMove(Register.R0);
559 gen.addJumpIfR0Equals(1234567890, gen.DROP_LABEL);
560 assertDrop(gen);
561 gen = new ApfGenerator(MIN_APF_VERSION);
562 gen.addLoadImmediate(Register.R0, 1234567890);
563 gen.addMove(Register.R1);
564 gen.addJumpIfR0Equals(1234567890, gen.DROP_LABEL);
565 assertDrop(gen);
568 gen = new ApfGenerator(MIN_APF_VERSION);
569 gen.addLoadImmediate(Register.R1, 1234567890);
570 gen.addSwap();
571 gen.addJumpIfR0Equals(1234567890, gen.DROP_LABEL);
572 assertDrop(gen);
573 gen = new ApfGenerator(MIN_APF_VERSION);
574 gen.addLoadImmediate(Register.R0, 1234567890);
575 gen.addSwap();
576 gen.addJumpIfR0Equals(0, gen.DROP_LABEL);
577 assertDrop(gen);
580 gen = new ApfGenerator(MIN_APF_VERSION);
581 gen.addLoadImmediate(Register.R0, 1);
582 gen.addJumpIfBytesNotEqual(Register.R0, new byte[]{123}, gen.DROP_LABEL);
583 program = gen.generate();
592 gen = new ApfGenerator(MIN_APF_VERSION);
593 gen.addLoadImmediate(Register.R0, 1);
594 gen.addJumpIfBytesNotEqual(Register.R0, new byte[]{123}, gen.DROP_LABEL);
596 assertPass(gen, packet123, 0);
597 gen = new ApfGenerator(MIN_APF_VERSION);
598 gen.addJumpIfBytesNotEqual(Register.R0, new byte[]{123}, gen.DROP_LABEL);
599 assertDrop(gen, packet123, 0);
600 gen = new ApfGenerator(MIN_APF_VERSION);
601 gen.addLoadImmediate(Register.R0, 1);
602 gen.addJumpIfBytesNotEqual(Register.R0, new byte[]{1,2,30,4,5}, gen.DROP_LABEL);
604 assertDrop(gen, packet12345, 0);
605 gen = new ApfGenerator(MIN_APF_VERSION);
606 gen.addLoadImmediate(Register.R0, 1);
607 gen.addJumpIfBytesNotEqual(Register.R0, new byte[]{1,2,3,4,5}, gen.DROP_LABEL);
608 assertPass(gen, packet12345, 0);
619 ApfGenerator gen = new ApfGenerator(MIN_APF_VERSION);
621 gen.addStoreData(Register.R0, 0);
627 gen.addLoadData(Register.R0, 0);
640 ApfGenerator gen;
643 gen = new ApfGenerator(3);
644 gen.addLoadImmediate(Register.R0, 0);
645 assertProgramEquals(new byte[]{LI_OPCODE | (0 << 1)}, gen.generate());
648 gen = new ApfGenerator(3);
649 gen.addLoadImmediate(Register.R0, 42);
650 assertProgramEquals(new byte[]{LI_OPCODE | (1 << 1), 42}, gen.generate());
653 gen = new ApfGenerator(3);
654 gen.addLoadImmediate(Register.R1, 0x1234);
655 assertProgramEquals(new byte[]{LI_OPCODE | (2 << 1) | 1 , 0x12, 0x34}, gen.generate());
658 gen = new ApfGenerator(3);
659 gen.addLoadImmediate(Register.R0, 0x12345678);
662 gen.generate());
671 ApfGenerator gen;
674 gen = new ApfGenerator(3);
675 gen.addLoadImmediate(Register.R0, -42);
676 assertProgramEquals(new byte[]{LI_OPCODE | (1 << 1), -42}, gen.generate());
679 gen = new ApfGenerator(3);
680 gen.addLoadImmediate(Register.R1, -0x1122);
682 gen.generate());
685 gen = new ApfGenerator(3);
686 gen.addLoadImmediate(Register.R0, -0x11223344);
689 gen.generate());
699 ApfGenerator gen = new ApfGenerator(3);
700 assertDataMemoryContents(PASS, gen.generate(), packet, data, expected_data);
704 gen = new ApfGenerator(3);
705 gen.addLoadImmediate(Register.R0, 0x87654321);
706 gen.addLoadImmediate(Register.R1, -5);
707 gen.addStoreData(Register.R0, -6); // -5 + -6 = -11 (offset +5 with data_len=16)
712 assertDataMemoryContents(PASS, gen.generate(), packet, data, expected_data);
718 ApfGenerator gen = new ApfGenerator(3);
719 gen.addLoadImmediate(Register.R1, 10);
720 gen.addLoadData(Register.R0, -16); // 10 + -16 = -6 (offset +10 with data_len=16)
721 gen.addJumpIfR0Equals(0x87654321, gen.DROP_LABEL);
722 byte[] program = gen.generate();
742 ApfGenerator gen = new ApfGenerator(3);
743 gen.addLoadImmediate(Register.R1, -22);
744 gen.addLoadData(Register.R0, 0); // Load from address 32 -22 + 0 = 10
745 gen.addAdd(0x78453412); // 87654321 + 78453412 = FFAA7733
746 gen.addStoreData(Register.R0, 4); // Write back to address 32 -22 + 4 = 14
759 assertDataMemoryContents(PASS, gen.generate(), packet, data, expected_data);
769 ApfGenerator gen = new ApfGenerator(3);
770 gen.addLoadImmediate(Register.R0, 3);
771 gen.addLoadData(Register.R1, 7);
772 gen.addJump(gen.DROP_LABEL);
773 assertDataMemoryContents(DROP, gen.generate(), packet, data, expected_data);
776 gen = new ApfGenerator(3);
777 gen.addLoadImmediate(Register.R0, 20);
778 gen.addLoadData(Register.R1, 15); // 20 + 15 > 32
779 gen.addJump(gen.DROP_LABEL); // Not reached.
780 assertDataMemoryContents(PASS, gen.generate(), packet, data, expected_data);
783 gen = new ApfGenerator(3);
784 gen.addLoadImmediate(Register.R0, 20);
785 gen.addLoadData(Register.R1, -4);
786 gen.addJump(gen.DROP_LABEL);
787 assertDataMemoryContents(DROP, gen.generate(), packet, data, expected_data);
790 gen = new ApfGenerator(3);
791 gen.addLoadImmediate(Register.R0, 20);
792 gen.addLoadData(Register.R1, -30);
793 gen.addJump(gen.DROP_LABEL);
794 assertDataMemoryContents(DROP, gen.generate(), packet, data, expected_data);
797 gen = new ApfGenerator(3);
798 gen.addLoadImmediate(Register.R0, 20);
799 gen.addLoadData(Register.R1, -1000);
800 gen.addJump(gen.DROP_LABEL); // Not reached.
801 assertDataMemoryContents(PASS, gen.generate(), packet, data, expected_data);