[nft PATCH 8/9] JSON: Make match op mandatory, introduce 'in' operator

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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 <phil@xxxxxx>
---
 doc/libnftables-json.adoc             | 13 ++++-
 src/json.c                            | 17 ++----
 src/parser_json.c                     | 24 ++++----
 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 +
 tests/py/arp/arp.t.json               | 29 ++++++++++
 tests/py/arp/arp.t.json.output        |  8 +++
 tests/py/bridge/ether.t.json          | 13 +++++
 tests/py/bridge/ether.t.json.output   |  6 ++
 tests/py/bridge/icmpX.t.json          |  6 ++
 tests/py/bridge/icmpX.t.json.output   |  4 ++
 tests/py/bridge/meta.t.json           |  2 +
 tests/py/bridge/reject.t.json         |  4 ++
 tests/py/bridge/reject.t.json.output  | 13 +++++
 tests/py/bridge/vlan.t.json           | 33 +++++++++++
 tests/py/inet/ah.t.json               | 15 +++++
 tests/py/inet/comp.t.json             |  8 +++
 tests/py/inet/comp.t.json.output      |  4 ++
 tests/py/inet/ct.t.json               |  3 +
 tests/py/inet/ct.t.json.output        |  1 +
 tests/py/inet/dccp.t.json             | 10 ++++
 tests/py/inet/dccp.t.json.output      |  1 +
 tests/py/inet/esp.t.json              |  8 +++
 tests/py/inet/ether-ip.t.json         |  7 +++
 tests/py/inet/ether-ip.t.json.output  |  3 +
 tests/py/inet/ether.t.json            |  6 ++
 tests/py/inet/ether.t.json.output     |  2 +
 tests/py/inet/fib.t.json              |  4 ++
 tests/py/inet/icmp.t.json             | 10 ++++
 tests/py/inet/icmp.t.json.output      |  2 +
 tests/py/inet/icmpX.t.json            |  9 +++
 tests/py/inet/icmpX.t.json.output     |  7 +++
 tests/py/inet/ip.t.json               |  1 +
 tests/py/inet/ip_tcp.t.json           | 12 ++++
 tests/py/inet/ip_tcp.t.json.output    |  9 +++
 tests/py/inet/meta.t.json             | 15 +++++
 tests/py/inet/meta.t.json.output      |  3 +
 tests/py/inet/reject.t.json           |  5 ++
 tests/py/inet/reject.t.json.output    | 13 +++++
 tests/py/inet/rt.t.json               |  3 +
 tests/py/inet/rt.t.json.output        |  2 +
 tests/py/inet/sctp.t.json             | 16 ++++++
 tests/py/inet/sets.t.json             |  1 +
 tests/py/inet/socket.t.json           |  2 +
 tests/py/inet/tcp.t.json              | 48 ++++++++++++++++
 tests/py/inet/tcp.t.json.output       |  7 +++
 tests/py/inet/tcpopt.t.json           | 27 +++++++++
 tests/py/inet/tcpopt.t.json.output    |  2 +
 tests/py/inet/udp.t.json              | 19 ++++++
 tests/py/inet/udplite.t.json          | 13 +++++
 tests/py/ip/ct.t.json                 | 13 +++++
 tests/py/ip/ct.t.json.output          |  2 +
 tests/py/ip/dnat.t.json               |  9 +++
 tests/py/ip/ether.t.json              | 12 ++++
 tests/py/ip/ether.t.json.output       |  3 +
 tests/py/ip/icmp.t.json               | 44 ++++++++++++++
 tests/py/ip/icmp.t.json.output        |  2 +
 tests/py/ip/ip.t.json                 | 57 ++++++++++++++++++
 tests/py/ip/ip.t.json.output          |  6 ++
 tests/py/ip/ip_tcp.t.json             |  4 ++
 tests/py/ip/ip_tcp.t.json.output      |  3 +
 tests/py/ip/masquerade.t.json         | 18 ++++++
 tests/py/ip/masquerade.t.json.output  |  5 ++
 tests/py/ip/meta.t.json               |  8 +++
 tests/py/ip/meta.t.json.output        |  3 +
 tests/py/ip/objects.t.json            |  3 +
 tests/py/ip/redirect.t.json           | 27 +++++++++
 tests/py/ip/redirect.t.json.output    |  6 ++
 tests/py/ip/reject.t.json             |  1 +
 tests/py/ip/reject.t.json.output      |  1 +
 tests/py/ip/rt.t.json                 |  1 +
 tests/py/ip/sets.t.json               |  5 ++
 tests/py/ip/snat.t.json               |  7 +++
 tests/py/ip/snat.t.json.output        |  3 +
 tests/py/ip/tcp.t.json                |  3 +
 tests/py/ip/tcp.t.json.output         |  2 +
 tests/py/ip/tcpopt.t.json             | 26 +++++++++
 tests/py/ip/tcpopt.t.json.output      |  1 +
 tests/py/ip6/dnat.t.json              |  3 +
 tests/py/ip6/dst.t.json               | 10 ++++
 tests/py/ip6/dst.t.json.output        |  2 +
 tests/py/ip6/ether.t.json             | 12 ++++
 tests/py/ip6/ether.t.json.output      |  3 +
 tests/py/ip6/exthdr.t.json            |  8 +++
 tests/py/ip6/exthdr.t.json.output     |  4 ++
 tests/py/ip6/frag.t.json              | 20 +++++++
 tests/py/ip6/frag.t.json.output       |  4 ++
 tests/py/ip6/hbh.t.json               | 10 ++++
 tests/py/ip6/hbh.t.json.output        |  2 +
 tests/py/ip6/icmpv6.t.json            | 45 +++++++++++++++
 tests/py/ip6/icmpv6.t.json.output     |  3 +
 tests/py/ip6/ip6.t.json               | 68 ++++++++++++++++++++++
 tests/py/ip6/ip6.t.json.output        | 13 +++++
 tests/py/ip6/masquerade.t.json        | 18 ++++++
 tests/py/ip6/masquerade.t.json.output |  4 ++
 tests/py/ip6/meta.t.json              |  8 +++
 tests/py/ip6/meta.t.json.output       |  3 +
 tests/py/ip6/mh.t.json                | 21 +++++++
 tests/py/ip6/mh.t.json.output         |  2 +
 tests/py/ip6/redirect.t.json          | 25 ++++++++
 tests/py/ip6/redirect.t.json.output   |  6 ++
 tests/py/ip6/reject.t.json            |  1 +
 tests/py/ip6/reject.t.json.output     |  1 +
 tests/py/ip6/rt.t.json                | 19 ++++++
 tests/py/ip6/rt.t.json.output         |  2 +
 tests/py/ip6/rt0.t.json               |  1 +
 tests/py/ip6/sets.t.json              |  2 +
 tests/py/ip6/snat.t.json              |  2 +
 tests/py/ip6/srh.t.json               | 11 ++++
 tests/py/ip6/srh.t.json.output        |  1 +
 tests/py/ip6/tcpopt.t.json            | 26 +++++++++
 tests/py/ip6/tcpopt.t.json.output     |  1 +
 117 files changed, 1241 insertions(+), 27 deletions(-)

diff --git a/doc/libnftables-json.adoc b/doc/libnftables-json.adoc
index 309988bcf02af..c174a35487d46 100644
--- a/doc/libnftables-json.adoc
+++ b/doc/libnftables-json.adoc
@@ -577,8 +577,6 @@ processing continues with the next rule in the same chain.
 	Operator indicating the type of comparison.
 
 ==== OPERATORS
-The operator is usually optional and if omitted usually defaults to "==".
-Allowed operators are:
 
 [horizontal]
 *&*:: Binary AND
@@ -592,6 +590,17 @@ Allowed operators are:
 *>*:: Greater than
 *<=*:: Less than or equal to
 *>=*:: Greater than or equal to
+*in*:: Perform a lookup, i.e. test if bits on RHS are contained in LHS value
+
+Unlike with standard API, the operator is mandatory here. In standard API,
+missing operator may be resolved in two ways depending on the type of expression
+on RHS:
+
+- If RHS is a bitmask or a list of bitmasks, the expression resolves into a
+  binary operation with not equal operator, like this: '+LHS & RHS != 0+'.
+- In any other case, equal operator is simply inserted.
+
+For the non-trivial first case, JSON API supports *in* operator.
 
 === COUNTER
 [verse]
diff --git a/src/json.c b/src/json.c
index baeb0eaafdf6c..199ca0a308bcd 100644
--- a/src/json.c
+++ b/src/json.c
@@ -385,19 +385,10 @@ json_t *binop_expr_json(const struct expr *expr, struct output_ctx *octx)
 
 json_t *relational_expr_json(const struct expr *expr, struct output_ctx *octx)
 {
-	json_t *tmp;
-
-	tmp = json_pack("{s:o, s:o}",
-			"left", expr_print_json(expr->left, octx),
-			"right", expr_print_json(expr->right, octx));
-	/* XXX: check taken from binop_expr_print()
-	 *      if right is range, op is OP_EQ which in turn crashes nft if fed with it */
-	if (expr_op_symbols[expr->op] &&
-	    (expr->op != OP_EQ || must_print_eq_op(expr)))
-		json_object_set_new(tmp, "op",
-				    json_string(expr_op_symbols[expr->op]));
-
-	return json_pack("{s:o}", "match", tmp);
+	return json_pack("{s:{s:s, s:o, s:o}}", "match",
+			 "op", expr_op_symbols[expr->op] ? : "in",
+			 "left", expr_print_json(expr->left, octx),
+			 "right", expr_print_json(expr->right, octx));
 }
 
 json_t *range_expr_json(const struct expr *expr, struct output_ctx *octx)
diff --git a/src/parser_json.c b/src/parser_json.c
index cf41af9bd339c..404dbe9fa82a6 100644
--- a/src/parser_json.c
+++ b/src/parser_json.c
@@ -1348,24 +1348,24 @@ static struct stmt *json_parse_match_stmt(struct json_ctx *ctx,
 	const char *opstr = NULL;
 	enum ops op;
 
-	if (json_unpack_err(ctx, value, "{s:o, s:o}",
+	if (json_unpack_err(ctx, value, "{s:o, s:o, s:s}",
 			    "left", &jleft,
-			    "right", &jright))
+			    "right", &jright,
+			    "op", &opstr))
 		return NULL;
 
-	json_unpack(value, "{s:s}", "op", &opstr);
-	if (opstr) {
-		for (op = OP_INVALID; op < __OP_MAX; op++) {
-			if (expr_op_symbols[op] &&
-			    !strcmp(opstr, expr_op_symbols[op]))
-				break;
-		}
-		if (op == __OP_MAX) {
+	for (op = OP_INVALID; op < __OP_MAX; op++) {
+		if (expr_op_symbols[op] &&
+		    !strcmp(opstr, expr_op_symbols[op]))
+			break;
+	}
+	if (op == __OP_MAX) {
+		if (!strcmp(opstr, "in")) {
+			op = OP_IMPLICIT;
+		} else {
 			json_error(ctx, "Unknown relational op '%s'.", opstr);
 			return NULL;
 		}
-	} else {
-		op = OP_IMPLICIT;
 	}
 
 	left = json_parse_expr(ctx, jleft);
diff --git a/tests/py/any/ct.t.json b/tests/py/any/ct.t.json
index 2fb4e7270c974..45e48f224957f 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 8f0ca93c13427..49d51771de9c1 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 00a4f237ce712..2cf91cdae60e8 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 398583f444d3c..3c0c6c8c644f9 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 9c513cba5719d..22028ad82300e 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 699d9ecebed4f..a234e99a00b18 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 146a8a0130913..955d12a3d8915 100644
--- a/tests/py/any/rt.t.json
+++ b/tests/py/any/rt.t.json
@@ -7,6 +7,7 @@
                     "key": "classid"
                 }
             },
+	    "op": "==",
             "right": "cosmos"
         }
     }
