2
0
mirror of https://gitlab.isc.org/isc-projects/bind9 synced 2025-09-02 23:55:27 +00:00

dns_rdata_tostruct() conversion

This commit is contained in:
Mark Andrews
1999-05-05 01:55:13 +00:00
parent a560a0bfb2
commit 4fd3e3482c
45 changed files with 111 additions and 6813 deletions

View File

@@ -38,8 +38,14 @@ OBJS = callbacks.o compress.o db.o dbiterator.o dbtable.o \
rdata.o rdatalist.o rdataset.o rdatasetiter.o rdataslab.o \
result.o version.o
OSRC = callbacks.c compress.c db.c dbiterator.c dbtable.c \
master.c name.c rbt.c rbtdb.c rbtdb64.c \
rdata.c rdatalist.c rdataset.c rdatasetiter.c rdataslab.c \
result.c version.c
SUBDIRS = include
TARGETS = include/dns/enumtype.h include/dns/enumclass.h timestamp
TARGETS = include/dns/enumtype.h include/dns/enumclass.h \
include/dns/rdatastruct.h timestamp
@BIND9_MAKE_RULES@
@@ -64,6 +70,7 @@ install:: timestamp installdirs
clean distclean::
rm -f libdns.a timestamp
rm -f gen code.h include/dns/enumtype.h include/dns/enumclass.h
rm -f include/dns/rdatastruct.h
rdata.o: code.h
@@ -73,6 +80,9 @@ include/dns/enumtype.h: gen
include/dns/enumclass.h: gen
./gen -s ${srcdir} -c > $@
include/dns/rdatastruct.h: gen
./gen -s ${srcdir} -i > $@
code.h: gen
./gen -s ${srcdir} > code.h

View File

@@ -15,7 +15,7 @@
* SOFTWARE.
*/
/* $Id: gen.c,v 1.17 1999/04/29 06:10:27 explorer Exp $ */
/* $Id: gen.c,v 1.18 1999/05/05 01:55:07 marka Exp $ */
#include <sys/types.h>
@@ -112,7 +112,7 @@ char * funname(char *, char *);
void doswitch(char *, char *, char *, char *, char *, char *);
void dodecl(char *, char *, char *);
void add(int, char *, int, char *, char *);
void sd(int, char *, char *);
void sd(int, char *, char *, char);
char *
upper(char *s) {
@@ -284,8 +284,9 @@ add(int class, char *classname, int type, char *typename, char *dirname) {
}
void
sd(int class, char *classname, char *dir) {
sd(int class, char *classname, char *dir, char filetype) {
char buf[sizeof "0123456789_65535.h"];
char fmt[sizeof "%10[-0-9a-z]_%d.h"];
DIR *d;
int type;
char typename[11];
@@ -294,14 +295,14 @@ sd(int class, char *classname, char *dir) {
if ((d = opendir(dir)) == NULL)
return;
sprintf(fmt,"%s%c", "%10[-0-9a-z]_%d.", filetype);
while ((dp = readdir(d)) != NULL) {
if (sscanf(dp->d_name, "%10[-0-9a-z]_%d.h",
typename, &type) != 2)
if (sscanf(dp->d_name, fmt, typename, &type) != 2)
continue;
if ((type > 65535) || (type < 0))
continue;
sprintf(buf, "%s_%d.h", typename, type);
sprintf(buf, "%s_%d.%c", typename, type, filetype);
if (strcmp(buf, dp->d_name) != 0)
continue;
add(class, classname, type, typename, dir);
@@ -326,21 +327,35 @@ main(int argc, char **argv) {
int code = 1;
int class_enum = 0;
int type_enum = 0;
int structs = 0;
int c;
char buf1[11];
char filetype = 'c';
FILE *fd;
strcpy(srcdir, "");
while ((c = getopt(argc, argv, "cts:")) != -1)
while ((c = getopt(argc, argv, "ctis:")) != -1)
switch (c) {
case 'c':
code = 0;
type_enum = 0;
class_enum = 1;
filetype = 'c';
structs = 0;
break;
case 't':
code = 0;
class_enum = 0;
type_enum = 1;
filetype = 'c';
structs = 0;
break;
case 'i':
code = 0;
class_enum = 0;
type_enum = 0;
structs = 1;
filetype = 'h';
break;
case 's':
sprintf(srcdir, "%s/", optarg);
@@ -363,11 +378,11 @@ main(int argc, char **argv) {
sprintf(buf, "%srdata/%s_%d", srcdir, classname, class);
if (strcmp(buf + 6 + strlen(srcdir), dp->d_name) != 0)
continue;
sd(class, classname, buf);
sd(class, classname, buf, filetype);
}
sprintf(buf, "%srdata/generic", srcdir);
sd(0, "", buf);
closedir(d);
sprintf(buf, "%srdata/generic", srcdir);
sd(0, "", buf, filetype);
if (time(&now) != -1) {
if ((tm = localtime(&now)) != NULL && tm->tm_year > 98)
@@ -426,7 +441,7 @@ main(int argc, char **argv) {
fputs("\n", stdout);
for (tt = types; tt != NULL ; tt = tt->next)
fprintf(stdout, "#include \"%s/%s_%d.h\"\n",
fprintf(stdout, "#include \"%s/%s_%d.c\"\n",
tt->dirname, tt->typename, tt->type);
} else if (type_enum) {
fprintf(stdout, "#ifndef TYPEENUM\n");
@@ -452,8 +467,16 @@ main(int argc, char **argv) {
cc->class,
cc->next != NULL ? " \\" : "");
fprintf(stdout, "#endif /* CLASSENUM */\n");
} else if (structs) {
for (tt = types; tt != NULL ; tt = tt->next) {
sprintf(buf, "%s/%s_%d.h",
tt->dirname, tt->typename, tt->type);
if ((fd = fopen(buf,"r")) != NULL) {
while (fgets(buf, sizeof buf, fd) != NULL)
fputs(buf, stdout);
fclose(fd);
}
}
}
if (ferror(stdout) != 0)

View File

@@ -1,3 +1,4 @@
Makefile
enumtype.h
enumclass.h
rdatastruct.h

View File

@@ -70,6 +70,7 @@ typedef unsigned int dns_result_t;
#define DNS_R_BADDB 43
#define DNS_R_ZONECUT 44
#define DNS_R_FORMERR 45
#define DNS_R_BADZONE 46 /* XXX MPA*/
#define DNS_R_LASTENTRY 45 /* Last entry on list. */

View File

@@ -15,7 +15,7 @@
* SOFTWARE.
*/
/* $Id: rdata.c,v 1.40 1999/05/03 19:56:53 halley Exp $ */
/* $Id: rdata.c,v 1.41 1999/05/05 01:55:08 marka Exp $ */
#include <config.h>
@@ -38,6 +38,7 @@
#include <dns/cert.h>
#include <dns/secalg.h>
#include <dns/fixedname.h>
#include <dns/rdatastruct.h>
#define RETERR(x) do { \
dns_result_t __r = (x); \

View File

@@ -15,292 +15,11 @@
* SOFTWARE.
*/
/* $Id: tsig_250.h,v 1.7 1999/02/24 06:31:32 marka Exp $ */
/* $Id: tsig_250.h,v 1.8 1999/05/05 01:55:08 marka Exp $ */
/* draft-ietf-dnsind-tsig-07.txt */
#ifndef RDATA_ANY_255_TSIG_250_H
#define RDATA_ANY_255_TSIG_250_H
#include <isc/str.h>
static dns_result_t
fromtext_any_tsig(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_uint64_t sigtime;
isc_buffer_t buffer;
char *e;
REQUIRE(type == 250);
REQUIRE(class == 255);
/* Algorithm Name */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
RETERR(dns_name_fromtext(&name, &buffer, origin, downcase, target));
/* Time Signed: 48 bits */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
sigtime = isc_strtouq(token.value.as_pointer, &e, 10);
if (*e != 0)
return (DNS_R_SYNTAX);
if ((sigtime >> 48) != 0)
return(DNS_R_RANGE);
RETERR(uint16_tobuffer(sigtime >> 32, target));
RETERR(uint32_tobuffer(sigtime & 0xffffffff, target));
/* Fudge */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xffff)
return (DNS_R_RANGE);
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* Signature Size */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xffff)
return (DNS_R_RANGE);
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* Signature */
RETERR(base64_tobuffer(lexer, target, token.value.as_ulong));
/* Original ID */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xffff)
return (DNS_R_RANGE);
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* Error */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xffff)
return (DNS_R_RANGE);
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* Other Len */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xffff)
return (DNS_R_RANGE);
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* Other Data */
return (base64_tobuffer(lexer, target, token.value.as_ulong));
}
static dns_result_t
totext_any_tsig(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t sr;
isc_region_t sigr;
char buf[sizeof "281474976710655 "];
char *bufp;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
isc_uint64_t sigtime;
unsigned short n;
REQUIRE(rdata->type == 250);
REQUIRE(rdata->class == 255);
dns_rdata_toregion(rdata, &sr);
/* Algorithm Name */
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_name_fromregion(&name, &sr);
sub = name_prefix(&name, origin, &prefix);
RETERR(dns_name_totext(&prefix, sub, target));
RETERR(str_totext(" ", target));
isc_region_consume(&sr, name_length(&name));
/* Time Signed */
sigtime = ((isc_uint64_t)sr.base[0] << 40) |
((isc_uint64_t)sr.base[1] << 32) |
(sr.base[2] << 24) | (sr.base[3] << 16) |
(sr.base[4] << 8) | sr.base[5];
isc_region_consume(&sr, 6);
bufp = &buf[sizeof buf - 1];
*bufp-- = 0;
*bufp-- = ' ';
do {
*bufp-- = decdigits[sigtime % 10];
sigtime /= 10;
} while (sigtime != 0);
bufp++;
RETERR(str_totext(bufp, target));
/* Fudge */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%u ", n);
RETERR(str_totext(buf, target));
/* Signature Size */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%u ", n);
RETERR(str_totext(buf, target));
/* Signature */
REQUIRE(n <= sr.length);
sigr = sr;
sigr.length = n;
RETERR(base64_totext(&sigr, target));
RETERR(str_totext(" ", target));
isc_region_consume(&sr, n);
/* Original ID */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%u ", n);
RETERR(str_totext(buf, target));
/* Error */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%u ", n);
RETERR(str_totext(buf, target));
/* Other Size */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%u ", n);
RETERR(str_totext(buf, target));
/* Other */
return (base64_totext(&sr, target));
}
static dns_result_t
fromwire_any_tsig(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sr;
dns_name_t name;
unsigned long n;
REQUIRE(type == 250);
REQUIRE(class == 255);
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
/* Algorithm Name */
dns_name_init(&name, NULL);
RETERR(dns_name_fromwire(&name, source, dctx, downcase, target));
isc_buffer_active(source, &sr);
/* Time Signed + Fudge */
if (sr.length < 8)
return (DNS_R_UNEXPECTEDEND);
RETERR(mem_tobuffer(target, sr.base, 8));
isc_region_consume(&sr, 8);
isc_buffer_forward(source, 8);
/* Signature Length + Signature */
if (sr.length < 2)
return (DNS_R_UNEXPECTEDEND);
n = uint16_fromregion(&sr);
if (sr.length < n + 2)
return (DNS_R_UNEXPECTEDEND);
RETERR(mem_tobuffer(target, sr.base, n + 2));
isc_region_consume(&sr, n + 2);
isc_buffer_forward(source, n + 2);
/* Original ID + Error */
if (sr.length < 4)
return (DNS_R_UNEXPECTEDEND);
RETERR(mem_tobuffer(target, sr.base, 4));
isc_region_consume(&sr, 4);
isc_buffer_forward(source, 4);
/* Other Length + Other */
if (sr.length < 2)
return (DNS_R_UNEXPECTEDEND);
n = uint16_fromregion(&sr);
if (sr.length < n + 2)
return (DNS_R_UNEXPECTEDEND);
isc_buffer_forward(source, n + 2);
return (mem_tobuffer(target, sr.base, n + 2));
}
static dns_result_t
towire_any_tsig(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t sr;
dns_name_t name;
REQUIRE(rdata->type == 250);
REQUIRE(rdata->class == 255);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
dns_rdata_toregion(rdata, &sr);
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &sr);
RETERR(dns_name_towire(&name, cctx, target));
isc_region_consume(&sr, name_length(&name));
return (mem_tobuffer(target, sr.base, sr.length));
}
static int
compare_any_tsig(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
dns_name_t name1;
dns_name_t name2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 250);
REQUIRE(rdata1->class == 255);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_name_fromregion(&name1, &r1);
dns_name_fromregion(&name2, &r2);
result = dns_name_rdatacompare(&name1, &name2);
if (result != 0)
return (result);
isc_region_consume(&r1, name_length(&name1));
isc_region_consume(&r2, name_length(&name2));
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_any_tsig(dns_rdataclass_t class, dns_rdatatype_t type,
void *source, isc_buffer_t *target)
{
REQUIRE(type == 250);
REQUIRE(class == 255);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_any_tsig(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 250);
REQUIRE(rdata->class == 255);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_ANY_255_TSIG_250_H */

View File

@@ -15,176 +15,10 @@
* SOFTWARE.
*/
/* $Id: afsdb_18.h,v 1.5 1999/02/24 06:31:32 marka Exp $ */
/* $Id: afsdb_18.h,v 1.6 1999/05/05 01:55:08 marka Exp $ */
/* RFC 1183 */
#ifndef RDATA_GENERIC_AFSDB_18_H
#define RDATA_GENERIC_AFSDB_18_H
static dns_result_t
fromtext_afsdb(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
isc_buffer_t buffer;
dns_name_t name;
REQUIRE(type == 18);
class = class; /*unused*/
/* subtype */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* hostname */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_afsdb(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
dns_name_t name;
dns_name_t prefix;
isc_region_t region;
char buf[sizeof "64000 "];
isc_boolean_t sub;
unsigned int num;
REQUIRE(rdata->type == 18);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
num = uint16_fromregion(&region);
isc_region_consume(&region, 2);
sprintf(buf, "%u ", num);
RETERR(str_totext(buf, target));
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return(dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_afsdb(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
isc_region_t sr;
isc_region_t tr;
REQUIRE(type == 18);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
dns_name_init(&name, NULL);
isc_buffer_active(source, &sr);
isc_buffer_available(target, &tr);
if (tr.length < 2)
return (DNS_R_NOSPACE);
if (sr.length < 2)
return (DNS_R_UNEXPECTEDEND);
memcpy(tr.base, sr.base, 2);
isc_buffer_forward(source, 2);
isc_buffer_add(target, 2);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_afsdb(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t tr;
isc_region_t sr;
dns_name_t name;
REQUIRE(rdata->type == 18);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
isc_buffer_available(target, &tr);
dns_rdata_toregion(rdata, &sr);
if (tr.length < 2)
return (DNS_R_NOSPACE);
memcpy(tr.base, sr.base, 2);
isc_region_consume(&sr, 2);
isc_buffer_add(target, 2);
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &sr);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_afsdb(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
int result;
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 18);
result = memcmp(rdata1->data, rdata2->data, 2);
if (result != 0)
return (result < 0 ? -1 : 1);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
isc_region_consume(&region1, 2);
isc_region_consume(&region2, 2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_afsdb(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 18);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_afsdb(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 18);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_AFSDB_18_H */

View File

@@ -15,166 +15,10 @@
* SOFTWARE.
*/
/* $Id: cert_37.h,v 1.5 1999/02/16 22:42:24 marka Exp $ */
/* $Id: cert_37.h,v 1.6 1999/05/05 01:55:08 marka Exp $ */
/* draft-ietf-dnssec-certs-04.txt */
#ifndef RDATA_GENERIC_CERT_37_H
#define RDATA_GENERIC_CERT_37_H
static dns_result_t
fromtext_cert(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
long n;
dns_secalg_t secalg;
char *e;
dns_cert_t cert;
REQUIRE(type == 37);
class = class; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
/* cert type */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
n = strtol(token.value.as_pointer, &e, 10);
if (*e != 0) {
RETERR(dns_cert_fromtext(&cert, &token.value.as_textregion));
} else {
if (n < 0 || n > 0xffff)
return (DNS_R_RANGE);
cert = n;
}
RETERR(uint16_tobuffer(cert, target));
/* key tag */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xffff)
return (DNS_R_RANGE);
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* algorithm */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
n = strtol(token.value.as_pointer, &e, 10);
if (*e != 0) {
RETERR(dns_secalg_fromtext(&secalg,
&token.value.as_textregion));
} else {
if (n < 0 || n > 0xff)
return (DNS_R_RANGE);
secalg = n;
}
RETERR(mem_tobuffer(target, &secalg, 1));
return (base64_tobuffer(lexer, target, -1));
}
static dns_result_t
totext_cert(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t sr;
char buf[sizeof "64000 "];
unsigned int n;
REQUIRE(rdata->type == 37);
origin = origin; /*unused*/
dns_rdata_toregion(rdata, &sr);
/* type */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
RETERR(dns_cert_totext(n, target));
RETERR(str_totext(" ", target));
/* key tag */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%u ", n);
RETERR(str_totext(buf, target));
/* algorithm */
RETERR(dns_secalg_totext(sr.base[0], target));
RETERR(str_totext(" ", target));
isc_region_consume(&sr, 1);
/* cert */
return (base64_totext(&sr, target));
}
static dns_result_t
fromwire_cert(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sr;
REQUIRE(type == 37);
class = class; /*unused*/
dctx = dctx; /*unused*/
downcase = downcase; /*unused*/
isc_buffer_active(source, &sr);
if (sr.length < 5)
return (DNS_R_UNEXPECTEDEND);
isc_buffer_forward(source, sr.length);
return (mem_tobuffer(target, sr.base, sr.length));
}
static dns_result_t
towire_cert(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t sr;
REQUIRE(rdata->type == 37);
cctx = cctx; /*unused*/
dns_rdata_toregion(rdata, &sr);
return (mem_tobuffer(target, sr.base, sr.length));
}
static int
compare_cert(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 37);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_cert(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 37);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_cert(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 37);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_CERT_37_H */

View File

@@ -15,137 +15,8 @@
* SOFTWARE.
*/
/* $Id: cname_5.h,v 1.11 1999/02/24 06:31:32 marka Exp $ */
/* $Id: cname_5.h,v 1.12 1999/05/05 01:55:08 marka Exp $ */
#ifndef RDATA_GENERIC_CNAME_5_H
#define RDATA_GENERIC_CNAME_5_H
static dns_result_t
fromtext_cname(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 5);
class = class; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_cname(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 5);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_cname(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
REQUIRE(type == 5);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
return(dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_cname(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 5);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_cname(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 5);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_cname(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 5);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_cname(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 5);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_CNAME_5_H */

View File

@@ -15,137 +15,10 @@
* SOFTWARE.
*/
/* $Id: dname_39.h,v 1.4 1999/02/24 06:31:32 marka Exp $ */
/* $Id: dname_39.h,v 1.5 1999/05/05 01:55:09 marka Exp $ */
/* draft-ietf-dnsind-dname-02.txt */
#ifndef RDATA_GENERIC_DNAME_39_H
#define RDATA_GENERIC_DNAME_39_H
static dns_result_t
fromtext_dname(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 39);
class = class; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_dname(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 39);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_dname(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
REQUIRE(type == 39);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_LOCAL);
dns_name_init(&name, NULL);
return(dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_dname(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 39);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_LOCAL);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_dname(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 39);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_dname(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 39);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_dname(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 39);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_DNAME_39_H */

View File

@@ -15,119 +15,10 @@
* SOFTWARE.
*/
/* $Id: gpos_27.h,v 1.2 1999/02/16 22:42:24 marka Exp $ */
/* $Id: gpos_27.h,v 1.3 1999/05/05 01:55:09 marka Exp $ */
/* RFC 1712 */
#ifndef RDATA_GENERIC_GPOS_27_H
#define RDATA_GENERIC_GPOS_27_H
static dns_result_t
fromtext_gpos(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
int i;
REQUIRE(type == 27);
class = class; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
for (i = 0; i < 3 ; i++) {
RETERR(gettoken(lexer, &token, isc_tokentype_qstring,
ISC_FALSE));
RETERR(txt_fromtext(&token.value.as_textregion, target));
}
return (DNS_R_SUCCESS);
}
static dns_result_t
totext_gpos(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
int i;
REQUIRE(rdata->type == 27);
origin = origin; /*unused*/
dns_rdata_toregion(rdata, &region);
for (i = 0; i < 3 ; i++) {
RETERR(txt_totext(&region, target));
if (i != 2)
RETERR(str_totext(" ", target));
}
return (DNS_R_SUCCESS);
}
static dns_result_t
fromwire_gpos(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
int i;
REQUIRE(type == 27);
dctx = dctx; /*unused*/
class = class; /*unused*/
downcase = downcase; /*unused*/
for (i = 0 ; i < 3; i++)
RETERR(txt_fromwire(source, target));
return (DNS_R_SUCCESS);
}
static dns_result_t
towire_gpos(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
REQUIRE(rdata->type == 27);
cctx = cctx; /*unused*/
return (mem_tobuffer(target, rdata->data, rdata->length));
}
static int
compare_gpos(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 27);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_gpos(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 27);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_gpos(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 27);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_GPOS_27_H */

View File

@@ -15,109 +15,8 @@
* SOFTWARE.
*/
/* $Id: hinfo_13.h,v 1.10 1999/02/16 22:51:18 marka Exp $ */
/* $Id: hinfo_13.h,v 1.11 1999/05/05 01:55:09 marka Exp $ */
#ifndef RDATA_GENERIC_HINFO_13_H
#define RDATA_GENERIC_HINFO_13_H
static dns_result_t
fromtext_hinfo(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
int i;
REQUIRE(type == 13);
class = class; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
for (i = 0; i < 2 ; i++) {
RETERR(gettoken(lexer, &token, isc_tokentype_qstring,
ISC_FALSE));
RETERR(txt_fromtext(&token.value.as_textregion, target));
}
return (DNS_R_SUCCESS);
}
static dns_result_t
totext_hinfo(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
REQUIRE(rdata->type == 13);
origin = origin; /*unused*/
dns_rdata_toregion(rdata, &region);
RETERR(txt_totext(&region, target));
RETERR(str_totext(" ", target));
return (txt_totext(&region, target));
}
static dns_result_t
fromwire_hinfo(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
REQUIRE(type == 13);
dctx = dctx; /* unused */
class = class; /* unused */
downcase = downcase; /* unused */
RETERR(txt_fromwire(source, target));
return (txt_fromwire(source, target));
}
static dns_result_t
towire_hinfo(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
REQUIRE(rdata->type == 13);
cctx = cctx; /*unused*/
return (mem_tobuffer(target, rdata->data, rdata->length));
}
static int
compare_hinfo(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 13);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_hinfo(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 13);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_hinfo(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 13);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_HINFO_13_H */

View File

@@ -21,113 +21,4 @@
#ifndef RDATA_GENERIC_ISDN_20_H
#define RDATA_GENERIC_ISDN_20_H
static dns_result_t
fromtext_isdn(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
REQUIRE(type == 20);
class = class; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
/* ISDN-address */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
RETERR(txt_fromtext(&token.value.as_textregion, target));
/* sa: optional */
RETERR(gettoken(lexer, &token, isc_tokentype_qstring, ISC_TRUE));
if (token.type != isc_tokentype_string) {
isc_lex_ungettoken(lexer, &token);
return (DNS_R_SUCCESS);
}
return (txt_fromtext(&token.value.as_textregion, target));
}
static dns_result_t
totext_isdn(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
REQUIRE(rdata->type == 20);
origin = origin; /*unused*/
dns_rdata_toregion(rdata, &region);
RETERR(txt_totext(&region, target));
if (region.length == 0)
return (DNS_R_SUCCESS);
RETERR(str_totext(" ", target));
return (txt_totext(&region, target));
}
static dns_result_t
fromwire_isdn(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
REQUIRE(type == 20);
dctx = dctx; /* unused */
class = class; /* unused */
downcase = downcase; /* unused */
RETERR(txt_fromwire(source, target));
if (buffer_empty(source))
return (DNS_R_SUCCESS);
return (txt_fromwire(source, target));
}
static dns_result_t
towire_isdn(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
REQUIRE(rdata->type == 20);
cctx = cctx; /*unused*/
return (mem_tobuffer(target, rdata->data, rdata->length));
}
static int
compare_isdn(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 20);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_isdn(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 20);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_isdn(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 20);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_ISDN_20_H */

View File

@@ -15,161 +15,10 @@
* SOFTWARE.
*/
/* $Id: key_25.h,v 1.3 1999/02/16 22:42:25 marka Exp $ */
/* $Id: key_25.h,v 1.4 1999/05/05 01:55:09 marka Exp $ */
/* RFC 2065 */
#ifndef RDATA_GENERIC_KEY_25_H
#define RDATA_GENERIC_KEY_25_H
static dns_result_t
fromtext_key(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
unsigned char c;
unsigned int flags;
REQUIRE(type == 25);
class = class; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xffff)
return (DNS_R_RANGE);
RETERR(uint16_tobuffer(token.value.as_ulong, target));
flags = token.value.as_ulong;
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xff)
return (DNS_R_RANGE);
c = token.value.as_ulong;
RETERR(mem_tobuffer(target, &c, 1));
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xff)
return (DNS_R_RANGE);
c = token.value.as_ulong;
RETERR(mem_tobuffer(target, &c, 1));
/* No Key? */
if ((flags & 0xc000) == 0xc000)
return (DNS_R_SUCCESS);
return (base64_tobuffer(lexer, target, -1));
}
static dns_result_t
totext_key(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t sr;
char buf[sizeof "64000"];
unsigned int flags;
REQUIRE(rdata->type == 25);
origin = origin; /*unused*/
dns_rdata_toregion(rdata, &sr);
/* flags */
flags = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%u", flags);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* protocol */
sprintf(buf, "%u", sr.base[0]);
isc_region_consume(&sr, 1);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* algorithm */
sprintf(buf, "%u", sr.base[0]);
isc_region_consume(&sr, 1);
RETERR(str_totext(buf, target));
/* No Key? */
if ((flags & 0xc000) == 0xc00)
return (DNS_R_SUCCESS);
/* key */
RETERR(str_totext(" ", target));
return (base64_totext(&sr, target));
}
static dns_result_t
fromwire_key(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sr;
REQUIRE(type == 25);
class = class; /*unused*/
dctx = dctx; /*unused*/
downcase = downcase; /*unused*/
isc_buffer_active(source, &sr);
if (sr.length < 4)
return (DNS_R_UNEXPECTEDEND);
isc_buffer_forward(source, sr.length);
return (mem_tobuffer(target, sr.base, sr.length));
}
static dns_result_t
towire_key(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t sr;
REQUIRE(rdata->type == 25);
cctx = cctx; /*unused*/
dns_rdata_toregion(rdata, &sr);
return (mem_tobuffer(target, sr.base, sr.length));
}
static int
compare_key(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 25);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_key(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 25);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_key(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 25);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_KEY_25_H */

View File

@@ -15,573 +15,10 @@
* SOFTWARE.
*/
/* $Id: loc_29.h,v 1.2 1999/02/11 14:00:29 marka Exp $ */
/* $Id: loc_29.h,v 1.3 1999/05/05 01:55:09 marka Exp $ */
/* RFC 1876 */
#ifndef RDATA_GENERIC_LOC_29_H
#define RDATA_GENERIC_LOC_29_H
static dns_result_t
fromtext_loc(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
int d1, m1, s1;
int d2, m2, s2;
unsigned char size;
unsigned char hp;
unsigned char vp;
unsigned char version;
isc_boolean_t east = ISC_FALSE;
isc_boolean_t north = ISC_FALSE;
long tmp;
long m;
long cm;
long poweroften[8] = { 1, 10, 100, 1000,
10000, 100000, 1000000, 10000000 };
int man;
int exp;
char *e;
int i;
unsigned long latitude;
unsigned long longitude;
unsigned long altitude;
REQUIRE(type == 29);
class = class; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
/* defaults */
m1 = s1 = 0;
m2 = s2 = 0;
size = 0x12; /* 1.00m */
hp = 0x16; /* 10000.00 m */
vp = 0x13; /* 10.00 m */
version = 0;
/* degree */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 90)
return (DNS_R_RANGE);
d1 = token.value.as_ulong;
/* minute */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
if (strcasecmp(token.value.as_pointer, "N") == 0)
north = ISC_TRUE;
if (north || strcasecmp(token.value.as_pointer, "S") == 0)
goto getlong;
m1 = strtol(token.value.as_pointer, &e, 10);
if (*e != 0)
return (DNS_R_SYNTAX);
if (m1 < 0 || m1 > 59)
return (DNS_R_RANGE);
if (d1 == 90 && m1 != 0)
return (DNS_R_RANGE);
/* second */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
if (strcasecmp(token.value.as_pointer, "N") == 0)
north = ISC_TRUE;
if (north || strcasecmp(token.value.as_pointer, "S") == 0)
goto getlong;
s1 = strtol(token.value.as_pointer, &e, 10);
if (*e != 0 && *e != '.')
return (DNS_R_SYNTAX);
if (s1 < 0 || s1 > 59)
return (DNS_R_RANGE);
if (*e == '.') {
e++;
for (i = 0; i < 3 ; i++) {
if (*e == 0)
break;
if ((tmp = decvalue(*e++)) < 0)
return (DNS_R_SYNTAX);
s1 *= 10;
s1 += tmp;
}
for ( ; i < 3 ; i++)
s1 *= 10;
if (*e != 0)
return (DNS_R_SYNTAX);
} else
s1 *= 1000;
if (d1 == 90 && s1 != 0)
return (DNS_R_RANGE);
/* direction */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
if (strcasecmp(token.value.as_pointer, "N") == 0)
north = ISC_TRUE;
if (!north && strcasecmp(token.value.as_pointer, "S") != 0)
return (DNS_R_SYNTAX);
getlong:
/* degree */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 180)
return (DNS_R_RANGE);
d2 = token.value.as_ulong;
/* minute */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
if (strcasecmp(token.value.as_pointer, "E") == 0)
east = ISC_TRUE;
if (east || strcasecmp(token.value.as_pointer, "W") == 0)
goto getalt;
m2 = strtol(token.value.as_pointer, &e, 10);
if (*e != 0)
return (DNS_R_SYNTAX);
if (m2 < 0 || m2 > 59)
return (DNS_R_RANGE);
if (d2 == 180 && m2 != 0)
return (DNS_R_RANGE);
/* second */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
if (strcasecmp(token.value.as_pointer, "E") == 0)
east = ISC_TRUE;
if (east || strcasecmp(token.value.as_pointer, "W") == 0)
goto getalt;
s2 = strtol(token.value.as_pointer, &e, 10);
if (*e != 0 && *e != '.')
return (DNS_R_SYNTAX);
if (s2 < 0 || s2 > 59)
return (DNS_R_RANGE);
if (*e == '.') {
e++;
for (i = 0; i < 3 ; i++) {
if (*e == 0)
break;
if ((tmp = decvalue(*e++)) < 0)
return (DNS_R_SYNTAX);
s2 *= 10;
s2 += tmp;
}
for ( ; i < 3 ; i++)
s2 *= 10;
if (*e != 0)
return (DNS_R_SYNTAX);
} else
s2 *= 1000;
if (d2 == 180 && s2 != 0)
return (DNS_R_RANGE);
/* direction */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
if (strcasecmp(token.value.as_pointer, "E") == 0)
east = ISC_TRUE;
if (!east && strcasecmp(token.value.as_pointer, "W") != 0)
return (DNS_R_SYNTAX);
getalt:
/* alt */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
m = strtol(token.value.as_pointer, &e, 10);
if (*e != 0 && *e != '.' && *e != 'm')
return (DNS_R_SYNTAX);
if (m < -100000 || m > 42849672)
return (DNS_R_RANGE);
cm = 0;
if (*e == '.') {
e++;
for (i = 0; i < 2 ; i++) {
if (*e == 0 || *e == 'm')
break;
if ((tmp = decvalue(*e++)) < 0)
return (DNS_R_SYNTAX);
cm *= 10;
if (m < 0)
cm -= tmp;
else
cm += tmp;
}
for ( ; i < 2 ; i++)
cm *= 10;
}
if (*e == 'm')
e++;
if (*e != 0)
return (DNS_R_SYNTAX);
if (m == -100000 && cm != 0)
return (DNS_R_RANGE);
if (m == 42849672 && cm > 95)
return (DNS_R_RANGE);
/* adjust base */
altitude = m + 100000;
altitude *= 100;
altitude += cm;
/* size: optional */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_TRUE));
if (token.type == isc_tokentype_eol ||
token.type == isc_tokentype_eof) {
isc_lex_ungettoken(lexer, &token);
goto encode;
}
m = strtol(token.value.as_pointer, &e, 10);
if (*e != 0 && *e != '.' && *e != 'm')
return (DNS_R_SYNTAX);
if (m < 0 || m > 90000000)
return (DNS_R_RANGE);
cm = 0;
if (*e == '.') {
e++;
for (i = 0; i < 2 ; i++) {
if (*e == 0 || *e == 'm')
break;
if ((tmp = decvalue(*e++)) < 0)
return (DNS_R_SYNTAX);
cm *= 10;
cm += tmp;
}
for ( ; i < 2 ; i++)
cm *= 10;
}
if (*e == 'm')
e++;
if (*e != 0)
return (DNS_R_SYNTAX);
/* we don't just multiply out as we will overflow */
if (m > 0) {
for (exp = 0 ; exp < 7 ; exp++)
if (m < poweroften[exp+1])
break;
man = m / poweroften[exp];
exp += 2;
} else {
if (cm > 10) {
man = cm / 10;
exp = 1;
} else {
man = cm;
exp = 0;
}
}
size = (man << 4) + exp;
/* hp: optional */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_TRUE));
if (token.type == isc_tokentype_eol ||
token.type == isc_tokentype_eof) {
isc_lex_ungettoken(lexer, &token);
goto encode;
}
m = strtol(token.value.as_pointer, &e, 10);
if (*e != 0 && *e != '.' && *e != 'm')
return (DNS_R_SYNTAX);
if (m < 0 || m > 90000000)
return (DNS_R_RANGE);
cm = 0;
if (*e == '.') {
e++;
for (i = 0; i < 2 ; i++) {
if (*e == 0 || *e == 'm')
break;
if ((tmp = decvalue(*e++)) < 0)
return (DNS_R_SYNTAX);
cm *= 10;
cm += tmp;
}
for ( ; i < 2 ; i++)
cm *= 10;
}
if (*e == 'm')
e++;
if (*e != 0)
return (DNS_R_SYNTAX);
/* we don't just multiply out as we will overflow */
if (m > 0) {
for (exp = 0 ; exp < 7 ; exp++)
if (m < poweroften[exp+1])
break;
man = m / poweroften[exp];
exp += 2;
} else if (cm > 10) {
man = cm / 10;
exp = 1;
} else {
man = cm;
exp = 0;
}
hp = (man << 4) + exp;
/* vp: optional */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_TRUE));
if (token.type == isc_tokentype_eol ||
token.type == isc_tokentype_eof) {
isc_lex_ungettoken(lexer, &token);
goto encode;
}
m = strtol(token.value.as_pointer, &e, 10);
if (*e != 0 && *e != '.' && *e != 'm')
return (DNS_R_SYNTAX);
if (m < 0 || m > 90000000)
return (DNS_R_RANGE);
cm = 0;
if (*e == '.') {
e++;
for (i = 0; i < 2 ; i++) {
if (*e == 0 || *e == 'm')
break;
if ((tmp = decvalue(*e++)) < 0)
return (DNS_R_SYNTAX);
cm *= 10;
cm += tmp;
}
for ( ; i < 2 ; i++)
cm *= 10;
}
if (*e == 'm')
e++;
if (*e != 0)
return (DNS_R_SYNTAX);
/* we don't just multiply out as we will overflow */
if (m > 0) {
for (exp = 0 ; exp < 7 ; exp++)
if (m < poweroften[exp+1])
break;
man = m / poweroften[exp];
exp += 2;
} else if (cm > 10) {
man = cm / 10;
exp = 1;
} else {
man = cm;
exp = 0;
}
vp = (man << 4) + exp;
encode:
RETERR(mem_tobuffer(target, &version, 1));
RETERR(mem_tobuffer(target, &size, 1));
RETERR(mem_tobuffer(target, &hp, 1));
RETERR(mem_tobuffer(target, &vp, 1));
if (north)
latitude = 0x80000000 + ( d1 * 3600 + m1 * 60 ) * 1000 + s1;
else
latitude = 0x80000000 - ( d1 * 3600 + m1 * 60 ) * 1000 - s1;
RETERR(uint32_tobuffer(latitude, target));
if (east)
longitude = 0x80000000 + ( d2 * 3600 + m2 * 60 ) * 1000 + s2;
else
longitude = 0x80000000 - ( d2 * 3600 + m2 * 60 ) * 1000 - s2;
RETERR(uint32_tobuffer(longitude, target));
return (uint32_tobuffer(altitude, target));
}
static dns_result_t
totext_loc(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
int d1, m1, s1, fs1;
int d2, m2, s2, fs2;
unsigned long latitude;
unsigned long longitude;
unsigned long altitude;
isc_boolean_t north;
isc_boolean_t east;
isc_boolean_t below;
isc_region_t sr;
char buf[sizeof
"89 59 59.999 N 179 59 59.999 E 42849672.95m 90000000m 90000000m 90000000m"];
char sbuf[sizeof "90000000m"];
char hbuf[sizeof "90000000m"];
char vbuf[sizeof "90000000m"];
unsigned char size, hp, vp;
unsigned long poweroften[8] = { 1, 10, 100, 1000,
10000, 100000, 1000000, 10000000 };
REQUIRE(rdata->type == 29);
origin = origin; /*unused*/
dns_rdata_toregion(rdata, &sr);
/* version = sr.base[0]; */
size = sr.base[1];
if ((size&0x0f)> 1)
sprintf(sbuf, "%lum", (size>>4) * poweroften[(size&0x0f)-2]);
else
sprintf(sbuf, "0.%02lum", (size>>4) * poweroften[(size&0x0f)]);
hp = sr.base[2];
if ((hp&0x0f)> 1)
sprintf(hbuf, "%lum", (hp>>4) * poweroften[(hp&0x0f)-2]);
else
sprintf(hbuf, "0.%02lum", (hp>>4) * poweroften[(hp&0x0f)]);
vp = sr.base[3];
if ((vp&0x0f)> 1)
sprintf(vbuf, "%lum", (vp>>4) * poweroften[(vp&0x0f)-2]);
else
sprintf(vbuf, "0.%02lum", (vp>>4) * poweroften[(vp&0x0f)]);
isc_region_consume(&sr, 4);
latitude = uint32_fromregion(&sr);
isc_region_consume(&sr, 4);
if (latitude >= 0x80000000) {
north = ISC_TRUE;
latitude -= 0x80000000;
} else {
north = ISC_FALSE;
latitude = 0x80000000 - latitude;
}
fs1 = latitude % 1000;
latitude /= 1000;
s1 = latitude % 60;
latitude /= 60;
m1 = latitude % 60;
latitude /= 60;
d1 = latitude;
longitude = uint32_fromregion(&sr);
isc_region_consume(&sr, 4);
if (longitude >= 0x80000000) {
east = ISC_TRUE;
longitude -= 0x80000000;
} else {
east = ISC_FALSE;
longitude = 0x80000000 - longitude;
}
fs2 = longitude % 1000;
longitude /= 1000;
s2 = longitude % 60;
longitude /= 60;
m2 = longitude % 60;
longitude /= 60;
d2 = longitude;
altitude = uint32_fromregion(&sr);
isc_region_consume(&sr, 4);
if (altitude < 10000000) {
below = ISC_TRUE;
altitude = 10000000 - altitude;
} else {
below =ISC_FALSE;
altitude -= 10000000;
}
sprintf(buf, "%d %d %d.%03d %s %d %d %d.%03d %s %s%ld.%02ldm %s %s %s",
d1, m1, s1, fs1, north ? "N" : "S",
d2, m2, s2, fs2, east ? "E" : "W",
below ? "-" : "", altitude/100, altitude % 100,
sbuf, hbuf, vbuf);
return (str_totext(buf, target));
}
static dns_result_t
fromwire_loc(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sr;
unsigned char c;
unsigned long latitude;
unsigned long longitude;
REQUIRE(type == 29);
class = class; /*unused*/
dctx = dctx; /*unused*/
downcase = downcase; /*unused*/
isc_buffer_active(source, &sr);
if (sr.length < 1)
return (DNS_R_UNEXPECTEDEND);
if (sr.base[0] != 0)
return (DNS_R_NOTIMPLEMENTED);
if (sr.length < 16)
return (DNS_R_UNEXPECTEDEND);
/* size */
c = sr.base[1];
if (c != 0)
if ((c&0xf) > 9 || ((c>>4)&0xf) > 9 || ((c>>4)&0xf) == 0)
return (DNS_R_RANGE);
/* horiz pre */
c = sr.base[2];
if (c != 0)
if ((c&0xf) > 9 || ((c>>4)&0xf) > 9 || ((c>>4)&0xf) == 0)
return (DNS_R_RANGE);
/* vert pre */
c = sr.base[3];
if (c != 0)
if ((c&0xf) > 9 || ((c>>4)&0xf) > 9 || ((c>>4)&0xf) == 0)
return (DNS_R_RANGE);
isc_region_consume(&sr, 4);
/* latitude */
latitude = uint32_fromregion(&sr);
if (latitude < (0x80000000UL - 90 * 3600000) ||
latitude > (0x80000000UL + 90 * 3600000))
return (DNS_R_RANGE);
isc_region_consume(&sr, 4);
/* longitude */
longitude = uint32_fromregion(&sr);
if (longitude < (0x80000000UL - 180 * 3600000) ||
longitude > (0x80000000UL + 180 * 3600000))
return (DNS_R_RANGE);
/* altitiude */
/* all values possible */
isc_buffer_active(source, &sr);
isc_buffer_forward(source, 16);
return (mem_tobuffer(target, sr.base, 16));
}
static dns_result_t
towire_loc(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
REQUIRE(rdata->type == 29);
cctx = cctx; /*unused*/
return(mem_tobuffer(target, rdata->data, rdata->length));
}
static int
compare_loc(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 29);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_loc(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 29);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_loc(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 29);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_LOC_29_H */

