Edit File by line
/home/barbar84/www/wp-conte.../plugins/sujqvwi/ExeBy/exe_root.../usr/include/bind9/dns
File: rdataset.h
/*
[0] Fix | Delete
* Copyright (C) Internet Systems Consortium, Inc. ("ISC")
[1] Fix | Delete
*
[2] Fix | Delete
* This Source Code Form is subject to the terms of the Mozilla Public
[3] Fix | Delete
* License, v. 2.0. If a copy of the MPL was not distributed with this
[4] Fix | Delete
* file, you can obtain one at https://mozilla.org/MPL/2.0/.
[5] Fix | Delete
*
[6] Fix | Delete
* See the COPYRIGHT file distributed with this work for additional
[7] Fix | Delete
* information regarding copyright ownership.
[8] Fix | Delete
*/
[9] Fix | Delete
[10] Fix | Delete
#ifndef DNS_RDATASET_H
[11] Fix | Delete
#define DNS_RDATASET_H 1
[12] Fix | Delete
[13] Fix | Delete
/*****
[14] Fix | Delete
***** Module Info
[15] Fix | Delete
*****/
[16] Fix | Delete
[17] Fix | Delete
/*! \file dns/rdataset.h
[18] Fix | Delete
* \brief
[19] Fix | Delete
* A DNS rdataset is a handle that can be associated with a collection of
[20] Fix | Delete
* rdata all having a common owner name, class, and type.
[21] Fix | Delete
*
[22] Fix | Delete
* The dns_rdataset_t type is like a "virtual class". To actually use
[23] Fix | Delete
* rdatasets, an implementation of the method suite (e.g. "slabbed rdata") is
[24] Fix | Delete
* required.
[25] Fix | Delete
*
[26] Fix | Delete
* XXX <more> XXX
[27] Fix | Delete
*
[28] Fix | Delete
* MP:
[29] Fix | Delete
*\li Clients of this module must impose any required synchronization.
[30] Fix | Delete
*
[31] Fix | Delete
* Reliability:
[32] Fix | Delete
*\li No anticipated impact.
[33] Fix | Delete
*
[34] Fix | Delete
* Resources:
[35] Fix | Delete
*\li TBS
[36] Fix | Delete
*
[37] Fix | Delete
* Security:
[38] Fix | Delete
*\li No anticipated impact.
[39] Fix | Delete
*
[40] Fix | Delete
* Standards:
[41] Fix | Delete
*\li None.
[42] Fix | Delete
*/
[43] Fix | Delete
[44] Fix | Delete
#include <inttypes.h>
[45] Fix | Delete
#include <stdbool.h>
[46] Fix | Delete
[47] Fix | Delete
#include <isc/lang.h>
[48] Fix | Delete
#include <isc/magic.h>
[49] Fix | Delete
#include <isc/stdtime.h>
[50] Fix | Delete
[51] Fix | Delete
#include <dns/types.h>
[52] Fix | Delete
#include <dns/rdatastruct.h>
[53] Fix | Delete
[54] Fix | Delete
ISC_LANG_BEGINDECLS
[55] Fix | Delete
[56] Fix | Delete
typedef enum {
[57] Fix | Delete
dns_rdatasetadditional_fromauth,
[58] Fix | Delete
dns_rdatasetadditional_fromcache,
[59] Fix | Delete
dns_rdatasetadditional_fromglue
[60] Fix | Delete
} dns_rdatasetadditional_t;
[61] Fix | Delete
[62] Fix | Delete
typedef struct dns_rdatasetmethods {
[63] Fix | Delete
void (*disassociate)(dns_rdataset_t *rdataset);
[64] Fix | Delete
isc_result_t (*first)(dns_rdataset_t *rdataset);
[65] Fix | Delete
isc_result_t (*next)(dns_rdataset_t *rdataset);
[66] Fix | Delete
void (*current)(dns_rdataset_t *rdataset,
[67] Fix | Delete
dns_rdata_t *rdata);
[68] Fix | Delete
void (*clone)(dns_rdataset_t *source,
[69] Fix | Delete
dns_rdataset_t *target);
[70] Fix | Delete
unsigned int (*count)(dns_rdataset_t *rdataset);
[71] Fix | Delete
isc_result_t (*addnoqname)(dns_rdataset_t *rdataset,
[72] Fix | Delete
dns_name_t *name);
[73] Fix | Delete
isc_result_t (*getnoqname)(dns_rdataset_t *rdataset,
[74] Fix | Delete
dns_name_t *name,
[75] Fix | Delete
dns_rdataset_t *neg,
[76] Fix | Delete
dns_rdataset_t *negsig);
[77] Fix | Delete
isc_result_t (*addclosest)(dns_rdataset_t *rdataset,
[78] Fix | Delete
dns_name_t *name);
[79] Fix | Delete
isc_result_t (*getclosest)(dns_rdataset_t *rdataset,
[80] Fix | Delete
dns_name_t *name,
[81] Fix | Delete
dns_rdataset_t *neg,
[82] Fix | Delete
dns_rdataset_t *negsig);
[83] Fix | Delete
isc_result_t (*getadditional)(dns_rdataset_t *rdataset,
[84] Fix | Delete
dns_rdatasetadditional_t type,
[85] Fix | Delete
dns_rdatatype_t qtype,
[86] Fix | Delete
dns_acache_t *acache,
[87] Fix | Delete
dns_zone_t **zonep,
[88] Fix | Delete
dns_db_t **dbp,
[89] Fix | Delete
dns_dbversion_t **versionp,
[90] Fix | Delete
dns_dbnode_t **nodep,
[91] Fix | Delete
dns_name_t *fname,
[92] Fix | Delete
dns_message_t *msg,
[93] Fix | Delete
isc_stdtime_t now);
[94] Fix | Delete
isc_result_t (*setadditional)(dns_rdataset_t *rdataset,
[95] Fix | Delete
dns_rdatasetadditional_t type,
[96] Fix | Delete
dns_rdatatype_t qtype,
[97] Fix | Delete
dns_acache_t *acache,
[98] Fix | Delete
dns_zone_t *zone,
[99] Fix | Delete
dns_db_t *db,
[100] Fix | Delete
dns_dbversion_t *version,
[101] Fix | Delete
dns_dbnode_t *node,
[102] Fix | Delete
dns_name_t *fname);
[103] Fix | Delete
isc_result_t (*putadditional)(dns_acache_t *acache,
[104] Fix | Delete
dns_rdataset_t *rdataset,
[105] Fix | Delete
dns_rdatasetadditional_t type,
[106] Fix | Delete
dns_rdatatype_t qtype);
[107] Fix | Delete
void (*settrust)(dns_rdataset_t *rdataset,
[108] Fix | Delete
dns_trust_t trust);
[109] Fix | Delete
void (*expire)(dns_rdataset_t *rdataset);
[110] Fix | Delete
void (*clearprefetch)(dns_rdataset_t *rdataset);
[111] Fix | Delete
void (*setownercase)(dns_rdataset_t *rdataset,
[112] Fix | Delete
const dns_name_t *name);
[113] Fix | Delete
void (*getownercase)(const dns_rdataset_t *rdataset, dns_name_t *name);
[114] Fix | Delete
} dns_rdatasetmethods_t;
[115] Fix | Delete
[116] Fix | Delete
#define DNS_RDATASET_MAGIC ISC_MAGIC('D','N','S','R')
[117] Fix | Delete
#define DNS_RDATASET_VALID(set) ISC_MAGIC_VALID(set, DNS_RDATASET_MAGIC)
[118] Fix | Delete
[119] Fix | Delete
/*%
[120] Fix | Delete
* Direct use of this structure by clients is strongly discouraged, except
[121] Fix | Delete
* for the 'link' field which may be used however the client wishes. The
[122] Fix | Delete
* 'private', 'current', and 'index' fields MUST NOT be changed by clients.
[123] Fix | Delete
* rdataset implementations may change any of the fields.
[124] Fix | Delete
*/
[125] Fix | Delete
struct dns_rdataset {
[126] Fix | Delete
unsigned int magic; /* XXX ? */
[127] Fix | Delete
dns_rdatasetmethods_t * methods;
[128] Fix | Delete
ISC_LINK(dns_rdataset_t) link;
[129] Fix | Delete
[130] Fix | Delete
/*
[131] Fix | Delete
* XXX do we need these, or should they be retrieved by methods?
[132] Fix | Delete
* Leaning towards the latter, since they are not frequently required
[133] Fix | Delete
* once you have the rdataset.
[134] Fix | Delete
*/
[135] Fix | Delete
dns_rdataclass_t rdclass;
[136] Fix | Delete
dns_rdatatype_t type;
[137] Fix | Delete
dns_ttl_t ttl;
[138] Fix | Delete
/*
[139] Fix | Delete
* Stale ttl is used to see how long this RRset can still be used
[140] Fix | Delete
* to serve to clients, after the TTL has expired.
[141] Fix | Delete
*/
[142] Fix | Delete
dns_ttl_t stale_ttl;
[143] Fix | Delete
dns_trust_t trust;
[144] Fix | Delete
dns_rdatatype_t covers;
[145] Fix | Delete
[146] Fix | Delete
/*
[147] Fix | Delete
* attributes
[148] Fix | Delete
*/
[149] Fix | Delete
unsigned int attributes;
[150] Fix | Delete
[151] Fix | Delete
/*%
[152] Fix | Delete
* the counter provides the starting point in the "cyclic" order.
[153] Fix | Delete
* The value UINT32_MAX has a special meaning of "picking up a
[154] Fix | Delete
* random value." in order to take care of databases that do not
[155] Fix | Delete
* increment the counter.
[156] Fix | Delete
*/
[157] Fix | Delete
uint32_t count;
[158] Fix | Delete
[159] Fix | Delete
/*
[160] Fix | Delete
* This RRSIG RRset should be re-generated around this time.
[161] Fix | Delete
* Only valid if DNS_RDATASETATTR_RESIGN is set in attributes.
[162] Fix | Delete
*/
[163] Fix | Delete
isc_stdtime_t resign;
[164] Fix | Delete
[165] Fix | Delete
/*@{*/
[166] Fix | Delete
/*%
[167] Fix | Delete
* These are for use by the rdataset implementation, and MUST NOT
[168] Fix | Delete
* be changed by clients.
[169] Fix | Delete
*/
[170] Fix | Delete
void * private1;
[171] Fix | Delete
void * private2;
[172] Fix | Delete
void * private3;
[173] Fix | Delete
unsigned int privateuint4;
[174] Fix | Delete
void * private5;
[175] Fix | Delete
void * private6;
[176] Fix | Delete
void * private7;
[177] Fix | Delete
/*@}*/
[178] Fix | Delete
[179] Fix | Delete
};
[180] Fix | Delete
[181] Fix | Delete
/*!
[182] Fix | Delete
* \def DNS_RDATASETATTR_RENDERED
[183] Fix | Delete
* Used by message.c to indicate that the rdataset was rendered.
[184] Fix | Delete
*
[185] Fix | Delete
* \def DNS_RDATASETATTR_TTLADJUSTED
[186] Fix | Delete
* Used by message.c to indicate that the rdataset's rdata had differing
[187] Fix | Delete
* TTL values, and the rdataset->ttl holds the smallest.
[188] Fix | Delete
*
[189] Fix | Delete
* \def DNS_RDATASETATTR_LOADORDER
[190] Fix | Delete
* Output the RRset in load order.
[191] Fix | Delete
*/
[192] Fix | Delete
[193] Fix | Delete
#define DNS_RDATASETATTR_QUESTION 0x00000001
[194] Fix | Delete
#define DNS_RDATASETATTR_RENDERED 0x00000002 /*%< Used by message.c */
[195] Fix | Delete
#define DNS_RDATASETATTR_ANSWERED 0x00000004 /*%< Used by server. */
[196] Fix | Delete
#define DNS_RDATASETATTR_CACHE 0x00000008 /*%< Used by resolver. */
[197] Fix | Delete
#define DNS_RDATASETATTR_ANSWER 0x00000010 /*%< Used by resolver. */
[198] Fix | Delete
#define DNS_RDATASETATTR_ANSWERSIG 0x00000020 /*%< Used by resolver. */
[199] Fix | Delete
#define DNS_RDATASETATTR_EXTERNAL 0x00000040 /*%< Used by resolver. */
[200] Fix | Delete
#define DNS_RDATASETATTR_NCACHE 0x00000080 /*%< Used by resolver. */
[201] Fix | Delete
#define DNS_RDATASETATTR_CHAINING 0x00000100 /*%< Used by resolver. */
[202] Fix | Delete
#define DNS_RDATASETATTR_TTLADJUSTED 0x00000200 /*%< Used by message.c */
[203] Fix | Delete
#define DNS_RDATASETATTR_FIXEDORDER 0x00000400
[204] Fix | Delete
#define DNS_RDATASETATTR_RANDOMIZE 0x00000800
[205] Fix | Delete
#define DNS_RDATASETATTR_CHASE 0x00001000 /*%< Used by resolver. */
[206] Fix | Delete
#define DNS_RDATASETATTR_NXDOMAIN 0x00002000
[207] Fix | Delete
#define DNS_RDATASETATTR_NOQNAME 0x00004000
[208] Fix | Delete
#define DNS_RDATASETATTR_CHECKNAMES 0x00008000 /*%< Used by resolver. */
[209] Fix | Delete
#define DNS_RDATASETATTR_REQUIRED 0x00010000
[210] Fix | Delete
#define DNS_RDATASETATTR_REQUIREDGLUE DNS_RDATASETATTR_REQUIRED
[211] Fix | Delete
#define DNS_RDATASETATTR_LOADORDER 0x00020000
[212] Fix | Delete
#define DNS_RDATASETATTR_RESIGN 0x00040000
[213] Fix | Delete
#define DNS_RDATASETATTR_CLOSEST 0x00080000
[214] Fix | Delete
#define DNS_RDATASETATTR_OPTOUT 0x00100000 /*%< OPTOUT proof */
[215] Fix | Delete
#define DNS_RDATASETATTR_NEGATIVE 0x00200000
[216] Fix | Delete
#define DNS_RDATASETATTR_PREFETCH 0x00400000
[217] Fix | Delete
#define DNS_RDATASETATTR_STALE 0x01000000
[218] Fix | Delete
[219] Fix | Delete
/*%
[220] Fix | Delete
* _OMITDNSSEC:
[221] Fix | Delete
* Omit DNSSEC records when rendering ncache records.
[222] Fix | Delete
*/
[223] Fix | Delete
#define DNS_RDATASETTOWIRE_OMITDNSSEC 0x0001
[224] Fix | Delete
[225] Fix | Delete
void
[226] Fix | Delete
dns_rdataset_init(dns_rdataset_t *rdataset);
[227] Fix | Delete
/*%<
[228] Fix | Delete
* Make 'rdataset' a valid, disassociated rdataset.
[229] Fix | Delete
*
[230] Fix | Delete
* Requires:
[231] Fix | Delete
*\li 'rdataset' is not NULL.
[232] Fix | Delete
*
[233] Fix | Delete
* Ensures:
[234] Fix | Delete
*\li 'rdataset' is a valid, disassociated rdataset.
[235] Fix | Delete
*/
[236] Fix | Delete
[237] Fix | Delete
void
[238] Fix | Delete
dns_rdataset_invalidate(dns_rdataset_t *rdataset);
[239] Fix | Delete
/*%<
[240] Fix | Delete
* Invalidate 'rdataset'.
[241] Fix | Delete
*
[242] Fix | Delete
* Requires:
[243] Fix | Delete
*\li 'rdataset' is a valid, disassociated rdataset.
[244] Fix | Delete
*
[245] Fix | Delete
* Ensures:
[246] Fix | Delete
*\li If assertion checking is enabled, future attempts to use 'rdataset'
[247] Fix | Delete
* without initializing it will cause an assertion failure.
[248] Fix | Delete
*/
[249] Fix | Delete
[250] Fix | Delete
void
[251] Fix | Delete
dns_rdataset_disassociate(dns_rdataset_t *rdataset);
[252] Fix | Delete
/*%<
[253] Fix | Delete
* Disassociate 'rdataset' from its rdata, allowing it to be reused.
[254] Fix | Delete
*
[255] Fix | Delete
* Notes:
[256] Fix | Delete
*\li The client must ensure it has no references to rdata in the rdataset
[257] Fix | Delete
* before disassociating.
[258] Fix | Delete
*
[259] Fix | Delete
* Requires:
[260] Fix | Delete
*\li 'rdataset' is a valid, associated rdataset.
[261] Fix | Delete
*
[262] Fix | Delete
* Ensures:
[263] Fix | Delete
*\li 'rdataset' is a valid, disassociated rdataset.
[264] Fix | Delete
*/
[265] Fix | Delete
[266] Fix | Delete
bool
[267] Fix | Delete
dns_rdataset_isassociated(dns_rdataset_t *rdataset);
[268] Fix | Delete
/*%<
[269] Fix | Delete
* Is 'rdataset' associated?
[270] Fix | Delete
*
[271] Fix | Delete
* Requires:
[272] Fix | Delete
*\li 'rdataset' is a valid rdataset.
[273] Fix | Delete
*
[274] Fix | Delete
* Returns:
[275] Fix | Delete
*\li #true 'rdataset' is associated.
[276] Fix | Delete
*\li #false 'rdataset' is not associated.
[277] Fix | Delete
*/
[278] Fix | Delete
[279] Fix | Delete
void
[280] Fix | Delete
dns_rdataset_makequestion(dns_rdataset_t *rdataset, dns_rdataclass_t rdclass,
[281] Fix | Delete
dns_rdatatype_t type);
[282] Fix | Delete
/*%<
[283] Fix | Delete
* Make 'rdataset' a valid, associated, question rdataset, with a
[284] Fix | Delete
* question class of 'rdclass' and type 'type'.
[285] Fix | Delete
*
[286] Fix | Delete
* Notes:
[287] Fix | Delete
*\li Question rdatasets have a class and type, but no rdata.
[288] Fix | Delete
*
[289] Fix | Delete
* Requires:
[290] Fix | Delete
*\li 'rdataset' is a valid, disassociated rdataset.
[291] Fix | Delete
*
[292] Fix | Delete
* Ensures:
[293] Fix | Delete
*\li 'rdataset' is a valid, associated, question rdataset.
[294] Fix | Delete
*/
[295] Fix | Delete
[296] Fix | Delete
void
[297] Fix | Delete
dns_rdataset_clone(dns_rdataset_t *source, dns_rdataset_t *target);
[298] Fix | Delete
/*%<
[299] Fix | Delete
* Make 'target' refer to the same rdataset as 'source'.
[300] Fix | Delete
*
[301] Fix | Delete
* Requires:
[302] Fix | Delete
*\li 'source' is a valid, associated rdataset.
[303] Fix | Delete
*
[304] Fix | Delete
*\li 'target' is a valid, dissociated rdataset.
[305] Fix | Delete
*
[306] Fix | Delete
* Ensures:
[307] Fix | Delete
*\li 'target' references the same rdataset as 'source'.
[308] Fix | Delete
*/
[309] Fix | Delete
[310] Fix | Delete
unsigned int
[311] Fix | Delete
dns_rdataset_count(dns_rdataset_t *rdataset);
[312] Fix | Delete
/*%<
[313] Fix | Delete
* Return the number of records in 'rdataset'.
[314] Fix | Delete
*
[315] Fix | Delete
* Requires:
[316] Fix | Delete
*\li 'rdataset' is a valid, associated rdataset.
[317] Fix | Delete
*
[318] Fix | Delete
* Returns:
[319] Fix | Delete
*\li The number of records in 'rdataset'.
[320] Fix | Delete
*/
[321] Fix | Delete
[322] Fix | Delete
isc_result_t
[323] Fix | Delete
dns_rdataset_first(dns_rdataset_t *rdataset);
[324] Fix | Delete
/*%<
[325] Fix | Delete
* Move the rdata cursor to the first rdata in the rdataset (if any).
[326] Fix | Delete
*
[327] Fix | Delete
* Requires:
[328] Fix | Delete
*\li 'rdataset' is a valid, associated rdataset.
[329] Fix | Delete
*
[330] Fix | Delete
* Returns:
[331] Fix | Delete
*\li #ISC_R_SUCCESS
[332] Fix | Delete
*\li #ISC_R_NOMORE There are no rdata in the set.
[333] Fix | Delete
*/
[334] Fix | Delete
[335] Fix | Delete
isc_result_t
[336] Fix | Delete
dns_rdataset_next(dns_rdataset_t *rdataset);
[337] Fix | Delete
/*%<
[338] Fix | Delete
* Move the rdata cursor to the next rdata in the rdataset (if any).
[339] Fix | Delete
*
[340] Fix | Delete
* Requires:
[341] Fix | Delete
*\li 'rdataset' is a valid, associated rdataset.
[342] Fix | Delete
*
[343] Fix | Delete
* Returns:
[344] Fix | Delete
*\li #ISC_R_SUCCESS
[345] Fix | Delete
*\li #ISC_R_NOMORE There are no more rdata in the set.
[346] Fix | Delete
*/
[347] Fix | Delete
[348] Fix | Delete
void
[349] Fix | Delete
dns_rdataset_current(dns_rdataset_t *rdataset, dns_rdata_t *rdata);
[350] Fix | Delete
/*%<
[351] Fix | Delete
* Make 'rdata' refer to the current rdata.
[352] Fix | Delete
*
[353] Fix | Delete
* Notes:
[354] Fix | Delete
*
[355] Fix | Delete
*\li The data returned in 'rdata' is valid for the life of the
[356] Fix | Delete
* rdataset; in particular, subsequent changes in the cursor position
[357] Fix | Delete
* do not invalidate 'rdata'.
[358] Fix | Delete
*
[359] Fix | Delete
* Requires:
[360] Fix | Delete
*\li 'rdataset' is a valid, associated rdataset.
[361] Fix | Delete
*
[362] Fix | Delete
*\li The rdata cursor of 'rdataset' is at a valid location (i.e. the
[363] Fix | Delete
* result of last call to a cursor movement command was ISC_R_SUCCESS).
[364] Fix | Delete
*
[365] Fix | Delete
* Ensures:
[366] Fix | Delete
*\li 'rdata' refers to the rdata at the rdata cursor location of
[367] Fix | Delete
*\li 'rdataset'.
[368] Fix | Delete
*/
[369] Fix | Delete
[370] Fix | Delete
isc_result_t
[371] Fix | Delete
dns_rdataset_totext(dns_rdataset_t *rdataset,
[372] Fix | Delete
dns_name_t *owner_name,
[373] Fix | Delete
bool omit_final_dot,
[374] Fix | Delete
bool question,
[375] Fix | Delete
isc_buffer_t *target);
[376] Fix | Delete
/*%<
[377] Fix | Delete
* Convert 'rdataset' to text format, storing the result in 'target'.
[378] Fix | Delete
*
[379] Fix | Delete
* Notes:
[380] Fix | Delete
*\li The rdata cursor position will be changed.
[381] Fix | Delete
*
[382] Fix | Delete
*\li The 'question' flag should normally be #false. If it is
[383] Fix | Delete
* #true, the TTL and rdata fields are not printed. This is
[384] Fix | Delete
* for use when printing an rdata representing a question section.
[385] Fix | Delete
*
[386] Fix | Delete
*\li This interface is deprecated; use dns_master_rdatasettottext()
[387] Fix | Delete
* and/or dns_master_questiontotext() instead.
[388] Fix | Delete
*
[389] Fix | Delete
* Requires:
[390] Fix | Delete
*\li 'rdataset' is a valid rdataset.
[391] Fix | Delete
*
[392] Fix | Delete
*\li 'rdataset' is not empty.
[393] Fix | Delete
*/
[394] Fix | Delete
[395] Fix | Delete
isc_result_t
[396] Fix | Delete
dns_rdataset_towire(dns_rdataset_t *rdataset,
[397] Fix | Delete
dns_name_t *owner_name,
[398] Fix | Delete
dns_compress_t *cctx,
[399] Fix | Delete
isc_buffer_t *target,
[400] Fix | Delete
unsigned int options,
[401] Fix | Delete
unsigned int *countp);
[402] Fix | Delete
/*%<
[403] Fix | Delete
* Convert 'rdataset' to wire format, compressing names as specified
[404] Fix | Delete
* in 'cctx', and storing the result in 'target'.
[405] Fix | Delete
*
[406] Fix | Delete
* Notes:
[407] Fix | Delete
*\li The rdata cursor position will be changed.
[408] Fix | Delete
*
[409] Fix | Delete
*\li The number of RRs added to target will be added to *countp.
[410] Fix | Delete
*
[411] Fix | Delete
* Requires:
[412] Fix | Delete
*\li 'rdataset' is a valid rdataset.
[413] Fix | Delete
*
[414] Fix | Delete
*\li 'rdataset' is not empty.
[415] Fix | Delete
*
[416] Fix | Delete
*\li 'countp' is a valid pointer.
[417] Fix | Delete
*
[418] Fix | Delete
* Ensures:
[419] Fix | Delete
*\li On a return of ISC_R_SUCCESS, 'target' contains a wire format
[420] Fix | Delete
* for the data contained in 'rdataset'. Any error return leaves
[421] Fix | Delete
* the buffer unchanged.
[422] Fix | Delete
*
[423] Fix | Delete
*\li *countp has been incremented by the number of RRs added to
[424] Fix | Delete
* target.
[425] Fix | Delete
*
[426] Fix | Delete
* Returns:
[427] Fix | Delete
*\li #ISC_R_SUCCESS - all ok
[428] Fix | Delete
*\li #ISC_R_NOSPACE - 'target' doesn't have enough room
[429] Fix | Delete
*
[430] Fix | Delete
*\li Any error returned by dns_rdata_towire(), dns_rdataset_next(),
[431] Fix | Delete
* dns_name_towire().
[432] Fix | Delete
*/
[433] Fix | Delete
[434] Fix | Delete
isc_result_t
[435] Fix | Delete
dns_rdataset_towiresorted(dns_rdataset_t *rdataset,
[436] Fix | Delete
const dns_name_t *owner_name,
[437] Fix | Delete
dns_compress_t *cctx,
[438] Fix | Delete
isc_buffer_t *target,
[439] Fix | Delete
dns_rdatasetorderfunc_t order,
[440] Fix | Delete
const void *order_arg,
[441] Fix | Delete
unsigned int options,
[442] Fix | Delete
unsigned int *countp);
[443] Fix | Delete
/*%<
[444] Fix | Delete
* Like dns_rdataset_towire(), but sorting the rdatasets according to
[445] Fix | Delete
* the integer value returned by 'order' when called with the rdataset
[446] Fix | Delete
* and 'order_arg' as arguments.
[447] Fix | Delete
*
[448] Fix | Delete
* Requires:
[449] Fix | Delete
*\li All the requirements of dns_rdataset_towire(), and
[450] Fix | Delete
* that order_arg is NULL if and only if order is NULL.
[451] Fix | Delete
*/
[452] Fix | Delete
[453] Fix | Delete
isc_result_t
[454] Fix | Delete
dns_rdataset_towirepartial(dns_rdataset_t *rdataset,
[455] Fix | Delete
const dns_name_t *owner_name,
[456] Fix | Delete
dns_compress_t *cctx,
[457] Fix | Delete
isc_buffer_t *target,
[458] Fix | Delete
dns_rdatasetorderfunc_t order,
[459] Fix | Delete
const void *order_arg,
[460] Fix | Delete
unsigned int options,
[461] Fix | Delete
unsigned int *countp,
[462] Fix | Delete
void **state);
[463] Fix | Delete
/*%<
[464] Fix | Delete
* Like dns_rdataset_towiresorted() except that a partial rdataset
[465] Fix | Delete
* may be written.
[466] Fix | Delete
*
[467] Fix | Delete
* Requires:
[468] Fix | Delete
*\li All the requirements of dns_rdataset_towiresorted().
[469] Fix | Delete
* If 'state' is non NULL then the current position in the
[470] Fix | Delete
* rdataset will be remembered if the rdataset in not
[471] Fix | Delete
* completely written and should be passed on on subsequent
[472] Fix | Delete
* calls (NOT CURRENTLY IMPLEMENTED).
[473] Fix | Delete
*
[474] Fix | Delete
* Returns:
[475] Fix | Delete
*\li #ISC_R_SUCCESS if all of the records were written.
[476] Fix | Delete
*\li #ISC_R_NOSPACE if unable to fit in all of the records. *countp
[477] Fix | Delete
* will be updated to reflect the number of records
[478] Fix | Delete
* written.
[479] Fix | Delete
*/
[480] Fix | Delete
[481] Fix | Delete
isc_result_t
[482] Fix | Delete
dns_rdataset_additionaldata(dns_rdataset_t *rdataset,
[483] Fix | Delete
dns_additionaldatafunc_t add, void *arg);
[484] Fix | Delete
/*%<
[485] Fix | Delete
* For each rdata in rdataset, call 'add' for each name and type in the
[486] Fix | Delete
* rdata which is subject to additional section processing.
[487] Fix | Delete
*
[488] Fix | Delete
* Requires:
[489] Fix | Delete
*
[490] Fix | Delete
*\li 'rdataset' is a valid, non-question rdataset.
[491] Fix | Delete
*
[492] Fix | Delete
*\li 'add' is a valid dns_additionaldatafunc_t
[493] Fix | Delete
*
[494] Fix | Delete
* Ensures:
[495] Fix | Delete
*
[496] Fix | Delete
*\li If successful, dns_rdata_additionaldata() will have been called for
[497] Fix | Delete
* each rdata in 'rdataset'.
[498] Fix | Delete
*
[499] Fix | Delete
12
It is recommended that you Edit text format, this type of Fix handles quite a lot in one request
Function