diff --git a/tests/py/arp/arp.t.json b/tests/py/arp/arp.t.json
index 7f5c3ca254636..4b0439e6edd58 100644
--- a/tests/py/arp/arp.t.json
+++ b/tests/py/arp/arp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -39,6 +40,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -70,6 +72,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -105,6 +108,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -150,6 +154,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -189,6 +194,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "0x0800"
         }
     }
@@ -204,6 +210,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -235,6 +242,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -270,6 +278,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -315,6 +324,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -354,6 +364,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -385,6 +396,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -420,6 +432,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -465,6 +478,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -504,6 +518,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "nak",
@@ -555,6 +570,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "request"
         }
     }
@@ -570,6 +586,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "reply"
         }
     }
@@ -585,6 +602,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "rrequest"
         }
     }
@@ -600,6 +618,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "rreply"
         }
     }
@@ -615,6 +634,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "inrequest"
         }
     }
@@ -630,6 +650,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "inreply"
         }
     }
@@ -645,6 +666,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "nak"
         }
     }
@@ -660,6 +682,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "reply"
         }
     }
@@ -800,6 +823,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "invalid"
         }
     },
@@ -811,6 +835,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "0x0800"
         }
     },
@@ -822,6 +847,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -833,6 +859,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -844,6 +871,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": 4
         }
     },
@@ -856,6 +884,7 @@
                     "offset": 192
                 }
             },
+	    "op": "==",
             "right": "0xc0a88f10"
         }
     },
diff --git a/tests/py/arp/arp.t.json.output b/tests/py/arp/arp.t.json.output
index 7ee4dbfaa6668..4053d94763de5 100644
--- a/tests/py/arp/arp.t.json.output
+++ b/tests/py/arp/arp.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     }
@@ -23,6 +24,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "request",
@@ -71,6 +73,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "invalid"
         }
     },
@@ -82,6 +85,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -93,6 +97,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     },
@@ -104,6 +109,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -115,6 +121,7 @@
                     "protocol": "arp"
                 }
             },
+	    "op": "==",
             "right": 4
         }
     },
@@ -127,6 +134,7 @@
                     "offset": 192
                 }
             },
+	    "op": "==",
             "right": 3232272144
         }
     },
diff --git a/tests/py/bridge/ether.t.json b/tests/py/bridge/ether.t.json
index d9a0066bec3eb..485ceee4f709a 100644
--- a/tests/py/bridge/ether.t.json
+++ b/tests/py/bridge/ether.t.json
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -16,6 +17,7 @@
             "left": {
                 "meta": { "key": "iiftype" }
             },
+	    "op": "==",
             "right": "ether"
         }
     },
@@ -27,6 +29,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -38,6 +41,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -56,6 +60,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -67,6 +72,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -78,6 +84,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     }
@@ -93,6 +100,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -104,6 +112,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -115,6 +124,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     }
@@ -130,6 +140,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -141,6 +152,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -159,6 +171,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:01:02:03:04:05"
         }
     },
diff --git a/tests/py/bridge/ether.t.json.output b/tests/py/bridge/ether.t.json.output
index 1c3cb8dc3a9b1..05e568f6592de 100644
--- a/tests/py/bridge/ether.t.json.output
+++ b/tests/py/bridge/ether.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -30,6 +32,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -48,6 +51,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -59,6 +63,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -70,6 +75,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     }
diff --git a/tests/py/bridge/icmpX.t.json b/tests/py/bridge/icmpX.t.json
index 830bb799a6eca..2dd341ecd6970 100644
--- a/tests/py/bridge/icmpX.t.json
+++ b/tests/py/bridge/icmpX.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "icmp"
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -34,6 +36,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -49,6 +52,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "icmpv6"
         }
     },
@@ -60,6 +64,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -75,6 +80,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
diff --git a/tests/py/bridge/icmpX.t.json.output b/tests/py/bridge/icmpX.t.json.output
index ecfaa62f1c353..8cf467911cc59 100644
--- a/tests/py/bridge/icmpX.t.json.output
+++ b/tests/py/bridge/icmpX.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -34,6 +36,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": 58
         }
     },
@@ -45,6 +48,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
diff --git a/tests/py/bridge/meta.t.json b/tests/py/bridge/meta.t.json
index 0c63e26ee1072..5df4773aa1e73 100644
--- a/tests/py/bridge/meta.t.json
+++ b/tests/py/bridge/meta.t.json
@@ -5,6 +5,7 @@
             "left": {
                 "meta": { "key": "obrname" }
             },
+	    "op": "==",
             "right": "br0"
         }
     }
@@ -17,6 +18,7 @@
             "left": {
                 "meta": { "key": "ibrname" }
             },
+	    "op": "==",
             "right": "br0"
         }
     }
diff --git a/tests/py/bridge/reject.t.json b/tests/py/bridge/reject.t.json
index 0ced129cb3e48..d20a1d8b5f9eb 100644
--- a/tests/py/bridge/reject.t.json
+++ b/tests/py/bridge/reject.t.json
@@ -115,6 +115,7 @@
             "left": {
                 "meta": { "key": "mark" }
             },
+	    "op": "==",
             "right": 12345
         }
     },
@@ -126,6 +127,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     },
@@ -153,6 +155,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     },
@@ -171,6 +174,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip6"
         }
     },
diff --git a/tests/py/bridge/reject.t.json.output b/tests/py/bridge/reject.t.json.output
index a83feabcebdbb..08dfaf6a1778f 100644
--- a/tests/py/bridge/reject.t.json.output
+++ b/tests/py/bridge/reject.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     },
@@ -29,6 +30,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     },
@@ -50,6 +52,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     },
@@ -71,6 +74,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     },
@@ -89,6 +93,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     },
@@ -110,6 +115,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     },
@@ -131,6 +137,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     },
@@ -152,6 +159,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip6"
         }
     },
@@ -173,6 +181,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip6"
         }
     },
@@ -194,6 +203,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip6"
         }
     },
@@ -215,6 +225,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip6"
         }
     },
@@ -230,6 +241,7 @@
             "left": {
                 "meta": { "key": "mark" }
             },
+	    "op": "==",
             "right": 12345
         }
     },
@@ -241,6 +253,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
diff --git a/tests/py/bridge/vlan.t.json b/tests/py/bridge/vlan.t.json
index 7facb61bd5899..1a654640db98a 100644
--- a/tests/py/bridge/vlan.t.json
+++ b/tests/py/bridge/vlan.t.json
@@ -8,6 +8,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 4094
         }
     }
@@ -23,6 +24,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -38,6 +40,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 4094
         }
     },
@@ -49,6 +52,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -64,6 +68,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 4094
         }
     },
@@ -91,6 +96,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 4094
         }
     },
@@ -102,6 +108,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -117,6 +124,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 4094
         }
     },
@@ -128,6 +136,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -139,6 +148,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 7
         }
     }
@@ -154,6 +164,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 4094
         }
     },
@@ -165,6 +176,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -176,6 +188,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 3
         }
     }
@@ -191,6 +204,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 4094
         }
     }
@@ -206,6 +220,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -221,6 +236,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 4094
         }
     },
@@ -232,6 +248,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -247,6 +264,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 4094
         }
     },
@@ -258,6 +276,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -273,6 +292,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 4094
         }
     },
@@ -284,6 +304,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -299,6 +320,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -310,6 +332,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "10.0.0.1"
         }
     }
@@ -325,6 +348,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -336,6 +360,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "prefix": {
                     "addr": "10.0.0.0",
@@ -356,6 +381,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -367,6 +393,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "prefix": {
                     "addr": "10.0.0.0",
@@ -383,6 +410,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     }
@@ -398,6 +426,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -409,6 +438,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "prefix": {
                     "addr": "10.0.0.0",
@@ -425,6 +455,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     }
@@ -440,6 +471,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     1,
@@ -459,6 +491,7 @@
                     "protocol": "vlan"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 1, 3 ]
             }
diff --git a/tests/py/inet/ah.t.json b/tests/py/inet/ah.t.json
index 4f3fd74345c79..4efdb0dd1395e 100644
--- a/tests/py/inet/ah.t.json
+++ b/tests/py/inet/ah.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 11, 23 ]
             }
@@ -43,6 +44,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 11, 23 ] }
@@ -82,6 +84,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     11,
@@ -125,6 +128,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -156,6 +160,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -191,6 +196,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     23,
@@ -232,6 +238,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -271,6 +278,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": 111
         }
     }
@@ -302,6 +310,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 111, 222 ]
             }
@@ -337,6 +346,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     111,
@@ -378,6 +388,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 111, 122 ] }
@@ -417,6 +428,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": 123
         }
     }
@@ -448,6 +460,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     23,
@@ -491,6 +504,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 23, 33 ] }
@@ -530,6 +544,7 @@
                     "protocol": "ah"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 23, 33 ]
             }
diff --git a/tests/py/inet/comp.t.json b/tests/py/inet/comp.t.json
index 56fccafb6cb9b..b9b24f98c7abf 100644
--- a/tests/py/inet/comp.t.json
+++ b/tests/py/inet/comp.t.json
@@ -24,6 +24,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": "0x0"
         }
     }
@@ -55,6 +56,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "0x33", "0x45" ]
             }
@@ -90,6 +92,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "0x33",
@@ -135,6 +138,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ "0x33", "0x55" ] }
@@ -174,6 +178,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -205,6 +210,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -240,6 +246,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -285,6 +292,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
diff --git a/tests/py/inet/comp.t.json.output b/tests/py/inet/comp.t.json.output
index 215179984cf02..435c3de4afbef 100644
--- a/tests/py/inet/comp.t.json.output
+++ b/tests/py/inet/comp.t.json.output
@@ -24,6 +24,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -55,6 +56,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 51, 69 ]
             }
@@ -90,6 +92,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     51,
@@ -135,6 +138,7 @@
                     "protocol": "comp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 51, 85 ] }
diff --git a/tests/py/inet/ct.t.json b/tests/py/inet/ct.t.json
index 9b54e1d00abd8..02bb2d271577d 100644
--- a/tests/py/inet/ct.t.json
+++ b/tests/py/inet/ct.t.json
@@ -5,6 +5,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -16,6 +17,7 @@
                     "key": "saddr"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     }
@@ -32,6 +34,7 @@
                     "key": "saddr"
                 }
             },
+	    "op": "==",
             "right": "::1"
         }
     }
diff --git a/tests/py/inet/ct.t.json.output b/tests/py/inet/ct.t.json.output
index 5605ebcf406fa..8b71519e9be73 100644
--- a/tests/py/inet/ct.t.json.output
+++ b/tests/py/inet/ct.t.json.output
@@ -9,6 +9,7 @@
                     "key": "saddr"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     }
