From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Florian Westphal <fw@strlen.de>
Cc: netfilter-devel@vger.kernel.org
Subject: Re: [PATCH nf-next 1/3] netfilter: nft_ct: allow to set ctnetlink event types of a connection
Date: Sat, 15 Apr 2017 11:09:45 +0200 [thread overview]
Message-ID: <20170415090945.GA4023@salvia> (raw)
In-Reply-To: <20170415084505.26176-2-fw@strlen.de>
On Sat, Apr 15, 2017 at 10:45:03AM +0200, Florian Westphal wrote:
> by default the kernel emits all ctnetlink events for a connection.
> This allows to select the types of events to generate for a connection.
>
> This allows to e.g. only send DESTROY events but no NEW/UPDATE ones.
>
> This was already possible via iptables' CT target.
> The nft version has the advantage that it can also be used with
> already-established conntracks.
>
> Signed-off-by: Florian Westphal <fw@strlen.de>
> ---
> include/uapi/linux/netfilter/nf_tables.h | 2 ++
> net/netfilter/nft_ct.c | 19 ++++++++++++++++++-
> 2 files changed, 20 insertions(+), 1 deletion(-)
>
> diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h
> index 8f3842690d17..683f6f88fcac 100644
> --- a/include/uapi/linux/netfilter/nf_tables.h
> +++ b/include/uapi/linux/netfilter/nf_tables.h
> @@ -901,6 +901,7 @@ enum nft_rt_attributes {
> * @NFT_CT_BYTES: conntrack bytes
> * @NFT_CT_AVGPKT: conntrack average bytes per packet
> * @NFT_CT_ZONE: conntrack zone
> + * @NFT_CT_EVENTMASK: ctnetlink events to be generated for this conntrack
> */
> enum nft_ct_keys {
> NFT_CT_STATE,
> @@ -921,6 +922,7 @@ enum nft_ct_keys {
> NFT_CT_BYTES,
> NFT_CT_AVGPKT,
> NFT_CT_ZONE,
> + NFT_CT_EVENTMASK,
> };
>
> /**
> diff --git a/net/netfilter/nft_ct.c b/net/netfilter/nft_ct.c
> index 6e23dbbedd7f..4f642977f8a5 100644
> --- a/net/netfilter/nft_ct.c
> +++ b/net/netfilter/nft_ct.c
> @@ -264,7 +264,7 @@ static void nft_ct_set_eval(const struct nft_expr *expr,
> struct nf_conn *ct;
>
> ct = nf_ct_get(skb, &ctinfo);
> - if (ct == NULL)
> + if (ct == NULL || nf_ct_is_template(ct))
I wonder if this should go in a oneliner, given this is fixing the
fact that we may end up using the template. So someone has a chance to
pass it to -stable. I'll be fine either way, no problem.
Another comment below.
> return;
>
> switch (priv->key) {
> @@ -284,6 +284,16 @@ static void nft_ct_set_eval(const struct nft_expr *expr,
> NF_CT_LABELS_MAX_SIZE / sizeof(u32));
> break;
> #endif
> +#ifdef CONFIG_NF_CONNTRACK_EVENTS
> + case NFT_CT_EVENTMASK: {
> + struct nf_conntrack_ecache *e = nf_ct_ecache_find(ct);
> + u16 ctmask = (u16)regs->data[priv->sreg];
Liping added helpers to fetch data from registers, I think it
applies to this case too.
Thanks!
next prev parent reply other threads:[~2017-04-15 9:09 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-04-15 8:45 netfilter: nftables: ctnetlink event type set support Florian Westphal
2017-04-15 8:45 ` [PATCH nf-next 1/3] netfilter: nft_ct: allow to set ctnetlink event types of a connection Florian Westphal
2017-04-15 9:09 ` Pablo Neira Ayuso [this message]
2017-04-15 9:44 ` Florian Westphal
2017-04-15 9:50 ` Pablo Neira Ayuso
2017-04-15 8:45 ` [PATCH libnftnl 2/3] src: ct eventmask support Florian Westphal
2017-04-15 8:45 ` [PATCH nft 3/3] ct: add conntrack event mask support Florian Westphal
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20170415090945.GA4023@salvia \
--to=pablo@netfilter.org \
--cc=fw@strlen.de \
--cc=netfilter-devel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).