After Pablo's evaluation sequence rework, this series (formerly fixing cache updates as well) has shrunken considerably: Patch 1 contains a proper fix for that workaround in evaluate_cache_add(). Patch 2 removes the cache-related workaround in tests/json_echo. Patches 3 and 4 contain prerequisites for the last one, which actually implements the support for referencing rules of the same transation with 'index' keyword. Phil Sutter (5): cache: Fix evaluation for rules with index reference tests/json_echo: Drop needless workaround rule: Introduce rule_lookup_by_index() src: Make cache_is_complete() public src: Support intra-transaction rule references include/rule.h | 5 + src/cache.c | 8 +- src/evaluate.c | 94 +++++++++++++++---- src/mnl.c | 4 + src/rule.c | 13 ++- 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 ++ 11 files changed, 157 insertions(+), 32 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