Reconfiguration for device protocol.
This commit is contained in:
parent
0ec90e9fc6
commit
f7fcb75252
3 changed files with 24 additions and 1 deletions
|
@ -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_shutdown(struct kif_proto *p) { };
|
||||||
static inline void krt_if_io_init(void) { };
|
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
|
#endif
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
/*
|
/*
|
||||||
* BIRD -- Unix Kernel Interface Syncer
|
* 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.
|
* 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;
|
extern int if_scan_sock;
|
||||||
|
|
||||||
|
static inline int kif_params_same(struct krt_if_params *old, struct krt_if_params *new) { return 1; }
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
|
@ -140,6 +140,24 @@ kif_shutdown(struct proto *P)
|
||||||
return PS_DOWN;
|
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 = {
|
struct protocol proto_unix_iface = {
|
||||||
name: "Device",
|
name: "Device",
|
||||||
priority: 100,
|
priority: 100,
|
||||||
|
@ -147,6 +165,7 @@ struct protocol proto_unix_iface = {
|
||||||
init: kif_init,
|
init: kif_init,
|
||||||
start: kif_start,
|
start: kif_start,
|
||||||
shutdown: kif_shutdown,
|
shutdown: kif_shutdown,
|
||||||
|
reconfigure: kif_reconfigure,
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
Loading…
Reference in a new issue