mirror of
https://gitlab.labs.nic.cz/labs/bird.git
synced 2024-05-11 16:54:54 +00:00
Implements protocol templates.
Based on the patch from Alexander V. Chernikov. Extended to support almost all protocols. Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
This commit is contained in:
@@ -37,7 +37,7 @@ CF_GRAMMAR
|
||||
CF_ADDTO(proto, rip_cfg '}' { RIP_CFG->passwords = get_passwords(); } )
|
||||
|
||||
rip_cfg_start: proto_start RIP {
|
||||
this_proto = proto_config_new(&proto_rip, sizeof(struct rip_proto_config));
|
||||
this_proto = proto_config_new(&proto_rip, sizeof(struct rip_proto_config), $1);
|
||||
rip_init_config(RIP_CFG);
|
||||
}
|
||||
;
|
||||
|
@@ -1015,6 +1015,19 @@ rip_reconfigure(struct proto *p, struct proto_config *c)
|
||||
sizeof(struct rip_proto_config) - generic);
|
||||
}
|
||||
|
||||
static void
|
||||
rip_copy_config(struct proto_config *dest, struct proto_config *src)
|
||||
{
|
||||
/* Shallow copy of everything */
|
||||
proto_copy_rest(dest, src, sizeof(struct rip_proto_config));
|
||||
|
||||
/* We clean up iface_list, ifaces are non-sharable */
|
||||
init_list(&((struct rip_proto_config *) dest)->iface_list);
|
||||
|
||||
/* Copy of passwords is OK, it just will be replaced in dest when used */
|
||||
}
|
||||
|
||||
|
||||
struct protocol proto_rip = {
|
||||
name: "RIP",
|
||||
template: "rip%d",
|
||||
@@ -1026,4 +1039,5 @@ struct protocol proto_rip = {
|
||||
dump: rip_dump,
|
||||
start: rip_start,
|
||||
reconfigure: rip_reconfigure,
|
||||
copy_config: rip_copy_config
|
||||
};
|
||||
|
Reference in New Issue
Block a user