Hi, This is another iteration of the set element automerge codebase rework, posted last time in March 1st. This series comes with a oneliner fix for Patch 2/7 "src: replace interval segment tree overlap and automerge" that sets on i->elem_flags instead of elem->elem_flags (this was breaking open intervals). Now tests/monitor are passing fine in this batch. This patchset removes the segment tree interval overlap/automerge codebase. This is replaced with mergesort of the set elements + check for overlaps by linearly iterating the set elements. This also allows to use automerge with set element deletions. This is passing tests/shell, tests/py and tests/monitor. Pablo Neira Ayuso (7): src: add EXPR_F_KERNEL to identify expression in the kernel src: replace interval segment tree overlap and automerge src: remove rbtree datastructure mnl: update mnl_nft_setelem_del() to allow for more reuse intervals: add support to automerge with kernel elements evaluate: allow for zero length ranges intervals: support to partial deletion with automerge include/Makefile.am | 2 +- include/expression.h | 7 +- include/intervals.h | 12 + include/mnl.h | 3 +- include/rbtree.h | 98 --- include/rule.h | 2 + src/Makefile.am | 2 +- src/cache.c | 6 + src/evaluate.c | 75 +- src/intervals.c | 740 ++++++++++++++++++ src/libnftables.c | 4 +- src/mergesort.c | 1 + src/mnl.c | 6 +- src/netlink.c | 1 + src/rbtree.c | 388 --------- src/rule.c | 25 +- src/segtree.c | 660 +--------------- .../shell/testcases/sets/0069interval_merge_0 | 28 + .../sets/dumps/0069interval_merge_0.nft | 9 + 19 files changed, 895 insertions(+), 1174 deletions(-) create mode 100644 include/intervals.h delete mode 100644 include/rbtree.h create mode 100644 src/intervals.c delete mode 100644 src/rbtree.c create mode 100755 tests/shell/testcases/sets/0069interval_merge_0 create mode 100644 tests/shell/testcases/sets/dumps/0069interval_merge_0.nft -- 2.30.2