From b808caea50a9de10530591b2e83c243d9fbf4855 Mon Sep 17 00:00:00 2001 From: Phil Sutter Date: Thu, 7 Sep 2017 19:41:27 +0200 Subject: chain: Don't print unset policy value in netlink debug The policy field was printed unconditionally, but if it wasn't set the default value 0 was printed as 'policy drop' which is not correct. Signed-off-by: Phil Sutter Signed-off-by: Pablo Neira Ayuso --- src/chain.c | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/chain.c b/src/chain.c index 29860c5..e5b9fe3 100644 --- a/src/chain.c +++ b/src/chain.c @@ -795,16 +795,24 @@ static int nftnl_chain_snprintf_default(char *buf, size_t size, SNPRINTF_BUFFER_SIZE(ret, size, len, offset); if (c->flags & (1 << NFTNL_CHAIN_HOOKNUM)) { - ret = snprintf(buf+offset, len, - " type %s hook %s prio %d policy %s " - "packets %"PRIu64" bytes %"PRIu64"", + ret = snprintf(buf + offset, len, " type %s hook %s prio %d", c->type, nftnl_hooknum2str(c->family, c->hooknum), - c->prio, nftnl_verdict2str(c->policy), + c->prio); + SNPRINTF_BUFFER_SIZE(ret, size, len, offset); + + if (c->flags & (1 << NFTNL_CHAIN_POLICY)) { + ret = snprintf(buf + offset, len, " policy %s", + nftnl_verdict2str(c->policy)); + SNPRINTF_BUFFER_SIZE(ret, size, len, offset); + } + + ret = snprintf(buf + offset, len, + " packets %"PRIu64" bytes %"PRIu64"", c->packets, c->bytes); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); if (c->flags & (1 << NFTNL_CHAIN_DEV)) { - ret = snprintf(buf+offset, len, " dev %s ", c->dev); + ret = snprintf(buf + offset, len, " dev %s ", c->dev); SNPRINTF_BUFFER_SIZE(ret, size, len, offset); } } -- cgit v1.2.3