diff mbox series

[nft,1/7] JSON: Call verdict maps 'vmap' in JSON as well

Message ID 20180608152719.11893-2-phil@nwl.cc
State Accepted
Delegated to: Pablo Neira
Headers show
Series JSON: Some fixes and documentation | expand

Commit Message

Phil Sutter June 8, 2018, 3:27 p.m. UTC
This way JSON format is more consistent with the standard one.

Signed-off-by: Phil Sutter <phil@nwl.cc>
---
 src/json.c                      |  8 +++-
 src/parser_json.c               |  2 +-
 tests/py/any/ct.t.json          |  2 +-
 tests/py/any/ct.t.json.output   |  2 +-
 tests/py/any/meta.t.json        |  2 +-
 tests/py/inet/fib.t.json        |  2 +-
 tests/py/inet/fib.t.json.output |  2 +-
 tests/py/inet/tcp.t.json        |  6 +--
 tests/py/ip/ip.t.json           |  4 +-
 tests/py/ip/masquerade.t.json   |  2 +-
 tests/py/ip/redirect.t.json     |  2 +-
 tests/py/ip6/ip6.t.json         |  4 +-
 tests/py/ip6/ip6.t.json.output  |  2 +-
 tests/py/ip6/masquerade.t.json  |  2 +-
 tests/py/ip6/redirect.t.json    |  2 +-
 tests/py/ip6/vmap.t.json        | 84 ++++++++++++++++-----------------
 tests/py/ip6/vmap.t.json.output | 26 +++++-----
 17 files changed, 80 insertions(+), 74 deletions(-)
diff mbox series

Patch