diff --git a/tests/py/inet/dccp.t.json b/tests/py/inet/dccp.t.json
index 7d87966f4e5ed..9260fbc5ee00f 100644
--- a/tests/py/inet/dccp.t.json
+++ b/tests/py/inet/dccp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 21, 35 ]
             }
@@ -43,6 +44,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     23,
@@ -86,6 +88,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 20, 50 ] }
@@ -105,6 +108,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "ftp-data", "re-mail-ck" ]
             }
@@ -122,6 +126,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 20, 50 ]
             }
@@ -139,6 +144,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 20, 50 ] }
@@ -178,6 +184,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     23,
@@ -221,6 +228,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 20, 50 ] }
@@ -260,6 +268,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "request",
@@ -317,6 +326,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": "request"
         }
     }
diff --git a/tests/py/inet/dccp.t.json.output b/tests/py/inet/dccp.t.json.output
index 889e42091f91f..146741dd1d75e 100644
--- a/tests/py/inet/dccp.t.json.output
+++ b/tests/py/inet/dccp.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "dccp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 20, 50 ]
             }
diff --git a/tests/py/inet/esp.t.json b/tests/py/inet/esp.t.json
index e6f59a65dee37..84ea9eeaf2fdf 100644
--- a/tests/py/inet/esp.t.json
+++ b/tests/py/inet/esp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "esp"
                 }
             },
+	    "op": "==",
             "right": 100
         }
     }
@@ -39,6 +40,7 @@
                     "protocol": "esp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 111, 222 ]
             }
@@ -74,6 +76,7 @@
                     "protocol": "esp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     100,
@@ -115,6 +118,7 @@
                     "protocol": "esp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 100, 102 ] }
@@ -134,6 +138,7 @@
                     "protocol": "esp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -149,6 +154,7 @@
                     "protocol": "esp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 22, 24 ]
             }
@@ -184,6 +190,7 @@
                     "protocol": "esp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     22,
@@ -225,6 +232,7 @@
                     "protocol": "esp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 22, 25 ] }
diff --git a/tests/py/inet/ether-ip.t.json b/tests/py/inet/ether-ip.t.json
index b5356bb3667b6..8f35b3d0d6d68 100644
--- a/tests/py/inet/ether-ip.t.json
+++ b/tests/py/inet/ether-ip.t.json
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -16,6 +17,7 @@
             "left": {
                 "meta": { "key": "iiftype" }
             },
+	    "op": "==",
             "right": "ether"
         }
     },
@@ -27,6 +29,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -38,6 +41,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -56,6 +60,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -67,6 +72,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -78,6 +84,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     }
diff --git a/tests/py/inet/ether-ip.t.json.output b/tests/py/inet/ether-ip.t.json.output
index 2ae5655a2afe4..f659113d26cda 100644
--- a/tests/py/inet/ether-ip.t.json.output
+++ b/tests/py/inet/ether-ip.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -30,6 +32,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
diff --git a/tests/py/inet/ether.t.json b/tests/py/inet/ether.t.json
index 69b75ac0a8a57..84b184c71ac34 100644
--- a/tests/py/inet/ether.t.json
+++ b/tests/py/inet/ether.t.json
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -16,6 +17,7 @@
             "left": {
                 "meta": { "key": "iiftype" }
             },
+	    "op": "==",
             "right": "ether"
         }
     },
@@ -27,6 +29,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -45,6 +48,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -56,6 +60,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -74,6 +79,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
diff --git a/tests/py/inet/ether.t.json.output b/tests/py/inet/ether.t.json.output
index 19e3865b07501..9ae8c44276d69 100644
--- a/tests/py/inet/ether.t.json.output
+++ b/tests/py/inet/ether.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
diff --git a/tests/py/inet/fib.t.json b/tests/py/inet/fib.t.json
index 92bb5ec098386..c298915627641 100644
--- a/tests/py/inet/fib.t.json
+++ b/tests/py/inet/fib.t.json
@@ -30,6 +30,7 @@
                     "result": "oifname"
                 }
             },
+	    "op": "==",
             "right": "lo"
         }
     }
@@ -48,6 +49,7 @@
                     "result": "type"
                 }
             },
+	    "op": "==",
             "right": "local"
         }
     }
@@ -104,6 +106,7 @@
                     "result": "oif"
                 }
             },
+	    "op": "==",
             "right": true
         }
     }
@@ -121,6 +124,7 @@
                     "result": "oif"
                 }
             },
+	    "op": "==",
             "right": false
         }
     }
diff --git a/tests/py/inet/icmp.t.json b/tests/py/inet/icmp.t.json
index efc4042859760..64be2b365331c 100644
--- a/tests/py/inet/icmp.t.json
+++ b/tests/py/inet/icmp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -23,6 +24,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -33,6 +35,7 @@
     {
         "match": {
             "left": { "meta": { "key": "nfproto" } },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -44,6 +47,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -54,6 +58,7 @@
     {
         "match": {
             "left": { "meta": { "key": "nfproto" } },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -65,6 +70,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -75,6 +81,7 @@
     {
         "match": {
             "left": { "meta": { "key": "nfproto" } },
+	    "op": "==",
             "right": "ipv6"
         }
     },
@@ -86,6 +93,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -96,6 +104,7 @@
     {
         "match": {
             "left": { "meta": { "key": "nfproto" } },
+	    "op": "==",
             "right": "ipv6"
         }
     },
@@ -107,6 +116,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
diff --git a/tests/py/inet/icmp.t.json.output b/tests/py/inet/icmp.t.json.output
index a5ee48bee6403..062c82f557946 100644
--- a/tests/py/inet/icmp.t.json.output
+++ b/tests/py/inet/icmp.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -23,6 +24,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
diff --git a/tests/py/inet/icmpX.t.json b/tests/py/inet/icmpX.t.json
index b9905e9d00e9f..8e130917cb8d8 100644
--- a/tests/py/inet/icmpX.t.json
+++ b/tests/py/inet/icmpX.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "icmp"
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -34,6 +36,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -49,6 +52,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "icmpv6"
         }
     },
@@ -60,6 +64,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -75,6 +80,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -90,6 +96,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "ipv6-icmp"
         }
     },
@@ -98,6 +105,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": "ipv6-icmp"
         }
     },
@@ -109,6 +117,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
diff --git a/tests/py/inet/icmpX.t.json.output b/tests/py/inet/icmpX.t.json.output
index 15fdd15a2501a..9b0bf9f75ed5a 100644
--- a/tests/py/inet/icmpX.t.json.output
+++ b/tests/py/inet/icmpX.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -34,6 +36,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": 58
         }
     },
@@ -45,6 +48,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -60,6 +64,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 58
         }
     },
@@ -68,6 +73,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": 58
         }
     },
@@ -79,6 +85,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "destination-unreachable"
         }
     }
diff --git a/tests/py/inet/ip.t.json b/tests/py/inet/ip.t.json
index 4b2efd54ef6a2..638fb7d8ac716 100644
--- a/tests/py/inet/ip.t.json
+++ b/tests/py/inet/ip.t.json
@@ -24,6 +24,7 @@
                     }
                 ]
             },
+	    "op": "==",
             "right": {
                 "set": [
                     {
diff --git a/tests/py/inet/ip_tcp.t.json b/tests/py/inet/ip_tcp.t.json
index e2f918aaf6069..87cb9bff346f7 100644
--- a/tests/py/inet/ip_tcp.t.json
+++ b/tests/py/inet/ip_tcp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -34,6 +36,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     },
@@ -45,6 +48,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -56,6 +60,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -71,6 +76,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     },
@@ -85,6 +91,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -96,6 +103,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -111,6 +119,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     },
@@ -125,6 +134,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -140,6 +150,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     },
@@ -151,6 +162,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
diff --git a/tests/py/inet/ip_tcp.t.json.output b/tests/py/inet/ip_tcp.t.json.output
index bd6a8620eacfd..4a6a05d7f10aa 100644
--- a/tests/py/inet/ip_tcp.t.json.output
+++ b/tests/py/inet/ip_tcp.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -34,6 +36,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -45,6 +48,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -60,6 +64,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -74,6 +79,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -85,6 +91,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -100,6 +107,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -114,6 +122,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
diff --git a/tests/py/inet/meta.t.json b/tests/py/inet/meta.t.json
index 5bf8a54777269..77f46ab6ab9e5 100644
--- a/tests/py/inet/meta.t.json
+++ b/tests/py/inet/meta.t.json
@@ -5,6 +5,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     }
@@ -17,6 +18,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv6"
         }
     }
@@ -29,6 +31,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "ipv4",
@@ -64,6 +67,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv6"
         }
     },
@@ -75,6 +79,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -87,6 +92,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -98,6 +104,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -110,6 +117,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -121,6 +129,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     }
@@ -133,6 +142,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv6"
         }
     },
@@ -141,6 +151,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": "tcp"
         }
     }
@@ -153,6 +164,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -167,6 +179,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     }
@@ -179,6 +192,7 @@
             "left": {
                 "meta": { "key": "secpath" }
             },
+	    "op": "==",
             "right": true
         }
     }
@@ -191,6 +205,7 @@
             "left": {
                 "meta": { "key": "secpath" }
             },
+	    "op": "==",
             "right": false
         }
     }
diff --git a/tests/py/inet/meta.t.json.output b/tests/py/inet/meta.t.json.output
index 565e2fa06c67a..d0bb0a610e4e0 100644
--- a/tests/py/inet/meta.t.json.output
+++ b/tests/py/inet/meta.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     }
@@ -20,6 +21,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv6"
         }
     },
@@ -28,6 +30,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": 6
         }
     }
diff --git a/tests/py/inet/reject.t.json b/tests/py/inet/reject.t.json
index b63cb7df7e05a..bfa94f8468b7e 100644
--- a/tests/py/inet/reject.t.json
+++ b/tests/py/inet/reject.t.json
@@ -115,6 +115,7 @@
             "left": {
                 "meta": { "key": "mark" }
             },
+	    "op": "==",
             "right": 12345
         }
     },
@@ -139,6 +140,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -154,6 +156,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv6"
         }
     },
@@ -209,6 +212,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -227,6 +231,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv6"
         }
     },
diff --git a/tests/py/inet/reject.t.json.output b/tests/py/inet/reject.t.json.output
index 46875434046f9..73846fb0725e1 100644
--- a/tests/py/inet/reject.t.json.output
+++ b/tests/py/inet/reject.t.json.output
@@ -5,6 +5,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -23,6 +24,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -41,6 +43,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -59,6 +62,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -74,6 +78,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -92,6 +97,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -110,6 +116,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -128,6 +135,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv6"
         }
     },
@@ -146,6 +154,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv6"
         }
     },
@@ -164,6 +173,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv6"
         }
     },
@@ -182,6 +192,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv6"
         }
     },
@@ -197,6 +208,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -205,6 +217,7 @@
             "left": {
                 "meta": { "key": "mark" }
             },
+	    "op": "==",
             "right": 12345
         }
     },
diff --git a/tests/py/inet/rt.t.json b/tests/py/inet/rt.t.json
index e81bcfd83270e..6dbea413e2aab 100644
--- a/tests/py/inet/rt.t.json
+++ b/tests/py/inet/rt.t.json
@@ -5,6 +5,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -15,6 +16,7 @@
                     "key": "nexthop"
                 }
             },
