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

📄 db.c

📁 bind 9.3结合mysql数据库
💻 C
📖 第 1 页 / 共 2 页
字号:
voiddns_db_closeversion(dns_db_t *db, dns_dbversion_t **versionp,		    isc_boolean_t commit){	/*	 * Close version '*versionp'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE((db->attributes & DNS_DBATTR_CACHE) == 0);	REQUIRE(versionp != NULL && *versionp != NULL);	(db->methods->closeversion)(db, versionp, commit);	ENSURE(*versionp == NULL);}/*** *** Node Methods ***/isc_result_tdns_db_findnode(dns_db_t *db, dns_name_t *name,		isc_boolean_t create, dns_dbnode_t **nodep){	/*	 * Find the node with name 'name'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(nodep != NULL && *nodep == NULL);	return ((db->methods->findnode)(db, name, create, nodep));}isc_result_tdns_db_find(dns_db_t *db, dns_name_t *name, dns_dbversion_t *version,	    dns_rdatatype_t type, unsigned int options, isc_stdtime_t now,	    dns_dbnode_t **nodep, dns_name_t *foundname,	    dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset){	/*	 * Find the best match for 'name' and 'type' in version 'version'	 * of 'db'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(type != dns_rdatatype_rrsig);	REQUIRE(nodep == NULL || (nodep != NULL && *nodep == NULL));	REQUIRE(dns_name_hasbuffer(foundname));	REQUIRE(rdataset == NULL ||		(DNS_RDATASET_VALID(rdataset) &&		 ! dns_rdataset_isassociated(rdataset)));	REQUIRE(sigrdataset == NULL ||		(DNS_RDATASET_VALID(sigrdataset) &&		 ! dns_rdataset_isassociated(sigrdataset)));	return ((db->methods->find)(db, name, version, type, options, now,				    nodep, foundname, rdataset, sigrdataset));}isc_result_tdns_db_findzonecut(dns_db_t *db, dns_name_t *name,		   unsigned int options, isc_stdtime_t now,		   dns_dbnode_t **nodep, dns_name_t *foundname,		   dns_rdataset_t *rdataset, dns_rdataset_t *sigrdataset){	/*	 * Find the deepest known zonecut which encloses 'name' in 'db'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE((db->attributes & DNS_DBATTR_CACHE) != 0);	REQUIRE(nodep == NULL || (nodep != NULL && *nodep == NULL));	REQUIRE(dns_name_hasbuffer(foundname));	REQUIRE(sigrdataset == NULL ||		(DNS_RDATASET_VALID(sigrdataset) &&		 ! dns_rdataset_isassociated(sigrdataset)));	return ((db->methods->findzonecut)(db, name, options, now, nodep,					   foundname, rdataset, sigrdataset));}voiddns_db_attachnode(dns_db_t *db, dns_dbnode_t *source, dns_dbnode_t **targetp) {	/*	 * Attach *targetp to source.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(source != NULL);	REQUIRE(targetp != NULL && *targetp == NULL);	(db->methods->attachnode)(db, source, targetp);}voiddns_db_detachnode(dns_db_t *db, dns_dbnode_t **nodep) {	/*	 * Detach *nodep from its node.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(nodep != NULL && *nodep != NULL);	(db->methods->detachnode)(db, nodep);	ENSURE(*nodep == NULL);}isc_result_tdns_db_expirenode(dns_db_t *db, dns_dbnode_t *node, isc_stdtime_t now) {	/*	 * Mark as stale all records at 'node' which expire at or before 'now'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE((db->attributes & DNS_DBATTR_CACHE) != 0);	REQUIRE(node != NULL);	return ((db->methods->expirenode)(db, node, now));}voiddns_db_printnode(dns_db_t *db, dns_dbnode_t *node, FILE *out) {	/*	 * Print a textual representation of the contents of the node to	 * 'out'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(node != NULL);	(db->methods->printnode)(db, node, out);}/*** *** DB Iterator Creation ***/isc_result_tdns_db_createiterator(dns_db_t *db, isc_boolean_t relative_names,		      dns_dbiterator_t **iteratorp){	/*	 * Create an iterator for version 'version' of 'db'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(iteratorp != NULL && *iteratorp == NULL);	return (db->methods->createiterator(db, relative_names, iteratorp));}/*** *** Rdataset Methods ***/isc_result_tdns_db_findrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,		    dns_rdatatype_t type, dns_rdatatype_t covers,		    isc_stdtime_t now, dns_rdataset_t *rdataset,		    dns_rdataset_t *sigrdataset){	/*	 * Search for an rdataset of type 'type' at 'node' that are in version	 * 'version' of 'db'.  If found, make 'rdataset' refer to it.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(node != NULL);	REQUIRE(DNS_RDATASET_VALID(rdataset));	REQUIRE(! dns_rdataset_isassociated(rdataset));	REQUIRE(covers == 0 || type == dns_rdatatype_rrsig);	REQUIRE(type != dns_rdatatype_any);	REQUIRE(sigrdataset == NULL ||		(DNS_RDATASET_VALID(sigrdataset) &&		 ! dns_rdataset_isassociated(sigrdataset)));	return ((db->methods->findrdataset)(db, node, version, type, covers,					    now, rdataset, sigrdataset));}isc_result_tdns_db_allrdatasets(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,		    isc_stdtime_t now, dns_rdatasetiter_t **iteratorp){	/*	 * Make '*iteratorp' an rdataset iteratator for all rdatasets at	 * 'node' in version 'version' of 'db'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(iteratorp != NULL && *iteratorp == NULL);	return ((db->methods->allrdatasets)(db, node, version, now,					    iteratorp));}isc_result_tdns_db_addrdataset(dns_db_t *db, dns_dbnode_t *node, dns_dbversion_t *version,		   isc_stdtime_t now, dns_rdataset_t *rdataset,		   unsigned int options, dns_rdataset_t *addedrdataset){	/*	 * Add 'rdataset' to 'node' in version 'version' of 'db'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(node != NULL);	REQUIRE(((db->attributes & DNS_DBATTR_CACHE) == 0 && version != NULL)||		((db->attributes & DNS_DBATTR_CACHE) != 0 &&		 version == NULL && (options & DNS_DBADD_MERGE) == 0));	REQUIRE((options & DNS_DBADD_EXACT) == 0 ||		(options & DNS_DBADD_MERGE) != 0);	REQUIRE(DNS_RDATASET_VALID(rdataset));	REQUIRE(dns_rdataset_isassociated(rdataset));	REQUIRE(rdataset->rdclass == db->rdclass);	REQUIRE(addedrdataset == NULL ||		(DNS_RDATASET_VALID(addedrdataset) &&		 ! dns_rdataset_isassociated(addedrdataset)));	return ((db->methods->addrdataset)(db, node, version, now, rdataset,					   options, addedrdataset));}isc_result_tdns_db_subtractrdataset(dns_db_t *db, dns_dbnode_t *node,			dns_dbversion_t *version, dns_rdataset_t *rdataset,			unsigned int options, dns_rdataset_t *newrdataset){	/*	 * Remove any rdata in 'rdataset' from 'node' in version 'version' of	 * 'db'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(node != NULL);	REQUIRE((db->attributes & DNS_DBATTR_CACHE) == 0 && version != NULL);	REQUIRE(DNS_RDATASET_VALID(rdataset));	REQUIRE(dns_rdataset_isassociated(rdataset));	REQUIRE(rdataset->rdclass == db->rdclass);	REQUIRE(newrdataset == NULL ||		(DNS_RDATASET_VALID(newrdataset) &&		 ! dns_rdataset_isassociated(newrdataset)));	return ((db->methods->subtractrdataset)(db, node, version, rdataset,						options, newrdataset));}isc_result_tdns_db_deleterdataset(dns_db_t *db, dns_dbnode_t *node,		      dns_dbversion_t *version, dns_rdatatype_t type,		      dns_rdatatype_t covers){	/*	 * Make it so that no rdataset of type 'type' exists at 'node' in	 * version version 'version' of 'db'.	 */	REQUIRE(DNS_DB_VALID(db));	REQUIRE(node != NULL);	REQUIRE(((db->attributes & DNS_DBATTR_CACHE) == 0 && version != NULL)||		((db->attributes & DNS_DBATTR_CACHE) != 0 && version == NULL));	return ((db->methods->deleterdataset)(db, node, version,					      type, covers));}void dns_db_overmem(dns_db_t *db, isc_boolean_t overmem) {	REQUIRE(DNS_DB_VALID(db));	(db->methods->overmem)(db, overmem);}isc_result_tdns_db_getsoaserial(dns_db_t *db, dns_dbversion_t *ver, isc_uint32_t *serialp){	isc_result_t result;	dns_dbnode_t *node = NULL;	dns_rdataset_t rdataset;	dns_rdata_t rdata = DNS_RDATA_INIT;	isc_buffer_t buffer;	REQUIRE(dns_db_iszone(db) || dns_db_isstub(db));	result = dns_db_findnode(db, dns_db_origin(db), ISC_FALSE, &node);	if (result != ISC_R_SUCCESS)		return (result);	dns_rdataset_init(&rdataset);	result = dns_db_findrdataset(db, node, ver, dns_rdatatype_soa, 0,				     (isc_stdtime_t)0, &rdataset, NULL); 	if (result != ISC_R_SUCCESS)		goto freenode;	result = dns_rdataset_first(&rdataset); 	if (result != ISC_R_SUCCESS)		goto freerdataset;	dns_rdataset_current(&rdataset, &rdata);	result = dns_rdataset_next(&rdataset);	INSIST(result == ISC_R_NOMORE);	INSIST(rdata.length > 20);	isc_buffer_init(&buffer, rdata.data, rdata.length);	isc_buffer_add(&buffer, rdata.length);	isc_buffer_forward(&buffer, rdata.length - 20);	*serialp = isc_buffer_getuint32(&buffer);	result = ISC_R_SUCCESS; freerdataset:	dns_rdataset_disassociate(&rdataset); freenode:	dns_db_detachnode(db, &node);	return (result);}unsigned intdns_db_nodecount(dns_db_t *db) {	REQUIRE(DNS_DB_VALID(db));	return ((db->methods->nodecount)(db));}voiddns_db_settask(dns_db_t *db, isc_task_t *task) {	REQUIRE(DNS_DB_VALID(db));	(db->methods->settask)(db, task);}isc_result_tdns_db_register(const char *name, dns_dbcreatefunc_t create, void *driverarg,		isc_mem_t *mctx, dns_dbimplementation_t **dbimp){	dns_dbimplementation_t *imp;	REQUIRE(name != NULL);	REQUIRE(dbimp != NULL && *dbimp == NULL);	RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);	RWLOCK(&implock, isc_rwlocktype_write);	imp = impfind(name);	if (imp != NULL) {		RWUNLOCK(&implock, isc_rwlocktype_write);		return (ISC_R_EXISTS);	}		imp = isc_mem_get(mctx, sizeof(dns_dbimplementation_t));	if (imp == NULL) {		RWUNLOCK(&implock, isc_rwlocktype_write);		return (ISC_R_NOMEMORY);	}	imp->name = name;	imp->create = create;	imp->mctx = NULL;	imp->driverarg = driverarg;	isc_mem_attach(mctx, &imp->mctx);	ISC_LINK_INIT(imp, link);	ISC_LIST_APPEND(implementations, imp, link);	RWUNLOCK(&implock, isc_rwlocktype_write);	*dbimp = imp;	return (ISC_R_SUCCESS);}voiddns_db_unregister(dns_dbimplementation_t **dbimp) {	dns_dbimplementation_t *imp;	isc_mem_t *mctx;	REQUIRE(dbimp != NULL && *dbimp != NULL);	RUNTIME_CHECK(isc_once_do(&once, initialize) == ISC_R_SUCCESS);	imp = *dbimp;	RWLOCK(&implock, isc_rwlocktype_write);	ISC_LIST_UNLINK(implementations, imp, link);	mctx = imp->mctx;	isc_mem_put(mctx, imp, sizeof(dns_dbimplementation_t));	isc_mem_detach(&mctx);	RWUNLOCK(&implock, isc_rwlocktype_write);}

⌨️ 快捷键说明

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