From f7fcb752520759ab3aed274ca608e8e6f96665c8 Mon Sep 17 00:00:00 2001 From: Martin Mares Date: Mon, 17 Jan 2000 11:17:33 +0000 Subject: Reconfiguration for device protocol. --- sysdep/linux/netlink/krt-iface.h | 2 ++ sysdep/unix/krt-iface.h | 4 +++- sysdep/unix/krt.c | 19 +++++++++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) (limited to 'sysdep') diff --git a/sysdep/linux/netlink/krt-iface.h b/sysdep/linux/netlink/krt-iface.h index b0fbdd1..eddfbac 100644 --- a/sysdep/linux/netlink/krt-iface.h +++ b/sysdep/linux/netlink/krt-iface.h @@ -23,4 +23,6 @@ static inline void krt_if_construct(struct kif_config *c) { }; static inline void krt_if_shutdown(struct kif_proto *p) { }; static inline void krt_if_io_init(void) { }; +static inline int kif_params_same(struct krt_if_params *old, struct krt_if_params *new) { return 1; } + #endif diff --git a/sysdep/unix/krt-iface.h b/sysdep/unix/krt-iface.h index b27e86d..48075d6 100644 --- a/sysdep/unix/krt-iface.h +++ b/sysdep/unix/krt-iface.h @@ -1,7 +1,7 @@ /* * BIRD -- Unix Kernel Interface Syncer * - * (c) 1998--1999 Martin Mares + * (c) 1998--2000 Martin Mares * * Can be freely distributed and used under the terms of the GNU GPL. */ @@ -17,4 +17,6 @@ struct krt_if_status { extern int if_scan_sock; +static inline int kif_params_same(struct krt_if_params *old, struct krt_if_params *new) { return 1; } + #endif diff --git a/sysdep/unix/krt.c b/sysdep/unix/krt.c index 7c92c55..bbca8cf 100644 --- a/sysdep/unix/krt.c +++ b/sysdep/unix/krt.c @@ -140,6 +140,24 @@ kif_shutdown(struct proto *P) return PS_DOWN; } +static int +kif_reconfigure(struct proto *p, struct proto_config *new) +{ + struct kif_config *o = (struct kif_config *) p->cf; + struct kif_config *n = (struct kif_config *) new; + + if (!kif_params_same(&o->iface, &n->iface)) + return 0; + if (o->scan_time != n->scan_time) + { + tm_stop(kif_scan_timer); + kif_scan_timer->recurrent = n->scan_time; + kif_scan(kif_scan_timer); + tm_start(kif_scan_timer, n->scan_time); + } + return 1; +} + struct protocol proto_unix_iface = { name: "Device", priority: 100, @@ -147,6 +165,7 @@ struct protocol proto_unix_iface = { init: kif_init, start: kif_start, shutdown: kif_shutdown, + reconfigure: kif_reconfigure, }; /* -- cgit v1.2.3