nft: print counter issues
PATCH 1/2 nft: print counter issues
The patch fixes the counter print, missing line,
and delete warnings.
Signed-off-by Giuseppe Longo <[email protected]>
--- iptables/nft.c | 15 +++++++++++---- 1 files changed, 11 insertions(+), 4 deletions(-)
iptables/nft.c +11 -4
@@ -18,6 +18,7 @@#include <netdb.h> /* getprotobynumber */ #include <time.h> #include <stdarg.h> +#include <inttypes.h> #include <xtables.h> #include <libiptc/libxtc.h>
@@ -951,7 +952,7 @@ nft_print_counters(struct nft_rule_expr *e, struct nft_rule_expr_iter *iter, bool counters) {if (counters) { -printf ("-c %lu %lu " , +printf ("-c %" PRIu64" %" PRIu64" " ,nft_rule_expr_get_u64 (e,NFT_EXPR_CTR_PACKETS ),nft_rule_expr_get_u64 (e,NFT_EXPR_CTR_BYTES )); }
@@ -1077,10 +1078,10 @@ static void nft_chain_print_save(struct nft_chain *c, bool basechain)if (nft_chain_attr_get (c,NFT_CHAIN_ATTR_POLICY )) pol =nft_chain_attr_get_u32 (c,NFT_CHAIN_ATTR_POLICY ); -printf (":%s %s [%lu:%lu]\n" , chain, policy_name[pol], +printf (":%s %s [%" PRIu64":%" PRIu64"]\n" , chain, policy_name[pol], pkts, bytes); }else -printf (":%s - [%lu:%lu]\n" , chain, pkts, bytes); +printf (":%s - [%" PRIu64":%" PRIu64"]\n" , chain, pkts, bytes); } int nft_chain_save(struct nft_handle *h, struct nft_chain_list *list,
@@ -2480,6 +2481,7 @@ int nft_rule_list(struct nft_handle *h, const char *chain, const char *table,struct nft_chain_list *list;struct nft_chain_list_iter *iter;struct nft_chain *c; +bool found = false;/* If built-in chains don't exist for this table, create them */ if (nft_xtables_config_load (h,XTABLES_CONFIG_DEFAULT ,0 ) <0 )
@@ -2517,10 +2519,15 @@ int nft_rule_list(struct nft_handle *h, const char *chain, const char *table,if (chain &&strcmp (chain, chain_name) !=0 ) goto next; +if (found)printf ("\n" ); +print_header (format, chain_name, policy_name[policy], &ctrs, basechain, refs);__nft_rule_list (h, c, table, rulenum, format, print_firewall); + + found = true; + next: c =nft_chain_list_iter_next (iter); }
@@ -2567,7 +2574,7 @@ nft_rule_list_chain_save(struct nft_handle *h, const char *table,printf ("-P %s %s" , chain_name, policy_name[policy]);if (counters) { -printf (" -c %lu %lu\n" , +printf (" -c %" PRIu64" %" PRIu64"\n" ,nft_chain_attr_get_u64 (c,NFT_CHAIN_ATTR_PACKETS ),nft_chain_attr_get_u64 (c,NFT_CHAIN_ATTR_BYTES )); }else
PATCH 2/2 nft: mem leak in nft_rule_list_cb
Memory leak in function nft_rule_list_cb fixed.
Signed-off-by Giuseppe Longo <[email protected]>
--- iptables/nft.c | 1 + 1 files changed, 1 insertions(+), 0 deletions(-)
iptables/nft.c +1 -0
@@ -1140,6 +1140,7 @@ static int nft_rule_list_cb(const struct nlmsghdr *nlh, void *data)return MNL_CB_OK ; out:nft_rule_free (r); +nft_rule_list_free (list); err:return MNL_CB_OK ; }
Re: [PATCH 2/2] nft: mem leak in nft_rule_list_cb
Quoted 1 line · Giuseppe Longo
Memory leak in function
nft_rule_list_cbfixed.
Applied, thanks Giuseppe.
Quoted 2 lines · Giuseppe Longo
The patch fixes the counter print, missing line,
and delete warnings.
Applied, thanks.