summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/json.c8
-rw-r--r--src/parser_json.c2
2 files changed, 8 insertions, 2 deletions
diff --git a/src/json.c b/src/json.c
index b6e6ca9c..306cab7b 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 6e14fb72..e340bebc 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) {