From bed8e84810a80dad3d37870be927d1dfd015f480 Mon Sep 17 00:00:00 2001 From: Mark Andrews Date: Wed, 20 Jan 1999 22:49:34 +0000 Subject: [PATCH] Add meta and IANA reserved types / classes. --- lib/dns/rdata.c | 39 +++++++++++++++++++++++++++++++++------ 1 file changed, 33 insertions(+), 6 deletions(-) diff --git a/lib/dns/rdata.c b/lib/dns/rdata.c index 096da35080..8ff266e8df 100644 --- a/lib/dns/rdata.c +++ b/lib/dns/rdata.c @@ -15,7 +15,7 @@ * SOFTWARE. */ - /* $Id: rdata.c,v 1.6 1999/01/20 06:51:30 marka Exp $ */ + /* $Id: rdata.c,v 1.7 1999/01/20 22:49:34 marka Exp $ */ #include #include @@ -50,10 +50,33 @@ static unsigned short uint16_fromregion(isc_region_t *region); #include "code.h" +#define META 0x0001 +#define RESERVED 0x0002 + +#define METATYPES \ + { 0, "NONE", META }, \ + { 100, "UINFO", RESERVED }, \ + { 101, "UID", RESERVED }, \ + { 102, "GID", RESERVED }, \ + { 103, "UNSPEC", RESERVED }, \ + { 249, "TKEY", META }, \ + { 250, "TSIG", META }, \ + { 251, "IXFR", META }, \ + { 252, "AXFR", META }, \ + { 253, "MAILB", META }, \ + { 254, "MAILA", META }, \ + { 255, "ANY", META }, + +#define METACLASSES \ + { 0, "NONE", META }, \ + { 255, "ANY", META }, + struct tbl { int value; char *name; -} types[] = { TYPENAMES {0, NULL} }, classes[] = { CLASSNAMES { 0, NULL} }; + int flags; +} types[] = { TYPENAMES METATYPES {0, NULL, 0} }, +classes[] = { CLASSNAMES METACLASSES { 0, NULL, 0} }; /*** *** Initialization ***/ @@ -297,7 +320,9 @@ dns_rdataclass_fromtext(dns_rdataclass_t *classp, isc_textregion_t *source) { if (n == source->length && strncasecmp(source->base, classes[i].name, n) == 0) { *classp = classes[i].value; - return(DNS_R_SUCCESS); + if ((classes[i].flags & RESERVED) != 0) + return (DNS_R_NOTIMPLEMENTED); + return (DNS_R_SUCCESS); } i++; } @@ -317,7 +342,7 @@ dns_rdataclass_totext(dns_rdataclass_t class, isc_buffer_t *target) { return (DNS_R_NOSPACE); memcpy(region.base, classes[i].name, n); isc_buffer_add(target, n); - return(DNS_R_SUCCESS); + return (DNS_R_SUCCESS); } i++; } @@ -334,7 +359,9 @@ dns_rdatatype_fromtext(dns_rdatatype_t *typep, isc_textregion_t *source) { if (n == source->length && strncasecmp(source->base, types[i].name, n) == 0) { *typep = types[i].value; - return(DNS_R_SUCCESS); + if ((types[i].flags & RESERVED) != 0) + return (DNS_R_NOTIMPLEMENTED); + return (DNS_R_SUCCESS); } i++; } @@ -354,7 +381,7 @@ dns_rdatatype_totext(dns_rdatatype_t type, isc_buffer_t *target) { return (DNS_R_NOSPACE); memcpy(region.base, types[i].name, n); isc_buffer_add(target, n); - return(DNS_R_SUCCESS); + return (DNS_R_SUCCESS); } i++; }