summaryrefslogtreecommitdiffstats
path: root/nest
diff options
context:
space:
mode:
Diffstat (limited to 'nest')
-rw-r--r--nest/config.Y13
-rw-r--r--nest/proto.c7
2 files changed, 14 insertions, 6 deletions
diff --git a/nest/config.Y b/nest/config.Y
index c855f09..c535e9e 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 <i> idval
+%type <f> 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 f230c8e..ad4aa11 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)