diff options
author | Ondrej Zajicek <santiago@crfreenet.org> | 2011-11-07 00:31:23 +0100 |
---|---|---|
committer | Ondrej Zajicek <santiago@crfreenet.org> | 2011-11-07 00:31:23 +0100 |
commit | a7f23f581f5e3efe92ec97dfca7d01c66f31ab04 (patch) | |
tree | 3a8f7cffb7abce83b7bce8be87d21be8a2fbff72 /proto/radv/radv.c | |
parent | 74add5df17c386bd109ebea7b1dac04d1651ae51 (diff) |
Implements protocol templates.
Based on the patch from Alexander V. Chernikov.
Extended to support almost all protocols.
Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax.
Diffstat (limited to 'proto/radv/radv.c')
-rw-r--r-- | proto/radv/radv.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/proto/radv/radv.c b/proto/radv/radv.c index 01cb6899..42d4bff9 100644 --- a/proto/radv/radv.c +++ b/proto/radv/radv.c @@ -318,6 +318,19 @@ radv_reconfigure(struct proto *p, struct proto_config *c) return 1; } +static void +radv_copy_config(struct proto_config *dest, struct proto_config *src) +{ + struct radv_config *d = (struct radv_config *) dest; + struct radv_config *s = (struct radv_config *) src; + + /* We clean up patt_list, ifaces are non-sharable */ + init_list(&d->patt_list); + + /* We copy pref_list, shallow copy suffices */ + cfg_copy_list(&d->iface_list, &s->iface_list, sizeof(struct iface_patt)); +} + struct protocol proto_radv = { .name = "RAdv", @@ -325,5 +338,6 @@ struct protocol proto_radv = { .init = radv_init, .start = radv_start, .shutdown = radv_shutdown, - .reconfigure = radv_reconfigure + .reconfigure = radv_reconfigure, + .copy_config = radv_copy_config }; |