summaryrefslogtreecommitdiffstats
path: root/src/expression.c
diff options
context:
space:
mode:
authorFernando Fernandez Mancera <ffmancera@riseup.net>2019-05-24 15:06:47 +0200
committerPablo Neira Ayuso <pablo@netfilter.org>2019-05-24 21:29:54 +0200
commitf1e8a129ee428419a0d5a45a2f410e8e4008d109 (patch)
tree7216ec99ab5873ca6706c766a04b4d0209efef90 /src/expression.c
parent4b0f2a712b5792d2842d89fe68d4230e0eb05c7e (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.c12
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;