]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
netlink: only display wanted chain in listing
authorEric Leblond <eric@regit.org>
Mon, 18 Nov 2013 07:40:21 +0000 (08:40 +0100)
committerPablo Neira Ayuso <pablo@netfilter.org>
Tue, 19 Nov 2013 20:31:32 +0000 (21:31 +0100)
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 <eric@regit.org>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/netlink.c

index a62c357229ec0b264e76f3ee33870ac2eeb9690d..15cba793eb4cf0d74dd719e20b0d682dfc921354 100644 (file)
@@ -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);