From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Phil Sutter <phil@nwl.cc>
Cc: netfilter-devel@vger.kernel.org,
"Jan Kończak" <jan.konczak@cs.put.poznan.pl>
Subject: Re: [nft PATCH] parser_bison: Fix for bison < 3.6
Date: Wed, 10 Jun 2026 17:16:39 +0200 [thread overview]
Message-ID: <ail_1zfc4s__gnNI@chamomile> (raw)
In-Reply-To: <20260610115709.3982133-1-phil@nwl.cc>
Hi Phil,
On Wed, Jun 10, 2026 at 01:57:09PM +0200, Phil Sutter wrote:
> Support for 'custom' parse.error value was added in bison-3.6. Fall back
> to previous value for earlier versions.
>
> This is harder to get right than it seems: On one hand, preprocessor
> macros can't be used in parser_bison.y's declaration section and
> automake forbids conditional changes to AM_YFLAGS on the other.
>
> Suggested-by: Jan Kończak <jan.konczak@cs.put.poznan.pl>
> Fixes: 67b822f2b2624 ("parser_bison: on syntax errors, output expected tokens")
> Signed-off-by: Phil Sutter <phil@nwl.cc>
> ---
> Makefile.am | 6 ++++++
> configure.ac | 12 ++++++++++++
> src/parser_bison.y | 4 ++--
> 3 files changed, 20 insertions(+), 2 deletions(-)
>
> diff --git a/Makefile.am b/Makefile.am
> index fa71e06eefee5..ddf145a87c810 100644
> --- a/Makefile.am
> +++ b/Makefile.am
> @@ -164,6 +164,12 @@ AM_CFLAGS = \
> $(NULL)
>
> AM_YFLAGS = -d -Wno-yacc
> +if BISON_CUSTOM_ERROR
> +YACC += -D parse.error=custom -D parse.lac=full
> +AM_CFLAGS += -DBISON_CUSTOM_ERROR
> +else
> +YACC += -D parse.error=verbose
> +endif
>
> if BUILD_PROFILING
> AM_CFLAGS += --coverage
> diff --git a/configure.ac b/configure.ac
> index 0d3ee2ac89f69..b6cad3117a51b 100644
> --- a/configure.ac
> +++ b/configure.ac
> @@ -45,6 +45,18 @@ then
> exit 1
> fi
>
> +AC_ARG_ENABLE([extended_parser_errors],
> + AS_HELP_STRING([--disable-extended-parser-errors],
> + [Disable use of parse.error=custom and LAC in Bison]),
> + [], [
> + enable_extended_parser_errors=no
> + AC_SUBST([BISON], [$ac_cv_prog_YACC])
> + AX_PROG_BISON_VERSION([3.6],
> + [enable_extended_parser_errors=yes])
> + ])
> +AM_CONDITIONAL([BISON_CUSTOM_ERROR],
> + [test "x$enable_extended_parser_errors" != xno])
Can this be made transparent? ie. if bison >= 3.6, then enable it
always. Otherwise, disable it.
Then, include this information here in configure.ac:
echo "
nft configuration:
cli support: ${with_cli}
enable debugging symbols: ${enable_debug}
use mini-gmp: ${with_mini_gmp}
enable man page: ${enable_man_doc}
libxtables support: ${with_xtables}
json output support: ${with_json}
collect profiling data: ${enable_profiling}"
and here with -V:
# nft -V
nftables v1.1.6 (Commodore Bullmoose #7)
cli: editline
json: yes
minigmp: no
libxtables: yes
Maybe add:
bison >= 3.6: yes
or similar?
Thanks
> AM_PROG_AR
> LT_INIT([disable-static])
> AC_EXEEXT
> diff --git a/src/parser_bison.y b/src/parser_bison.y
> index 5a334bf0c4997..fc95597d898c0 100644
> --- a/src/parser_bison.y
> +++ b/src/parser_bison.y
> @@ -221,8 +221,6 @@ int nft_lex(void *, void *, void *);
> %parse-param { void *scanner }
> %parse-param { struct parser_state *state }
> %lex-param { scanner }
> -%define parse.error custom
> -%define parse.lac full
> %locations
>
> %initial-action {
> @@ -6537,6 +6535,7 @@ exthdr_key : HBH close_scope_hbh { $$ = IPPROTO_HOPOPTS; }
>
> %%
>
> +#ifdef BISON_CUSTOM_ERROR
> static int
> yyreport_syntax_error(const yypcontext_t *yyctx, struct nft_ctx *nft,
> void *scanner, struct parser_state *state)
> @@ -6592,3 +6591,4 @@ yyreport_syntax_error(const yypcontext_t *yyctx, struct nft_ctx *nft,
> free(msg);
> return 0;
> }
> +#endif /* BISON_CUSTOM_ERROR */
> --
> 2.54.0
>
next prev parent reply other threads:[~2026-06-10 15:16 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2026-06-10 11:57 [nft PATCH] parser_bison: Fix for bison < 3.6 Phil Sutter
2026-06-10 15:16 ` Pablo Neira Ayuso [this message]
2026-06-10 21:26 ` 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=ail_1zfc4s__gnNI@chamomile \
--to=pablo@netfilter.org \
--cc=jan.konczak@cs.put.poznan.pl \
--cc=netfilter-devel@vger.kernel.org \
--cc=phil@nwl.cc \
/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