diff --git a/bin/named/control.c b/bin/named/control.c index 5ff74b8d5d..8c859ab578 100644 --- a/bin/named/control.c +++ b/bin/named/control.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: control.c,v 1.13 2002/06/13 05:12:51 marka Exp $ */ +/* $Id: control.c,v 1.14 2002/09/08 18:34:03 explorer Exp $ */ #include @@ -121,6 +121,9 @@ ns_control_docommand(isccc_sexpr_t *message, isc_buffer_t *text) { result = ns_server_freeze(ns_g_server, ISC_TRUE, command); } else if (command_compare(command, NS_COMMAND_UNFREEZE)) { result = ns_server_freeze(ns_g_server, ISC_FALSE, command); + } else if (command_compare(command, NS_COMMAND_TIMERPOKE)) { + result = ISC_R_SUCCESS; + isc_timermgr_poke(ns_g_timermgr); } else { isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_CONTROL, ISC_LOG_WARNING, diff --git a/bin/named/include/named/control.h b/bin/named/include/named/control.h index 1ec16c748e..2cb6eb10b1 100644 --- a/bin/named/include/named/control.h +++ b/bin/named/include/named/control.h @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: control.h,v 1.10 2002/02/20 03:33:30 marka Exp $ */ +/* $Id: control.h,v 1.11 2002/09/08 18:34:04 explorer Exp $ */ #ifndef NAMED_CONTROL_H #define NAMED_CONTROL_H 1 @@ -47,6 +47,7 @@ #define NS_COMMAND_STATUS "status" #define NS_COMMAND_FREEZE "freeze" #define NS_COMMAND_UNFREEZE "unfreeze" +#define NS_COMMAND_TIMERPOKE "timerpoke" isc_result_t ns_controls_create(ns_server_t *server, ns_controls_t **ctrlsp); diff --git a/bin/named/include/named/server.h b/bin/named/include/named/server.h index 26c3480dd6..459043f02a 100644 --- a/bin/named/include/named/server.h +++ b/bin/named/include/named/server.h @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: server.h,v 1.66 2002/06/13 05:12:54 marka Exp $ */ +/* $Id: server.h,v 1.67 2002/09/08 18:34:04 explorer Exp $ */ #ifndef NAMED_SERVER_H #define NAMED_SERVER_H 1 @@ -73,6 +73,7 @@ struct ns_server { isc_timer_t * interface_timer; isc_timer_t * heartbeat_timer; + isc_timer_t * check_timer; isc_uint32_t interface_interval; isc_uint32_t heartbeat_interval; diff --git a/bin/named/server.c b/bin/named/server.c index fe38b2f43e..6959209a17 100644 --- a/bin/named/server.c +++ b/bin/named/server.c @@ -15,7 +15,7 @@ * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. */ -/* $Id: server.c,v 1.383 2002/08/30 02:05:29 marka Exp $ */ +/* $Id: server.c,v 1.384 2002/09/08 18:34:03 explorer Exp $ */ #include @@ -1561,6 +1561,16 @@ heartbeat_timer_tick(isc_task_t *task, isc_event_t *event) { } } +static void +check_timer_tick(isc_task_t *task, isc_event_t *event) { + UNUSED(task); + isc_event_free(&event); + + isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, + NS_LOGMODULE_SERVER, ISC_LOG_INFO, + "************ I'm still alive! **************"); +} + /* * Replace the current value of '*field', a dynamically allocated * string or NULL, with a dynamically allocated copy of the @@ -1902,6 +1912,17 @@ load_configuration(const char *filename, ns_server_t *server, } server->heartbeat_interval = heartbeat_interval; + /* + * Configure the dialup heartbeat timer. + */ + { + isc_interval_t interval; + isc_interval_set(&interval, 15, 0); + CHECK(isc_timer_reset(server->check_timer, + isc_timertype_ticker, + NULL, &interval, ISC_FALSE)); + } + /* * Configure and freeze all explicit views. Explicit * views that have zones were already created at parsing @@ -2288,6 +2309,12 @@ run_server(isc_task_t *task, isc_event_t *event) { server, &server->heartbeat_timer), "creating heartbeat timer"); + CHECKFATAL(isc_timer_create(ns_g_timermgr, isc_timertype_inactive, + NULL, NULL, server->task, + check_timer_tick, + server, &server->check_timer), + "creating check timer"); + CHECKFATAL(cfg_parser_create(ns_g_mctx, NULL, &ns_g_parser), "creating default configuration parser"); @@ -2349,6 +2376,7 @@ shutdown_server(isc_task_t *task, isc_event_t *event) { isc_timer_detach(&server->interface_timer); isc_timer_detach(&server->heartbeat_timer); + isc_timer_detach(&server->check_timer); ns_interfacemgr_shutdown(server->interfacemgr); ns_interfacemgr_detach(&server->interfacemgr); @@ -2436,6 +2464,7 @@ ns_server_create(isc_mem_t *mctx, ns_server_t **serverp) { server->interface_timer = NULL; server->heartbeat_timer = NULL; + server->check_timer = NULL; server->interface_interval = 0; server->heartbeat_interval = 0;