+	    "op": "==",
             "right": "192.168.0.1"
         }
     }
@@ -30,6 +32,7 @@
                     "key": "nexthop"
                 }
             },
+	    "op": "==",
             "right": "fd00::1"
         }
     }
diff --git a/tests/py/inet/rt.t.json.output b/tests/py/inet/rt.t.json.output
index de765bd954d57..382ef87e31faf 100644
--- a/tests/py/inet/rt.t.json.output
+++ b/tests/py/inet/rt.t.json.output
@@ -5,6 +5,7 @@
             "left": {
                 "meta": { "key": "nfproto" }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     },
@@ -16,6 +17,7 @@
                     "key": "nexthop"
                 }
             },
+	    "op": "==",
             "right": "192.168.0.1"
         }
     }
diff --git a/tests/py/inet/sctp.t.json b/tests/py/inet/sctp.t.json
index f382c6d27f9de..2684b0349a71b 100644
--- a/tests/py/inet/sctp.t.json
+++ b/tests/py/inet/sctp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": 23
         }
     }
@@ -39,6 +40,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 23, 44 ]
             }
@@ -74,6 +76,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     23,
@@ -117,6 +120,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 23, 44 ] }
@@ -156,6 +160,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": 23
         }
     }
@@ -187,6 +192,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 23, 44 ]
             }
@@ -222,6 +228,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     23,
@@ -265,6 +272,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 23, 44 ] }
@@ -304,6 +312,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": 1111
         }
     }
@@ -335,6 +344,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 21, 333 ]
             }
@@ -370,6 +380,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     22,
@@ -413,6 +424,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 22, 44 ] }
@@ -452,6 +464,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -483,6 +496,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -518,6 +532,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -563,6 +578,7 @@
                     "protocol": "sctp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
diff --git a/tests/py/inet/sets.t.json b/tests/py/inet/sets.t.json
index 34f375880d600..bcb638f2664d5 100644
--- a/tests/py/inet/sets.t.json
+++ b/tests/py/inet/sets.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "@set1"
         }
     },
diff --git a/tests/py/inet/socket.t.json b/tests/py/inet/socket.t.json
index 235c3e94b84c8..d672c500f3cfe 100644
--- a/tests/py/inet/socket.t.json
+++ b/tests/py/inet/socket.t.json
@@ -7,6 +7,7 @@
                     "key": "transparent"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -21,6 +22,7 @@
                     "key": "transparent"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
diff --git a/tests/py/inet/tcp.t.json b/tests/py/inet/tcp.t.json
index 48304d6ae3abe..babe592089259 100644
--- a/tests/py/inet/tcp.t.json
+++ b/tests/py/inet/tcp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -39,6 +40,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -74,6 +76,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -119,6 +122,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -158,6 +162,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "telnet",
@@ -242,6 +247,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     22,
@@ -287,6 +293,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -318,6 +325,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -353,6 +361,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -398,6 +407,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -467,6 +477,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 8080
         }
     },
@@ -485,6 +496,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 1024
         }
     },
@@ -496,6 +508,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -511,6 +524,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 1024
         }
     },
@@ -522,6 +536,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -533,6 +548,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -548,6 +564,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     },
@@ -559,6 +576,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 1024
         }
     },
@@ -570,6 +588,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -585,6 +604,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     },
@@ -596,6 +616,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     1024,
@@ -612,6 +633,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -627,6 +649,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -658,6 +681,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -693,6 +717,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -738,6 +763,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -777,6 +803,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 42949672
         }
     },
@@ -795,6 +822,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -826,6 +854,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -861,6 +890,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -906,6 +936,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -945,6 +976,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "fin",
@@ -1000,6 +1032,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "in",
             "right": "cwr"
         }
     }
@@ -1101,6 +1134,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22222
         }
     }
@@ -1116,6 +1150,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -1147,6 +1182,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -1182,6 +1218,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -1227,6 +1264,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -1266,6 +1304,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -1297,6 +1336,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -1332,6 +1372,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -1377,6 +1418,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -1416,6 +1458,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 1234
         }
     },
@@ -1434,6 +1477,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -1465,6 +1509,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -1500,6 +1545,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -1545,6 +1591,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -1584,6 +1631,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 8
         }
     }
diff --git a/tests/py/inet/tcp.t.json.output b/tests/py/inet/tcp.t.json.output
index cf1ed0f168a80..143490f7322d2 100644
--- a/tests/py/inet/tcp.t.json.output
+++ b/tests/py/inet/tcp.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     23,
@@ -32,6 +33,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 1024
         }
     },
@@ -43,6 +45,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -54,6 +57,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -69,6 +73,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     1022,
@@ -85,6 +90,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -96,6 +102,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
diff --git a/tests/py/inet/tcpopt.t.json b/tests/py/inet/tcpopt.t.json
index 431ee0212c91a..45e9c29353de3 100644
--- a/tests/py/inet/tcpopt.t.json
+++ b/tests/py/inet/tcpopt.t.json
@@ -8,6 +8,7 @@
                     "name": "eol"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -23,6 +24,7 @@
                     "name": "noop"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -38,6 +40,7 @@
                     "name": "maxseg"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -53,6 +56,7 @@
                     "name": "maxseg"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -68,6 +72,7 @@
                     "name": "maxseg"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -83,6 +88,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -98,6 +104,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -113,6 +120,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -128,6 +136,7 @@
                     "name": "sack-permitted"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -143,6 +152,7 @@
                     "name": "sack-permitted"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -158,6 +168,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -173,6 +184,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -188,6 +200,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -203,6 +216,7 @@
                     "name": "sack0"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -218,6 +232,7 @@
                     "name": "sack1"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -233,6 +248,7 @@
                     "name": "sack2"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -248,6 +264,7 @@
                     "name": "sack3"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -263,6 +280,7 @@
                     "name": "sack0"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -278,6 +296,7 @@
                     "name": "sack1"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -293,6 +312,7 @@
                     "name": "sack2"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -308,6 +328,7 @@
                     "name": "sack3"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -323,6 +344,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -338,6 +360,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -353,6 +376,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -368,6 +392,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -382,6 +407,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": true
         }
     }
@@ -396,6 +422,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": false
         }
     }
diff --git a/tests/py/inet/tcpopt.t.json.output b/tests/py/inet/tcpopt.t.json.output
index 302108c25929c..ad0d25f4d56c6 100644
--- a/tests/py/inet/tcpopt.t.json.output
+++ b/tests/py/inet/tcpopt.t.json.output
@@ -8,6 +8,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -23,6 +24,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
diff --git a/tests/py/inet/udp.t.json b/tests/py/inet/udp.t.json
index 5ea073d7042b0..f882664083413 100644
--- a/tests/py/inet/udp.t.json
+++ b/tests/py/inet/udp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 80
         }
     },
@@ -45,6 +46,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 50, 70 ]
             }
@@ -86,6 +88,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     49,
@@ -133,6 +136,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 12, 40 ] }
@@ -172,6 +176,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 80
         }
     },
@@ -209,6 +214,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 70, 75 ]
             }
@@ -250,6 +256,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     49,
@@ -297,6 +304,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 70, 75 ] }
@@ -342,6 +350,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 6666
         }
     }
@@ -373,6 +382,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 50, 65 ]
             }
@@ -414,6 +424,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     50,
@@ -461,6 +472,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 35, 50 ] }
@@ -500,6 +512,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 6666
         }
     },
@@ -542,6 +555,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -573,6 +587,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -608,6 +623,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -653,6 +669,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -689,6 +706,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -712,6 +730,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
diff --git a/tests/py/inet/udplite.t.json b/tests/py/inet/udplite.t.json
index 75e7257903500..f56bee47fe030 100644
--- a/tests/py/inet/udplite.t.json
+++ b/tests/py/inet/udplite.t.json
@@ -8,6 +8,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": 80
         }
     },
@@ -45,6 +46,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 50, 70 ]
             }
@@ -86,6 +88,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     49,
@@ -133,6 +136,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 12, 40 ] }
@@ -172,6 +176,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": 80
         }
     },
@@ -209,6 +214,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 70, 75 ]
             }
@@ -250,6 +256,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     49,
@@ -297,6 +304,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 70, 75 ] }
@@ -342,6 +350,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": 6666
         }
     },
@@ -384,6 +393,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -415,6 +425,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -450,6 +461,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -495,6 +507,7 @@
                     "protocol": "udplite"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
diff --git a/tests/py/ip/ct.t.json b/tests/py/ip/ct.t.json
index 6314d5b254cc2..cc3ab69270cb2 100644
--- a/tests/py/ip/ct.t.json
+++ b/tests/py/ip/ct.t.json
@@ -9,6 +9,7 @@
                     "key": "saddr"
                 }
             },
+	    "op": "==",
             "right": "192.168.0.1"
         }
     }
@@ -25,6 +26,7 @@
                     "key": "saddr"
                 }
             },
+	    "op": "==",
             "right": "192.168.0.1"
         }
     }
@@ -41,6 +43,7 @@
                     "key": "daddr"
                 }
             },
+	    "op": "==",
             "right": "192.168.0.1"
         }
     }
@@ -57,6 +60,7 @@
                     "key": "daddr"
                 }
             },
+	    "op": "==",
             "right": "192.168.0.1"
         }
     }
@@ -73,6 +77,7 @@
                     "key": "saddr"
                 }
             },
+	    "op": "==",
             "right": {
                 "prefix": {
                     "addr": "192.168.1.0",
@@ -94,6 +99,7 @@
                     "key": "saddr"
                 }
             },
+	    "op": "==",
             "right": {
                 "prefix": {
                     "addr": "192.168.1.0",
@@ -115,6 +121,7 @@
                     "key": "daddr"
                 }
             },
+	    "op": "==",
             "right": {
                 "prefix": {
                     "addr": "192.168.1.0",
@@ -136,6 +143,7 @@
                     "key": "daddr"
                 }
             },
+	    "op": "==",
             "right": {
                 "prefix": {
                     "addr": "192.168.1.0",
@@ -155,6 +163,7 @@
                     "key": "l3proto"
                 }
             },
+	    "op": "==",
             "right": "ipv4"
         }
     }
@@ -169,6 +178,7 @@
                     "key": "protocol"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -180,6 +190,7 @@
                     "key": "proto-dst"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -195,6 +206,7 @@
                     "key": "protocol"
                 }
             },
+	    "op": "==",
             "right": 17
         }
     },
@@ -206,6 +218,7 @@
                     "key": "proto-src"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     }
diff --git a/tests/py/ip/ct.t.json.output b/tests/py/ip/ct.t.json.output
index 2429ec69c94f1..cf4abaec6789e 100644
--- a/tests/py/ip/ct.t.json.output
+++ b/tests/py/ip/ct.t.json.output
@@ -7,6 +7,7 @@
                     "key": "protocol"
                 }
             },
+	    "op": "==",
             "right": 17
         }
     },
@@ -18,6 +19,7 @@
                     "key": "proto-src"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     }
diff --git a/tests/py/ip/dnat.t.json b/tests/py/ip/dnat.t.json
index c4ae8302e6514..0481a36837529 100644
--- a/tests/py/ip/dnat.t.json
+++ b/tests/py/ip/dnat.t.json
@@ -5,6 +5,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -16,6 +17,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 80, 90 ]
             }
@@ -35,6 +37,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -66,6 +69,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -77,6 +81,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     23,
@@ -100,6 +105,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -135,6 +141,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -166,6 +173,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -177,6 +185,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 81
         }
     },
diff --git a/tests/py/ip/ether.t.json b/tests/py/ip/ether.t.json
index 8890f1530779f..355c7fc5278ec 100644
--- a/tests/py/ip/ether.t.json
+++ b/tests/py/ip/ether.t.json
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -16,6 +17,7 @@
             "left": {
                 "meta": { "key": "iiftype" }
             },
+	    "op": "==",
             "right": "ether"
         }
     },
@@ -27,6 +29,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -38,6 +41,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -56,6 +60,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -67,6 +72,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -78,6 +84,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     }
@@ -93,6 +100,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -104,6 +112,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -115,6 +124,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     }
@@ -130,6 +140,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -141,6 +152,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
diff --git a/tests/py/ip/ether.t.json.output b/tests/py/ip/ether.t.json.output
index 811604e5b0b2b..1e5dd50d556a1 100644
--- a/tests/py/ip/ether.t.json.output
+++ b/tests/py/ip/ether.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.2.3.4"
         }
     },
@@ -30,6 +32,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
diff --git a/tests/py/ip/icmp.t.json b/tests/py/ip/icmp.t.json
index 89fe754cea368..918621cb99027 100644
--- a/tests/py/ip/icmp.t.json
+++ b/tests/py/ip/icmp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-reply"
         }
     },
@@ -26,6 +27,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "destination-unreachable"
         }
     },
@@ -44,6 +46,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "source-quench"
         }
     },
@@ -62,6 +65,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "redirect"
         }
     },
@@ -80,6 +84,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     },
@@ -98,6 +103,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "time-exceeded"
         }
     },
@@ -116,6 +122,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "parameter-problem"
         }
     },
@@ -134,6 +141,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "timestamp-request"
         }
     },
@@ -152,6 +160,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "timestamp-reply"
         }
     },
@@ -170,6 +179,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "info-request"
         }
     },
@@ -188,6 +198,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "info-reply"
         }
     },
@@ -206,6 +217,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "address-mask-request"
         }
     },
@@ -224,6 +236,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "address-mask-reply"
         }
     },
@@ -242,6 +255,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "router-advertisement"
         }
     },
@@ -260,6 +274,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "router-solicitation"
         }
     },
@@ -278,6 +293,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "echo-reply",
@@ -336,6 +352,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": 111
         }
     },
@@ -373,6 +390,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 55 ]
             }
@@ -408,6 +426,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -447,6 +466,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     2,
@@ -494,6 +514,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": 12343
         }
     },
@@ -531,6 +552,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 11, 343 ]
             }
@@ -572,6 +594,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 11, 343 ] }
@@ -617,6 +640,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     1111,
@@ -666,6 +690,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": 1245
         }
     },
@@ -684,6 +709,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -715,6 +741,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -750,6 +777,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -789,6 +817,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     22,
@@ -832,6 +861,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -863,6 +893,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -898,6 +929,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -943,6 +975,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -982,6 +1015,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": 33
         }
     }
@@ -997,6 +1031,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 22, 33 ]
             }
@@ -1014,6 +1049,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 22, 33 ] }
@@ -1053,6 +1089,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -1084,6 +1121,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -1119,6 +1157,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -1164,6 +1203,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -1203,6 +1243,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -1234,6 +1275,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -1269,6 +1311,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -1314,6 +1357,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
diff --git a/tests/py/ip/icmp.t.json.output b/tests/py/ip/icmp.t.json.output
index 3185726250751..30637a1345945 100644
--- a/tests/py/ip/icmp.t.json.output
+++ b/tests/py/ip/icmp.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "echo-reply",
@@ -44,6 +45,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     222,
diff --git a/tests/py/ip/ip.t.json b/tests/py/ip/ip.t.json
index c8b2bf83d95cf..3131ab790c04e 100644
--- a/tests/py/ip/ip.t.json
+++ b/tests/py/ip/ip.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "cs1"
         }
     }
@@ -39,6 +40,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "0x38"
         }
     }
@@ -70,6 +72,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "cs0",
@@ -163,6 +166,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 232
         }
     }
@@ -194,6 +198,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 333, 435 ]
             }
@@ -229,6 +234,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     333,
@@ -274,6 +280,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 333, 535 ] }
@@ -313,6 +320,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -344,6 +352,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -379,6 +388,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -424,6 +434,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -463,6 +474,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 222
         }
     },
@@ -497,6 +509,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -532,6 +545,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -577,6 +591,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -616,6 +631,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     },
@@ -634,6 +650,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 233
         }
     }
@@ -649,6 +666,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 55 ]
             }
@@ -684,6 +702,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     43,
@@ -727,6 +746,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -766,6 +786,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     }
@@ -797,6 +818,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "icmp",
@@ -858,6 +880,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 255
         }
     }
@@ -873,6 +896,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 13172
         }
     },
@@ -891,6 +915,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -922,6 +947,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -957,6 +983,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -1002,6 +1029,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -1041,6 +1069,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "prefix": {
                     "addr": "192.168.2.0",
@@ -1082,6 +1111,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "192.168.3.1"
         }
     },
@@ -1093,6 +1123,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "192.168.3.100"
         }
     }
@@ -1124,6 +1155,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "1.1.1.1"
         }
     }
@@ -1139,6 +1171,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "192.168.0.1", "192.168.0.250" ]
             }
@@ -1156,6 +1189,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "10.0.0.0", "10.255.255.255" ]
             }
@@ -1173,6 +1207,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "172.16.0.0", "172.31.255.255" ]
             }
@@ -1190,6 +1225,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "192.168.3.1", "192.168.4.250" ]
             }
@@ -1225,6 +1261,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ "192.168.0.1", "192.168.0.250" ] }
@@ -1264,6 +1301,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "192.168.5.1",
@@ -1313,6 +1351,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "192.168.1.2", "192.168.1.55" ]
             }
@@ -1348,6 +1387,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "192.168.1.3", "192.168.33.55" ]
             }
@@ -1383,6 +1423,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "192.168.0.1"
         }
     }
@@ -1398,6 +1439,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "192.168.0.1"
         }
     },
@@ -1416,6 +1458,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "192.168.0.2"
         }
     }
@@ -1478,6 +1521,7 @@
 		    "0xffff0000"
                 ]
             },
+	    "op": "==",
             "right": "0xffff0000"
         }
     }
@@ -1493,6 +1537,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 4
         }
     },
@@ -1504,6 +1549,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 5
         }
     }
@@ -1519,6 +1565,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -1534,6 +1581,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 15
         }
     }
@@ -1579,6 +1627,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1602,6 +1651,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1625,6 +1675,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1648,6 +1699,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1671,6 +1723,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1694,6 +1747,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1717,6 +1771,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1740,6 +1795,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1763,6 +1819,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
diff --git a/tests/py/ip/ip.t.json.output b/tests/py/ip/ip.t.json.output
index 0378c00ffda77..b201cdaab9773 100644
--- a/tests/py/ip/ip.t.json.output
+++ b/tests/py/ip/ip.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "cs7"
         }
     }
@@ -39,6 +40,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "cs0",
@@ -78,6 +80,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     }
@@ -109,6 +112,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     1,
@@ -191,6 +195,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "prefix": {
                     "addr": "255.255.0.0",
@@ -208,6 +213,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
diff --git a/tests/py/ip/ip_tcp.t.json b/tests/py/ip/ip_tcp.t.json
index 15b5f386ba69a..3757d6ee184dc 100644
--- a/tests/py/ip/ip_tcp.t.json
+++ b/tests/py/ip/ip_tcp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -34,6 +36,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     },
@@ -53,6 +56,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
diff --git a/tests/py/ip/ip_tcp.t.json.output b/tests/py/ip/ip_tcp.t.json.output
index 63cdfe0bc536b..2d671df5d3735 100644
--- a/tests/py/ip/ip_tcp.t.json.output
+++ b/tests/py/ip/ip_tcp.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -23,6 +24,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -42,6 +44,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
diff --git a/tests/py/ip/masquerade.t.json b/tests/py/ip/masquerade.t.json
index 79c80804591cd..4a90c7062d47c 100644
--- a/tests/py/ip/masquerade.t.json
+++ b/tests/py/ip/masquerade.t.json
@@ -8,6 +8,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -26,6 +27,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -46,6 +48,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -69,6 +72,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -93,6 +97,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -116,6 +121,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -140,6 +146,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -160,6 +167,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -183,6 +191,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -207,6 +216,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -230,6 +240,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -254,6 +265,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -274,6 +286,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -296,6 +309,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     1,
@@ -331,6 +345,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "10.0.0.0", "10.2.3.4" ]
             }
@@ -344,6 +359,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -362,6 +378,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -372,6 +389,7 @@
                     "key": "state"
                 }
             },
+	    "op": "in",
             "right": [
                 "established",
                 "new"
diff --git a/tests/py/ip/masquerade.t.json.output b/tests/py/ip/masquerade.t.json.output
index 8feac1dd52967..58e7e290a1e79 100644
--- a/tests/py/ip/masquerade.t.json.output
+++ b/tests/py/ip/masquerade.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -32,6 +33,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -55,6 +57,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -79,6 +82,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -102,6 +106,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
diff --git a/tests/py/ip/meta.t.json b/tests/py/ip/meta.t.json
index 59d97187ef7fa..f873aa88598b3 100644
--- a/tests/py/ip/meta.t.json
+++ b/tests/py/ip/meta.t.json
@@ -8,6 +8,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -20,6 +21,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": "icmp"
         }
     },
@@ -31,6 +33,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -43,6 +46,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": "ipv6-icmp"
         }
     },
@@ -54,6 +58,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-router-advert"
         }
     }
@@ -66,6 +71,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": 58
         }
     },
@@ -77,6 +83,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-router-advert"
         }
     }
@@ -92,6 +99,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-router-advert"
         }
     }
diff --git a/tests/py/ip/meta.t.json.output b/tests/py/ip/meta.t.json.output
index 93cede88f7c62..091282b3b74f0 100644
--- a/tests/py/ip/meta.t.json.output
+++ b/tests/py/ip/meta.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -23,6 +24,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-router-advert"
         }
     }
@@ -38,6 +40,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-router-advert"
         }
     }
diff --git a/tests/py/ip/objects.t.json b/tests/py/ip/objects.t.json
index 953e5570ac9c6..8e838cf414397 100644
--- a/tests/py/ip/objects.t.json
+++ b/tests/py/ip/objects.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "192.168.1.3"
         }
     },
@@ -58,6 +59,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "192.168.1.3"
         }
     },
@@ -143,6 +145,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "192.168.1.3"
         }
     },
diff --git a/tests/py/ip/redirect.t.json b/tests/py/ip/redirect.t.json
index 7ee3a516c273d..3544e7f1b9c5d 100644
--- a/tests/py/ip/redirect.t.json
+++ b/tests/py/ip/redirect.t.json
@@ -8,6 +8,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -26,6 +27,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -46,6 +48,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -69,6 +72,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -93,6 +97,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -116,6 +121,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -140,6 +146,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -160,6 +167,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -183,6 +191,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -207,6 +216,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -230,6 +240,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -254,6 +265,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -274,6 +286,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 1234
         }
     },
