diff options
45 files changed, 1316 insertions, 2764 deletions
@@ -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 |