summaryrefslogtreecommitdiffstats
path: root/filter/config.Y
diff options
context:
space:
mode:
authorPavel Machek <pavel@ucw.cz>1999-03-17 11:19:07 +0100
committerPavel Machek <pavel@ucw.cz>1999-03-17 11:19:07 +0100
commitd36d838df5f726e1f6845fe0e6e5c188426ac00d (patch)
tree50a9c876714d5ab9cb3c341f3cfea53a1a130587 /filter/config.Y
parentc1f8dc9149d3868e5a0f4e4ad97759fb3b177bec (diff)
downloadbird-d36d838df5f726e1f6845fe0e6e5c188426ac00d.tar
bird-d36d838df5f726e1f6845fe0e6e5c188426ac00d.zip
accept & reject should now work
Diffstat (limited to 'filter/config.Y')
-rw-r--r--filter/config.Y26
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();