diff options
author | Phil Sutter <phil@nwl.cc> | 2017-07-19 15:05:27 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2017-07-19 19:24:38 +0200 |
commit | 6089630f54cecada1fcb91e12ad5eb1811010e48 (patch) | |
tree | b4401e5832352238fca1c8e2390230fe0c62492c /src/segtree.c | |
parent | 2b261897fa07006e8a46003f8448b69691555314 (diff) |
segtree: Introduce flag for half-open range elements
This flag is required by userspace only, so can live within userdata.
It's sole purpose is for 'nft monitor' to detect half-open ranges (which
are comprised of a single element only).
Signed-off-by: Phil Sutter <phil@nwl.cc>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/segtree.c')
-rw-r--r-- | src/segtree.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/src/segtree.c b/src/segtree.c index f5353621..34a00161 100644 --- a/src/segtree.c +++ b/src/segtree.c @@ -37,6 +37,7 @@ struct seg_tree { enum elementary_interval_flags { EI_F_INTERVAL_END = 0x1, + EI_F_INTERVAL_OPEN = 0x2, }; /** @@ -512,6 +513,8 @@ static void segtree_linearize(struct list_head *list, const struct set *set, mpz_bitmask(q, tree->keylen); nei = ei_alloc(p, q, NULL, EI_F_INTERVAL_END); list_add_tail(&nei->list, list); + } else { + prev->flags |= EI_F_INTERVAL_OPEN; } mpz_clear(p); @@ -538,6 +541,8 @@ static void set_insert_interval(struct expr *set, struct seg_tree *tree, if (ei->flags & EI_F_INTERVAL_END) expr->flags |= EXPR_F_INTERVAL_END; + if (ei->flags & EI_F_INTERVAL_OPEN) + expr->elem_flags |= SET_ELEM_F_INTERVAL_OPEN; compound_expr_add(set, expr); } |