On 11 July 2017 at 23:59, Phil Sutter <phil@xxxxxx> 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 <arturo@xxxxxxxxxxxxx> > Fixes: a9dc3ceabc10f ("expression: print sets and maps in pretty format") > Signed-off-by: Phil Sutter <phil@xxxxxx> > --- 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 majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html