close_scope_numgen : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_NUMGEN); };
close_scope_queue : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_QUEUE); };
close_scope_rt : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_RT); };
+close_scope_socket : { scanner_pop_start_cond(nft->scanner, PARSER_SC_EXPR_SOCKET); }
common_block : INCLUDE QUOTED_STRING stmt_separator
{
}
;
-socket_expr : SOCKET socket_key
+socket_expr : SOCKET socket_key close_scope_socket
{
$$ = socket_expr_alloc(&@$, $2);
}
%s SCANSTATE_EXPR_NUMGEN
%s SCANSTATE_EXPR_QUEUE
%s SCANSTATE_EXPR_RT
+%s SCANSTATE_EXPR_SOCKET
%%
"ruleset" { return RULESET; }
"trace" { return TRACE; }
-"socket" { return SOCKET; }
-"transparent" { return TRANSPARENT; }
-"wildcard" { return WILDCARD; }
-
+"socket" { scanner_push_start_cond(yyscanner, SCANSTATE_EXPR_SOCKET); return SOCKET; }
+<SCANSTATE_EXPR_SOCKET>{
+ "transparent" { return TRANSPARENT; }
+ "wildcard" { return WILDCARD; }
+}
"tproxy" { return TPROXY; }
"accept" { return ACCEPT; }