Parser already allows to quote user-defined strings in some places to avoid clashing with defined keywords, but not everywhere. Extend this support further and add a test case for it. Signed-off-by: Phil Sutter <phil@xxxxxx> --- Changes since v1: - Fix testcase, I forgot to commit adjustments done to it. Note: This is a reduced variant of "src: Quote user-defined names" sent back in January. Discussion was not conclusive regarding whether to quote these names on output or not, but I assume allowing for users to specify them by adding quotes is a step forward without drawbacks. --- src/parser_bison.y | 3 ++- .../shell/testcases/nft-f/0018quoted-names_0 | 20 +++++++++++++++++++ 2 files changed, 22 insertions(+), 1 deletion(-) create mode 100755 tests/shell/testcases/nft-f/0018quoted-names_0 diff --git a/src/parser_bison.y b/src/parser_bison.y index 670e91f544c75..de8b097a4c222 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -1761,7 +1761,7 @@ flowtable_list_expr : flowtable_expr_member | flowtable_list_expr COMMA opt_newline ; -flowtable_expr_member : STRING +flowtable_expr_member : string { $$ = symbol_expr_alloc(&@$, SYMBOL_VALUE, current_scope(state), @@ -1968,6 +1968,7 @@ chain_policy : ACCEPT { $$ = NF_ACCEPT; } ; identifier : STRING + | QUOTED_STRING ; string : STRING diff --git a/tests/shell/testcases/nft-f/0018quoted-names_0 b/tests/shell/testcases/nft-f/0018quoted-names_0 new file mode 100755 index 0000000000000..6526d66b8e8a1 --- /dev/null +++ b/tests/shell/testcases/nft-f/0018quoted-names_0 @@ -0,0 +1,20 @@ +#!/bin/bash + +# Test if keywords are allowed as names if quoted + +set -e + +RULESET=' +table inet "day" { + chain "minute" {} + set "hour" { type inet_service; } + flowtable "second" { hook ingress priority 0; devices = { "lo" }; } + counter "table" { packets 0 bytes 0 } + quota "chain" { 10 bytes } +}' + +$NFT -f - <<< "$RULESET" + +# XXX: not possible (yet) +#OUTPUT=$($NFT list ruleset) +#$NFT -f - <<< "$OUTPUT" -- 2.21.0