From: Arturo Borrero Gonzalez <arturo@netfilter.org>
To: Phil Sutter <phil@nwl.cc>
Cc: Pablo Neira Ayuso <pablo@netfilter.org>,
Netfilter Development Mailing list
<netfilter-devel@vger.kernel.org>
Subject: Re: [nft PATCH] set_expr: Allow passing the parent set to set_expr_alloc()
Date: Wed, 12 Jul 2017 08:43:10 +0200 [thread overview]
Message-ID: <CAOkSjBi0c2RJMtSw1KADjEkH-djevs=ZYVHkfzCfKJyej-SDTQ@mail.gmail.com> (raw)
In-Reply-To: <20170711215952.11056-1-phil@nwl.cc>
On 11 July 2017 at 23:59, Phil Sutter <phil@nwl.cc> 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@netfilter.org>
> Fixes: a9dc3ceabc10f ("expression: print sets and maps in pretty format")
> Signed-off-by: Phil Sutter <phil@nwl.cc>
> ---
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?
next prev parent reply other threads:[~2017-07-12 6:43 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-07-11 21:59 [nft PATCH] set_expr: Allow passing the parent set to set_expr_alloc() Phil Sutter
2017-07-12 6:43 ` Arturo Borrero Gonzalez [this message]
2017-07-12 12:03 ` Phil Sutter
2017-07-12 12:14 ` [nft PATCH v2] " Phil Sutter
2017-07-12 12:22 ` Arturo Borrero Gonzalez
2017-07-17 15:31 ` Pablo Neira Ayuso
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAOkSjBi0c2RJMtSw1KADjEkH-djevs=ZYVHkfzCfKJyej-SDTQ@mail.gmail.com' \
--to=arturo@netfilter.org \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
--cc=phil@nwl.cc \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).