1
0
mirror of https://gitlab.labs.nic.cz/labs/bird.git synced 2024-05-11 16:54:54 +00:00

BFD: Better handling of BFD options in BGP configs

Merge multiple BFD option blocks in BGP configs instead of using the last
one. That is necessary for proper handling of templates when BFD options
are used both in a BGP template and in a BGP protocol derived from that
template.
This commit is contained in:
Ondrej Zajicek (work)
2020-11-12 04:02:38 +01:00
parent 99ad208dd7
commit 3b56bf8849
4 changed files with 27 additions and 7 deletions

View File

@@ -52,6 +52,28 @@ get_passwords(void)
return rv;
}
static inline void
init_bfd_opts(struct bfd_options **opts)
{
cf_check_bfd(1);
if (! *opts)
*opts = bfd_new_options();
}
static inline void
open_bfd_opts(struct bfd_options **opts)
{
init_bfd_opts(opts);
this_bfd_opts = *opts;
}
static inline void
close_bfd_opts(void)
{
this_bfd_opts = NULL;
}
static void
proto_postconfig(void)
{
@@ -99,7 +121,6 @@ CF_ENUM_PX(T_ENUM_AF, AF_, AFI_, IPV4, IPV6)
%type <ps> proto_patt proto_patt2
%type <cc> channel_start proto_channel
%type <cl> limit_spec
%type <bo> bfd_opts
%type <net> r_args_for_val
%type <net_ptr> r_args_for
%type <t> r_args_channel
@@ -519,7 +540,7 @@ bfd_items:
;
bfd_opts:
'{' { this_bfd_opts = bfd_new_options(); } bfd_items '}' { $$ = this_bfd_opts; this_bfd_opts = NULL; }
'{' bfd_items '}'
;
/* Core commands */