diff options
Diffstat (limited to 'src/netlink.c')
-rw-r--r-- | src/netlink.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/src/netlink.c b/src/netlink.c index bef33a1d..cff93446 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -694,6 +694,8 @@ static struct chain *netlink_delinearize_chain(struct netlink_ctx *ctx, nft_chain_attr_is_set(nlc, NFT_CHAIN_ATTR_POLICY)) { chain->hooknum = nft_chain_attr_get_u32(nlc, NFT_CHAIN_ATTR_HOOKNUM); + chain->hookstr = + hooknum2str(chain->handle.family, chain->hooknum); chain->priority = nft_chain_attr_get_s32(nlc, NFT_CHAIN_ATTR_PRIO); chain->type = @@ -979,7 +981,7 @@ int netlink_get_table(struct netlink_ctx *ctx, const struct handle *h, ntable = netlink_delinearize_table(ctx, nlt); table->flags = ntable->flags; - xfree(ntable); + table_free(ntable); out: nft_table_free(nlt); return err; @@ -1989,14 +1991,15 @@ static void netlink_events_cache_deltable(struct netlink_mon_handler *monh, nlt = netlink_table_alloc(nlh); h.family = nft_table_attr_get_u32(nlt, NFT_TABLE_ATTR_FAMILY); h.table = nft_table_attr_get_str(nlt, NFT_TABLE_ATTR_NAME); - nft_table_free(nlt); t = table_lookup(&h); if (t == NULL) - return; + goto out; list_del(&t->list); table_free(t); +out: + nft_table_free(nlt); } static void netlink_events_cache_addset(struct netlink_mon_handler *monh, |