summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/ct.c4
-rw-r--r--src/netlink_delinearize.c83
-rw-r--r--src/payload.c16
-rw-r--r--tests/py/README31
-rw-r--r--tests/py/any/limit.t4
-rw-r--r--tests/py/any/limit.t.json51
-rw-r--r--tests/py/any/limit.t.json.output28
-rw-r--r--tests/py/any/limit.t.payload17
-rw-r--r--tests/py/any/meta.t.json62
-rw-r--r--tests/py/any/meta.t.json.output180
-rw-r--r--tests/py/any/rawpayload.t8
-rw-r--r--tests/py/any/rawpayload.t.json188
-rw-r--r--tests/py/any/rawpayload.t.payload61
-rw-r--r--tests/py/any/tcpopt.t.json4
-rw-r--r--tests/py/bridge/vlan.t.json.output31
-rw-r--r--tests/py/inet/ct.t5
-rw-r--r--tests/py/inet/ct.t.json51
-rw-r--r--tests/py/inet/ct.t.payload14
-rw-r--r--tests/py/inet/fib.t.json.output32
-rw-r--r--tests/py/inet/payloadmerge.t14
-rw-r--r--tests/py/inet/payloadmerge.t.json211
-rw-r--r--tests/py/inet/payloadmerge.t.payload66
-rw-r--r--tests/py/inet/synproxy.t.json.output17
-rw-r--r--tests/py/inet/tcp.t.json124
-rw-r--r--tests/py/inet/tcp.t.json.output265
-rw-r--r--tests/py/inet/udp.t.payload4
-rw-r--r--tests/py/ip/icmp.t.json6
-rw-r--r--tests/py/ip/icmp.t.json.output24
-rw-r--r--tests/py/ip/ip.t3
-rw-r--r--tests/py/ip/ip.t.json63
-rw-r--r--tests/py/ip/ip.t.json.output31
-rw-r--r--tests/py/ip/ip.t.payload18
-rw-r--r--tests/py/ip/ip.t.payload.bridge24
-rw-r--r--tests/py/ip/ip.t.payload.inet24
-rw-r--r--tests/py/ip/ip.t.payload.netdev24
-rw-r--r--tests/py/ip6/exthdr.t.json.output30
-rw-r--r--tests/py/ip6/frag.t.payload.netdev2026
-rw-r--r--tests/py/ip6/icmpv6.t.json8
-rw-r--r--tests/py/ip6/icmpv6.t.json.output62
-rw-r--r--tests/py/ip6/icmpv6.t.payload.ip62
-rw-r--r--tests/py/netdev/reject.t.json66
-rw-r--r--tests/py/netdev/reject.t.json.output81
-rwxr-xr-xtests/py/nft-test.py7
-rwxr-xr-xtests/shell/features/ifname_based_hooks.sh2
-rwxr-xr-xtests/shell/testcases/chains/netdev_chain_dormant_autoremove8
45 files changed, 1316 insertions, 2764 deletions
diff --git a/src/ct.c b/src/ct.c
index a17d848f..9541d54f 100644
--- a/src/ct.c
+++ b/src/ct.c
@@ -449,7 +449,11 @@ struct expr *ct_expr_alloc(const struct location *loc, enum nft_ct_keys key,
switch (key) {
case NFT_CT_SRC:
+ case NFT_CT_SRC_IP:
+ case NFT_CT_SRC_IP6:
case NFT_CT_DST:
+ case NFT_CT_DST_IP:
+ case NFT_CT_DST_IP6:
expr->ct.base = PROTO_BASE_NETWORK_HDR;
break;
case NFT_CT_PROTO_SRC:
diff --git a/src/netlink_delinearize.c b/src/netlink_delinearize.c
index 4b4898b0..990032f7 100644
--- a/src/netlink_delinearize.c
+++ b/src/netlink_delinearize.c
@@ -1925,6 +1925,7 @@ static void payload_match_expand(struct rule_pp_ctx *ctx,
*/
payload_dependency_kill(&ctx->pdctx, nexpr->left,
ctx->pctx.family);
+ expr_set_type(tmp, nexpr->left->dtype, nexpr->byteorder);
if (expr->op == OP_EQ && left->flags & EXPR_F_PROTOCOL)
payload_dependency_store(&ctx->pdctx, nstmt, base);
}
@@ -2069,17 +2070,71 @@ static bool __meta_dependency_may_kill(const struct expr *dep, uint8_t *nfproto)
return false;
}
+static bool ct_may_dependency_kill(unsigned int meta_nfproto,
+ const struct expr *ct)
+{
+ assert(ct->etype == EXPR_CT);
+
+ switch (ct->ct.key) {
+ case NFT_CT_DST:
+ case NFT_CT_SRC:
+ switch (ct->len) {
+ case 32:
+ return meta_nfproto == NFPROTO_IPV4;
+ case 128:
+ return meta_nfproto == NFPROTO_IPV6;
+ default:
+ break;
+ }
+ return false;
+ case NFT_CT_DST_IP:
+ case NFT_CT_SRC_IP:
+ return meta_nfproto == NFPROTO_IPV4;
+ case NFT_CT_DST_IP6:
+ case NFT_CT_SRC_IP6:
+ return meta_nfproto == NFPROTO_IPV6;
+ default:
+ break;
+ }
+
+ return false;
+}
+
+static bool meta_may_dependency_kill(uint8_t nfproto, const struct expr *meta, const struct expr *v)
+{
+ uint8_t l4proto;
+
+ if (meta->meta.key != NFT_META_L4PROTO)
+ return true;
+
+ if (v->etype != EXPR_VALUE || v->len != 8)
+ return false;
+
+ l4proto = mpz_get_uint8(v->value);
+
+ switch (l4proto) {
+ case IPPROTO_ICMP:
+ return nfproto == NFPROTO_IPV4;
+ case IPPROTO_ICMPV6:
+ return nfproto == NFPROTO_IPV6;
+ default:
+ break;
+ }
+
+ return false;
+}
+
/* We have seen a protocol key expression that restricts matching at the network
* base, leave it in place since this is meaningful in bridge, inet and netdev
* families. Exceptions are ICMP and ICMPv6 where this code assumes that can
* only happen with IPv4 and IPv6.
*/
-static bool meta_may_dependency_kill(struct payload_dep_ctx *ctx,
+static bool ct_meta_may_dependency_kill(struct payload_dep_ctx *ctx,
unsigned int family,
const struct expr *expr)
{
- uint8_t l4proto, nfproto = NFPROTO_UNSPEC;
struct expr *dep = payload_dependency_get(ctx, PROTO_BASE_NETWORK_HDR);
+ uint8_t nfproto = NFPROTO_UNSPEC;
if (!dep)
return true;
@@ -2099,23 +2154,15 @@ static bool meta_may_dependency_kill(struct payload_dep_ctx *ctx,
return true;
}
- if (expr->left->meta.key != NFT_META_L4PROTO)
- return true;
-
- l4proto = mpz_get_uint8(expr->right->value);
-
- switch (l4proto) {
- case IPPROTO_ICMP:
- case IPPROTO_ICMPV6:
- break;
+ switch (expr->left->etype) {
+ case EXPR_META:
+ return meta_may_dependency_kill(nfproto, expr->left, expr->right);
+ case EXPR_CT:
+ return ct_may_dependency_kill(nfproto, expr->left);
default:
- return false;
+ break;
}
- if ((nfproto == NFPROTO_IPV4 && l4proto == IPPROTO_ICMPV6) ||
- (nfproto == NFPROTO_IPV6 && l4proto == IPPROTO_ICMP))
- return false;
-
return true;
}
@@ -2140,8 +2187,8 @@ static void ct_meta_common_postprocess(struct rule_pp_ctx *ctx,
if (base < PROTO_BASE_TRANSPORT_HDR) {
if (payload_dependency_exists(&ctx->pdctx, base) &&
- meta_may_dependency_kill(&ctx->pdctx,
- ctx->pctx.family, expr))
+ ct_meta_may_dependency_kill(&ctx->pdctx,
+ ctx->pctx.family, expr))
payload_dependency_release(&ctx->pdctx, base);
if (left->flags & EXPR_F_PROTOCOL)
diff --git a/src/payload.c b/src/payload.c
index 180bcab9..04b7af1c 100644
--- a/src/payload.c
+++ b/src/payload.c
@@ -743,7 +743,7 @@ static uint8_t icmp_dep_to_type(enum icmp_hdr_field_type t)
BUG("Missing icmp type mapping");
}
-static bool payload_may_dependency_kill_icmp(struct payload_dep_ctx *ctx, struct expr *expr)
+static bool payload_may_dependency_kill_icmp(struct payload_dep_ctx *ctx, const struct expr *expr)
{
const struct expr *dep = payload_dependency_get(ctx, expr->payload.base);
uint8_t icmp_type;
@@ -760,7 +760,7 @@ static bool payload_may_dependency_kill_icmp(struct payload_dep_ctx *ctx, struct
return ctx->icmp_type == icmp_type;
}
-static bool payload_may_dependency_kill_ll(struct payload_dep_ctx *ctx, struct expr *expr)
+static bool payload_may_dependency_kill_ll(struct payload_dep_ctx *ctx, const struct expr *expr)
{
const struct expr *dep = payload_dependency_get(ctx, expr->payload.base);
@@ -822,6 +822,18 @@ static bool payload_may_dependency_kill(struct payload_dep_ctx *ctx,
if (expr->payload.base != PROTO_BASE_TRANSPORT_HDR)
return true;
+ if (expr->payload.desc == &proto_th) {
+ /* &proto_th could mean any of udp, tcp, dccp, ... so we
+ * cannot remove the dependency.
+ *
+ * Also prefer raw payload @th syntax, there is no
+ * 'source/destination port' protocol here.
+ */
+ expr->payload.desc = &proto_unknown;
+ expr->dtype = &xinteger_type;
+ return false;
+ }
+
if (dep->left->etype != EXPR_PAYLOAD ||
dep->left->payload.base != PROTO_BASE_TRANSPORT_HDR)
return true;
diff --git a/tests/py/README b/tests/py/README
index ed5dc58b..864a966e 100644
--- a/tests/py/README
+++ b/tests/py/README
@@ -163,4 +163,35 @@ G) Acknowledgements
Thanks to the Outreach Program for Women (OPW) for sponsoring this test
infrastructure and my mentor Pablo Neira.
+H) JSON (-j) Mode
+
+This mode is supposed to repeat the same tests using JSON syntax. For each test
+file example.t, there is supposed to be a file example.t.json holding the JSON
+equivalents of each rule in example.t. The file's syntax is similar to payload
+files: An initial comment identifies the rule belonging to the following JSON
+equivalent. Pairs of comment and JSON are separated by a single blank line.
+
+If the example.t.json file does not exist, the test script will warn and create
+(or append to) example.t.json.got. The JSON equivalent written is generated by
+applying the rule in standard syntax and listing the ruleset in JSON format.
+After thorough review, it may be renamed to example.t.json.
+
+One common case for editing the content in example.t.json.got is expected
+differences between input and output. The generated content will match the
+output while it is supposed to match the input.
+
+If a rule is expected to differ in output, the expected output must be recorded
+in example.t.json.output. Its syntax is identical to example.t.json, i.e. pairs
+of comment identifying the rule (in standard syntax) and JSON (output) format
+separated by blank lines. Note: the comment states the rule as in input, not
+output.
+
+If the example.t.json.output file does not exist and output differs from input,
+the file example.t.json.output.got is created with the actual output recorded.
+
+JSON mode will also check the payload created for the rule in JSON syntax by
+comparing it to the recorded one in example.t.payload. Should it differ, it
+will be recorded in example.t.json.payload.got. This is always a bug: A rule's
+JSON equivalent must turn into the same bytecode as the rule itself.
+
-EOF-
diff --git a/tests/py/any/limit.t b/tests/py/any/limit.t
index a04ef42a..2a84e3f5 100644
--- a/tests/py/any/limit.t
+++ b/tests/py/any/limit.t
@@ -22,7 +22,6 @@ limit rate 2 kbytes/second;ok
limit rate 1025 kbytes/second;ok
limit rate 1023 mbytes/second;ok
limit rate 10230 mbytes/second;ok
-limit rate 1023000 mbytes/second;ok
limit rate 512 kbytes/second burst 5 packets;fail
limit rate 1 bytes / second;ok;limit rate 1 bytes/second
@@ -33,7 +32,6 @@ limit rate 1 gbytes / second;fail
limit rate 1025 bytes/second burst 512 bytes;ok
limit rate 1025 kbytes/second burst 1023 kbytes;ok
limit rate 1025 mbytes/second burst 1025 kbytes;ok
-limit rate 1025000 mbytes/second burst 1023 mbytes;ok
limit rate over 400/minute;ok;limit rate over 400/minute burst 5 packets
limit rate over 20/second;ok;limit rate over 20/second burst 5 packets
@@ -47,9 +45,7 @@ limit rate over 2 kbytes/second;ok
limit rate over 1025 kbytes/second;ok
limit rate over 1023 mbytes/second;ok
limit rate over 10230 mbytes/second;ok
-limit rate over 1023000 mbytes/second;ok
limit rate over 1025 bytes/second burst 512 bytes;ok
limit rate over 1025 kbytes/second burst 1023 kbytes;ok
limit rate over 1025 mbytes/second burst 1025 kbytes;ok
-limit rate over 1025000 mbytes/second burst 1023 mbytes;ok
diff --git a/tests/py/any/limit.t.json b/tests/py/any/limit.t.json
index e001ba0f..73160b27 100644
--- a/tests/py/any/limit.t.json
+++ b/tests/py/any/limit.t.json
@@ -114,17 +114,6 @@
}
]
-# limit rate 1023000 mbytes/second
-[
- {
- "limit": {
- "per": "second",
- "rate": 1023000,
- "rate_unit": "mbytes"
- }
- }
-]
-
# limit rate 1 bytes / second
[
{
@@ -203,19 +192,6 @@
}
]
-# limit rate 1025000 mbytes/second burst 1023 mbytes
-[
- {
- "limit": {
- "burst": 1023,
- "burst_unit": "mbytes",
- "per": "second",
- "rate": 1025000,
- "rate_unit": "mbytes"
- }
- }
-]
-
# limit rate over 400/minute
[
{
@@ -343,18 +319,6 @@
}
]
-# limit rate over 1023000 mbytes/second
-[
- {
- "limit": {
- "inv": true,
- "per": "second",
- "rate": 1023000,
- "rate_unit": "mbytes"
- }
- }
-]
-
# limit rate over 1025 bytes/second burst 512 bytes
[
{
@@ -396,18 +360,3 @@
}
}
]
-
-# limit rate over 1025000 mbytes/second burst 1023 mbytes
-[
- {
- "limit": {
- "burst": 1023,
- "burst_unit": "mbytes",
- "inv": true,
- "per": "second",
- "rate": 1025000,
- "rate_unit": "mbytes"
- }
- }
-]
-
diff --git a/tests/py/any/limit.t.json.output b/tests/py/any/limit.t.json.output
index 5a95f5e1..2c94d2de 100644
--- a/tests/py/any/limit.t.json.output
+++ b/tests/py/any/limit.t.json.output
@@ -118,19 +118,6 @@
}
]
-# limit rate 1023000 mbytes/second
-[
- {
- "limit": {
- "burst": 0,
- "burst_unit": "bytes",
- "per": "second",
- "rate": 1023000,
- "rate_unit": "mbytes"
- }
- }
-]
-
# limit rate over 400/minute
[
{
@@ -260,18 +247,3 @@
}
}
]
-
-# limit rate over 1023000 mbytes/second
-[
- {
- "limit": {
- "burst": 0,
- "burst_unit": "bytes",
- "inv": true,
- "per": "second",
- "rate": 1023000,
- "rate_unit": "mbytes"
- }
- }
-]
-
diff --git a/tests/py/any/limit.t.payload b/tests/py/any/limit.t.payload
index 0c7ee942..dc6701b3 100644
--- a/tests/py/any/limit.t.payload
+++ b/tests/py/any/limit.t.payload
@@ -42,10 +42,6 @@ ip test-ip4 output
ip test-ip4 output
[ limit rate 10726932480/second burst 0 type bytes flags 0x0 ]
-# limit rate 1023000 mbytes/second
-ip test-ip4 output
- [ limit rate 1072693248000/second burst 0 type bytes flags 0x0 ]
-
# limit rate 1 bytes / second
ip
[ limit rate 1/second burst 0 type bytes flags 0x0 ]
@@ -71,10 +67,6 @@ ip test-ip4 output
ip test-ip4 output
[ limit rate 1074790400/second burst 1049600 type bytes flags 0x0 ]
-# limit rate 1025000 mbytes/second burst 1023 mbytes
-ip test-ip4 output
- [ limit rate 1074790400000/second burst 1072693248 type bytes flags 0x0 ]
-
# limit rate over 400/minute
ip test-ip4 output
[ limit rate 400/minute burst 5 type packets flags 0x1 ]
@@ -119,10 +111,6 @@ ip test-ip4 output
ip test-ip4 output
[ limit rate 10726932480/second burst 0 type bytes flags 0x1 ]
-# limit rate over 1023000 mbytes/second
-ip test-ip4 output
- [ limit rate 1072693248000/second burst 0 type bytes flags 0x1 ]
-
# limit rate over 1025 bytes/second burst 512 bytes
ip test-ip4 output
[ limit rate 1025/second burst 512 type bytes flags 0x1 ]
@@ -134,8 +122,3 @@ ip test-ip4 output
# limit rate over 1025 mbytes/second burst 1025 kbytes
ip test-ip4 output
[ limit rate 1074790400/second burst 1049600 type bytes flags 0x1 ]
-
-# limit rate over 1025000 mbytes/second burst 1023 mbytes
-ip test-ip4 output
- [ limit rate 1074790400000/second burst 1072693248 type bytes flags 0x1 ]
-
diff --git a/tests/py/any/meta.t.json b/tests/py/any/meta.t.json
index f3717f26..676affea 100644
--- a/tests/py/any/meta.t.json
+++ b/tests/py/any/meta.t.json
@@ -2661,7 +2661,7 @@
}
},
"op": "==",
- "right": "17:00"
+ "right": "17:00:00"
}
},
{
@@ -2758,3 +2758,63 @@
"accept": null
}
]
+
+# meta mark set vlan id map { 1 : 0x00000001, 4095 : 0x00004095 }
+[
+ {
+ "mangle": {
+ "key": {
+ "meta": {
+ "key": "mark"
+ }
+ },
+ "value": {
+ "map": {
+ "data": {
+ "set": [
+ [
+ 1,
+ 1
+ ],
+ [
+ 4095,
+ 16533
+ ]
+ ]
+ },
+ "key": {
+ "payload": {
+ "field": "id",
+ "protocol": "vlan"
+ }
+ }
+ }
+ }
+ }
+ }
+]
+
+# meta mark set vlan id map @map1
+[
+ {
+ "mangle": {
+ "key": {
+ "meta": {
+ "key": "mark"
+ }
+ },
+ "value": {
+ "map": {
+ "data": "@map1",
+ "key": {
+ "payload": {
+ "field": "id",
+ "protocol": "vlan"
+ }
+ }
+ }
+ }
+ }
+ }
+]
+
diff --git a/tests/py/any/meta.t.json.output b/tests/py/any/meta.t.json.output
index 4e9e669f..d46935de 100644
--- a/tests/py/any/meta.t.json.output
+++ b/tests/py/any/meta.t.json.output
@@ -592,24 +592,6 @@
}
]
-# meta time "1970-05-23 21:07:14" drop
-[
- {
- "match": {
- "left": {
- "meta": {
- "key": "time"
- }
- },
- "op": "==",
- "right": "1970-05-23 21:07:14"
- }
- },
- {
- "drop": null
- }
-]
-
# meta time 12341234 drop
[
{
@@ -628,96 +610,6 @@
}
]
-# meta time "2019-06-21 17:00:00" drop
-[
- {
- "match": {
- "left": {
- "meta": {
- "key": "time"
- }
- },
- "op": "==",
- "right": "2019-06-21 17:00:00"
- }
- },
- {
- "drop": null
- }
-]
-
-# meta time "2019-07-01 00:00:00" drop
-[
- {
- "match": {
- "left": {
- "meta": {
- "key": "time"
- }
- },
- "op": "==",
- "right": "2019-07-01 00:00:00"
- }
- },
- {
- "drop": null
- }
-]
-
-# meta time "2019-07-01 00:01:00" drop
-[
- {
- "match": {
- "left": {
- "meta": {
- "key": "time"
- }
- },
- "op": "==",
- "right": "2019-07-01 00:01:00"
- }
- },
- {
- "drop": null
- }
-]
-
-# meta time "2019-07-01 00:00:01" drop
-[
- {
- "match": {
- "left": {
- "meta": {
- "key": "time"
- }
- },
- "op": "==",
- "right": "2019-07-01 00:00:01"
- }
- },
- {
- "drop": null
- }
-]
-
-# meta day "Saturday" drop
-[
- {
- "match": {
- "left": {
- "meta": {
- "key": "day"
- }
- },
- "op": "==",
- "right": "Saturday"
- }
- },
- {
- "drop": null
- }
-]
-
# meta day 6 drop
[
{
@@ -736,24 +628,6 @@
}
]
-# meta hour "17:00" drop
-[
- {
- "match": {
- "left": {
- "meta": {
- "key": "hour"
- }
- },
- "op": "==",
- "right": "17:00"
- }
- },
- {
- "drop": null
- }
-]
-
# meta hour "17:00:00" drop
[
{
@@ -772,57 +646,3 @@
}
]
-# meta hour "17:00:01" drop
-[
- {
- "match": {
- "left": {
- "meta": {
- "key": "hour"
- }
- },
- "op": "==",
- "right": "17:00:01"
- }
- },
- {
- "drop": null
- }
-]
-
-# meta hour "00:00" drop
-[
- {
- "match": {
- "left": {
- "meta": {
- "key": "hour"
- }
- },
- "op": "==",
- "right": "00:00"
- }
- },
- {
- "drop": null
- }
-]
-
-# meta hour "00:01" drop
-[
- {
- "match": {
- "left": {
- "meta": {
- "key": "hour"
- }
- },
- "op": "==",
- "right": "00:01"
- }
- },
- {
- "drop": null
- }
-]
-
diff --git a/tests/py/any/rawpayload.t b/tests/py/any/rawpayload.t
index 5bc9d35f..118f58fd 100644
--- a/tests/py/any/rawpayload.t
+++ b/tests/py/any/rawpayload.t
@@ -15,10 +15,18 @@ meta l4proto tcp @th,16,16 { 22, 23, 80};ok;tcp dport { 22, 23, 80}
@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
+meta l4proto 91 @th,0,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
diff --git a/tests/py/any/rawpayload.t.json b/tests/py/any/rawpayload.t.json
index 4cae4d49..04ed0acf 100644
--- a/tests/py/any/rawpayload.t.json
+++ b/tests/py/any/rawpayload.t.json
@@ -187,6 +187,37 @@
}
]
+# meta l4proto 91 @th,0,16 0x0 accept
+[
+ {
+ "match": {
+ "left": {
+ "meta": {
+ "key": "l4proto"
+ }
+ },
+ "op": "==",
+ "right": 91
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "base": "th",
+ "len": 16,
+ "offset": 0
+ }
+ },
+ "op": "==",
+ "right": 0
+ }
+ },
+ {
+ "accept": null
+ }
+]
+
# @ih,32,32 0x14000000
[
{
@@ -204,3 +235,160 @@
}
]
+# @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
+ }
+ }
+]
+
diff --git a/tests/py/any/rawpayload.t.payload b/tests/py/any/rawpayload.t.payload
index fe2377e6..c093d5d8 100644
--- a/tests/py/any/rawpayload.t.payload
+++ b/tests/py/any/rawpayload.t.payload
@@ -56,8 +56,69 @@ inet test-inet input
[ cmp eq reg 1 0x00000000 ]
[ immediate reg 0 accept ]
+# meta l4proto 91 @th,0,16 0x0 accept
+inet test-inet input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x0000005b ]
+ [ payload load 2b @ transport header + 0 => reg 1 ]
+ [ cmp eq reg 1 0x00000000 ]
+ [ immediate reg 0 accept ]
+
# @ih,32,32 0x14000000
inet test-inet input
[ 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 ]
diff --git a/tests/py/any/tcpopt.t.json b/tests/py/any/tcpopt.t.json
index 4466f14f..87074b9d 100644
--- a/tests/py/any/tcpopt.t.json
+++ b/tests/py/any/tcpopt.t.json
@@ -192,7 +192,7 @@
"left": {
"tcp option": {
"field": "left",
- "name": "sack"
+ "name": "sack0"
}
},
"op": "==",
@@ -272,7 +272,7 @@
"left": {
"tcp option": {
"field": "right",
- "name": "sack"
+ "name": "sack0"
}
},
"op": "==",
diff --git a/tests/py/bridge/vlan.t.json.output b/tests/py/bridge/vlan.t.json.output
index 2f90c8ff..eea2d411 100644
--- a/tests/py/bridge/vlan.t.json.output
+++ b/tests/py/bridge/vlan.t.json.output
@@ -202,3 +202,34 @@
}
}
]
+
+# ether saddr 00:11:22:33:44:55 counter ether type 8021q
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "saddr",
+ "protocol": "ether"
+ }
+ },
+ "op": "==",
+ "right": "00:11:22:33:44:55"
+ }
+ },
+ {
+ "counter": null
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "type",
+ "protocol": "ether"
+ }
+ },
+ "op": "==",
+ "right": "8021q"
+ }
+ }
+]
diff --git a/tests/py/inet/ct.t b/tests/py/inet/ct.t
index 5312b328..8a7b1555 100644
--- a/tests/py/inet/ct.t
+++ b/tests/py/inet/ct.t
@@ -3,11 +3,16 @@
*inet;test-inet;input
+# dependency should be removed
meta nfproto ipv4 ct original saddr 1.2.3.4;ok;ct original ip saddr 1.2.3.4
ct original ip6 saddr ::1;ok
ct original ip daddr 1.2.3.4 accept;ok
+# dependency must not be removed
+meta nfproto ipv4 ct mark 0x00000001;ok
+meta nfproto ipv6 ct protocol 6;ok
+
# missing protocol context
ct original saddr ::1;fail
diff --git a/tests/py/inet/ct.t.json b/tests/py/inet/ct.t.json
index 223ac9e7..155eecc5 100644
--- a/tests/py/inet/ct.t.json
+++ b/tests/py/inet/ct.t.json
@@ -58,3 +58,54 @@
}
]
+# meta nfproto ipv4 ct mark 0x00000001
+[
+ {
+ "match": {
+ "left": {
+ "meta": {
+ "key": "nfproto"
+ }
+ },
+ "op": "==",
+ "right": "ipv4"
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "ct": {
+ "key": "mark"
+ }
+ },
+ "op": "==",
+ "right": 1
+ }
+ }
+]
+
+# meta nfproto ipv6 ct protocol 6
+[
+ {
+ "match": {
+ "left": {
+ "meta": {
+ "key": "nfproto"
+ }
+ },
+ "op": "==",
+ "right": "ipv6"
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "ct": {
+ "key": "protocol"
+ }
+ },
+ "op": "==",
+ "right": 6
+ }
+ }
+]
diff --git a/tests/py/inet/ct.t.payload b/tests/py/inet/ct.t.payload
index f7a2ef27..216dad2b 100644
--- a/tests/py/inet/ct.t.payload
+++ b/tests/py/inet/ct.t.payload
@@ -15,3 +15,17 @@ inet test-inet input
[ ct load dst_ip => reg 1 , dir original ]
[ cmp eq reg 1 0x04030201 ]
[ immediate reg 0 accept ]
+
+# meta nfproto ipv4 ct mark 0x00000001
+inet test-inet input
+ [ meta load nfproto => reg 1 ]
+ [ cmp eq reg 1 0x00000002 ]
+ [ ct load mark => reg 1 ]
+ [ cmp eq reg 1 0x00000001 ]
+
+# meta nfproto ipv6 ct protocol 6
+inet test-inet input
+ [ meta load nfproto => reg 1 ]
+ [ cmp eq reg 1 0x0000000a ]
+ [ ct load protocol => reg 1 ]
+ [ cmp eq reg 1 0x00000006 ]
diff --git a/tests/py/inet/fib.t.json.output b/tests/py/inet/fib.t.json.output
index 52cd46bc..e21f1e72 100644
--- a/tests/py/inet/fib.t.json.output
+++ b/tests/py/inet/fib.t.json.output
@@ -37,3 +37,35 @@
}
]
+# fib daddr oif exists
+[
+ {
+ "match": {
+ "left": {
+ "fib": {
+ "flags": "daddr",
+ "result": "oif"
+ }
+ },
+ "op": "==",
+ "right": true
+ }
+ }
+]
+
+# fib daddr oif missing
+[
+ {
+ "match": {
+ "left": {
+ "fib": {
+ "flags": "daddr",
+ "result": "oif"
+ }
+ },
+ "op": "==",
+ "right": false
+ }
+ }
+]
+
diff --git a/tests/py/inet/payloadmerge.t b/tests/py/inet/payloadmerge.t
new file mode 100644
index 00000000..04ba1ce6
--- /dev/null
+++ b/tests/py/inet/payloadmerge.t
@@ -0,0 +1,14 @@
+:input;type filter hook input priority 0
+
+*ip;test-ip4;input
+*ip6;test-ip6;input
+*inet;test-inet;input
+
+tcp sport 1 tcp dport 2;ok
+tcp sport != 1 tcp dport != 2;ok
+tcp sport 1 tcp dport != 2;ok
+tcp sport != 1 tcp dport 2;ok
+meta l4proto != 6 th dport 2;ok
+meta l4proto 6 tcp dport 22;ok;tcp dport 22
+tcp sport > 1 tcp dport > 2;ok
+tcp sport 1 tcp dport > 2;ok
diff --git a/tests/py/inet/payloadmerge.t.json b/tests/py/inet/payloadmerge.t.json
new file mode 100644
index 00000000..e5b66cf9
--- /dev/null
+++ b/tests/py/inet/payloadmerge.t.json
@@ -0,0 +1,211 @@
+# tcp sport 1 tcp dport 2
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "sport",
+ "protocol": "tcp"
+ }
+ },
+ "op": "==",
+ "right": 1
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "dport",
+ "protocol": "tcp"
+ }
+ },
+ "op": "==",
+ "right": 2
+ }
+ }
+]
+
+# tcp sport != 1 tcp dport != 2
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "sport",
+ "protocol": "tcp"
+ }
+ },
+ "op": "!=",
+ "right": 1
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "dport",
+ "protocol": "tcp"
+ }
+ },
+ "op": "!=",
+ "right": 2
+ }
+ }
+]
+
+# tcp sport 1 tcp dport != 2
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "sport",
+ "protocol": "tcp"
+ }
+ },
+ "op": "==",
+ "right": 1
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "dport",
+ "protocol": "tcp"
+ }
+ },
+ "op": "!=",
+ "right": 2
+ }
+ }
+]
+
+# tcp sport != 1 tcp dport 2
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "sport",
+ "protocol": "tcp"
+ }
+ },
+ "op": "!=",
+ "right": 1
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "dport",
+ "protocol": "tcp"
+ }
+ },
+ "op": "==",
+ "right": 2
+ }
+ }
+]
+
+# meta l4proto != 6 th dport 2
+[
+ {
+ "match": {
+ "left": {
+ "meta": {
+ "key": "l4proto"
+ }
+ },
+ "op": "!=",
+ "right": 6
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "dport",
+ "protocol": "th"
+ }
+ },
+ "op": "==",
+ "right": 2
+ }
+ }
+]
+
+# meta l4proto 6 tcp dport 22
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "dport",
+ "protocol": "tcp"
+ }
+ },
+ "op": "==",
+ "right": 22
+ }
+ }
+]
+
+# tcp sport > 1 tcp dport > 2
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "sport",
+ "protocol": "tcp"
+ }
+ },
+ "op": ">",
+ "right": 1
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "dport",
+ "protocol": "tcp"
+ }
+ },
+ "op": ">",
+ "right": 2
+ }
+ }
+]
+
+# tcp sport 1 tcp dport > 2
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "sport",
+ "protocol": "tcp"
+ }
+ },
+ "op": "==",
+ "right": 1
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "dport",
+ "protocol": "tcp"
+ }
+ },
+ "op": ">",
+ "right": 2
+ }
+ }
+]
+
diff --git a/tests/py/inet/payloadmerge.t.payload b/tests/py/inet/payloadmerge.t.payload
new file mode 100644
index 00000000..a0465cdd
--- /dev/null
+++ b/tests/py/inet/payloadmerge.t.payload
@@ -0,0 +1,66 @@
+# tcp sport 1 tcp dport 2
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x00000006 ]
+ [ payload load 4b @ transport header + 0 => reg 1 ]
+ [ cmp eq reg 1 0x02000100 ]
+
+# tcp sport != 1 tcp dport != 2
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x00000006 ]
+ [ payload load 2b @ transport header + 0 => reg 1 ]
+ [ cmp neq reg 1 0x00000100 ]
+ [ payload load 2b @ transport header + 2 => reg 1 ]
+ [ cmp neq reg 1 0x00000200 ]
+
+# tcp sport 1 tcp dport != 2
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x00000006 ]
+ [ payload load 2b @ transport header + 0 => reg 1 ]
+ [ cmp eq reg 1 0x00000100 ]
+ [ payload load 2b @ transport header + 2 => reg 1 ]
+ [ cmp neq reg 1 0x00000200 ]
+
+# tcp sport != 1 tcp dport 2
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x00000006 ]
+ [ payload load 2b @ transport header + 0 => reg 1 ]
+ [ cmp neq reg 1 0x00000100 ]
+ [ payload load 2b @ transport header + 2 => reg 1 ]
+ [ cmp eq reg 1 0x00000200 ]
+
+# meta l4proto != 6 th dport 2
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp neq reg 1 0x00000006 ]
+ [ payload load 2b @ transport header + 2 => reg 1 ]
+ [ cmp eq reg 1 0x00000200 ]
+
+# meta l4proto 6 tcp dport 22
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x00000006 ]
+ [ payload load 2b @ transport header + 2 => reg 1 ]
+ [ cmp eq reg 1 0x00001600 ]
+
+# tcp sport > 1 tcp dport > 2
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x00000006 ]
+ [ payload load 2b @ transport header + 0 => reg 1 ]
+ [ cmp gt reg 1 0x00000100 ]
+ [ payload load 2b @ transport header + 2 => reg 1 ]
+ [ cmp gt reg 1 0x00000200 ]
+
+# tcp sport 1 tcp dport > 2
+ip test-ip4 input
+ [ meta load l4proto => reg 1 ]
+ [ cmp eq reg 1 0x00000006 ]
+ [ payload load 2b @ transport header + 0 => reg 1 ]
+ [ cmp eq reg 1 0x00000100 ]
+ [ payload load 2b @ transport header + 2 => reg 1 ]
+ [ cmp gt reg 1 0x00000200 ]
+
diff --git a/tests/py/inet/synproxy.t.json.output b/tests/py/inet/synproxy.t.json.output
new file mode 100644
index 00000000..e32cdfb8
--- /dev/null
+++ b/tests/py/inet/synproxy.t.json.output
@@ -0,0 +1,17 @@
+# synproxy timestamp
+[
+ {
+ "synproxy": {
+ "flags": "timestamp"
+ }
+ }
+]
+
+# synproxy sack-perm
+[
+ {
+ "synproxy": {
+ "flags": "sack-perm"
+ }
+ }
+]
diff --git a/tests/py/inet/tcp.t.json b/tests/py/inet/tcp.t.json
index bd589cf0..28dd4341 100644
--- a/tests/py/inet/tcp.t.json
+++ b/tests/py/inet/tcp.t.json
@@ -1370,13 +1370,13 @@
"op": "==",
"right": {
"set": [
+ "syn",
{
"|": [
"syn",
"ack"
]
- },
- "syn"
+ }
]
}
}
@@ -1401,10 +1401,10 @@
"op": "==",
"right": {
"set": [
- { "|": [ "fin", "psh", "ack" ] },
"fin",
+ "ack",
{ "|": [ "psh", "ack" ] },
- "ack"
+ { "|": [ "fin", "psh", "ack" ] }
]
}
}
@@ -1442,17 +1442,21 @@
"protocol": "tcp"
}
},
- [
- "fin",
- "syn"
- ]
+ {
+ "|": [
+ "fin",
+ "syn"
+ ]
+ }
]
},
"op": "==",
- "right": [
- "fin",
- "syn"
- ]
+ "right": {
+ "|": [
+ "fin",
+ "syn"
+ ]
+ }
}
}
]
@@ -1469,10 +1473,12 @@
"protocol": "tcp"
}
},
- [
- "fin",
- "syn"
- ]
+ {
+ "|": [
+ "fin",
+ "syn"
+ ]
+ }
]
},
"op": "!=",
@@ -1605,12 +1611,14 @@
"protocol": "tcp"
}
},
- [
- "fin",
- "syn",
- "rst",
- "ack"
- ]
+ {
+ "|": [
+ "fin",
+ "syn",
+ "rst",
+ "ack"
+ ]
+ }
]
},
"op": "==",
@@ -1631,12 +1639,14 @@
"protocol": "tcp"
}
},
- [
- "fin",
- "syn",
- "rst",
- "ack"
- ]
+ {
+ "|": [
+ "fin",
+ "syn",
+ "rst",
+ "ack"
+ ]
+ }
]
},
"op": "==",
@@ -1658,12 +1668,14 @@
"protocol": "tcp"
}
},
- [
- "fin",
- "syn",
- "rst",
- "ack"
- ]
+ {
+ "|": [
+ "fin",
+ "syn",
+ "rst",
+ "ack"
+ ]
+ }
]
},
"op": "!=",
@@ -1684,19 +1696,23 @@
"protocol": "tcp"
}
},
- [
- "fin",
- "syn",
- "rst",
- "ack"
- ]
+ {
+ "|": [
+ "fin",
+ "syn",
+ "rst",
+ "ack"
+ ]
+ }
]
},
"op": "==",
- "right": [
- "syn",
- "ack"
- ]
+ "right": {
+ "|": [
+ "syn",
+ "ack"
+ ]
+ }
}
}
]
@@ -1713,17 +1729,21 @@
"protocol": "tcp"
}
},
- [
- "syn",
- "ack"
- ]
+ {
+ "|": [
+ "syn",
+ "ack"
+ ]
+ }
]
},
"op": "==",
- "right": [
- "syn",
- "ack"
- ]
+ "right": {
+ "|": [
+ "syn",
+ "ack"
+ ]
+ }
}
}
]
diff --git a/tests/py/inet/tcp.t.json.output b/tests/py/inet/tcp.t.json.output
index 3f03c0dd..d487a8f1 100644
--- a/tests/py/inet/tcp.t.json.output
+++ b/tests/py/inet/tcp.t.json.output
@@ -115,32 +115,6 @@
}
]
-# tcp flags { syn, syn | ack }
-[
- {
- "match": {
- "left": {
- "payload": {
- "field": "flags",
- "protocol": "tcp"
- }
- },
- "op": "==",
- "right": {
- "set": [
- "syn",
- {
- "|": [
- "syn",
- "ack"
- ]
- }
- ]
- }
- }
- }
-]
-
# tcp flags & (fin | syn | rst | psh | ack | urg) == { fin, ack, psh | ack, fin | psh | ack }
[
{
@@ -188,242 +162,3 @@
}
}
]
-
-# tcp flags fin,syn / fin,syn
-[
- {
- "match": {
- "left": {
- "&": [
- {
- "payload": {
- "field": "flags",
- "protocol": "tcp"
- }
- },
- {
- "|": [
- "fin",
- "syn"
- ]
- }
- ]
- },
- "op": "==",
- "right": {
- "|": [
- "fin",
- "syn"
- ]
- }
- }
- }
-]
-
-# tcp flags != syn / fin,syn
-[
- {
- "match": {
- "left": {
- "&": [
- {
- "payload": {
- "field": "flags",
- "protocol": "tcp"
- }
- },
- {
- "|": [
- "fin",
- "syn"
- ]
- }
- ]
- },
- "op": "!=",
- "right": "syn"
- }
- }
-]
-
-# tcp flags & (fin | syn | rst | ack) syn
-[
- {
- "match": {
- "left": {
- "&": [
- {
- "payload": {
- "field": "flags",
- "protocol": "tcp"
- }
- },
- {
- "|": [
- "fin",
- "syn",
- "rst",
- "ack"
- ]
- }
- ]
- },
- "op": "==",
- "right": "syn"
- }
- }
-]
-
-# tcp flags & (fin | syn | rst | ack) == syn
-[
- {
- "match": {
- "left": {
- "&": [
- {
- "payload": {
- "field": "flags",
- "protocol": "tcp"
- }
- },
- {
- "|": [
- "fin",
- "syn",
- "rst",
- "ack"
- ]
- }
- ]
- },
- "op": "==",
- "right": "syn"
- }
- }
-]
-
-# tcp flags & (fin | syn | rst | ack) != syn
-[
- {
- "match": {
- "left": {
- "&": [
- {
- "payload": {
- "field": "flags",
- "protocol": "tcp"
- }
- },
- {
- "|": [
- "fin",
- "syn",
- "rst",
- "ack"
- ]
- }
- ]
- },
- "op": "!=",
- "right": "syn"
- }
- }
-]
-
-# tcp flags & (fin | syn | rst | ack) == syn | ack
-[
- {
- "match": {
- "left": {
- "&": [
- {
- "payload": {
- "field": "flags",
- "protocol": "tcp"
- }
- },
- {
- "|": [
- "fin",
- "syn",
- "rst",
- "ack"
- ]
- }
- ]
- },
- "op": "==",
- "right": {
- "|": [
- "syn",
- "ack"
- ]
- }
- }
- }
-]
-
-# tcp flags & (fin | syn | rst | ack) != syn | ack
-[
- {
- "match": {
- "left": {
- "&": [
- {
- "payload": {
- "field": "flags",
- "protocol": "tcp"
- }
- },
- {
- "|": [
- "fin",
- "syn",
- "rst",
- "ack"
- ]
- }
- ]
- },
- "op": "!=",
- "right": {
- "|": [
- "syn",
- "ack"
- ]
- }
- }
- }
-]
-
-# tcp flags & (syn | ack) == syn | ack
-[
- {
- "match": {
- "left": {
- "&": [
- {
- "payload": {
- "field": "flags",
- "protocol": "tcp"
- }
- },
- {
- "|": [
- "syn",
- "ack"
- ]
- }
- ]
- },
- "op": "==",
- "right": {
- "|": [
- "syn",
- "ack"
- ]
- }
- }
- }
-]
-
diff --git a/tests/py/inet/udp.t.payload b/tests/py/inet/udp.t.payload
index e6beda7f..32f7f8c3 100644
--- a/tests/py/inet/udp.t.payload
+++ b/tests/py/inet/udp.t.payload
@@ -236,7 +236,7 @@ inet test-inet input
[ meta load l4proto => reg 1 ]
[ cmp eq reg 1 0x00000011 ]
[ immediate reg 1 0x00000000 ]
- [ payload write reg 1 => 2b @ transport header + 6 csum_type 1 csum_off 6 csum_flags 0x0 ]
+ [ payload write reg 1 => 2b @ transport header + 6 csum_type 0 csum_off 0 csum_flags 0x1 ]
# iif "lo" udp dport set 65535
inet test-inet input
@@ -245,4 +245,4 @@ inet test-inet input
[ meta load l4proto => reg 1 ]
[ cmp eq reg 1 0x00000011 ]
[ immediate reg 1 0x0000ffff ]
- [ payload write reg 1 => 2b @ transport header + 2 csum_type 1 csum_off 6 csum_flags 0x0 ]
+ [ payload write reg 1 => 2b @ transport header + 2 csum_type 0 csum_off 0 csum_flags 0x1 ]
diff --git a/tests/py/ip/icmp.t.json b/tests/py/ip/icmp.t.json
index 4f052509..45e04c78 100644
--- a/tests/py/ip/icmp.t.json
+++ b/tests/py/ip/icmp.t.json
@@ -459,8 +459,8 @@
"op": "!=",
"right": {
"set": [
- "prot-unreachable",
- "frag-needed",
+ 2,
+ 4,
33,
54,
56
@@ -1488,7 +1488,7 @@
}
},
"op": "==",
- "right": "host-unreachable"
+ "right": 1
}
}
]
diff --git a/tests/py/ip/icmp.t.json.output b/tests/py/ip/icmp.t.json.output
index 5a075858..d79e72b5 100644
--- a/tests/py/ip/icmp.t.json.output
+++ b/tests/py/ip/icmp.t.json.output
@@ -1,27 +1,3 @@
-# icmp code { 2, 4, 54, 33, 56}
-[
- {
- "match": {
- "left": {
- "payload": {
- "field": "code",
- "protocol": "icmp"
- }
- },
- "op": "==",
- "right": {
- "set": [
- "prot-unreachable",
- "frag-needed",
- 33,
- 54,
- 56
- ]
- }
- }
- }
-]
-
# icmp id 1245 log
[
{
diff --git a/tests/py/ip/ip.t b/tests/py/ip/ip.t
index 6542e9ee..e6999c29 100644
--- a/tests/py/ip/ip.t
+++ b/tests/py/ip/ip.t
@@ -54,6 +54,9 @@ ip frag-off 0x21-0x2d;ok
ip frag-off != 0x21-0x2d;ok
ip frag-off { 0x21, 0x37, 0x43, 0x58};ok
ip frag-off != { 0x21, 0x37, 0x43, 0x58};ok
+ip frag-off & 0x1fff != 0x0;ok
+ip frag-off & 0x2000 != 0x0;ok
+ip frag-off & 0x4000 != 0x0;ok
ip ttl 0 drop;ok
ip ttl 233;ok
diff --git a/tests/py/ip/ip.t.json b/tests/py/ip/ip.t.json
index 1beabaa5..a170e5c1 100644
--- a/tests/py/ip/ip.t.json
+++ b/tests/py/ip/ip.t.json
@@ -501,6 +501,69 @@
}
]
+# ip frag-off & 0x1fff != 0x0
+[
+ {
+ "match": {
+ "left": {
+ "&": [
+ {
+ "payload": {
+ "field": "frag-off",
+ "protocol": "ip"
+ }
+ },
+ 8191
+ ]
+ },
+ "op": "!=",
+ "right": 0
+ }
+ }
+]
+
+# ip frag-off & 0x2000 != 0x0
+[
+ {
+ "match": {
+ "left": {
+ "&": [
+ {
+ "payload": {
+ "field": "frag-off",
+ "protocol": "ip"
+ }
+ },
+ 8192
+ ]
+ },
+ "op": "!=",
+ "right": 0
+ }
+ }
+]
+
+# ip frag-off & 0x4000 != 0x0
+[
+ {
+ "match": {
+ "left": {
+ "&": [
+ {
+ "payload": {
+ "field": "frag-off",
+ "protocol": "ip"
+ }
+ },
+ 16384
+ ]
+ },
+ "op": "!=",
+ "right": 0
+ }
+ }
+]
+
# ip ttl 0 drop
[
{
diff --git a/tests/py/ip/ip.t.json.output b/tests/py/ip/ip.t.json.output
index b201cdaa..351ae935 100644
--- a/tests/py/ip/ip.t.json.output
+++ b/tests/py/ip/ip.t.json.output
@@ -230,3 +230,34 @@
}
]
+# ip saddr 1.2.3.4 counter ip daddr 3.4.5.6
+[
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "saddr",
+ "protocol": "ip"
+ }
+ },
+ "op": "==",
+ "right": "1.2.3.4"
+ }
+ },
+ {
+ "counter": null
+ },
+ {
+ "match": {
+ "left": {
+ "payload": {
+ "field": "daddr",
+ "protocol": "ip"
+ }
+ },
+ "op": "==",
+ "right": "3.4.5.6"
+ }
+ }
+]
+
diff --git a/tests/py/ip/ip.t.payload b/tests/py/ip/ip.t.payload
index 69773801..d7ddf7be 100644
--- a/tests/py/ip/ip.t.payload
+++ b/tests/py/ip/ip.t.payload
@@ -162,6 +162,24 @@ ip test-ip4 input
[ payload load 2b @ network header + 6 => reg 1 ]
[ lookup reg 1 set __set%d 0x1 ]
+# ip frag-off & 0x1fff != 0x0
+ip test-ip4 input
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000ff1f ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
+# ip frag-off & 0x2000 != 0x0
+ip test-ip4 input
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000020 ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
+# ip frag-off & 0x4000 != 0x0
+ip test-ip4 input
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000040 ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
# ip ttl 0 drop
ip test-ip4 input
[ payload load 1b @ network header + 8 => reg 1 ]
diff --git a/tests/py/ip/ip.t.payload.bridge b/tests/py/ip/ip.t.payload.bridge
index c04f6d6c..53f881d3 100644
--- a/tests/py/ip/ip.t.payload.bridge
+++ b/tests/py/ip/ip.t.payload.bridge
@@ -212,6 +212,30 @@ bridge test-bridge input
[ payload load 2b @ network header + 6 => reg 1 ]
[ lookup reg 1 set __set%d 0x1 ]
+# ip frag-off & 0x1fff != 0x0
+bridge test-bridge input
+ [ meta load protocol => reg 1 ]
+ [ cmp eq reg 1 0x00000008 ]
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000ff1f ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
+# ip frag-off & 0x2000 != 0x0
+bridge test-bridge input
+ [ meta load protocol => reg 1 ]
+ [ cmp eq reg 1 0x00000008 ]
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000020 ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
+# ip frag-off & 0x4000 != 0x0
+bridge test-bridge input
+ [ meta load protocol => reg 1 ]
+ [ cmp eq reg 1 0x00000008 ]
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000040 ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
# ip ttl 0 drop
bridge test-bridge input
[ meta load protocol => reg 1 ]
diff --git a/tests/py/ip/ip.t.payload.inet b/tests/py/ip/ip.t.payload.inet
index 83e35aac..08674c98 100644
--- a/tests/py/ip/ip.t.payload.inet
+++ b/tests/py/ip/ip.t.payload.inet
@@ -212,6 +212,30 @@ inet test-inet input
[ payload load 2b @ network header + 6 => reg 1 ]
[ lookup reg 1 set __set%d 0x1 ]
+# ip frag-off & 0x1fff != 0x0
+inet test-inet input
+ [ meta load nfproto => reg 1 ]
+ [ cmp eq reg 1 0x00000002 ]
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000ff1f ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
+# ip frag-off & 0x2000 != 0x0
+inet test-inet input
+ [ meta load nfproto => reg 1 ]
+ [ cmp eq reg 1 0x00000002 ]
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000020 ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
+# ip frag-off & 0x4000 != 0x0
+inet test-inet input
+ [ meta load nfproto => reg 1 ]
+ [ cmp eq reg 1 0x00000002 ]
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000040 ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
# ip ttl 0 drop
inet test-inet input
[ meta load nfproto => reg 1 ]
diff --git a/tests/py/ip/ip.t.payload.netdev b/tests/py/ip/ip.t.payload.netdev
index bcadc579..8220b05d 100644
--- a/tests/py/ip/ip.t.payload.netdev
+++ b/tests/py/ip/ip.t.payload.netdev
@@ -146,6 +146,30 @@ netdev test-netdev ingress
[ payload load 2b @ network header + 6 => reg 1 ]
[ lookup reg 1 set __set%d 0x1 ]
+# ip frag-off & 0x1fff != 0x0
+netdev x y
+ [ meta load protocol => reg 1 ]
+ [ cmp eq reg 1 0x00000008 ]
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x0000ff1f ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
+# ip frag-off & 0x2000 != 0x0
+netdev x y
+ [ meta load protocol => reg 1 ]
+ [ cmp eq reg 1 0x00000008 ]
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000020 ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
+# ip frag-off & 0x4000 != 0x0
+netdev x y
+ [ meta load protocol => reg 1 ]
+ [ cmp eq reg 1 0x00000008 ]
+ [ payload load 2b @ network header + 6 => reg 1 ]
+ [ bitwise reg 1 = ( reg 1 & 0x00000040 ) ^ 0x00000000 ]
+ [ cmp neq reg 1 0x00000000 ]
+
# ip ttl 0 drop
netdev test-netdev ingress
[ meta load protocol => reg 1 ]
diff --git a/tests/py/ip6/exthdr.t.json.output b/tests/py/ip6/exthdr.t.json.output
index c9f5b49b..813402a2 100644
--- a/tests/py/ip6/exthdr.t.json.output
+++ b/tests/py/ip6/exthdr.t.json.output
@@ -1,33 +1,3 @@
-# exthdr hbh == exists
-[
- {
- "match": {
- "left": {
- "exthdr": {
- "name": "hbh"
- }
- },
- "op": "==",
- "right": true
- }
- }
-]
-
-# exthdr hbh == missing
-[
- {
- "match": {
- "left": {
- "exthdr": {
- "name": "hbh"
- }
- },
- "op": "==",
- "right": false
- }
- }
-]
-
# exthdr hbh 1
[
{
diff --git a/tests/py/ip6/frag.t.payload.netdev b/tests/py/ip6/frag.t.payload.netdev
index 821d5679..05620754 100644
--- a/tests/py/ip6/frag.t.payload.netdev
+++ b/tests/py/ip6/frag.t.payload.netdev
@@ -1,1441 +1,102 @@
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag nexthdr tcp
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp eq reg 1 0x00000006 ]
-
-# frag nexthdr tcp
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp eq reg 1 0x00000006 ]
-
-# frag nexthdr != icmp
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp neq reg 1 0x00000001 ]
-
-# frag nexthdr != icmp
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp neq reg 1 0x00000001 ]
-
-# frag nexthdr {esp, ah, comp, udp, udplite, tcp, dccp, sctp}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000032 : 0 [end] element 00000033 : 0 [end] element 0000006c : 0 [end] element 00000011 : 0 [end] element 00000088 : 0 [end] element 00000006 : 0 [end] element 00000021 : 0 [end] element 00000084 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag nexthdr {esp, ah, comp, udp, udplite, tcp, dccp, sctp}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000032 : 0 [end] element 00000033 : 0 [end] element 0000006c : 0 [end] element 00000011 : 0 [end] element 00000088 : 0 [end] element 00000006 : 0 [end] element 00000021 : 0 [end] element 00000084 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag nexthdr != {esp, ah, comp, udp, udplite, tcp, dccp, sctp}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000032 : 0 [end] element 00000033 : 0 [end] element 0000006c : 0 [end] element 00000011 : 0 [end] element 00000088 : 0 [end] element 00000006 : 0 [end] element 00000021 : 0 [end] element 00000084 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag nexthdr != {esp, ah, comp, udp, udplite, tcp, dccp, sctp}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000032 : 0 [end] element 00000033 : 0 [end] element 0000006c : 0 [end] element 00000011 : 0 [end] element 00000088 : 0 [end] element 00000006 : 0 [end] element 00000021 : 0 [end] element 00000084 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag nexthdr esp
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp eq reg 1 0x00000032 ]
-
-# frag nexthdr esp
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp eq reg 1 0x00000032 ]
-
-# frag nexthdr ah
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp eq reg 1 0x00000033 ]
-
-# frag nexthdr ah
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp eq reg 1 0x00000033 ]
-
-# frag reserved 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ cmp eq reg 1 0x00000016 ]
-
-# frag reserved 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ cmp eq reg 1 0x00000016 ]
-
-# frag reserved != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ cmp neq reg 1 0x000000e9 ]
-
-# frag reserved != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ cmp neq reg 1 0x000000e9 ]
-
-# frag reserved 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ cmp gte reg 1 0x00000021 ]
- [ cmp lte reg 1 0x0000002d ]
-
-# frag reserved 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ cmp gte reg 1 0x00000021 ]
- [ cmp lte reg 1 0x0000002d ]
-
-# frag reserved != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ range neq reg 1 0x00000021 0x0000002d ]
-
-# frag reserved != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ range neq reg 1 0x00000021 0x0000002d ]
-
-# frag reserved { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag reserved { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag reserved != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag reserved { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag reserved != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag id 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp eq reg 1 0x01000000 ]
-
-# frag id 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp eq reg 1 0x01000000 ]
-
-# frag id 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp eq reg 1 0x16000000 ]
-
-# frag id 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp eq reg 1 0x16000000 ]
-
-# frag id != 33
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp neq reg 1 0x21000000 ]
-
-# frag id != 33
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp neq reg 1 0x21000000 ]
-
-# frag id 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp gte reg 1 0x21000000 ]
- [ cmp lte reg 1 0x2d000000 ]
-
-# frag id 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp gte reg 1 0x21000000 ]
- [ cmp lte reg 1 0x2d000000 ]
-
-# frag id != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ range neq reg 1 0x21000000 0x2d000000 ]
-
-# frag id != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ range neq reg 1 0x21000000 0x2d000000 ]
-
-# frag id { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 21000000 : 0 [end] element 37000000 : 0 [end] element 43000000 : 0 [end] element 58000000 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag id { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 21000000 : 0 [end] element 37000000 : 0 [end] element 43000000 : 0 [end] element 58000000 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag id != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 21000000 : 0 [end] element 37000000 : 0 [end] element 43000000 : 0 [end] element 58000000 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag id != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 21000000 : 0 [end] element 37000000 : 0 [end] element 43000000 : 0 [end] element 58000000 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag id { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag id { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag id != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag id != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag nexthdr tcp
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp eq reg 1 0x00000006 ]
-
# frag nexthdr tcp
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
[ cmp eq reg 1 0x00000006 ]
# frag nexthdr != icmp
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp neq reg 1 0x00000001 ]
-
-# frag nexthdr != icmp
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
[ cmp neq reg 1 0x00000001 ]
# frag nexthdr {esp, ah, comp, udp, udplite, tcp, dccp, sctp}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000032 : 0 [end] element 00000033 : 0 [end] element 0000006c : 0 [end] element 00000011 : 0 [end] element 00000088 : 0 [end] element 00000006 : 0 [end] element 00000021 : 0 [end] element 00000084 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag nexthdr {esp, ah, comp, udp, udplite, tcp, dccp, sctp}
-__set%d test-netdev 3
+__set%d test-netdev 3 size 8
__set%d test-netdev 0
element 00000032 : 0 [end] element 00000033 : 0 [end] element 0000006c : 0 [end] element 00000011 : 0 [end] element 00000088 : 0 [end] element 00000006 : 0 [end] element 00000021 : 0 [end] element 00000084 : 0 [end]
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
[ lookup reg 1 set __set%d ]
# frag nexthdr != {esp, ah, comp, udp, udplite, tcp, dccp, sctp}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000032 : 0 [end] element 00000033 : 0 [end] element 0000006c : 0 [end] element 00000011 : 0 [end] element 00000088 : 0 [end] element 00000006 : 0 [end] element 00000021 : 0 [end] element 00000084 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag nexthdr != {esp, ah, comp, udp, udplite, tcp, dccp, sctp}
-__set%d test-netdev 3
+__set%d test-netdev 3 size 8
__set%d test-netdev 0
element 00000032 : 0 [end] element 00000033 : 0 [end] element 0000006c : 0 [end] element 00000011 : 0 [end] element 00000088 : 0 [end] element 00000006 : 0 [end] element 00000021 : 0 [end] element 00000084 : 0 [end]
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
[ lookup reg 1 set __set%d 0x1 ]
# frag nexthdr esp
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
[ cmp eq reg 1 0x00000032 ]
-# frag nexthdr esp
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp eq reg 1 0x00000032 ]
-
-# frag nexthdr ah
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
- [ cmp eq reg 1 0x00000033 ]
-
# frag nexthdr ah
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 0 => reg 1 ]
[ cmp eq reg 1 0x00000033 ]
# frag reserved 22
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
[ cmp eq reg 1 0x00000016 ]
-# frag reserved 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ cmp eq reg 1 0x00000016 ]
-
-# frag reserved != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ cmp neq reg 1 0x000000e9 ]
-
# frag reserved != 233
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
[ cmp neq reg 1 0x000000e9 ]
# frag reserved 33-45
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
[ cmp gte reg 1 0x00000021 ]
[ cmp lte reg 1 0x0000002d ]
-# frag reserved 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ cmp gte reg 1 0x00000021 ]
- [ cmp lte reg 1 0x0000002d ]
-
-# frag reserved != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ range neq reg 1 0x00000021 0x0000002d ]
-
# frag reserved != 33-45
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
[ range neq reg 1 0x00000021 0x0000002d ]
# frag reserved { 33, 55, 67, 88}
-__set%d test-netdev 3
+__set%d test-netdev 3 size 4
__set%d test-netdev 0
element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag reserved { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
[ lookup reg 1 set __set%d ]
# frag reserved != { 33, 55, 67, 88}
-__set%d test-netdev 3
+__set%d test-netdev 3 size 4
__set%d test-netdev 0
element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
[ lookup reg 1 set __set%d 0x1 ]
-# frag reserved != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000021 : 0 [end] element 00000037 : 0 [end] element 00000043 : 0 [end] element 00000058 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag reserved { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag reserved != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 1 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
# frag frag-off 22
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
@@ -1443,15 +104,7 @@ netdev
[ cmp eq reg 1 0x0000b000 ]
# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off != 233
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
@@ -1459,7 +112,7 @@ netdev
[ cmp neq reg 1 0x00004807 ]
# frag frag-off 33-45
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
@@ -1467,25 +120,8 @@ netdev
[ cmp gte reg 1 0x00000801 ]
[ cmp lte reg 1 0x00006801 ]
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
# frag frag-off != 33-45
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
@@ -1493,103 +129,29 @@ netdev
[ range neq reg 1 0x00000801 0x00006801 ]
# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
+__set%d test-netdev 3 size 4
__set%d test-netdev 0
element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
[ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
[ lookup reg 1 set __set%d ]
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
+__set%d test-netdev 3 size 4
__set%d test-netdev 0
element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
[ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
[ lookup reg 1 set __set%d 0x1 ]
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
# frag reserved2 1
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
@@ -1597,15 +159,7 @@ netdev
[ cmp eq reg 1 0x00000002 ]
# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 0
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
@@ -1613,15 +167,7 @@ netdev
[ cmp eq reg 1 0x00000000 ]
# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag more-fragments 1
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
@@ -1629,558 +175,58 @@ netdev
[ cmp eq reg 1 0x00000001 ]
# frag id 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp eq reg 1 0x01000000 ]
-
-# frag id 1
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
[ cmp eq reg 1 0x01000000 ]
# frag id 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp eq reg 1 0x16000000 ]
-
-# frag id 22
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
[ cmp eq reg 1 0x16000000 ]
# frag id != 33
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp neq reg 1 0x21000000 ]
-
-# frag id != 33
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
[ cmp neq reg 1 0x21000000 ]
# frag id 33-45
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
[ cmp gte reg 1 0x21000000 ]
[ cmp lte reg 1 0x2d000000 ]
-# frag id 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ cmp gte reg 1 0x21000000 ]
- [ cmp lte reg 1 0x2d000000 ]
-
-# frag id != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ range neq reg 1 0x21000000 0x2d000000 ]
-
# frag id != 33-45
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
[ range neq reg 1 0x21000000 0x2d000000 ]
# frag id { 33, 55, 67, 88}
-__set%d test-netdev 3
+__set%d test-netdev 3 size 4
__set%d test-netdev 0
element 21000000 : 0 [end] element 37000000 : 0 [end] element 43000000 : 0 [end] element 58000000 : 0 [end]
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
[ lookup reg 1 set __set%d ]
-# frag id { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 21000000 : 0 [end] element 37000000 : 0 [end] element 43000000 : 0 [end] element 58000000 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag id != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 21000000 : 0 [end] element 37000000 : 0 [end] element 43000000 : 0 [end] element 58000000 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
# frag id != { 33, 55, 67, 88}
-__set%d test-netdev 3
+__set%d test-netdev 3 size 4
__set%d test-netdev 0
element 21000000 : 0 [end] element 37000000 : 0 [end] element 43000000 : 0 [end] element 58000000 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag id { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag id { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d ]
-
-# frag id != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag id != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end]
-netdev
+netdev test-netdev ingress
[ meta load protocol => reg 1 ]
[ cmp eq reg 1 0x0000dd86 ]
[ exthdr load ipv6 4b @ 44 + 4 => reg 1 ]
[ lookup reg 1 set __set%d 0x1 ]
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off 22
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x0000b000 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off != 233
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp neq reg 1 0x00004807 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ cmp gte reg 1 0x00000801 ]
- [ cmp lte reg 1 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off != 33-45
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ range neq reg 1 0x00000801 0x00006801 ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33, 55, 67, 88}
-__set%d test-netdev 3
-__set%d test-netdev 0
- element 00000801 : 0 [end] element 0000b801 : 0 [end] element 00001802 : 0 [end] element 0000c002 : 0 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag frag-off != { 33-55}
-__set%d test-netdev 7
-__set%d test-netdev 0
- element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end]
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 2b @ 44 + 2 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x0000f8ff ) ^ 0x00000000 ]
- [ lookup reg 1 set __set%d 0x1 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag reserved2 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000006 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000002 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 0
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000000 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
-# frag more-fragments 1
-netdev
- [ meta load protocol => reg 1 ]
- [ cmp eq reg 1 0x0000dd86 ]
- [ exthdr load ipv6 1b @ 44 + 3 => reg 1 ]
- [ bitwise reg 1 = ( reg 1 & 0x00000001 ) ^ 0x00000000 ]
- [ cmp eq reg 1 0x00000001 ]
-
diff --git a/tests/py/ip6/icmpv6.t.json b/tests/py/ip6/icmpv6.t.json
index 2251be82..95ceb44b 100644
--- a/tests/py/ip6/icmpv6.t.json
+++ b/tests/py/ip6/icmpv6.t.json
@@ -532,8 +532,8 @@
"op": "!=",
"right": {
"set": [
- "policy-fail",
- "reject-route",
+ 5,
+ 6,
7
]
}
@@ -1136,7 +1136,7 @@
}
]
-# icmpv6 type parameter-problem icmpv6 code no-route
+# icmpv6 type parameter-problem icmpv6 code 0
[
{
"match": {
@@ -1159,7 +1159,7 @@
}
},
"op": "==",
- "right": "no-route"
+ "right": 0
}
}
]
diff --git a/tests/py/ip6/icmpv6.t.json.output b/tests/py/ip6/icmpv6.t.json.output
index 7b8f5c19..5d33780e 100644
--- a/tests/py/ip6/icmpv6.t.json.output
+++ b/tests/py/ip6/icmpv6.t.json.output
@@ -93,68 +93,6 @@
}
]
-# icmpv6 code 4
-[
- {
- "match": {
- "left": {
- "payload": {
- "field": "code",
- "protocol": "icmpv6"
- }
- },
- "op": "==",
- "right": "port-unreachable"
- }
- }
-]
-
-# icmpv6 code 3-66
-[
- {
- "match": {
- "left": {
- "payload": {
- "field": "code",
- "protocol": "icmpv6"
- }
- },
- "op": "==",
- "right": {
- "range": [
- "addr-unreachable",
- 66
- ]
- }
- }
- }
-]
-
-# icmpv6 code {5, 6, 7} accept
-[
- {
- "match": {
- "left": {
- "payload": {
- "field": "code",
- "protocol": "icmpv6"
- }
- },
- "op": "==",
- "right": {
- "set": [
- "policy-fail",
- "reject-route",
- 7
- ]
- }
- }
- },
- {
- "accept": null
- }
-]
-
# icmpv6 code { 3-66}
[
{
diff --git a/tests/py/ip6/icmpv6.t.payload.ip6 b/tests/py/ip6/icmpv6.t.payload.ip6
index 0e96be2d..2b56d8c8 100644
--- a/tests/py/ip6/icmpv6.t.payload.ip6
+++ b/tests/py/ip6/icmpv6.t.payload.ip6
@@ -554,7 +554,7 @@ ip6 test-ip6 input
[ payload load 2b @ transport header + 4 => reg 1 ]
[ lookup reg 1 set __set%d 0x1 ]
-# icmpv6 type parameter-problem icmpv6 code no-route
+# icmpv6 type parameter-problem icmpv6 code 0
ip6
[ meta load l4proto => reg 1 ]
[ cmp eq reg 1 0x0000003a ]
diff --git a/tests/py/netdev/reject.t.json b/tests/py/netdev/reject.t.json
index 9968aaf8..b80db03b 100644
--- a/tests/py/netdev/reject.t.json
+++ b/tests/py/netdev/reject.t.json
@@ -134,17 +134,6 @@
"match": {
"left": {
"meta": {
- "key": "l4proto"
- }
- },
- "op": "==",
- "right": 6
- }
- },
- {
- "match": {
- "left": {
- "meta": {
"key": "mark"
}
},
@@ -162,30 +151,43 @@
# reject
[
{
- "reject": {
- "expr": "port-unreachable",
- "type": "icmpx"
- }
+ "reject": null
}
]
# meta protocol ip reject
[
{
- "reject": {
- "expr": "port-unreachable",
- "type": "icmp"
+ "match": {
+ "left": {
+ "meta": {
+ "key": "protocol"
+ }
+ },
+ "op": "==",
+ "right": "ip"
}
+ },
+ {
+ "reject": null
}
]
# meta protocol ip6 reject
[
{
- "reject": {
- "expr": "port-unreachable",
- "type": "icmpv6"
+ "match": {
+ "left": {
+ "meta": {
+ "key": "protocol"
+ }
+ },
+ "op": "==",
+ "right": "ip6"
}
+ },
+ {
+ "reject": null
}
]
@@ -232,6 +234,17 @@
# meta protocol ip reject with icmp host-unreachable
[
{
+ "match": {
+ "left": {
+ "meta": {
+ "key": "protocol"
+ }
+ },
+ "op": "==",
+ "right": "ip"
+ }
+ },
+ {
"reject": {
"expr": "host-unreachable",
"type": "icmp"
@@ -242,6 +255,17 @@
# meta protocol ip6 reject with icmpv6 no-route
[
{
+ "match": {
+ "left": {
+ "meta": {
+ "key": "protocol"
+ }
+ },
+ "op": "==",
+ "right": "ip6"
+ }
+ },
+ {
"reject": {
"expr": "no-route",
"type": "icmpv6"
diff --git a/tests/py/netdev/reject.t.json.output b/tests/py/netdev/reject.t.json.output
new file mode 100644
index 00000000..cbd73104
--- /dev/null
+++ b/tests/py/netdev/reject.t.json.output
@@ -0,0 +1,81 @@
+# mark 12345 reject with tcp reset
+[
+ {
+ "match": {
+ "left": {
+ "meta": {
+ "key": "l4proto"
+ }
+ },
+ "op": "==",
+ "right": 6
+ }
+ },
+ {
+ "match": {
+ "left": {
+ "meta": {
+ "key": "mark"
+ }
+ },
+ "op": "==",
+ "right": 12345
+ }
+ },
+ {
+ "reject": {
+ "type": "tcp reset"
+ }
+ }
+]
+
+# reject
+[
+ {
+ "reject": {
+ "expr": "port-unreachable",
+ "type": "icmpx"
+ }
+ }
+]
+
+# meta protocol ip reject
+[
+ {
+ "reject": {
+ "expr": "port-unreachable",
+ "type": "icmp"
+ }
+ }
+]
+
+# meta protocol ip6 reject
+[
+ {
+ "reject": {
+ "expr": "port-unreachable",
+ "type": "icmpv6"
+ }
+ }
+]
+
+# meta protocol ip reject with icmp host-unreachable
+[
+ {
+ "reject": {
+ "expr": "host-unreachable",
+ "type": "icmp"
+ }
+ }
+]
+
+# meta protocol ip6 reject with icmpv6 no-route
+[
+ {
+ "reject": {
+ "expr": "no-route",
+ "type": "icmpv6"
+ }
+ }
+]
+
diff --git a/tests/py/nft-test.py b/tests/py/nft-test.py
index a7d27c25..50584fcf 100755
--- a/tests/py/nft-test.py
+++ b/tests/py/nft-test.py
@@ -769,10 +769,9 @@ def rule_add(rule, filename, lineno, force_all_family_option, filename_path):
if rule[1].strip() == "ok":
payload_expected = None
- payload_path = None
+ payload_path = "%s.payload" % filename_path
try:
- payload_log = open("%s.payload" % filename_path)
- payload_path = payload_log.name
+ payload_log = open(payload_path)
payload_expected = payload_find_expected(payload_log, rule[0])
except:
payload_log = None
@@ -809,6 +808,8 @@ def rule_add(rule, filename, lineno, force_all_family_option, filename_path):
reason = "Invalid JSON syntax in expected output: %s" % json_expected
print_error(reason)
return [-1, warning, error, unit_tests]
+ if json_expected == json_input:
+ print_warning("Recorded JSON output matches input for: %s" % rule[0])
for table in table_list:
if rule[1].strip() == "ok":
diff --git a/tests/shell/features/ifname_based_hooks.sh b/tests/shell/features/ifname_based_hooks.sh
index cada6956..e1fd6f03 100755
--- a/tests/shell/features/ifname_based_hooks.sh
+++ b/tests/shell/features/ifname_based_hooks.sh
@@ -5,7 +5,7 @@
unshare -n bash -c "ip link add d0 type dummy; \
$NFT \"table netdev t { \
chain c { \
- type filter hook ingress priority 0; devices = { d0 }; \
+ type filter hook ingress devices = { d0 } priority 0;\
}; \
}\"; \
ip link del d0; \
diff --git a/tests/shell/testcases/chains/netdev_chain_dormant_autoremove b/tests/shell/testcases/chains/netdev_chain_dormant_autoremove
index 8455f310..72a90cf8 100755
--- a/tests/shell/testcases/chains/netdev_chain_dormant_autoremove
+++ b/tests/shell/testcases/chains/netdev_chain_dormant_autoremove
@@ -2,6 +2,11 @@
# NFT_TEST_REQUIRES(NFT_TEST_HAVE_netdev_chain_multidevice)
+if [ "$NFT_TEST_HAVE_ifname_based_hooks" = y ]; then
+ echo "Test skipped due to NFT_TEST_HAVE_ifname_based_hooks=y"
+ exit 77
+fi
+
set -e
ip link add dummy0 type dummy
@@ -9,6 +14,3 @@ ip link add dummy1 type dummy
$NFT add table netdev test { flags dormant\; }
$NFT add chain netdev test ingress { type filter hook ingress devices = { "dummy0", "dummy1" } priority 0\; policy drop\; }
ip link del dummy0
-if [ "$NFT_TEST_HAVE_ifname_based_hooks" = y ]; then
- $NFT 'delete chain netdev test ingress { devices = { "dummy0" }; }'
-fi