@@ -294,6 +307,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "172.16.0.1"
         }
     },
@@ -305,6 +319,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 9998
         }
     },
@@ -325,6 +340,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 39128
         }
     },
@@ -345,6 +361,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     },
@@ -367,6 +384,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 9128
         }
     },
@@ -388,6 +406,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 9128
         }
     },
@@ -409,6 +428,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 9128
         }
     },
@@ -430,6 +450,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 9128
         }
     },
@@ -454,6 +475,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     1,
@@ -489,6 +511,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "10.0.0.0", "10.2.3.4" ]
             }
@@ -502,6 +525,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -520,6 +544,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -530,6 +555,7 @@
                     "key": "state"
                 }
             },
+	    "op": "in",
             "right": [
                 "established",
                 "new"
@@ -577,6 +603,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
diff --git a/tests/py/ip/redirect.t.json.output b/tests/py/ip/redirect.t.json.output
index 2a3398b0d9db5..4646c60a81d89 100644
--- a/tests/py/ip/redirect.t.json.output
+++ b/tests/py/ip/redirect.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -32,6 +33,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -55,6 +57,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -79,6 +82,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -102,6 +106,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -126,6 +131,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
diff --git a/tests/py/ip/reject.t.json b/tests/py/ip/reject.t.json
index e1886fa3510d4..d120b9f10185b 100644
--- a/tests/py/ip/reject.t.json
+++ b/tests/py/ip/reject.t.json
@@ -82,6 +82,7 @@
             "left": {
                 "meta": { "key": "mark" }
             },
+	    "op": "==",
             "right": "0x80000000"
         }
     },
diff --git a/tests/py/ip/reject.t.json.output b/tests/py/ip/reject.t.json.output
index 6829792c4a1ad..b2529dd75fb51 100644
--- a/tests/py/ip/reject.t.json.output
+++ b/tests/py/ip/reject.t.json.output
@@ -12,6 +12,7 @@
             "left": {
                 "meta": { "key": "mark" }
             },
+	    "op": "==",
             "right": 2147483648
         }
     },
diff --git a/tests/py/ip/rt.t.json b/tests/py/ip/rt.t.json
index 565427cf21be6..41dbe3417e756 100644
--- a/tests/py/ip/rt.t.json
+++ b/tests/py/ip/rt.t.json
@@ -8,6 +8,7 @@
                     "key": "nexthop"
                 }
             },
+	    "op": "==",
             "right": "192.168.0.1"
         }
     }
diff --git a/tests/py/ip/sets.t.json b/tests/py/ip/sets.t.json
index 97ea15413bbe1..65d2df873623b 100644
--- a/tests/py/ip/sets.t.json
+++ b/tests/py/ip/sets.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "@set1"
         }
     },
@@ -45,6 +46,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "@set2"
         }
     },
@@ -92,6 +94,7 @@
                     }
                 ]
             },
+	    "op": "==",
             "right": "@set5"
         }
     },
@@ -136,6 +139,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "1.1.1.0",
@@ -157,6 +161,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     {
diff --git a/tests/py/ip/snat.t.json b/tests/py/ip/snat.t.json
index 9cb85f855f052..e87b524ee6671 100644
--- a/tests/py/ip/snat.t.json
+++ b/tests/py/ip/snat.t.json
@@ -5,6 +5,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -16,6 +17,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 80, 90 ]
             }
@@ -35,6 +37,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -66,6 +69,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -77,6 +81,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     80,
@@ -100,6 +105,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -135,6 +141,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
diff --git a/tests/py/ip/snat.t.json.output b/tests/py/ip/snat.t.json.output
index 46901ba051fee..1365316c1b18d 100644
--- a/tests/py/ip/snat.t.json.output
+++ b/tests/py/ip/snat.t.json.output
@@ -5,6 +5,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -16,6 +17,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     23,
@@ -39,6 +41,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
diff --git a/tests/py/ip/tcp.t.json b/tests/py/ip/tcp.t.json
index 33172f608171c..d2c091501dc8f 100644
--- a/tests/py/ip/tcp.t.json
+++ b/tests/py/ip/tcp.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": "ssh"
         }
     },
@@ -49,6 +51,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": "ssh"
         }
     },
diff --git a/tests/py/ip/tcp.t.json.output b/tests/py/ip/tcp.t.json.output
index 9dd51de65738f..7e898544a6fe5 100644
--- a/tests/py/ip/tcp.t.json.output
+++ b/tests/py/ip/tcp.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -38,6 +39,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
diff --git a/tests/py/ip/tcpopt.t.json b/tests/py/ip/tcpopt.t.json
index 8bb799174df1f..d573dd1c229b6 100644
--- a/tests/py/ip/tcpopt.t.json
+++ b/tests/py/ip/tcpopt.t.json
@@ -8,6 +8,7 @@
                     "name": "eol"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -23,6 +24,7 @@
                     "name": "noop"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -38,6 +40,7 @@
                     "name": "maxseg"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -53,6 +56,7 @@
                     "name": "maxseg"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -68,6 +72,7 @@
                     "name": "maxseg"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -83,6 +88,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -98,6 +104,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -113,6 +120,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -128,6 +136,7 @@
                     "name": "sack-permitted"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -143,6 +152,7 @@
                     "name": "sack-permitted"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -158,6 +168,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -173,6 +184,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -188,6 +200,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -203,6 +216,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -218,6 +232,7 @@
                     "name": "sack1"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -233,6 +248,7 @@
                     "name": "sack2"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -248,6 +264,7 @@
                     "name": "sack3"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -263,6 +280,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -278,6 +296,7 @@
                     "name": "sack0"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -293,6 +312,7 @@
                     "name": "sack1"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -308,6 +328,7 @@
                     "name": "sack2"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -323,6 +344,7 @@
                     "name": "sack3"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -338,6 +360,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -353,6 +376,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -368,6 +392,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -383,6 +408,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
diff --git a/tests/py/ip/tcpopt.t.json.output b/tests/py/ip/tcpopt.t.json.output
index ca6714b728416..81dd8ad80da84 100644
--- a/tests/py/ip/tcpopt.t.json.output
+++ b/tests/py/ip/tcpopt.t.json.output
@@ -8,6 +8,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
diff --git a/tests/py/ip6/dnat.t.json b/tests/py/ip6/dnat.t.json
index 4139d6455b56a..a5c01fd2d7a11 100644
--- a/tests/py/ip6/dnat.t.json
+++ b/tests/py/ip6/dnat.t.json
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 80, 90 ]
             }
@@ -35,6 +36,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 80, 90 ]
             }
@@ -60,6 +62,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 80, 90 ]
             }
diff --git a/tests/py/ip6/dst.t.json b/tests/py/ip6/dst.t.json
index aba15b23ea8b7..1373e17780727 100644
--- a/tests/py/ip6/dst.t.json
+++ b/tests/py/ip6/dst.t.json
@@ -8,6 +8,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -39,6 +40,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -74,6 +76,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -119,6 +122,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -158,6 +162,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "udplite",
@@ -213,6 +218,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": "icmp"
         }
     }
@@ -244,6 +250,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -275,6 +282,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -310,6 +318,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -355,6 +364,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
diff --git a/tests/py/ip6/dst.t.json.output b/tests/py/ip6/dst.t.json.output
index c856ec9a48b3c..69d8f685517a4 100644
--- a/tests/py/ip6/dst.t.json.output
+++ b/tests/py/ip6/dst.t.json.output
@@ -8,6 +8,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     6,
@@ -63,6 +64,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
diff --git a/tests/py/ip6/ether.t.json b/tests/py/ip6/ether.t.json
index 1a349215c1d1a..5e4b43bccf4e2 100644
--- a/tests/py/ip6/ether.t.json
+++ b/tests/py/ip6/ether.t.json
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -16,6 +17,7 @@
             "left": {
                 "meta": { "key": "iiftype" }
             },
+	    "op": "==",
             "right": "ether"
         }
     },
@@ -27,6 +29,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1::2"
         }
     },
@@ -38,6 +41,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -56,6 +60,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -67,6 +72,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1::2"
         }
     },
@@ -78,6 +84,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     }
@@ -93,6 +100,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -104,6 +112,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -115,6 +124,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1::2"
         }
     }
@@ -130,6 +140,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
@@ -141,6 +152,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1::2"
         }
     },
diff --git a/tests/py/ip6/ether.t.json.output b/tests/py/ip6/ether.t.json.output
index 556ce91952ac3..7ace6273d591e 100644
--- a/tests/py/ip6/ether.t.json.output
+++ b/tests/py/ip6/ether.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     },
@@ -19,6 +20,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1::2"
         }
     },
@@ -30,6 +32,7 @@
                     "protocol": "ether"
                 }
             },
+	    "op": "==",
             "right": "00:0f:54:0c:11:04"
         }
     },
diff --git a/tests/py/ip6/exthdr.t.json b/tests/py/ip6/exthdr.t.json
index 8289a39e4bfbe..4ca77d6c73c60 100644
--- a/tests/py/ip6/exthdr.t.json
+++ b/tests/py/ip6/exthdr.t.json
@@ -7,6 +7,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": true
         }
     }
@@ -21,6 +22,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": true
         }
     }
@@ -35,6 +37,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": true
         }
     }
@@ -49,6 +52,7 @@
                     "name": "dst"
                 }
             },
+	    "op": "==",
             "right": true
         }
     }
@@ -63,6 +67,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": true
         }
     }
@@ -77,6 +82,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": false
         }
     }
@@ -151,6 +157,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -165,6 +172,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
diff --git a/tests/py/ip6/exthdr.t.json.output b/tests/py/ip6/exthdr.t.json.output
index 6bdbae2f13cdf..c9f5b49b915c8 100644
--- a/tests/py/ip6/exthdr.t.json.output
+++ b/tests/py/ip6/exthdr.t.json.output
@@ -7,6 +7,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": true
         }
     }
@@ -21,6 +22,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": false
         }
     }
@@ -35,6 +37,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": true
         }
     }
@@ -49,6 +52,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": false
         }
     }
diff --git a/tests/py/ip6/frag.t.json b/tests/py/ip6/frag.t.json
index abea39dd2fc0c..b8c06dfb3429c 100644
--- a/tests/py/ip6/frag.t.json
+++ b/tests/py/ip6/frag.t.json
@@ -8,6 +8,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     }
@@ -39,6 +40,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "esp",
@@ -92,6 +94,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": "esp"
         }
     }
@@ -107,6 +110,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": "ah"
         }
     }
@@ -122,6 +126,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -153,6 +158,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -188,6 +194,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -233,6 +240,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -272,6 +280,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -303,6 +312,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -338,6 +348,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -383,6 +394,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -422,6 +434,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -437,6 +450,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -452,6 +466,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -467,6 +482,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -482,6 +498,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -513,6 +530,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -548,6 +566,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -593,6 +612,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
diff --git a/tests/py/ip6/frag.t.json.output b/tests/py/ip6/frag.t.json.output
index 12579de50ccab..68d382b3c72bc 100644
--- a/tests/py/ip6/frag.t.json.output
+++ b/tests/py/ip6/frag.t.json.output
@@ -8,6 +8,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     }
@@ -39,6 +40,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     6,
@@ -92,6 +94,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": 50
         }
     }
@@ -107,6 +110,7 @@
                     "name": "frag"
                 }
             },
+	    "op": "==",
             "right": 51
         }
     }
diff --git a/tests/py/ip6/hbh.t.json b/tests/py/ip6/hbh.t.json
index e8116061508c2..441d3bfe96c39 100644
--- a/tests/py/ip6/hbh.t.json
+++ b/tests/py/ip6/hbh.t.json
@@ -8,6 +8,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -39,6 +40,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -74,6 +76,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -119,6 +122,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -158,6 +162,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "esp",
@@ -213,6 +218,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -244,6 +250,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -279,6 +286,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -324,6 +332,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -363,6 +372,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": "ip"
         }
     }
diff --git a/tests/py/ip6/hbh.t.json.output b/tests/py/ip6/hbh.t.json.output
index 933efbd657a32..190f0fc6a969d 100644
--- a/tests/py/ip6/hbh.t.json.output
+++ b/tests/py/ip6/hbh.t.json.output
@@ -8,6 +8,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [ 6, 17, 33, 50, 51, 58, 108, 132, 136 ]
             }
@@ -43,6 +44,7 @@
                     "name": "hbh"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
diff --git a/tests/py/ip6/icmpv6.t.json b/tests/py/ip6/icmpv6.t.json
index c953ee258142e..73b9277ae9872 100644
--- a/tests/py/ip6/icmpv6.t.json
+++ b/tests/py/ip6/icmpv6.t.json
@@ -8,6 +8,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "destination-unreachable"
         }
     },
@@ -26,6 +27,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "packet-too-big"
         }
     },
@@ -44,6 +46,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "time-exceeded"
         }
     },
@@ -62,6 +65,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     },
@@ -80,6 +84,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "echo-reply"
         }
     },
@@ -98,6 +103,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "mld-listener-query"
         }
     },
@@ -116,6 +122,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "mld-listener-report"
         }
     },
@@ -134,6 +141,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "mld-listener-done"
         }
     },
@@ -152,6 +160,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "mld-listener-reduction"
         }
     },
@@ -170,6 +179,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-router-solicit"
         }
     },
@@ -188,6 +198,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-router-advert"
         }
     },
@@ -206,6 +217,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-neighbor-solicit"
         }
     },
@@ -224,6 +236,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-neighbor-advert"
         }
     },
@@ -242,6 +255,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-redirect"
         }
     },
@@ -260,6 +274,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "parameter-problem"
         }
     },
@@ -278,6 +293,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "router-renumbering"
         }
     },
@@ -296,6 +312,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "ind-neighbor-solicit"
         }
     },
@@ -314,6 +331,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "ind-neighbor-advert"
         }
     },
@@ -332,6 +350,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "mld2-listener-report"
         }
     },
@@ -350,6 +369,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "destination-unreachable",
@@ -374,6 +394,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "router-renumbering",
@@ -399,6 +420,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "mld-listener-query",
@@ -448,6 +470,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": 4
         }
     }
@@ -463,6 +486,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 3, 66 ]
             }
@@ -480,6 +504,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     5,
@@ -529,6 +554,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 3, 66 ] }
@@ -568,6 +594,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": 2222
         }
     },
@@ -605,6 +632,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 222, 226 ]
             }
@@ -641,6 +669,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     222,
@@ -682,6 +711,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 222, 226 ] }
@@ -721,6 +751,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -752,6 +783,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -787,6 +819,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -832,6 +865,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -871,6 +905,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -906,6 +941,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -951,6 +987,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -990,6 +1027,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": 2
         }
     }
@@ -1005,6 +1043,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     3,
@@ -1031,6 +1070,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     2,
@@ -1072,6 +1112,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 2, 4 ]
             }
@@ -1107,6 +1148,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 2, 4 ] }
@@ -1146,6 +1188,7 @@
                     "name": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -1181,6 +1224,7 @@
                     "name": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -1226,6 +1270,7 @@
                     "name": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
diff --git a/tests/py/ip6/icmpv6.t.json.output b/tests/py/ip6/icmpv6.t.json.output
index 36f1b04a4d201..472b2ce74133b 100644
--- a/tests/py/ip6/icmpv6.t.json.output
+++ b/tests/py/ip6/icmpv6.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "mld-listener-done"
         }
     },
@@ -26,6 +27,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "time-exceeded",
@@ -51,6 +53,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "time-exceeded",
diff --git a/tests/py/ip6/ip6.t.json b/tests/py/ip6/ip6.t.json
index d6acaa3b7d357..f898240fb4189 100644
--- a/tests/py/ip6/ip6.t.json
+++ b/tests/py/ip6/ip6.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "cs1"
         }
     }
@@ -39,6 +40,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "0x38"
         }
     }
@@ -70,6 +72,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "cs0",
@@ -142,6 +145,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -173,6 +177,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -218,6 +223,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -287,6 +293,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -318,6 +325,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -353,6 +361,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -398,6 +407,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     {
@@ -439,6 +449,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "udp",
@@ -464,6 +475,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "esp",
@@ -519,6 +531,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "esp"
         }
     }
@@ -550,6 +563,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 44 ] }
@@ -589,6 +603,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 44 ]
             }
@@ -624,6 +639,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -655,6 +671,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -690,6 +707,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -735,6 +753,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -774,6 +793,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234:1234:1234:1234:1234"
         }
     }
@@ -789,6 +809,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "::1234:1234:1234:1234:1234:1234:1234"
         }
     }
@@ -804,6 +825,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234::1234:1234:1234:1234:1234:1234"
         }
     }
@@ -819,6 +841,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234::1234:1234:1234:1234:1234"
         }
     }
@@ -834,6 +857,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:0:1234:1234:1234:1234:1234"
         }
     }
@@ -849,6 +873,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234::1234:1234:1234:1234"
         }
     }
@@ -864,6 +889,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234:0:1234:1234:1234"
         }
     }
@@ -879,6 +905,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234:1234::1234:1234"
         }
     }
@@ -894,6 +921,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234:1234:1234:0:1234"
         }
     }
@@ -909,6 +937,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234:1234:1234:1234::"
         }
     }
@@ -924,6 +953,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "::1234:1234:1234:1234:1234:1234"
         }
     }
@@ -939,6 +969,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234::1234:1234:1234:1234:1234"
         }
     }
@@ -954,6 +985,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234::1234:1234:1234:1234"
         }
     }
@@ -969,6 +1001,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234::1234:1234:1234"
         }
     }
@@ -984,6 +1017,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234::1234:1234"
         }
     }
@@ -999,6 +1033,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234:1234::1234"
         }
     }
@@ -1014,6 +1049,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234:1234:1234::"
         }
     }
@@ -1029,6 +1065,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "::1234:1234:1234:1234:1234"
         }
     }
@@ -1044,6 +1081,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234::1234:1234:1234:1234"
         }
     }
@@ -1059,6 +1097,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234::1234:1234:1234"
         }
     }
@@ -1074,6 +1113,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234::1234:1234"
         }
     }
@@ -1089,6 +1129,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234::1234"
         }
     }
@@ -1104,6 +1145,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234:1234::"
         }
     }
@@ -1119,6 +1161,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "::1234:1234:1234:1234"
         }
     }
@@ -1134,6 +1177,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234::1234:1234:1234"
         }
     }
@@ -1149,6 +1193,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234::1234:1234"
         }
     }
@@ -1164,6 +1209,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234::1234"
         }
     }
@@ -1179,6 +1225,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234::"
         }
     }
@@ -1194,6 +1241,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "::1234:1234:1234"
         }
     }
@@ -1209,6 +1257,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234::1234:1234"
         }
     }
@@ -1224,6 +1273,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234::1234"
         }
     }
@@ -1239,6 +1289,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234::"
         }
     }
@@ -1254,6 +1305,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "::1234:1234"
         }
     }
@@ -1269,6 +1321,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234::1234"
         }
     }
@@ -1284,6 +1337,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234::"
         }
     }
@@ -1299,6 +1353,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "::1234"
         }
     }
@@ -1314,6 +1369,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234::"
         }
     }
@@ -1329,6 +1385,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "prefix": {
                     "addr": "::",
@@ -1349,6 +1406,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "::1"
         }
     },
@@ -1360,6 +1418,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "::2"
         }
     }
@@ -1411,6 +1470,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1434,6 +1494,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1457,6 +1518,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1480,6 +1542,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1503,6 +1566,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1526,6 +1590,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1549,6 +1614,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1572,6 +1638,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
@@ -1595,6 +1662,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
diff --git a/tests/py/ip6/ip6.t.json.output b/tests/py/ip6/ip6.t.json.output
index 48f28b3d6e17a..6c20939f72717 100644
--- a/tests/py/ip6/ip6.t.json.output
+++ b/tests/py/ip6/ip6.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "cs7"
         }
     }
@@ -39,6 +40,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "cs0",
@@ -111,6 +113,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     6,
@@ -136,6 +139,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [ 6, 17, 33, 50, 51, 58, 108, 132, 136 ]
             }
@@ -171,6 +175,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": 50
         }
     }
@@ -202,6 +207,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "0:1234:1234:1234:1234:1234:1234:1234"
         }
     }
@@ -217,6 +223,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:0:1234:1234:1234:1234:1234:1234"
         }
     }
@@ -232,6 +239,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:0:1234:1234:1234:1234:1234"
         }
     }
@@ -247,6 +255,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:0:1234:1234:1234:1234"
         }
     }
@@ -262,6 +271,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234:1234:0:1234:1234"
         }
     }
@@ -277,6 +287,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "1234:1234:1234:1234:1234:1234:1234:0"
         }
     }
@@ -292,6 +303,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "::18.52.18.52"
         }
     }
@@ -343,6 +355,7 @@
             "left": {
                 "meta": { "key": "iif" }
             },
+	    "op": "==",
             "right": "lo"
         }
     },
diff --git a/tests/py/ip6/masquerade.t.json b/tests/py/ip6/masquerade.t.json
index ae00651050568..824b44f8a5f59 100644
--- a/tests/py/ip6/masquerade.t.json
+++ b/tests/py/ip6/masquerade.t.json
@@ -8,6 +8,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -26,6 +27,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -46,6 +48,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -69,6 +72,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -93,6 +97,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -116,6 +121,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -140,6 +146,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -160,6 +167,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -183,6 +191,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -207,6 +216,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -230,6 +240,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -251,6 +262,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -268,6 +280,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": 6
         }
     },
@@ -290,6 +303,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     1,
@@ -325,6 +339,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "fe00::1", "fe00::200" ]
             }
@@ -338,6 +353,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -356,6 +372,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -366,6 +383,7 @@
                     "key": "state"
                 }
             },
+	    "op": "in",
             "right": [
                 "established",
                 "new"
diff --git a/tests/py/ip6/masquerade.t.json.output b/tests/py/ip6/masquerade.t.json.output
index 78a75daccf40d..31d0cd9a7e4b5 100644
--- a/tests/py/ip6/masquerade.t.json.output
+++ b/tests/py/ip6/masquerade.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -31,6 +32,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -55,6 +57,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -78,6 +81,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
diff --git a/tests/py/ip6/meta.t.json b/tests/py/ip6/meta.t.json
index e3c223538f0e6..29cf9fd2d0cf0 100644
--- a/tests/py/ip6/meta.t.json
+++ b/tests/py/ip6/meta.t.json
@@ -8,6 +8,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-router-advert"
         }
     }
@@ -20,6 +21,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": "ipv6-icmp"
         }
     },
@@ -31,6 +33,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-router-advert"
         }
     }
@@ -43,6 +46,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": "icmp"
         }
     },
@@ -54,6 +58,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -66,6 +71,7 @@
             "left": {
                 "meta": { "key": "l4proto" }
             },
+	    "op": "==",
             "right": 1
         }
     },
@@ -77,6 +83,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -92,6 +99,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
diff --git a/tests/py/ip6/meta.t.json.output b/tests/py/ip6/meta.t.json.output
index 3ecc4f2861bc3..dede9b16904f2 100644
--- a/tests/py/ip6/meta.t.json.output
+++ b/tests/py/ip6/meta.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "icmpv6"
                 }
             },
+	    "op": "==",
             "right": "nd-router-advert"
         }
     }
@@ -23,6 +24,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
@@ -38,6 +40,7 @@
                     "protocol": "icmp"
                 }
             },
+	    "op": "==",
             "right": "echo-request"
         }
     }
diff --git a/tests/py/ip6/mh.t.json b/tests/py/ip6/mh.t.json
index 8d60e14917be8..211477d32f5e4 100644
--- a/tests/py/ip6/mh.t.json
+++ b/tests/py/ip6/mh.t.json
@@ -8,6 +8,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -39,6 +40,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "udplite",
@@ -94,6 +96,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": "icmp"
         }
     }
@@ -125,6 +128,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -156,6 +160,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -191,6 +196,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -236,6 +242,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     {
@@ -277,6 +284,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -308,6 +316,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -343,6 +352,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -388,6 +398,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -427,6 +438,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "binding-refresh-request",
@@ -458,6 +470,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": "home-agent-switch-message"
         }
     }
@@ -489,6 +502,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -520,6 +534,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -555,6 +570,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -600,6 +616,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -639,6 +656,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -670,6 +688,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -705,6 +724,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -750,6 +770,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
diff --git a/tests/py/ip6/mh.t.json.output b/tests/py/ip6/mh.t.json.output
index e2edf168f515a..a851804725fec 100644
--- a/tests/py/ip6/mh.t.json.output
+++ b/tests/py/ip6/mh.t.json.output
@@ -8,6 +8,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     6,
@@ -63,6 +64,7 @@
                     "name": "mh"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
diff --git a/tests/py/ip6/redirect.t.json b/tests/py/ip6/redirect.t.json
index bd3df47fc2171..0059c7accc06b 100644
--- a/tests/py/ip6/redirect.t.json
+++ b/tests/py/ip6/redirect.t.json
@@ -15,6 +15,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 954
         }
     },
@@ -33,6 +34,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "fe00::cafe"
         }
     },
@@ -54,6 +56,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -74,6 +77,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -97,6 +101,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -121,6 +126,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -144,6 +150,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -168,6 +175,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -188,6 +196,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -211,6 +220,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -235,6 +245,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -258,6 +269,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -282,6 +294,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 1234
         }
     },
@@ -302,6 +315,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "fe00::cafe"
         }
     },
@@ -313,6 +327,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 9998
         }
     },
@@ -333,6 +348,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "tcp"
         }
     },
@@ -355,6 +371,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 39128
         }
     },
@@ -375,6 +392,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 9128
         }
     },
@@ -396,6 +414,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": 9128
         }
     },
@@ -420,6 +439,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     1,
@@ -455,6 +475,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ "fe00::1", "fe00::200" ]
             }
@@ -468,6 +489,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -486,6 +508,7 @@
             "left": {
                 "meta": { "key": "iifname" }
             },
+	    "op": "==",
             "right": "eth0"
         }
     },
@@ -496,6 +519,7 @@
                     "key": "state"
                 }
             },
+	    "op": "in",
             "right": [
                 "established",
                 "new"
@@ -543,6 +567,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
diff --git a/tests/py/ip6/redirect.t.json.output b/tests/py/ip6/redirect.t.json.output
index 6f919ac8d5eae..0174cc7d7b916 100644
--- a/tests/py/ip6/redirect.t.json.output
+++ b/tests/py/ip6/redirect.t.json.output
@@ -8,6 +8,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -32,6 +33,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -55,6 +57,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -79,6 +82,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -102,6 +106,7 @@
                     "protocol": "udp"
                 }
             },
+	    "op": "==",
             "right": 53
         }
     },
@@ -126,6 +131,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": 6
         }
     },
diff --git a/tests/py/ip6/reject.t.json b/tests/py/ip6/reject.t.json
index 491b996c77daf..ae57c333fdbe2 100644
--- a/tests/py/ip6/reject.t.json
+++ b/tests/py/ip6/reject.t.json
@@ -72,6 +72,7 @@
             "left": {
                 "meta": { "key": "mark" }
             },
+	    "op": "==",
             "right": "0x80000000"
         }
     },
diff --git a/tests/py/ip6/reject.t.json.output b/tests/py/ip6/reject.t.json.output
index 4f79922901ef6..4e2058feceed6 100644
--- a/tests/py/ip6/reject.t.json.output
+++ b/tests/py/ip6/reject.t.json.output
@@ -12,6 +12,7 @@
             "left": {
                 "meta": { "key": "mark" }
             },
+	    "op": "==",
             "right": 2147483648
         }
     },
diff --git a/tests/py/ip6/rt.t.json b/tests/py/ip6/rt.t.json
index ebcdb842f1e93..86a4640213ce2 100644
--- a/tests/py/ip6/rt.t.json
+++ b/tests/py/ip6/rt.t.json
@@ -8,6 +8,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -39,6 +40,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     "udplite",
@@ -94,6 +96,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": "icmp"
         }
     }
@@ -125,6 +128,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -156,6 +160,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -191,6 +196,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -236,6 +242,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -275,6 +282,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -306,6 +314,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -341,6 +350,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -386,6 +396,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -425,6 +436,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -456,6 +468,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -491,6 +504,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -536,6 +550,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
@@ -575,6 +590,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": 22
         }
     }
@@ -606,6 +622,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 33, 45 ]
             }
@@ -641,6 +658,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     33,
@@ -686,6 +704,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     { "range": [ 33, 55 ] }
diff --git a/tests/py/ip6/rt.t.json.output b/tests/py/ip6/rt.t.json.output
index b432a7eb5b030..be5db0e08f6e1 100644
--- a/tests/py/ip6/rt.t.json.output
+++ b/tests/py/ip6/rt.t.json.output
@@ -8,6 +8,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     6,
@@ -63,6 +64,7 @@
                     "name": "rt"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
diff --git a/tests/py/ip6/rt0.t.json b/tests/py/ip6/rt0.t.json
index 33cdebc689c74..75ff9231a2b45 100644
--- a/tests/py/ip6/rt0.t.json
+++ b/tests/py/ip6/rt0.t.json
@@ -8,6 +8,7 @@
                     "key": "nexthop"
                 }
             },
+	    "op": "==",
             "right": "fd00::1"
         }
     }
diff --git a/tests/py/ip6/sets.t.json b/tests/py/ip6/sets.t.json
index 4f0d99bf0d5d6..9a75dd6fa2104 100644
--- a/tests/py/ip6/sets.t.json
+++ b/tests/py/ip6/sets.t.json
@@ -8,6 +8,7 @@
                     "protocol": "ip6"
                 }
             },
+	    "op": "==",
             "right": "@set2"
         }
     },
@@ -55,6 +56,7 @@
                     }
                 ]
             },
+	    "op": "==",
             "right": "@set5"
         }
     },
diff --git a/tests/py/ip6/snat.t.json b/tests/py/ip6/snat.t.json
index b8fed518b3e72..58b0980ad57a4 100644
--- a/tests/py/ip6/snat.t.json
+++ b/tests/py/ip6/snat.t.json
@@ -8,6 +8,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 80, 90 ]
             }
@@ -35,6 +36,7 @@
                     "protocol": "tcp"
                 }
             },
+	    "op": "==",
             "right": {
                 "range": [ 80, 90 ]
             }
diff --git a/tests/py/ip6/srh.t.json b/tests/py/ip6/srh.t.json
index 920ce974e47e5..2d16f1cc5c55a 100644
--- a/tests/py/ip6/srh.t.json
+++ b/tests/py/ip6/srh.t.json
@@ -8,6 +8,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -23,6 +24,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": 127
         }
     }
@@ -38,6 +40,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     0,
@@ -59,6 +62,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -74,6 +78,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": 127
         }
     }
@@ -89,6 +94,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     0,
@@ -110,6 +116,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": 0
         }
     }
@@ -125,6 +132,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": 127
         }
     }
@@ -140,6 +148,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     0,
@@ -161,6 +170,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": "dead::beef"
         }
     }
@@ -176,6 +186,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": "dead::beef"
         }
     }
diff --git a/tests/py/ip6/srh.t.json.output b/tests/py/ip6/srh.t.json.output
index e864688899572..f801b81f53362 100644
--- a/tests/py/ip6/srh.t.json.output
+++ b/tests/py/ip6/srh.t.json.output
@@ -8,6 +8,7 @@
                     "name": "srh"
                 }
             },
+	    "op": "==",
             "right": {
                 "set": [
                     0,
diff --git a/tests/py/ip6/tcpopt.t.json b/tests/py/ip6/tcpopt.t.json
index 8bb799174df1f..d573dd1c229b6 100644
--- a/tests/py/ip6/tcpopt.t.json
+++ b/tests/py/ip6/tcpopt.t.json
@@ -8,6 +8,7 @@
                     "name": "eol"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -23,6 +24,7 @@
                     "name": "noop"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -38,6 +40,7 @@
                     "name": "maxseg"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -53,6 +56,7 @@
                     "name": "maxseg"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -68,6 +72,7 @@
                     "name": "maxseg"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -83,6 +88,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -98,6 +104,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -113,6 +120,7 @@
                     "name": "window"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -128,6 +136,7 @@
                     "name": "sack-permitted"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -143,6 +152,7 @@
                     "name": "sack-permitted"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -158,6 +168,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -173,6 +184,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -188,6 +200,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -203,6 +216,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -218,6 +232,7 @@
                     "name": "sack1"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -233,6 +248,7 @@
                     "name": "sack2"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -248,6 +264,7 @@
                     "name": "sack3"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -263,6 +280,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -278,6 +296,7 @@
                     "name": "sack0"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -293,6 +312,7 @@
                     "name": "sack1"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -308,6 +328,7 @@
                     "name": "sack2"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -323,6 +344,7 @@
                     "name": "sack3"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -338,6 +360,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -353,6 +376,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -368,6 +392,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
@@ -383,6 +408,7 @@
                     "name": "timestamp"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
diff --git a/tests/py/ip6/tcpopt.t.json.output b/tests/py/ip6/tcpopt.t.json.output
index ca6714b728416..81dd8ad80da84 100644
--- a/tests/py/ip6/tcpopt.t.json.output
+++ b/tests/py/ip6/tcpopt.t.json.output
@@ -8,6 +8,7 @@
                     "name": "sack"
                 }
             },
+	    "op": "==",
             "right": 1
         }
     }
-- 
2.18.0





[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux