rdata.c revision c707e2b9861dfa3f86b3520b9c3630db70cb020c
7d32c065c7bb56f281651ae3dd2888f32ce4f1d9Bob Halley * Copyright (C) 2004-2015 Internet Systems Consortium, Inc. ("ISC")
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * Copyright (C) 1998-2003 Internet Software Consortium.
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * Permission to use, copy, modify, and/or distribute this software for any
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * purpose with or without fee is hereby granted, provided that the above
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * copyright notice and this permission notice appear in all copies.
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES WITH
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR ANY SPECIAL, DIRECT,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * PERFORMANCE OF THIS SOFTWARE.
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define DNS_AS_STR(t) ((t).value.as_textregion.base)
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define ARGS_FROMTEXT int rdclass, dns_rdatatype_t type, \
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson unsigned int options, isc_buffer_t *target, \
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define ARGS_TOTEXT dns_rdata_t *rdata, dns_rdata_textctx_t *tctx, \
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define ARGS_FROMWIRE int rdclass, dns_rdatatype_t type, \
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson isc_buffer_t *source, dns_decompress_t *dctx, \
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson unsigned int options, isc_buffer_t *target
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define ARGS_TOWIRE dns_rdata_t *rdata, dns_compress_t *cctx, \
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define ARGS_COMPARE const dns_rdata_t *rdata1, const dns_rdata_t *rdata2
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define ARGS_FROMSTRUCT int rdclass, dns_rdatatype_t type, \
ed04318ef686581fc9a20965a5be02abfb4f1bd5Andreas Gustafsson#define ARGS_TOSTRUCT dns_rdata_t *rdata, void *target, isc_mem_t *mctx
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define ARGS_ADDLDATA dns_rdata_t *rdata, dns_additionaldatafunc_t add, \
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define ARGS_DIGEST dns_rdata_t *rdata, dns_digestfunc_t digest, void *arg
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define ARGS_CHECKOWNER dns_name_t *name, dns_rdataclass_t rdclass, \
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson dns_rdatatype_t type, isc_boolean_t wildcard
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson#define ARGS_CHECKNAMES dns_rdata_t *rdata, dns_name_t *owner, dns_name_t *bad
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * Context structure for the totext_ functions.
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * Contains formatting options for rdata-to-text
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson dns_name_t *origin; /*%< Current origin, or NULL. */
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson unsigned int flags; /*%< DNS_STYLEFLAG_* */
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson unsigned int width; /*%< Width of rdata column. */
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson const char *linebreak; /*%< Line break string. */
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssontxt_totext(isc_region_t *source, isc_boolean_t quote, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssontxt_fromtext(isc_textregion_t *source, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssontxt_fromwire(isc_buffer_t *source, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonmultitxt_totext(isc_region_t *source, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonmultitxt_fromtext(isc_textregion_t *source, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonname_prefix(dns_name_t *name, dns_name_t *origin, dns_name_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonstatic unsigned int
9b0e18da3d5c2290f90b285d122d368173f17c63Andreas Gustafssonstr_totext(const char *source, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssoninet_totext(int af, isc_region_t *src, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonbuffer_fromregion(isc_buffer_t *buffer, isc_region_t *region);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonuint32_tobuffer(isc_uint32_t, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonuint16_tobuffer(isc_uint32_t, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonuint8_tobuffer(isc_uint32_t, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonname_tobuffer(dns_name_t *name, isc_buffer_t *target);
7618f0551eb745354ee695907e568b0be1f2c8f5Andreas Gustafssonuint8_consume_fromregion(isc_region_t *region);
f80ea74e1984e0b1dbe48dd86ecdd3a2380393cbBob Halleymem_tobuffer(isc_buffer_t *target, void *base, unsigned int length);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonbtoa_totext(unsigned char *inbuf, int inbuflen, isc_buffer_t *target);
ed04318ef686581fc9a20965a5be02abfb4f1bd5Andreas Gustafssonatob_tobuffer(isc_lex_t *lexer, isc_buffer_t *target);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssondefault_fromtext_callback(dns_rdatacallbacks_t *callbacks, const char *, ...)
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafssonfromtext_error(void (*callback)(dns_rdatacallbacks_t *, const char *, ...),
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson dns_rdatacallbacks_t *callbacks, const char *name,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson unsigned long line, isc_token_t *token, isc_result_t result);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonfromtext_warneof(isc_lex_t *lexer, dns_rdatacallbacks_t *callbacks);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonrdata_totext(dns_rdata_t *rdata, dns_rdata_textctx_t *tctx,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonwarn_badmx(isc_token_t *token, isc_lex_t *lexer,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonuint16_consume_fromregion(isc_region_t *region);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonunknown_totext(dns_rdata_t *rdata, dns_rdata_textctx_t *tctx,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson/*% INT16 Size */
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson/*% IPv6 Address Size */
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * convert presentation level address to network order binary form.
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * 1 if `src' is a valid [RFC1884 2.2] address, else 0.
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson * (1) does not touch `dst' unless it's returning 1.
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonstatic inline int
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonlocator_pton(const char *src, unsigned char *dst) {
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson static const char xdigits_l[] = "0123456789abcdef",
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson *tp++ = (unsigned char) (val >> 8) & 0xff;
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson *tp++ = (unsigned char) (val >> 8) & 0xff;
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonstatic inline int
9b0e18da3d5c2290f90b285d122d368173f17c63Andreas Gustafssongetquad(const void *src, struct in_addr *dst,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson isc_lex_t *lexer, dns_rdatacallbacks_t *callbacks)
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson const char *name = isc_lex_getsourcename(lexer);
8f79820c6930ee5ef6b4a54f36d2559400bdf47dAndreas Gustafsson (*callbacks->warn)(callbacks, "%s:%lu: \"%s\" "
8f79820c6930ee5ef6b4a54f36d2559400bdf47dAndreas Gustafssonname_duporclone(dns_name_t *source, isc_mem_t *mctx, dns_name_t *target) {
8f79820c6930ee5ef6b4a54f36d2559400bdf47dAndreas Gustafsson return (dns_name_dup(source, mctx, target));
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonstatic inline void *
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonmem_maybedup(isc_mem_t *mctx, void *source, size_t length) {
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssonstatic const char hexdigits[] = "0123456789abcdef";
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafssonstatic const char decdigits[] = "0123456789";
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson *** Initialization
7618f0551eb745354ee695907e568b0be1f2c8f5Andreas Gustafsson /* ISC_LIST_INIT(rdata->list); */
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafssondns_rdata_clone(const dns_rdata_t *src, dns_rdata_t *target) {
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson *** Comparisons
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafssondns_rdata_compare(const dns_rdata_t *rdata1, const dns_rdata_t *rdata2) {
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson REQUIRE(rdata1->length == 0 || rdata1->data != NULL);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson REQUIRE(rdata2->length == 0 || rdata2->data != NULL);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson return (rdata1->rdclass < rdata2->rdclass ? -1 : 1);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson return (rdata1->type < rdata2->type ? -1 : 1);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafssondns_rdata_casecompare(const dns_rdata_t *rdata1, const dns_rdata_t *rdata2) {
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson REQUIRE(rdata1->length == 0 || rdata1->data != NULL);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson REQUIRE(rdata2->length == 0 || rdata2->data != NULL);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson return (rdata1->rdclass < rdata2->rdclass ? -1 : 1);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson return (rdata1->type < rdata2->type ? -1 : 1);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson *** Conversions
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafssondns_rdata_fromregion(dns_rdata_t *rdata, dns_rdataclass_t rdclass,
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafssondns_rdata_toregion(const dns_rdata_t *rdata, isc_region_t *r) {
9b0e18da3d5c2290f90b285d122d368173f17c63Andreas Gustafssondns_rdata_fromwire(dns_rdata_t *rdata, dns_rdataclass_t rdclass,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson dns_rdatatype_t type, isc_buffer_t *source,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson dns_decompress_t *dctx, unsigned int options,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson isc_result_t result = ISC_R_NOTIMPLEMENTED;
9b0e18da3d5c2290f90b285d122d368173f17c63Andreas Gustafsson activelength = isc_buffer_activelength(source);
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson if (activelength > isc_buffer_availablelength(target))
9b0e18da3d5c2290f90b285d122d368173f17c63Andreas Gustafsson isc_buffer_putmem(target, isc_buffer_current(source),
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson isc_buffer_forward(source, activelength);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson * Reject any rdata that expands out to more than DNS_RDATA_MAXLENGTH
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson * as we cannot transmit it.
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson length = isc_buffer_usedlength(target) - isc_buffer_usedlength(&st);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson if (result == ISC_R_SUCCESS && length > DNS_RDATA_MAXLENGTH)
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafsson * We should have consumed all of our buffer.
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson if (result == ISC_R_SUCCESS && !buffer_empty(source))
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson if (rdata != NULL && result == ISC_R_SUCCESS) {
9b0e18da3d5c2290f90b285d122d368173f17c63Andreas Gustafsson dns_rdata_fromregion(rdata, rdclass, type, ®ion);
9b0e18da3d5c2290f90b285d122d368173f17c63Andreas Gustafssondns_rdata_towire(dns_rdata_t *rdata, dns_compress_t *cctx,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson isc_result_t result = ISC_R_NOTIMPLEMENTED;
7618f0551eb745354ee695907e568b0be1f2c8f5Andreas Gustafsson * Some DynDNS meta-RRs have empty rdata.
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson if ((rdata->flags & DNS_RDATA_UPDATE) != 0) {
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson memmove(tr.base, rdata->data, rdata->length);
e44487bfc23599b6b240e09d83d1c862fecfcc82Michael Graff dns_compress_rollback(cctx, (isc_uint16_t)target->used);
ed04318ef686581fc9a20965a5be02abfb4f1bd5Andreas Gustafsson * If the binary data in 'src' is valid uncompressed wire format
e44487bfc23599b6b240e09d83d1c862fecfcc82Michael Graff * rdata of class 'rdclass' and type 'type', return ISC_R_SUCCESS
ed04318ef686581fc9a20965a5be02abfb4f1bd5Andreas Gustafsson * and copy the validated rdata to 'dest'. Otherwise return an error.
ed04318ef686581fc9a20965a5be02abfb4f1bd5Andreas Gustafssonrdata_validate(isc_buffer_t *src, isc_buffer_t *dest, dns_rdataclass_t rdclass,
ed04318ef686581fc9a20965a5be02abfb4f1bd5Andreas Gustafsson dns_decompress_init(&dctx, -1, DNS_DECOMPRESS_NONE);
ed04318ef686581fc9a20965a5be02abfb4f1bd5Andreas Gustafsson isc_buffer_setactive(src, isc_buffer_usedlength(src));
ed04318ef686581fc9a20965a5be02abfb4f1bd5Andreas Gustafsson result = dns_rdata_fromwire(NULL, rdclass, type, src, &dctx, 0, dest);
a928d619170d61da40c3bff29800ff73709140daAndreas Gustafssonunknown_fromtext(dns_rdataclass_t rdclass, dns_rdatatype_t type,
f951f076f3d321c52b824a866caff28ce4f8e06cAndreas Gustafsson isc_lex_t *lexer, isc_mem_t *mctx, isc_buffer_t *target)
return (DNS_R_METATYPE);
ISC_FALSE));
return (ISC_R_RANGE);
return (result);
goto failure;
goto failure;
isc_region_t r;
goto failure;
return (ISC_R_SUCCESS);
return (result);
char *name;
unsigned long line;
unsigned int length;
return (result);
if (!unknown)
return (result);
static isc_result_t
return (result);
return (result);
return (result);
target);
return (result);
static isc_result_t
return (ISC_R_SUCCESS);
if (use_default)
return (result);
unsigned int length;
if (use_default)
(void)NULL;
return (result);
if (use_default)
(void)NULL;
return (result);
void *arg)
if (use_default)
return (result);
isc_region_t r;
if (use_default) {
return (result);
return (result);
return (result);
return (DNS_RDATATYPEATTR_UNKNOWN);
unsigned int hash;
return (DNS_R_UNKNOWN);
char *endp;
unsigned int val;
return (ISC_R_SUCCESS);
return (DNS_R_UNKNOWN);
if (size == 0U)
static isc_result_t
unsigned int tl;
unsigned char *sp;
char *tp;
n = *sp++;
if (quote) {
return (ISC_R_NOSPACE);
tl--;
return (ISC_R_NOSPACE);
sp++;
return (ISC_R_NOSPACE);
tl--;
return (ISC_R_NOSPACE);
tl--;
if (quote) {
return (ISC_R_NOSPACE);
tl--;
return (ISC_R_SUCCESS);
static isc_result_t
unsigned int n, nrem;
return (ISC_R_NOSPACE);
nrem--;
return (DNS_R_SYNTAX);
return (DNS_R_SYNTAX);
return (DNS_R_SYNTAX);
return (DNS_R_SYNTAX);
return (DNS_R_SYNTAX);
if (nrem == 0)
nrem--;
if (escape)
return (DNS_R_SYNTAX);
return (ISC_R_SUCCESS);
static isc_result_t
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_UNEXPECTEDEND);
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
static isc_result_t
unsigned int tl;
unsigned int n0, n;
unsigned char *sp;
char *tp;
return (ISC_R_NOSPACE);
tl--;
return (ISC_R_NOSPACE);
sp++;
return (ISC_R_NOSPACE);
tl--;
return (ISC_R_NOSPACE);
tl--;
return (ISC_R_NOSPACE);
tl--;
return (ISC_R_SUCCESS);
static isc_result_t
unsigned int n, nrem;
unsigned char *t0, *t;
return (ISC_R_NOSPACE);
return (DNS_R_SYNTAX);
return (DNS_R_SYNTAX);
return (DNS_R_SYNTAX);
return (DNS_R_SYNTAX);
return (DNS_R_SYNTAX);
nrem--;
if (nrem == 0)
if (escape)
return (DNS_R_SYNTAX);
return (ISC_R_SUCCESS);
static isc_boolean_t
goto return_false;
goto return_false;
goto return_false;
goto return_false;
goto return_false;
return (ISC_TRUE);
return (ISC_FALSE);
static isc_result_t
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
static isc_result_t
return (ISC_R_NOSPACE);
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
static isc_boolean_t
static isc_result_t
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
static isc_result_t
return (ISC_R_RANGE);
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
static isc_result_t
return (ISC_R_RANGE);
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
static isc_result_t
isc_region_t r;
static isc_uint32_t
return(value);
static isc_uint16_t
static isc_uint16_t
static isc_uint8_t
static isc_uint8_t
static isc_result_t
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
c = (unsigned char)value;
if (!isascii(c))
if (isupper(c))
c = tolower(c);
return (int)(s - hexdigits);
return (int)(s - decdigits);
struct state {
static isc_result_t
if (bcount != 0)
return(DNS_R_SYNTAX);
if (bcount == 0) {
++bcount;
++bcount;
word = 0;
bcount = 0;
return(DNS_R_SYNTAX);
return(ISC_R_SUCCESS);
static isc_result_t
Ceor ^= c;
Csum += c;
Crot += c;
return (ISC_R_NOSPACE);
return (ISC_R_SUCCESS);
static isc_result_t
ISC_FALSE));
ISC_FALSE));
ISC_FALSE));
return (DNS_R_SYNTAX);
ISC_FALSE));
return (DNS_R_SYNTAX);
ISC_FALSE));
return (DNS_R_SYNTAX);
return(DNS_R_BADCKSUM);
return (ISC_R_SUCCESS);
static isc_result_t
Ceor ^= c;
Csum += c;
Crot += c;
word |= c;
if (word == 0) {
return (ISC_R_NOSPACE);
register int tmp = 0;
if (tmpword < 0) {
if (tmpword < 0) {
return (ISC_R_NOSPACE);
+ tmp];
bcount = 0;
return (ISC_R_SUCCESS);
static isc_result_t
int inc;
while (bcount != 0)
const char *file;
unsigned long line;
const char *file;
unsigned long line;
case isc_tokentype_eol:
case isc_tokentype_eof:
case isc_tokentype_number:
case isc_tokentype_string:
case isc_tokentype_qstring:
return (ISC_TRUE);
return (ISC_FALSE);
return (ISC_TRUE);
return (ISC_FALSE);
return (ISC_TRUE);
return (ISC_FALSE);
return (ISC_TRUE);
return (ISC_FALSE);
return (ISC_TRUE);
return (ISC_FALSE);
return (ISC_TRUE);
return (ISC_TRUE);
return (ISC_FALSE);
return (ISC_TRUE);
return (ISC_FALSE);
return (ISC_TRUE);
return (ISC_FALSE);
switch (section) {
case DNS_SECTION_PREREQUISITE:
case dns_rdataclass_none:
case dns_rdatatype_any:
case dns_rdataclass_any:
case dns_rdatatype_any:
case DNS_SECTION_UPDATE:
case dns_rdataclass_none:
case dns_rdataclass_any:
case dns_rdatatype_any: