Next round of combined cache update fix and intra-transaction rule reference support. Patch 2 is new, it avoids accidential cache updates when committing a transaction containing flush ruleset command and kernel ruleset has changed meanwhile. Patch 3 is also new: If a transaction fails in kernel, local cache is incorrect - drop it. Patch 9 is a new requirement for patch 10 due to relocation of new functions. Patch 10 was changed, changelog included. Phil Sutter (10): src: Fix cache_flush() in cache_needs_more() logic src: Utilize CMD_FLUSH for cache->cmd libnftables: Drop cache in error case libnftables: Keep list of commands in nft context src: Make {table,chain}_not_found() public src: Restore local entries after cache update rule: Introduce rule_lookup_by_index() src: Make cache_is_complete() public include: Collect __stmt_binary_error() wrapper macros src: Support intra-transaction rule references include/erec.h | 6 + include/nftables.h | 1 + include/rule.h | 10 + src/evaluate.c | 71 ++---- src/libnftables.c | 25 ++- src/mnl.c | 4 + src/rule.c | 202 +++++++++++++++++- tests/json_echo/run-test.py | 6 +- .../shell/testcases/cache/0003_cache_update_0 | 7 + tests/shell/testcases/transactions/0024rule_0 | 17 ++ tests/shell/testcases/transactions/0025rule_0 | 21 ++ .../transactions/dumps/0024rule_0.nft | 8 + .../transactions/dumps/0025rule_0.nft | 6 + 13 files changed, 314 insertions(+), 70 deletions(-) create mode 100755 tests/shell/testcases/transactions/0024rule_0 create mode 100755 tests/shell/testcases/transactions/0025rule_0 create mode 100644 tests/shell/testcases/transactions/dumps/0024rule_0.nft create mode 100644 tests/shell/testcases/transactions/dumps/0025rule_0.nft -- 2.21.0