]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
json: osf: add version json support
authorFernando Fernandez Mancera <ffmancera@riseup.net>
Wed, 27 Mar 2019 10:37:57 +0000 (11:37 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 8 Apr 2019 21:46:50 +0000 (23:46 +0200)
Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/json.c
src/parser_json.c

index 276a3c0f9e7766e5f89e171b179ca750bd8e7b46..4900c02336b56c8e3dd73e1af92af00ef1d430e8 100644 (file)
@@ -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:
index 704d85dc4556f95793459ae0b51049f32ee76a22..827604be786baab3d26870f5d433e0afdb7191a2 100644 (file)
@@ -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;