From: Phil Sutter <phil@nwl.cc>
To: Pablo Neira Ayuso <pablo@netfilter.org>
Cc: netfilter-devel@vger.kernel.org, Florian Westphal <fw@strlen.de>
Subject: [nft PATCH 4/6] parser_bison: Introduce tokens for log levels
Date: Tue, 9 Dec 2025 17:45:39 +0100 [thread overview]
Message-ID: <20251209164541.13425-5-phil@nwl.cc> (raw)
In-Reply-To: <20251209164541.13425-1-phil@nwl.cc>
Since log statement is scoped already, it's just a matter of declaring
the tokens in that scope and using them. This eliminates the redundant
copy of log level string parsing in parser_bison.y - the remaining one,
namely log_level_parse() in statement.c is used by JSON parser.
Signed-off-by: Phil Sutter <phil@nwl.cc>
Reviewed-by: Florian Westphal <fw@strlen.de>
---
src/parser_bison.y | 46 ++++++++++++++++++----------------------------
src/scanner.l | 9 +++++++++
2 files changed, 27 insertions(+), 28 deletions(-)
diff --git a/src/parser_bison.y b/src/parser_bison.y
index ba485a8c25b50..8e07671cb80e9 100644
--- a/src/parser_bison.y
+++ b/src/parser_bison.y
@@ -643,6 +643,15 @@ int nft_lex(void *, void *, void *);
%token SNAPLEN "snaplen"
%token QUEUE_THRESHOLD "queue-threshold"
%token LEVEL "level"
+%token EMERG "emerg"
+%token ALERT "alert"
+%token CRIT "crit"
+%token ERR "err"
+%token WARN "warn"
+%token NOTICE "notice"
+%token INFO "info"
+%token DEBUG_TOKEN "debug"
+%token AUDIT "audit"
%token LIMIT "limit"
%token RATE "rate"
@@ -3490,34 +3499,15 @@ log_arg : PREFIX string
}
;
-level_type : string
- {
- if (!strcmp("emerg", $1))
- $$ = NFT_LOGLEVEL_EMERG;
- else if (!strcmp("alert", $1))
- $$ = NFT_LOGLEVEL_ALERT;
- else if (!strcmp("crit", $1))
- $$ = NFT_LOGLEVEL_CRIT;
- else if (!strcmp("err", $1))
- $$ = NFT_LOGLEVEL_ERR;
- else if (!strcmp("warn", $1))
- $$ = NFT_LOGLEVEL_WARNING;
- else if (!strcmp("notice", $1))
- $$ = NFT_LOGLEVEL_NOTICE;
- else if (!strcmp("info", $1))
- $$ = NFT_LOGLEVEL_INFO;
- else if (!strcmp("debug", $1))
- $$ = NFT_LOGLEVEL_DEBUG;
- else if (!strcmp("audit", $1))
- $$ = NFT_LOGLEVEL_AUDIT;
- else {
- erec_queue(error(&@1, "invalid log level"),
- state->msgs);
- free_const($1);
- YYERROR;
- }
- free_const($1);
- }
+level_type : EMERG { $$ = NFT_LOGLEVEL_EMERG; }
+ | ALERT { $$ = NFT_LOGLEVEL_ALERT; }
+ | CRIT { $$ = NFT_LOGLEVEL_CRIT; }
+ | ERR { $$ = NFT_LOGLEVEL_ERR; }
+ | WARN { $$ = NFT_LOGLEVEL_WARNING; }
+ | NOTICE { $$ = NFT_LOGLEVEL_NOTICE; }
+ | INFO { $$ = NFT_LOGLEVEL_INFO; }
+ | DEBUG_TOKEN { $$ = NFT_LOGLEVEL_DEBUG; }
+ | AUDIT { $$ = NFT_LOGLEVEL_AUDIT; }
;
log_flags : TCP log_flags_tcp close_scope_tcp
diff --git a/src/scanner.l b/src/scanner.l
index e0f0aabb683a3..ca570e2bfe066 100644
--- a/src/scanner.l
+++ b/src/scanner.l
@@ -433,6 +433,15 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr})
"queue-threshold" { return QUEUE_THRESHOLD; }
"level" { return LEVEL; }
"group" { return GROUP; }
+ "emerg" { return EMERG; }
+ "alert" { return ALERT; }
+ "crit" { return CRIT; }
+ "err" { return ERR; }
+ "warn" { return WARN; }
+ "notice" { return NOTICE; }
+ "info" { return INFO; }
+ "debug" { return DEBUG_TOKEN; }
+ "audit" { return AUDIT; }
}
"queue" { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_QUEUE); return QUEUE;}
--
2.51.0
next prev parent reply other threads:[~2025-12-09 16:45 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-12-09 16:45 [nft PATCH 0/6] parser_bison: Less STRING more tokens Phil Sutter
2025-12-09 16:45 ` [nft PATCH 1/6] parser_bison: Introduce tokens for monitor events Phil Sutter
2025-12-09 16:45 ` [nft PATCH 2/6] parser_bison: Introduce tokens for chain types Phil Sutter
2025-12-09 16:45 ` [nft PATCH 3/6] parser_bison: Introduce tokens for osf ttl values Phil Sutter
2025-12-09 16:45 ` Phil Sutter [this message]
2025-12-09 16:45 ` [nft PATCH 5/6] parser_bison: Introduce bytes_unit Phil Sutter
2025-12-09 16:45 ` [nft PATCH 6/6] scanner: Introduce SCANSTATE_RATE Phil Sutter
2026-01-20 14:35 ` Florian Westphal
2026-01-20 16:28 ` Phil Sutter
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20251209164541.13425-5-phil@nwl.cc \
--to=phil@nwl.cc \
--cc=fw@strlen.de \
--cc=netfilter-devel@vger.kernel.org \
--cc=pablo@netfilter.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox