diff options
author | Elise Lennion <elise.lennion@gmail.com> | 2017-02-02 10:31:56 -0200 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2017-02-05 21:39:48 +0100 |
commit | 85b1e3c0052ef69b3ab449b692b787037c0b8bdb (patch) | |
tree | 9dae94fd220d2c2590a4f051fee492b3c803adb0 /src | |
parent | 9b7b2b64caff9de47de36a050cae9f3fbf58e433 (diff) |
src: Always print range expressions numerically
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>
Diffstat (limited to 'src')
-rw-r--r-- | src/datatype.c | 8 | ||||
-rw-r--r-- | src/expression.c | 2 |
2 files changed, 9 insertions, 1 deletions
diff --git a/src/datatype.c b/src/datatype.c index 1518606a..d697a075 100644 --- a/src/datatype.c +++ b/src/datatype.c @@ -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) diff --git a/src/expression.c b/src/expression.c index 1567870c..da94b79f 100644 --- a/src/expression.c +++ b/src/expression.c @@ -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) |