Re: nftables transaction semantics

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 02.03, Pablo Neira Ayuso wrote:
> On Mon, Mar 02, 2015 at 11:51:41AM +0000, Patrick McHardy wrote:
> > I'm looking at the nftables transaction code and wondering about the
> > semantics of GET operations intermixed with ADD/DEL operations:
> > 
> > AFAIK there are currently some inconsistencies:
> > 
> > - new sets get marked as inactive and invisible to GET until the
> >   transaction is supported. So
> > 
> >   ADD set
> >   GET set
> > 
> >   will return ENOENT.
> 
> These two follow different paths.
> 
> The ADD is included in the batch, the GET doesn't. So we won't see the
> object until we have finish processing a full batch.

That's on the userspace side? I didn't notice anything in the kernel
not handling GET inside a batch.
 
>     ADD set
>     --------> batch OK, commit
>     GET set
> 
> > - Rule GET operations OTOH don't care about the activeness of the rule
> >   at all, so
> > 
> >   DEL rule
> >   GET rule
> > 
> >   will return the rule even though it is actually deleted.
> >
> >   ADD rule
> >   GET rule
> >   transaction fail
> > 
> >   Will equally return the rule even though it will afterwards not be
> >   present.
> > 
> > So the general question is how to properly handle this. GET operations
> > should obviously take activeness into account and not return deleted
> > objects.
> 
> You have DUMP_INTR if a get happens while updating any of the lists.

Yeah, I meant the case of non-dump GET operations.

> > The next question would be how to handle failed transactions. We should
> > obviously only return new objects if the transaction actually succeeds,
> > so I guess this means handling GET requests in the commit path.
> 
> Userspace will notice the interference via the netlink flag and will
> retry from scratch.

Only talking about non-dumps, but I guess it equally applies to dumps
for the case that all objects fit into the first message.
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux