Eliminate the open-coded string parsing and error handling. Signed-off-by: Phil Sutter Reviewed-by: Florian Westphal --- src/parser_bison.y | 24 ++++++------------------ src/scanner.l | 6 ++++++ 2 files changed, 12 insertions(+), 18 deletions(-) diff --git a/src/parser_bison.y b/src/parser_bison.y index 405fe8f2690ca..ba485a8c25b50 100644 --- a/src/parser_bison.y +++ b/src/parser_bison.y @@ -719,6 +719,9 @@ int nft_lex(void *, void *, void *); %token NAT "nat" %token ROUTE "route" +%token LOOSE "loose" +%token SKIP "skip" + %type limit_rate_pkts %type limit_rate_bytes @@ -4485,24 +4488,9 @@ osf_expr : OSF osf_ttl HDRVERSION close_scope_osf } ; -osf_ttl : /* empty */ - { - $$ = NF_OSF_TTL_TRUE; - } - | TTL STRING - { - if (!strcmp($2, "loose")) - $$ = NF_OSF_TTL_LESS; - else if (!strcmp($2, "skip")) - $$ = NF_OSF_TTL_NOCHECK; - else { - erec_queue(error(&@2, "invalid ttl option"), - state->msgs); - free_const($2); - YYERROR; - } - free_const($2); - } +osf_ttl : /* empty */ { $$ = NF_OSF_TTL_TRUE; } + | TTL LOOSE { $$ = NF_OSF_TTL_LESS; } + | TTL SKIP { $$ = NF_OSF_TTL_NOCHECK; } ; shift_expr : primary_expr diff --git a/src/scanner.l b/src/scanner.l index b397a147ef9bd..e0f0aabb683a3 100644 --- a/src/scanner.l +++ b/src/scanner.l @@ -533,6 +533,12 @@ addrstring ({macaddr}|{ip4addr}|{ip6addr}) { "ttl" { return TTL; } } + +{ + "loose" { return LOOSE; } + "skip" { return SKIP; } +} + "protocol" { return PROTOCOL; } { "checksum" { return CHECKSUM; } -- 2.51.0