diff options
author | Ondrej Zajicek (work) <santiago@crfreenet.org> | 2022-03-09 02:32:29 +0100 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2022-06-27 21:13:32 +0200 |
commit | a2527ee53d9d8fe7a1c29b56f8450b9ef1f9c7bc (patch) | |
tree | a4dbac6cea35ef3c675c9a12b37dc67719b1b5ac /proto | |
parent | f31f4e6eef1762a4b9bf54a274f1ba9e9e161802 (diff) |
Filter: Improve handling of stack frames in filter bytecode
When f_line is done, we have to pop the stack frame. The old code just
removed nominal number of args/vars. Change it to use stored ventry value
modified by number of returned values. This allows to allocate variables
on a stack frame during execution of f_lines instead of just at start.
But we need to know the number of returned values for a f_line. It is 1
for term, 0 for cmd. Store that to f_line during linearization.
Diffstat (limited to 'proto')
-rw-r--r-- | proto/static/config.Y | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/proto/static/config.Y b/proto/static/config.Y index 41e10dbf..9d26ee82 100644 --- a/proto/static/config.Y +++ b/proto/static/config.Y @@ -40,7 +40,7 @@ static_route_finish(void) if (net_type_match(this_srt->net, NB_DEST) == !this_srt->dest) cf_error("Unexpected or missing nexthop/type"); - this_srt->cmds = f_linearize(this_srt_cmds); + this_srt->cmds = f_linearize(this_srt_cmds, 0); } CF_DECLS |