]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
src: fix --debug mnl not producing output
authorDuncan Roe <duncan_roe@optusnet.com.au>
Wed, 25 Apr 2018 23:23:49 +0000 (09:23 +1000)
committerFlorian Westphal <fw@strlen.de>
Wed, 25 Apr 2018 23:34:45 +0000 (01:34 +0200)
cache_update() needs to accept the full debug mask instead of a boolean of
NFT_DEBUG_NETLINK, because called functions may wish to check other bits
(NFT_DEBUG_MNL in particular).

Signed-off-by: Duncan Roe <duncan_roe@optusnet.com.au>
Signed-off-by: Florian Westphal <fw@strlen.de>
include/rule.h
src/evaluate.c
src/netlink.c
src/rule.c

index 86f728145d2d3136b25e7d5681fa317dc0718f08..ee22cf217ac6b25f25577de9af913107c1be7010 100644 (file)
@@ -552,7 +552,7 @@ struct netlink_ctx;
 extern int do_command(struct netlink_ctx *ctx, struct cmd *cmd);
 
 extern int cache_update(struct mnl_socket *nf_sock, struct nft_cache *cache,
-                       enum cmd_ops cmd, struct list_head *msgs, bool debug,
+                       enum cmd_ops cmd, struct list_head *msgs, unsigned int debug_flag,
                        struct output_ctx *octx);
 extern void cache_flush(struct list_head *table_list);
 extern void cache_release(struct nft_cache *cache);
index 265a73fe9b6569441d4b7fedfe53e38b5b2b289b..e6978ea42c6645bae7584422b69a61e14351dd2d 100644 (file)
@@ -184,7 +184,7 @@ static int expr_evaluate_symbol(struct eval_ctx *ctx, struct expr **expr)
                break;
        case SYMBOL_SET:
                ret = cache_update(ctx->nf_sock, ctx->cache, ctx->cmd->op,
-                                  ctx->msgs, ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->msgs, ctx->debug_mask, ctx->octx);
                if (ret < 0)
                        return ret;
 
@@ -2995,14 +2995,14 @@ static int cmd_evaluate_add(struct eval_ctx *ctx, struct cmd *cmd)
        switch (cmd->obj) {
        case CMD_OBJ_SETELEM:
                ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op,
-                                  ctx->msgs, ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->msgs, ctx->debug_mask, ctx->octx);
                if (ret < 0)
                        return ret;
 
                return setelem_evaluate(ctx, &cmd->expr);
        case CMD_OBJ_SET:
                ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op,
-                                  ctx->msgs, ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->msgs, ctx->debug_mask, ctx->octx);
                if (ret < 0)
                        return ret;
 
@@ -3013,7 +3013,7 @@ static int cmd_evaluate_add(struct eval_ctx *ctx, struct cmd *cmd)
                return rule_evaluate(ctx, cmd->rule);
        case CMD_OBJ_CHAIN:
                ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op,
-                                  ctx->msgs, ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->msgs, ctx->debug_mask, ctx->octx);
                if (ret < 0)
                        return ret;
 
@@ -3022,7 +3022,7 @@ static int cmd_evaluate_add(struct eval_ctx *ctx, struct cmd *cmd)
                return table_evaluate(ctx, cmd->table);
        case CMD_OBJ_FLOWTABLE:
                ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op,
-                                  ctx->msgs, ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->msgs, ctx->debug_mask, ctx->octx);
                if (ret < 0)
                        return ret;
 
@@ -3045,7 +3045,7 @@ static int cmd_evaluate_delete(struct eval_ctx *ctx, struct cmd *cmd)
        switch (cmd->obj) {
        case CMD_OBJ_SETELEM:
                ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op,
-                                  ctx->msgs, ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->msgs, ctx->debug_mask, ctx->octx);
                if (ret < 0)
                        return ret;
 
@@ -3072,7 +3072,7 @@ static int cmd_evaluate_get(struct eval_ctx *ctx, struct cmd *cmd)
        int ret;
 
        ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op, ctx->msgs,
-                          ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                          ctx->debug_mask, ctx->octx);
        if (ret < 0)
                return ret;
 
@@ -3118,7 +3118,7 @@ static int cmd_evaluate_list(struct eval_ctx *ctx, struct cmd *cmd)
        int ret;
 
        ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op, ctx->msgs,