View File

@@ -15,137 +15,8 @@
* SOFTWARE.
*/
/* $Id: mb_7.h,v 1.11 1999/02/24 06:31:32 marka Exp $ */
/* $Id: mb_7.h,v 1.12 1999/05/05 01:55:09 marka Exp $ */
#ifndef RDATA_GENERIC_MB_7_H
#define RDATA_GENERIC_MB_7_H
static dns_result_t
fromtext_mb(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 7);
class = class; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_mb(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 7);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_mb(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
REQUIRE(type == 7);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_mb(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 7);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_mb(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 7);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_mb(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 7);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_mb(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 7);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_MB_7_H */

View File

@@ -15,135 +15,8 @@
* SOFTWARE.
*/
/* $Id: md_3.h,v 1.11 1999/02/24 06:31:32 marka Exp $ */
/* $Id: md_3.h,v 1.12 1999/05/05 01:55:09 marka Exp $ */
#ifndef RDATA_GENERIC_MD_3_H
#define RDATA_GENERIC_MD_3_H
static dns_result_t
fromtext_md(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 3);
class = class; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_md(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 3);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return(dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_md(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
REQUIRE(type == 3);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_md(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 3);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_md(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 3);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_md(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 3);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_md(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 3);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_MD_3_H */

View File

@@ -15,135 +15,8 @@
* SOFTWARE.
*/
/* $Id: mf_4.h,v 1.10 1999/02/24 06:31:33 marka Exp $ */
/* $Id: mf_4.h,v 1.11 1999/05/05 01:55:10 marka Exp $ */
#ifndef RDATA_GENERIC_MF_4_H
#define RDATA_GENERIC_MF_4_H
static dns_result_t
fromtext_mf(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 4);
class = class; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_mf(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 4);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_mf(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
REQUIRE(type == 4);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_mf(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 4);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_mf(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 4);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_mf(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 4);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_mf(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 4);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_MF_4_H */

View File

@@ -15,137 +15,8 @@
* SOFTWARE.
*/
/* $Id: mg_8.h,v 1.10 1999/02/24 06:31:33 marka Exp $ */
/* $Id: mg_8.h,v 1.11 1999/05/05 01:55:10 marka Exp $ */
#ifndef RDATA_GENERIC_MG_8_H
#define RDATA_GENERIC_MG_8_H
static dns_result_t
fromtext_mg(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 8);
class = class; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_mg(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 8);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_mg(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
REQUIRE(type == 8);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_mg(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 8);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_mg(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 8);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_mg(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 8);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_mg(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 8);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_MG_8_H */

View File

@@ -15,183 +15,8 @@
* SOFTWARE.
*/
/* $Id: minfo_14.h,v 1.11 1999/02/24 06:31:33 marka Exp $ */
/* $Id: minfo_14.h,v 1.12 1999/05/05 01:55:10 marka Exp $ */
#ifndef RDATA_GENERIC_MINFO_14_H
#define RDATA_GENERIC_MINFO_14_H
static dns_result_t
fromtext_minfo(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
int i;
REQUIRE(type == 14);
class = class; /*unused*/
for (i = 0; i < 2 ; i++) {
RETERR(gettoken(lexer, &token, isc_tokentype_string,
ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
RETERR(dns_name_fromtext(&name, &buffer, origin,
downcase, target));
}
return (DNS_R_SUCCESS);
}
static dns_result_t
totext_minfo(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t rmail;
dns_name_t email;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 14);
dns_name_init(&rmail, NULL);
dns_name_init(&email, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&rmail, &region);
isc_region_consume(&region, rmail.length);
dns_name_fromregion(&email, &region);
isc_region_consume(&region, email.length);
sub = name_prefix(&rmail, origin, &prefix);
RETERR(dns_name_totext(&prefix, sub, target));
RETERR(str_totext(" ", target));
sub = name_prefix(&email, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_minfo(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t rmail;
dns_name_t email;
REQUIRE(type == 14);
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
class = class; /*unused*/
dns_name_init(&rmail, NULL);
dns_name_init(&email, NULL);
RETERR(dns_name_fromwire(&rmail, source, dctx, downcase, target));
return (dns_name_fromwire(&email, source, dctx, downcase, target));
}
static dns_result_t
towire_minfo(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t region;
dns_name_t rmail;
dns_name_t email;
REQUIRE(rdata->type == 14);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&rmail, NULL);
dns_name_init(&email, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&rmail, &region);
isc_region_consume(&region, name_length(&rmail));
RETERR(dns_name_towire(&rmail, cctx, target));
dns_name_fromregion(&rmail, &region);
isc_region_consume(&region, rmail.length);
return (dns_name_towire(&rmail, cctx, target));
}
static int
compare_minfo(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t region1;
isc_region_t region2;
dns_name_t name1;
dns_name_t name2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 14);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
result = dns_name_rdatacompare(&name1, &name2);
if (result != 0)
return (result);
isc_region_consume(&region1, name_length(&name1));
isc_region_consume(&region2, name_length(&name2));
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
result = dns_name_rdatacompare(&name1, &name2);
return (result);
}
static dns_result_t
fromstruct_minfo(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 14);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_minfo(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 14);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_MINFO_14_H */

View File

@@ -15,137 +15,8 @@
* SOFTWARE.
*/
/* $Id: mr_9.h,v 1.10 1999/02/24 06:31:33 marka Exp $ */
/* $Id: mr_9.h,v 1.11 1999/05/05 01:55:10 marka Exp $ */
#ifndef RDATA_GENERIC_MR_9_H
#define RDATA_GENERIC_MR_9_H
static dns_result_t
fromtext_mr(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 9);
class = class; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_mr(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 9);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_mr(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
REQUIRE(type == 9);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_mr(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 9);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_mr(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 9);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_mr(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 9);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_mr(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 9);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_MR_9_H */

View File

@@ -15,174 +15,8 @@
* SOFTWARE.
*/
/* $Id: mx_15.h,v 1.13 1999/02/24 06:31:33 marka Exp $ */
/* $Id: mx_15.h,v 1.14 1999/05/05 01:55:10 marka Exp $ */
#ifndef RDATA_GENERIC_MX_15_H
#define RDATA_GENERIC_MX_15_H
static dns_result_t
fromtext_mx(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 15);
class = class; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_mx(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
char buf[sizeof "64000"];
unsigned short num;
REQUIRE(rdata->type == 15);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
num = uint16_fromregion(&region);
isc_region_consume(&region, 2);
sprintf(buf, "%u", num);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return(dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_mx(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
isc_region_t sregion;
isc_region_t tregion;
REQUIRE(type == 15);
class = class; /* unused */
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
isc_buffer_active(source, &sregion);
isc_buffer_available(target, &tregion);
if (tregion.length < 2)
return (DNS_R_NOSPACE);
if (sregion.length < 2)
return (DNS_R_UNEXPECTEDEND);
memcpy(tregion.base, sregion.base, 2);
isc_buffer_forward(source, 2);
isc_buffer_add(target, 2);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_mx(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
isc_region_t tr;
REQUIRE(rdata->type == 15);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
isc_buffer_available(target, &tr);
dns_rdata_toregion(rdata, &region);
if (tr.length < 2)
return (DNS_R_NOSPACE);
memcpy(tr.base, region.base, 2);
isc_region_consume(&region, 2);
isc_buffer_add(target, 2);
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_mx(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 15);
result = memcmp(rdata1->data, rdata2->data, 2);
if (result != 0)
return (result < 0 ? -1 : 1);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
isc_region_consume(&region1, 2);
isc_region_consume(&region2, 2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_mx(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 15);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_mx(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 15);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_MX_15_H */

View File

@@ -15,137 +15,8 @@
* SOFTWARE.
*/
/* $Id: ns_2.h,v 1.10 1999/02/24 06:31:33 marka Exp $ */
/* $Id: ns_2.h,v 1.11 1999/05/05 01:55:10 marka Exp $ */
#ifndef RDATA_GENERIC_NS_2_H
#define RDATA_GENERIC_NS_2_H
static dns_result_t
fromtext_ns(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 2);
class = class; /*unused*/
RETERR(gettoken(lexer, &token,isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_ns(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 2);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_ns(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
REQUIRE(type == 2);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_ns(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 2);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_ns(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 2);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_ns(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 2);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_ns(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 2);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_NS_2_H */

View File

@@ -15,102 +15,8 @@
* SOFTWARE.
*/
/* $Id: null_10.h,v 1.7 1999/02/16 22:51:18 marka Exp $ */
/* $Id: null_10.h,v 1.8 1999/05/05 01:55:10 marka Exp $ */
#ifndef RDATA_GENERIC_NULL_10_H
#define RDATA_GENERIC_NULL_10_H
static dns_result_t
fromtext_null(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
REQUIRE(type == 10);
class = class; /*unused*/
type = type; /*unused*/
lexer = lexer; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
target = target; /*unused*/
return (DNS_R_SUCCESS);
}
static dns_result_t
totext_null(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
REQUIRE(rdata->type == 10);
REQUIRE(rdata->length == 0);
origin = origin; /*unused*/
target = target; /*unused*/
return (DNS_R_SUCCESS);
}
static dns_result_t
fromwire_null(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
REQUIRE(type == 10);
class = class; /*unused*/
dctx = dctx; /*unused*/
downcase = downcase; /*unused*/
target = target; /*unused*/
source = source; /*unused*/
return (DNS_R_SUCCESS);
}
static dns_result_t
towire_null(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
REQUIRE(rdata->type == 10);
cctx = cctx; /*unused*/
target = target; /*unused*/
return (DNS_R_SUCCESS);
}
static int
compare_null(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
REQUIRE(rdata1->type == rdata1->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 10);
return (0);
}
static dns_result_t
fromstruct_null(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 10);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_null(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 10);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_NULL_10_H */

View File

@@ -15,203 +15,10 @@
* SOFTWARE.
*/
/* $Id: nxt_30.h,v 1.7 1999/02/24 06:31:33 marka Exp $ */
/* $Id: nxt_30.h,v 1.8 1999/05/05 01:55:10 marka Exp $ */
/* RFC 2065 */
#ifndef RDATA_GENERIC_NXT_30_H
#define RDATA_GENERIC_NXT_30_H
static dns_result_t
fromtext_nxt(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
char *e;
unsigned char bm[8*1024]; /* 64k bits */
dns_rdatatype_t covered;
dns_rdatatype_t maxcovered = dns_rdatatype_none;
isc_boolean_t first = ISC_TRUE;
unsigned int n;
REQUIRE(type == 30);
class = class; /*unused*/
/* next domain */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
RETERR(dns_name_fromtext(&name, &buffer, origin, downcase, target));
memset(bm, 0, sizeof bm);
while (1) {
RETERR(gettoken(lexer, &token, isc_tokentype_string,
ISC_TRUE));
if (token.type != isc_tokentype_string)
break;
covered = strtol(token.value.as_pointer, &e, 10);
if (*e == 0)
(void) NULL;
else if (dns_rdatatype_fromtext(&covered,
&token.value.as_textregion) == DNS_R_UNKNOWN)
return (DNS_R_UNKNOWN);
if (first || covered > maxcovered)
maxcovered = covered;
first = ISC_FALSE;
bm[covered/8] |= (0x80>>(covered%8));
}
isc_lex_ungettoken(lexer, &token);
if (first)
return (DNS_R_SUCCESS);
n = (maxcovered + 8) / 8;
return (mem_tobuffer(target, bm, n));
}
static dns_result_t
totext_nxt(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t sr;
char buf[sizeof "65535"];
unsigned int i, j;
dns_name_t name;
dns_name_t prefix;
dns_result_t result;
isc_boolean_t sub;
REQUIRE(rdata->type == 30);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &sr);
dns_name_fromregion(&name, &sr);
isc_region_consume(&sr, name_length(&name));
sub = name_prefix(&name, origin, &prefix);
RETERR(dns_name_totext(&prefix, sub, target));
RETERR(str_totext(" ( ", target));
for (i = 0 ; i < sr.length ; i++) {
if (sr.base[i] != 0)
for (j = 0; j < 8; j++)
if ((sr.base[i] & (0x80>>j)) != 0) {
result = dns_rdatatype_totext(
i * 8 + j, target);
if (result == DNS_R_SUCCESS) {
RETERR(str_totext(" ",
target));
continue;
}
if (result != DNS_R_UNKNOWN)
return (result);
sprintf(buf, "%u", i * 8 + j);
RETERR(str_totext(" ", target));
RETERR(str_totext(buf, target));
}
}
return (str_totext(")", target));
}
static dns_result_t
fromwire_nxt(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sr;
dns_name_t name;
REQUIRE(type == 30);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
dns_name_init(&name, NULL);
RETERR(dns_name_fromwire(&name, source, dctx, downcase, target));
isc_buffer_active(source, &sr);
if (sr.length > 8 * 1024)
return (DNS_R_EXTRADATA);
RETERR(mem_tobuffer(target, sr.base, sr.length));
isc_buffer_forward(source, sr.length);
return (DNS_R_SUCCESS);
}
static dns_result_t
towire_nxt(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t sr;
dns_name_t name;
REQUIRE(rdata->type == 30);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &sr);
dns_name_fromregion(&name, &sr);
isc_region_consume(&sr, name_length(&name));
RETERR(dns_name_towire(&name, cctx, target));
return (mem_tobuffer(target, sr.base, sr.length));
}
static int
compare_nxt(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
dns_name_t name1;
dns_name_t name2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 30);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
dns_name_fromregion(&name1, &r1);
dns_name_fromregion(&name2, &r2);
result = dns_name_rdatacompare(&name1, &name2);
if (result != 0)
return (result);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_nxt(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 30);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_nxt(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 30);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_NXT_30_H */

View File

@@ -15,95 +15,8 @@
* SOFTWARE.
*/
/* $Id: proforma.h,v 1.8 1999/02/24 06:31:33 marka Exp $ */
/* $Id: proforma.h,v 1.9 1999/05/05 01:55:11 marka Exp $ */
#ifndef RDATA_GENERIC_#_#_H
#define RDATA_GENERIC_#_#_H
static dns_result_t
fromtext_#(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target) {
isc_token_t token;
REQUIRE(type == #);
REQUIRE(class == #);
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
totext_#(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
REQUIRE(rdata->type == #);
REQUIRE(rdata->class == #);
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
fromwire_#(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target) {
REQUIRE(type == #);
REQUIRE(class == #);
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_LOCAL);
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
towire_#(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
REQUIRE(rdata->type == #);
REQUIRE(rdata->class == #);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL):
else
dns_compress_setmethods(cctx, DNS_COMPRESS_LOCAL);
return (DNS_R_NOTIMPLEMENTED);
}
static int
compare_#(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == #);
REQUIRE(rdata1->class == #);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_#(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target) {
REQUIRE(type == #);
REQUIRE(class == #);
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_#(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == #);
REQUIRE(rdata->class == #);
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_#_#_H */

View File

@@ -15,137 +15,8 @@
* SOFTWARE.
*/
/* $Id: ptr_12.h,v 1.11 1999/02/24 06:31:34 marka Exp $ */
/* $Id: ptr_12.h,v 1.12 1999/05/05 01:55:11 marka Exp $ */
#ifndef RDATA_GENERIC_PTR_12_H
#define RDATA_GENERIC_PTR_12_H
static dns_result_t
fromtext_ptr(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 12);
class = class; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_ptr(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 12);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_ptr(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
REQUIRE(type == 12);
class = class; /* unused */
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_ptr(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 12);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_ptr(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 12);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_ptr(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 12);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_ptr(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 12);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_PTR_12_H */

View File

@@ -15,185 +15,10 @@
* SOFTWARE.
*/
/* $Id: rp_17.h,v 1.5 1999/02/24 06:31:34 marka Exp $ */
/* $Id: rp_17.h,v 1.6 1999/05/05 01:55:11 marka Exp $ */
/* RFC 1183 */
#ifndef RDATA_GENERIC_RP_17_H
#define RDATA_GENERIC_RP_17_H
static dns_result_t
fromtext_rp(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
int i;
REQUIRE(type == 17);
class = class; /*unused*/
for (i = 0; i < 2 ; i++) {
RETERR(gettoken(lexer, &token, isc_tokentype_string,
ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
RETERR(dns_name_fromtext(&name, &buffer, origin,
downcase, target));
}
return (DNS_R_SUCCESS);
}
static dns_result_t
totext_rp(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t rmail;
dns_name_t email;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 17);
dns_name_init(&rmail, NULL);
dns_name_init(&email, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&rmail, &region);
isc_region_consume(&region, rmail.length);
dns_name_fromregion(&email, &region);
isc_region_consume(&region, email.length);
sub = name_prefix(&rmail, origin, &prefix);
RETERR(dns_name_totext(&prefix, sub, target));
RETERR(str_totext(" ", target));
sub = name_prefix(&email, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_rp(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t rmail;
dns_name_t email;
REQUIRE(type == 17);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
dns_name_init(&rmail, NULL);
dns_name_init(&email, NULL);
RETERR(dns_name_fromwire(&rmail, source, dctx, downcase, target));
return (dns_name_fromwire(&email, source, dctx, downcase, target));
}
static dns_result_t
towire_rp(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t region;
dns_name_t rmail;
dns_name_t email;
REQUIRE(rdata->type == 17);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
dns_name_init(&rmail, NULL);
dns_name_init(&email, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&rmail, &region);
isc_region_consume(&region, rmail.length);
RETERR(dns_name_towire(&rmail, cctx, target));
dns_name_fromregion(&rmail, &region);
isc_region_consume(&region, rmail.length);
return (dns_name_towire(&rmail, cctx, target));
}
static int
compare_rp(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t region1;
isc_region_t region2;
dns_name_t name1;
dns_name_t name2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 17);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
result = dns_name_rdatacompare(&name1, &name2);
if (result != 0)
return (result);
isc_region_consume(&region1, name_length(&name1));
isc_region_consume(&region2, name_length(&name2));
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
result = dns_name_rdatacompare(&name1, &name2);
return (result);
}
static dns_result_t
fromstruct_rp(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 17);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_rp(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 17);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_RP_17_H */

View File

@@ -15,175 +15,10 @@
* SOFTWARE.
*/
/* $Id: rt_21.h,v 1.5 1999/02/24 06:31:34 marka Exp $ */
/* $Id: rt_21.h,v 1.6 1999/05/05 01:55:11 marka Exp $ */
/* RFC 1183 */
#ifndef RDATA_GENERIC_RT_21_H
#define RDATA_GENERIC_RT_21_H
static dns_result_t
fromtext_rt(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 21);
class = class; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_rt(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
char buf[sizeof "64000"];
unsigned short num;
REQUIRE(rdata->type == 21);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
num = uint16_fromregion(&region);
isc_region_consume(&region, 2);
sprintf(buf, "%u", num);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return(dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_rt(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
isc_region_t sregion;
isc_region_t tregion;
REQUIRE(type == 21);
class = class; /* unused */
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
dns_name_init(&name, NULL);
isc_buffer_active(source, &sregion);
isc_buffer_available(target, &tregion);
if (tregion.length < 2)
return (DNS_R_NOSPACE);
if (sregion.length < 2)
return (DNS_R_UNEXPECTEDEND);
memcpy(tregion.base, sregion.base, 2);
isc_buffer_forward(source, 2);
isc_buffer_add(target, 2);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_rt(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
isc_region_t tr;
REQUIRE(rdata->type == 21);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
isc_buffer_available(target, &tr);
dns_rdata_toregion(rdata, &region);
if (tr.length < 2)
return (DNS_R_NOSPACE);
memcpy(tr.base, region.base, 2);
isc_region_consume(&region, 2);
isc_buffer_add(target, 2);
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_rt(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 21);
result = memcmp(rdata1->data, rdata2->data, 2);
if (result != 0)
return (result < 0 ? -1 : 1);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
isc_region_consume(&region1, 2);
isc_region_consume(&region2, 2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_rt(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 21);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_rt(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 21);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_RT_21_H */

View File

@@ -15,302 +15,10 @@
* SOFTWARE.
*/
/* $Id: sig_24.h,v 1.9 1999/02/24 06:31:34 marka Exp $ */
/* $Id: sig_24.h,v 1.10 1999/05/05 01:55:11 marka Exp $ */
/* RFC 2065 */
#ifndef RDATA_GENERIC_SIG_24_H
#define RDATA_GENERIC_SIG_24_H
static dns_result_t
fromtext_sig(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
unsigned char c;
dns_rdatatype_t covered;
isc_textregion_t *tsr;
char *e;
dns_result_t result;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 24);
class = class; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
/* type covered */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
tsr = &token.value.as_textregion;
result = dns_rdatatype_fromtext(&covered, tsr);
if (result != DNS_R_SUCCESS && result != DNS_R_NOTIMPLEMENTED) {
covered = strtol(token.value.as_pointer, &e, 10);
if (*e != 0)
return (result);
}
RETERR(uint16_tobuffer(covered, target));
/* algorithm */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xff)
return (DNS_R_RANGE);
c = token.value.as_ulong;
RETERR(mem_tobuffer(target, &c, 1));
/* labels */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xff)
return (DNS_R_RANGE);
c = token.value.as_ulong;
RETERR(mem_tobuffer(target, &c, 1));
/* original ttl */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint32_tobuffer(token.value.as_ulong, target));
/* signature expiration */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
RETERR(time_tobuffer(token.value.as_pointer, target));
/* time signed */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
RETERR(time_tobuffer(token.value.as_pointer, target));
/* key footprint */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* signer */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
RETERR(dns_name_fromtext(&name, &buffer, origin, downcase, target));
/* sig */
return (base64_tobuffer(lexer, target, -1));
}
static dns_result_t
totext_sig(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t sr;
char buf[sizeof "4294967295"];
dns_rdatatype_t covered;
unsigned long ttl;
unsigned long when;
unsigned long exp;
unsigned long foot;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 24);
origin = origin; /*unused*/
dns_rdata_toregion(rdata, &sr);
/* type covered */
covered = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
RETERR(dns_rdatatype_totext(covered, target));
RETERR(str_totext(" ", target));
/* algorithm */
sprintf(buf, "%u", sr.base[0]);
isc_region_consume(&sr, 1);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* labels */
sprintf(buf, "%u", sr.base[0]);
isc_region_consume(&sr, 1);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* ttl */
ttl = uint32_fromregion(&sr);
isc_region_consume(&sr, 4);
sprintf(buf, "%lu", ttl);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* sig exp */
exp = uint32_fromregion(&sr);
isc_region_consume(&sr, 4);
RETERR(time_totext(exp, target));
RETERR(str_totext(" ", target));
/* time signed */
when = uint32_fromregion(&sr);
isc_region_consume(&sr, 4);
RETERR(time_totext(when, target));
RETERR(str_totext(" ", target));
/* footprint */
foot = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%lu", ttl);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* signer */
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_name_fromregion(&name, &sr);
isc_region_consume(&sr, name_length(&name));
sub = name_prefix(&name, origin, &prefix);
RETERR(dns_name_totext(&prefix, sub, target));
RETERR(str_totext(" ", target));
/* sig */
return (base64_totext(&sr, target));
}
static dns_result_t
fromwire_sig(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sr;
dns_name_t name;
REQUIRE(type == 24);
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
class = class; /*unused*/
isc_buffer_active(source, &sr);
/*
* type covered: 2
* algorithm: 1
* labels: 1
* original ttl: 4
* signature expiration: 4
* time signed: 4
* key footprint: 2
*/
if (sr.length < 18)
return (DNS_R_UNEXPECTEDEND);
isc_buffer_forward(source, 18);
RETERR(mem_tobuffer(target, sr.base, 18));
/* signer */
dns_name_init(&name, NULL);
RETERR(dns_name_fromwire(&name, source, dctx, downcase, target));
/* sig */
isc_buffer_active(source, &sr);
isc_buffer_forward(source, sr.length);
return(mem_tobuffer(target, sr.base, sr.length));
}
static dns_result_t
towire_sig(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t sr;
dns_name_t name;
REQUIRE(rdata->type == 24);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
dns_rdata_toregion(rdata, &sr);
/*
* type covered: 2
* algorithm: 1
* labels: 1
* original ttl: 4
* signature expiration: 4
* time signed: 4
* key footprint: 2
*/
RETERR(mem_tobuffer(target, sr.base, 18));
isc_region_consume(&sr, 18);
/* signer */
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &sr);
isc_region_consume(&sr, name_length(&name));
RETERR(dns_name_towire(&name, cctx, target));
/* signature */
return (mem_tobuffer(target, sr.base, sr.length));
}
static int
compare_sig(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
dns_name_t name1;
dns_name_t name2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 24);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
INSIST(r1.length > 18);
INSIST(r2.length > 18);
r1.length = 18;
r2.length = 18;
result = compare_region(&r1, &r2);
if (result != 0)
return (result);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
isc_region_consume(&r1, 18);
isc_region_consume(&r2, 18);
dns_name_fromregion(&name1, &r1);
dns_name_fromregion(&name2, &r2);
result = dns_name_rdatacompare(&name1, &name2);
if (result != 0)
return (result);
isc_region_consume(&r1, name_length(&name1));
isc_region_consume(&r2, name_length(&name2));
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_sig(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 24);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_sig(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 24);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_SIG_24_H */

View File

@@ -15,230 +15,23 @@
* SOFTWARE.
*/
/* $Id: soa_6.h,v 1.14 1999/02/24 06:31:34 marka Exp $ */
/* $Id: soa_6.h,v 1.15 1999/05/05 01:55:11 marka Exp $ */
#ifndef RDATA_GENERIC_SOA_6_H
#define RDATA_GENERIC_SOA_6_H
static dns_result_t
fromtext_soa(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
int i;
typedef struct dns_rdata_soa {
dns_rdataclass_t rdclass;
dns_rdatatype_t rdtype;
ISC_LINK(void) link;
isc_mem_t *mctx;
dns_fixedname_t origin;
dns_fixedname_t mname;
isc_uint32_t serial;
isc_uint32_t refresh;
isc_uint32_t retry;
isc_uint32_t expire;
isc_uint32_t minimum;
} dns_rdata_soa_t;
REQUIRE(type == 6);
class = class; /*unused*/
for (i = 0 ; i < 2 ; i++) {
RETERR(gettoken(lexer, &token, isc_tokentype_string,
ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
RETERR(dns_name_fromtext(&name, &buffer, origin,
downcase, target));
}
for (i = 0; i < 5; i++) {
RETERR(gettoken(lexer, &token, isc_tokentype_number,
ISC_FALSE));
RETERR(uint32_tobuffer(token.value.as_ulong, target));
}
return (DNS_R_SUCCESS);
}
static dns_result_t
totext_soa(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t dregion;
dns_name_t mname;
dns_name_t rname;
dns_name_t prefix;
isc_boolean_t sub;
int i;
REQUIRE(rdata->type == 6);
dns_name_init(&mname, NULL);
dns_name_init(&rname, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &dregion);
dns_name_fromregion(&mname, &dregion);
isc_region_consume(&dregion, name_length(&mname));
dns_name_fromregion(&rname, &dregion);
isc_region_consume(&dregion, name_length(&rname));
sub = name_prefix(&mname, origin, &prefix);
RETERR(dns_name_totext(&prefix, sub, target));
RETERR(str_totext(" ", target));
sub = name_prefix(&rname, origin, &prefix);
RETERR(dns_name_totext(&prefix, sub, target));
for (i = 0; i < 5 ; i++) {
char buf[sizeof "2147483647"];
unsigned long num;
RETERR(str_totext(" ", target));
num = uint32_fromregion(&dregion);
isc_region_consume(&dregion, 4);
sprintf(buf, "%lu", num);
RETERR(str_totext(buf, target));
}
return (DNS_R_SUCCESS);
}
static dns_result_t
fromwire_soa(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t mname;
dns_name_t rname;
isc_region_t sregion;
isc_region_t tregion;
REQUIRE(type == 6);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&mname, NULL);
dns_name_init(&rname, NULL);
RETERR(dns_name_fromwire(&mname, source, dctx, downcase, target));
RETERR(dns_name_fromwire(&rname, source, dctx, downcase, target));
isc_buffer_active(source, &sregion);
isc_buffer_available(target, &tregion);
if (sregion.length < 20)
return (DNS_R_UNEXPECTEDEND);
if (tregion.length < 20)
return (DNS_R_NOSPACE);
memcpy(tregion.base, sregion.base, 20);
isc_buffer_forward(source, 20);
isc_buffer_add(target, 20);
return (DNS_R_SUCCESS);
}
static dns_result_t
towire_soa(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t sregion;
isc_region_t tregion;
dns_name_t mname;
dns_name_t rname;
REQUIRE(rdata->type == 6);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_GLOBAL14);
dns_name_init(&mname, NULL);
dns_name_init(&rname, NULL);
dns_rdata_toregion(rdata, &sregion);
dns_name_fromregion(&mname, &sregion);
isc_region_consume(&sregion, name_length(&mname));
RETERR(dns_name_towire(&mname, cctx, target));
dns_name_fromregion(&rname, &sregion);
isc_region_consume(&sregion, name_length(&rname));
RETERR(dns_name_towire(&rname, cctx, target));
isc_buffer_available(target, &tregion);
if (tregion.length < 20)
return (DNS_R_NOSPACE);
memcpy(tregion.base, sregion.base, 20);
isc_buffer_add(target, 20);
return (DNS_R_SUCCESS);
}
static int
compare_soa(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t region1;
isc_region_t region2;
dns_name_t name1;
dns_name_t name2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 6);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
result = dns_name_rdatacompare(&name1, &name2);
if (result != 0)
return (result);
isc_region_consume(&region1, name_length(&name1));
isc_region_consume(&region2, name_length(&name2));
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
result = dns_name_rdatacompare(&name1, &name2);
if (result != 0)
return (result);
isc_region_consume(&region1, name_length(&name1));
isc_region_consume(&region2, name_length(&name2));
return (compare_region(&region1, &region2));
}
static dns_result_t
fromstruct_soa(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 6);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_soa(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 6);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_SOA_6_H */

View File

@@ -15,282 +15,10 @@
* SOFTWARE.
*/
/* $Id: tkey_249.h,v 1.7 1999/02/24 06:31:34 marka Exp $ */
/* $Id: tkey_249.h,v 1.8 1999/05/05 01:55:11 marka Exp $ */
/* draft-ietf-dnssec-tkey-01.txt */
#ifndef RDATA_GENERIC_TKEY_249_H
#define RDATA_GENERIC_TKEY_249_H
static dns_result_t
fromtext_tkey(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_rcode_t rcode;
dns_name_t name;
isc_buffer_t buffer;
char *e;
REQUIRE(type == 249);
class = class; /*unused*/
/* Algorithm */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
RETERR(dns_name_fromtext(&name, &buffer, origin, downcase, target));
/* Inception */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint32_tobuffer(token.value.as_ulong, target));
/* Expiration */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint32_tobuffer(token.value.as_ulong, target));
/* Mode */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xffff)
return (DNS_R_RANGE);
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* Error */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
if (dns_rcode_fromtext(&rcode, &token.value.as_textregion)
!= DNS_R_SUCCESS) {
rcode = strtol(token.value.as_pointer, &e, 10);
if (*e != 0)
return (DNS_R_UNKNOWN);
if (rcode > 0xffff)
return (DNS_R_RANGE);
}
RETERR(uint16_tobuffer(rcode, target));
/* Signature Size */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xffff)
return (DNS_R_RANGE);
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* Signature */
RETERR(base64_tobuffer(lexer, target, token.value.as_ulong));
/* Other Len */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 0xffff)
return (DNS_R_RANGE);
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* Other Data */
return (base64_tobuffer(lexer, target, token.value.as_ulong));
}
static dns_result_t
totext_tkey(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t sr;
isc_region_t sigr;
char buf[sizeof "4294967295 "];
unsigned long n;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 249);
dns_rdata_toregion(rdata, &sr);
/* Algorithm */
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_name_fromregion(&name, &sr);
sub = name_prefix(&name, origin, &prefix);
RETERR(dns_name_totext(&prefix, sub, target));
RETERR(str_totext(" ", target));
isc_region_consume(&sr, name_length(&name));
/* Inception */
n = uint32_fromregion(&sr);
isc_region_consume(&sr, 4);
sprintf(buf, "%lu ", n);
RETERR(str_totext(buf, target));
/* Expiration */
n = uint32_fromregion(&sr);
isc_region_consume(&sr, 4);
sprintf(buf, "%lu ", n);
RETERR(str_totext(buf, target));
/* Mode */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%lu ", n);
RETERR(str_totext(buf, target));
/* Error */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
if (dns_rcode_totext(n, target) == DNS_R_SUCCESS)
RETERR(str_totext(" ", target));
else {
sprintf(buf, "%lu ", n);
RETERR(str_totext(buf, target));
}
/* Signature Size */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%lu ", n);
RETERR(str_totext(buf, target));
/* Signature */
REQUIRE(n <= sr.length);
sigr = sr;
sigr.length = n;
RETERR(base64_totext(&sigr, target));
RETERR(str_totext(" ", target));
isc_region_consume(&sr, n);
/* Other Size */
n = uint16_fromregion(&sr);
isc_region_consume(&sr, 2);
sprintf(buf, "%lu ", n);
RETERR(str_totext(buf, target));
/* Other */
return (base64_totext(&sr, target));
}
static dns_result_t
fromwire_tkey(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sr;
unsigned long n;
dns_name_t name;
REQUIRE(type == 249);
class = class; /*unused*/
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
/* Algorithm */
dns_name_init(&name, NULL);
RETERR(dns_name_fromwire(&name, source, dctx, downcase, target));
/*
* Inception: 4
* Expiration: 4
* Mode: 2
* Error: 2
*/
isc_buffer_active(source, &sr);
if (sr.length < 12)
return (DNS_R_UNEXPECTEDEND);
RETERR(mem_tobuffer(target, sr.base, 12));
isc_region_consume(&sr, 12);
isc_buffer_forward(source, 12);
/* Signature Length + Signature */
if (sr.length < 2)
return (DNS_R_UNEXPECTEDEND);
n = uint16_fromregion(&sr);
if (sr.length < n + 2)
return (DNS_R_UNEXPECTEDEND);
RETERR(mem_tobuffer(target, sr.base, n + 2));
isc_region_consume(&sr, n + 2);
isc_buffer_forward(source, n + 2);
/* Other Length + Other */
if (sr.length < 2)
return (DNS_R_UNEXPECTEDEND);
n = uint16_fromregion(&sr);
if (sr.length < n + 2)
return (DNS_R_UNEXPECTEDEND);
isc_buffer_forward(source, n + 2);
return (mem_tobuffer(target, sr.base, n + 2));
}
static dns_result_t
towire_tkey(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t sr;
dns_name_t name;
REQUIRE(rdata->type == 249);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
/* Algorithm */
dns_rdata_toregion(rdata, &sr);
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &sr);
RETERR(dns_name_towire(&name, cctx, target));
isc_region_consume(&sr, name_length(&name));
return (mem_tobuffer(target, sr.base, sr.length));
}
static int
compare_tkey(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
dns_name_t name1;
dns_name_t name2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 249);
/* Algorithm */
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_name_fromregion(&name1, &r1);
dns_name_fromregion(&name2, &r2);
if ((result = dns_name_rdatacompare(&name1, &name2)) != 0)
return (result);
isc_region_consume(&r1, name_length(&name1));
isc_region_consume(&r2, name_length(&name2));
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_tkey(dns_rdataclass_t class, dns_rdatatype_t type,
void *source, isc_buffer_t *target) {
REQUIRE(type == 249);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_tkey(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 249);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_TKEY_249_H */

View File

@@ -15,130 +15,8 @@
* SOFTWARE.
*/
/* $Id: txt_16.h,v 1.9 1999/02/16 22:42:30 marka Exp $ */
/* $Id: txt_16.h,v 1.10 1999/05/05 01:55:11 marka Exp $ */
#ifndef RDATA_GENERIC_TXT_16_H
#define RDATA_GENERIC_TXT_16_H
static dns_result_t
fromtext_txt(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
REQUIRE(type == 16);
class = class; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
while (1) {
RETERR(gettoken(lexer, &token, isc_tokentype_qstring,
ISC_TRUE));
if (token.type != isc_tokentype_qstring &&
token.type != isc_tokentype_string)
break;
RETERR(txt_fromtext(&token.value.as_textregion, target));
}
/* Let upper layer handle eol/eof. */
isc_lex_ungettoken(lexer, &token);
return (DNS_R_SUCCESS);
}
static dns_result_t
totext_txt(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
REQUIRE(rdata->type == 16);
origin = origin; /*unused*/
dns_rdata_toregion(rdata, &region);
while (region.length) {
RETERR(txt_totext(&region, target));
if (region.length)
RETERR(str_totext(" ", target));
}
return (DNS_R_SUCCESS);
}
static dns_result_t
fromwire_txt(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_result_t result;
REQUIRE(type == 16);
dctx = dctx; /*unused*/
class = class; /*unused*/
downcase = downcase; /*unused*/
while (!buffer_empty(source)) {
result = txt_fromwire(source, target);
if (result != DNS_R_SUCCESS)
return (result);
}
return (DNS_R_SUCCESS);
}
static dns_result_t
towire_txt(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t region;
REQUIRE(rdata->type == 16);
cctx = cctx; /*unused*/
isc_buffer_available(target, &region);
if (region.length < rdata->length)
return (DNS_R_NOSPACE);
memcpy(region.base, rdata->data, rdata->length);
isc_buffer_add(target, rdata->length);
return (DNS_R_SUCCESS);
}
static int
compare_txt(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 16);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_txt(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 16);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_txt(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 16);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_TXT_16_H */

View File

@@ -15,100 +15,8 @@
* SOFTWARE.
*/
/* $Id: unspec_103.h,v 1.2 1999/02/16 22:42:30 marka Exp $ */
/* $Id: unspec_103.h,v 1.3 1999/05/05 01:55:11 marka Exp $ */
#ifndef RDATA_GENERIC_UNSPEC_103_H
#define RDATA_GENERIC_UNSPEC_103_H
static dns_result_t
fromtext_unspec(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
REQUIRE(type == 103);
class = class; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
return (atob_tobuffer(lexer, target));
}
static dns_result_t
totext_unspec(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
REQUIRE(rdata->type == 103);
origin = origin; /*unused*/
return (btoa_totext(rdata->data, rdata->length, target));
}
static dns_result_t
fromwire_unspec(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sr;
REQUIRE(type == 103);
class = class; /*unused*/
dctx = dctx; /*unused*/
downcase = downcase; /*unused*/
isc_buffer_active(source, &sr);
isc_buffer_forward(source, sr.length);
return (mem_tobuffer(target, sr.base, sr.length));
}
static dns_result_t
towire_unspec(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
REQUIRE(rdata->type == 103);
cctx = cctx; /*unused*/
return (mem_tobuffer(target, rdata->data, rdata->length));
}
static int
compare_unspec(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata1->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 103);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_unspec(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 103);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_unspec(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 103);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_UNSPEC_103_H */

View File

@@ -15,116 +15,10 @@
* SOFTWARE.
*/
/* $Id: x25_19.h,v 1.2 1999/02/16 22:42:31 marka Exp $ */
/* $Id: x25_19.h,v 1.3 1999/05/05 01:55:12 marka Exp $ */
/* RFC 1183 */
#ifndef RDATA_GENERIC_X25_19_H
#define RDATA_GENERIC_X25_19_H
#include <ctype.h>
static dns_result_t
fromtext_x25(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
unsigned int i;
REQUIRE(type == 19);
class = class; /*unused*/
origin = origin; /*unused*/
downcase = downcase; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
for (i = 0; i < token.value.as_textregion.length; i++)
if (!isascii(token.value.as_textregion.base[i]&0xff) ||
!isdigit(token.value.as_textregion.base[i]&0xff))
return (DNS_R_RANGE);
return (txt_fromtext(&token.value.as_textregion, target));
}
static dns_result_t
totext_x25(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
REQUIRE(rdata->type == 19);
origin = origin; /*unused*/
dns_rdata_toregion(rdata, &region);
return (txt_totext(&region, target));
}
static dns_result_t
fromwire_x25(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
REQUIRE(type == 19);
dctx = dctx; /* unused */
class = class; /* unused */
downcase = downcase; /* unused */
return (txt_fromwire(source, target));
}
static dns_result_t
towire_x25(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
REQUIRE(rdata->type == 19);
cctx = cctx;
return (mem_tobuffer(target, rdata->data, rdata->length));
}
static int
compare_x25(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
int l;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 19);
l = (rdata1->length < rdata2->length) ? rdata1->length : rdata2->length;
result = memcmp(rdata1->data, rdata2->data, l);
if (result != 0)
result = (result < 0) ? -1 : 1;
else if (rdata1->length != rdata2->length)
result = (rdata1->length < rdata2->length) ? -1 : 1;
return (result);
}
static dns_result_t
fromstruct_x25(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 19);
class = class; /*unused*/
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_x25(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 19);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_X25_19_H */

View File

@@ -15,261 +15,10 @@
* SOFTWARE.
*/
/* $Id: a6_38.h,v 1.7 1999/02/24 06:31:34 marka Exp $ */
/* $Id: a6_38.h,v 1.8 1999/05/05 01:55:12 marka Exp $ */
/* draft-ietf-ipngwg-dns-lookups-03.txt */
#ifndef RDATA_IN_1_A6_28_H
#define RDATA_IN_1_A6_28_H
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <isc/inet.h>
#ifndef MAX
#define MAX(A, B) ((A > B) ? (A) : (B))
#endif
static dns_result_t
fromtext_in_a6(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
unsigned char addr[16];
unsigned char prefixlen;
unsigned char octets;
unsigned char mask;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 38);
REQUIRE(class == 1);
/* prefix length */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
if (token.value.as_ulong > 128)
return (DNS_R_RANGE);
prefixlen = token.value.as_ulong;
RETERR(mem_tobuffer(target, &prefixlen, 1));
/* suffix */
if (prefixlen != 128) {
/* prefix 0..127 */
octets = prefixlen/8;
/* octets 0..15 */
RETERR(gettoken(lexer, &token, isc_tokentype_string,
ISC_FALSE));
if (isc_inet_pton(AF_INET6, token.value.as_pointer, addr) != 1)
return (DNS_R_BADAAAA);
mask = 0xff >> (prefixlen % 8);
addr[octets] &= mask;
RETERR(mem_tobuffer(target, &addr[octets], 16 - octets));
}
if (prefixlen == 0)
return (DNS_R_SUCCESS);
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_in_a6(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t tr;
isc_region_t sr;
unsigned char addr[16];
unsigned char prefixlen;
unsigned char octets;
unsigned char mask;
char buf[sizeof "128"];
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 38);
REQUIRE(rdata->class == 1);
dns_rdata_toregion(rdata, &sr);
prefixlen = sr.base[0];
INSIST(prefixlen <= 128);
isc_region_consume(&sr, 1);
sprintf(buf, "%u", prefixlen);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
if (prefixlen != 128) {
octets = prefixlen/8;
memset(addr, 0, sizeof addr);
memcpy(&addr[octets], sr.base, 16 - octets);
mask = 0xff >> (prefixlen % 8);
addr[octets] &= mask;
isc_buffer_available(target, &tr);
if (isc_inet_ntop(AF_INET6, addr,
(char *)tr.base, tr.length) == NULL)
return (DNS_R_NOSPACE);
isc_buffer_add(target, strlen((char *)tr.base));
isc_region_consume(&sr, 16 - octets);
}
if (prefixlen == 0)
return (DNS_R_SUCCESS);
RETERR(str_totext(" ", target));
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_name_fromregion(&name, &sr);
sub = name_prefix(&name, origin, &prefix);
return(dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_in_a6(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sr;
unsigned char prefixlen;
unsigned char octets;
unsigned char mask;
dns_name_t name;
REQUIRE(type == 38);
REQUIRE(class == 1);
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
isc_buffer_active(source, &sr);
/* prefix length */
if (sr.length < 1)
return (DNS_R_UNEXPECTEDEND);
prefixlen = sr.base[0];
if (prefixlen > 128)
return (DNS_R_RANGE);
isc_region_consume(&sr, 1);
RETERR(mem_tobuffer(target, &prefixlen, 1));
isc_buffer_forward(source, 1);
/* suffix */
if (prefixlen != 128) {
octets = 16 - prefixlen / 8;
if (sr.length < octets)
return (DNS_R_UNEXPECTEDEND);
mask = 0xff >> (prefixlen % 8);
sr.base[0] &= mask; /* ensure pad bits are zero */
RETERR(mem_tobuffer(target, sr.base, octets));
isc_buffer_forward(source, octets);
}
if (prefixlen == 0)
return (DNS_R_SUCCESS);
dns_name_init(&name, NULL);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_in_a6(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t sr;
dns_name_t name;
unsigned char prefixlen;
unsigned char octets;
REQUIRE(rdata->type == 38);
REQUIRE(rdata->class == 1);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
dns_rdata_toregion(rdata, &sr);
prefixlen = sr.base[0];
INSIST(prefixlen <= 128);
octets = 1 + 16 - prefixlen / 8;
RETERR(mem_tobuffer(target, sr.base, octets));
isc_region_consume(&sr, octets);
if (prefixlen == 0)
return (DNS_R_SUCCESS);
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &sr);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_in_a6(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
int result;
unsigned char prefixlen;
unsigned char octets;
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 38);
REQUIRE(rdata1->class == 1);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
prefixlen = MAX(region1.base[0], region2.base[0]);
octets = 1 + 16 - prefixlen / 8;
result = memcmp(region1.base, region2.base, octets);
if (result != 0)
result = (result < 0) ? -1 : 1;
isc_region_consume(&region1, octets);
isc_region_consume(&region2, octets);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_in_a6(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 1);
REQUIRE(class == 1);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_in_a6(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 38);
REQUIRE(rdata->class == 1);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_IN_1_A6_38_H */

View File

@@ -15,150 +15,17 @@
* SOFTWARE.
*/
/* $Id: a_1.h,v 1.12 1999/02/16 22:42:31 marka Exp $ */
/* $Id: a_1.h,v 1.13 1999/05/05 01:55:12 marka Exp $ */
#ifndef RDATA_IN_1_A_1_H
#define RDATA_IN_1_A_1_H
#include <string.h>
typedef struct dns_rdata_in_a {
dns_rdataclass_t rdclass; /* host order */
dns_rdatatype_t rdtype; /* host order */
ISC_LINK(void) link;
isc_mem_t *mctx;
isc_uint32_t address; /* network order */
} dns_rdata_in_a_t;
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <isc/inet.h>
static dns_result_t
fromtext_in_a(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
struct in_addr addr;
isc_region_t region;
REQUIRE(type == 1);
REQUIRE(class == 1);
origin = origin; /*unused*/
downcase = downcase; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
if (isc_inet_aton(token.value.as_pointer, &addr) != 1)
return (DNS_R_BADDOTTEDQUAD);
isc_buffer_available(target, &region);
if (region.length < 4)
return (DNS_R_NOSPACE);
memcpy(region.base, &addr, 4);
isc_buffer_add(target, 4);
return (DNS_R_SUCCESS);
}
static dns_result_t
totext_in_a(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
REQUIRE(rdata->type == 1);
REQUIRE(rdata->class == 1);
REQUIRE(rdata->length == 4);
origin = origin; /* unused */
isc_buffer_available(target, &region);
if (isc_inet_ntop(AF_INET, rdata->data,
(char *)region.base, region.length) == NULL)
return (DNS_R_NOSPACE);
isc_buffer_add(target, strlen((char *)region.base));
return (DNS_R_SUCCESS);
}
static dns_result_t
fromwire_in_a(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sregion;
isc_region_t tregion;
REQUIRE(type == 1);
REQUIRE(class == 1);
dctx = dctx; /* unused */
downcase = downcase; /* unused */
isc_buffer_active(source, &sregion);
isc_buffer_available(target, &tregion);
if (sregion.length < 4)
return (DNS_R_UNEXPECTEDEND);
if (tregion.length < 4)
return (DNS_R_NOSPACE);
memcpy(tregion.base, sregion.base, 4);
isc_buffer_forward(source, 4);
isc_buffer_add(target, 4);
return (DNS_R_SUCCESS);
}
static dns_result_t
towire_in_a(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t region;
REQUIRE(rdata->type == 1);
REQUIRE(rdata->class == 1);
cctx = cctx; /*unused*/
isc_buffer_available(target, &region);
if (region.length < rdata->length)
return (DNS_R_NOSPACE);
memcpy(region.base, rdata->data, rdata->length);
isc_buffer_add(target, 4);
return (DNS_R_SUCCESS);
}
static int
compare_in_a(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->type);
REQUIRE(rdata1->type == 1);
REQUIRE(rdata1->class == 1);
result = memcmp(rdata1->data, rdata2->data, 4);
if (result != 0)
result = (result < 0) ? -1 : 1;
return (result);
}
static dns_result_t
fromstruct_in_a(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 1);
REQUIRE(class == 1);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_in_a(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 1);
REQUIRE(rdata->class == 1);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_IN_1_A_1_H */
#endif RDATA_IN_1_A_1_H

View File

@@ -15,152 +15,10 @@
* SOFTWARE.
*/
/* $Id: aaaa_28.h,v 1.6 1999/02/16 22:42:31 marka Exp $ */
/* $Id: aaaa_28.h,v 1.7 1999/05/05 01:55:12 marka Exp $ */
/* RFC 1886 */
#ifndef RDATA_IN_1_AAAA_28_H
#define RDATA_IN_1_AAAA_28_H
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <isc/inet.h>
static dns_result_t
fromtext_in_aaaa(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
unsigned char addr[16];
isc_region_t region;
REQUIRE(type == 28);
REQUIRE(class == 1);
origin = origin; /*unused*/
downcase = downcase; /*unused*/
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
if (isc_inet_pton(AF_INET6, token.value.as_pointer, addr) != 1)
return (DNS_R_BADAAAA);
isc_buffer_available(target, &region);
if (region.length < 16)
return (DNS_R_NOSPACE);
memcpy(region.base, addr, 16);
isc_buffer_add(target, 16);
return (DNS_R_SUCCESS);
}
static dns_result_t
totext_in_aaaa(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
REQUIRE(rdata->type == 28);
REQUIRE(rdata->class == 1);
REQUIRE(rdata->length == 16);
origin = origin; /* unused */
isc_buffer_available(target, &region);
if (isc_inet_ntop(AF_INET6, rdata->data,
(char *)region.base, region.length) == NULL)
return (DNS_R_NOSPACE);
isc_buffer_add(target, strlen((char *)region.base));
return (DNS_R_SUCCESS);
}
static dns_result_t
fromwire_in_aaaa(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sregion;
isc_region_t tregion;
REQUIRE(type == 28);
REQUIRE(class == 1);
dctx = dctx; /* unused */
downcase = downcase; /* unused */
isc_buffer_active(source, &sregion);
isc_buffer_available(target, &tregion);
if (sregion.length < 16)
return (DNS_R_UNEXPECTEDEND);
if (tregion.length < 16)
return (DNS_R_NOSPACE);
memcpy(tregion.base, sregion.base, 16);
isc_buffer_forward(source, 16);
isc_buffer_add(target, 16);
return (DNS_R_SUCCESS);
}
static dns_result_t
towire_in_aaaa(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t region;
REQUIRE(rdata->type == 28);
REQUIRE(rdata->class == 1);
cctx = cctx; /*unused*/
isc_buffer_available(target, &region);
if (region.length < rdata->length)
return (DNS_R_NOSPACE);
memcpy(region.base, rdata->data, rdata->length);
isc_buffer_add(target, 16);
return (DNS_R_SUCCESS);
}
static int
compare_in_aaaa(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 28);
REQUIRE(rdata1->class == 1);
result = memcmp(rdata1->data, rdata2->data, 16);
if (result != 0)
result = (result < 0) ? -1 : 1;
return (result);
}
static dns_result_t
fromstruct_in_aaaa(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 1);
REQUIRE(class == 1);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_in_aaaa(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 28);
REQUIRE(rdata->class == 1);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_IN_1_AAAA_28_H */

View File

@@ -15,166 +15,10 @@
* SOFTWARE.
*/
/* $Id: kx_36.h,v 1.5 1999/02/24 06:31:35 marka Exp $ */
/* $Id: kx_36.h,v 1.6 1999/05/05 01:55:12 marka Exp $ */
/* RFC 2230 */
#ifndef RDATA_GENERIC_KX_36_H
#define RDATA_GENERIC_KX_36_H
static dns_result_t
fromtext_in_kx(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 36);
REQUIRE(class == 1);
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_in_kx(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
char buf[sizeof "64000"];
unsigned short num;
REQUIRE(rdata->type == 36);
REQUIRE(rdata->class == 1);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
num = uint16_fromregion(&region);
isc_region_consume(&region, 2);
sprintf(buf, "%u", num);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return(dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_in_kx(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
isc_region_t sregion;
REQUIRE(type == 36);
REQUIRE(class == 1);
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
dns_name_init(&name, NULL);
isc_buffer_active(source, &sregion);
if (sregion.length < 2)
return (DNS_R_UNEXPECTEDEND);
RETERR(mem_tobuffer(target, sregion.base, 2));
isc_buffer_forward(source, 2);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_in_kx(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 36);
REQUIRE(rdata->class == 1);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
dns_rdata_toregion(rdata, &region);
RETERR(mem_tobuffer(target, region.base, 2));
isc_region_consume(&region, 2);
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_in_kx(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 36);
REQUIRE(rdata1->class == 1);
result = memcmp(rdata1->data, rdata2->data, 2);
if (result != 0)
return (result < 0 ? -1 : 1);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
isc_region_consume(&region1, 2);
isc_region_consume(&region2, 2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_in_kx(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 36);
REQUIRE(class == 1);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_in_kx(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 36);
REQUIRE(rdata->class == 1);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_GENERIC_KX_15_H */

View File

@@ -15,252 +15,10 @@
* SOFTWARE.
*/
/* $Id: naptr_35.h,v 1.5 1999/02/24 06:31:35 marka Exp $ */
/* $Id: naptr_35.h,v 1.6 1999/05/05 01:55:12 marka Exp $ */
/* RFC 2168 */
#ifndef RDATA_IN_1_NAPTR_35_H
#define RDATA_IN_1_NAPTR_35_H
static dns_result_t
fromtext_in_naptr(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 35);
REQUIRE(class == 1);
/* priority */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* weight */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* flags */
RETERR(gettoken(lexer, &token, isc_tokentype_qstring, ISC_FALSE));
RETERR(txt_fromtext(&token.value.as_textregion, target));
/* service */
RETERR(gettoken(lexer, &token, isc_tokentype_qstring, ISC_FALSE));
RETERR(txt_fromtext(&token.value.as_textregion, target));
/* regexp */
RETERR(gettoken(lexer, &token, isc_tokentype_qstring, ISC_FALSE));
RETERR(txt_fromtext(&token.value.as_textregion, target));
/* replacement */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_in_naptr(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
char buf[sizeof "64000"];
unsigned short num;
REQUIRE(rdata->type == 35);
REQUIRE(rdata->class == 1);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
/* priority */
dns_rdata_toregion(rdata, &region);
num = uint16_fromregion(&region);
isc_region_consume(&region, 2);
sprintf(buf, "%u", num);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* weight */
num = uint16_fromregion(&region);
isc_region_consume(&region, 2);
sprintf(buf, "%u", num);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* flags */
RETERR(txt_totext(&region, target));
RETERR(str_totext(" ", target));
/* service */
RETERR(txt_totext(&region, target));
RETERR(str_totext(" ", target));
/* regexp */
RETERR(txt_totext(&region, target));
RETERR(str_totext(" ", target));
/* replacement */
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return(dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_in_naptr(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
isc_region_t sr;
REQUIRE(type == 35);
REQUIRE(class == 1);
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
dns_name_init(&name, NULL);
/* priority, weight */
isc_buffer_active(source, &sr);
if (sr.length < 4)
return (DNS_R_UNEXPECTEDEND);
RETERR(mem_tobuffer(target, sr.base, 4));
isc_buffer_forward(source, 4);
/* flags */
RETERR(txt_fromwire(source, target));
/* service */
RETERR(txt_fromwire(source, target));
/* regexp */
RETERR(txt_fromwire(source, target));
/* replacement */
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_in_naptr(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t sr;
REQUIRE(rdata->type == 35);
REQUIRE(rdata->class == 1);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
/* priority, weight */
dns_rdata_toregion(rdata, &sr);
RETERR(mem_tobuffer(target, sr.base, 4));
isc_region_consume(&sr, 4);
/* flags */
RETERR(mem_tobuffer(target, sr.base, sr.base[0] + 1));
isc_region_consume(&sr, sr.base[0] + 1);
/* service */
RETERR(mem_tobuffer(target, sr.base, sr.base[0] + 1));
isc_region_consume(&sr, sr.base[0] + 1);
/* regexp */
RETERR(mem_tobuffer(target, sr.base, sr.base[0] + 1));
isc_region_consume(&sr, sr.base[0] + 1);
/* replacement */
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &sr);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_in_naptr(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 35);
REQUIRE(rdata1->class == 1);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
/* priority, weight */
result = memcmp(region1.base, region2.base, 4);
if (result != 0)
return (result < 0 ? -1 : 1);
isc_region_consume(&region1, 4);
isc_region_consume(&region2, 4);
/* flags */
result = memcmp(region1.base, region2.base, region1.base[0] + 1);
if (result != 0)
return (result < 0 ? -1 : 1);
isc_region_consume(&region1, region1.base[0] + 1);
isc_region_consume(&region2, region2.base[0] + 1);
/* service */
result = memcmp(region1.base, region2.base, region1.base[0] + 1);
if (result != 0)
return (result < 0 ? -1 : 1);
isc_region_consume(&region1, region1.base[0] + 1);
isc_region_consume(&region2, region2.base[0] + 1);
/* regexp */
result = memcmp(region1.base, region2.base, region1.base[0] + 1);
if (result != 0)
return (result < 0 ? -1 : 1);
isc_region_consume(&region1, region1.base[0] + 1);
isc_region_consume(&region2, region2.base[0] + 1);
/* replacement */
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_in_naptr(dns_rdataclass_t class, dns_rdatatype_t type,
void *source, isc_buffer_t *target)
{
REQUIRE(type == 35);
REQUIRE(class == 1);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_in_naptr(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 35);
REQUIRE(rdata->class == 1);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_IN_1_NAPTR_35_H */

View File

@@ -15,144 +15,10 @@
* SOFTWARE.
*/
/* $Id: nsap-ptr_23.h,v 1.4 1999/02/24 06:31:35 marka Exp $ */
/* $Id: nsap-ptr_23.h,v 1.5 1999/05/05 01:55:12 marka Exp $ */
/* RFC 1348 */
#ifndef RDATA_IN_1_NSAP_PTR_23_H
#define RDATA_IN_1_NSAP_PTR_23_H
static dns_result_t
fromtext_in_nsap_ptr(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 23);
REQUIRE(class == 1);
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_in_nsap_ptr(dns_rdata_t *rdata, dns_name_t *origin,
isc_buffer_t *target)
{
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
REQUIRE(rdata->type == 23);
REQUIRE(rdata->class == 1);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return (dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_in_nsap_ptr(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
REQUIRE(type == 23);
REQUIRE(class == 1);
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
dns_name_init(&name, NULL);
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_in_nsap_ptr(dns_rdata_t *rdata, dns_compress_t *cctx,
isc_buffer_t *target)
{
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 23);
REQUIRE(rdata->class == 1);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
dns_name_init(&name, NULL);
dns_rdata_toregion(rdata, &region);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_in_nsap_ptr(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 23);
REQUIRE(rdata1->class == 1);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_in_nsap_ptr(dns_rdataclass_t class, dns_rdatatype_t type,
void *source, isc_buffer_t *target)
{
REQUIRE(type == 23);
REQUIRE(class == 1);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_in_nsap_ptr(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 23);
REQUIRE(rdata->class == 1);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_IN_1_NSAP_PTR_23_H */

View File

@@ -15,152 +15,10 @@
* SOFTWARE.
*/
/* $Id: nsap_22.h,v 1.2 1999/02/16 22:42:32 marka Exp $ */
/* $Id: nsap_22.h,v 1.3 1999/05/05 01:55:12 marka Exp $ */
/* RFC 1706 */
#ifndef RDATA_IN_1_NSAP_22_H
#define RDATA_IN_1_NSAP_22_H
#include <string.h>
static dns_result_t
fromtext_in_nsap(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target) {
isc_token_t token;
isc_textregion_t *sr;
int n;
int digits;
unsigned char c;
REQUIRE(type == 22);
REQUIRE(class == 1);
origin = origin; /*unused*/
downcase = downcase; /*unused*/
/* 0x<hex.string.with.periods> */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
sr = &token.value.as_textregion;
if (sr->length < 2)
return (DNS_R_UNEXPECTEDEND);
if (sr->base[0] != '0' || (sr->base[1] != 'x' && sr->base[1] != 'X'))
return (DNS_R_SYNTAX);
isc_textregion_consume(sr, 2);
digits = 0;
n = 0;
while (sr->length > 1) {
if (sr->base[0] == '.') {
isc_textregion_consume(sr, 1);
continue;
}
if ((n = hexvalue(sr->base[0])) == -1)
return (DNS_R_SYNTAX);
c <<= 4;
c += n;
if (++digits == 2) {
RETERR(mem_tobuffer(target, &n, 1));
digits = 0;
}
}
if (digits) {
c <<= 4;
return (mem_tobuffer(target, &c, 1));
}
return (DNS_R_SUCCESS);
}
static dns_result_t
totext_in_nsap(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
char buf[sizeof "xx"];
REQUIRE(rdata->type == 22);
REQUIRE(rdata->class == 1);
REQUIRE(rdata->length == 4);
origin = origin; /* unused */
dns_rdata_toregion(rdata, &region);
RETERR(str_totext("0x", target));
while (region.length) {
sprintf(buf, "%02x", region.base[0]);
isc_region_consume(&region, 1);
RETERR(str_totext(buf, target));
}
return (DNS_R_SUCCESS);
}
static dns_result_t
fromwire_in_nsap(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t region;
REQUIRE(type == 22);
REQUIRE(class == 1);
dctx = dctx; /* unused */
downcase = downcase; /* unused */
isc_buffer_active(source, &region);
if (region.length < 1)
return (DNS_R_UNEXPECTEDEND);
return (mem_tobuffer(target, region.base, region.length));
}
static dns_result_t
towire_in_nsap(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
REQUIRE(rdata->type == 22);
REQUIRE(rdata->class == 1);
cctx = cctx; /*unused*/
return (mem_tobuffer(target, rdata->data, rdata->length));
}
static int
compare_in_nsap(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->type);
REQUIRE(rdata1->type == 22);
REQUIRE(rdata1->class == 1);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_in_nsap(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 22);
REQUIRE(class == 1);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_in_nsap(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 22);
REQUIRE(rdata->class == 1);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_IN_1_NSAP_22_H */

View File

@@ -15,208 +15,10 @@
* SOFTWARE.
*/
/* $Id: px_26.h,v 1.4 1999/02/24 06:31:35 marka Exp $ */
/* $Id: px_26.h,v 1.5 1999/05/05 01:55:13 marka Exp $ */
/* RFC 2163 */
#ifndef RDATA_IN_1_PX_26_H
#define RDATA_IN_1_PX_26_H
static dns_result_t
fromtext_in_px(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 26);
REQUIRE(class == 1);
/* preference */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* MAP822 */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
RETERR(dns_name_fromtext(&name, &buffer, origin, downcase, target));
/* MAPX400 */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_in_px(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
char buf[sizeof "64000"];
unsigned short num;
REQUIRE(rdata->type == 26);
REQUIRE(rdata->class == 1);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
/* preference */
dns_rdata_toregion(rdata, &region);
num = uint16_fromregion(&region);
isc_region_consume(&region, 2);
sprintf(buf, "%u", num);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* MAP822 */
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
isc_region_consume(&region, name_length(&name));
RETERR(dns_name_totext(&prefix, sub, target));
RETERR(str_totext(" ", target));
/* MAPX400 */
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return(dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_in_px(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
isc_region_t sregion;
REQUIRE(type == 26);
REQUIRE(class == 1);
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
dns_name_init(&name, NULL);
/* preference */
isc_buffer_active(source, &sregion);
if (sregion.length < 2)
return (DNS_R_UNEXPECTEDEND);
RETERR(mem_tobuffer(target, sregion.base, 2));
isc_buffer_forward(source, 2);
/* MAP822 */
RETERR(dns_name_fromwire(&name, source, dctx, downcase, target));
/* MAPX400 */
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_in_px(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t region;
REQUIRE(rdata->type == 26);
REQUIRE(rdata->class == 1);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
/* preference */
dns_rdata_toregion(rdata, &region);
RETERR(mem_tobuffer(target, region.base, 2));
isc_region_consume(&region, 2);
/* MAP822 */
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &region);
RETERR(dns_name_towire(&name, cctx, target));
isc_region_consume(&region, name_length(&name));
/* MAPX400 */
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &region);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_in_px(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 26);
REQUIRE(rdata1->class == 1);
result = memcmp(rdata1->data, rdata2->data, 2);
if (result != 0)
return (result < 0 ? -1 : 1);
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
isc_region_consume(&region1, 2);
isc_region_consume(&region2, 2);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
result = dns_name_rdatacompare(&name1, &name2);
if (result != 0)
return (result);
isc_region_consume(&region1, name_length(&name1));
isc_region_consume(&region2, name_length(&name2));
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_in_px(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 26);
REQUIRE(class == 1);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_in_px(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 26);
REQUIRE(rdata->class == 1);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_IN_1_PX_26_H */

View File

@@ -15,197 +15,10 @@
* SOFTWARE.
*/
/* $Id: srv_33.h,v 1.4 1999/02/24 06:31:35 marka Exp $ */
/* $Id: srv_33.h,v 1.5 1999/05/05 01:55:13 marka Exp $ */
/* RFC 2052 bis */
#ifndef RDATA_IN_1_SRV_33_H
#define RDATA_IN_1_SRV_33_H
static dns_result_t
fromtext_in_srv(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
dns_name_t name;
isc_buffer_t buffer;
REQUIRE(type == 33);
REQUIRE(class == 1);
/* priority */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* weight */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* port */
RETERR(gettoken(lexer, &token, isc_tokentype_number, ISC_FALSE));
RETERR(uint16_tobuffer(token.value.as_ulong, target));
/* target */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
dns_name_init(&name, NULL);
buffer_fromregion(&buffer, &token.value.as_region,
ISC_BUFFERTYPE_TEXT);
origin = (origin != NULL) ? origin : dns_rootname;
return (dns_name_fromtext(&name, &buffer, origin, downcase, target));
}
static dns_result_t
totext_in_srv(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t region;
dns_name_t name;
dns_name_t prefix;
isc_boolean_t sub;
char buf[sizeof "64000"];
unsigned short num;
REQUIRE(rdata->type == 33);
REQUIRE(rdata->class == 1);
dns_name_init(&name, NULL);
dns_name_init(&prefix, NULL);
/* priority */
dns_rdata_toregion(rdata, &region);
num = uint16_fromregion(&region);
isc_region_consume(&region, 2);
sprintf(buf, "%u", num);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* weight */
num = uint16_fromregion(&region);
isc_region_consume(&region, 2);
sprintf(buf, "%u", num);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* port */
num = uint16_fromregion(&region);
isc_region_consume(&region, 2);
sprintf(buf, "%u", num);
RETERR(str_totext(buf, target));
RETERR(str_totext(" ", target));
/* target */
dns_name_fromregion(&name, &region);
sub = name_prefix(&name, origin, &prefix);
return(dns_name_totext(&prefix, sub, target));
}
static dns_result_t
fromwire_in_srv(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
dns_name_t name;
isc_region_t sr;
REQUIRE(type == 33);
REQUIRE(class == 1);
if (dns_decompress_edns(dctx) >= 1 || !dns_decompress_strict(dctx))
dns_decompress_setmethods(dctx, DNS_COMPRESS_ALL);
else
dns_decompress_setmethods(dctx, DNS_COMPRESS_NONE);
dns_name_init(&name, NULL);
/* priority, weight, port */
isc_buffer_active(source, &sr);
if (sr.length < 6)
return (DNS_R_UNEXPECTEDEND);
RETERR(mem_tobuffer(target, sr.base, 6));
isc_buffer_forward(source, 6);
/* target */
return (dns_name_fromwire(&name, source, dctx, downcase, target));
}
static dns_result_t
towire_in_srv(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
dns_name_t name;
isc_region_t sr;
REQUIRE(rdata->type == 33);
if (dns_compress_getedns(cctx) >= 1)
dns_compress_setmethods(cctx, DNS_COMPRESS_ALL);
else
dns_compress_setmethods(cctx, DNS_COMPRESS_NONE);
/* priority, weight, port */
dns_rdata_toregion(rdata, &sr);
RETERR(mem_tobuffer(target, sr.base, 6));
isc_region_consume(&sr, 6);
/* target */
dns_name_init(&name, NULL);
dns_name_fromregion(&name, &sr);
return (dns_name_towire(&name, cctx, target));
}
static int
compare_in_srv(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
dns_name_t name1;
dns_name_t name2;
isc_region_t region1;
isc_region_t region2;
int result;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 33);
REQUIRE(rdata1->class == 1);
/* priority, weight, port */
result = memcmp(rdata1->data, rdata2->data, 6);
if (result != 0)
return (result < 0 ? -1 : 1);
/* target */
dns_name_init(&name1, NULL);
dns_name_init(&name2, NULL);
dns_rdata_toregion(rdata1, &region1);
dns_rdata_toregion(rdata2, &region2);
isc_region_consume(&region1, 6);
isc_region_consume(&region2, 6);
dns_name_fromregion(&name1, &region1);
dns_name_fromregion(&name2, &region2);
return (dns_name_rdatacompare(&name1, &name2));
}
static dns_result_t
fromstruct_in_srv(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 33);
REQUIRE(class == 1);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_in_srv(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 33);
REQUIRE(rdata->class == 1);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_IN_1_SRV_33_H */

View File

@@ -15,224 +15,8 @@
* SOFTWARE.
*/
/* $Id: wks_11.h,v 1.8 1999/02/16 22:42:33 marka Exp $ */
/* $Id: wks_11.h,v 1.9 1999/05/05 01:55:13 marka Exp $ */
#ifndef RDATA_IN_1_WKS_11_H
#define RDATA_IN_1_WKS_11_H
#include <limits.h>
#include <netdb.h>
#include <stdlib.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <isc/inet.h>
static dns_result_t
fromtext_in_wks(dns_rdataclass_t class, dns_rdatatype_t type,
isc_lex_t *lexer, dns_name_t *origin,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_token_t token;
isc_region_t region;
struct in_addr addr;
struct protoent *pe;
struct servent *se;
char *e;
long proto;
unsigned char bm[8*1024]; /* 64k bits */
long port;
long maxport = -1;
char *ps = NULL;
unsigned int n;
REQUIRE(type == 11);
REQUIRE(class == 1);
origin = origin; /*unused*/
downcase = downcase; /*unused*/
/* IPv4 dotted quad */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
isc_buffer_available(target, &region);
if (isc_inet_aton(token.value.as_pointer, &addr) != 1)
return (DNS_R_BADDOTTEDQUAD);
if (region.length < 4)
return (DNS_R_NOSPACE);
memcpy(region.base, &addr, 4);
isc_buffer_add(target, 4);
/* protocol */
RETERR(gettoken(lexer, &token, isc_tokentype_string, ISC_FALSE));
proto = strtol(token.value.as_pointer, &e, 10);
if (*e == 0)
(void)NULL;
else if ((pe = getprotobyname(token.value.as_pointer)) != NULL)
proto = pe->p_proto;
else
return (DNS_R_UNEXPECTED);
if (proto < 0 || proto > 0xffff)
return (DNS_R_RANGE);
if (proto == IPPROTO_TCP)
ps = "tcp";
else if (proto == IPPROTO_UDP)
ps = "udp";
RETERR(uint16_tobuffer(proto, target));
memset(bm, 0, sizeof bm);
while (1) {
RETERR(gettoken(lexer, &token, isc_tokentype_string,
ISC_TRUE));
if (token.type != isc_tokentype_string)
break;
port = strtol(token.value.as_pointer, &e, 10);
if (*e == 0)
(void) NULL;
else if ((se = getservbyname(token.value.as_pointer, ps))
!= NULL)
port = ntohs(se->s_port);
else
return (DNS_R_UNEXPECTED);
if (port < 0 || port > 0xffff)
return (DNS_R_RANGE);
if (port > maxport)
maxport = port;
bm[port/8] |= (0x80>>(port%8));
}
isc_lex_ungettoken(lexer, &token);
n = (maxport + 8) / 8;
return (mem_tobuffer(target, bm, n));
}
static dns_result_t
totext_in_wks(dns_rdata_t *rdata, dns_name_t *origin, isc_buffer_t *target) {
isc_region_t sr;
isc_region_t tr;
unsigned short proto;
char buf[sizeof "65535"];
unsigned int i, j;
REQUIRE(rdata->type == 11);
REQUIRE(rdata->class == 1);
origin = origin;
dns_rdata_toregion(rdata, &sr);
isc_buffer_available(target, &tr);
if (isc_inet_ntop(AF_INET, sr.base, (char *)tr.base, tr.length)
== NULL)
return (DNS_R_NOSPACE);
isc_buffer_add(target, strlen((char *)tr.base));
isc_region_consume(&sr, 4);
proto = uint16_fromregion(&sr);
sprintf(buf, "%u", proto);
RETERR(str_totext(" ", target));
RETERR(str_totext(buf, target));
isc_region_consume(&sr, 2);
RETERR(str_totext(" (", target));
for (i = 0 ; i < sr.length ; i++) {
if (sr.base[i] != 0)
for (j = 0; j < 8; j++)
if ((sr.base[i] & (0x80>>j)) != 0) {
sprintf(buf, "%u", i * 8 + j);
RETERR(str_totext(" ", target));
RETERR(str_totext(buf, target));
}
}
RETERR(str_totext(" )", target));
return (DNS_R_SUCCESS);
}
static dns_result_t
fromwire_in_wks(dns_rdataclass_t class, dns_rdatatype_t type,
isc_buffer_t *source, dns_decompress_t *dctx,
isc_boolean_t downcase, isc_buffer_t *target)
{
isc_region_t sr;
isc_region_t tr;
REQUIRE(type == 11);
REQUIRE(class == 1);
dctx = dctx; /*unused*/
downcase = downcase; /*unused*/
isc_buffer_active(source, &sr);
isc_buffer_available(target, &tr);
if (sr.length < 6)
return (DNS_R_UNEXPECTEDEND);
if (sr.length > 8 * 1024 + 6)
return (DNS_R_EXTRADATA);
if (tr.length < sr.length)
return (DNS_R_NOSPACE);
memcpy(tr.base, sr.base, sr.length);
isc_buffer_add(target, sr.length);
isc_buffer_forward(source, sr.length);
return (DNS_R_SUCCESS);
}
static dns_result_t
towire_in_wks(dns_rdata_t *rdata, dns_compress_t *cctx, isc_buffer_t *target) {
isc_region_t sr;
REQUIRE(rdata->type == 11);
REQUIRE(rdata->class == 1);
cctx = cctx; /*unused*/
dns_rdata_toregion(rdata, &sr);
return (mem_tobuffer(target, sr.base, sr.length));
}
static int
compare_in_wks(dns_rdata_t *rdata1, dns_rdata_t *rdata2) {
isc_region_t r1;
isc_region_t r2;
REQUIRE(rdata1->type == rdata2->type);
REQUIRE(rdata1->class == rdata2->class);
REQUIRE(rdata1->type == 11);
REQUIRE(rdata1->class == 1);
dns_rdata_toregion(rdata1, &r1);
dns_rdata_toregion(rdata2, &r2);
return (compare_region(&r1, &r2));
}
static dns_result_t
fromstruct_in_wks(dns_rdataclass_t class, dns_rdatatype_t type, void *source,
isc_buffer_t *target)
{
REQUIRE(type == 11);
REQUIRE(class == 1);
source = source;
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
static dns_result_t
tostruct_in_wks(dns_rdata_t *rdata, void *target) {
REQUIRE(rdata->type == 11);
REQUIRE(rdata->class == 1);
target = target;
return (DNS_R_NOTIMPLEMENTED);
}
#endif /* RDATA_IN_1_WKS_11_H */