On 11 July 2017 at 23:59, Phil Sutter <[email protected]> wrote:
> Usually one wants to at least initialize set_flags from the parent, so
> make allocation of a set's set expression more convenient.
>
> The idea to do this came when fixing an issue with output formatting of
> larger anonymous sets in nft monitor: Since
> netlink_events_cache_addset() didn't initialize set_flags,
> calculate_delim() didn't detect it's an anonymous set and therefore
> added newlines to the output.
>
> Reported-by: Arturo Borrero Gonzalez <[email protected]>
> Fixes: a9dc3ceabc10f ("expression: print sets and maps in pretty format")
> Signed-off-by: Phil Sutter <[email protected]>
> ---
Thanks for working on this Phil :-)
some comments below
> diff --git a/src/expression.c b/src/expression.c
> index f90ca6035bd3a..f51fbae281b95 100644
> --- a/src/expression.c
> +++ b/src/expression.c
> @@ -824,9 +824,16 @@ static const struct expr_ops set_expr_ops = {
> .destroy = compound_expr_destroy,
> };
>
> -struct expr *set_expr_alloc(const struct location *loc)
> +struct expr *set_expr_alloc(const struct location *loc, const struct set
> *set)
> {
> - return compound_expr_alloc(loc, &set_expr_ops);
> + struct expr *set_expr = compound_expr_alloc(loc, &set_expr_ops);
> +
> + if (set) {
> + set_expr->set_flags = set->flags;
> + set_expr->dtype = set->keytype;
> + }
> +
> + return set_expr;
> }
What about:
if (!set)
return set_expr;
set_expr->set_flags = set->flags;
[..]
return set_expr;
> diff --git a/src/segtree.c b/src/segtree.c
> index a2316a7b98041..f53536210018d 100644
> --- a/src/segtree.c
> +++ b/src/segtree.c
> @@ -602,10 +602,12 @@ static int expr_value_cmp(const void *p1, const void
> *p2)
> int ret;
>
> ret = mpz_cmp(expr_value(e1)->value, expr_value(e2)->value);
> - if (ret == 0 && (e1->flags & EXPR_F_INTERVAL_END))
> - return -1;
> - else
> - return 1;
> + if (ret == 0) {
> + if (e1->flags & EXPR_F_INTERVAL_END)
> + return -1;
> + else if (e2->flags & EXPR_F_INTERVAL_END)
> + return 1;
> + }
>
> return ret;
> }
> --
^^^
this last chunk belongs to another patch?
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html