summaryrefslogtreecommitdiffstats
path: root/src/meta.c
diff options
context:
space:
mode:
authorPatrick McHardy <kaber@trash.net>2015-01-12 10:19:19 +0000
committerPatrick McHardy <kaber@trash.net>2015-01-12 13:18:44 +0000
commit33ec59fb4a2d824c919d8f4bf881f49e5a952f54 (patch)
tree31035ebdf3411cb7b4ce43308dc8086ea14b0f81 /src/meta.c
parent5eec8c95e7ed4e4261f4afc943c7fc792cc95365 (diff)
meta: don't print meta keyword for unqualified meta stmts
Signed-off-by: Patrick McHardy <kaber@trash.net>
Diffstat (limited to 'src/meta.c')
-rw-r--r--src/meta.c24
1 files changed, 17 insertions, 7 deletions
diff --git a/src/meta.c b/src/meta.c
index 6ff5fc87..6689eade 100644
--- a/src/meta.c
+++ b/src/meta.c
@@ -415,22 +415,28 @@ static const struct meta_template meta_templates[] = {
BYTEORDER_HOST_ENDIAN),
};
-static void meta_expr_print(const struct expr *expr)
+static bool meta_key_is_qualified(enum nft_meta_keys key)
{
- switch (expr->meta.key) {
+ switch (key) {
case NFT_META_LEN:
case NFT_META_NFPROTO:
case NFT_META_L4PROTO:
case NFT_META_PROTOCOL:
case NFT_META_PRIORITY:
- printf("meta %s", meta_templates[expr->meta.key].token);
- break;
+ return true;
default:
- printf("%s", meta_templates[expr->meta.key].token);
- break;
+ return false;
}
}
+static void meta_expr_print(const struct expr *expr)
+{
+ if (meta_key_is_qualified(expr->meta.key))
+ printf("meta %s", meta_templates[expr->meta.key].token);
+ else
+ printf("%s", meta_templates[expr->meta.key].token);
+}
+
static bool meta_expr_cmp(const struct expr *e1, const struct expr *e2)
{
return e1->meta.key == e2->meta.key;
@@ -529,7 +535,11 @@ struct expr *meta_expr_alloc(const struct location *loc, enum nft_meta_keys key)
static void meta_stmt_print(const struct stmt *stmt)
{
- printf("meta %s set ", meta_templates[stmt->meta.key].token);
+ if (meta_key_is_qualified(stmt->meta.key))
+ printf("meta %s set ", meta_templates[stmt->meta.key].token);
+ else
+ printf("%s set ", meta_templates[stmt->meta.key].token);
+
expr_print(stmt->meta.expr);
}