[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <0c7f81c740a5670abfbc6249b58bbd318a24eaec.camel@sipsolutions.net>
Date: Fri, 26 Apr 2019 21:14:43 +0200
From: Johannes Berg <johannes@...solutions.net>
To: Pablo Neira Ayuso <pablo@...filter.org>
Cc: netfilter-devel@...r.kernel.org, netdev@...r.kernel.org
Subject: Re: [PATCH RFC 4/4] netfilter: nf_tables: add netlink description
On Fri, 2019-04-26 at 20:04 +0200, Pablo Neira Ayuso wrote:
> On Fri, Apr 26, 2019 at 07:28:15PM +0200, Johannes Berg wrote:
> > On Fri, 2019-04-26 at 19:17 +0200, Johannes Berg wrote:
> > >
> > > Ideally, we'd add this as
> > >
> > > {
> > > .cmd = XYZ,
> > > .doit = do_xyz,
> > > .dumpit = dump_xyz,
> > > .attrs = { ATTR_A, ATTR_B, ATTR_C, ATTR_D },
> > > }
> > >
> > > but of course there's no good way to express this in C, you'd have to
> > > build an out-of-line array and point to it.
> >
> > Actually, it's possibly even more complicated. After all, it is possible
> > that you have an ATTR_N, that is nested, and that contains certain sub-
> > attributes (ATTR_N_A, ATTR_N_B, ...) of which only some are valid for
> > the operation X, but a different subset is valid for operation Y.
>
> I solved this in my patchset through the object ID. So each command
> points to an object ID, then such object ID comes with a list of
> attributes.
Yeah, ok. Each object you had is basically its own policy. I just
*removed* having a separate policy for each command in generic netlink,
as ;-)
What really I think we should have is a common policy, but only some
attributes are valid in some commands.
I guess you can slice this in different ways. From a "how much space
does this consume" and "can I reuse some code across different commands"
I think having the same policy is a good idea though.
> If we use the list policies that you propose, then it's just an extra
> enumeration to maintain for each command. And many commands will
> likely reuse the same object ID.
A policy pointer, really.
The list of policies is just built internally when you dump out a policy
with its sub-policies for nested attributes/arrays.
johannes
Powered by blists - more mailing lists