From 8810a28d381580b8f9cce393481e83faf4f43f6e Mon Sep 17 00:00:00 2001 From: Duncan Roe Date: Thu, 26 Apr 2018 09:23:49 +1000 Subject: src: fix --debug mnl not producing output 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 Signed-off-by: Florian Westphal --- include/rule.h | 2 +- src/evaluate.c | 30 +++++++++++++++--------------- src/netlink.c | 2 +- src/rule.c | 4 ++-- 4 files changed, 19 insertions(+), 19 deletions(-) diff --git a/include/rule.h b/include/rule.h index 86f72814..ee22cf21 100644 --- a/include/rule.h +++ b/include/rule.h @@ -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); diff --git a/src/evaluate.c b/src/evaluate.c index 265a73fe..e6978ea4 100644 --- a/src/evaluate.c +++ b/src/evaluate.c @@ -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) diff --git a/src/netlink.c b/src/netlink.c index 75c371dc..5fb42074 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -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; diff --git a/src/rule.c b/src/rule.c index e0e06c52..f8a27570 100644 --- a/src/rule.c +++ b/src/rule.c @@ -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, }; -- cgit v1.2.3