@ll,0,0 2;fail
@ll,0,1;fail
+@ll,1,0 1;fail
@ll,0,1 1;ok;@ll,0,8 & 0x80 == 0x80
@ll,0,8 & 0x80 == 0x80;ok
@ll,0,128 0xfedcba987654321001234567890abcde;ok
meta l4proto 91 @th,400,16 0x0 accept;ok
@ih,32,32 0x14000000;ok
+@ih,58,6 set 0 @ih,86,6 set 0 @ih,170,22 set 0;ok;@ih,58,6 set 0x0 @ih,86,6 set 0x0 @ih,170,22 set 0x0
+@ih,58,6 set 0x1 @ih,86,6 set 0x2 @ih,170,22 set 0x3;ok
+@ih,58,6 0x0 @ih,86,6 0x0 @ih,170,22 0x0;ok
+@ih,1,1 0x2;fail
+@ih,1,2 0x2;ok
+@ih,35,3 0x2;ok
}
]
+# @ih,58,6 set 0 @ih,86,6 set 0 @ih,170,22 set 0
+[
+ {
+ "mangle": {
+ "key": {
+ "payload": {
+ "base": "ih",
+ "len": 6,
+ "offset": 58
+ }
+ },
+ "value": 0
+ }
+ },
+ {
+ "mangle": {
+ "key": {
+ "payload": {
+ "base": "ih",
+ "len": 6,
+ "offset": 86
+ }
+ },
+ "value": 0
+ }
+ },
+ {
+ "mangle": {
+ "key": {
+ "payload": {
+ "base": "ih",
+ "len": 22,
+ "offset": 170
+ }
+ },
+ "value": 0
+ }
+ }
+]
+
+# @ih,58,6 set 0x1 @ih,86,6 set 0x2 @ih,170,22 set 0x3
+[
+ {
+ "mangle": {
+ "key": {
+ "payload": {
+ "base": "ih",
+ "len": 6,
+ "offset": 58
+ }
+ },
+ "value": 1
+ }
+ },
+ {
+ "mangle": {
+ "key": {
+ "payload": {
+ "base": "ih",
+ "len": 6,
+ "offset": 86
+ }
+ },
+ "value": 2
+ }
+ },
+ {
+ "mangle": {
+ "key": {
+ "payload": {
+ "base": "ih",
+ "len": 22,
+ "offset": 170
+ }
+ },
+ "value": 3
+ }
+ }
+]
+
+# @ih,58,6 0x0 @ih,86,6 0x0 @ih,170,22 0x0
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "base": "ih",
+ "len": 6,
+ "offset": 58
+ }
+ },
+ "op": "==",
+ "right": 0
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "base": "ih",
+ "len": 6,
+ "offset": 86
+ }
+ },
+ "op": "==",
+ "right": 0
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "base": "ih",
+ "len": 22,
+ "offset": 170
+ }
+ },
+ "op": "==",
+ "right": 0
+ }
+ }
+]
+
+# @ih,1,2 0x2
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "base": "ih",
+ "len": 2,
+ "offset": 1
+ }
+ },
+ "op": "==",
+ "right": 2
+ }
+ }
+]
+
+# @ih,35,3 0x2
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "base": "ih",
+ "len": 3,
+ "offset": 35
+ }
+ },
+ "op": "==",
+ "right": 2
+ }
+ }
+]
+
[ payload load 4b @ inner header + 4 => reg 1 ]
[ cmp eq reg 1 0x00000014 ]
+# @ih,58,6 set 0 @ih,86,6 set 0 @ih,170,22 set 0
+inet test-inet input
+ [ payload load 2b @ inner header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000c0ff ) ^ 0x00000000 ]
+ [ payload write reg 1 => 2b @ inner header + 6 csum_type 0 csum_off 0 csum_flags 0x1 ]
+ [ payload load 2b @ inner header + 10 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000ffc ) ^ 0x00000000 ]
+ [ payload write reg 1 => 2b @ inner header + 10 csum_type 0 csum_off 0 csum_flags 0x1 ]
+ [ payload load 4b @ inner header + 20 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000c0ff ) ^ 0x00000000 ]
+ [ payload write reg 1 => 4b @ inner header + 20 csum_type 0 csum_off 0 csum_flags 0x1 ]
+
+# @ih,58,6 set 0x1 @ih,86,6 set 0x2 @ih,170,22 set 0x3
+inet test-inet input
+ [ payload load 2b @ inner header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000c0ff ) ^ 0x00000100 ]
+ [ payload write reg 1 => 2b @ inner header + 6 csum_type 0 csum_off 0 csum_flags 0x1 ]
+ [ payload load 2b @ inner header + 10 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000ffc ) ^ 0x00002000 ]
+ [ payload write reg 1 => 2b @ inner header + 10 csum_type 0 csum_off 0 csum_flags 0x1 ]
+ [ payload load 4b @ inner header + 20 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000c0ff ) ^ 0x03000000 ]
+ [ payload write reg 1 => 4b @ inner header + 20 csum_type 0 csum_off 0 csum_flags 0x1 ]
+
+# @ih,58,6 0x0 @ih,86,6 0x0 @ih,170,22 0x0
+inet test-inet input
+ [ payload load 1b @ inner header + 7 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000003f ) ^ 0x00000000 ]
+ [ cmp eq reg 1 0x00000000 ]
+ [ payload load 2b @ inner header + 10 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000f003 ) ^ 0x00000000 ]
+ [ cmp eq reg 1 0x00000000 ]
+ [ payload load 3b @ inner header + 21 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00ffff3f ) ^ 0x00000000 ]
+ [ cmp eq reg 1 0x00000000 ]
+
+# @ih,1,2 0x2
+inet test-inet input
+ [ payload load 1b @ inner header + 0 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000060 ) ^ 0x00000000 ]
+ [ cmp eq reg 1 0x00000040 ]
+
+# @ih,2,1 0x1
+inet test-inet input
+ [ payload load 1b @ inner header + 0 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000020 ) ^ 0x00000000 ]
+ [ cmp eq reg 1 0x00000020 ]
+
+# @ih,35,3 0x2
+inet test-inet input
+ [ payload load 1b @ inner header + 4 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000001c ) ^ 0x00000000 ]
+ [ cmp eq reg 1 0x00000008 ]