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

📄 rdataset.h

📁 非常好的dns解析软件
💻 H
📖 第 1 页 / 共 2 页
字号:
/* * Copyright (C) 2004-2006  Internet Systems Consortium, Inc. ("ISC") * Copyright (C) 1999-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: rdataset.h,v 1.51.18.7 2006/03/03 00:56:53 marka Exp $ */#ifndef DNS_RDATASET_H#define DNS_RDATASET_H 1/***** ***** Module Info *****//*! \file * \brief * A DNS rdataset is a handle that can be associated with a collection of * rdata all having a common owner name, class, and type. * * The dns_rdataset_t type is like a "virtual class".  To actually use * rdatasets, an implementation of the method suite (e.g. "slabbed rdata") is * required. * * XXX &lt;more&gt; XXX * * MP: *\li	Clients of this module must impose any required synchronization. * * Reliability: *\li	No anticipated impact. * * Resources: *\li	TBS * * Security: *\li	No anticipated impact. * * Standards: *\li	None. */#include <isc/lang.h>#include <isc/magic.h>#include <isc/stdtime.h>#include <dns/types.h>ISC_LANG_BEGINDECLStypedef enum {	dns_rdatasetadditional_fromauth,	dns_rdatasetadditional_fromcache,	dns_rdatasetadditional_fromglue} dns_rdatasetadditional_t;typedef struct dns_rdatasetmethods {	void			(*disassociate)(dns_rdataset_t *rdataset);	isc_result_t		(*first)(dns_rdataset_t *rdataset);	isc_result_t		(*next)(dns_rdataset_t *rdataset);	void			(*current)(dns_rdataset_t *rdataset,					   dns_rdata_t *rdata);	void			(*clone)(dns_rdataset_t *source,					 dns_rdataset_t *target);	unsigned int		(*count)(dns_rdataset_t *rdataset);	isc_result_t		(*addnoqname)(dns_rdataset_t *rdataset,					      dns_name_t *name);	isc_result_t		(*getnoqname)(dns_rdataset_t *rdataset,					      dns_name_t *name,					      dns_rdataset_t *nsec,					      dns_rdataset_t *nsecsig);	isc_result_t		(*getadditional)(dns_rdataset_t *rdataset,						 dns_rdatasetadditional_t type,						 dns_rdatatype_t qtype,						 dns_acache_t *acache,						 dns_zone_t **zonep,						 dns_db_t **dbp,						 dns_dbversion_t **versionp,						 dns_dbnode_t **nodep,						 dns_name_t *fname,						 dns_message_t *msg,						 isc_stdtime_t now);	isc_result_t		(*setadditional)(dns_rdataset_t *rdataset,						 dns_rdatasetadditional_t type,						 dns_rdatatype_t qtype,						 dns_acache_t *acache,						 dns_zone_t *zone,						 dns_db_t *db,						 dns_dbversion_t *version,						 dns_dbnode_t *node,						 dns_name_t *fname);	isc_result_t		(*putadditional)(dns_acache_t *acache,						 dns_rdataset_t *rdataset,						 dns_rdatasetadditional_t type,						 dns_rdatatype_t qtype);} dns_rdatasetmethods_t;#define DNS_RDATASET_MAGIC	       ISC_MAGIC('D','N','S','R')#define DNS_RDATASET_VALID(set)	       ISC_MAGIC_VALID(set, DNS_RDATASET_MAGIC)/*% * Direct use of this structure by clients is strongly discouraged, except * for the 'link' field which may be used however the client wishes.  The * 'private', 'current', and 'index' fields MUST NOT be changed by clients. * rdataset implementations may change any of the fields. */struct dns_rdataset {	unsigned int			magic;		/* XXX ? */	dns_rdatasetmethods_t *		methods;	ISC_LINK(dns_rdataset_t)	link;	/*	 * XXX do we need these, or should they be retrieved by methods?	 * Leaning towards the latter, since they are not frequently required	 * once you have the rdataset.	 */	dns_rdataclass_t		rdclass;	dns_rdatatype_t			type;	dns_ttl_t			ttl;	dns_trust_t			trust;	dns_rdatatype_t			covers;	/*	 * attributes	 */	unsigned int			attributes;	/*%	 * the counter provides the starting point in the "cyclic" order.	 * The value ISC_UINT32_MAX has a special meaning of "picking up a	 * random value." in order to take care of databases that do not	 * increment the counter.	 */	isc_uint32_t			count;	/*@{*/	/*%	 * These are for use by the rdataset implementation, and MUST NOT	 * be changed by clients.	 */	void *				private1;	void *				private2;	void *				private3;	unsigned int			privateuint4;	void *				private5;	void *				private6;	/*@}*/};/*! * \def DNS_RDATASETATTR_RENDERED *	Used by message.c to indicate that the rdataset was rendered. * * \def DNS_RDATASETATTR_TTLADJUSTED *	Used by message.c to indicate that the rdataset's rdata had differing *	TTL values, and the rdataset->ttl holds the smallest. * * \def DNS_RDATASETATTR_LOADORDER *	Output the RRset in load order. */#define DNS_RDATASETATTR_QUESTION	0x00000001#define DNS_RDATASETATTR_RENDERED	0x00000002	/*%< Used by message.c */#define DNS_RDATASETATTR_ANSWERED	0x00000004	/*%< Used by server. */#define DNS_RDATASETATTR_CACHE		0x00000008	/*%< Used by resolver. */#define DNS_RDATASETATTR_ANSWER		0x00000010	/*%< Used by resolver. */#define DNS_RDATASETATTR_ANSWERSIG	0x00000020	/*%< Used by resolver. */#define DNS_RDATASETATTR_EXTERNAL	0x00000040	/*%< Used by resolver. */#define DNS_RDATASETATTR_NCACHE		0x00000080	/*%< Used by resolver. */#define DNS_RDATASETATTR_CHAINING	0x00000100	/*%< Used by resolver. */#define DNS_RDATASETATTR_TTLADJUSTED	0x00000200	/*%< Used by message.c */#define DNS_RDATASETATTR_FIXEDORDER	0x00000400#define DNS_RDATASETATTR_RANDOMIZE	0x00000800#define DNS_RDATASETATTR_CHASE		0x00001000	/*%< Used by resolver. */#define DNS_RDATASETATTR_NXDOMAIN	0x00002000#define DNS_RDATASETATTR_NOQNAME	0x00004000#define DNS_RDATASETATTR_CHECKNAMES	0x00008000	/*%< Used by resolver. */#define DNS_RDATASETATTR_REQUIREDGLUE	0x00010000#define DNS_RDATASETATTR_LOADORDER	0x00020000/*% * _OMITDNSSEC: * 	Omit DNSSEC records when rendering ncache records. */#define DNS_RDATASETTOWIRE_OMITDNSSEC	0x0001voiddns_rdataset_init(dns_rdataset_t *rdataset);/*%< * Make 'rdataset' a valid, disassociated rdataset. * * Requires: *\li	'rdataset' is not NULL. * * Ensures: *\li	'rdataset' is a valid, disassociated rdataset. */voiddns_rdataset_invalidate(dns_rdataset_t *rdataset);/*%< * Invalidate 'rdataset'. * * Requires: *\li	'rdataset' is a valid, disassociated rdataset. * * Ensures: *\li	If assertion checking is enabled, future attempts to use 'rdataset' *	without initializing it will cause an assertion failure. */voiddns_rdataset_disassociate(dns_rdataset_t *rdataset);/*%< * Disassociate 'rdataset' from its rdata, allowing it to be reused. * * Notes: *\li	The client must ensure it has no references to rdata in the rdataset *	before disassociating. * * Requires: *\li	'rdataset' is a valid, associated rdataset. * * Ensures: *\li	'rdataset' is a valid, disassociated rdataset. */isc_boolean_tdns_rdataset_isassociated(dns_rdataset_t *rdataset);/*%< * Is 'rdataset' associated? * * Requires: *\li	'rdataset' is a valid rdataset. * * Returns: *\li	#ISC_TRUE			'rdataset' is associated. *\li	#ISC_FALSE			'rdataset' is not associated. */voiddns_rdataset_makequestion(dns_rdataset_t *rdataset, dns_rdataclass_t rdclass,			  dns_rdatatype_t type);/*%< * Make 'rdataset' a valid, associated, question rdataset, with a * question class of 'rdclass' and type 'type'. * * Notes: *\li	Question rdatasets have a class and type, but no rdata. * * Requires: *\li	'rdataset' is a valid, disassociated rdataset. * * Ensures: *\li	'rdataset' is a valid, associated, question rdataset. */voiddns_rdataset_clone(dns_rdataset_t *source, dns_rdataset_t *target);/*%< * Make 'target' refer to the same rdataset as 'source'. * * Requires: *\li	'source' is a valid, associated rdataset. * *\li	'target' is a valid, dissociated rdataset. * * Ensures: *\li	'target' references the same rdataset as 'source'. */unsigned intdns_rdataset_count(dns_rdataset_t *rdataset);/*%< * Return the number of records in 'rdataset'. * * Requires: *\li	'rdataset' is a valid, associated rdataset. * * Returns: *\li	The number of records in 'rdataset'. */isc_result_tdns_rdataset_first(dns_rdataset_t *rdataset);/*%< * Move the rdata cursor to the first rdata in the rdataset (if any). * * Requires: *\li	'rdataset' is a valid, associated rdataset. * * Returns:

⌨️ 快捷键说明

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