diff --git a/src/json.c b/src/json.c
index b6e6ca9c6c383..306cab7b5426c 100644
--- a/src/json.c
+++ b/src/json.c
@@ -560,7 +560,13 @@  json_t *mapping_expr_json(const struct expr *expr, struct output_ctx *octx)
 
 json_t *map_expr_json(const struct expr *expr, struct output_ctx *octx)
 {
-	return json_pack("{s:{s:o, s:o}}", "map",
+	const char *type = "map";
+
+	if (expr->mappings->ops->type == EXPR_SET_REF &&
+	    expr->mappings->set->datatype->type == TYPE_VERDICT)
+		type = "vmap";
+
+	return json_pack("{s:{s:o, s:o}}", type,
 			 "left", expr_print_json(expr->map, octx),
 			 "right", expr_print_json(expr->mappings, octx));
 }
diff --git a/src/parser_json.c b/src/parser_json.c
index 6e14fb7278fb0..e340bebc03b6d 100644
--- a/src/parser_json.c
+++ b/src/parser_json.c
@@ -2064,7 +2064,7 @@  static struct stmt *json_parse_stmt(struct json_ctx *ctx, json_t *root)
 		return NULL;
 
 	/* Yes, verdict_map_stmt is actually an expression */
-	if (!strcmp(type, "map")) {
+	if (!strcmp(type, "vmap")) {
 		struct expr *expr = json_parse_map_expr(ctx, type, tmp);
 
 		if (!expr) {
diff --git a/tests/py/any/ct.t.json b/tests/py/any/ct.t.json
index 3ec00ab3b5d78..e393e52456a36 100644
--- a/tests/py/any/ct.t.json
+++ b/tests/py/any/ct.t.json
@@ -1009,7 +1009,7 @@ 
 # ct state . ct mark vmap { new . 0x12345678 : drop}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "concat": [
                     {
diff --git a/tests/py/any/ct.t.json.output b/tests/py/any/ct.t.json.output
index ce33a6810a496..f6b6a90701aab 100644
--- a/tests/py/any/ct.t.json.output
+++ b/tests/py/any/ct.t.json.output
@@ -570,7 +570,7 @@ 
 # ct state . ct mark vmap { new . 0x12345678 : drop}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "concat": [
                     {
diff --git a/tests/py/any/meta.t.json b/tests/py/any/meta.t.json
index ae74507892f70..7aea79eb32386 100644
--- a/tests/py/any/meta.t.json
+++ b/tests/py/any/meta.t.json
@@ -2361,7 +2361,7 @@ 
 # meta iif . meta oif vmap { "lo" . "lo" : drop }
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "concat": [
                     {
diff --git a/tests/py/inet/fib.t.json b/tests/py/inet/fib.t.json
index cb15e39709d6c..00c79abc05006 100644
--- a/tests/py/inet/fib.t.json
+++ b/tests/py/inet/fib.t.json
@@ -56,7 +56,7 @@ 
 # fib daddr . iif type vmap { blackhole : drop, prohibit : drop, unicast : accept }
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "fib": {
                     "flags": [
diff --git a/tests/py/inet/fib.t.json.output b/tests/py/inet/fib.t.json.output
index c473b2afc4ffe..b06e488ac2d14 100644
--- a/tests/py/inet/fib.t.json.output
+++ b/tests/py/inet/fib.t.json.output
@@ -1,7 +1,7 @@ 
 # fib daddr . iif type vmap { blackhole : drop, prohibit : drop, unicast : accept }
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "fib": {
                     "flags": [
diff --git a/tests/py/inet/tcp.t.json b/tests/py/inet/tcp.t.json
index f5df72aa252a6..2f83566d4fab6 100644
--- a/tests/py/inet/tcp.t.json
+++ b/tests/py/inet/tcp.t.json
@@ -175,7 +175,7 @@ 
 # tcp dport vmap { 22 : accept, 23 : drop }
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "dport",
@@ -205,7 +205,7 @@ 
 # tcp dport vmap { 25:accept, 28:drop }
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "dport",
@@ -430,7 +430,7 @@ 
 # tcp sport vmap { 25:accept, 28:drop }
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "sport",
diff --git a/tests/py/ip/ip.t.json b/tests/py/ip/ip.t.json
index abd45ce760159..d66e42643acb3 100644
--- a/tests/py/ip/ip.t.json
+++ b/tests/py/ip/ip.t.json
@@ -123,7 +123,7 @@ 
 # ip dscp vmap { cs1 : continue , cs4 : accept } counter
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "dscp",
@@ -1542,7 +1542,7 @@ 
 # ip hdrlength vmap { 0-4 : drop, 5 : accept, 6 : continue } counter
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "hdrlength",
diff --git a/tests/py/ip/masquerade.t.json b/tests/py/ip/masquerade.t.json
index 44f371ad4dec2..4eae3b9808e43 100644
--- a/tests/py/ip/masquerade.t.json
+++ b/tests/py/ip/masquerade.t.json
@@ -379,7 +379,7 @@ 
         }
     },
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "dport",
diff --git a/tests/py/ip/redirect.t.json b/tests/py/ip/redirect.t.json
index b22a327df2cea..58e78ee91db51 100644
--- a/tests/py/ip/redirect.t.json
+++ b/tests/py/ip/redirect.t.json
@@ -537,7 +537,7 @@ 
         }
     },
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "dport",
diff --git a/tests/py/ip6/ip6.t.json b/tests/py/ip6/ip6.t.json
index 8e217bb19f8ec..272ef0d0456b4 100644
--- a/tests/py/ip6/ip6.t.json
+++ b/tests/py/ip6/ip6.t.json
@@ -102,7 +102,7 @@ 
 # ip6 dscp vmap { 0x04 : accept, 0x3f : continue } counter
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "dscp",
@@ -250,7 +250,7 @@ 
 # ip6 flowlabel vmap { 0 : accept, 2 : continue } 
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "flowlabel",
diff --git a/tests/py/ip6/ip6.t.json.output b/tests/py/ip6/ip6.t.json.output
index ea7cf777bf124..6f9835334e147 100644
--- a/tests/py/ip6/ip6.t.json.output
+++ b/tests/py/ip6/ip6.t.json.output
@@ -71,7 +71,7 @@ 
 # ip6 dscp vmap { 0x04 : accept, 0x3f : continue } counter
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "dscp",
diff --git a/tests/py/ip6/masquerade.t.json b/tests/py/ip6/masquerade.t.json
index 65f65ee5187a9..a54761d3c1eaa 100644
--- a/tests/py/ip6/masquerade.t.json
+++ b/tests/py/ip6/masquerade.t.json
@@ -373,7 +373,7 @@ 
         }
     },
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "dport",
diff --git a/tests/py/ip6/redirect.t.json b/tests/py/ip6/redirect.t.json
index 08d6a086db2f4..757fbb607e264 100644
--- a/tests/py/ip6/redirect.t.json
+++ b/tests/py/ip6/redirect.t.json
@@ -503,7 +503,7 @@ 
         }
     },
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "dport",
diff --git a/tests/py/ip6/vmap.t.json b/tests/py/ip6/vmap.t.json
index 1fbe0093dac5d..0dfa0e0d135ec 100644
--- a/tests/py/ip6/vmap.t.json
+++ b/tests/py/ip6/vmap.t.json
@@ -1,7 +1,7 @@ 
 # ip6 saddr vmap { abcd::3 : accept }
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -25,7 +25,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -49,7 +49,7 @@ 
 # ip6 saddr vmap { ::1234:1234:1234:1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -73,7 +73,7 @@ 
 # ip6 saddr vmap { 1234::1234:1234:1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -97,7 +97,7 @@ 
 # ip6 saddr vmap { 1234:1234::1234:1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -121,7 +121,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234::1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -145,7 +145,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234::1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -169,7 +169,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:1234::1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -193,7 +193,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:1234:1234::1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -217,7 +217,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:1234:1234:1234:: : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -241,7 +241,7 @@ 
 # ip6 saddr vmap { ::1234:1234:1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -265,7 +265,7 @@ 
 # ip6 saddr vmap { 1234::1234:1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -289,7 +289,7 @@ 
 # ip6 saddr vmap { 1234:1234::1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -313,7 +313,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234::1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -337,7 +337,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234::1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -361,7 +361,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:1234::1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -385,7 +385,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:1234:1234:: : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -409,7 +409,7 @@ 
 # ip6 saddr vmap { ::1234:1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -433,7 +433,7 @@ 
 # ip6 saddr vmap { 1234::1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -457,7 +457,7 @@ 
 # ip6 saddr vmap { 1234:1234::1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -481,7 +481,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234::1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -505,7 +505,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234::1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -529,7 +529,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:1234::  : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -553,7 +553,7 @@ 
 # ip6 saddr vmap { ::1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -577,7 +577,7 @@ 
 # ip6 saddr vmap { 1234::1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -601,7 +601,7 @@ 
 # ip6 saddr vmap { 1234:1234::1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -625,7 +625,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234::1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -649,7 +649,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:: : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -673,7 +673,7 @@ 
 # ip6 saddr vmap { ::1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -697,7 +697,7 @@ 
 # ip6 saddr vmap { 1234::1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -721,7 +721,7 @@ 
 # ip6 saddr vmap { 1234:1234::1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -745,7 +745,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:: : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -769,7 +769,7 @@ 
 # ip6 saddr vmap { ::1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -793,7 +793,7 @@ 
 # ip6 saddr vmap { 1234::1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -817,7 +817,7 @@ 
 # ip6 saddr vmap { 1234:1234:: : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -841,7 +841,7 @@ 
 # ip6 saddr vmap { ::1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -865,7 +865,7 @@ 
 # ip6 saddr vmap { 1234:: : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -889,7 +889,7 @@ 
 # ip6 saddr vmap { ::/64 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -918,7 +918,7 @@ 
 # ip6 saddr vmap {1234:1234:1234:1234:1234:1234:aaaa:: : accept, ::aaaa : drop}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -948,7 +948,7 @@ 
 # ip6 saddr vmap {1234:1234:1234:1234:1234:1234:aaaa:::accept, ::bbbb : drop}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -978,7 +978,7 @@ 
 # ip6 saddr vmap {1234:1234:1234:1234:1234:1234:aaaa:::accept,::cccc : drop}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -1008,7 +1008,7 @@ 
 # ip6 saddr vmap {1234:1234:1234:1234:1234:1234:aaaa:::accept,::dddd: drop}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
diff --git a/tests/py/ip6/vmap.t.json.output b/tests/py/ip6/vmap.t.json.output
index aba563fc78b92..3b5bc78e05e18 100644
--- a/tests/py/ip6/vmap.t.json.output
+++ b/tests/py/ip6/vmap.t.json.output
@@ -1,7 +1,7 @@ 
 # ip6 saddr vmap { ::1234:1234:1234:1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -25,7 +25,7 @@ 
 # ip6 saddr vmap { 1234::1234:1234:1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -49,7 +49,7 @@ 
 # ip6 saddr vmap { 1234:1234::1234:1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -73,7 +73,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234::1234:1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -97,7 +97,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234::1234:1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -121,7 +121,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:1234::1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -145,7 +145,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:1234:1234::1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -169,7 +169,7 @@ 
 # ip6 saddr vmap { 1234:1234:1234:1234:1234:1234:1234:: : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -193,7 +193,7 @@ 
 # ip6 saddr vmap { ::1234:1234 : accept}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -217,7 +217,7 @@ 
 # ip6 saddr vmap {1234:1234:1234:1234:1234:1234:aaaa:: : accept, ::aaaa : drop}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -247,7 +247,7 @@ 
 # ip6 saddr vmap {1234:1234:1234:1234:1234:1234:aaaa:::accept, ::bbbb : drop}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -277,7 +277,7 @@ 
 # ip6 saddr vmap {1234:1234:1234:1234:1234:1234:aaaa:::accept,::cccc : drop}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",
@@ -307,7 +307,7 @@ 
 # ip6 saddr vmap {1234:1234:1234:1234:1234:1234:aaaa:::accept,::dddd: drop}
 [
     {
-        "map": {
+        "vmap": {
             "left": {
                 "payload": {
                     "field": "saddr",