netfilter: nft_ct: make byte/packet expr more friendly
authorLiping Zhang <liping.zhang@spreadtrum.com>
Tue, 5 Jul 2016 15:23:00 +0000 (23:23 +0800)
committerPablo Neira Ayuso <pablo@netfilter.org>
Mon, 11 Jul 2016 10:16:02 +0000 (12:16 +0200)
If we want to use ct packets expr, and add a rule like follows:
  # nft add rule filter input ct packets gt 1 counter

We will find that no packets will hit it, because
nf_conntrack_acct is disabled by default. So It will
not work until we enable it manually via
"echo 1 > /proc/sys/net/netfilter/nf_conntrack_acct".

This is not friendly, so like xt_connbytes do, if the user
want to use ct byte/packet expr, enable nf_conntrack_acct
automatically.

Signed-off-by: Liping Zhang <liping.zhang@spreadtrum.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
net/netfilter/nft_ct.c

index 137e308d5b24c0865336da92e97686d8fef0b9d1..7ce8fd7ace78d2686a156299604f22cf56f0b9f4 100644 (file)
@@ -355,6 +355,9 @@ static int nft_ct_get_init(const struct nft_ctx *ctx,
        if (err < 0)
                return err;
 
+       if (priv->key == NFT_CT_BYTES || priv->key == NFT_CT_PKTS)
+               nf_ct_set_acct(ctx->net, true);
+
        return 0;
 }