diff options
author | Pavel Machek <pavel@ucw.cz> | 1999-03-17 11:19:07 +0100 |
---|---|---|
committer | Pavel Machek <pavel@ucw.cz> | 1999-03-17 11:19:07 +0100 |
commit | d36d838df5f726e1f6845fe0e6e5c188426ac00d (patch) | |
tree | 50a9c876714d5ab9cb3c341f3cfea53a1a130587 /filter/config.Y | |
parent | c1f8dc9149d3868e5a0f4e4ad97759fb3b177bec (diff) | |
download | bird-d36d838df5f726e1f6845fe0e6e5c188426ac00d.tar bird-d36d838df5f726e1f6845fe0e6e5c188426ac00d.zip |
accept & reject should now work
Diffstat (limited to 'filter/config.Y')
-rw-r--r-- | filter/config.Y | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/filter/config.Y b/filter/config.Y index 103acd8..3577b19 100644 --- a/filter/config.Y +++ b/filter/config.Y @@ -19,7 +19,8 @@ CF_HDR CF_DECLS -CF_KEYWORDS(FUNCTION, FILTER, PRINTDEBUG, INT, PRINT, CONST, VAR, PUTS, DIE, IF) +CF_KEYWORDS(FUNCTION, FILTER, PRINTDEBUG, INT, PRINT, CONST, VAR, PUTS, IF, + ACCEPT, REJECT, ERROR, QUITBIRD) %type <x> term %type <x> block @@ -30,11 +31,12 @@ CF_GRAMMAR CF_ADDTO(conf, function) function: FUNCTION SYM '(' ')' '{' cmds '}' { - extern struct f_inst *last_func; + extern struct f_inst *autoexec_func; if ($2->class != SYM_VOID) cf_error("Symbol already defined" ); $2->class = SYM_FUNCTION; $2->def = $6; - last_func = $6; + if (!strcasecmp($2->name, "autoexec")) + autoexec_func = $6; printf("Hmm, we've got one function here\n"); } ; @@ -150,9 +152,25 @@ term: $$->code = 'd'; $$->arg1 = $3; } - | DIE { + | QUITBIRD { $$ = f_new_inst(); $$->code = '!'; + (int) $$->arg1 = F_QUITBIRD; + } + | ACCEPT { + $$ = f_new_inst(); + $$->code = '!'; + (int) $$->arg1 = F_ACCEPT; + } + | REJECT { + $$ = f_new_inst(); + $$->code = '!'; + (int) $$->arg1 = F_REJECT; + } + | ERROR { + $$ = f_new_inst(); + $$->code = '!'; + (int) $$->arg1 = F_ERROR; } | PRINTDEBUG { $$ = f_new_inst(); |