From: Martin Mares Date: Mon, 5 Apr 1999 20:15:31 +0000 (+0000) Subject: Changed syntax of attaching filters to protocols to hopefully the final X-Git-Tag: v1.2.0~1624 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=5056c559c4eb253a4eee10cf35b694faec5265eb;p=thirdparty%2Fbird.git Changed syntax of attaching filters to protocols to hopefully the final version: EXPORT for outbound routes (i.e., those announced by BIRD to the rest of the world). IMPORT for inbound routes (i.e., those imported by BIRD from the rest of the world). where is one of: ALL pass all routes NONE drop all routes FILTER use named filter FILTER { } use explicitly defined filter For all protocols, the default is IMPORT ALL, EXPORT NONE. This includes the kernel protocol, so that you need to add EXPORT ALL to get the previous configuration of kernel syncer (as usually, see doc/bird.conf.example for a bird.conf example :)). --- diff --git a/doc/bird.conf.example b/doc/bird.conf.example index f700f2fb0..c1bce7812 100644 --- a/doc/bird.conf.example +++ b/doc/bird.conf.example @@ -27,8 +27,8 @@ protocol kernel { persist; # Don't remove routes on bird shutdown scan time 20; # Scan kernel routing table every 20 seconds # async off; # Netlink: Disable asynchronous events -# input filter sink; -# output filter okay; +# import none; # Default is import all + export all; # Default is export none } protocol device { diff --git a/nest/config.Y b/nest/config.Y index c855f093c..c535e9ecd 100644 --- a/nest/config.Y +++ b/nest/config.Y @@ -17,9 +17,10 @@ void rt_dev_add_iface(char *); CF_DECLS CF_KEYWORDS(ROUTER, ID, PROTOCOL, PREFERENCE, DISABLED, DEBUG, ALL, OFF, DIRECT) -CF_KEYWORDS(INTERFACE, INPUT, OUTPUT, FILTER) +CF_KEYWORDS(INTERFACE, IMPORT, EXPORT, FILTER, NONE) %type idval +%type imexport CF_GRAMMAR @@ -67,8 +68,14 @@ proto_item: | DEBUG expr { this_proto->debug = $2; } | DEBUG ALL { this_proto->debug = ~0; } | DEBUG OFF { this_proto->debug = 0; } - | INPUT FILTER filter { this_proto->in_filter = $3; } - | OUTPUT FILTER filter { this_proto->out_filter = $3; } + | IMPORT imexport { this_proto->in_filter = $2; } + | EXPORT imexport { this_proto->out_filter = $2; } + ; + +imexport: + FILTER filter { $$ = $2; } + | ALL { $$ = FILTER_ACCEPT; } + | NONE { $$ = FILTER_REJECT; } ; /* Direct device route protocol */ diff --git a/nest/proto.c b/nest/proto.c index f230c8ef4..ad4aa11d8 100644 --- a/nest/proto.c +++ b/nest/proto.c @@ -111,6 +111,7 @@ proto_config_new(struct protocol *pr, unsigned size) c->proto = pr; c->debug = pr->debug; c->name = pr->name; + c->out_filter = FILTER_REJECT; return c; } @@ -247,9 +248,9 @@ protos_dump_all(void) debug(" protocol %s (pri=%d): state %s/%s\n", p->name, p->proto->priority, p_states[p->proto_state], c_states[p->core_state]); if (p->in_filter) - debug("\tInput filter: %s\n", p->in_filter->name); - if (p->out_filter) - debug("\tOutput filter: %s\n", p->out_filter->name); + debug("\tInput filter: %s\n", filter_name(p->in_filter)); + if (p->out_filter != FILTER_REJECT) + debug("\tOutput filter: %s\n", filter_name(p->out_filter)); if (p->disabled) debug("\tDISABLED\n"); else if (p->proto->dump)