From 90d4ee087171e75d5313359ad6b6f1341e51ddc5 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Wed, 29 Aug 2018 16:23:27 +0200 Subject: JSON: Make match op mandatory, introduce 'in' operator This special operator is required for cases where missing operator does not lead to same results as equal operator, i.e. with bitmasks on RHS. Signed-off-by: Phil Sutter Signed-off-by: Pablo Neira Ayuso --- tests/py/any/ct.t.json | 35 +++++++++++++++ tests/py/any/ct.t.json.output | 15 +++++++ tests/py/any/meta.t.json | 83 +++++++++++++++++++++++++++++++++++ tests/py/any/meta.t.json.output | 17 +++++++ tests/py/any/rawpayload.t.json | 8 ++++ tests/py/any/rawpayload.t.json.output | 3 ++ tests/py/any/rt.t.json | 1 + 7 files changed, 162 insertions(+) (limited to 'tests/py/any') diff --git a/tests/py/any/ct.t.json b/tests/py/any/ct.t.json index 2fb4e727..45e48f22 100644 --- a/tests/py/any/ct.t.json +++ b/tests/py/any/ct.t.json @@ -7,6 +7,7 @@ "key": "state" } }, + "op": "in", "right": [ "new", "established", @@ -41,6 +42,7 @@ "key": "state" } }, + "op": "in", "right": { "set": [ "new", @@ -84,6 +86,7 @@ "key": "state" } }, + "op": "in", "right": "invalid" } }, @@ -101,6 +104,7 @@ "key": "state" } }, + "op": "in", "right": "established" } }, @@ -118,6 +122,7 @@ "key": "state" } }, + "op": "in", "right": 8 } } @@ -132,6 +137,7 @@ "key": "direction" } }, + "op": "==", "right": "original" } } @@ -161,6 +167,7 @@ "key": "direction" } }, + "op": "==", "right": "reply" } } @@ -190,6 +197,7 @@ "key": "direction" } }, + "op": "in", "right": { "set": [ "reply", @@ -229,6 +237,7 @@ "key": "status" } }, + "op": "in", "right": "expected" } } @@ -258,6 +267,7 @@ "key": "status" } }, + "op": "in", "right": "seen-reply" } } @@ -287,6 +297,7 @@ "key": "status" } }, + "op": "==", "right": { "set": [ "expected", @@ -309,6 +320,7 @@ "key": "status" } }, + "op": "in", "right": [ "expected", "seen-reply", @@ -331,6 +343,7 @@ "key": "status" } }, + "op": "in", "right": "snat" } } @@ -345,6 +358,7 @@ "key": "status" } }, + "op": "in", "right": "dnat" } } @@ -359,6 +373,7 @@ "key": "mark" } }, + "op": "==", "right": 0 } } @@ -458,6 +473,7 @@ "0x23" ] }, + "op": "==", "right": "0x11" } } @@ -492,6 +508,7 @@ "key": "mark" } }, + "op": "==", "right": "0x00000032" } } @@ -521,6 +538,7 @@ "key": "mark" } }, + "op": "==", "right": { "range": [ "0x00000032", "0x00000045" ] } @@ -554,6 +572,7 @@ "key": "mark" } }, + "op": "in", "right": { "set": [ "0x32", @@ -574,6 +593,7 @@ "key": "mark" } }, + "op": "in", "right": { "set": [ { @@ -717,6 +737,7 @@ "key": "expiration" } }, + "op": "==", "right": "30s" } } @@ -731,6 +752,7 @@ "key": "expiration" } }, + "op": "==", "right": "30000ms" } } @@ -745,6 +767,7 @@ "key": "expiration" } }, + "op": "==", "right": { "range": [ "1m", "1h" ] } @@ -791,6 +814,7 @@ "key": "expiration" } }, + "op": "==", "right": { "range": [ 33, 45 ] } @@ -824,6 +848,7 @@ "key": "expiration" } }, + "op": "==", "right": { "set": [ 33, @@ -867,6 +892,7 @@ "key": "expiration" } }, + "op": "==", "right": { "set": [ { @@ -908,6 +934,7 @@ "key": "helper" } }, + "op": "==", "right": "ftp" } } @@ -931,6 +958,7 @@ } ] }, + "op": "==", "right": { "set": [ { @@ -963,6 +991,7 @@ } ] }, + "op": "==", "right": { "set": [ { "concat": [ "new", "0x12345678" ] }, @@ -992,6 +1021,7 @@ } ] }, + "op": "==", "right": { "set": [ { @@ -1227,6 +1257,7 @@ "key": "label" } }, + "op": "in", "right": 127 } } @@ -1255,6 +1286,7 @@ "key": "zone" } }, + "op": "==", "right": 0 } } @@ -1269,6 +1301,7 @@ "key": "zone" } }, + "op": "==", "right": 23 } } @@ -1284,6 +1317,7 @@ "key": "zone" } }, + "op": "==", "right": 1 } } @@ -1299,6 +1333,7 @@ "key": "zone" } }, + "op": "==", "right": 1 } } diff --git a/tests/py/any/ct.t.json.output b/tests/py/any/ct.t.json.output index 8f0ca93c..49d51771 100644 --- a/tests/py/any/ct.t.json.output +++ b/tests/py/any/ct.t.json.output @@ -7,6 +7,7 @@ "key": "state" } }, + "op": "in", "right": [ "established", "related", @@ -26,6 +27,7 @@ "key": "state" } }, + "op": "==", "right": { "set": [ "established", @@ -69,6 +71,7 @@ "key": "state" } }, + "op": "in", "right": "new" } } @@ -83,6 +86,7 @@ "key": "direction" } }, + "op": "==", "right": { "set": [ "original", @@ -202,6 +206,7 @@ "key": "mark" } }, + "op": "==", "right": 50 } } @@ -231,6 +236,7 @@ "key": "mark" } }, + "op": "==", "right": 50 } } @@ -260,6 +266,7 @@ "key": "mark" } }, + "op": "==", "right": { "range": [ 50, 69 ] } @@ -293,6 +300,7 @@ "key": "mark" } }, + "op": "==", "right": { "set": [ 50, @@ -313,6 +321,7 @@ "key": "mark" } }, + "op": "==", "right": { "set": [ { "range": [ 50, 8738 ] }, @@ -409,6 +418,7 @@ "key": "expiration" } }, + "op": "==", "right": 30 } } @@ -423,6 +433,7 @@ "key": "expiration" } }, + "op": "==", "right": 30 } } @@ -437,6 +448,7 @@ "key": "expiration" } }, + "op": "==", "right": { "range": [ 60, 3600 ] } @@ -477,6 +489,7 @@ } ] }, + "op": "==", "right": { "set": [ { @@ -509,6 +522,7 @@ } ] }, + "op": "==", "right": { "set": [ { @@ -553,6 +567,7 @@ } ] }, + "op": "==", "right": { "set": [ { diff --git a/tests/py/any/meta.t.json b/tests/py/any/meta.t.json index 00a4f237..2cf91cda 100644 --- a/tests/py/any/meta.t.json +++ b/tests/py/any/meta.t.json @@ -5,6 +5,7 @@ "left": { "meta": { "key": "length" } }, + "op": "==", "right": 1000 } } @@ -17,6 +18,7 @@ "left": { "meta": { "key": "length" } }, + "op": "==", "right": 22 } } @@ -42,6 +44,7 @@ "left": { "meta": { "key": "length" } }, + "op": "==", "right": { "range": [ 33, 45 ] } @@ -71,6 +74,7 @@ "left": { "meta": { "key": "length" } }, + "op": "==", "right": { "set": [ 33, @@ -90,6 +94,7 @@ "left": { "meta": { "key": "length" } }, + "op": "==", "right": { "set": [ { "range": [ 33, 55 ] }, @@ -107,6 +112,7 @@ "left": { "meta": { "key": "length" } }, + "op": "==", "right": { "set": [ { "range": [ 33, 88 ] }, @@ -144,6 +150,7 @@ "left": { "meta": { "key": "length" } }, + "op": "==", "right": { "set": [ { "range": [ 33, 55 ] } @@ -177,6 +184,7 @@ "left": { "meta": { "key": "protocol" } }, + "op": "==", "right": { "set": [ "ip", @@ -216,6 +224,7 @@ "left": { "meta": { "key": "protocol" } }, + "op": "==", "right": "ip" } } @@ -241,6 +250,7 @@ "left": { "meta": { "key": "l4proto" } }, + "op": "==", "right": 22 } } @@ -266,6 +276,7 @@ "left": { "meta": { "key": "l4proto" } }, + "op": "==", "right": { "range": [ 33, 45 ] } @@ -295,6 +306,7 @@ "left": { "meta": { "key": "l4proto" } }, + "op": "==", "right": { "set": [ 33, @@ -334,6 +346,7 @@ "left": { "meta": { "key": "l4proto" } }, + "op": "==", "right": { "set": [ { "range": [ 33, 55 ] } @@ -367,6 +380,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": "root" } } @@ -379,6 +393,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": "none" } } @@ -391,6 +406,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": "0x87654321" } } @@ -403,6 +419,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": 2271560481 } } @@ -415,6 +432,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": "1:1234" } } @@ -427,6 +445,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": "bcad:dadc" } } @@ -439,6 +458,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": "aabb:0" } } @@ -477,6 +497,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": { "range": [ "bcad:dada", "bcad:dadc" ] } @@ -506,6 +527,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": { "set": [ "bcad:dada", @@ -555,6 +577,7 @@ "left": { "meta": { "key": "mark" } }, + "op": "==", "right": "0x4" } } @@ -567,6 +590,7 @@ "left": { "meta": { "key": "mark" } }, + "op": "==", "right": "0x32" } } @@ -615,6 +639,7 @@ "left": { "meta": { "key": "mark" } }, + "op": "==", "right": "0x10" } } @@ -681,6 +706,7 @@ "0x03" ] }, + "op": "==", "right": "0x01" } } @@ -711,6 +737,7 @@ "left": { "meta": { "key": "iif" } }, + "op": "==", "right": "lo" } }, @@ -742,6 +769,7 @@ "left": { "meta": { "key": "iifname" } }, + "op": "==", "right": "dummy0" } } @@ -767,6 +795,7 @@ "left": { "meta": { "key": "iifname" } }, + "op": "==", "right": { "set": [ "dummy0", @@ -802,6 +831,7 @@ "left": { "meta": { "key": "iifname" } }, + "op": "==", "right": "dummy*" } } @@ -814,6 +844,7 @@ "left": { "meta": { "key": "iifname" } }, + "op": "==", "right": "dummy\\*" } } @@ -826,6 +857,7 @@ "left": { "meta": { "key": "iiftype" } }, + "op": "==", "right": { "set": [ "ether", @@ -884,6 +916,7 @@ "left": { "meta": { "key": "iiftype" } }, + "op": "==", "right": "ether" } } @@ -909,6 +942,7 @@ "left": { "meta": { "key": "iiftype" } }, + "op": "==", "right": "ppp" } } @@ -921,6 +955,7 @@ "left": { "meta": { "key": "oif" } }, + "op": "==", "right": "lo" } }, @@ -952,6 +987,7 @@ "left": { "meta": { "key": "oif" } }, + "op": "==", "right": { "set": [ "lo" @@ -991,6 +1027,7 @@ "left": { "meta": { "key": "oifname" } }, + "op": "==", "right": "dummy0" } } @@ -1016,6 +1053,7 @@ "left": { "meta": { "key": "oifname" } }, + "op": "==", "right": { "set": [ "dummy0", @@ -1033,6 +1071,7 @@ "left": { "meta": { "key": "oifname" } }, + "op": "==", "right": "dummy*" } } @@ -1045,6 +1084,7 @@ "left": { "meta": { "key": "oifname" } }, + "op": "==", "right": "dummy\\*" } } @@ -1057,6 +1097,7 @@ "left": { "meta": { "key": "oiftype" } }, + "op": "==", "right": { "set": [ "ether", @@ -1115,6 +1156,7 @@ "left": { "meta": { "key": "oiftype" } }, + "op": "==", "right": "ether" } } @@ -1127,6 +1169,7 @@ "left": { "meta": { "key": "skuid" } }, + "op": "==", "right": { "set": [ "bin", @@ -1170,6 +1213,7 @@ "left": { "meta": { "key": "skuid" } }, + "op": "==", "right": "root" } } @@ -1227,6 +1271,7 @@ "left": { "meta": { "key": "skuid" } }, + "op": "==", "right": 3000 } }, @@ -1242,6 +1287,7 @@ "left": { "meta": { "key": "skuid" } }, + "op": "==", "right": { "range": [ 3001, 3005 ] } @@ -1277,6 +1323,7 @@ "left": { "meta": { "key": "skuid" } }, + "op": "==", "right": { "set": [ { "range": [ 2001, 2005 ] } @@ -1316,6 +1363,7 @@ "left": { "meta": { "key": "skgid" } }, + "op": "==", "right": { "set": [ "bin", @@ -1359,6 +1407,7 @@ "left": { "meta": { "key": "skgid" } }, + "op": "==", "right": "root" } } @@ -1416,6 +1465,7 @@ "left": { "meta": { "key": "skgid" } }, + "op": "==", "right": 3000 } }, @@ -1431,6 +1481,7 @@ "left": { "meta": { "key": "skgid" } }, + "op": "==", "right": { "range": [ 2001, 2005 ] } @@ -1466,6 +1517,7 @@ "left": { "meta": { "key": "skgid" } }, + "op": "==", "right": { "set": [ { "range": [ 2001, 2005 ] } @@ -1601,6 +1653,7 @@ "left": { "meta": { "key": "iif" } }, + "op": "==", "right": "lo" } } @@ -1613,6 +1666,7 @@ "left": { "meta": { "key": "oif" } }, + "op": "==", "right": "lo" } } @@ -1625,6 +1679,7 @@ "left": { "meta": { "key": "oifname" } }, + "op": "==", "right": "dummy2" } }, @@ -1640,6 +1695,7 @@ "left": { "meta": { "key": "skuid" } }, + "op": "==", "right": 3000 } } @@ -1652,6 +1708,7 @@ "left": { "meta": { "key": "skgid" } }, + "op": "==", "right": 3000 } } @@ -1664,6 +1721,7 @@ "left": { "meta": { "key": "rtclassid" } }, + "op": "==", "right": "cosmos" } } @@ -1676,6 +1734,7 @@ "left": { "meta": { "key": "pkttype" } }, + "op": "==", "right": "broadcast" } } @@ -1688,6 +1747,7 @@ "left": { "meta": { "key": "pkttype" } }, + "op": "==", "right": "host" } } @@ -1700,6 +1760,7 @@ "left": { "meta": { "key": "pkttype" } }, + "op": "==", "right": "multicast" } } @@ -1751,6 +1812,7 @@ "left": { "meta": { "key": "pkttype" } }, + "op": "==", "right": { "set": [ "broadcast", @@ -1771,6 +1833,7 @@ "left": { "meta": { "key": "cpu" } }, + "op": "==", "right": 1 } } @@ -1796,6 +1859,7 @@ "left": { "meta": { "key": "cpu" } }, + "op": "==", "right": { "range": [ 1, 3 ] } @@ -1825,6 +1889,7 @@ "left": { "meta": { "key": "cpu" } }, + "op": "==", "right": { "set": [ 2, @@ -1842,6 +1907,7 @@ "left": { "meta": { "key": "cpu" } }, + "op": "==", "right": { "set": [ { "range": [ 2, 3 ] }, @@ -1877,6 +1943,7 @@ "left": { "meta": { "key": "iifgroup" } }, + "op": "==", "right": 0 } } @@ -1902,6 +1969,7 @@ "left": { "meta": { "key": "iifgroup" } }, + "op": "==", "right": "default" } } @@ -1927,6 +1995,7 @@ "left": { "meta": { "key": "iifgroup" } }, + "op": "==", "right": { "set": [ "default" @@ -1960,6 +2029,7 @@ "left": { "meta": { "key": "iifgroup" } }, + "op": "==", "right": { "set": [ 11, @@ -1977,6 +2047,7 @@ "left": { "meta": { "key": "iifgroup" } }, + "op": "==", "right": { "set": [ { "range": [ 11, 33 ] } @@ -2028,6 +2099,7 @@ "left": { "meta": { "key": "oifgroup" } }, + "op": "==", "right": 0 } } @@ -2053,6 +2125,7 @@ "left": { "meta": { "key": "oifgroup" } }, + "op": "==", "right": "default" } } @@ -2078,6 +2151,7 @@ "left": { "meta": { "key": "oifgroup" } }, + "op": "==", "right": { "set": [ "default" @@ -2111,6 +2185,7 @@ "left": { "meta": { "key": "oifgroup" } }, + "op": "==", "right": { "set": [ 11, @@ -2128,6 +2203,7 @@ "left": { "meta": { "key": "oifgroup" } }, + "op": "==", "right": { "set": [ { "range": [ 11, 33 ] } @@ -2179,6 +2255,7 @@ "left": { "meta": { "key": "cgroup" } }, + "op": "==", "right": 1048577 } } @@ -2204,6 +2281,7 @@ "left": { "meta": { "key": "cgroup" } }, + "op": "==", "right": { "set": [ 1048577, @@ -2239,6 +2317,7 @@ "left": { "meta": { "key": "cgroup" } }, + "op": "==", "right": { "range": [ 1048577, 1048578 ] } @@ -2268,6 +2347,7 @@ "left": { "meta": { "key": "cgroup" } }, + "op": "==", "right": { "set": [ { @@ -2312,6 +2392,7 @@ } ] }, + "op": "==", "right": { "set": [ { @@ -2343,6 +2424,7 @@ } ] }, + "op": "==", "right": { "set": [ { @@ -2398,6 +2480,7 @@ "left": { "meta": { "key": "random" } }, + "op": "==", "right": 1 } } diff --git a/tests/py/any/meta.t.json.output b/tests/py/any/meta.t.json.output index 398583f4..3c0c6c8c 100644 --- a/tests/py/any/meta.t.json.output +++ b/tests/py/any/meta.t.json.output @@ -5,6 +5,7 @@ "left": { "meta": { "key": "protocol" } }, + "op": "==", "right": { "set": [ "ip", @@ -44,6 +45,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": "8765:4321" } } @@ -56,6 +58,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": "8765:4321" } } @@ -68,6 +71,7 @@ "left": { "meta": { "key": "priority" } }, + "op": "==", "right": { "set": [ "aaaa:bbbb", @@ -86,6 +90,7 @@ "left": { "meta": { "key": "mark" } }, + "op": "==", "right": 4 } } @@ -98,6 +103,7 @@ "left": { "meta": { "key": "mark" } }, + "op": "==", "right": 50 } } @@ -146,6 +152,7 @@ "left": { "meta": { "key": "mark" } }, + "op": "==", "right": 16 } } @@ -207,6 +214,7 @@ "left": { "meta": { "key": "mark" } }, + "op": "==", "right": 2 } } @@ -232,6 +240,7 @@ "left": { "meta": { "key": "iifname" } }, + "op": "==", "right": { "set": [ "lo", @@ -267,6 +276,7 @@ "left": { "meta": { "key": "oifname" } }, + "op": "==", "right": { "set": [ "lo", @@ -284,6 +294,7 @@ "left": { "meta": { "key": "skuid" } }, + "op": "==", "right": { "set": [ 0, 1, 2 ] } @@ -319,6 +330,7 @@ "left": { "meta": { "key": "skuid" } }, + "op": "==", "right": 0 } } @@ -344,6 +356,7 @@ "left": { "meta": { "key": "skgid" } }, + "op": "==", "right": { "set": [ 0, 1, 2 ] } @@ -379,6 +392,7 @@ "left": { "meta": { "key": "skgid" } }, + "op": "==", "right": 0 } } @@ -500,6 +514,7 @@ "left": { "meta": { "key": "iifgroup" } }, + "op": "==", "right": "default" } } @@ -525,6 +540,7 @@ "left": { "meta": { "key": "oifgroup" } }, + "op": "==", "right": "default" } } @@ -560,6 +576,7 @@ } ] }, + "op": "==", "right": { "set": [ { diff --git a/tests/py/any/rawpayload.t.json b/tests/py/any/rawpayload.t.json index 9c513cba..22028ad8 100644 --- a/tests/py/any/rawpayload.t.json +++ b/tests/py/any/rawpayload.t.json @@ -5,6 +5,7 @@ "left": { "meta": { "key": "l4proto" } }, + "op": "==", "right": { "set": [ "tcp", @@ -23,6 +24,7 @@ "offset": 16 } }, + "op": "==", "right": { "set": [ 22, @@ -39,6 +41,7 @@ { "match": { "left": { "meta": { "key": "l4proto" } }, + "op": "==", "right": "tcp" } }, @@ -51,6 +54,7 @@ "offset": 16 } }, + "op": "==", "right": { "set": [ 22, @@ -73,6 +77,7 @@ "offset": 8 } }, + "op": "==", "right": 255 } } @@ -89,6 +94,7 @@ "offset": 8 } }, + "op": "==", "right": 0 } } @@ -105,6 +111,7 @@ "offset": 0 } }, + "op": "==", "right": 1 } } @@ -143,6 +150,7 @@ "offset": 0 } }, + "op": "==", "right": "0xfedcba987654321001234567890abcde" } } diff --git a/tests/py/any/rawpayload.t.json.output b/tests/py/any/rawpayload.t.json.output index 699d9ece..a234e99a 100644 --- a/tests/py/any/rawpayload.t.json.output +++ b/tests/py/any/rawpayload.t.json.output @@ -5,6 +5,7 @@ "left": { "meta": { "key": "l4proto" } }, + "op": "==", "right": { "set": [ 6, @@ -23,6 +24,7 @@ "offset": 16 } }, + "op": "==", "right": { "set": [ 22, @@ -44,6 +46,7 @@ "protocol": "tcp" } }, + "op": "==", "right": { "set": [ 22, diff --git a/tests/py/any/rt.t.json b/tests/py/any/rt.t.json index 146a8a01..955d12a3 100644 --- a/tests/py/any/rt.t.json +++ b/tests/py/any/rt.t.json @@ -7,6 +7,7 @@ "key": "classid" } }, + "op": "==", "right": "cosmos" } } -- cgit v1.2.3