summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDuncan Roe <duncan_roe@optusnet.com.au>2018-04-26 09:23:49 +1000
committerFlorian Westphal <fw@strlen.de>2018-04-26 01:34:45 +0200
commit8810a28d381580b8f9cce393481e83faf4f43f6e (patch)
treee043713a91af0de6c0a4d7edd7c979283fb7547a
parent45172efadbedee2b2dedc1e771046cca7edb0111 (diff)
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 <duncan_roe@optusnet.com.au> Signed-off-by: Florian Westphal <fw@strlen.de>
-rw-r--r--include/rule.h2
-rw-r--r--src/evaluate.c30
-rw-r--r--src/netlink.c2
-rw-r--r--src/rule.c4
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,
};