This transformation introduces an unnecessary asymmetry between the
linearization and delinearization steps that prevent rule deletion by
name to work fine.
Moreover, do not print htonl and ntonl from unary expression, this
syntax is not allowed by the parser.
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
static void unary_expr_print(const struct expr *expr)
{
- if (expr_op_symbols[expr->op] != NULL)
- printf("%s(", expr_op_symbols[expr->op]);
expr_print(expr->arg);
- printf(")");
}
static void unary_expr_clone(struct expr *new, const struct expr *expr)
}
case EXPR_UNARY:
expr_postprocess(ctx, &expr->arg);
- expr_set_type(expr->arg, expr->arg->dtype, !expr->arg->byteorder);
-
- *exprp = expr_get(expr->arg);
- expr_free(expr);
+ expr_set_type(expr, expr->arg->dtype, !expr->arg->byteorder);
break;
case EXPR_BINOP:
expr_postprocess(ctx, &expr->left);