mirror of
https://gitlab.isc.org/isc-projects/bind9
synced 2025-09-03 08:05:21 +00:00
508. [func] Add support for write of zone files on shutdown.
This commit is contained in:
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: omapi.h,v 1.10 2000/08/01 01:12:14 tale Exp $ */
|
||||
/* $Id: omapi.h,v 1.11 2000/10/05 10:42:38 marka Exp $ */
|
||||
|
||||
#ifndef NAMED_OMAPI_H
|
||||
#define NAMED_OMAPI_H 1
|
||||
@@ -32,6 +32,9 @@
|
||||
*/
|
||||
#define NS_OMAPI_CONTROL "control"
|
||||
|
||||
|
||||
#define NS_OMAPI_COMMAND_STOP "stop"
|
||||
#define NS_OMAPI_COMMAND_HALT "halt"
|
||||
#define NS_OMAPI_COMMAND_RELOAD "reload"
|
||||
#define NS_OMAPI_COMMAND_RELOADCONFIG "reload-config"
|
||||
#define NS_OMAPI_COMMAND_RELOADZONES "reload-zones"
|
||||
|
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: server.h,v 1.37 2000/09/22 00:13:08 gson Exp $ */
|
||||
/* $Id: server.h,v 1.38 2000/10/05 10:42:39 marka Exp $ */
|
||||
|
||||
#ifndef NAMED_SERVER_H
|
||||
#define NAMED_SERVER_H 1
|
||||
@@ -63,6 +63,8 @@ struct ns_server {
|
||||
|
||||
isc_mutex_t reload_event_lock;
|
||||
isc_event_t * reload_event;
|
||||
|
||||
isc_boolean_t flushonshutdown;
|
||||
};
|
||||
|
||||
#define NS_SERVER_MAGIC 0x53564552 /* SVER */
|
||||
@@ -92,5 +94,10 @@ ns_server_reloadwanted(ns_server_t *server);
|
||||
* is ignored.
|
||||
*/
|
||||
|
||||
void
|
||||
ns_server_flushonshutdown(ns_server_t *server);
|
||||
/*
|
||||
* Inform the server that the zones should be flushed to disk on shutdown.
|
||||
*/
|
||||
|
||||
#endif /* NAMED_SERVER_H */
|
||||
|
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: omapi.c,v 1.16 2000/08/01 01:11:55 tale Exp $ */
|
||||
/* $Id: omapi.c,v 1.17 2000/10/05 10:42:35 marka Exp $ */
|
||||
|
||||
/*
|
||||
* Principal Author: DCL
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
#include <config.h>
|
||||
|
||||
#include <isc/app.h>
|
||||
#include <isc/event.h>
|
||||
#include <isc/util.h>
|
||||
|
||||
@@ -79,6 +80,16 @@ control_setvalue(omapi_object_t *handle, omapi_string_t *name,
|
||||
|
||||
result = ISC_R_SUCCESS;
|
||||
|
||||
} else if (omapi_string_strcmp(name,NS_OMAPI_COMMAND_HALT) == 0) {
|
||||
if (omapi_data_getint(value) != 0)
|
||||
isc_app_shutdown();
|
||||
result = ISC_R_SUCCESS;
|
||||
} else if (omapi_string_strcmp(name,NS_OMAPI_COMMAND_STOP) == 0) {
|
||||
if (omapi_data_getint(value) != 0) {
|
||||
ns_server_flushonshutdown(ns_g_server);
|
||||
isc_app_shutdown();
|
||||
}
|
||||
result = ISC_R_SUCCESS;
|
||||
} else if (omapi_string_strcmp(name,
|
||||
NS_OMAPI_COMMAND_RELOADCONFIG) == 0 ||
|
||||
omapi_string_strcmp(name,
|
||||
|
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: server.c,v 1.224 2000/10/04 23:18:58 bwelling Exp $ */
|
||||
/* $Id: server.c,v 1.225 2000/10/05 10:42:36 marka Exp $ */
|
||||
|
||||
#include <config.h>
|
||||
|
||||
@@ -1668,23 +1668,33 @@ run_server(isc_task_t *task, isc_event_t *event) {
|
||||
ISC_LOG_INFO, "running");
|
||||
}
|
||||
|
||||
void
|
||||
ns_server_flushonshutdown(ns_server_t *server) {
|
||||
server->flushonshutdown = ISC_TRUE;
|
||||
}
|
||||
|
||||
static void
|
||||
shutdown_server(isc_task_t *task, isc_event_t *event) {
|
||||
dns_view_t *view, *view_next;
|
||||
ns_server_t *server = (ns_server_t *)event->ev_arg;
|
||||
isc_boolean_t flush = server->flushonshutdown;
|
||||
|
||||
UNUSED(task);
|
||||
|
||||
RWLOCK(&server->conflock, isc_rwlocktype_write);
|
||||
|
||||
isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL, NS_LOGMODULE_SERVER,
|
||||
ISC_LOG_INFO, "shutting down");
|
||||
ISC_LOG_INFO, "shutting down%s",
|
||||
flush ? ": flushing changes" : "");
|
||||
|
||||
for (view = ISC_LIST_HEAD(server->viewlist);
|
||||
view != NULL;
|
||||
view = view_next) {
|
||||
view_next = ISC_LIST_NEXT(view, link);
|
||||
ISC_LIST_UNLINK(server->viewlist, view, link);
|
||||
if (flush)
|
||||
dns_view_flushanddetach(&view);
|
||||
else
|
||||
dns_view_detach(&view);
|
||||
}
|
||||
|
||||
@@ -1781,6 +1791,7 @@ ns_server_create(isc_mem_t *mctx, ns_server_t **serverp) {
|
||||
CHECKFATAL(dns_loadmgr_create(ns_g_mctx, &server->loadmgr),
|
||||
"dns_loadmgr_create");
|
||||
|
||||
server->flushonshutdown = ISC_FALSE;
|
||||
server->magic = NS_SERVER_MAGIC;
|
||||
*serverp = server;
|
||||
}
|
||||
|
@@ -15,7 +15,7 @@
|
||||
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
|
||||
*/
|
||||
|
||||
/* $Id: rndc.c,v 1.24 2000/08/02 21:03:50 tale Exp $ */
|
||||
/* $Id: rndc.c,v 1.25 2000/10/05 10:42:40 marka Exp $ */
|
||||
|
||||
/*
|
||||
* Principal Author: DCL
|
||||
@@ -483,10 +483,12 @@ main(int argc, char **argv) {
|
||||
result = ISC_R_NOTIMPLEMENTED;
|
||||
|
||||
} else if (strcmp(command, "stop") == 0) {
|
||||
result = ISC_R_NOTIMPLEMENTED;
|
||||
result = send_command(omapimgr, command);
|
||||
|
||||
} else if (strcmp(command, "trace") == 0) {
|
||||
result = ISC_R_NOTIMPLEMENTED;
|
||||
} else {
|
||||
result = send_command(omapimgr, command);
|
||||
}
|
||||
|
||||
if (result == ISC_R_NOTIMPLEMENTED)
|
||||
|
Reference in New Issue
Block a user