From fbae632804554aa39abb8f76fbca5935cdd7e620 Mon Sep 17 00:00:00 2001 From: Pablo Neira Ayuso Date: Thu, 5 Dec 2019 19:07:16 +0100 Subject: segtree: don't remove nul-root element from interval set Check from the delinearize set element path if the nul-root element already exists in the interval set. Hence, the element insertion path skips the implicit nul-root interval insertion. Under some circunstances, nft bogusly fails to delete the last element of the interval set and to create an element in an existing empty internal set. This patch includes a test that reproduces the issue. Fixes: 4935a0d561b5 ("segtree: special handling for the first non-matching segment") Signed-off-by: Pablo Neira Ayuso --- include/rule.h | 1 + 1 file changed, 1 insertion(+) (limited to 'include/rule.h') diff --git a/include/rule.h b/include/rule.h index 0b2eba37..dadeb4b9 100644 --- a/include/rule.h +++ b/include/rule.h @@ -307,6 +307,7 @@ struct set { struct expr *init; struct expr *rg_cache; uint32_t policy; + bool root; bool automerge; struct { uint32_t size; -- cgit v1.2.3