diff options
author | Martin Mares <mj@ucw.cz> | 2000-01-17 11:17:33 +0000 |
---|---|---|
committer | Martin Mares <mj@ucw.cz> | 2000-01-17 11:17:33 +0000 |
commit | f7fcb752520759ab3aed274ca608e8e6f96665c8 (patch) | |
tree | 1697ba3e07ec676c52984974f76c726e3b3bad5e /sysdep/unix | |
parent | 0ec90e9fc6f6bec2d0b64f6b9711a6d3edb4bd52 (diff) |
Reconfiguration for device protocol.
Diffstat (limited to 'sysdep/unix')
-rw-r--r-- | sysdep/unix/krt-iface.h | 4 | ||||
-rw-r--r-- | sysdep/unix/krt.c | 19 |
2 files changed, 22 insertions, 1 deletions
diff --git a/sysdep/unix/krt-iface.h b/sysdep/unix/krt-iface.h index b27e86dc..48075d6b 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 <mj@ucw.cz> + * (c) 1998--2000 Martin Mares <mj@ucw.cz> * * 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 7c92c551..bbca8cfa 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, }; /* |