⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 control.c

📁 bind-3.2.
💻 C
字号:
/* * Copyright (C) 2001, 2003  Internet Software Consortium. * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM * DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL * INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT, * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING * FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, * NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION * WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. *//* $Id: control.c,v 1.7.2.2 2003/07/22 04:03:33 marka Exp $ */#include <config.h>#include <string.h>#include <isc/app.h>#include <isc/event.h>#include <isc/mem.h>#include <isc/util.h>#include <isccc/alist.h>#include <isccc/cc.h>#include <isccc/result.h>#include <named/control.h>#include <named/log.h>#include <named/server.h>static isc_boolean_tcommand_compare(const char *text, const char *command) {	unsigned int commandlen = strlen(command);	if (strncasecmp(text, command, commandlen) == 0 &&	    (text[commandlen] == '\0' ||	     text[commandlen] == ' ' ||	     text[commandlen] == '\t'))		return (ISC_TRUE);	return (ISC_FALSE);}/* * This function is called to process the incoming command * when a control channel message is received.   */isc_result_tns_control_docommand(isccc_sexpr_t *message, isc_buffer_t *text) {	isccc_sexpr_t *data;	char *command;	isc_result_t result;	data = isccc_alist_lookup(message, "_data");	if (data == NULL) {		/*		 * No data section.		 */		return (ISC_R_FAILURE);	}	result = isccc_cc_lookupstring(data, "type", &command);	if (result != ISC_R_SUCCESS) {		/*		 * We have no idea what this is.		 */		return (result);	}	isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,		      NS_LOGMODULE_CONTROL, ISC_LOG_DEBUG(1),		      "received control channel command '%s'",		      command);	/*	 * Compare the 'command' parameter against all known control commands.	 */	if (command_compare(command, NS_COMMAND_RELOAD)) {		result = ns_server_reloadcommand(ns_g_server, command);	} else if (command_compare(command, NS_COMMAND_RECONFIG)) {		result = ns_server_reconfigcommand(ns_g_server, command);	} else if (command_compare(command, NS_COMMAND_REFRESH)) {		result = ns_server_refreshcommand(ns_g_server, command);	} else if (command_compare(command, NS_COMMAND_HALT)) {		ns_server_flushonshutdown(ns_g_server, ISC_FALSE);		isc_app_shutdown();		result = ISC_R_SUCCESS;	} else if (command_compare(command, NS_COMMAND_STOP)) {		ns_server_flushonshutdown(ns_g_server, ISC_TRUE);		isc_app_shutdown();		result = ISC_R_SUCCESS;	} else if (command_compare(command, NS_COMMAND_DUMPSTATS)) {		result = ns_server_dumpstats(ns_g_server);	} else if (command_compare(command, NS_COMMAND_QUERYLOG)) {		result = ns_server_togglequerylog(ns_g_server);	} else if (command_compare(command, NS_COMMAND_DUMPDB)) {		ns_server_dumpdb(ns_g_server);		result = ISC_R_SUCCESS;	} else if (command_compare(command, NS_COMMAND_TRACE)) {		result = ns_server_setdebuglevel(ns_g_server, command);	} else if (command_compare(command, NS_COMMAND_NOTRACE)) {		ns_g_debuglevel = 0;		isc_log_setdebuglevel(ns_g_lctx, ns_g_debuglevel);		result = ISC_R_SUCCESS;	} else if (command_compare(command, NS_COMMAND_FLUSH)) {		result = ns_server_flushcache(ns_g_server, command);	} else if (command_compare(command, NS_COMMAND_STATUS)) {		result = ns_server_status(ns_g_server, text);	} else if (command_compare(command, NS_COMMAND_NULL)) {		result = ISC_R_SUCCESS;	} else {		isc_log_write(ns_g_lctx, NS_LOGCATEGORY_GENERAL,			      NS_LOGMODULE_CONTROL, ISC_LOG_WARNING,			      "unknown control channel command '%s'",			      command);		result = ISC_R_NOTIMPLEMENTED;	}	return (result);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -