]> git.ipfire.org Git - thirdparty/nftables.git/commitdiff
src: Always print range expressions numerically
authorElise Lennion <elise.lennion@gmail.com>
Thu, 2 Feb 2017 12:31:56 +0000 (10:31 -0200)
committerPablo Neira Ayuso <pablo@netfilter.org>
Sun, 5 Feb 2017 20:39:48 +0000 (21:39 +0100)
Because the rules are more legible this way. Also, the parser doesn't
accept strings on ranges, so, printing ranges numerically better match
the rules definition.

Fixes(Bug 1046 - mobility header with range gives illegible rule).

Signed-off-by: Elise Lennion <elise.lennion@gmail.com>
Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
src/datatype.c
src/expression.c

index 1518606a3f897b194db222420a42f25873a389b6..d697a075c5c92cc9238533f2d29435db7e9614d0 100644 (file)
@@ -175,9 +175,15 @@ void symbolic_constant_print(const struct symbol_table *tbl,
                return expr_basetype(expr)->print(expr);
 
        if (quotes)
-               printf("\"%s\"", s->identifier);
+               printf("\"");
+
+       if (numeric_output > NUMERIC_ALL)
+               printf("%lu", val);
        else
                printf("%s", s->identifier);
+
+       if (quotes)
+               printf("\"");
 }
 
 static void switch_byteorder(void *data, unsigned int len)
index 1567870c631b6a45864050ac940ad907afa81076..da94b79f1d913bb9b84ee039bcb6fd57e04d1a54 100644 (file)
@@ -597,9 +597,11 @@ struct expr *relational_expr_alloc(const struct location *loc, enum ops op,
 
 static void range_expr_print(const struct expr *expr)
 {
+       numeric_output += NUMERIC_ALL + 1;
        expr_print(expr->left);
        printf("-");
        expr_print(expr->right);
+       numeric_output -= NUMERIC_ALL + 1;
 }
 
 static void range_expr_clone(struct expr *new, const struct expr *expr)