On Wed, Aug 29, 2018 at 01:16:25PM +0200, Pablo Neira Ayuso wrote: > Hi Phil, > > On Wed, Aug 29, 2018 at 11:52:09AM +0200, Phil Sutter wrote: > > Hi, > > > > I found constellations in which userspace ruleset cache maintenance > > causes headaches. A "simple" case is this: > > > > | # nft flush ruleset > > | # nft -i > > | nft> add table ip t > > | nft> list ruleset > > | table ip t { > > | } > > | table ip t { > > | } Hm, wait. See below. [...] > > Here's a more complex one: > > > > | # ./src/nft -i > > | nft> list ruleset > > | nft> add table ip t > > | nft> add table ip t2 ; add chain ip t2 c > > | Error: Could not process rule: Table 't2' does not exist > > | add table ip t2 ; add chain ip t2 c > > | ^^^^^^^^^^^^^^^^^^ > > > > The first call to 'list ruleset' causes cache->genid to be non-zero. > > Adding the first table does not trigger a cache update, but kernel's > > genid increments as a result. Looks like we should be flushing after 'list ruleset' in interactive mode? In these two examples it looks like there's a missing flush somewhere in the interactive mode to me. I mean, we don't know when the next command comes, so doing fine grain tracking in this case makes no sense. Let me know, thanks.