diff options
author | Fernando Fernandez Mancera <ffmancera@riseup.net> | 2019-05-24 15:06:47 +0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2019-05-24 21:29:54 +0200 |
commit | f1e8a129ee428419a0d5a45a2f410e8e4008d109 (patch) | |
tree | 7216ec99ab5873ca6706c766a04b4d0209efef90 /src/expression.c | |
parent | 4b0f2a712b5792d2842d89fe68d4230e0eb05c7e (diff) |
src: Introduce chain_expr in jump and goto statements
Introduce expressions as a chain in jump and goto statements.
This is going to be used to support variables as a chain in the
following patches.
Signed-off-by: Fernando Fernandez Mancera <ffmancera@riseup.net>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'src/expression.c')
-rw-r--r-- | src/expression.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/expression.c b/src/expression.c index eece12e4..a41e2daf 100644 --- a/src/expression.c +++ b/src/expression.c @@ -207,22 +207,22 @@ static bool verdict_expr_cmp(const struct expr *e1, const struct expr *e2) if ((e1->verdict == NFT_JUMP || e1->verdict == NFT_GOTO) && - strcmp(e1->chain, e2->chain)) - return false; + expr_cmp(e1->chain, e2->chain)) + return true; - return true; + return false; } static void verdict_expr_clone(struct expr *new, const struct expr *expr) { new->verdict = expr->verdict; if (expr->chain != NULL) - new->chain = xstrdup(expr->chain); + mpz_init_set(new->chain->value, expr->chain->value); } static void verdict_expr_destroy(struct expr *expr) { - xfree(expr->chain); + expr_free(expr->chain); } static const struct expr_ops verdict_expr_ops = { @@ -236,7 +236,7 @@ static const struct expr_ops verdict_expr_ops = { }; struct expr *verdict_expr_alloc(const struct location *loc, - int verdict, const char *chain) + int verdict, struct expr *chain) { struct expr *expr; |