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

📄 config.c

📁 bind 9.3结合mysql数据库
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 2004  Internet Systems Consortium, Inc. ("ISC") * 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 ISC DISCLAIMS ALL WARRANTIES WITH * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS.  IN NO EVENT SHALL ISC 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: config.c,v 1.11.2.4.8.28 2004/08/28 05:41:42 marka Exp $ */#include <config.h>#include <stdlib.h>#include <string.h>#include <isc/buffer.h>#include <isc/log.h>#include <isc/mem.h>#include <isc/region.h>#include <isc/result.h>#include <isc/sockaddr.h>#include <isc/util.h>#include <isccfg/namedconf.h>#include <dns/fixedname.h>#include <dns/name.h>#include <dns/rdataclass.h>#include <dns/rdatatype.h>#include <dns/tsig.h>#include <dns/zone.h>#include <named/config.h>#include <named/globals.h>static char defaultconf[] = "\options {\n\#	blackhole {none;};\n"#ifndef WIN32"	coresize default;\n\	datasize default;\n\	files default;\n\	stacksize default;\n"#endif"	deallocate-on-exit true;\n\#	directory <none>\n\	dump-file \"named_dump.db\";\n\	fake-iquery no;\n\	has-old-clients false;\n\	heartbeat-interval 60;\n\	host-statistics no;\n\	interface-interval 60;\n\	listen-on {any;};\n\	listen-on-v6 {none;};\n\	match-mapped-addresses no;\n\	memstatistics-file \"named.memstats\";\n\	multiple-cnames no;\n\#	named-xfer <obsolete>;\n\#	pid-file \"" NS_LOCALSTATEDIR "/named.pid\"; /* or /lwresd.pid */\n\	port 53;\n\	recursing-file \"named.recursing\";\n\"#ifdef PATH_RANDOMDEV"\	random-device \"" PATH_RANDOMDEV "\";\n\"#endif"\	recursive-clients 1000;\n\	rrset-order {order cyclic;};\n\	serial-queries 20;\n\	serial-query-rate 20;\n\	server-id none;\n\	statistics-file \"named.stats\";\n\	statistics-interval 60;\n\	tcp-clients 100;\n\	tcp-listen-queue 3;\n\#	tkey-dhkey <none>\n\#	tkey-gssapi-credential <none>\n\#	tkey-domain <none>\n\	transfers-per-ns 2;\n\	transfers-in 10;\n\	transfers-out 10;\n\	treat-cr-as-space true;\n\	use-id-pool true;\n\	use-ixfr true;\n\	edns-udp-size 4096;\n\\n\	/* view */\n\	allow-notify {none;};\n\	allow-update-forwarding {none;};\n\	allow-recursion {any;};\n\#	allow-v6-synthesis <obsolete>;\n\#	sortlist <none>\n\#	topology <none>\n\	auth-nxdomain false;\n\	minimal-responses false;\n\	recursion true;\n\	provide-ixfr true;\n\	request-ixfr true;\n\	fetch-glue no;\n\	rfc2308-type1 no;\n\	additional-from-auth true;\n\	additional-from-cache true;\n\	query-source address *;\n\	query-source-v6 address *;\n\	notify-source *;\n\	notify-source-v6 *;\n\	cleaning-interval 60;\n\	min-roots 2;\n\	lame-ttl 600;\n\	max-ncache-ttl 10800; /* 3 hours */\n\	max-cache-ttl 604800; /* 1 week */\n\	transfer-format many-answers;\n\	max-cache-size 0;\n\	check-names master fail;\n\	check-names slave warn;\n\	check-names response ignore;\n\	dnssec-enable no; /* Make yes for 9.4. */ \n\""	/* zone */\n\	allow-query {any;};\n\	allow-transfer {any;};\n\	notify yes;\n\#	also-notify <none>\n\	dialup no;\n\#	forward <none>\n\#	forwarders <none>\n\	maintain-ixfr-base no;\n\#	max-ixfr-log-size <obsolete>\n\	transfer-source *;\n\	transfer-source-v6 *;\n\	alt-transfer-source *;\n\	alt-transfer-source-v6 *;\n\	max-transfer-time-in 120;\n\	max-transfer-time-out 120;\n\	max-transfer-idle-in 60;\n\	max-transfer-idle-out 60;\n\	max-retry-time 1209600; /* 2 weeks */\n\	min-retry-time 500;\n\	max-refresh-time 2419200; /* 4 weeks */\n\	min-refresh-time 300;\n\	multi-master no;\n\	sig-validity-interval 30; /* days */\n\	zone-statistics false;\n\	max-journal-size unlimited;\n\	ixfr-from-differences false;\n\};\n\""#\n\#  Zones in the \"_bind\" view are NOT counted is the count of zones.\n\#\n\view \"_bind\" chaos {\n\	recursion no;\n\	notify no;\n\\n\	zone \"version.bind\" chaos {\n\		type master;\n\		database \"_builtin version\";\n\	};\n\\n\	zone \"hostname.bind\" chaos {\n\		type master;\n\		database \"_builtin hostname\";\n\	};\n\\n\	zone \"authors.bind\" chaos {\n\		type master;\n\		database \"_builtin authors\";\n\	};\n\	zone \"id.server\" chaos {\n\		type master;\n\		database \"_builtin id\";\n\	};\n\};\n\";isc_result_tns_config_parsedefaults(cfg_parser_t *parser, cfg_obj_t **conf) {	isc_buffer_t b;	isc_buffer_init(&b, defaultconf, sizeof(defaultconf) - 1);	isc_buffer_add(&b, sizeof(defaultconf) - 1);	return (cfg_parse_buffer(parser, &b, &cfg_type_namedconf, conf));}isc_result_tns_config_get(cfg_obj_t **maps, const char *name, cfg_obj_t **obj) {	int i;	for (i = 0;; i++) {		if (maps[i] == NULL)			return (ISC_R_NOTFOUND);		if (cfg_map_get(maps[i], name, obj) == ISC_R_SUCCESS)			return (ISC_R_SUCCESS);	}}isc_result_tns_checknames_get(cfg_obj_t **maps, const char *which, cfg_obj_t **obj) {	cfg_listelt_t *element;	cfg_obj_t *checknames;	cfg_obj_t *type;	cfg_obj_t *value;	int i;	for (i = 0;; i++) {		if (maps[i] == NULL)			return (ISC_R_NOTFOUND);		checknames = NULL;		if (cfg_map_get(maps[i], "check-names", &checknames) == ISC_R_SUCCESS) {			/*			 * Zone map entry is not a list.			 */			if (checknames != NULL && !cfg_obj_islist(checknames)) {				*obj = checknames;				return (ISC_R_SUCCESS);			}			for (element = cfg_list_first(checknames);			     element != NULL;			     element = cfg_list_next(element)) {				value = cfg_listelt_value(element);				type = cfg_tuple_get(value, "type");				if (strcasecmp(cfg_obj_asstring(type), which) == 0) {					*obj = cfg_tuple_get(value, "mode");					return (ISC_R_SUCCESS);				}			}		}	}}intns_config_listcount(cfg_obj_t *list) {	cfg_listelt_t *e;	int i = 0;	for (e = cfg_list_first(list); e != NULL; e = cfg_list_next(e))		i++;	return (i);}isc_result_tns_config_getclass(cfg_obj_t *classobj, dns_rdataclass_t defclass,		   dns_rdataclass_t *classp) {	char *str;	isc_textregion_t r;	isc_result_t result;	if (!cfg_obj_isstring(classobj)) {		*classp = defclass;		return (ISC_R_SUCCESS);	}	str = cfg_obj_asstring(classobj);	r.base = str;	r.length = strlen(str);	result = dns_rdataclass_fromtext(classp, &r);	if (result != ISC_R_SUCCESS)		cfg_obj_log(classobj, ns_g_lctx, ISC_LOG_ERROR,			    "unknown class '%s'", str);	return (result);}isc_result_tns_config_gettype(cfg_obj_t *typeobj, dns_rdatatype_t deftype,		   dns_rdatatype_t *typep) {	char *str;	isc_textregion_t r;	isc_result_t result;	if (!cfg_obj_isstring(typeobj)) {		*typep = deftype;		return (ISC_R_SUCCESS);	}	str = cfg_obj_asstring(typeobj);	r.base = str;	r.length = strlen(str);	result = dns_rdatatype_fromtext(typep, &r);	if (result != ISC_R_SUCCESS)		cfg_obj_log(typeobj, ns_g_lctx, ISC_LOG_ERROR,			    "unknown type '%s'", str);	return (result);}dns_zonetype_tns_config_getzonetype(cfg_obj_t *zonetypeobj) {	dns_zonetype_t ztype = dns_zone_none;	char *str;	str = cfg_obj_asstring(zonetypeobj);	if (strcasecmp(str, "master") == 0)		ztype = dns_zone_master;	else if (strcasecmp(str, "slave") == 0)		ztype = dns_zone_slave;	else if (strcasecmp(str, "stub") == 0)		ztype = dns_zone_stub;	else		INSIST(0);	return (ztype);}isc_result_tns_config_getiplist(cfg_obj_t *config, cfg_obj_t *list,		    in_port_t defport, isc_mem_t *mctx,		    isc_sockaddr_t **addrsp, isc_uint32_t *countp){	int count, i = 0;	cfg_obj_t *addrlist;	cfg_obj_t *portobj;	cfg_listelt_t *element;	isc_sockaddr_t *addrs;	in_port_t port;	isc_result_t result;	INSIST(addrsp != NULL && *addrsp == NULL);	INSIST(countp != NULL);	addrlist = cfg_tuple_get(list, "addresses");	count = ns_config_listcount(addrlist);	portobj = cfg_tuple_get(list, "port");	if (cfg_obj_isuint32(portobj)) {		isc_uint32_t val = cfg_obj_asuint32(portobj);		if (val > ISC_UINT16_MAX) {			cfg_obj_log(portobj, ns_g_lctx, ISC_LOG_ERROR,				    "port '%u' out of range", val);			return (ISC_R_RANGE);		}		port = (in_port_t) val;	} else if (defport != 0)		port = defport;	else {		result = ns_config_getport(config, &port);		if (result != ISC_R_SUCCESS)			return (result);	}	addrs = isc_mem_get(mctx, count * sizeof(isc_sockaddr_t));	if (addrs == NULL)		return (ISC_R_NOMEMORY);	for (element = cfg_list_first(addrlist);	     element != NULL;	     element = cfg_list_next(element), i++)	{		INSIST(i < count);		addrs[i] = *cfg_obj_assockaddr(cfg_listelt_value(element));		if (isc_sockaddr_getport(&addrs[i]) == 0)			isc_sockaddr_setport(&addrs[i], port);

⌨️ 快捷键说明

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