Linux Netfilter development
 help / color / mirror / Atom feed
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
> 

  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