netfilter-devel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
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!

  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).