From a7f23f581f5e3efe92ec97dfca7d01c66f31ab04 Mon Sep 17 00:00:00 2001 From: Ondrej Zajicek Date: Mon, 7 Nov 2011 00:31:23 +0100 Subject: Implements protocol templates. Based on the patch from Alexander V. Chernikov. Extended to support almost all protocols. Uses 'protocol bgp NAME from TEMPLATE { ... }' syntax. --- proto/radv/radv.c | 16 +++++++++++++++- proto/radv/radv.h | 8 ++++---- 2 files changed, 19 insertions(+), 5 deletions(-) (limited to 'proto/radv') diff --git a/proto/radv/radv.c b/proto/radv/radv.c index 01cb689..42d4bff 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 }; diff --git a/proto/radv/radv.h b/proto/radv/radv.h index fe121f2..12bfe42 100644 --- a/proto/radv/radv.h +++ b/proto/radv/radv.h @@ -46,14 +46,14 @@ struct radv_config { struct proto_config c; - list patt_list; /* List of iface configs */ - list pref_list; /* Global list of prefix configs */ + list patt_list; /* List of iface configs (struct radv_iface_config) */ + list pref_list; /* Global list of prefix configs (struct radv_prefix_config) */ }; struct radv_iface_config { struct iface_patt i; - list pref_list; /* Local list of prefix configs */ + list pref_list; /* Local list of prefix configs (struct radv_prefix_config) */ u32 min_ra_int; /* Standard options from RFC 4261 */ u32 max_ra_int; @@ -64,7 +64,7 @@ struct radv_iface_config u32 link_mtu; u32 reachable_time; u32 retrans_timer; - u32 current_hop_limit; + u32 current_hop_limit; u32 default_lifetime; }; -- cgit v1.2.3