]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
json: Fix compile error
authorPhil Sutter <phil@nwl.cc>
Tue, 28 Aug 2018 20:26:56 +0000 (22:26 +0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Wed, 29 Aug 2018 00:16:44 +0000 (02:16 +0200)
Commit 9e45a28ca467f ("src: honor /etc/services") broke compiling with
JSON support enabled: inet_service_type_print() is not suited for
converting inet_service datatype into JSON at all.

In order to avoid having to replicate the port value resolving into
human-readable name in inet_service_type_json(), just return a numeric
value. At least for JSON output, this probably makes most sense either
way since the output is expected to be parsed by scripts which have an
easier time with numers than names anyway.

Fixes: 9e45a28ca467f ("src: honor /etc/services")
Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/json.c

index b70a53f29683d9f80aa4823b22072ad7f80f9203..00d247646cfe20dde558c474f0017210e23320d1 100644 (file)
@@ -861,10 +861,7 @@ json_t *inet_protocol_type_json(const struct expr *expr,
 
 json_t *inet_service_type_json(const struct expr *expr, struct output_ctx *octx)
 {
-       if (octx->numeric >= NFT_NUMERIC_PORT)
-               return integer_type_json(expr, octx);
-
-       return inet_service_type_print(expr, octx);
+       return json_integer(ntohs(mpz_get_be16(expr->value)));
 }
 
 json_t *mark_type_json(const struct expr *expr, struct output_ctx *octx)