summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPablo Neira Ayuso <pablo@netfilter.org>2022-04-18 15:17:59 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2022-04-18 17:25:13 +0200
commitd1289bff58e1878c3162f574c603da993e29b113 (patch)
treee2e14871159dcf4ca2e18a00991b9dc6fb937b80
parent721b9dec5499b0a06a1b7a30c2a989cdc712a344 (diff)
intervals: set on EXPR_F_KERNEL flag for new elements in set cache
So follow up command in this batch that update the set assumes this element is already in the kernel. Fixes: 3da9643fb9ff ("intervals: add support to automerge with kernel elements") Fixes: 3ed9fadaab95 ("intervals: build list of elements to be added from cache") Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
-rw-r--r--src/intervals.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/src/intervals.c b/src/intervals.c
index 584c69d5..a7423852 100644
--- a/src/intervals.c
+++ b/src/intervals.c
@@ -244,6 +244,7 @@ int set_automerge(struct list_head *msgs, struct cmd *cmd, struct set *set,
i->key->left->value, i->key->right->value);
}
clone = expr_clone(i);
+ clone->flags |= EXPR_F_KERNEL;
list_add_tail(&clone->list, &existing_set->init->expressions);
}
}
@@ -481,6 +482,7 @@ int set_delete(struct list_head *msgs, struct cmd *cmd, struct set *set,
if (!(i->flags & EXPR_F_KERNEL)) {
clone = expr_clone(i);
list_add_tail(&clone->list, &add->expressions);
+ i->flags |= EXPR_F_KERNEL;
}
}
@@ -609,6 +611,7 @@ int set_overlap(struct list_head *msgs, struct set *set, struct expr *init)
list_move_tail(&i->list, &existing_set->init->expressions);
else if (existing_set) {
clone = expr_clone(i);
+ clone->flags |= EXPR_F_KERNEL;
list_add_tail(&clone->list, &existing_set->init->expressions);
}
}