From a6931ebc4742476ce3098d74e4ece263c65ae142 Mon Sep 17 00:00:00 2001 From: Eric Leblond Date: Mon, 18 Nov 2013 08:40:21 +0100 Subject: netlink: only display wanted chain in listing When specifying a chain to list, all created chains were displayed with a void content: # nft list chain filter table ip filter { chain input { } chain new { counter packets 17971 bytes 2380637 accept counter packets 0 bytes 0 accept } } With the attached patch, only the asked chain is displayed: # nft list chain filter table ip filter { chain new { counter packets 17971 bytes 2380637 accept # handle 36 counter packets 0 bytes 0 accept # handle 40 } } Signed-off-by: Eric Leblond Signed-off-by: Pablo Neira Ayuso --- src/netlink.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/netlink.c b/src/netlink.c index a62c3572..15cba793 100644 --- a/src/netlink.c +++ b/src/netlink.c @@ -544,6 +544,10 @@ static int list_chain_cb(struct nft_chain *nlc, void *arg) strcmp(nft_chain_attr_get_str(nlc, NFT_CHAIN_ATTR_TABLE), h->table) != 0) return 0; + if (h->chain && + strcmp(nft_chain_attr_get_str(nlc, NFT_CHAIN_ATTR_NAME), h->chain) != 0) + return 0; + chain = chain_alloc(nft_chain_attr_get_str(nlc, NFT_CHAIN_ATTR_NAME)); chain->handle.family = nft_chain_attr_get_u32(nlc, NFT_CHAIN_ATTR_FAMILY); -- cgit v1.2.3