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

📄 name.h

📁 非常好的dns解析软件
💻 H
📖 第 1 页 / 共 3 页
字号:
 *	significantly faster than dns_name_fullcompare() or dns_name_compare(). * * \li	Offsets tables are not used in the comparision. * * \li	It makes no sense for one of the names to be relative and the *	other absolute.  If both names are relative, then to be meaningfully * 	compared the caller must ensure that they are both relative to the * 	same domain. * * Requires: * \li	'name1' is a valid name * * \li	'name2' is a valid name * * \li	Either name1 is absolute and name2 is absolute, or neither is. * * Returns: * \li	ISC_TRUE	'name1' and 'name2' are equal * \li	ISC_FALSE	'name1' and 'name2' are not equal */isc_boolean_tdns_name_caseequal(const dns_name_t *name1, const dns_name_t *name2);/*%< * Case sensitive version of dns_name_equal(). */intdns_name_rdatacompare(const dns_name_t *name1, const dns_name_t *name2);/*%< * Compare two names as if they are part of rdata in DNSSEC canonical * form. * * Requires: * \li	'name1' is a valid absolute name * * \li	dns_name_countlabels(name1) > 0 * * \li	'name2' is a valid absolute name * * \li	dns_name_countlabels(name2) > 0 * * Returns: * \li	< 0		'name1' is less than 'name2' * \li	0		'name1' is equal to 'name2' * \li	> 0		'name1' is greater than 'name2' */isc_boolean_tdns_name_issubdomain(const dns_name_t *name1, const dns_name_t *name2);/*%< * Is 'name1' a subdomain of 'name2'? * * Notes: * \li	name1 is a subdomain of name2 if name1 is contained in name2, or *	name1 equals name2. * * \li	It makes no sense for one of the names to be relative and the *	other absolute.  If both names are relative, then to be meaningfully *	compared the caller must ensure that they are both relative to the *	same domain. * * Requires: * \li	'name1' is a valid name * * \li	'name2' is a valid name * * \li	Either name1 is absolute and name2 is absolute, or neither is. * * Returns: * \li	TRUE		'name1' is a subdomain of 'name2' * \li	FALSE		'name1' is not a subdomain of 'name2' */isc_boolean_tdns_name_matcheswildcard(const dns_name_t *name, const dns_name_t *wname);/*%< * Does 'name' match the wildcard specified in 'wname'? * * Notes: * \li	name matches the wildcard specified in wname if all labels *	following the wildcard in wname are identical to the same number *	of labels at the end of name. * * \li	It makes no sense for one of the names to be relative and the *	other absolute.  If both names are relative, then to be meaningfully *	compared the caller must ensure that they are both relative to the *	same domain. * * Requires: * \li	'name' is a valid name * * \li	dns_name_countlabels(name) > 0 * * \li	'wname' is a valid name * * \li	dns_name_countlabels(wname) > 0 * * \li	dns_name_iswildcard(wname) is true * * \li	Either name is absolute and wname is absolute, or neither is. * * Returns: * \li	TRUE		'name' matches the wildcard specified in 'wname' * \li	FALSE		'name' does not match the wildcard specified in 'wname' *//*** *** Labels ***/unsigned intdns_name_countlabels(const dns_name_t *name);/*%< * How many labels does 'name' have? * * Notes: * \li	In this case, as in other places, a 'label' is an ordinary label. * * Requires: * \li	'name' is a valid name * * Ensures: * \li	The result is <= 128. * * Returns: * \li	The number of labels in 'name'. */voiddns_name_getlabel(const dns_name_t *name, unsigned int n, dns_label_t *label);/*%< * Make 'label' refer to the 'n'th least significant label of 'name'. * * Notes: * \li	Numbering starts at 0. * * \li	Given "rc.vix.com.", the label 0 is "rc", and label 3 is the *	root label. * * \li	'label' refers to the same memory as 'name', so 'name' must not *	be changed while 'label' is still in use. * * Requires: * \li	n < dns_name_countlabels(name) */voiddns_name_getlabelsequence(const dns_name_t *source, unsigned int first,			  unsigned int n, dns_name_t *target);/*%< * Make 'target' refer to the 'n' labels including and following 'first' * in 'source'. * * Notes: * \li	Numbering starts at 0. * * \li	Given "rc.vix.com.", the label 0 is "rc", and label 3 is the *	root label. * * \li	'target' refers to the same memory as 'source', so 'source' *	must not be changed while 'target' is still in use. * * Requires: * \li	'source' and 'target' are valid names. * * \li	first < dns_name_countlabels(name) * * \li	first + n <= dns_name_countlabels(name) */voiddns_name_clone(const dns_name_t *source, dns_name_t *target);/*%< * Make 'target' refer to the same name as 'source'. * * Notes: * * \li	'target' refers to the same memory as 'source', so 'source' *	must not be changed while 'target' is still in use. * * \li	This call is functionally equivalent to: * * \code *		dns_name_getlabelsequence(source, 0, *					  dns_name_countlabels(source), *					  target); * \endcode * *	but is more efficient.  Also, dns_name_clone() works even if 'source' *	is empty. * * Requires: * * \li	'source' is a valid name. * * \li	'target' is a valid name that is not read-only. *//*** *** Conversions ***/voiddns_name_fromregion(dns_name_t *name, const isc_region_t *r);/*%< * Make 'name' refer to region 'r'. * * Note: * \li	If the conversion encounters a root label before the end of the *	region the conversion stops and the length is set to the length *	so far converted.  A maximum of 255 bytes is converted. * * Requires: * \li	The data in 'r' is a sequence of one or more type 00 or type 01000001 *	labels. */voiddns_name_toregion(dns_name_t *name, isc_region_t *r);/*%< * Make 'r' refer to 'name'. * * Requires: * * \li	'name' is a valid name. * * \li	'r' is a valid region. */isc_result_tdns_name_fromwire(dns_name_t *name, isc_buffer_t *source,		  dns_decompress_t *dctx, unsigned int options,		  isc_buffer_t *target);/*%< * Copy the possibly-compressed name at source (active region) into target, * decompressing it. * * Notes: * \li	Decompression policy is controlled by 'dctx'. * * \li	If DNS_NAME_DOWNCASE is set, any uppercase letters in 'source' will be *	downcased when they are copied into 'target'. * * Security: * * \li	*** WARNING *** * * \li	This routine will often be used when 'source' contains raw network *	data.  A programming error in this routine could result in a denial *	of service, or in the hijacking of the server. * * Requires: * * \li	'name' is a valid name. * * \li	'source' is a valid buffer and the first byte of the active *	region should be the first byte of a DNS wire format domain name. * * \li	'target' is a valid buffer or 'target' is NULL and 'name' has *	a dedicated buffer. * * \li	'dctx' is a valid decompression context. * * Ensures: * *	If result is success: * \li	 	If 'target' is not NULL, 'name' is attached to it. * * \li		Uppercase letters are downcased in the copy iff *		DNS_NAME_DOWNCASE is set in options. * * \li		The current location in source is advanced, and the used space *		in target is updated. * * Result: * \li	Success * \li	Bad Form: Label Length * \li	Bad Form: Unknown Label Type * \li	Bad Form: Name Length * \li	Bad Form: Compression type not allowed * \li	Bad Form: Bad compression pointer * \li	Bad Form: Input too short * \li	Resource Limit: Too many compression pointers * \li	Resource Limit: Not enough space in buffer */isc_result_tdns_name_towire(const dns_name_t *name, dns_compress_t *cctx,	        isc_buffer_t *target);/*%< * Convert 'name' into wire format, compressing it as specified by the * compression context 'cctx', and storing the result in 'target'. * * Notes: * \li	If the compression context allows global compression, then the *	global compression table may be updated. * * Requires: * \li	'name' is a valid name * * \li	dns_name_countlabels(name) > 0 * * \li	dns_name_isabsolute(name) == TRUE * * \li	target is a valid buffer. * * \li	Any offsets specified in a global compression table are valid *	for buffer. * * Ensures: * *	If the result is success: * * \li		The used space in target is updated. * * Returns: * \li	Success * \li	Resource Limit: Not enough space in buffer */isc_result_tdns_name_fromtext(dns_name_t *name, isc_buffer_t *source,		  dns_name_t *origin, unsigned int options,		  isc_buffer_t *target);/*%< * Convert the textual representation of a DNS name at source * into uncompressed wire form stored in target. * * Notes: * \li	Relative domain names will have 'origin' appended to them *	unless 'origin' is NULL, in which case relative domain names *	will remain relative. * * \li	If DNS_NAME_DOWNCASE is set in 'options', any uppercase letters *	in 'source' will be downcased when they are copied into 'target'. * * Requires: * * \li	'name' is a valid name. * * \li	'source' is a valid buffer. * * \li	'target' is a valid buffer or 'target' is NULL and 'name' has *	a dedicated buffer. * * Ensures: * *	If result is success: * \li	 	If 'target' is not NULL, 'name' is attached to it. * * \li		Uppercase letters are downcased in the copy iff *		DNS_NAME_DOWNCASE is set in 'options'. * * \li		The current location in source is advanced, and the used space *		in target is updated. * * Result: *\li	#ISC_R_SUCCESS *\li	#DNS_R_EMPTYLABEL *\li	#DNS_R_LABELTOOLONG *\li	#DNS_R_BADESCAPE *\li	(#DNS_R_BADBITSTRING: should not be returned) *\li	(#DNS_R_BITSTRINGTOOLONG: should not be returned) *\li	#DNS_R_BADDOTTEDQUAD *\li	#ISC_R_NOSPACE *\li	#ISC_R_UNEXPECTEDEND */isc_result_tdns_name_totext(dns_name_t *name, isc_boolean_t omit_final_dot,		isc_buffer_t *target);/*%< * Convert 'name' into text format, storing the result in 'target'. * * Notes: *\li	If 'omit_final_dot' is true, then the final '.' in absolute *	names other than the root name will be omitted. * *\li	If dns_name_countlabels == 0, the name will be "@", representing the *	current origin as described by RFC1035. * *\li	The name is not NUL terminated. * * Requires: * *\li	'name' is a valid name * *\li	'target' is a valid buffer. * *\li	if dns_name_isabsolute == FALSE, then omit_final_dot == FALSE * * Ensures: * *\li	If the result is success: *		the used space in target is updated. * * Returns: *\li	#ISC_R_SUCCESS *\li	#ISC_R_NOSPACE */#define DNS_NAME_MAXTEXT 1023/*%< * The maximum length of the text representation of a domain * name as generated by dns_name_totext().  This does not * include space for a terminating NULL. * * This definition is conservative - the actual maximum  * is 1004, derived as follows: * *   A backslash-decimal escaped character takes 4 bytes. *   A wire-encoded name can be up to 255 bytes and each *   label is one length byte + at most 63 bytes of data. *   Maximizing the label lengths gives us a name of *   three 63-octet labels, one 61-octet label, and the *   root label: * *      1 + 63 + 1 + 63 + 1 + 63 + 1 + 61 + 1 = 255 * *   When printed, this is (3 * 63 + 61) * 4 *   bytes for the escaped label data + 4 bytes for the *   dot terminating each label = 1004 bytes total. */isc_result_tdns_name_tofilenametext(dns_name_t *name, isc_boolean_t omit_final_dot,			isc_buffer_t *target);/*%< * Convert 'name' into an alternate text format appropriate for filenames, * storing the result in 'target'.  The name data is downcased, guaranteeing * that the filename does not depend on the case of the converted name.

⌨️ 快捷键说明

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