From 54aa3de7b49a20a65e0fa0a36204bd387d4f40c9 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Fri, 24 May 2019 20:54:37 +0200 Subject: Revert "tests: py: remove single-value-anon-set test cases" This reverts commit d03bcb669c0c645190df9bd166f53380bcac7862. --- tests/py/any/ct.t | 2 + tests/py/any/ct.t.json | 42 ++++++ tests/py/any/ct.t.payload | 18 +++ tests/py/any/meta.t | 17 +++ tests/py/any/meta.t.json | 168 ++++++++++++++++++++++ tests/py/any/meta.t.payload | 109 +++++++++++++++ tests/py/arp/arp.t | 6 + tests/py/arp/arp.t.json | 120 ++++++++++++++++ tests/py/arp/arp.t.payload | 48 +++++++ tests/py/inet/ah.t | 8 ++ tests/py/inet/ah.t.json | 160 +++++++++++++++++++++ tests/py/inet/ah.t.payload | 80 +++++++++++ tests/py/inet/comp.t | 4 + tests/py/inet/comp.t.json | 81 +++++++++++ tests/py/inet/comp.t.payload | 40 ++++++ tests/py/inet/dccp.t | 5 + tests/py/inet/dccp.t.json | 100 +++++++++++++ tests/py/inet/dccp.t.payload | 50 +++++++ tests/py/inet/esp.t | 4 + tests/py/inet/esp.t.json | 61 ++++++++ tests/py/inet/esp.t.payload | 40 ++++++ tests/py/inet/sctp.t | 8 ++ tests/py/inet/sctp.t.json | 161 +++++++++++++++++++++ tests/py/inet/sctp.t.payload | 80 +++++++++++ tests/py/inet/tcp.t | 16 +++ tests/py/inet/tcp.t.json | 280 +++++++++++++++++++++++++++++++++++++ tests/py/inet/tcp.t.payload | 80 +++++++++++ tests/py/inet/udp.t | 8 ++ tests/py/inet/udp.t.json | 166 ++++++++++++++++++++++ tests/py/inet/udp.t.payload | 82 +++++++++++ tests/py/inet/udplite.t | 8 ++ tests/py/inet/udplite.t.json | 127 +++++++++++++++++ tests/py/inet/udplite.t.payload | 62 +++++++++ tests/py/ip/icmp.t | 14 ++ tests/py/ip/icmp.t.json | 286 ++++++++++++++++++++++++++++++++++++++ tests/py/ip/icmp.t.payload.ip | 142 +++++++++++++++++++ tests/py/ip/ip.t | 12 ++ tests/py/ip/ip.t.json | 240 ++++++++++++++++++++++++++++++++ tests/py/ip/ip.t.payload.bridge | 120 ++++++++++++++++ tests/py/ip/ip.t.payload.inet | 120 ++++++++++++++++ tests/py/ip/ip.t.payload.netdev | 124 ++++++++++++++++- tests/py/ip6/dst.t | 4 + tests/py/ip6/dst.t.json | 81 +++++++++++ tests/py/ip6/dst.t.payload.inet | 40 ++++++ tests/py/ip6/dst.t.payload.ip6 | 33 +++++ tests/py/ip6/frag.t | 6 + tests/py/ip6/frag.t.json | 121 ++++++++++++++++ tests/py/ip6/frag.t.payload.inet | 62 +++++++++ tests/py/ip6/frag.t.payload.ip6 | 50 +++++++ tests/py/ip6/hbh.t | 4 + tests/py/ip6/hbh.t.json | 80 +++++++++++ tests/py/ip6/hbh.t.payload.inet | 40 ++++++ tests/py/ip6/hbh.t.payload.ip6 | 32 +++++ tests/py/ip6/icmpv6.t | 12 ++ tests/py/ip6/icmpv6.t.json | 241 ++++++++++++++++++++++++++++++++ tests/py/ip6/icmpv6.t.payload.ip6 | 119 ++++++++++++++++ tests/py/ip6/ip6.t | 8 ++ tests/py/ip6/ip6.t.json | 162 +++++++++++++++++++++ tests/py/ip6/ip6.t.payload.inet | 82 +++++++++++ tests/py/ip6/ip6.t.payload.ip6 | 66 +++++++++ tests/py/ip6/mh.t | 8 ++ tests/py/ip6/mh.t.json | 163 ++++++++++++++++++++++ tests/py/ip6/mh.t.payload.inet | 80 +++++++++++ tests/py/ip6/mh.t.payload.ip6 | 64 +++++++++ tests/py/ip6/rt.t | 8 ++ tests/py/ip6/rt.t.json | 161 +++++++++++++++++++++ tests/py/ip6/rt.t.payload.inet | 80 +++++++++++ tests/py/ip6/rt.t.payload.ip6 | 64 +++++++++ 68 files changed, 5168 insertions(+), 2 deletions(-) diff --git a/tests/py/any/ct.t b/tests/py/any/ct.t index 0a31ac55..b5c13524 100644 --- a/tests/py/any/ct.t +++ b/tests/py/any/ct.t @@ -73,6 +73,8 @@ ct expiration 33-45;ok;ct expiration 33s-45s ct expiration != 33-45;ok;ct expiration != 33s-45s ct expiration {33, 55, 67, 88};ok;ct expiration { 1m7s, 33s, 55s, 1m28s} ct expiration != {33, 55, 67, 88};ok;ct expiration != { 1m7s, 33s, 55s, 1m28s} +ct expiration {33-55};ok;ct expiration { 33s-55s} +ct expiration != {33-55};ok;ct expiration != { 33s-55s} ct helper "ftp";ok ct helper "12345678901234567";fail diff --git a/tests/py/any/ct.t.json b/tests/py/any/ct.t.json index 64fdd0fa..45e48f22 100644 --- a/tests/py/any/ct.t.json +++ b/tests/py/any/ct.t.json @@ -883,6 +883,48 @@ } ] +# ct expiration {33-55} +[ + { + "match": { + "left": { + "ct": { + "key": "expiration" + } + }, + "op": "==", + "right": { + "set": [ + { + "range": [ 33, 55 ] + } + ] + } + } + } +] + +# ct expiration != {33-55} +[ + { + "match": { + "left": { + "ct": { + "key": "expiration" + } + }, + "op": "!=", + "right": { + "set": [ + { + "range": [ 33, 55 ] + } + ] + } + } + } +] + # ct helper "ftp" [ { diff --git a/tests/py/any/ct.t.payload b/tests/py/any/ct.t.payload index 672b2426..9338466d 100644 --- a/tests/py/any/ct.t.payload +++ b/tests/py/any/ct.t.payload @@ -283,6 +283,24 @@ ip test-ip4 output [ ct load expiration => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ct expiration {33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element e8800000 : 0 [end] element d9d60000 : 1 [end] +ip test-ip4 output + [ ct load expiration => reg 1 ] + [ byteorder reg 1 = hton(reg 1, 4, 4) ] + [ lookup reg 1 set __set%d ] + +# ct expiration != {33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element e8800000 : 0 [end] element d9d60000 : 1 [end] +ip test-ip4 output + [ ct load expiration => reg 1 ] + [ byteorder reg 1 = hton(reg 1, 4, 4) ] + [ lookup reg 1 set __set%d 0x1 ] + # ct helper "ftp" ip test-ip4 output [ ct load helper => reg 1 ] diff --git a/tests/py/any/meta.t b/tests/py/any/meta.t index 3d3ddad9..d69b8b4e 100644 --- a/tests/py/any/meta.t +++ b/tests/py/any/meta.t @@ -17,6 +17,8 @@ meta length { 33, 55, 67, 88};ok meta length { 33-55, 67-88};ok meta length { 33-55, 56-88, 100-120};ok;meta length { 33-88, 100-120} meta length != { 33, 55, 67, 88};ok +meta length { 33-55};ok +meta length != { 33-55};ok meta protocol { ip, arp, ip6, vlan };ok;meta protocol { ip6, ip, vlan, arp} meta protocol != {ip, arp, ip6, vlan};ok @@ -29,6 +31,7 @@ meta l4proto 33-45;ok meta l4proto != 33-45;ok meta l4proto { 33, 55, 67, 88};ok;meta l4proto { 33, 55, 67, 88} meta l4proto != { 33, 55, 67, 88};ok +meta l4proto { 33-55};ok meta l4proto != { 33-55};ok meta priority root;ok @@ -79,6 +82,7 @@ meta iiftype ppp;ok meta oif "lo" accept;ok;oif "lo" accept meta oif != "lo" accept;ok;oif != "lo" accept meta oif {"lo"} accept;ok;oif {"lo"} accept +meta oif != {"lo"} accept;ok;oif != {"lo"} accept meta oifname "dummy0";ok;oifname "dummy0" meta oifname != "dummy0";ok;oifname != "dummy0" @@ -101,6 +105,8 @@ meta skuid gt 3000 accept;ok;meta skuid > 3000 accept meta skuid eq 3000 accept;ok;meta skuid 3000 accept meta skuid 3001-3005 accept;ok;meta skuid 3001-3005 accept meta skuid != 2001-2005 accept;ok;meta skuid != 2001-2005 accept +meta skuid { 2001-2005} accept;ok;meta skuid { 2001-2005} accept +meta skuid != { 2001-2005} accept;ok;meta skuid != { 2001-2005} accept meta skgid {"bin", "root", "daemon"} accept;ok;meta skgid { 0, 1, 2} accept meta skgid != {"bin", "root", "daemon"} accept;ok;meta skgid != { 1, 0, 2} accept @@ -111,6 +117,8 @@ meta skgid gt 3000 accept;ok;meta skgid > 3000 accept meta skgid eq 3000 accept;ok;meta skgid 3000 accept meta skgid 2001-2005 accept;ok;meta skgid 2001-2005 accept meta skgid != 2001-2005 accept;ok;meta skgid != 2001-2005 accept +meta skgid { 2001-2005} accept;ok;meta skgid { 2001-2005} accept +meta skgid != { 2001-2005} accept;ok;meta skgid != { 2001-2005} accept # BUG: meta nftrace 2 and meta nftrace 1 # $ sudo nft add rule ip test input meta nftrace 2 @@ -165,6 +173,8 @@ meta iifgroup 0;ok;iifgroup "default" meta iifgroup != 0;ok;iifgroup != "default" meta iifgroup "default";ok;iifgroup "default" meta iifgroup != "default";ok;iifgroup != "default" +meta iifgroup {"default"};ok;iifgroup {"default"} +meta iifgroup != {"default"};ok;iifgroup != {"default"} meta iifgroup { 11,33};ok;iifgroup { 11,33} meta iifgroup {11-33};ok;iifgroup {11-33} meta iifgroup != { 11,33};ok;iifgroup != { 11,33} @@ -173,7 +183,12 @@ meta oifgroup 0;ok;oifgroup "default" meta oifgroup != 0;ok;oifgroup != "default" meta oifgroup "default";ok;oifgroup "default" meta oifgroup != "default";ok;oifgroup != "default" +meta oifgroup {"default"};ok;oifgroup {"default"} +meta oifgroup != {"default"};ok;oifgroup != {"default"} meta oifgroup { 11,33};ok;oifgroup { 11,33} +meta oifgroup {11-33};ok;oifgroup {11-33} +meta oifgroup != { 11,33};ok;oifgroup != { 11,33} +meta oifgroup != {11-33};ok;oifgroup != {11-33} meta cgroup 1048577;ok;meta cgroup 1048577 meta cgroup != 1048577;ok;meta cgroup != 1048577 @@ -181,6 +196,8 @@ meta cgroup { 1048577, 1048578 };ok;meta cgroup { 1048577, 1048578} meta cgroup != { 1048577, 1048578};ok;meta cgroup != { 1048577, 1048578} meta cgroup 1048577-1048578;ok;meta cgroup 1048577-1048578 meta cgroup != 1048577-1048578;ok;meta cgroup != 1048577-1048578 +meta cgroup {1048577-1048578};ok;meta cgroup { 1048577-1048578} +meta cgroup != { 1048577-1048578};ok;meta cgroup != { 1048577-1048578} meta iif . meta oif { "lo" . "lo" };ok;iif . oif { "lo" . "lo" } meta iif . meta oif . meta mark { "lo" . "lo" . 0x0000000a };ok;iif . oif . meta mark { "lo" . "lo" . 0x0000000a } diff --git a/tests/py/any/meta.t.json b/tests/py/any/meta.t.json index e4d22fa7..2cf91cda 100644 --- a/tests/py/any/meta.t.json +++ b/tests/py/any/meta.t.json @@ -143,6 +143,40 @@ } ] +# meta length { 33-55} +[ + { + "match": { + "left": { + "meta": { "key": "length" } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# meta length != { 33-55} +[ + { + "match": { + "left": { + "meta": { "key": "length" } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # meta protocol { ip, arp, ip6, vlan } [ { @@ -305,6 +339,23 @@ } ] +# meta l4proto { 33-55} +[ + { + "match": { + "left": { + "meta": { "key": "l4proto" } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # meta l4proto != { 33-55} [ { @@ -949,6 +1000,26 @@ } ] +# meta oif != {"lo"} accept +[ + { + "match": { + "left": { + "meta": { "key": "oif" } + }, + "op": "!=", + "right": { + "set": [ + "lo" + ] + } + } + }, + { + "accept": null + } +] + # meta oifname "dummy0" [ { @@ -1245,6 +1316,46 @@ } ] +# meta skuid { 2001-2005} accept +[ + { + "match": { + "left": { + "meta": { "key": "skuid" } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 2001, 2005 ] } + ] + } + } + }, + { + "accept": null + } +] + +# meta skuid != { 2001-2005} accept +[ + { + "match": { + "left": { + "meta": { "key": "skuid" } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 2001, 2005 ] } + ] + } + } + }, + { + "accept": null + } +] + # meta skgid {"bin", "root", "daemon"} accept [ { @@ -1399,6 +1510,46 @@ } ] +# meta skgid { 2001-2005} accept +[ + { + "match": { + "left": { + "meta": { "key": "skgid" } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 2001, 2005 ] } + ] + } + } + }, + { + "accept": null + } +] + +# meta skgid != { 2001-2005} accept +[ + { + "match": { + "left": { + "meta": { "key": "skgid" } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 2001, 2005 ] } + ] + } + } + }, + { + "accept": null + } +] + # meta mark set 0xffffffc8 xor 0x16 [ { @@ -2045,6 +2196,23 @@ } ] +# meta oifgroup {11-33} +[ + { + "match": { + "left": { + "meta": { "key": "oifgroup" } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 11, 33 ] } + ] + } + } + } +] + # meta oifgroup != { 11,33} [ { diff --git a/tests/py/any/meta.t.payload b/tests/py/any/meta.t.payload index 2fb35243..b32770f5 100644 --- a/tests/py/any/meta.t.payload +++ b/tests/py/any/meta.t.payload @@ -34,6 +34,15 @@ ip test-ip4 input [ meta load len => reg 1 ] [ lookup reg 1 set __set%d ] +# meta length { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +ip test-ip4 input + [ meta load len => reg 1 ] + [ byteorder reg 1 = hton(reg 1, 4, 4) ] + [ lookup reg 1 set __set%d ] + # meta length { 33-55, 67-88} __set%d test-ip4 7 __set%d test-ip4 0 @@ -60,6 +69,15 @@ ip test-ip4 input [ meta load len => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# meta length != { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +ip test-ip4 input + [ meta load len => reg 1 ] + [ byteorder reg 1 = hton(reg 1, 4, 4) ] + [ lookup reg 1 set __set%d 0x1 ] + # meta protocol { ip, arp, ip6, vlan } __set%d test-ip4 3 __set%d test-ip4 0 @@ -125,6 +143,15 @@ ip test-ip4 input [ meta load l4proto => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# meta l4proto { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ byteorder reg 1 = hton(reg 1, 2, 1) ] + [ lookup reg 1 set __set%d ] + # meta l4proto != { 33-55} __set%d test-ip4 7 __set%d test-ip4 0 @@ -293,6 +320,15 @@ ip test-ip4 input [ lookup reg 1 set __set%d ] [ immediate reg 0 accept ] +# meta oif != {"lo"} accept +__set%d test-ip4 3 +__set%d test-ip4 0 + element 00000001 : 0 [end] +ip test-ip4 input + [ meta load oif => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + [ immediate reg 0 accept ] + # meta oifname "dummy0" ip test-ip4 input [ meta load oifname => reg 1 ] @@ -410,6 +446,26 @@ ip test-ip4 input [ range neq reg 1 0xd1070000 0xd5070000 ] [ immediate reg 0 accept ] +# meta skuid { 2001-2005} accept +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element d1070000 : 0 [end] element d6070000 : 1 [end] +ip test-ip4 input + [ meta load skuid => reg 1 ] + [ byteorder reg 1 = hton(reg 1, 4, 4) ] + [ lookup reg 1 set __set%d ] + [ immediate reg 0 accept ] + +# meta skuid != { 2001-2005} accept +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element d1070000 : 0 [end] element d6070000 : 1 [end] +ip test-ip4 input + [ meta load skuid => reg 1 ] + [ byteorder reg 1 = hton(reg 1, 4, 4) ] + [ lookup reg 1 set __set%d 0x1 ] + [ immediate reg 0 accept ] + # meta skgid {"bin", "root", "daemon"} accept __set%d test-ip4 3 __set%d test-ip4 0 @@ -473,6 +529,26 @@ ip test-ip4 input [ range neq reg 1 0xd1070000 0xd5070000 ] [ immediate reg 0 accept ] +# meta skgid { 2001-2005} accept +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element d1070000 : 0 [end] element d6070000 : 1 [end] +ip test-ip4 input + [ meta load skgid => reg 1 ] + [ byteorder reg 1 = hton(reg 1, 4, 4) ] + [ lookup reg 1 set __set%d ] + [ immediate reg 0 accept ] + +# meta skgid != { 2001-2005} accept +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element d1070000 : 0 [end] element d6070000 : 1 [end] +ip test-ip4 input + [ meta load skgid => reg 1 ] + [ byteorder reg 1 = hton(reg 1, 4, 4) ] + [ lookup reg 1 set __set%d 0x1 ] + [ immediate reg 0 accept ] + # meta mark set 0xffffffc8 xor 0x16 ip test-ip4 input [ immediate reg 1 0xffffffde ] @@ -659,6 +735,14 @@ ip test-ip4 input [ meta load iifgroup => reg 1 ] [ lookup reg 1 set __set%d ] +# meta iifgroup != {"default"} +__set%d test-ip4 3 +__set%d test-ip4 0 + element 00000000 : 0 [end] +ip test-ip4 input + [ meta load iifgroup => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # meta iifgroup { 11,33} __set%d test-ip4 3 __set%d test-ip4 0 @@ -713,6 +797,14 @@ ip test-ip4 input [ meta load oifgroup => reg 1 ] [ cmp neq reg 1 0x00000000 ] +# meta oifgroup {"default"} +__set%d test-ip4 3 +__set%d test-ip4 0 + element 00000000 : 0 [end] +ip test-ip4 input + [ meta load oifgroup => reg 1 ] + [ lookup reg 1 set __set%d ] + # meta oifgroup != {"default"} __set%d test-ip4 3 __set%d test-ip4 0 @@ -738,6 +830,23 @@ ip test-ip4 input [ byteorder reg 1 = hton(reg 1, 4, 4) ] [ lookup reg 1 set __set%d ] +# meta oifgroup != { 11,33} +__set%d test-ip4 3 +__set%d test-ip4 0 + element 0000000b : 0 [end] element 00000021 : 0 [end] +ip test-ip4 input + [ meta load oifgroup => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + +# meta oifgroup != {11-33} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 0b000000 : 0 [end] element 22000000 : 1 [end] +ip test-ip4 input + [ meta load oifgroup => reg 1 ] + [ byteorder reg 1 = hton(reg 1, 4, 4) ] + [ lookup reg 1 set __set%d 0x1 ] + # meta cgroup 1048577 ip test-ip4 input [ meta load cgroup => reg 1 ] diff --git a/tests/py/arp/arp.t b/tests/py/arp/arp.t index 12afacf1..d62cc546 100644 --- a/tests/py/arp/arp.t +++ b/tests/py/arp/arp.t @@ -13,6 +13,8 @@ arp htype 33-45;ok arp htype != 33-45;ok arp htype { 33, 55, 67, 88};ok arp htype != { 33, 55, 67, 88};ok +arp htype { 33-55};ok +arp htype != { 33-55};ok arp ptype 0x0800;ok;arp ptype ip @@ -22,6 +24,8 @@ arp hlen 33-45;ok arp hlen != 33-45;ok arp hlen { 33, 55, 67, 88};ok arp hlen != { 33, 55, 67, 88};ok +arp hlen { 33-55};ok +arp hlen != { 33-55};ok arp plen 22;ok arp plen != 233;ok @@ -29,6 +33,8 @@ arp plen 33-45;ok arp plen != 33-45;ok arp plen { 33, 55, 67, 88};ok arp plen != { 33, 55, 67, 88};ok +arp plen { 33-55};ok +arp plen != {33-55};ok arp operation {nak, inreply, inrequest, rreply, rrequest, reply, request};ok arp operation != {nak, inreply, inrequest, rreply, rrequest, reply, request};ok diff --git a/tests/py/arp/arp.t.json b/tests/py/arp/arp.t.json index b1ff4cd5..4b0439e6 100644 --- a/tests/py/arp/arp.t.json +++ b/tests/py/arp/arp.t.json @@ -144,6 +144,46 @@ } ] +# arp htype { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "htype", + "protocol": "arp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# arp htype != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "htype", + "protocol": "arp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # arp ptype 0x0800 [ { @@ -274,6 +314,46 @@ } ] +# arp hlen { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "hlen", + "protocol": "arp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# arp hlen != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "hlen", + "protocol": "arp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # arp plen 22 [ { @@ -388,6 +468,46 @@ } ] +# arp plen { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "plen", + "protocol": "arp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# arp plen != {33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "plen", + "protocol": "arp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # arp operation {nak, inreply, inrequest, rreply, rrequest, reply, request} [ { diff --git a/tests/py/arp/arp.t.payload b/tests/py/arp/arp.t.payload index 524a5406..33e73417 100644 --- a/tests/py/arp/arp.t.payload +++ b/tests/py/arp/arp.t.payload @@ -45,6 +45,22 @@ arp test-arp input [ payload load 2b @ network header + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# arp htype { 33-55} +__set%d test-arp 7 +__set%d test-arp 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +arp test-arp input + [ payload load 2b @ network header + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# arp htype != { 33-55} +__set%d test-arp 7 +__set%d test-arp 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +arp test-arp input + [ payload load 2b @ network header + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # arp ptype 0x0800 arp test-arp input [ payload load 2b @ network header + 2 => reg 1 ] @@ -87,6 +103,22 @@ arp test-arp input [ payload load 1b @ network header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# arp hlen { 33-55} +__set%d test-arp 7 +__set%d test-arp 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +arp test-arp input + [ payload load 1b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# arp hlen != { 33-55} +__set%d test-arp 7 +__set%d test-arp 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +arp test-arp input + [ payload load 1b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # arp plen 22 arp test-arp input [ payload load 1b @ network header + 5 => reg 1 ] @@ -124,6 +156,22 @@ arp test-arp input [ payload load 1b @ network header + 5 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# arp plen { 33-55} +__set%d test-arp 7 +__set%d test-arp 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +arp test-arp input + [ payload load 1b @ network header + 5 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# arp plen != {33-55} +__set%d test-arp 7 +__set%d test-arp 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +arp test-arp input + [ payload load 1b @ network header + 5 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # arp operation {nak, inreply, inrequest, rreply, rrequest, reply, request} __set%d test-arp 3 __set%d test-arp 0 diff --git a/tests/py/inet/ah.t b/tests/py/inet/ah.t index 31791cd2..8544d9dd 100644 --- a/tests/py/inet/ah.t +++ b/tests/py/inet/ah.t @@ -22,6 +22,8 @@ ah hdrlength 11-23;ok ah hdrlength != 11-23;ok +ah hdrlength { 11-23};ok +ah hdrlength != { 11-23};ok ah hdrlength {11, 23, 44 };ok ah hdrlength != {11, 23, 44 };ok @@ -31,6 +33,8 @@ ah reserved 33-45;ok ah reserved != 33-45;ok ah reserved {23, 100};ok ah reserved != {23, 100};ok +ah reserved { 33-55};ok +ah reserved != { 33-55};ok ah spi 111;ok ah spi != 111;ok @@ -38,11 +42,15 @@ ah spi 111-222;ok ah spi != 111-222;ok ah spi {111, 122};ok ah spi != {111, 122};ok +ah spi { 111-122};ok +ah spi != { 111-122};ok # sequence ah sequence 123;ok ah sequence != 123;ok ah sequence {23, 25, 33};ok ah sequence != {23, 25, 33};ok +ah sequence { 23-33};ok +ah sequence != { 23-33};ok ah sequence 23-33;ok ah sequence != 23-33;ok diff --git a/tests/py/inet/ah.t.json b/tests/py/inet/ah.t.json index 217280b6..4efdb0dd 100644 --- a/tests/py/inet/ah.t.json +++ b/tests/py/inet/ah.t.json @@ -34,6 +34,46 @@ } ] +# ah hdrlength { 11-23} +[ + { + "match": { + "left": { + "payload": { + "field": "hdrlength", + "protocol": "ah" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 11, 23 ] } + ] + } + } + } +] + +# ah hdrlength != { 11-23} +[ + { + "match": { + "left": { + "payload": { + "field": "hdrlength", + "protocol": "ah" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 11, 23 ] } + ] + } + } + } +] + # ah hdrlength {11, 23, 44 } [ { @@ -188,6 +228,46 @@ } ] +# ah reserved { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "reserved", + "protocol": "ah" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# ah reserved != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "reserved", + "protocol": "ah" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # ah spi 111 [ { @@ -298,6 +378,46 @@ } ] +# ah spi { 111-122} +[ + { + "match": { + "left": { + "payload": { + "field": "spi", + "protocol": "ah" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 111, 122 ] } + ] + } + } + } +] + +# ah spi != { 111-122} +[ + { + "match": { + "left": { + "payload": { + "field": "spi", + "protocol": "ah" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 111, 122 ] } + ] + } + } + } +] + # ah sequence 123 [ { @@ -374,6 +494,46 @@ } ] +# ah sequence { 23-33} +[ + { + "match": { + "left": { + "payload": { + "field": "sequence", + "protocol": "ah" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 23, 33 ] } + ] + } + } + } +] + +# ah sequence != { 23-33} +[ + { + "match": { + "left": { + "payload": { + "field": "sequence", + "protocol": "ah" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 23, 33 ] } + ] + } + } + } +] + # ah sequence 23-33 [ { diff --git a/tests/py/inet/ah.t.payload b/tests/py/inet/ah.t.payload index 7ddd72d5..5ec5fba1 100644 --- a/tests/py/inet/ah.t.payload +++ b/tests/py/inet/ah.t.payload @@ -13,6 +13,26 @@ inet test-inet input [ payload load 1b @ transport header + 1 => reg 1 ] [ range neq reg 1 0x0000000b 0x00000017 ] +# ah hdrlength { 11-23} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 0000000b : 0 [end] element 00000018 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000033 ] + [ payload load 1b @ transport header + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ah hdrlength != { 11-23} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 0000000b : 0 [end] element 00000018 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000033 ] + [ payload load 1b @ transport header + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ah hdrlength {11, 23, 44 } __set%d test-inet 3 __set%d test-inet 0 @@ -82,6 +102,26 @@ inet test-inet input [ payload load 2b @ transport header + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ah reserved { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000033 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ah reserved != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000033 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ah spi 111 inet test-inet input [ meta load l4proto => reg 1 ] @@ -131,6 +171,26 @@ inet test-inet input [ payload load 4b @ transport header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ah spi { 111-122} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 6f000000 : 0 [end] element 7b000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000033 ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ah spi != { 111-122} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 6f000000 : 0 [end] element 7b000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000033 ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ah sequence 123 inet test-inet input [ meta load l4proto => reg 1 ] @@ -165,6 +225,26 @@ inet test-inet input [ payload load 4b @ transport header + 8 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ah sequence { 23-33} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 17000000 : 0 [end] element 22000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000033 ] + [ payload load 4b @ transport header + 8 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ah sequence != { 23-33} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 17000000 : 0 [end] element 22000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000033 ] + [ payload load 4b @ transport header + 8 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ah sequence 23-33 inet test-inet input [ meta load l4proto => reg 1 ] diff --git a/tests/py/inet/comp.t b/tests/py/inet/comp.t index ec9924ff..0df18139 100644 --- a/tests/py/inet/comp.t +++ b/tests/py/inet/comp.t @@ -20,6 +20,8 @@ comp flags 0x33-0x45;ok comp flags != 0x33-0x45;ok comp flags {0x33, 0x55, 0x67, 0x88};ok comp flags != {0x33, 0x55, 0x67, 0x88};ok +comp flags { 0x33-0x55};ok +comp flags != { 0x33-0x55};ok comp cpi 22;ok comp cpi != 233;ok @@ -27,3 +29,5 @@ comp cpi 33-45;ok comp cpi != 33-45;ok comp cpi {33, 55, 67, 88};ok comp cpi != {33, 55, 67, 88};ok +comp cpi { 33-55};ok +comp cpi != { 33-55};ok diff --git a/tests/py/inet/comp.t.json b/tests/py/inet/comp.t.json index 48ec5d21..b9b24f98 100644 --- a/tests/py/inet/comp.t.json +++ b/tests/py/inet/comp.t.json @@ -128,6 +128,46 @@ } ] +# comp flags { 0x33-0x55} +[ + { + "match": { + "left": { + "payload": { + "field": "flags", + "protocol": "comp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ "0x33", "0x55" ] } + ] + } + } + } +] + +# comp flags != { 0x33-0x55} +[ + { + "match": { + "left": { + "payload": { + "field": "flags", + "protocol": "comp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ "0x33", "0x55" ] } + ] + } + } + } +] + # comp cpi 22 [ { @@ -241,3 +281,44 @@ } } ] + +# comp cpi { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "cpi", + "protocol": "comp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# comp cpi != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "cpi", + "protocol": "comp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + diff --git a/tests/py/inet/comp.t.payload b/tests/py/inet/comp.t.payload index 024e47cd..dec38aea 100644 --- a/tests/py/inet/comp.t.payload +++ b/tests/py/inet/comp.t.payload @@ -54,6 +54,26 @@ inet test-inet input [ payload load 1b @ transport header + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# comp flags { 0x33-0x55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000033 : 0 [end] element 00000056 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000006c ] + [ payload load 1b @ transport header + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# comp flags != { 0x33-0x55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000033 : 0 [end] element 00000056 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000006c ] + [ payload load 1b @ transport header + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # comp cpi 22 inet test-inet input [ meta load l4proto => reg 1 ] @@ -103,3 +123,23 @@ inet test-inet input [ payload load 2b @ transport header + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# comp cpi { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000006c ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# comp cpi != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000006c ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + diff --git a/tests/py/inet/dccp.t b/tests/py/inet/dccp.t index 1bfee853..f0dd788b 100644 --- a/tests/py/inet/dccp.t +++ b/tests/py/inet/dccp.t @@ -11,13 +11,18 @@ dccp sport != 21-35;ok dccp sport {23, 24, 25};ok dccp sport != {23, 24, 25};ok +dccp sport { 20-50 };ok dccp sport ftp-data - re-mail-ck;ok;dccp sport 20-50 dccp sport 20-50;ok +dccp sport { 20-50};ok +dccp sport != { 20-50};ok # dccp dport 21-35;ok # dccp dport != 21-35;ok dccp dport {23, 24, 25};ok dccp dport != {23, 24, 25};ok +dccp dport { 20-50};ok +dccp dport != { 20-50};ok dccp type {request, response, data, ack, dataack, closereq, close, reset, sync, syncack};ok dccp type != {request, response, data, ack, dataack, closereq, close, reset, sync, syncack};ok diff --git a/tests/py/inet/dccp.t.json b/tests/py/inet/dccp.t.json index 76df530e..9260fbc5 100644 --- a/tests/py/inet/dccp.t.json +++ b/tests/py/inet/dccp.t.json @@ -78,6 +78,26 @@ } ] +# dccp sport { 20-50 } +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "dccp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 20, 50 ] } + ] + } + } + } +] + # dccp sport ftp-data - re-mail-ck [ { @@ -114,6 +134,46 @@ } ] +# dccp sport { 20-50} +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "dccp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 20, 50 ] } + ] + } + } + } +] + +# dccp sport != { 20-50} +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "dccp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 20, 50 ] } + ] + } + } + } +] + # dccp dport {23, 24, 25} [ { @@ -158,6 +218,46 @@ } ] +# dccp dport { 20-50} +[ + { + "match": { + "left": { + "payload": { + "field": "dport", + "protocol": "dccp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 20, 50 ] } + ] + } + } + } +] + +# dccp dport != { 20-50} +[ + { + "match": { + "left": { + "payload": { + "field": "dport", + "protocol": "dccp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 20, 50 ] } + ] + } + } + } +] + # dccp type {request, response, data, ack, dataack, closereq, close, reset, sync, syncack} [ { diff --git a/tests/py/inet/dccp.t.payload b/tests/py/inet/dccp.t.payload index 2303f0a7..b5a48f40 100644 --- a/tests/py/inet/dccp.t.payload +++ b/tests/py/inet/dccp.t.payload @@ -33,6 +33,16 @@ inet test-inet input [ payload load 2b @ transport header + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# dccp sport { 20-50 } +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00001400 : 0 [end] element 00003300 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000021 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + # dccp sport ftp-data - re-mail-ck inet test-inet input [ meta load l4proto => reg 1 ] @@ -49,6 +59,26 @@ inet test-inet input [ cmp gte reg 1 0x00001400 ] [ cmp lte reg 1 0x00003200 ] +# dccp sport { 20-50} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00001400 : 0 [end] element 00003300 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000021 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# dccp sport != { 20-50} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00001400 : 0 [end] element 00003300 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000021 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # dccp dport {23, 24, 25} __set%d test-ip4 3 __set%d test-ip4 0 @@ -69,6 +99,26 @@ inet test-inet input [ payload load 2b @ transport header + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# dccp dport { 20-50} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00001400 : 0 [end] element 00003300 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000021 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# dccp dport != { 20-50} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00001400 : 0 [end] element 00003300 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000021 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # dccp type {request, response, data, ack, dataack, closereq, close, reset, sync, syncack} __set%d test-inet 3 __set%d test-inet 0 diff --git a/tests/py/inet/esp.t b/tests/py/inet/esp.t index 58e9f884..e79eeada 100644 --- a/tests/py/inet/esp.t +++ b/tests/py/inet/esp.t @@ -12,9 +12,13 @@ esp spi 111-222;ok esp spi != 111-222;ok esp spi { 100, 102};ok esp spi != { 100, 102};ok +esp spi { 100-102};ok +- esp spi {100-102};ok esp sequence 22;ok esp sequence 22-24;ok esp sequence != 22-24;ok esp sequence { 22, 24};ok esp sequence != { 22, 24};ok +esp sequence { 22-25};ok +esp sequence != { 22-25};ok diff --git a/tests/py/inet/esp.t.json b/tests/py/inet/esp.t.json index d887f1af..84ea9eea 100644 --- a/tests/py/inet/esp.t.json +++ b/tests/py/inet/esp.t.json @@ -108,6 +108,26 @@ } ] +# esp spi { 100-102} +[ + { + "match": { + "left": { + "payload": { + "field": "spi", + "protocol": "esp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 100, 102 ] } + ] + } + } + } +] + # esp sequence 22 [ { @@ -201,3 +221,44 @@ } } ] + +# esp sequence { 22-25} +[ + { + "match": { + "left": { + "payload": { + "field": "sequence", + "protocol": "esp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 22, 25 ] } + ] + } + } + } +] + +# esp sequence != { 22-25} +[ + { + "match": { + "left": { + "payload": { + "field": "sequence", + "protocol": "esp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 22, 25 ] } + ] + } + } + } +] + diff --git a/tests/py/inet/esp.t.payload b/tests/py/inet/esp.t.payload index 0353b056..ad68530b 100644 --- a/tests/py/inet/esp.t.payload +++ b/tests/py/inet/esp.t.payload @@ -47,6 +47,26 @@ inet test-inet input [ payload load 4b @ transport header + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# esp spi { 100-102} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 64000000 : 0 [end] element 67000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000032 ] + [ payload load 4b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# esp spi != { 100-102} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 64000000 : 0 [end] element 67000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000032 ] + [ payload load 4b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # esp sequence 22 inet test-inet input [ meta load l4proto => reg 1 ] @@ -89,3 +109,23 @@ inet test-inet input [ payload load 4b @ transport header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# esp sequence { 22-25} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 16000000 : 0 [end] element 1a000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000032 ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# esp sequence != { 22-25} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 16000000 : 0 [end] element 1a000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000032 ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + diff --git a/tests/py/inet/sctp.t b/tests/py/inet/sctp.t index fc6050b1..5188b57e 100644 --- a/tests/py/inet/sctp.t +++ b/tests/py/inet/sctp.t @@ -12,6 +12,8 @@ sctp sport 23-44;ok sctp sport != 23-44;ok sctp sport { 23, 24, 25};ok sctp sport != { 23, 24, 25};ok +sctp sport { 23-44};ok +sctp sport != { 23-44};ok sctp dport 23;ok sctp dport != 23;ok @@ -19,6 +21,8 @@ sctp dport 23-44;ok sctp dport != 23-44;ok sctp dport { 23, 24, 25};ok sctp dport != { 23, 24, 25};ok +sctp dport { 23-44};ok +sctp dport != { 23-44};ok sctp checksum 1111;ok sctp checksum != 11;ok @@ -26,6 +30,8 @@ sctp checksum 21-333;ok sctp checksum != 32-111;ok sctp checksum { 22, 33, 44};ok sctp checksum != { 22, 33, 44};ok +sctp checksum { 22-44};ok +sctp checksum != { 22-44};ok sctp vtag 22;ok sctp vtag != 233;ok @@ -33,3 +39,5 @@ sctp vtag 33-45;ok sctp vtag != 33-45;ok sctp vtag {33, 55, 67, 88};ok sctp vtag != {33, 55, 67, 88};ok +sctp vtag { 33-55};ok +sctp vtag != { 33-55};ok diff --git a/tests/py/inet/sctp.t.json b/tests/py/inet/sctp.t.json index b4a2dc08..2684b034 100644 --- a/tests/py/inet/sctp.t.json +++ b/tests/py/inet/sctp.t.json @@ -110,6 +110,46 @@ } ] +# sctp sport { 23-44} +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "sctp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 23, 44 ] } + ] + } + } + } +] + +# sctp sport != { 23-44} +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "sctp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 23, 44 ] } + ] + } + } + } +] + # sctp dport 23 [ { @@ -222,6 +262,46 @@ } ] +# sctp dport { 23-44} +[ + { + "match": { + "left": { + "payload": { + "field": "dport", + "protocol": "sctp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 23, 44 ] } + ] + } + } + } +] + +# sctp dport != { 23-44} +[ + { + "match": { + "left": { + "payload": { + "field": "dport", + "protocol": "sctp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 23, 44 ] } + ] + } + } + } +] + # sctp checksum 1111 [ { @@ -334,6 +414,46 @@ } ] +# sctp checksum { 22-44} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "sctp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 22, 44 ] } + ] + } + } + } +] + +# sctp checksum != { 22-44} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "sctp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 22, 44 ] } + ] + } + } + } +] + # sctp vtag 22 [ { @@ -447,3 +567,44 @@ } } ] + +# sctp vtag { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "vtag", + "protocol": "sctp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# sctp vtag != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "vtag", + "protocol": "sctp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + diff --git a/tests/py/inet/sctp.t.payload b/tests/py/inet/sctp.t.payload index cd24c278..ecfcc725 100644 --- a/tests/py/inet/sctp.t.payload +++ b/tests/py/inet/sctp.t.payload @@ -47,6 +47,26 @@ inet test-inet input [ payload load 2b @ transport header + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# sctp sport { 23-44} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00001700 : 0 [end] element 00002d00 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000084 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# sctp sport != { 23-44} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00001700 : 0 [end] element 00002d00 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000084 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # sctp dport 23 inet test-inet input [ meta load l4proto => reg 1 ] @@ -96,6 +116,26 @@ inet test-inet input [ payload load 2b @ transport header + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# sctp dport { 23-44} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00001700 : 0 [end] element 00002d00 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000084 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# sctp dport != { 23-44} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00001700 : 0 [end] element 00002d00 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000084 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # sctp checksum 1111 inet test-inet input [ meta load l4proto => reg 1 ] @@ -145,6 +185,26 @@ inet test-inet input [ payload load 4b @ transport header + 8 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# sctp checksum { 22-44} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 16000000 : 0 [end] element 2d000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000084 ] + [ payload load 4b @ transport header + 8 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# sctp checksum != { 22-44} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 16000000 : 0 [end] element 2d000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000084 ] + [ payload load 4b @ transport header + 8 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # sctp vtag 22 inet test-inet input [ meta load l4proto => reg 1 ] @@ -194,3 +254,23 @@ inet test-inet input [ payload load 4b @ transport header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# sctp vtag { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000084 ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# sctp vtag != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000084 ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + diff --git a/tests/py/inet/tcp.t b/tests/py/inet/tcp.t index 2be745e9..e0a83e2b 100644 --- a/tests/py/inet/tcp.t +++ b/tests/py/inet/tcp.t @@ -14,6 +14,8 @@ tcp dport 33-45;ok tcp dport != 33-45;ok tcp dport { 33, 55, 67, 88};ok tcp dport != { 33, 55, 67, 88};ok +tcp dport { 33-55};ok +tcp dport != { 33-55};ok tcp dport {telnet, http, https} accept;ok;tcp dport { 443, 23, 80} accept tcp dport vmap { 22 : accept, 23 : drop };ok tcp dport vmap { 25:accept, 28:drop };ok @@ -28,6 +30,8 @@ tcp sport 33-45;ok tcp sport != 33-45;ok tcp sport { 33, 55, 67, 88};ok tcp sport != { 33, 55, 67, 88};ok +tcp sport { 33-55};ok +tcp sport != { 33-55};ok tcp sport vmap { 25:accept, 28:drop };ok tcp sport 8080 drop;ok @@ -43,6 +47,8 @@ tcp sequence 33-45;ok tcp sequence != 33-45;ok tcp sequence { 33, 55, 67, 88};ok tcp sequence != { 33, 55, 67, 88};ok +tcp sequence { 33-55};ok +tcp sequence != { 33-55};ok tcp ackseq 42949672 drop;ok tcp ackseq 22;ok @@ -51,6 +57,8 @@ tcp ackseq 33-45;ok tcp ackseq != 33-45;ok tcp ackseq { 33, 55, 67, 88};ok tcp ackseq != { 33, 55, 67, 88};ok +tcp ackseq { 33-55};ok +tcp ackseq != { 33-55};ok - tcp doff 22;ok - tcp doff != 233;ok @@ -58,6 +66,8 @@ tcp ackseq != { 33, 55, 67, 88};ok - tcp doff != 33-45;ok - tcp doff { 33, 55, 67, 88};ok - tcp doff != { 33, 55, 67, 88};ok +- tcp doff { 33-55};ok +- tcp doff != { 33-55};ok # BUG reserved # BUG: It is accepted but it is not shown then. tcp reserver @@ -77,6 +87,8 @@ tcp window 33-45;ok tcp window != 33-45;ok tcp window { 33, 55, 67, 88};ok tcp window != { 33, 55, 67, 88};ok +tcp window { 33-55};ok +tcp window != { 33-55};ok tcp checksum 22;ok tcp checksum != 233;ok @@ -84,6 +96,8 @@ tcp checksum 33-45;ok tcp checksum != 33-45;ok tcp checksum { 33, 55, 67, 88};ok tcp checksum != { 33, 55, 67, 88};ok +tcp checksum { 33-55};ok +tcp checksum != { 33-55};ok tcp urgptr 1234 accept;ok tcp urgptr 22;ok @@ -92,5 +106,7 @@ tcp urgptr 33-45;ok tcp urgptr != 33-45;ok tcp urgptr { 33, 55, 67, 88};ok tcp urgptr != { 33, 55, 67, 88};ok +tcp urgptr { 33-55};ok +tcp urgptr != { 33-55};ok tcp doff 8;ok diff --git a/tests/py/inet/tcp.t.json b/tests/py/inet/tcp.t.json index c0fe0cf0..babe5920 100644 --- a/tests/py/inet/tcp.t.json +++ b/tests/py/inet/tcp.t.json @@ -112,6 +112,46 @@ } ] +# tcp dport { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "dport", + "protocol": "tcp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# tcp dport != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "dport", + "protocol": "tcp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # tcp dport {telnet, http, https} accept [ { @@ -357,6 +397,46 @@ } ] +# tcp sport { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "tcp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# tcp sport != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "tcp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # tcp sport vmap { 25:accept, 28:drop } [ { @@ -673,6 +753,46 @@ } ] +# tcp sequence { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "sequence", + "protocol": "tcp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# tcp sequence != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "sequence", + "protocol": "tcp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # tcp ackseq 42949672 drop [ { @@ -806,6 +926,46 @@ } ] +# tcp ackseq { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "ackseq", + "protocol": "tcp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# tcp ackseq != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "ackseq", + "protocol": "tcp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # tcp flags { fin, syn, rst, psh, ack, urg, ecn, cwr} drop [ { @@ -1094,6 +1254,46 @@ } ] +# tcp window { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "window", + "protocol": "tcp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# tcp window != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "window", + "protocol": "tcp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # tcp checksum 22 [ { @@ -1208,6 +1408,46 @@ } ] +# tcp checksum { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "tcp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# tcp checksum != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "tcp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # tcp urgptr 1234 accept [ { @@ -1341,6 +1581,46 @@ } ] +# tcp urgptr { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "urgptr", + "protocol": "tcp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# tcp urgptr != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "urgptr", + "protocol": "tcp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # tcp doff 8 [ { diff --git a/tests/py/inet/tcp.t.payload b/tests/py/inet/tcp.t.payload index d6779e37..55f1bc2e 100644 --- a/tests/py/inet/tcp.t.payload +++ b/tests/py/inet/tcp.t.payload @@ -47,6 +47,26 @@ inet test-inet input [ payload load 2b @ transport header + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# tcp dport { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000006 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# tcp dport != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000006 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # tcp dport {telnet, http, https} accept __set%d test-inet 3 __set%d test-inet 0 @@ -147,6 +167,26 @@ inet test-inet input [ payload load 2b @ transport header + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# tcp sport { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000006 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# tcp sport != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000006 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # tcp sport vmap { 25:accept, 28:drop } __map%d test-inet b __map%d test-inet 0 @@ -253,6 +293,26 @@ inet test-inet input [ payload load 4b @ transport header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# tcp sequence { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000006 ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# tcp sequence != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000006 ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # tcp ackseq 42949672 drop inet test-inet input [ meta load l4proto => reg 1 ] @@ -592,6 +652,26 @@ inet test-inet input [ payload load 2b @ transport header + 18 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# tcp urgptr { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000006 ] + [ payload load 2b @ transport header + 18 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# tcp urgptr != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000006 ] + [ payload load 2b @ transport header + 18 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # tcp doff 8 inet test-inet input [ meta load l4proto => reg 1 ] diff --git a/tests/py/inet/udp.t b/tests/py/inet/udp.t index c434f2ed..4e3eaa51 100644 --- a/tests/py/inet/udp.t +++ b/tests/py/inet/udp.t @@ -12,6 +12,8 @@ udp sport 50-70 accept;ok udp sport != 50-60 accept;ok udp sport { 49, 50} drop;ok udp sport != { 50, 60} accept;ok +udp sport { 12-40};ok +udp sport != { 13-24};ok udp dport set {1, 2, 3};fail @@ -21,6 +23,8 @@ udp dport 70-75 accept;ok udp dport != 50-60 accept;ok udp dport { 49, 50} drop;ok udp dport != { 50, 60} accept;ok +udp dport { 70-75} accept;ok +udp dport != { 50-60} accept;ok udp length 6666;ok udp length != 6666;ok @@ -28,6 +32,8 @@ udp length 50-65 accept;ok udp length != 50-65 accept;ok udp length { 50, 65} accept;ok udp length != { 50, 65} accept;ok +udp length { 35-50};ok +udp length != { 35-50};ok udp checksum 6666 drop;ok udp checksum != { 444, 555} accept;ok @@ -38,6 +44,8 @@ udp checksum 33-45;ok udp checksum != 33-45;ok udp checksum { 33, 55, 67, 88};ok udp checksum != { 33, 55, 67, 88};ok +udp checksum { 33-55};ok +udp checksum != { 33-55};ok # limit impact to lo iif "lo" udp checksum set 0;ok diff --git a/tests/py/inet/udp.t.json b/tests/py/inet/udp.t.json index 665998ec..f8826640 100644 --- a/tests/py/inet/udp.t.json +++ b/tests/py/inet/udp.t.json @@ -126,6 +126,46 @@ } ] +# udp sport { 12-40} +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "udp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 12, 40 ] } + ] + } + } + } +] + +# udp sport != { 13-24} +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "udp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 13, 24 ] } + ] + } + } + } +] + # udp dport 80 accept [ { @@ -254,6 +294,52 @@ } ] +# udp dport { 70-75} accept +[ + { + "match": { + "left": { + "payload": { + "field": "dport", + "protocol": "udp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 70, 75 ] } + ] + } + } + }, + { + "accept": null + } +] + +# udp dport != { 50-60} accept +[ + { + "match": { + "left": { + "payload": { + "field": "dport", + "protocol": "udp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 50, 60 ] } + ] + } + } + }, + { + "accept": null + } +] + # udp length 6666 [ { @@ -376,6 +462,46 @@ } ] +# udp length { 35-50} +[ + { + "match": { + "left": { + "payload": { + "field": "length", + "protocol": "udp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 35, 50 ] } + ] + } + } + } +] + +# udp length != { 35-50} +[ + { + "match": { + "left": { + "payload": { + "field": "length", + "protocol": "udp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 35, 50 ] } + ] + } + } + } +] + # udp checksum 6666 drop [ { @@ -533,6 +659,46 @@ } ] +# udp checksum { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "udp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# udp checksum != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "udp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # iif "lo" udp checksum set 0 [ { diff --git a/tests/py/inet/udp.t.payload b/tests/py/inet/udp.t.payload index e6beda7f..d91eb784 100644 --- a/tests/py/inet/udp.t.payload +++ b/tests/py/inet/udp.t.payload @@ -53,6 +53,26 @@ inet test-inet input [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 accept ] +# udp sport { 12-40} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000c00 : 0 [end] element 00002900 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000011 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# udp sport != { 13-24} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000d00 : 0 [end] element 00001900 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000011 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # udp dport 80 accept inet test-inet input [ meta load l4proto => reg 1 ] @@ -108,6 +128,28 @@ inet test-inet input [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 accept ] +# udp dport { 70-75} accept +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00004600 : 0 [end] element 00004c00 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000011 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + [ immediate reg 0 accept ] + +# udp dport != { 50-60} accept +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00003200 : 0 [end] element 00003d00 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000011 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + [ immediate reg 0 accept ] + # udp length 6666 inet test-inet input [ meta load l4proto => reg 1 ] @@ -161,6 +203,26 @@ inet test-inet input [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 accept ] +# udp length { 35-50} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002300 : 0 [end] element 00003300 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000011 ] + [ payload load 2b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# udp length != { 35-50} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002300 : 0 [end] element 00003300 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000011 ] + [ payload load 2b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # udp checksum 6666 drop inet test-inet input [ meta load l4proto => reg 1 ] @@ -229,6 +291,26 @@ inet test-inet input [ payload load 2b @ transport header + 6 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# udp checksum { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000011 ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# udp checksum != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000011 ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # iif "lo" udp checksum set 0 inet test-inet input [ meta load iif => reg 1 ] diff --git a/tests/py/inet/udplite.t b/tests/py/inet/udplite.t index a8fdc8ea..7c22acb9 100644 --- a/tests/py/inet/udplite.t +++ b/tests/py/inet/udplite.t @@ -12,6 +12,8 @@ udplite sport 50-70 accept;ok udplite sport != 50-60 accept;ok udplite sport { 49, 50} drop;ok udplite sport != { 49, 50} accept;ok +udplite sport { 12-40};ok +udplite sport != { 12-40};ok udplite dport 80 accept;ok udplite dport != 60 accept;ok @@ -19,6 +21,8 @@ udplite dport 70-75 accept;ok udplite dport != 50-60 accept;ok udplite dport { 49, 50} drop;ok udplite dport != { 49, 50} accept;ok +udplite dport { 70-75} accept;ok +udplite dport != { 70-75} accept;ok - udplite csumcov 6666;ok - udplite csumcov != 6666;ok @@ -26,6 +30,8 @@ udplite dport != { 49, 50} accept;ok - udplite csumcov != 50-65 accept;ok - udplite csumcov { 50, 65} accept;ok - udplite csumcov != { 50, 65} accept;ok +- udplite csumcov { 35-50};ok +- udplite csumcov != { 35-50};ok udplite checksum 6666 drop;ok udplite checksum != { 444, 555} accept;ok @@ -35,3 +41,5 @@ udplite checksum 33-45;ok udplite checksum != 33-45;ok udplite checksum { 33, 55, 67, 88};ok udplite checksum != { 33, 55, 67, 88};ok +udplite checksum { 33-55};ok +udplite checksum != { 33-55};ok diff --git a/tests/py/inet/udplite.t.json b/tests/py/inet/udplite.t.json index 1bd4b276..f56bee47 100644 --- a/tests/py/inet/udplite.t.json +++ b/tests/py/inet/udplite.t.json @@ -126,6 +126,46 @@ } ] +# udplite sport { 12-40} +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "udplite" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 12, 40 ] } + ] + } + } + } +] + +# udplite sport != { 12-40} +[ + { + "match": { + "left": { + "payload": { + "field": "sport", + "protocol": "udplite" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 12, 40 ] } + ] + } + } + } +] + # udplite dport 80 accept [ { @@ -254,6 +294,52 @@ } ] +# udplite dport { 70-75} accept +[ + { + "match": { + "left": { + "payload": { + "field": "dport", + "protocol": "udplite" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 70, 75 ] } + ] + } + } + }, + { + "accept": null + } +] + +# udplite dport != { 70-75} accept +[ + { + "match": { + "left": { + "payload": { + "field": "dport", + "protocol": "udplite" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 70, 75 ] } + ] + } + } + }, + { + "accept": null + } +] + # udplite checksum 6666 drop [ { @@ -410,3 +496,44 @@ } } ] + +# udplite checksum { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "udplite" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# udplite checksum != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "udplite" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + diff --git a/tests/py/inet/udplite.t.payload b/tests/py/inet/udplite.t.payload index de9d09ed..eb3dc075 100644 --- a/tests/py/inet/udplite.t.payload +++ b/tests/py/inet/udplite.t.payload @@ -53,6 +53,26 @@ inet test-inet input [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 accept ] +# udplite sport { 12-40} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00000c00 : 0 [end] element 00002900 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000088 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# udplite sport != { 12-40} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00000c00 : 0 [end] element 00002900 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000088 ] + [ payload load 2b @ transport header + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # udplite dport 80 accept inet test-inet input [ meta load l4proto => reg 1 ] @@ -108,6 +128,28 @@ inet test-inet input [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 accept ] +# udplite dport { 70-75} accept +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00004600 : 0 [end] element 00004c00 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000088 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + [ immediate reg 0 accept ] + +# udplite dport != { 70-75} accept +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00004600 : 0 [end] element 00004c00 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000088 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + [ immediate reg 0 accept ] + # udplite checksum 6666 drop inet test-inet input [ meta load l4proto => reg 1 ] @@ -176,3 +218,23 @@ inet test-inet input [ payload load 2b @ transport header + 6 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# udplite checksum { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000088 ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# udplite checksum != { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000088 ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + diff --git a/tests/py/ip/icmp.t b/tests/py/ip/icmp.t index 25c2a7d6..6c05fb9d 100644 --- a/tests/py/ip/icmp.t +++ b/tests/py/ip/icmp.t @@ -26,6 +26,8 @@ icmp code 111 accept;ok icmp code != 111 accept;ok icmp code 33-55;ok icmp code != 33-55;ok +icmp code { 33-55};ok +icmp code != { 33-55};ok icmp code { 2, 4, 54, 33, 56};ok;icmp code { prot-unreachable, 4, 33, 54, 56} icmp code != { prot-unreachable, 4, 33, 54, 56};ok @@ -33,6 +35,8 @@ icmp checksum 12343 accept;ok icmp checksum != 12343 accept;ok icmp checksum 11-343 accept;ok icmp checksum != 11-343 accept;ok +icmp checksum { 11-343} accept;ok +icmp checksum != { 11-343} accept;ok icmp checksum { 1111, 222, 343} accept;ok icmp checksum != { 1111, 222, 343} accept;ok @@ -41,6 +45,8 @@ icmp id 22;ok icmp id != 233;ok icmp id 33-45;ok icmp id != 33-45;ok +icmp id { 33-55};ok +icmp id != { 33-55};ok icmp id { 22, 34, 333};ok icmp id != { 22, 34, 333};ok @@ -50,15 +56,21 @@ icmp sequence 33-45;ok icmp sequence != 33-45;ok icmp sequence { 33, 55, 67, 88};ok icmp sequence != { 33, 55, 67, 88};ok +icmp sequence { 33-55};ok +icmp sequence != { 33-55};ok icmp mtu 33;ok icmp mtu 22-33;ok +icmp mtu { 22-33};ok +icmp mtu != { 22-33};ok icmp mtu 22;ok icmp mtu != 233;ok icmp mtu 33-45;ok icmp mtu != 33-45;ok icmp mtu { 33, 55, 67, 88};ok icmp mtu != { 33, 55, 67, 88};ok +icmp mtu { 33-55};ok +icmp mtu != { 33-55};ok icmp gateway 22;ok icmp gateway != 233;ok @@ -66,5 +78,7 @@ icmp gateway 33-45;ok icmp gateway != 33-45;ok icmp gateway { 33, 55, 67, 88};ok icmp gateway != { 33, 55, 67, 88};ok +icmp gateway { 33-55};ok +icmp gateway != { 33-55};ok icmp gateway != 34;ok icmp gateway != { 333, 334};ok diff --git a/tests/py/ip/icmp.t.json b/tests/py/ip/icmp.t.json index ed136cdf..4e172745 100644 --- a/tests/py/ip/icmp.t.json +++ b/tests/py/ip/icmp.t.json @@ -416,6 +416,46 @@ } ] +# icmp code { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "code", + "protocol": "icmp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# icmp code != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "code", + "protocol": "icmp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # icmp code { 2, 4, 54, 33, 56} [ { @@ -544,6 +584,52 @@ } ] +# icmp checksum { 11-343} accept +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "icmp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 11, 343 ] } + ] + } + } + }, + { + "accept": null + } +] + +# icmp checksum != { 11-343} accept +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "icmp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 11, 343 ] } + ] + } + } + }, + { + "accept": null + } +] + # icmp checksum { 1111, 222, 343} accept [ { @@ -681,6 +767,46 @@ } ] +# icmp id { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "id", + "protocol": "icmp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# icmp id != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "id", + "protocol": "icmp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # icmp id { 22, 34, 333} [ { @@ -839,6 +965,46 @@ } ] +# icmp sequence { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "sequence", + "protocol": "icmp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# icmp sequence != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "sequence", + "protocol": "icmp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # icmp mtu 33 [ { @@ -873,6 +1039,46 @@ } ] +# icmp mtu { 22-33} +[ + { + "match": { + "left": { + "payload": { + "field": "mtu", + "protocol": "icmp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 22, 33 ] } + ] + } + } + } +] + +# icmp mtu != { 22-33} +[ + { + "match": { + "left": { + "payload": { + "field": "mtu", + "protocol": "icmp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 22, 33 ] } + ] + } + } + } +] + # icmp mtu 22 [ { @@ -987,6 +1193,46 @@ } ] +# icmp mtu { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "mtu", + "protocol": "icmp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# icmp mtu != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "mtu", + "protocol": "icmp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # icmp gateway 22 [ { @@ -1101,6 +1347,46 @@ } ] +# icmp gateway { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "gateway", + "protocol": "icmp" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# icmp gateway != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "gateway", + "protocol": "icmp" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # icmp gateway != 34 [ { diff --git a/tests/py/ip/icmp.t.payload.ip b/tests/py/ip/icmp.t.payload.ip index b16533f5..27f22207 100644 --- a/tests/py/ip/icmp.t.payload.ip +++ b/tests/py/ip/icmp.t.payload.ip @@ -154,6 +154,26 @@ ip test-ip4 input [ payload load 1b @ transport header + 1 => reg 1 ] [ range neq reg 1 0x00000021 0x00000037 ] +# icmp code { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 1b @ transport header + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmp code != { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 1b @ transport header + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # icmp code { 2, 4, 54, 33, 56} __set%d test-ip4 3 __set%d test-ip4 0 @@ -207,6 +227,28 @@ ip test-ip4 input [ range neq reg 1 0x00000b00 0x00005701 ] [ immediate reg 0 accept ] +# icmp checksum { 11-343} accept +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00000b00 : 0 [end] element 00005801 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + [ immediate reg 0 accept ] + +# icmp checksum != { 11-343} accept +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00000b00 : 0 [end] element 00005801 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + [ immediate reg 0 accept ] + # icmp checksum { 1111, 222, 343} accept __set%d test-ip4 3 __set%d test-ip4 0 @@ -266,6 +308,26 @@ ip test-ip4 input [ payload load 2b @ transport header + 4 => reg 1 ] [ range neq reg 1 0x00002100 0x00002d00 ] +# icmp id { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 2b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmp id != { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 2b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # icmp id { 22, 34, 333} __set%d test-ip4 3 __set%d test-ip4 0 @@ -335,6 +397,26 @@ ip test-ip4 input [ payload load 2b @ transport header + 6 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# icmp sequence { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmp sequence != { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # icmp mtu 33 ip test-ip4 input [ meta load l4proto => reg 1 ] @@ -350,6 +432,26 @@ ip test-ip4 input [ cmp gte reg 1 0x00001600 ] [ cmp lte reg 1 0x00002100 ] +# icmp mtu { 22-33} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00001600 : 0 [end] element 00002200 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmp mtu != { 22-33} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00001600 : 0 [end] element 00002200 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # icmp mtu 22 ip test-ip4 input [ meta load l4proto => reg 1 ] @@ -399,6 +501,26 @@ ip test-ip4 input [ payload load 2b @ transport header + 6 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# icmp mtu { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmp mtu != { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # icmp gateway 22 ip test-ip4 input [ meta load l4proto => reg 1 ] @@ -448,6 +570,26 @@ ip test-ip4 input [ payload load 4b @ transport header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# icmp gateway { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmp gateway != { 33-55} +__set%d test-ip4 7 +__set%d test-ip4 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +ip test-ip4 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x00000001 ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # icmp gateway != 34 ip test-ip4 input [ meta load l4proto => reg 1 ] diff --git a/tests/py/ip/ip.t b/tests/py/ip/ip.t index a667680a..0421d01b 100644 --- a/tests/py/ip/ip.t +++ b/tests/py/ip/ip.t @@ -39,6 +39,8 @@ ip length 333-435;ok ip length != 333-453;ok ip length { 333, 553, 673, 838};ok ip length != { 333, 553, 673, 838};ok +ip length { 333-535};ok +ip length != { 333-535};ok ip id 22;ok ip id != 233;ok @@ -46,6 +48,8 @@ ip id 33-45;ok ip id != 33-45;ok ip id { 33, 55, 67, 88};ok ip id != { 33, 55, 67, 88};ok +ip id { 33-55};ok +ip id != { 33-55};ok ip frag-off 222 accept;ok ip frag-off != 233;ok @@ -53,6 +57,8 @@ ip frag-off 33-45;ok ip frag-off != 33-45;ok ip frag-off { 33, 55, 67, 88};ok ip frag-off != { 33, 55, 67, 88};ok +ip frag-off { 33-55};ok +ip frag-off != { 33-55};ok ip ttl 0 drop;ok ip ttl 233;ok @@ -60,6 +66,8 @@ ip ttl 33-55;ok ip ttl != 45-50;ok ip ttl {43, 53, 45 };ok ip ttl != {43, 53, 45 };ok +ip ttl { 33-55};ok +ip ttl != { 33-55};ok ip protocol tcp;ok;ip protocol 6 ip protocol != tcp;ok;ip protocol != 6 @@ -76,6 +84,8 @@ ip checksum 33-45;ok ip checksum != 33-45;ok ip checksum { 33, 55, 67, 88};ok ip checksum != { 33, 55, 67, 88};ok +ip checksum { 33-55};ok +ip checksum != { 33-55};ok ip saddr set {192.19.1.2, 191.1.22.1};fail @@ -89,6 +99,8 @@ ip daddr 10.0.0.0-10.255.255.255;ok ip daddr 172.16.0.0-172.31.255.255;ok ip daddr 192.168.3.1-192.168.4.250;ok ip daddr != 192.168.0.1-192.168.0.250;ok +ip daddr { 192.168.0.1-192.168.0.250};ok +ip daddr != { 192.168.0.1-192.168.0.250};ok ip daddr { 192.168.5.1, 192.168.5.2, 192.168.5.3 } accept;ok ip daddr != { 192.168.5.1, 192.168.5.2, 192.168.5.3 } accept;ok diff --git a/tests/py/ip/ip.t.json b/tests/py/ip/ip.t.json index 42f936c1..3131ab79 100644 --- a/tests/py/ip/ip.t.json +++ b/tests/py/ip/ip.t.json @@ -270,6 +270,46 @@ } ] +# ip length { 333-535} +[ + { + "match": { + "left": { + "payload": { + "field": "length", + "protocol": "ip" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 333, 535 ] } + ] + } + } + } +] + +# ip length != { 333-535} +[ + { + "match": { + "left": { + "payload": { + "field": "length", + "protocol": "ip" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 333, 535 ] } + ] + } + } + } +] + # ip id 22 [ { @@ -384,6 +424,46 @@ } ] +# ip id { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "id", + "protocol": "ip" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# ip id != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "id", + "protocol": "ip" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # ip frag-off 222 accept [ { @@ -501,6 +581,46 @@ } ] +# ip frag-off { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "frag-off", + "protocol": "ip" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# ip frag-off != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "frag-off", + "protocol": "ip" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # ip ttl 0 drop [ { @@ -616,6 +736,46 @@ } ] +# ip ttl { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "ttl", + "protocol": "ip" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# ip ttl != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "ttl", + "protocol": "ip" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # ip protocol tcp [ { @@ -859,6 +1019,46 @@ } ] +# ip checksum { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "ip" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# ip checksum != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "ip" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # ip saddr 192.168.2.0/24 [ { @@ -1051,6 +1251,46 @@ } ] +# ip daddr { 192.168.0.1-192.168.0.250} +[ + { + "match": { + "left": { + "payload": { + "field": "daddr", + "protocol": "ip" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ "192.168.0.1", "192.168.0.250" ] } + ] + } + } + } +] + +# ip daddr != { 192.168.0.1-192.168.0.250} +[ + { + "match": { + "left": { + "payload": { + "field": "daddr", + "protocol": "ip" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ "192.168.0.1", "192.168.0.250" ] } + ] + } + } + } +] + # ip daddr { 192.168.5.1, 192.168.5.2, 192.168.5.3 } accept [ { diff --git a/tests/py/ip/ip.t.payload.bridge b/tests/py/ip/ip.t.payload.bridge index f4996fde..ad1d0aa8 100644 --- a/tests/py/ip/ip.t.payload.bridge +++ b/tests/py/ip/ip.t.payload.bridge @@ -113,6 +113,26 @@ bridge test-bridge input [ payload load 2b @ network header + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip length { 333-535} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 00004d01 : 0 [end] element 00001802 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip length != { 333-535} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 00004d01 : 0 [end] element 00001802 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip id 22 bridge test-bridge input [ payload load 2b @ link header + 12 => reg 1 ] @@ -162,6 +182,26 @@ bridge test-bridge input [ payload load 2b @ network header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip id { 33-55} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip id != { 33-55} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip frag-off 222 accept bridge test-bridge input [ payload load 2b @ link header + 12 => reg 1 ] @@ -212,6 +252,26 @@ bridge test-bridge input [ payload load 2b @ network header + 6 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip frag-off { 33-55} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip frag-off != { 33-55} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip ttl 0 drop bridge test-bridge input [ payload load 2b @ link header + 12 => reg 1 ] @@ -262,6 +322,26 @@ bridge test-bridge input [ payload load 1b @ network header + 8 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip ttl { 33-55} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 1b @ network header + 8 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip ttl != { 33-55} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 1b @ network header + 8 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip protocol tcp bridge test-bridge input [ payload load 2b @ link header + 12 => reg 1 ] @@ -362,6 +442,26 @@ bridge test-bridge input [ payload load 2b @ network header + 10 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip checksum { 33-55} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 10 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip checksum != { 33-55} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 10 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip saddr 192.168.2.0/24 bridge test-bridge input [ payload load 2b @ link header + 12 => reg 1 ] @@ -440,6 +540,26 @@ bridge test-bridge input [ payload load 4b @ network header + 16 => reg 1 ] [ range neq reg 1 0x0100a8c0 0xfa00a8c0 ] +# ip daddr { 192.168.0.1-192.168.0.250} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 0100a8c0 : 0 [end] element fb00a8c0 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 4b @ network header + 16 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip daddr != { 192.168.0.1-192.168.0.250} +__set%d test-bridge 7 size 3 +__set%d test-bridge 0 + element 00000000 : 1 [end] element 0100a8c0 : 0 [end] element fb00a8c0 : 1 [end] +bridge test-bridge input + [ payload load 2b @ link header + 12 => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 4b @ network header + 16 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip daddr { 192.168.5.1, 192.168.5.2, 192.168.5.3 } accept __set%d test-bridge 3 size 3 __set%d test-bridge 0 diff --git a/tests/py/ip/ip.t.payload.inet b/tests/py/ip/ip.t.payload.inet index e68888cb..b9cb28a2 100644 --- a/tests/py/ip/ip.t.payload.inet +++ b/tests/py/ip/ip.t.payload.inet @@ -113,6 +113,26 @@ inet test-inet input [ payload load 2b @ network header + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip length { 333-535} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00004d01 : 0 [end] element 00001802 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 2b @ network header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip length != { 333-535} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00004d01 : 0 [end] element 00001802 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 2b @ network header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip id 22 inet test-inet input [ meta load nfproto => reg 1 ] @@ -162,6 +182,26 @@ inet test-inet input [ payload load 2b @ network header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip id { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 2b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip id != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 2b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip frag-off 222 accept inet test-inet input [ meta load nfproto => reg 1 ] @@ -212,6 +252,26 @@ inet test-inet input [ payload load 2b @ network header + 6 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip frag-off { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 2b @ network header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip frag-off != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 2b @ network header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip ttl 0 drop inet test-inet input [ meta load nfproto => reg 1 ] @@ -262,6 +322,26 @@ inet test-inet input [ payload load 1b @ network header + 8 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip ttl { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 1b @ network header + 8 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip ttl != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 1b @ network header + 8 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip protocol tcp inet test-inet input [ meta load nfproto => reg 1 ] @@ -362,6 +442,26 @@ inet test-inet input [ payload load 2b @ network header + 10 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip checksum { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 2b @ network header + 10 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip checksum != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 2b @ network header + 10 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip saddr 192.168.2.0/24 inet test-inet input [ meta load nfproto => reg 1 ] @@ -440,6 +540,26 @@ inet test-inet input [ payload load 4b @ network header + 16 => reg 1 ] [ range neq reg 1 0x0100a8c0 0xfa00a8c0 ] +# ip daddr { 192.168.0.1-192.168.0.250} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 0100a8c0 : 0 [end] element fb00a8c0 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 4b @ network header + 16 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip daddr != { 192.168.0.1-192.168.0.250} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 0100a8c0 : 0 [end] element fb00a8c0 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x00000002 ] + [ payload load 4b @ network header + 16 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip daddr { 192.168.5.1, 192.168.5.2, 192.168.5.3 } accept __set%d test-inet 3 __set%d test-inet 0 diff --git a/tests/py/ip/ip.t.payload.netdev b/tests/py/ip/ip.t.payload.netdev index bab6fd5c..588e5ca2 100644 --- a/tests/py/ip/ip.t.payload.netdev +++ b/tests/py/ip/ip.t.payload.netdev @@ -47,6 +47,26 @@ netdev test-netdev ingress [ payload load 2b @ network header + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip length { 333-535} +__set%d test-netdev 7 +__set%d test-netdev 0 + element 00000000 : 1 [end] element 00004d01 : 0 [end] element 00001802 : 1 [end] +netdev test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip length != { 333-535} +__set%d test-netdev 7 +__set%d test-netdev 0 + element 00000000 : 1 [end] element 00004d01 : 0 [end] element 00001802 : 1 [end] +netdev test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip id 22 netdev test-netdev ingress [ meta load protocol => reg 1 ] @@ -96,6 +116,26 @@ netdev test-netdev ingress [ payload load 2b @ network header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip id { 33-55} +__set%d test-netdev 7 +__set%d test-netdev 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +netdev test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip id != { 33-55} +__set%d test-netdev 7 +__set%d test-netdev 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +netdev test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip frag-off 222 accept netdev test-netdev ingress [ meta load protocol => reg 1 ] @@ -112,7 +152,7 @@ netdev test-netdev ingress [ cmp neq reg 1 0x0000e900 ] # ip frag-off 33-45 -netdev test-netdev ingress +netdev test-netdev ingress [ meta load protocol => reg 1 ] [ cmp eq reg 1 0x00000008 ] [ payload load 2b @ network header + 6 => reg 1 ] @@ -120,7 +160,7 @@ netdev test-netdev ingress [ cmp lte reg 1 0x00002d00 ] # ip frag-off != 33-45 -netdev test-netdev ingress +netdev test-netdev ingress [ meta load protocol => reg 1 ] [ cmp eq reg 1 0x00000008 ] [ payload load 2b @ network header + 6 => reg 1 ] @@ -146,6 +186,26 @@ netdev test-netdev ingress [ payload load 2b @ network header + 6 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip frag-off { 33-55} +__set%d test-netdev 7 +__set%d test-netdev 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +netdev test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip frag-off != { 33-55} +__set%d test-netdev 7 +__set%d test-netdev 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +netdev test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip ttl 0 drop netdev test-netdev ingress [ meta load protocol => reg 1 ] @@ -189,6 +249,26 @@ netdev test-netdev ingress [ payload load 1b @ network header + 8 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip ttl { 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 test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 1b @ network header + 8 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip ttl != { 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 test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 1b @ network header + 8 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip protocol { icmp, esp, ah, comp, udp, udplite, tcp, dccp, sctp} accept __set%d test-netdev 3 __set%d test-netdev 0 @@ -275,6 +355,26 @@ netdev test-netdev ingress [ payload load 2b @ network header + 10 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip checksum { 33-55} +__set%d test-netdev 7 +__set%d test-netdev 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +netdev test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 10 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip checksum != { 33-55} +__set%d test-netdev 7 +__set%d test-netdev 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +netdev test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 2b @ network header + 10 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip saddr 192.168.2.0/24 netdev test-netdev ingress [ meta load protocol => reg 1 ] @@ -346,6 +446,26 @@ netdev test-netdev ingress [ payload load 4b @ network header + 16 => reg 1 ] [ range neq reg 1 0x0100a8c0 0xfa00a8c0 ] +# ip daddr { 192.168.0.1-192.168.0.250} +__set%d test-netdev 7 +__set%d test-netdev 0 + element 00000000 : 1 [end] element 0100a8c0 : 0 [end] element fb00a8c0 : 1 [end] +netdev test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 4b @ network header + 16 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip daddr != { 192.168.0.1-192.168.0.250} +__set%d test-netdev 7 +__set%d test-netdev 0 + element 00000000 : 1 [end] element 0100a8c0 : 0 [end] element fb00a8c0 : 1 [end] +netdev test-netdev ingress + [ meta load protocol => reg 1 ] + [ cmp eq reg 1 0x00000008 ] + [ payload load 4b @ network header + 16 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip daddr { 192.168.5.1, 192.168.5.2, 192.168.5.3 } accept __set%d test-netdev 3 __set%d test-netdev 0 diff --git a/tests/py/ip6/dst.t b/tests/py/ip6/dst.t index 96deac7f..9e7c554f 100644 --- a/tests/py/ip6/dst.t +++ b/tests/py/ip6/dst.t @@ -9,6 +9,8 @@ dst nexthdr 33-45;ok dst nexthdr != 33-45;ok dst nexthdr { 33, 55, 67, 88};ok dst nexthdr != { 33, 55, 67, 88};ok +dst nexthdr { 33-55};ok +dst nexthdr != { 33-55};ok dst nexthdr { udplite, ipcomp, udp, ah, sctp, esp, dccp, tcp, ipv6-icmp};ok;dst nexthdr { 51, 50, 17, 136, 58, 6, 33, 132, 108} dst nexthdr != { udplite, ipcomp, udp, ah, sctp, esp, dccp, tcp, ipv6-icmp};ok;dst nexthdr != { 51, 50, 17, 136, 58, 6, 33, 132, 108} dst nexthdr icmp;ok;dst nexthdr 1 @@ -20,3 +22,5 @@ dst hdrlength 33-45;ok dst hdrlength != 33-45;ok dst hdrlength { 33, 55, 67, 88};ok dst hdrlength != { 33, 55, 67, 88};ok +dst hdrlength { 33-55};ok +dst hdrlength != { 33-55};ok diff --git a/tests/py/ip6/dst.t.json b/tests/py/ip6/dst.t.json index e947a76f..1373e177 100644 --- a/tests/py/ip6/dst.t.json +++ b/tests/py/ip6/dst.t.json @@ -112,6 +112,46 @@ } ] +# dst nexthdr { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "nexthdr", + "name": "dst" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# dst nexthdr != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "nexthdr", + "name": "dst" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # dst nexthdr { udplite, ipcomp, udp, ah, sctp, esp, dccp, tcp, ipv6-icmp} [ { @@ -313,3 +353,44 @@ } } ] + +# dst hdrlength { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "hdrlength", + "name": "dst" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# dst hdrlength != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "hdrlength", + "name": "dst" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + diff --git a/tests/py/ip6/dst.t.payload.inet b/tests/py/ip6/dst.t.payload.inet index ba272dfd..768b4f1d 100644 --- a/tests/py/ip6/dst.t.payload.inet +++ b/tests/py/ip6/dst.t.payload.inet @@ -47,6 +47,26 @@ inet test-inet input [ exthdr load 1b @ 60 + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# dst nexthdr { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 60 + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# dst nexthdr != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 60 + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # dst nexthdr { udplite, ipcomp, udp, ah, sctp, esp, dccp, tcp, ipv6-icmp} __set%d test-inet 3 __set%d test-inet 0 @@ -130,3 +150,23 @@ ip6 test-ip6 input [ exthdr load 1b @ 60 + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# dst hdrlength { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 60 + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# dst hdrlength != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 60 + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + diff --git a/tests/py/ip6/dst.t.payload.ip6 b/tests/py/ip6/dst.t.payload.ip6 index badd9245..56afc126 100644 --- a/tests/py/ip6/dst.t.payload.ip6 +++ b/tests/py/ip6/dst.t.payload.ip6 @@ -35,6 +35,22 @@ ip6 test-ip6 input [ exthdr load 1b @ 60 + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# dst nexthdr { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 60 + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# dst nexthdr != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 60 + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # dst nexthdr { udplite, ipcomp, udp, ah, sctp, esp, dccp, tcp, ipv6-icmp} __set%d test-ip6 3 __set%d test-ip6 0 @@ -98,3 +114,20 @@ ip6 test-ip6 input [ exthdr load 1b @ 60 + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# dst hdrlength { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 60 + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# dst hdrlength != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 60 + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + + diff --git a/tests/py/ip6/frag.t b/tests/py/ip6/frag.t index 945398db..e16529ad 100644 --- a/tests/py/ip6/frag.t +++ b/tests/py/ip6/frag.t @@ -17,6 +17,8 @@ frag reserved 33-45;ok frag reserved != 33-45;ok frag reserved { 33, 55, 67, 88};ok frag reserved != { 33, 55, 67, 88};ok +frag reserved { 33-55};ok +frag reserved != { 33-55};ok frag frag-off 22;ok frag frag-off != 233;ok @@ -24,6 +26,8 @@ frag frag-off 33-45;ok frag frag-off != 33-45;ok frag frag-off { 33, 55, 67, 88};ok frag frag-off != { 33, 55, 67, 88};ok +frag frag-off { 33-55};ok +frag frag-off != { 33-55};ok frag reserved2 1;ok frag more-fragments 0;ok @@ -36,3 +40,5 @@ frag id 33-45;ok frag id != 33-45;ok frag id { 33, 55, 67, 88};ok frag id != { 33, 55, 67, 88};ok +frag id { 33-55};ok +frag id != { 33-55};ok diff --git a/tests/py/ip6/frag.t.json b/tests/py/ip6/frag.t.json index 6953e872..b8c06dfb 100644 --- a/tests/py/ip6/frag.t.json +++ b/tests/py/ip6/frag.t.json @@ -230,6 +230,46 @@ } ] +# frag reserved { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "reserved", + "name": "frag" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# frag reserved != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "reserved", + "name": "frag" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # frag frag-off 22 [ { @@ -344,6 +384,46 @@ } ] +# frag frag-off { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "frag-off", + "name": "frag" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# frag frag-off != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "frag-off", + "name": "frag" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # frag reserved2 1 [ { @@ -521,3 +601,44 @@ } } ] + +# frag id { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "id", + "name": "frag" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# frag id != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "id", + "name": "frag" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + diff --git a/tests/py/ip6/frag.t.payload.inet b/tests/py/ip6/frag.t.payload.inet index 0bf54fdc..06305330 100644 --- a/tests/py/ip6/frag.t.payload.inet +++ b/tests/py/ip6/frag.t.payload.inet @@ -95,6 +95,26 @@ inet test-inet output [ exthdr load 1b @ 44 + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# frag reserved { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet output + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 44 + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# frag reserved != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet output + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 44 + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # frag frag-off 22 inet test-inet output [ meta load nfproto => reg 1 ] @@ -150,6 +170,28 @@ inet test-inet output [ bitwise reg 1 = (reg=1 & 0x0000f8ff ) ^ 0x00000000 ] [ lookup reg 1 set __set%d 0x1 ] +# frag frag-off { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end] +inet test-inet output + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 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-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end] +inet test-inet output + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 2b @ 44 + 2 => reg 1 ] + [ bitwise reg 1 = (reg=1 & 0x0000f8ff ) ^ 0x00000000 ] + [ lookup reg 1 set __set%d 0x1 ] + # frag more-fragments 1 inet test-inet output [ meta load nfproto => reg 1 ] @@ -214,6 +256,26 @@ inet test-inet output [ exthdr load 4b @ 44 + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# frag id { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +inet test-inet output + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 4b @ 44 + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# frag id != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +inet test-inet output + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 4b @ 44 + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # frag reserved2 1 inet test-inet output [ meta load nfproto => reg 1 ] diff --git a/tests/py/ip6/frag.t.payload.ip6 b/tests/py/ip6/frag.t.payload.ip6 index dd0a6e28..6e86b8a9 100644 --- a/tests/py/ip6/frag.t.payload.ip6 +++ b/tests/py/ip6/frag.t.payload.ip6 @@ -71,6 +71,22 @@ ip6 test-ip6 output [ exthdr load 1b @ 44 + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# frag reserved { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 output + [ exthdr load 1b @ 44 + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# frag reserved != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 output + [ exthdr load 1b @ 44 + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # frag frag-off 22 ip6 test-ip6 output [ exthdr load 2b @ 44 + 2 => reg 1 ] @@ -114,6 +130,24 @@ ip6 test-ip6 output [ bitwise reg 1 = (reg=1 & 0x0000f8ff ) ^ 0x00000000 ] [ lookup reg 1 set __set%d 0x1 ] +# frag frag-off { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end] +ip6 test-ip6 output + [ exthdr load 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-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000801 : 0 [end] element 0000b901 : 1 [end] +ip6 test-ip6 output + [ exthdr load 2b @ 44 + 2 => reg 1 ] + [ bitwise reg 1 = (reg=1 & 0x0000f8ff ) ^ 0x00000000 ] + [ lookup reg 1 set __set%d 0x1 ] + # frag more-fragments 1 ip6 test-ip6 output [ exthdr load 1b @ 44 + 3 => reg 1 ] @@ -162,6 +196,22 @@ ip6 test-ip6 output [ exthdr load 4b @ 44 + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# frag id { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +ip6 test-ip6 output + [ exthdr load 4b @ 44 + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# frag id != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +ip6 test-ip6 output + [ exthdr load 4b @ 44 + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # frag reserved2 1 ip6 test-ip6 output [ exthdr load 1b @ 44 + 3 => reg 1 ] diff --git a/tests/py/ip6/hbh.t b/tests/py/ip6/hbh.t index fce5feae..f367a384 100644 --- a/tests/py/ip6/hbh.t +++ b/tests/py/ip6/hbh.t @@ -9,6 +9,8 @@ hbh hdrlength 33-45;ok hbh hdrlength != 33-45;ok hbh hdrlength {33, 55, 67, 88};ok hbh hdrlength != {33, 55, 67, 88};ok +hbh hdrlength { 33-55};ok +hbh hdrlength != { 33-55};ok hbh nexthdr {esp, ah, comp, udp, udplite, tcp, dccp, sctp, icmpv6};ok;hbh nexthdr { 58, 136, 51, 50, 6, 17, 132, 33, 108} hbh nexthdr != {esp, ah, comp, udp, udplite, tcp, dccp, sctp, icmpv6};ok;hbh nexthdr != { 58, 136, 51, 50, 6, 17, 132, 33, 108} @@ -18,5 +20,7 @@ hbh nexthdr 33-45;ok hbh nexthdr != 33-45;ok hbh nexthdr {33, 55, 67, 88};ok hbh nexthdr != {33, 55, 67, 88};ok +hbh nexthdr { 33-55};ok +hbh nexthdr != { 33-55};ok hbh nexthdr ip;ok;hbh nexthdr 0 hbh nexthdr != ip;ok;hbh nexthdr != 0 diff --git a/tests/py/ip6/hbh.t.json b/tests/py/ip6/hbh.t.json index 68670a3b..441d3bfe 100644 --- a/tests/py/ip6/hbh.t.json +++ b/tests/py/ip6/hbh.t.json @@ -112,6 +112,46 @@ } ] +# hbh hdrlength { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "hdrlength", + "name": "hbh" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# hbh hdrlength != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "hdrlength", + "name": "hbh" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # hbh nexthdr {esp, ah, comp, udp, udplite, tcp, dccp, sctp, icmpv6} [ { @@ -282,6 +322,46 @@ } ] +# hbh nexthdr { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "nexthdr", + "name": "hbh" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# hbh nexthdr != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "nexthdr", + "name": "hbh" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # hbh nexthdr ip [ { diff --git a/tests/py/ip6/hbh.t.payload.inet b/tests/py/ip6/hbh.t.payload.inet index a1847f83..cf7e3535 100644 --- a/tests/py/ip6/hbh.t.payload.inet +++ b/tests/py/ip6/hbh.t.payload.inet @@ -47,6 +47,26 @@ inet test-inet filter-input [ exthdr load 1b @ 0 + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# hbh hdrlength { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet filter-input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 0 + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# hbh hdrlength != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet filter-input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 0 + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # hbh nexthdr {esp, ah, comp, udp, udplite, tcp, dccp, sctp, icmpv6} __set%d test-inet 3 __set%d test-inet 0 @@ -116,6 +136,26 @@ inet test-inet filter-input [ exthdr load 1b @ 0 + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# hbh nexthdr { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet filter-input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 0 + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# hbh nexthdr != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet filter-input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 0 + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # hbh nexthdr ip inet test-inet filter-input [ meta load nfproto => reg 1 ] diff --git a/tests/py/ip6/hbh.t.payload.ip6 b/tests/py/ip6/hbh.t.payload.ip6 index 7fc90629..93522c41 100644 --- a/tests/py/ip6/hbh.t.payload.ip6 +++ b/tests/py/ip6/hbh.t.payload.ip6 @@ -35,6 +35,22 @@ ip6 test-ip6 filter-input [ exthdr load 1b @ 0 + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# hbh hdrlength { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 filter-input + [ exthdr load 1b @ 0 + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# hbh hdrlength != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 filter-input + [ exthdr load 1b @ 0 + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # hbh nexthdr {esp, ah, comp, udp, udplite, tcp, dccp, sctp, icmpv6} __set%d test-ip6 3 __set%d test-ip6 0 @@ -88,6 +104,22 @@ ip6 test-ip6 filter-input [ exthdr load 1b @ 0 + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# hbh nexthdr { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 filter-input + [ exthdr load 1b @ 0 + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# hbh nexthdr != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 filter-input + [ exthdr load 1b @ 0 + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # hbh nexthdr ip ip6 test-ip6 filter-input [ exthdr load 1b @ 0 + 0 => reg 1 ] diff --git a/tests/py/ip6/icmpv6.t b/tests/py/ip6/icmpv6.t index ef38cb86..8d794115 100644 --- a/tests/py/ip6/icmpv6.t +++ b/tests/py/ip6/icmpv6.t @@ -32,6 +32,8 @@ icmpv6 code 4;ok;icmpv6 code port-unreachable icmpv6 code 3-66;ok icmpv6 code {5, 6, 7} accept;ok;icmpv6 code {policy-fail, reject-route, 7} accept icmpv6 code != {policy-fail, reject-route, 7} accept;ok +icmpv6 code { 3-66};ok +icmpv6 code != { 3-66};ok icmpv6 checksum 2222 log;ok icmpv6 checksum != 2222 log;ok @@ -39,6 +41,8 @@ icmpv6 checksum 222-226;ok icmpv6 checksum != 2222 log;ok icmpv6 checksum { 222, 226};ok icmpv6 checksum != { 222, 226};ok +icmpv6 checksum { 222-226};ok +icmpv6 checksum != { 222-226};ok # BUG: icmpv6 parameter-problem, pptr, mtu, packet-too-big # [ICMP6HDR_PPTR] = ICMP6HDR_FIELD("parameter-problem", icmp6_pptr), @@ -66,6 +70,8 @@ icmpv6 mtu 33-45;ok icmpv6 mtu != 33-45;ok icmpv6 mtu {33, 55, 67, 88};ok icmpv6 mtu != {33, 55, 67, 88};ok +icmpv6 mtu {33-55};ok +icmpv6 mtu != {33-55};ok - icmpv6 id 2;ok - icmpv6 id != 233;ok @@ -73,6 +79,8 @@ icmpv6 id 33-45;ok icmpv6 id != 33-45;ok icmpv6 id {33, 55, 67, 88};ok icmpv6 id != {33, 55, 67, 88};ok +icmpv6 id {33-55};ok +icmpv6 id != {33-55};ok icmpv6 sequence 2;ok icmpv6 sequence {3, 4, 5, 6, 7} accept;ok @@ -81,6 +89,8 @@ icmpv6 sequence {2, 4};ok icmpv6 sequence != {2, 4};ok icmpv6 sequence 2-4;ok icmpv6 sequence != 2-4;ok +icmpv6 sequence { 2-4};ok +icmpv6 sequence != { 2-4};ok - icmpv6 max-delay 22;ok - icmpv6 max-delay != 233;ok @@ -88,3 +98,5 @@ icmpv6 max-delay 33-45;ok icmpv6 max-delay != 33-45;ok icmpv6 max-delay {33, 55, 67, 88};ok icmpv6 max-delay != {33, 55, 67, 88};ok +icmpv6 max-delay {33-55};ok +icmpv6 max-delay != {33-55};ok diff --git a/tests/py/ip6/icmpv6.t.json b/tests/py/ip6/icmpv6.t.json index 7ada4669..f6cfbf17 100644 --- a/tests/py/ip6/icmpv6.t.json +++ b/tests/py/ip6/icmpv6.t.json @@ -544,6 +544,46 @@ } ] +# icmpv6 code { 3-66} +[ + { + "match": { + "left": { + "payload": { + "field": "code", + "protocol": "icmpv6" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 3, 66 ] } + ] + } + } + } +] + +# icmpv6 code != { 3-66} +[ + { + "match": { + "left": { + "payload": { + "field": "code", + "protocol": "icmpv6" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 3, 66 ] } + ] + } + } + } +] + # icmpv6 checksum 2222 log [ { @@ -661,6 +701,46 @@ } ] +# icmpv6 checksum { 222-226} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "icmpv6" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 222, 226 ] } + ] + } + } + } +] + +# icmpv6 checksum != { 222-226} +[ + { + "match": { + "left": { + "payload": { + "field": "checksum", + "protocol": "icmpv6" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 222, 226 ] } + ] + } + } + } +] + # icmpv6 mtu 22 [ { @@ -775,6 +855,46 @@ } ] +# icmpv6 mtu {33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "mtu", + "protocol": "icmpv6" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# icmpv6 mtu != {33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "mtu", + "protocol": "icmpv6" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # icmpv6 id 33-45 [ { @@ -857,6 +977,46 @@ } ] +# icmpv6 id {33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "id", + "protocol": "icmpv6" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# icmpv6 id != {33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "id", + "protocol": "icmpv6" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # icmpv6 sequence 2 [ { @@ -978,6 +1138,46 @@ } ] +# icmpv6 sequence { 2-4} +[ + { + "match": { + "left": { + "payload": { + "field": "sequence", + "protocol": "icmpv6" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 2, 4 ] } + ] + } + } + } +] + +# icmpv6 sequence != { 2-4} +[ + { + "match": { + "left": { + "payload": { + "field": "sequence", + "protocol": "icmpv6" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 2, 4 ] } + ] + } + } + } +] + # icmpv6 max-delay 33-45 [ { @@ -1059,3 +1259,44 @@ } } ] + +# icmpv6 max-delay {33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "max-delay", + "name": "icmpv6" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# icmpv6 max-delay != {33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "max-delay", + "name": "icmpv6" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + diff --git a/tests/py/ip6/icmpv6.t.payload.ip6 b/tests/py/ip6/icmpv6.t.payload.ip6 index 1e4f30d7..51d71f41 100644 --- a/tests/py/ip6/icmpv6.t.payload.ip6 +++ b/tests/py/ip6/icmpv6.t.payload.ip6 @@ -231,6 +231,26 @@ ip6 test-ip6 input [ lookup reg 1 set __set%d 0x1 ] [ immediate reg 0 accept ] +# icmpv6 code { 3-66} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000003 : 0 [end] element 00000043 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 1b @ transport header + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmpv6 code != { 3-66} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000003 : 0 [end] element 00000043 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 1b @ transport header + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # icmpv6 checksum 2222 log ip6 test-ip6 input [ meta load l4proto => reg 1 ] @@ -283,6 +303,26 @@ ip6 test-ip6 input [ payload load 2b @ transport header + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# icmpv6 checksum { 222-226} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 0000de00 : 0 [end] element 0000e300 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmpv6 checksum != { 222-226} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 0000de00 : 0 [end] element 0000e300 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 2b @ transport header + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # icmpv6 mtu 22 ip6 test-ip6 input [ meta load l4proto => reg 1 ] @@ -332,6 +372,25 @@ ip6 test-ip6 input [ payload load 4b @ transport header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# icmpv6 mtu {33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmpv6 mtu != {33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 21000000 : 0 [end] element 38000000 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 4b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] # icmpv6 id 33-45 ip6 test-ip6 input @@ -368,6 +427,26 @@ ip6 test-ip6 input [ payload load 2b @ transport header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# icmpv6 id {33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 2b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmpv6 id != {33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 2b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # icmpv6 sequence 2 ip6 test-ip6 input [ meta load l4proto => reg 1 ] @@ -432,6 +511,26 @@ ip6 test-ip6 input [ payload load 2b @ transport header + 6 => reg 1 ] [ range neq reg 1 0x00000200 0x00000400 ] +# icmpv6 sequence { 2-4} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000200 : 0 [end] element 00000500 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmpv6 sequence != { 2-4} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000200 : 0 [end] element 00000500 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 2b @ transport header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # icmpv6 max-delay 33-45 ip6 test-ip6 input [ meta load l4proto => reg 1 ] @@ -467,3 +566,23 @@ ip6 test-ip6 input [ payload load 2b @ transport header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# icmpv6 max-delay {33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 2b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# icmpv6 max-delay != {33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip6 test-ip6 input + [ meta load l4proto => reg 1 ] + [ cmp eq reg 1 0x0000003a ] + [ payload load 2b @ transport header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + diff --git a/tests/py/ip6/ip6.t b/tests/py/ip6/ip6.t index fbd07865..8210d22b 100644 --- a/tests/py/ip6/ip6.t +++ b/tests/py/ip6/ip6.t @@ -24,6 +24,8 @@ ip6 flowlabel != 233;ok ip6 flowlabel { 33, 55, 67, 88};ok # BUG ip6 flowlabel { 5046528, 2883584, 13522432 } ip6 flowlabel != { 33, 55, 67, 88};ok +ip6 flowlabel { 33-55};ok +ip6 flowlabel != { 33-55};ok ip6 flowlabel vmap { 0 : accept, 2 : continue } ;ok ip6 length 22;ok @@ -32,12 +34,16 @@ ip6 length 33-45;ok ip6 length != 33-45;ok ip6 length { 33, 55, 67, 88};ok ip6 length != {33, 55, 67, 88};ok +ip6 length { 33-55};ok +ip6 length != { 33-55};ok ip6 nexthdr {udp, ah, comp, udplite, tcp, dccp, sctp};ok;ip6 nexthdr { 132, 51, 108, 136, 17, 33, 6} ip6 nexthdr {esp, ah, comp, udp, udplite, tcp, dccp, sctp, icmpv6};ok;ip6 nexthdr { 6, 136, 108, 33, 50, 17, 132, 58, 51} ip6 nexthdr != {esp, ah, comp, udp, udplite, tcp, dccp, sctp, icmpv6};ok;ip6 nexthdr != { 6, 136, 108, 33, 50, 17, 132, 58, 51} ip6 nexthdr esp;ok;ip6 nexthdr 50 ip6 nexthdr != esp;ok;ip6 nexthdr != 50 +ip6 nexthdr { 33-44};ok +ip6 nexthdr != { 33-44};ok ip6 nexthdr 33-44;ok ip6 nexthdr != 33-44;ok @@ -47,6 +53,8 @@ ip6 hoplimit 33-45;ok ip6 hoplimit != 33-45;ok ip6 hoplimit {33, 55, 67, 88};ok ip6 hoplimit != {33, 55, 67, 88};ok +ip6 hoplimit {33-55};ok +ip6 hoplimit != {33-55};ok # from src/scanner.l # v680 (({hex4}:){7}{hex4}) diff --git a/tests/py/ip6/ip6.t.json b/tests/py/ip6/ip6.t.json index 46d347df..f898240f 100644 --- a/tests/py/ip6/ip6.t.json +++ b/tests/py/ip6/ip6.t.json @@ -213,6 +213,46 @@ } ] +# ip6 flowlabel { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "flowlabel", + "protocol": "ip6" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# ip6 flowlabel != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "flowlabel", + "protocol": "ip6" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # ip6 flowlabel vmap { 0 : accept, 2 : continue } [ { @@ -357,6 +397,48 @@ } ] +# ip6 length { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "length", + "protocol": "ip6" + } + }, + "op": "==", + "right": { + "set": [ + { + "range": [ 33, 55 ] + } + ] + } + } + } +] + +# ip6 length != { 33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "length", + "protocol": "ip6" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # ip6 nexthdr {udp, ah, comp, udplite, tcp, dccp, sctp} [ { @@ -471,6 +553,46 @@ } ] +# ip6 nexthdr { 33-44} +[ + { + "match": { + "left": { + "payload": { + "field": "nexthdr", + "protocol": "ip6" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 44 ] } + ] + } + } + } +] + +# ip6 nexthdr != { 33-44} +[ + { + "match": { + "left": { + "payload": { + "field": "nexthdr", + "protocol": "ip6" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 44 ] } + ] + } + } + } +] + # ip6 nexthdr 33-44 [ { @@ -621,6 +743,46 @@ } ] +# ip6 hoplimit {33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "hoplimit", + "protocol": "ip6" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# ip6 hoplimit != {33-55} +[ + { + "match": { + "left": { + "payload": { + "field": "hoplimit", + "protocol": "ip6" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # ip6 saddr 1234:1234:1234:1234:1234:1234:1234:1234 [ { diff --git a/tests/py/ip6/ip6.t.payload.inet b/tests/py/ip6/ip6.t.payload.inet index d297bf7c..d015c8ef 100644 --- a/tests/py/ip6/ip6.t.payload.inet +++ b/tests/py/ip6/ip6.t.payload.inet @@ -91,6 +91,28 @@ inet test-inet input [ bitwise reg 1 = (reg=1 & 0x00ffff0f ) ^ 0x00000000 ] [ lookup reg 1 set __set%d 0x1 ] +# ip6 flowlabel { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00210000 : 0 [end] element 00380000 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ payload load 3b @ network header + 1 => reg 1 ] + [ bitwise reg 1 = (reg=1 & 0x00ffff0f ) ^ 0x00000000 ] + [ lookup reg 1 set __set%d ] + +# ip6 flowlabel != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00210000 : 0 [end] element 00380000 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ payload load 3b @ network header + 1 => reg 1 ] + [ bitwise reg 1 = (reg=1 & 0x00ffff0f ) ^ 0x00000000 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip6 flowlabel vmap { 0 : accept, 2 : continue } __map%d test-inet b size 2 __map%d test-inet 0 @@ -151,6 +173,26 @@ inet test-inet input [ payload load 2b @ network header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip6 length { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ payload load 2b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip6 length != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ payload load 2b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip6 nexthdr {udp, ah, comp, udplite, tcp, dccp, sctp} __set%d test-inet 3 __set%d test-inet 0 @@ -195,6 +237,26 @@ inet test-inet input [ payload load 1b @ network header + 6 => reg 1 ] [ cmp neq reg 1 0x00000032 ] +# ip6 nexthdr { 33-44} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 0000002d : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ payload load 1b @ network header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip6 nexthdr != { 33-44} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 0000002d : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ payload load 1b @ network header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip6 nexthdr 33-44 inet test-inet input [ meta load nfproto => reg 1 ] @@ -259,6 +321,26 @@ inet test-inet input [ payload load 1b @ network header + 7 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip6 hoplimit {33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ payload load 1b @ network header + 7 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip6 hoplimit != {33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ payload load 1b @ network header + 7 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip6 saddr 1234:1234:1234:1234:1234:1234:1234:1234 inet test-inet input [ meta load nfproto => reg 1 ] diff --git a/tests/py/ip6/ip6.t.payload.ip6 b/tests/py/ip6/ip6.t.payload.ip6 index c78944a4..b2e8363c 100644 --- a/tests/py/ip6/ip6.t.payload.ip6 +++ b/tests/py/ip6/ip6.t.payload.ip6 @@ -71,6 +71,24 @@ ip6 test-ip6 input [ bitwise reg 1 = (reg=1 & 0x00ffff0f ) ^ 0x00000000 ] [ lookup reg 1 set __set%d 0x1 ] +# ip6 flowlabel { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00210000 : 0 [end] element 00380000 : 1 [end] +ip6 test-ip6 input + [ payload load 3b @ network header + 1 => reg 1 ] + [ bitwise reg 1 = (reg=1 & 0x00ffff0f ) ^ 0x00000000 ] + [ lookup reg 1 set __set%d ] + +# ip6 flowlabel != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00210000 : 0 [end] element 00380000 : 1 [end] +ip6 test-ip6 input + [ payload load 3b @ network header + 1 => reg 1 ] + [ bitwise reg 1 = (reg=1 & 0x00ffff0f ) ^ 0x00000000 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip6 flowlabel vmap { 0 : accept, 2 : continue } __map%d test-ip6 b size 2 __map%d test-ip6 0 @@ -117,6 +135,22 @@ ip6 test-ip6 input [ payload load 2b @ network header + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip6 length { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip6 test-ip6 input + [ payload load 2b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip6 length != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip6 test-ip6 input + [ payload load 2b @ network header + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip6 nexthdr {udp, ah, comp, udplite, tcp, dccp, sctp} __set%d test-ip6 3 __set%d test-ip6 0 @@ -151,6 +185,22 @@ ip6 test-ip6 input [ payload load 1b @ network header + 6 => reg 1 ] [ cmp neq reg 1 0x00000032 ] +# ip6 nexthdr { 33-44} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 0000002d : 1 [end] +ip6 test-ip6 input + [ payload load 1b @ network header + 6 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip6 nexthdr != { 33-44} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 0000002d : 1 [end] +ip6 test-ip6 input + [ payload load 1b @ network header + 6 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip6 nexthdr 33-44 ip6 test-ip6 input [ payload load 1b @ network header + 6 => reg 1 ] @@ -199,6 +249,22 @@ ip6 test-ip6 input [ payload load 1b @ network header + 7 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# ip6 hoplimit {33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ payload load 1b @ network header + 7 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# ip6 hoplimit != {33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ payload load 1b @ network header + 7 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # ip6 saddr 1234:1234:1234:1234:1234:1234:1234:1234 ip6 test-ip6 input [ payload load 16b @ network header + 8 => reg 1 ] diff --git a/tests/py/ip6/mh.t b/tests/py/ip6/mh.t index 46f4ba05..2f90372e 100644 --- a/tests/py/ip6/mh.t +++ b/tests/py/ip6/mh.t @@ -15,6 +15,8 @@ mh nexthdr 33-45;ok mh nexthdr != 33-45;ok mh nexthdr { 33, 55, 67, 88 };ok mh nexthdr != { 33, 55, 67, 88 };ok +mh nexthdr { 33-55 };ok +mh nexthdr != { 33-55 };ok mh hdrlength 22;ok mh hdrlength != 233;ok @@ -22,6 +24,8 @@ mh hdrlength 33-45;ok mh hdrlength != 33-45;ok mh hdrlength { 33, 55, 67, 88 };ok mh hdrlength != { 33, 55, 67, 88 };ok +mh hdrlength { 33-55 };ok +mh hdrlength != { 33-55 };ok mh type {binding-refresh-request, home-test-init, careof-test-init, home-test, careof-test, binding-update, binding-acknowledgement, binding-error, fast-binding-update, fast-binding-acknowledgement, fast-binding-advertisement, experimental-mobility-header, home-agent-switch-message};ok mh type home-agent-switch-message;ok @@ -33,6 +37,8 @@ mh reserved 33-45;ok mh reserved != 33-45;ok mh reserved { 33, 55, 67, 88};ok mh reserved != { 33, 55, 67, 88};ok +mh reserved { 33-55};ok +mh reserved != { 33-55};ok mh checksum 22;ok mh checksum != 233;ok @@ -40,3 +46,5 @@ mh checksum 33-45;ok mh checksum != 33-45;ok mh checksum { 33, 55, 67, 88};ok mh checksum != { 33, 55, 67, 88};ok +mh checksum { 33-55};ok +mh checksum != { 33-55};ok diff --git a/tests/py/ip6/mh.t.json b/tests/py/ip6/mh.t.json index 5bc5d4f3..211477d3 100644 --- a/tests/py/ip6/mh.t.json +++ b/tests/py/ip6/mh.t.json @@ -232,6 +232,48 @@ } ] +# mh nexthdr { 33-55 } +[ + { + "match": { + "left": { + "exthdr": { + "field": "nexthdr", + "name": "mh" + } + }, + "op": "==", + "right": { + "set": [ + { + "range": [ 33, 55 ] + } + ] + } + } + } +] + +# mh nexthdr != { 33-55 } +[ + { + "match": { + "left": { + "exthdr": { + "field": "nexthdr", + "name": "mh" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # mh hdrlength 22 [ { @@ -346,6 +388,46 @@ } ] +# mh hdrlength { 33-55 } +[ + { + "match": { + "left": { + "exthdr": { + "field": "hdrlength", + "name": "mh" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# mh hdrlength != { 33-55 } +[ + { + "match": { + "left": { + "exthdr": { + "field": "hdrlength", + "name": "mh" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # mh type {binding-refresh-request, home-test-init, careof-test-init, home-test, careof-test, binding-update, binding-acknowledgement, binding-error, fast-binding-update, fast-binding-acknowledgement, fast-binding-advertisement, experimental-mobility-header, home-agent-switch-message} [ { @@ -524,6 +606,46 @@ } ] +# mh reserved { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "reserved", + "name": "mh" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# mh reserved != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "reserved", + "name": "mh" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # mh checksum 22 [ { @@ -637,3 +759,44 @@ } } ] + +# mh checksum { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "checksum", + "name": "mh" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# mh checksum != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "checksum", + "name": "mh" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + diff --git a/tests/py/ip6/mh.t.payload.inet b/tests/py/ip6/mh.t.payload.inet index 52b475bb..24335b19 100644 --- a/tests/py/ip6/mh.t.payload.inet +++ b/tests/py/ip6/mh.t.payload.inet @@ -95,6 +95,26 @@ inet test-inet input [ exthdr load 1b @ 135 + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# mh nexthdr { 33-55 } +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 135 + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# mh nexthdr != { 33-55 } +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 135 + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # mh hdrlength 22 inet test-inet input [ meta load nfproto => reg 1 ] @@ -144,6 +164,26 @@ inet test-inet input [ exthdr load 1b @ 135 + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# mh hdrlength { 33-55 } +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 135 + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# mh hdrlength != { 33-55 } +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 135 + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # mh type {binding-refresh-request, home-test-init, careof-test-init, home-test, careof-test, binding-update, binding-acknowledgement, binding-error, fast-binding-update, fast-binding-acknowledgement, fast-binding-advertisement, experimental-mobility-header, home-agent-switch-message} __set%d test-inet 3 __set%d test-inet 0 @@ -217,6 +257,26 @@ inet test-inet input [ exthdr load 1b @ 135 + 3 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# mh reserved { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 135 + 3 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# mh reserved != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 135 + 3 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # mh checksum 22 inet test-inet input [ meta load nfproto => reg 1 ] @@ -266,3 +326,23 @@ inet test-inet input [ exthdr load 2b @ 135 + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# mh checksum { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 2b @ 135 + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# mh checksum != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 2b @ 135 + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + diff --git a/tests/py/ip6/mh.t.payload.ip6 b/tests/py/ip6/mh.t.payload.ip6 index 3e8dffcd..d19b6e69 100644 --- a/tests/py/ip6/mh.t.payload.ip6 +++ b/tests/py/ip6/mh.t.payload.ip6 @@ -71,6 +71,22 @@ ip6 test-ip6 input [ exthdr load 1b @ 135 + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# mh nexthdr { 33-55 } +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 135 + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# mh nexthdr != { 33-55 } +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 135 + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # mh hdrlength 22 ip6 test-ip6 input [ exthdr load 1b @ 135 + 1 => reg 1 ] @@ -108,6 +124,22 @@ ip6 test-ip6 input [ exthdr load 1b @ 135 + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# mh hdrlength { 33-55 } +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 135 + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# mh hdrlength != { 33-55 } +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 135 + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # mh type {binding-refresh-request, home-test-init, careof-test-init, home-test, careof-test, binding-update, binding-acknowledgement, binding-error, fast-binding-update, fast-binding-acknowledgement, fast-binding-advertisement, experimental-mobility-header, home-agent-switch-message} __set%d test-ip6 3 __set%d test-ip6 0 @@ -163,6 +195,22 @@ ip6 test-ip6 input [ exthdr load 1b @ 135 + 3 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# mh reserved { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 135 + 3 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# mh reserved != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 135 + 3 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # mh checksum 22 ip6 test-ip6 input [ exthdr load 2b @ 135 + 4 => reg 1 ] @@ -200,3 +248,19 @@ ip6 test-ip6 input [ exthdr load 2b @ 135 + 4 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# mh checksum { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip6 test-ip6 input + [ exthdr load 2b @ 135 + 4 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# mh checksum != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00002100 : 0 [end] element 00003800 : 1 [end] +ip6 test-ip6 input + [ exthdr load 2b @ 135 + 4 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + diff --git a/tests/py/ip6/rt.t b/tests/py/ip6/rt.t index c33d38a5..c3feaabe 100644 --- a/tests/py/ip6/rt.t +++ b/tests/py/ip6/rt.t @@ -15,6 +15,8 @@ rt nexthdr 33-45;ok rt nexthdr != 33-45;ok rt nexthdr { 33, 55, 67, 88};ok rt nexthdr != { 33, 55, 67, 88};ok +rt nexthdr { 33-55};ok +rt nexthdr != { 33-55};ok rt hdrlength 22;ok rt hdrlength != 233;ok @@ -22,6 +24,8 @@ rt hdrlength 33-45;ok rt hdrlength != 33-45;ok rt hdrlength { 33, 55, 67, 88};ok rt hdrlength != { 33, 55, 67, 88};ok +rt hdrlength { 33-55};ok +rt hdrlength != { 33-55};ok rt type 22;ok rt type != 233;ok @@ -29,6 +33,8 @@ rt type 33-45;ok rt type != 33-45;ok rt type { 33, 55, 67, 88};ok rt type != { 33, 55, 67, 88};ok +rt type { 33-55};ok +rt type != { 33-55};ok rt seg-left 22;ok rt seg-left != 233;ok @@ -36,3 +42,5 @@ rt seg-left 33-45;ok rt seg-left != 33-45;ok rt seg-left { 33, 55, 67, 88};ok rt seg-left != { 33, 55, 67, 88};ok +rt seg-left { 33-55};ok +rt seg-left != { 33-55};ok diff --git a/tests/py/ip6/rt.t.json b/tests/py/ip6/rt.t.json index a5021e04..86a46402 100644 --- a/tests/py/ip6/rt.t.json +++ b/tests/py/ip6/rt.t.json @@ -232,6 +232,46 @@ } ] +# rt nexthdr { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "nexthdr", + "name": "rt" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# rt nexthdr != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "nexthdr", + "name": "rt" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # rt hdrlength 22 [ { @@ -346,6 +386,46 @@ } ] +# rt hdrlength { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "hdrlength", + "name": "rt" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# rt hdrlength != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "hdrlength", + "name": "rt" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # rt type 22 [ { @@ -460,6 +540,46 @@ } ] +# rt type { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "type", + "name": "rt" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# rt type != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "type", + "name": "rt" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + # rt seg-left 22 [ { @@ -573,3 +693,44 @@ } } ] + +# rt seg-left { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "seg-left", + "name": "rt" + } + }, + "op": "==", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + +# rt seg-left != { 33-55} +[ + { + "match": { + "left": { + "exthdr": { + "field": "seg-left", + "name": "rt" + } + }, + "op": "!=", + "right": { + "set": [ + { "range": [ 33, 55 ] } + ] + } + } + } +] + diff --git a/tests/py/ip6/rt.t.payload.inet b/tests/py/ip6/rt.t.payload.inet index 3c05b4ee..8fb717f0 100644 --- a/tests/py/ip6/rt.t.payload.inet +++ b/tests/py/ip6/rt.t.payload.inet @@ -95,6 +95,26 @@ inet test-inet input [ exthdr load 1b @ 43 + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# rt nexthdr { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 43 + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# rt nexthdr != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 43 + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # rt hdrlength 22 inet test-inet input [ meta load nfproto => reg 1 ] @@ -144,6 +164,26 @@ inet test-inet input [ exthdr load 1b @ 43 + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# rt hdrlength { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 43 + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# rt hdrlength != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 43 + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # rt type 22 inet test-inet input [ meta load nfproto => reg 1 ] @@ -193,6 +233,26 @@ inet test-inet input [ exthdr load 1b @ 43 + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# rt type { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 43 + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# rt type != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 43 + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # rt seg-left 22 inet test-inet input [ meta load nfproto => reg 1 ] @@ -242,3 +302,23 @@ inet test-inet input [ exthdr load 1b @ 43 + 3 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# rt seg-left { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 43 + 3 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# rt seg-left != { 33-55} +__set%d test-inet 7 +__set%d test-inet 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +inet test-inet input + [ meta load nfproto => reg 1 ] + [ cmp eq reg 1 0x0000000a ] + [ exthdr load 1b @ 43 + 3 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + diff --git a/tests/py/ip6/rt.t.payload.ip6 b/tests/py/ip6/rt.t.payload.ip6 index 738667c6..5a574630 100644 --- a/tests/py/ip6/rt.t.payload.ip6 +++ b/tests/py/ip6/rt.t.payload.ip6 @@ -71,6 +71,22 @@ ip6 test-ip6 input [ exthdr load 1b @ 43 + 0 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# rt nexthdr { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 43 + 0 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# rt nexthdr != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 43 + 0 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # rt hdrlength 22 ip6 test-ip6 input [ exthdr load 1b @ 43 + 1 => reg 1 ] @@ -108,6 +124,22 @@ ip6 test-ip6 input [ exthdr load 1b @ 43 + 1 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# rt hdrlength { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 43 + 1 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# rt hdrlength != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 43 + 1 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # rt type 22 ip6 test-ip6 input [ exthdr load 1b @ 43 + 2 => reg 1 ] @@ -145,6 +177,22 @@ ip6 test-ip6 input [ exthdr load 1b @ 43 + 2 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# rt type { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 43 + 2 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# rt type != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 43 + 2 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + # rt seg-left 22 ip6 test-ip6 input [ exthdr load 1b @ 43 + 3 => reg 1 ] @@ -182,3 +230,19 @@ ip6 test-ip6 input [ exthdr load 1b @ 43 + 3 => reg 1 ] [ lookup reg 1 set __set%d 0x1 ] +# rt seg-left { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 43 + 3 => reg 1 ] + [ lookup reg 1 set __set%d ] + +# rt seg-left != { 33-55} +__set%d test-ip6 7 +__set%d test-ip6 0 + element 00000000 : 1 [end] element 00000021 : 0 [end] element 00000038 : 1 [end] +ip6 test-ip6 input + [ exthdr load 1b @ 43 + 3 => reg 1 ] + [ lookup reg 1 set __set%d 0x1 ] + -- cgit v1.2.3