]> git.ipfire.org Git - thirdparty/bird.git/commitdiff
Pipe: fixed template bug
authorJan Maria Matejka <mq@ucw.cz>
Tue, 16 Jan 2018 13:46:06 +0000 (14:46 +0100)
committerJan Maria Matejka <mq@ucw.cz>
Tue, 23 Jan 2018 12:52:01 +0000 (13:52 +0100)
When pipe inherited from template, every channel config was lost.

proto/pipe/config.Y

index 4f96fdcbcba65e421186327a0c883988a8a536cc..b3c332bef334d68913d0f00ed3a56d317cd6fc79 100644 (file)
@@ -25,13 +25,19 @@ CF_ADDTO(proto, pipe_proto '}' { this_channel = NULL; } )
 pipe_proto_start: proto_start PIPE
 {
   this_proto = proto_config_new(&proto_pipe, $1);
-  this_channel = channel_config_new(NULL, NULL, 0, this_proto);
-  this_channel->in_filter = FILTER_ACCEPT;
-  this_channel->out_filter = FILTER_ACCEPT;
+}
+proto_name
+{
+  this_channel = proto_cf_main_channel(this_proto);
+  if (!this_channel) {
+    this_channel = channel_config_new(NULL, NULL, 0, this_proto);
+    this_channel->in_filter = FILTER_ACCEPT;
+    this_channel->out_filter = FILTER_ACCEPT;
+  }
 };
 
 pipe_proto:
-   pipe_proto_start proto_name '{'
+   pipe_proto_start '{'
  | pipe_proto proto_item ';'
  | pipe_proto channel_item ';'
  | pipe_proto PEER TABLE rtable ';' { PIPE_CFG->peer = $4; }