diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2010-03-29 19:29:03 +0200 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2010-03-29 19:29:03 +0200 |
commit | 126683feeda03ffb5a4ce23611e59a4598382d49 (patch) | |
tree | 9aeb9632949113b218b485100a9e52e008e8c1b9 /filter/config.Y | |
parent | eb0f129fcedcecbee85403095abad8f59b82683c (diff) |
Filter language updates; new route attributes and datatype.
- Adds bgp_originator_id and bgp_cluster_list route attributes.
- Adds dotted quad filter datatype (for router IDs, used by
bgp_originator_id and ospf_router_id route attributes).
- Fixes pair ~ pair set matching.
- Documentation updates.
Diffstat (limited to 'filter/config.Y')
-rw-r--r-- | filter/config.Y | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/filter/config.Y b/filter/config.Y index 1af5649c..77236586 100644 --- a/filter/config.Y +++ b/filter/config.Y @@ -29,7 +29,7 @@ CF_DECLS CF_KEYWORDS(FUNCTION, PRINT, PRINTN, UNSET, RETURN, ACCEPT, REJECT, ERROR, QUITBIRD, - INT, BOOL, IP, PREFIX, PAIR, SET, STRING, BGPMASK, BGPPATH, CLIST, + INT, BOOL, IP, PREFIX, PAIR, QUAD, SET, STRING, BGPMASK, BGPPATH, CLIST, IF, THEN, ELSE, CASE, TRUE, FALSE, FROM, GW, NET, MASK, PROTO, SOURCE, SCOPE, CAST, DEST, PREFERENCE, @@ -75,6 +75,7 @@ type: | IP { $$ = T_IP; } | PREFIX { $$ = T_PREFIX; } | PAIR { $$ = T_PAIR; } + | QUAD { $$ = T_QUAD; } | STRING { $$ = T_STRING; } | BGPMASK { $$ = T_PATH_MASK; } | BGPPATH { $$ = T_PATH; } @@ -82,8 +83,9 @@ type: | type SET { switch ($1) { case T_INT: - case T_IP: case T_PAIR: + case T_QUAD: + case T_IP: $$ = T_SET; break; @@ -234,6 +236,7 @@ fipa: set_atom: NUM { $$.type = T_INT; $$.val.i = $1; } + | RTRID { $$.type = T_QUAD; $$.val.i = $1; } | cpair { $$.type = T_PAIR; $$.val.i = $1; } | fipa { $$ = $1; } | ENUM { $$.type = $1 >> 16; $$.val.i = $1 & 0xffff; } @@ -340,6 +343,7 @@ constant: | TEXT { $$ = f_new_inst(); $$->code = 'c'; $$->aux = T_STRING; $$->a2.p = $1; } | fipa { NEW_F_VAL; $$ = f_new_inst(); $$->code = 'C'; $$->a1.p = val; *val = $1; } | fprefix_s {NEW_F_VAL; $$ = f_new_inst(); $$->code = 'C'; $$->a1.p = val; *val = $1; } + | RTRID { $$ = f_new_inst(); $$->code = 'c'; $$->aux = T_QUAD; $$->a2.i = $1; } | '[' set_items ']' { DBG( "We've got a set here..." ); $$ = f_new_inst(); $$->code = 'c'; $$->aux = T_SET; $$->a2.p = build_tree($2); DBG( "ook\n" ); } | '[' fprefix_set ']' { $$ = f_new_inst(); $$->code = 'c'; $$->aux = T_PREFIX_SET; $$->a2.p = $2; } | ENUM { $$ = f_new_inst(); $$->code = 'c'; $$->aux = $1 >> 16; $$->a2.i = $1 & 0xffff; } @@ -396,6 +400,7 @@ symbol: case SYM_VARIABLE | T_BOOL: case SYM_VARIABLE | T_INT: case SYM_VARIABLE | T_PAIR: + case SYM_VARIABLE | T_QUAD: case SYM_VARIABLE | T_STRING: case SYM_VARIABLE | T_IP: case SYM_VARIABLE | T_PREFIX: |