diff options
author | Fernando Fernandez Mancera <ffmancera@riseup.net> | 2019-03-27 11:37:57 +0100 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2019-04-08 23:46:50 +0200 |
commit | 7fcccaebfd0ac5a4f001b5d5cd3c6ffbaa71cfe6 (patch) | |
tree | c38017a75f493dba514b19c6361b80cd3e40595d | |
parent | fdda1fad8853b92bac726cbe162b58a5b73c8b4d (diff) |
json: osf: add version json support
Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r-- | src/json.c | 7 | ||||
-rw-r--r-- | src/parser_json.c | 9 |
2 files changed, 13 insertions, 3 deletions
@@ -864,7 +864,12 @@ json_t *socket_expr_json(const struct expr *expr, struct output_ctx *octx) json_t *osf_expr_json(const struct expr *expr, struct output_ctx *octx) { - json_t *root = json_pack("{s:s}", "key", "name"); + json_t *root; + + if (expr->osf.flags & NFT_OSF_F_VERSION) + root = json_pack("{s:s}", "key", "version"); + else + root = json_pack("{s:s}", "key", "name"); switch (expr->osf.ttl) { case 1: diff --git a/src/parser_json.c b/src/parser_json.c index 704d85dc..827604be 100644 --- a/src/parser_json.c +++ b/src/parser_json.c @@ -381,6 +381,7 @@ static struct expr *json_parse_osf_expr(struct json_ctx *ctx, const char *type, json_t *root) { const char *key, *ttl; + uint32_t flagval = 0; uint8_t ttlval = 0; if (json_unpack_err(ctx, root, "{s:s}", "key", &key)) @@ -397,8 +398,12 @@ static struct expr *json_parse_osf_expr(struct json_ctx *ctx, } } - if (!strcmp(key, "name")) - return osf_expr_alloc(int_loc, ttlval); + if (!strcmp(key, "name")) { + return osf_expr_alloc(int_loc, ttlval, flagval); + } else if (!strcmp(key, "version")) { + flagval |= NFT_OSF_F_VERSION; + return osf_expr_alloc(int_loc, ttlval, flagval); + } json_error(ctx, "Invalid osf key value."); return NULL; |