All of lore.kernel.org
 help / color / mirror / Atom feed
From: Phil Sutter <phil@nwl.cc>
To: Florian Westphal <fw@strlen.de>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>,
	netfilter-devel@vger.kernel.org, Eric Garver <e@erig.me>
Subject: Re: [nf-next PATCH v4 15/16] netfilter: nf_tables: Add notications for hook changes
Date: Wed, 25 Sep 2024 19:25:44 +0200	[thread overview]
Message-ID: <ZvRHmHn6wllDFukN@orbyte.nwl.cc> (raw)
In-Reply-To: <20240921091034.GA5023@breakpoint.cc>

On Sat, Sep 21, 2024 at 11:10:34AM +0200, Florian Westphal wrote:
> Phil Sutter <phil@nwl.cc> wrote:
> > Notify user space if netdev hooks are updated due to netdev add/remove
> > events. Send minimal notification messages by introducing
> > NFT_MSG_NEWDEV/DELDEV message types describing a single device only.
> > 
> > Signed-off-by: Phil Sutter <phil@nwl.cc>
> > ---
> >  include/net/netfilter/nf_tables.h        |  2 +
> >  include/uapi/linux/netfilter/nf_tables.h |  5 +++
> >  net/netfilter/nf_tables_api.c            | 56 ++++++++++++++++++++++++
> >  net/netfilter/nft_chain_filter.c         |  1 +
> >  4 files changed, 64 insertions(+)
> > 
> > diff --git a/include/net/netfilter/nf_tables.h b/include/net/netfilter/nf_tables.h
> > index eaf2f5184bdf..f8da38e45277 100644
> > --- a/include/net/netfilter/nf_tables.h
> > +++ b/include/net/netfilter/nf_tables.h
> > @@ -1132,6 +1132,8 @@ int nft_setelem_validate(const struct nft_ctx *ctx, struct nft_set *set,
> >  int nft_set_catchall_validate(const struct nft_ctx *ctx, struct nft_set *set);
> >  int nf_tables_bind_chain(const struct nft_ctx *ctx, struct nft_chain *chain);
> >  void nf_tables_unbind_chain(const struct nft_ctx *ctx, struct nft_chain *chain);
> > +void nf_tables_chain_device_notify(const struct nft_chain *chain,
> > +				   const struct net_device *dev, int event);
> >  
> >  enum nft_chain_types {
> >  	NFT_CHAIN_T_DEFAULT = 0,
> > diff --git a/include/uapi/linux/netfilter/nf_tables.h b/include/uapi/linux/netfilter/nf_tables.h
> > index d6476ca5d7a6..3a874febf1ac 100644
> > --- a/include/uapi/linux/netfilter/nf_tables.h
> > +++ b/include/uapi/linux/netfilter/nf_tables.h
> > @@ -142,6 +142,8 @@ enum nf_tables_msg_types {
> >  	NFT_MSG_DESTROYOBJ,
> >  	NFT_MSG_DESTROYFLOWTABLE,
> >  	NFT_MSG_GETSETELEM_RESET,
> > +	NFT_MSG_NEWDEV,
> > +	NFT_MSG_DELDEV,
> 
> This relies on implicit NFNL_CB_UNSPEC == 0 and nfnetlink
> bailing out whe NFT_MSG_NEWDEV appears in a netlink message
> coming from userspace.

I guess with 'implicit NFNL_CB_UNSPEC == 0' you mean the extra
nf_tables_cb array fields' 'type' value being 0 (nfnetlink.h explicitly
defines NFNL_CB_UNSPEC value as 0). I don't see the connection here
though, probably I miss nfnetlink_rcv_msg() relying on that field value
or so.

I do see implicit dependency on attr_count field being 0 via
nla_parse_deprecated().

> Is there precedence for this?
> If not, maybe better to add explicit entries to the
> nf_tables_cb[] array?
> 
> AFAICS its fine as-is, nfnetlink won't blindly invoke
> NULL ->call() pointer, but I'm not sure this was designed
> to be this way or if this is a coincidence.

I see at least NFNL_MSG_ACCT_OVERQUOTA missing from nfnl_acct_cb. The
former was introduced in 2014. May I claim grandfathering? ;)

Cheers, Phil

  reply	other threads:[~2024-09-25 17:25 UTC|newest]

Thread overview: 24+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-09-20 20:23 [nf-next PATCH v4 00/16] Dynamic hook interface binding Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 01/16] netfilter: nf_tables: Flowtable hook's pf value never varies Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 02/16] netfilter: nf_tables: Store user-defined hook ifname Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 03/16] netfilter: nf_tables: Use stored ifname in netdev hook dumps Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 04/16] netfilter: nf_tables: Compare netdev hooks based on stored name Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 05/16] netfilter: nf_tables: Tolerate chains with no remaining hooks Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 06/16] netfilter: nf_tables: Introduce functions freeing nft_hook objects Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 07/16] netfilter: nf_tables: Introduce nft_hook_find_ops() Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 08/16] netfilter: nf_tables: Introduce nft_register_flowtable_ops() Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 09/16] netfilter: nf_tables: Drop __nft_unregister_flowtable_net_hooks() Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 10/16] netfilter: nf_tables: Have a list of nf_hook_ops in nft_hook Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 11/16] netfilter: nf_tables: chain: Respect NETDEV_REGISTER events Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 12/16] netfilter: nf_tables: flowtable: " Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 13/16] netfilter: nf_tables: Handle NETDEV_CHANGENAME events Phil Sutter
2024-09-22  7:32   ` Florian Westphal
2024-09-22 10:48     ` Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 14/16] netfilter: nf_tables: Support wildcard netdev hook specs Phil Sutter
2024-09-20 20:23 ` [nf-next PATCH v4 15/16] netfilter: nf_tables: Add notications for hook changes Phil Sutter
2024-09-21  9:10   ` Florian Westphal
2024-09-25 17:25     ` Phil Sutter [this message]
2024-09-25 17:51       ` Florian Westphal
2024-09-25 18:16         ` Phil Sutter
2024-09-25 18:17           ` Florian Westphal
2024-09-20 20:23 ` [nf-next PATCH v4 16/16] selftests: netfilter: Torture nftables netdev hooks Phil Sutter

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=ZvRHmHn6wllDFukN@orbyte.nwl.cc \
    --to=phil@nwl.cc \
    --cc=e@erig.me \
    --cc=fw@strlen.de \
    --cc=netfilter-devel@vger.kernel.org \
    --cc=pablo@netfilter.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.