-                          ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                          ctx->debug_mask, ctx->octx);
        if (ret < 0)
                return ret;
 
@@ -3206,7 +3206,7 @@ static int cmd_evaluate_reset(struct eval_ctx *ctx, struct cmd *cmd)
        int ret;
 
        ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op, ctx->msgs,
-                          ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                          ctx->debug_mask, ctx->octx);
        if (ret < 0)
                return ret;
 
@@ -3245,7 +3245,7 @@ static int cmd_evaluate_flush(struct eval_ctx *ctx, struct cmd *cmd)
                break;
        case CMD_OBJ_SET:
                ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op, ctx->msgs,
-                                  ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->debug_mask, ctx->octx);
                if (ret < 0)
                        return ret;
 
@@ -3260,7 +3260,7 @@ static int cmd_evaluate_flush(struct eval_ctx *ctx, struct cmd *cmd)
                return 0;
        case CMD_OBJ_MAP:
                ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op, ctx->msgs,
-                                  ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->debug_mask, ctx->octx);
                if (ret < 0)
                        return ret;
 
@@ -3275,7 +3275,7 @@ static int cmd_evaluate_flush(struct eval_ctx *ctx, struct cmd *cmd)
                return 0;
        case CMD_OBJ_METER:
                ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op, ctx->msgs,
-                                  ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->debug_mask, ctx->octx);
                if (ret < 0)
                        return ret;
 
@@ -3302,7 +3302,7 @@ static int cmd_evaluate_rename(struct eval_ctx *ctx, struct cmd *cmd)
        switch (cmd->obj) {
        case CMD_OBJ_CHAIN:
                ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op,
-                                  ctx->msgs, ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->msgs, ctx->debug_mask, ctx->octx);
                if (ret < 0)
                        return ret;
 
@@ -3400,7 +3400,7 @@ static int cmd_evaluate_monitor(struct eval_ctx *ctx, struct cmd *cmd)
        int ret;
 
        ret = cache_update(ctx->nf_sock, ctx->cache, cmd->op, ctx->msgs,
-                          ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                          ctx->debug_mask, ctx->octx);
        if (ret < 0)
                return ret;
 
@@ -3425,7 +3425,7 @@ static int cmd_evaluate_export(struct eval_ctx *ctx, struct cmd *cmd)
                return cmd_error(ctx, "this output type is not supported");
 
        return cache_update(ctx->nf_sock, ctx->cache, cmd->op, ctx->msgs,
-                           ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                           ctx->debug_mask, ctx->octx);
 }
 
 static int cmd_evaluate_import(struct eval_ctx *ctx, struct cmd *cmd)
index 75c371dcf2a890c4db53053cc5a23737ec751830..5fb42074d9007427ca324329126c9c8f21aee007 100644 (file)
@@ -478,7 +478,7 @@ int netlink_replace_rule_batch(struct netlink_ctx *ctx, const struct cmd *cmd)
        if (ctx->octx->echo) {
                err = cache_update(ctx->nf_sock, ctx->cache,
                                   CMD_INVALID, ctx->msgs,
-                                  ctx->debug_mask & NFT_DEBUG_NETLINK, ctx->octx);
+                                  ctx->debug_mask, ctx->octx);
                if (err < 0)
                        return err;
 
index e0e06c523241db57791369217a37ee1bf988a872..f8a27570ad6a8c26dc81a28d0f18fbebb2c321d7 100644 (file)
@@ -143,7 +143,7 @@ static int cache_init(struct netlink_ctx *ctx, enum cmd_ops cmd)
 }
 
 int cache_update(struct mnl_socket *nf_sock, struct nft_cache *cache,
-                enum cmd_ops cmd, struct list_head *msgs, bool debug,
+                enum cmd_ops cmd, struct list_head *msgs, unsigned int debug_mask,
                 struct output_ctx *octx)
 {
        uint16_t genid;
@@ -153,7 +153,7 @@ int cache_update(struct mnl_socket *nf_sock, struct nft_cache *cache,
                .nf_sock        = nf_sock,
                .cache          = cache,
                .msgs           = msgs,
-               .debug_mask     = debug ? NFT_DEBUG_NETLINK : 0,
+               .debug_mask     = debug_mask,
                .octx           = octx,
        };