close_scope_osf : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_OSF); };
close_scope_quota : { scanner_pop_start_cond(nft->scanner, PARSER_SC_QUOTA); };
close_scope_queue : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_QUEUE); };
+close_scope_reject : { scanner_pop_start_cond(nft->scanner, PARSER_SC_STMT_REJECT); };
close_scope_reset : { scanner_pop_start_cond(nft->scanner, PARSER_SC_CMD_RESET); };
close_scope_rt : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_RT); };
close_scope_sctp : { scanner_pop_start_cond(nft->scanner, PARSER_SC_SCTP); };
| stateful_stmt
| meta_stmt
| log_stmt close_scope_log
- | reject_stmt
+ | reject_stmt close_scope_reject
| nat_stmt
| tproxy_stmt
| queue_stmt
%s SCANSTATE_EXPR_UDPLITE
%s SCANSTATE_STMT_LOG
+%s SCANSTATE_STMT_REJECT
%s SCANSTATE_STMT_SYNPROXY
%%
"hour" { return HOUR; }
"day" { return DAY; }
-"reject" { return _REJECT; }
-"with" { return WITH; }
-"icmpx" { return ICMPX; }
+"reject" { scanner_push_start_cond(yyscanner, SCANSTATE_STMT_REJECT); return _REJECT; }
+<SCANSTATE_STMT_REJECT>{
+ "with" { return WITH; }
+ "icmpx" { return ICMPX; }
+}
"snat" { return SNAT; }
"dnat" { return DNAT; }