All of lore.kernel.org
 help / color / mirror / Atom feed
From: Florian Westphal <fw@strlen.de>
To: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: Florian Westphal <fw@strlen.de>, netfilter-devel@vger.kernel.org
Subject: Re: let nftables indicate incomplete dissections
Date: Mon, 24 Jun 2024 23:24:13 +0200	[thread overview]
Message-ID: <20240624212413.GB14597@breakpoint.cc> (raw)
In-Reply-To: <Znm3kJtti8kJYtPu@calendula>

Pablo Neira Ayuso <pablo@netfilter.org> wrote:
> > Add a "bool incomplete" to libnftnl strnct nftnl_expr, then set it
> > from each expr->parse callback if there is a new netlink attribute that
> > we did not understand.
> > 
> > nft then checks if this is incomplete-marker is set.
> 
> Is this sufficient? There are attribute values that could have an
> unknown/unsupported value, eg. exthdr type (assuming a new extension
> is supported).

No, but libnftnl can't known (and should not care) if nftables can
eat the value provided.

i.e., 'incomplete' means 'there were attributes that I did not understand',
nothing more.

> I am afraid setting incomplete for an unknown attribute also restricts
> netlink extensibility.

How so?

> Netlink allows for adding new attributes. Attributes also determine
> semantics, eg. exthdr type restricts the semantics of other existing
> attributes. There are also flags attributes which provide a hint on
> what is support or not, toggling such flag allows kernel to reject
> something that is not support.

But thats up to higher level tool, i.e. nftables?

I don't think libnftnl should try to guess if nftables can make
sense of the rule provided (or set, element, etc).

> > > > Related problem: entity that is using the raw netlink interface, it
> > > > that case libnftnl might be able to parse everything but nft could
> > > > lack the ability to properly print this.
> > > 
> > > There are two options here:
> > > 
> > > - Add more raw expressions and dump them, eg. meta@15, where 15 is the type.
> > >   This is more compact. If there is a requirement to allow to restore
> > >   this from older nftables versions, then it might be not enough since
> > >   maybe there is a need for meta@type,somethingelse (as in the ct direction
> > >   case).
> > 
> > Yes, for attributes that libnftnl knows about but where nft lacks a name
> > mapping (i.e., we can decode its META_KEY 0x42 but we have no idea what
> > that means we could in fact add such a representation scheme.
> > 
> > > - Use a netlink representation as raw expression: meta@1,3,0x0x000000004
> > >   but this requires dumping the whole list of attributes which is chatty.
> > 
> > Yes.  Perhaps its better to consider adding a new tool (script?) that
> > can dump the netlink soup without interpretation.  IIRC libmnl debug
> > already provides this functionality.
> > 
> > Very chatty but it would be good enough to figure out what such
> > hypothetical raw client did.
> 
> I see, a binary netlink dump format.

Yes, kinda like objump/readelf.

      reply	other threads:[~2024-06-24 21:24 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2024-06-12  7:50 let nftables indicate incomplete dissections Florian Westphal
2024-06-12 13:02 ` Phil Sutter
2024-06-18  8:11 ` Pablo Neira Ayuso
2024-06-18  9:31   ` Florian Westphal
2024-06-24 18:14     ` Pablo Neira Ayuso
2024-06-24 21:24       ` Florian Westphal [this message]

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=20240624212413.GB14597@breakpoint.cc \
    --to=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.