summaryrefslogtreecommitdiff
path: root/proto/pipe/config.Y
diff options
context:
space:
mode:
authorMaria Matejka <mq@ucw.cz>2022-06-22 12:45:42 +0200
committerMaria Matejka <mq@ucw.cz>2022-06-24 15:49:08 +0200
commit9c9059fd172dcc2f8805529de4b3174f280c109c (patch)
treeb0e642405a9485b0f571d8414720a072aac7b404 /proto/pipe/config.Y
parent050b4b4e5e6d4c05345bed2ec62c865258b4e7ee (diff)
Allowed optimized exporting of a subprefix tree
Added an option for export filter to allow for prefiltering based on the prefix. Routes outside the given prefix are completely ignored. Config is simple: export in <net> <filter>;
Diffstat (limited to 'proto/pipe/config.Y')
-rw-r--r--proto/pipe/config.Y6
1 files changed, 6 insertions, 0 deletions
diff --git a/proto/pipe/config.Y b/proto/pipe/config.Y
index c869de9f..0990168e 100644
--- a/proto/pipe/config.Y
+++ b/proto/pipe/config.Y
@@ -41,6 +41,12 @@ pipe_proto:
pipe_proto_start '{'
| pipe_proto proto_item ';'
| pipe_proto channel_item_ ';'
+ | pipe_proto IMPORT IN net_any imexport ';' {
+ if (this_channel->net_type && ($4->type != this_channel->net_type))
+ cf_error("Incompatible export prefilter type");
+ PIPE_CFG->in_subprefix = $4;
+ this_channel->in_filter = $5;
+ }
| pipe_proto PEER TABLE rtable ';' { PIPE_CFG->peer = $4; }
| pipe_proto MAX GENERATION expr ';' {
if (($4 < 1) || ($4 > 254)) cf_error("Max generation must be in range 1..254, got %u", $4);