diff options
author | 2014-02-04 03:07:25 +0000 | |
---|---|---|
committer | 2014-02-04 03:07:25 +0000 | |
commit | a302926fb0a2485873fbeb49cf356d6b33d90875 (patch) | |
tree | e6c81d29643a88958dc6d35682d3f92a1ba9e5f0 | |
parent | update to NSD 4.0.1, ok sthen@ (diff) | |
download | wireguard-openbsd-a302926fb0a2485873fbeb49cf356d6b33d90875.tar.xz wireguard-openbsd-a302926fb0a2485873fbeb49cf356d6b33d90875.zip |
merge conflicts
-rw-r--r-- | usr.sbin/nsd/Makefile.in | 28 | ||||
-rw-r--r-- | usr.sbin/nsd/axfr.c | 9 | ||||
-rw-r--r-- | usr.sbin/nsd/config.h.in | 3 | ||||
-rw-r--r-- | usr.sbin/nsd/configparser.y | 6 | ||||
-rw-r--r-- | usr.sbin/nsd/configure | 40 | ||||
-rw-r--r-- | usr.sbin/nsd/configure.ac | 14 | ||||
-rw-r--r-- | usr.sbin/nsd/dns.c | 319 | ||||
-rw-r--r-- | usr.sbin/nsd/dns.h | 30 | ||||
-rw-r--r-- | usr.sbin/nsd/nsd-checkconf.8.in | 2 | ||||
-rw-r--r-- | usr.sbin/nsd/nsd.8.in | 7 | ||||
-rw-r--r-- | usr.sbin/nsd/nsd.c | 20 | ||||
-rw-r--r-- | usr.sbin/nsd/nsd.conf.5.in | 8 | ||||
-rw-r--r-- | usr.sbin/nsd/rdata.c | 60 | ||||
-rw-r--r-- | usr.sbin/nsd/server.c | 14 | ||||
-rw-r--r-- | usr.sbin/nsd/util.c | 7 | ||||
-rw-r--r-- | usr.sbin/nsd/xfrd-disk.c | 2 | ||||
-rw-r--r-- | usr.sbin/nsd/xfrd-tcp.c | 4 | ||||
-rw-r--r-- | usr.sbin/nsd/xfrd.c | 8 | ||||
-rw-r--r-- | usr.sbin/nsd/zonec.c | 48 | ||||
-rw-r--r-- | usr.sbin/nsd/zonec.h | 4 | ||||
-rw-r--r-- | usr.sbin/nsd/zparser.y | 21 |
21 files changed, 519 insertions, 135 deletions
diff --git a/usr.sbin/nsd/Makefile.in b/usr.sbin/nsd/Makefile.in index 61d1041e628..84df1b5d589 100644 --- a/usr.sbin/nsd/Makefile.in +++ b/usr.sbin/nsd/Makefile.in @@ -108,9 +108,7 @@ nsd-control.8: $(srcdir)/nsd-control.8.in config.h rm -f nsd-control.8 $(EDIT) $(srcdir)/nsd-control.8.in > nsd-control.8 -install: - -orig-install: all +install: all $(INSTALL) -d $(DESTDIR)$(sbindir) $(INSTALL) -d $(DESTDIR)$(configdir) $(INSTALL) -d $(DESTDIR)$(piddir) @@ -340,10 +338,10 @@ configparser.o: configparser.c config.h $(srcdir)/options.h $(srcdir)/region-all $(srcdir)/radtree.h $(srcdir)/nsd.h $(srcdir)/edns.h $(srcdir)/packet.h $(srcdir)/configyyrename.h dbaccess.o: $(srcdir)/dbaccess.c config.h $(srcdir)/dns.h $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h \ $(srcdir)/region-allocator.h $(srcdir)/util.h $(srcdir)/radtree.h $(srcdir)/rbtree.h $(srcdir)/options.h $(srcdir)/rdata.h $(srcdir)/udb.h \ - $(srcdir)/udbradtree.h $(srcdir)/udbzone.h $(srcdir)/zonec.h $(srcdir)/nsec3.h $(srcdir)/difffile.h + $(srcdir)/udbradtree.h $(srcdir)/udbzone.h $(srcdir)/zonec.h $(srcdir)/nsec3.h $(srcdir)/difffile.h $(srcdir)/nsd.h $(srcdir)/edns.h dbcreate.o: $(srcdir)/dbcreate.c config.h $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h \ $(srcdir)/region-allocator.h $(srcdir)/util.h $(srcdir)/dns.h $(srcdir)/radtree.h $(srcdir)/rbtree.h $(srcdir)/udb.h $(srcdir)/udbradtree.h \ - $(srcdir)/udbzone.h $(srcdir)/options.h + $(srcdir)/udbzone.h $(srcdir)/options.h $(srcdir)/nsd.h $(srcdir)/edns.h difffile.o: $(srcdir)/difffile.c config.h $(srcdir)/difffile.h $(srcdir)/rbtree.h $(srcdir)/region-allocator.h \ $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h $(srcdir)/util.h $(srcdir)/dns.h $(srcdir)/radtree.h $(srcdir)/options.h $(srcdir)/udb.h \ $(srcdir)/xfrd-disk.h $(srcdir)/packet.h $(srcdir)/rdata.h $(srcdir)/udbzone.h $(srcdir)/udbradtree.h $(srcdir)/nsec3.h $(srcdir)/nsd.h $(srcdir)/edns.h \ @@ -374,7 +372,7 @@ nsd-mem.o: $(srcdir)/nsd-mem.c config.h $(srcdir)/nsd.h $(srcdir)/dns.h $(srcdir $(srcdir)/radtree.h $(srcdir)/udb.h $(srcdir)/udbzone.h $(srcdir)/udbradtree.h nsec3.o: $(srcdir)/nsec3.c config.h $(srcdir)/nsec3.h $(srcdir)/iterated_hash.h $(srcdir)/namedb.h $(srcdir)/dname.h \ $(srcdir)/buffer.h $(srcdir)/region-allocator.h $(srcdir)/util.h $(srcdir)/dns.h $(srcdir)/radtree.h $(srcdir)/rbtree.h $(srcdir)/nsd.h $(srcdir)/edns.h \ - $(srcdir)/answer.h $(srcdir)/packet.h $(srcdir)/query.h $(srcdir)/tsig.h $(srcdir)/udbzone.h $(srcdir)/udb.h $(srcdir)/udbradtree.h + $(srcdir)/answer.h $(srcdir)/packet.h $(srcdir)/query.h $(srcdir)/tsig.h $(srcdir)/udbzone.h $(srcdir)/udb.h $(srcdir)/udbradtree.h $(srcdir)/options.h options.o: $(srcdir)/options.c config.h $(srcdir)/options.h $(srcdir)/region-allocator.h $(srcdir)/rbtree.h \ $(srcdir)/query.h $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h $(srcdir)/util.h $(srcdir)/dns.h $(srcdir)/radtree.h $(srcdir)/nsd.h $(srcdir)/edns.h \ $(srcdir)/packet.h $(srcdir)/tsig.h $(srcdir)/difffile.h $(srcdir)/udb.h $(srcdir)/rrl.h $(srcdir)/configyyrename.h configparser.h @@ -424,7 +422,7 @@ xfrd-notify.o: $(srcdir)/xfrd-notify.c config.h $(srcdir)/xfrd-notify.h $(srcdir $(srcdir)/radtree.h $(srcdir)/options.h $(srcdir)/xfrd-tcp.h $(srcdir)/packet.h xfrd-tcp.o: $(srcdir)/xfrd-tcp.c config.h $(srcdir)/xfrd-tcp.h $(srcdir)/xfrd.h $(srcdir)/rbtree.h \ $(srcdir)/region-allocator.h $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h $(srcdir)/util.h $(srcdir)/dns.h $(srcdir)/radtree.h \ - $(srcdir)/options.h $(srcdir)/tsig.h $(srcdir)/packet.h + $(srcdir)/options.h $(srcdir)/tsig.h $(srcdir)/packet.h $(srcdir)/xfrd-disk.h zlexer.o: zlexer.c config.h $(srcdir)/zonec.h $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h \ $(srcdir)/region-allocator.h $(srcdir)/util.h $(srcdir)/dns.h $(srcdir)/radtree.h $(srcdir)/rbtree.h zparser.h zonec.o: $(srcdir)/zonec.c config.h $(srcdir)/zonec.h $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h \ @@ -456,12 +454,14 @@ cutest_iterated_hash.o: $(srcdir)/tpkg/cutest/cutest_iterated_hash.c config.h \ $(srcdir)/tpkg/cutest/cutest.h $(srcdir)/region-allocator.h $(srcdir)/util.h $(srcdir)/iterated_hash.h $(srcdir)/dname.h \ $(srcdir)/buffer.h $(srcdir)/region-allocator.h $(srcdir)/util.h cutest_namedb.o: $(srcdir)/tpkg/cutest/cutest_namedb.c config.h \ - $(srcdir)/tpkg/cutest/cutest.h $(srcdir)/region-allocator.h $(srcdir)/options.h $(srcdir)/region-allocator.h \ - $(srcdir)/rbtree.h $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h $(srcdir)/util.h $(srcdir)/dns.h $(srcdir)/radtree.h $(srcdir)/nsec3.h $(srcdir)/udb.h \ - $(srcdir)/udbzone.h $(srcdir)/udb.h $(srcdir)/udbradtree.h $(srcdir)/difffile.h $(srcdir)/namedb.h $(srcdir)/options.h $(srcdir)/zonec.h + $(srcdir)/tpkg/cutest/cutest.h $(srcdir)/region-allocator.h $(srcdir)/options.h config.h \ + $(srcdir)/region-allocator.h $(srcdir)/rbtree.h $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h $(srcdir)/util.h $(srcdir)/dns.h \ + $(srcdir)/radtree.h $(srcdir)/nsec3.h $(srcdir)/udb.h $(srcdir)/udbzone.h $(srcdir)/udb.h $(srcdir)/udbradtree.h $(srcdir)/difffile.h $(srcdir)/namedb.h \ + $(srcdir)/options.h $(srcdir)/zonec.h $(srcdir)/nsd.h $(srcdir)/edns.h cutest_options.o: $(srcdir)/tpkg/cutest/cutest_options.c config.h \ - $(srcdir)/tpkg/cutest/cutest.h $(srcdir)/region-allocator.h $(srcdir)/options.h $(srcdir)/region-allocator.h \ - $(srcdir)/rbtree.h $(srcdir)/util.h $(srcdir)/dname.h $(srcdir)/buffer.h $(srcdir)/util.h + $(srcdir)/tpkg/cutest/cutest.h $(srcdir)/region-allocator.h $(srcdir)/options.h config.h \ + $(srcdir)/region-allocator.h $(srcdir)/rbtree.h $(srcdir)/util.h $(srcdir)/dname.h $(srcdir)/buffer.h $(srcdir)/util.h $(srcdir)/nsd.h $(srcdir)/dns.h \ + $(srcdir)/edns.h cutest_radtree.o: $(srcdir)/tpkg/cutest/cutest_radtree.c config.h \ $(srcdir)/tpkg/cutest/cutest.h $(srcdir)/radtree.h $(srcdir)/region-allocator.h $(srcdir)/util.h cutest_rbtree.o: $(srcdir)/tpkg/cutest/cutest_rbtree.c config.h \ @@ -483,8 +483,8 @@ cutest_util.o: $(srcdir)/tpkg/cutest/cutest_util.c config.h $(srcdir)/tpkg/cutes qtest.o: $(srcdir)/tpkg/cutest/qtest.c config.h $(srcdir)/tpkg/cutest/qtest.h $(srcdir)/buffer.h \ $(srcdir)/region-allocator.h $(srcdir)/util.h $(srcdir)/query.h $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h $(srcdir)/dns.h \ $(srcdir)/radtree.h $(srcdir)/rbtree.h $(srcdir)/nsd.h $(srcdir)/edns.h $(srcdir)/packet.h $(srcdir)/tsig.h $(srcdir)/namedb.h $(srcdir)/util.h $(srcdir)/nsec3.h \ - $(srcdir)/options.h $(srcdir)/packet.h $(srcdir)/dname.h $(srcdir)/rdata.h + $(srcdir)/options.h config.h $(srcdir)/packet.h $(srcdir)/dname.h $(srcdir)/rdata.h udb-inspect.o: $(srcdir)/tpkg/cutest/udb-inspect.c config.h $(srcdir)/udb.h $(srcdir)/udbradtree.h \ $(srcdir)/udb.h $(srcdir)/udbzone.h $(srcdir)/dns.h $(srcdir)/udbradtree.h $(srcdir)/util.h $(srcdir)/buffer.h $(srcdir)/region-allocator.h \ $(srcdir)/util.h $(srcdir)/packet.h $(srcdir)/namedb.h $(srcdir)/dname.h $(srcdir)/buffer.h $(srcdir)/radtree.h $(srcdir)/rbtree.h $(srcdir)/rdata.h \ - $(srcdir)/namedb.h $(srcdir)/difffile.h $(srcdir)/options.h + $(srcdir)/namedb.h $(srcdir)/difffile.h $(srcdir)/options.h config.h diff --git a/usr.sbin/nsd/axfr.c b/usr.sbin/nsd/axfr.c index 6ed41cab61a..f780811fc9f 100644 --- a/usr.sbin/nsd/axfr.c +++ b/usr.sbin/nsd/axfr.c @@ -74,7 +74,8 @@ query_axfr(struct nsd *nsd, struct query *query) assert(query->axfr_zone->soa_rrset->rr_count == 1); added = packet_encode_rr(query, query->axfr_zone->apex, - &query->axfr_zone->soa_rrset->rrs[0]); + &query->axfr_zone->soa_rrset->rrs[0], + query->axfr_zone->soa_rrset->rrs[0].ttl); if (!added) { /* XXX: This should never happen... generate error code? */ abort(); @@ -109,7 +110,8 @@ query_axfr(struct nsd *nsd, struct query *query) added = packet_encode_rr( query, query->axfr_current_domain, - &query->axfr_current_rrset->rrs[query->axfr_current_rr]); + &query->axfr_current_rrset->rrs[query->axfr_current_rr], + query->axfr_current_rrset->rrs[query->axfr_current_rr].ttl); if (!added) goto return_answer; ++total_added; @@ -132,7 +134,8 @@ query_axfr(struct nsd *nsd, struct query *query) assert(query->axfr_zone->soa_rrset->rr_count == 1); added = packet_encode_rr(query, query->axfr_zone->apex, - &query->axfr_zone->soa_rrset->rrs[0]); + &query->axfr_zone->soa_rrset->rrs[0], + query->axfr_zone->soa_rrset->rrs[0].ttl); if (added) { ++total_added; query->tsig_sign_it = 1; /* sign last packet */ diff --git a/usr.sbin/nsd/config.h.in b/usr.sbin/nsd/config.h.in index b2675b6d30c..42c683a9be9 100644 --- a/usr.sbin/nsd/config.h.in +++ b/usr.sbin/nsd/config.h.in @@ -19,9 +19,6 @@ /* Pathname to the NSD database */ #undef DBFILE -/* Define this to enable draft RRtypes. */ -#undef DRAFT_RRTYPES - /* Define to the default maximum message length with EDNS. */ #undef EDNS_MAX_MESSAGE_LEN diff --git a/usr.sbin/nsd/configparser.y b/usr.sbin/nsd/configparser.y index 17dae8a64ef..7a1edc7c620 100644 --- a/usr.sbin/nsd/configparser.y +++ b/usr.sbin/nsd/configparser.y @@ -208,7 +208,11 @@ server_nsid: VAR_NSID STRING OUTYY(("P(server_nsid:%s)\n", $2)); - if (strlen($2) % 2 != 0) { + if (strncasecmp($2, "ascii_", 6) == 0) { + nsid_len = strlen($2+6); + cfg_parser->opt->nsid = region_alloc(cfg_parser->opt->region, nsid_len*2+1); + hex_ntop((uint8_t*)$2+6, nsid_len, (char*)cfg_parser->opt->nsid, nsid_len*2+1); + } else if (strlen($2) % 2 != 0) { yyerror("the NSID must be a hex string of an even length."); } else { nsid_len = strlen($2) / 2; diff --git a/usr.sbin/nsd/configure b/usr.sbin/nsd/configure index 5d856e35a90..170d7b2f729 100644 --- a/usr.sbin/nsd/configure +++ b/usr.sbin/nsd/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.69 for NSD 4.0.0. +# Generated by GNU Autoconf 2.69 for NSD 4.0.1. # # Report bugs to <nsd-bugs@nlnetlabs.nl>. # @@ -580,8 +580,8 @@ MAKEFLAGS= # Identity of this package. PACKAGE_NAME='NSD' PACKAGE_TARNAME='nsd' -PACKAGE_VERSION='4.0.0' -PACKAGE_STRING='NSD 4.0.0' +PACKAGE_VERSION='4.0.1' +PACKAGE_STRING='NSD 4.0.1' PACKAGE_BUGREPORT='nsd-bugs@nlnetlabs.nl' PACKAGE_URL='' @@ -726,7 +726,6 @@ enable_ratelimit with_ssl enable_nsec3 enable_minimal_responses -enable_draft_rrtypes enable_mmap ' ac_precious_vars='build_alias @@ -1280,7 +1279,7 @@ if test "$ac_init_help" = "long"; then # Omit some internal or obsolete options to make the list less imposing. # This message is too long to be a string in the A/UX 3.1 sh. cat <<_ACEOF -\`configure' configures NSD 4.0.0 to adapt to many kinds of systems. +\`configure' configures NSD 4.0.1 to adapt to many kinds of systems. Usage: $0 [OPTION]... [VAR=VALUE]... @@ -1341,7 +1340,7 @@ fi if test -n "$ac_init_help"; then case $ac_init_help in - short | recursive ) echo "Configuration of NSD 4.0.0:";; + short | recursive ) echo "Configuration of NSD 4.0.1:";; esac cat <<\_ACEOF @@ -1361,7 +1360,6 @@ Optional Features: --disable-nsec3 Disable NSEC3 support --disable-minimal-responses Disable response minimization. More truncation. - --enable-draft-rrtypes Enable draft RRtypes. --enable-mmap Use mmap instead of malloc. Experimental. Optional Packages: @@ -1475,7 +1473,7 @@ fi test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF -NSD configure 4.0.0 +NSD configure 4.0.1 generated by GNU Autoconf 2.69 Copyright (C) 2012 Free Software Foundation, Inc. @@ -2184,7 +2182,7 @@ cat >config.log <<_ACEOF This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. -It was created by NSD $as_me 4.0.0, which was +It was created by NSD $as_me 4.0.1, which was generated by GNU Autoconf 2.69. Invocation command line was $ $0 $@ @@ -6347,6 +6345,9 @@ else fi if test "$srcdir" != "."; then CPPFLAGS="$CPPFLAGS -I$srcdir" + if test -f $srcdir/config.h; then + as_fn_error $? "$srcdir/config.h is in the way, please remove it" "$LINENO" 5 + fi fi @@ -8715,23 +8716,6 @@ _ACEOF ;; esac -# Check whether --enable-draft-rrtypes was given. -if test "${enable_draft_rrtypes+set}" = set; then : - enableval=$enable_draft_rrtypes; -fi - -case "$enable_draft_rrtypes" in - yes) - -cat >>confdefs.h <<_ACEOF -#define DRAFT_RRTYPES /**/ -_ACEOF - - ;; - no|*) - ;; -esac - # Check whether --enable-mmap was given. if test "${enable_mmap+set}" = set; then : enableval=$enable_mmap; @@ -9371,7 +9355,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 # report actual input values of CONFIG_FILES etc. instead of their # values after options handling. ac_log=" -This file was extended by NSD $as_me 4.0.0, which was +This file was extended by NSD $as_me 4.0.1, which was generated by GNU Autoconf 2.69. Invocation command line was CONFIG_FILES = $CONFIG_FILES @@ -9433,7 +9417,7 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" ac_cs_version="\\ -NSD config.status 4.0.0 +NSD config.status 4.0.1 configured by $0, generated by GNU Autoconf 2.69, with options \\"\$ac_cs_config\\" diff --git a/usr.sbin/nsd/configure.ac b/usr.sbin/nsd/configure.ac index 565c9948fc9..f880ed66ccb 100644 --- a/usr.sbin/nsd/configure.ac +++ b/usr.sbin/nsd/configure.ac @@ -4,7 +4,7 @@ dnl sinclude(acx_nlnetlabs.m4) -AC_INIT(NSD,4.0.0,nsd-bugs@nlnetlabs.nl) +AC_INIT(NSD,4.0.1,nsd-bugs@nlnetlabs.nl) AC_CONFIG_HEADER([config.h]) AC_AIX @@ -488,6 +488,9 @@ else fi if test "$srcdir" != "."; then CPPFLAGS="$CPPFLAGS -I$srcdir" + if test -f $srcdir/config.h; then + AC_ERROR([$srcdir/config.h is in the way, please remove it]) + fi fi dnl LIBGTOP_CHECK_TYPE @@ -789,15 +792,6 @@ case "$enable_minimal_responses" in ;; esac -AC_ARG_ENABLE(draft-rrtypes, AC_HELP_STRING([--enable-draft-rrtypes], [Enable draft RRtypes.])) -case "$enable_draft_rrtypes" in - yes) - AC_DEFINE_UNQUOTED([DRAFT_RRTYPES], [], [Define this to enable draft RRtypes.]) - ;; - no|*) - ;; -esac - AC_ARG_ENABLE(mmap, AC_HELP_STRING([--enable-mmap], [Use mmap instead of malloc. Experimental.])) case "$enable_mmap" in yes) diff --git a/usr.sbin/nsd/dns.c b/usr.sbin/nsd/dns.c index fbec4f5a2d6..29552b8051c 100644 --- a/usr.sbin/nsd/dns.c +++ b/usr.sbin/nsd/dns.c @@ -280,15 +280,15 @@ static rrtype_descriptor_type rrtype_descriptors[(RRTYPE_DESCRIPTORS_LENGTH+1)] { 53, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, /* 54 */ { 54, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, - /* 55 */ + /* 55 - HIP [RFC 5205] */ { 55, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, - /* 56 */ + /* 56 - NINFO */ { 56, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, - /* 57 */ + /* 57 - RKEY */ { 57, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, - /* 58 */ + /* 58 - TALINK */ { 58, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, - /* 59 */ + /* 59 - CDS */ { 59, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, /* 60 */ { 60, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, @@ -402,13 +402,13 @@ static rrtype_descriptor_type rrtype_descriptors[(RRTYPE_DESCRIPTORS_LENGTH+1)] RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT, RDATA_ZF_TEXT } }, - /* 100 */ + /* 100 - UINFO */ { 100, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, - /* 101 */ + /* 101 - UID */ { 101, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, - /* 102 */ + /* 102 - GID */ { 102, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, - /* 103 */ + /* 103 - UNSPEC */ { 103, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, /* 104 */ { TYPE_NID, "NID", T_NID, 2, 2, @@ -426,15 +426,312 @@ static rrtype_descriptor_type rrtype_descriptors[(RRTYPE_DESCRIPTORS_LENGTH+1)] { TYPE_LP, "LP", T_LP, 2, 2, { RDATA_WF_SHORT, RDATA_WF_UNCOMPRESSED_DNAME }, { RDATA_ZF_SHORT, RDATA_ZF_DNAME } }, -#ifdef DRAFT_RRTYPES /* 108 */ { TYPE_EUI48, "EUI48", T_EUI48, 1, 1, { RDATA_WF_EUI48 }, { RDATA_ZF_EUI48 } }, /* 109 */ { TYPE_EUI64, "EUI64", T_EUI64, 1, 1, { RDATA_WF_EUI64 }, { RDATA_ZF_EUI64 } }, -#endif + /* 110 */ + { 110, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 111 */ + { 111, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 112 */ + { 112, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 113 */ + { 113, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 114 */ + { 114, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 115 */ + { 115, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 116 */ + { 116, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 117 */ + { 117, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 118 */ + { 118, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 119 */ + { 119, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 120 */ + { 120, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 121 */ + { 121, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 122 */ + { 122, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 123 */ + { 123, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 124 */ + { 124, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 125 */ + { 125, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 126 */ + { 126, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 127 */ + { 127, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 128 */ + { 128, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 129 */ + { 129, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 130 */ + { 130, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 131 */ + { 131, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 132 */ + { 132, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 133 */ + { 133, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 134 */ + { 134, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 135 */ + { 135, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 136 */ + { 136, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 137 */ + { 137, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 138 */ + { 138, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 139 */ + { 139, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 140 */ + { 140, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 141 */ + { 141, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 142 */ + { 142, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 143 */ + { 143, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 144 */ + { 144, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 145 */ + { 145, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 146 */ + { 146, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 147 */ + { 147, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 148 */ + { 148, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 149 */ + { 149, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 150 */ + { 150, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 151 */ + { 151, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 152 */ + { 152, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 153 */ + { 153, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 154 */ + { 154, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 155 */ + { 155, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 156 */ + { 156, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 157 */ + { 157, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 158 */ + { 158, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 159 */ + { 159, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 160 */ + { 160, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 161 */ + { 161, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 162 */ + { 162, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 163 */ + { 163, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 164 */ + { 164, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 165 */ + { 165, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 166 */ + { 166, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 167 */ + { 167, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 168 */ + { 168, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 169 */ + { 169, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 170 */ + { 170, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 171 */ + { 171, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 172 */ + { 172, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 173 */ + { 173, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 174 */ + { 174, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 175 */ + { 175, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 176 */ + { 176, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 177 */ + { 177, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 178 */ + { 178, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 179 */ + { 179, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 180 */ + { 180, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 181 */ + { 181, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 182 */ + { 182, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 183 */ + { 183, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 184 */ + { 184, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 185 */ + { 185, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 186 */ + { 186, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 187 */ + { 187, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 188 */ + { 188, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 189 */ + { 189, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 190 */ + { 190, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 191 */ + { 191, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 192 */ + { 192, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 193 */ + { 193, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 194 */ + { 194, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 195 */ + { 195, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 196 */ + { 196, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 197 */ + { 197, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 198 */ + { 198, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 199 */ + { 199, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 200 */ + { 200, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 201 */ + { 201, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 202 */ + { 202, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 203 */ + { 203, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 204 */ + { 204, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 205 */ + { 205, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 206 */ + { 206, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 207 */ + { 207, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 208 */ + { 208, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 209 */ + { 209, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 210 */ + { 210, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 211 */ + { 211, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 212 */ + { 212, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 213 */ + { 213, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 214 */ + { 214, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 215 */ + { 215, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 216 */ + { 216, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 217 */ + { 217, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 218 */ + { 218, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 219 */ + { 219, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 220 */ + { 220, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 221 */ + { 221, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 222 */ + { 222, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 223 */ + { 223, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 224 */ + { 224, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 225 */ + { 225, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 226 */ + { 226, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 227 */ + { 227, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 228 */ + { 228, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 229 */ + { 229, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 230 */ + { 230, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 231 */ + { 231, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 232 */ + { 232, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 233 */ + { 233, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 234 */ + { 234, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 235 */ + { 235, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 236 */ + { 236, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 237 */ + { 237, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 238 */ + { 238, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 239 */ + { 239, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 240 */ + { 240, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 241 */ + { 241, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 242 */ + { 242, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 243 */ + { 243, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 244 */ + { 244, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 245 */ + { 245, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 246 */ + { 246, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 247 */ + { 247, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 248 */ + { 248, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 249 - TKEY [RFC 2930] */ + { 249, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 250 - TSIG [RFC 2845] */ + { 250, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 251 - IXFR [RFC 1995] */ + { 251, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 252 - AXFR [RFC 1035, RFC 5936] */ + { 252, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 253 - MAILB [RFC 1035] */ + { 253, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 254 - MAILA [RFC 1035] */ + { 254, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 255 - * [RFC 1035, RFC 6895] */ + { 255, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 256 - URI */ + { 256, NULL, T_UTYPE, 1, 1, { RDATA_WF_BINARY }, { RDATA_ZF_UNKNOWN } }, + /* 257 - CAA [RFC 6844] */ + { TYPE_CAA, "CAA", T_CAA, 3, 3, + { RDATA_WF_BYTE, RDATA_WF_TEXT, RDATA_WF_LONG_TEXT }, + { RDATA_ZF_BYTE, RDATA_ZF_TAG, RDATA_ZF_LONG_TEXT } }, + /* 32768 - TA */ /* 32769 */ { TYPE_DLV, "DLV", T_DLV, 4, 4, { RDATA_WF_SHORT, RDATA_WF_BYTE, RDATA_WF_BYTE, RDATA_WF_BINARY }, diff --git a/usr.sbin/nsd/dns.h b/usr.sbin/nsd/dns.h index 79f8b678df2..2b0734764ec 100644 --- a/usr.sbin/nsd/dns.h +++ b/usr.sbin/nsd/dns.h @@ -143,11 +143,8 @@ typedef enum nsd_rc nsd_rc_type; #define TYPE_L32 105 /* RFC 6742 */ #define TYPE_L64 106 /* RFC 6742 */ #define TYPE_LP 107 /* RFC 6742 */ - -#ifdef DRAFT_RRTYPES -#define TYPE_EUI48 108 /* draft-jabley-dnsext-eui48-eui64-rrtypes */ -#define TYPE_EUI64 109 /* draft-jabley-dnsext-eui48-eui64-rrtypes */ -#endif +#define TYPE_EUI48 108 /* RFC 7043 */ +#define TYPE_EUI64 109 /* RFC 7043 */ #define TYPE_TSIG 250 #define TYPE_IXFR 251 @@ -156,6 +153,8 @@ typedef enum nsd_rc nsd_rc_type; #define TYPE_MAILA 254 /* A request for mail agent RRs (Obsolete - see MX) */ #define TYPE_ANY 255 /* any type (wildcard) */ +#define TYPE_CAA 257 /* RFC 6844 */ + #define TYPE_DLV 32769 /* RFC 4431 */ #define PSEUDO_TYPE_DLV RRTYPE_DESCRIPTORS_LENGTH @@ -171,10 +170,8 @@ typedef enum nsd_rc nsd_rc_type; #define IP4ADDRLEN (32/8) #define IP6ADDRLEN (128/8) -#ifdef DRAFT_RRTYPES #define EUI48ADDRLEN (48/8) #define EUI64ADDRLEN (64/8) -#endif #define NSEC3_HASH_LEN 20 @@ -197,13 +194,10 @@ enum rdata_wireformat RDATA_WF_BINARYWITHLENGTH, /* Binary data preceded by 1 byte length */ RDATA_WF_APL, /* APL data. */ RDATA_WF_IPSECGATEWAY, /* IPSECKEY gateway ip4, ip6 or dname. */ -#ifdef DRAFT_RRTYPES RDATA_WF_ILNP64, /* 64-bit uncompressed IPv6 address. */ RDATA_WF_EUI48, /* 48-bit address. */ - RDATA_WF_EUI64 /* 64-bit address. */ -#else - RDATA_WF_ILNP64 /* 64-bit uncompressed IPv6 address. */ -#endif + RDATA_WF_EUI64, /* 64-bit address. */ + RDATA_WF_LONG_TEXT /* Long (>255) text string. */ }; typedef enum rdata_wireformat rdata_wireformat_type; @@ -238,10 +232,10 @@ enum rdata_zoneformat RDATA_ZF_NSEC, /* NSEC type bitmap. */ RDATA_ZF_LOC, /* Location data. */ RDATA_ZF_ILNP64, /* 64-bit uncompressed IPv6 address. */ -#ifdef DRAFT_RRTYPES RDATA_ZF_EUI48, /* EUI48 address. */ RDATA_ZF_EUI64, /* EUI64 address. */ -#endif + RDATA_ZF_LONG_TEXT, /* Long (>255) text string. */ + RDATA_ZF_TAG, /* Text string without quotes. */ RDATA_ZF_UNKNOWN /* Unknown data. */ }; typedef enum rdata_zoneformat rdata_zoneformat_type; @@ -262,13 +256,9 @@ typedef struct rrtype_descriptor rrtype_descriptor_type; * Indexed by type. The special type "0" can be used to get a * descriptor for unknown types (with one binary rdata). * - * EUI64 + 1 + * CAA + 1 */ -#ifdef DRAFT_RRTYPES -#define RRTYPE_DESCRIPTORS_LENGTH (TYPE_EUI64 + 1) -#else -#define RRTYPE_DESCRIPTORS_LENGTH (TYPE_LP + 1) -#endif +#define RRTYPE_DESCRIPTORS_LENGTH (TYPE_CAA + 1) rrtype_descriptor_type *rrtype_descriptor_by_name(const char *name); rrtype_descriptor_type *rrtype_descriptor_by_type(uint16_t type); diff --git a/usr.sbin/nsd/nsd-checkconf.8.in b/usr.sbin/nsd/nsd-checkconf.8.in index a812f3710b3..b70408685e8 100644 --- a/usr.sbin/nsd/nsd-checkconf.8.in +++ b/usr.sbin/nsd/nsd-checkconf.8.in @@ -1,4 +1,4 @@ -.TH "nsd\-checkconf" "8" "Oct 29, 2013" "NLnet Labs" "nsd 4.0.0" +.TH "nsd\-checkconf" "8" "Jan 27, 2014" "NLnet Labs" "nsd 4.0.1" .\" Copyright (c) 2001\-2008, NLnet Labs. All rights reserved. .\" See LICENSE for the license. .SH "NAME" diff --git a/usr.sbin/nsd/nsd.8.in b/usr.sbin/nsd/nsd.8.in index ec6ad6365fa..d364782cbf7 100644 --- a/usr.sbin/nsd/nsd.8.in +++ b/usr.sbin/nsd/nsd.8.in @@ -1,10 +1,10 @@ -.TH "NSD" "8" "Oct 29, 2013" "NLnet Labs" "NSD 4.0.0" +.TH "NSD" "8" "Jan 27, 2014" "NLnet Labs" "NSD 4.0.1" .\" Copyright (c) 2001\-2008, NLnet Labs. All rights reserved. .\" See LICENSE for the license. .SH "NAME" .LP .B nsd -\- Name Server Daemon (NSD) version 4.0.0. +\- Name Server Daemon (NSD) version 4.0.1. .SH "SYNOPSIS" .LP .B nsd @@ -139,7 +139,8 @@ when they are anycast). The default is the name returned by gethostname(3). Add the specified .I nsid to the EDNS section of the answer when queried with an NSID EDNS -enabled packet. +enabled packet. As a sequence of hex characters or with ascii_ prefix +and then an ascii string. .TP .B \-l\fI logfile Log messages to the specified diff --git a/usr.sbin/nsd/nsd.c b/usr.sbin/nsd/nsd.c index 740c069b210..262484265cb 100644 --- a/usr.sbin/nsd/nsd.c +++ b/usr.sbin/nsd/nsd.c @@ -503,13 +503,19 @@ main(int argc, char *argv[]) /* can only be given once */ break; } - if (strlen(optarg) % 2 != 0) { - error("the NSID must be a hex string of an even length."); - } - nsd.nsid = xalloc(strlen(optarg) / 2); - nsd.nsid_len = strlen(optarg) / 2; - if (hex_pton(optarg, nsd.nsid, nsd.nsid_len) == -1) { - error("hex string cannot be parsed '%s' in NSID.", optarg); + if (strncasecmp(optarg, "ascii_", 6) == 0) { + nsd.nsid = xalloc(strlen(optarg+6)); + nsd.nsid_len = strlen(optarg+6); + memmove(nsd.nsid, optarg+6, nsd.nsid_len); + } else { + if (strlen(optarg) % 2 != 0) { + error("the NSID must be a hex string of an even length."); + } + nsd.nsid = xalloc(strlen(optarg) / 2); + nsd.nsid_len = strlen(optarg) / 2; + if (hex_pton(optarg, nsd.nsid, nsd.nsid_len) == -1) { + error("hex string cannot be parsed '%s' in NSID.", optarg); + } } break; case 'l': diff --git a/usr.sbin/nsd/nsd.conf.5.in b/usr.sbin/nsd/nsd.conf.5.in index ab80e005296..38296c2ea0a 100644 --- a/usr.sbin/nsd/nsd.conf.5.in +++ b/usr.sbin/nsd/nsd.conf.5.in @@ -1,4 +1,4 @@ -.TH "nsd.conf" "5" "Oct 29, 2013" "NLnet Labs" "nsd 4.0.0" +.TH "nsd.conf" "5" "Jan 27, 2014" "NLnet Labs" "nsd 4.0.1" .\" Copyright (c) 2001\-2008, NLnet Labs. All rights reserved. .\" See LICENSE for the license. .SH "NAME" @@ -116,6 +116,9 @@ to bind multiple ip\-addresses. Optionally, a port number can be given. If none are given NSD listens to the wildcard interface. Same as commandline option .BR \-a. .TP +.B interface:\fR <ip4 or ip6>[@port] +Same as ip\-address (for easy of compatibility with unbound.conf). +.TP .B ip\-transparent:\fR <yes or no> Allows NSD to bind to non local addresses. Default is no. .TP @@ -153,7 +156,8 @@ commandline option .TP .B nsid:\fR <string> Add the specified nsid to the EDNS section of the answer when queried -with an NSID EDNS enabled packet. Same as commandline option +with an NSID EDNS enabled packet. As a sequence of hex characters or +with ascii_ prefix and then an ascii string. Same as commandline option .BR \-I . .TP .B logfile:\fR <filename> diff --git a/usr.sbin/nsd/rdata.c b/usr.sbin/nsd/rdata.c index d1ccc6effdf..9d01c6c28dd 100644 --- a/usr.sbin/nsd/rdata.c +++ b/usr.sbin/nsd/rdata.c @@ -98,9 +98,9 @@ rdata_dns_name_to_string(buffer_type *output, rdata_atom_type rdata, if (ch=='.' || ch==';' || ch=='(' || ch==')' || ch=='\\') { buffer_printf(output, "\\%c", (char) ch); - } else if (!isgraph((int) ch)) { + } else if (!isgraph((int)(unsigned char) ch)) { buffer_printf(output, "\\%03u", (unsigned int) ch); - } else if (isprint((int) ch)) { + } else if (isprint((int)(unsigned char) ch)) { buffer_printf(output, "%c", (char) ch); } else { buffer_printf(output, "\\%03u", (unsigned int) ch); @@ -127,7 +127,7 @@ rdata_text_to_string(buffer_type *output, rdata_atom_type rdata, buffer_printf(output, "\""); for (i = 1; i <= length; ++i) { char ch = (char) data[i]; - if (isprint((int)ch)) { + if (isprint((int)(unsigned char)ch)) { if (ch == '"' || ch == '\\') { buffer_printf(output, "\\"); } @@ -153,7 +153,7 @@ rdata_texts_to_string(buffer_type *output, rdata_atom_type rdata, buffer_printf(output, "\""); for (i = 1; i <= data[pos]; ++i) { char ch = (char) data[pos + i]; - if (isprint((int)ch)) { + if (isprint((int)(unsigned char)ch)) { if (ch == '"' || ch == '\\') { buffer_printf(output, "\\"); } @@ -169,6 +169,46 @@ rdata_texts_to_string(buffer_type *output, rdata_atom_type rdata, } static int +rdata_long_text_to_string(buffer_type *output, rdata_atom_type rdata, + rr_type* ATTR_UNUSED(rr)) +{ + const uint8_t *data = rdata_atom_data(rdata); + uint16_t length = rdata_atom_size(rdata); + size_t i; + + buffer_printf(output, "\""); + for (i = 0; i < length; ++i) { + char ch = (char) data[i]; + if (isprint((int)(unsigned char)ch)) { + if (ch == '"' || ch == '\\') { + buffer_printf(output, "\\"); + } + buffer_printf(output, "%c", ch); + } else { + buffer_printf(output, "\\%03u", (unsigned) data[i]); + } + } + buffer_printf(output, "\""); + return 1; +} + +static int +rdata_tag_to_string(buffer_type *output, rdata_atom_type rdata, + rr_type* ATTR_UNUSED(rr)) +{ + const uint8_t *data = rdata_atom_data(rdata); + uint8_t length = data[0]; + size_t i; + for (i = 1; i <= length; ++i) { + char ch = (char) data[i]; + if (isdigit((int)ch) || islower((int)ch)) + buffer_printf(output, "%c", ch); + else return 0; + } + return 1; +} + +static int rdata_byte_to_string(buffer_type *output, rdata_atom_type rdata, rr_type* ATTR_UNUSED(rr)) { @@ -235,7 +275,6 @@ rdata_ilnp64_to_string(buffer_type *output, rdata_atom_type rdata, return 1; } -#ifdef DRAFT_RRTYPES static int rdata_eui48_to_string(buffer_type *output, rdata_atom_type rdata, rr_type* ATTR_UNUSED(rr)) @@ -271,7 +310,6 @@ rdata_eui64_to_string(buffer_type *output, rdata_atom_type rdata, a1, a2, a3, a4, a5, a6, a7, a8); return 1; } -#endif static int rdata_rrtype_to_string(buffer_type *output, rdata_atom_type rdata, @@ -631,10 +669,10 @@ static rdata_to_string_type rdata_to_string_table[RDATA_ZF_UNKNOWN + 1] = { rdata_nsec_to_string, rdata_loc_to_string, rdata_ilnp64_to_string, -#ifdef DRAFT_RRTYPES rdata_eui48_to_string, rdata_eui64_to_string, -#endif + rdata_long_text_to_string, + rdata_tag_to_string, rdata_unknown_to_string }; @@ -694,7 +732,8 @@ rdata_wireformat_to_rdata_atoms(region_type *region, length = sizeof(uint32_t); break; case RDATA_WF_TEXTS: - length = data_size; + case RDATA_WF_LONG_TEXT: + length = end - buffer_position(packet); break; case RDATA_WF_TEXT: case RDATA_WF_BINARYWITHLENGTH: @@ -713,13 +752,12 @@ rdata_wireformat_to_rdata_atoms(region_type *region, case RDATA_WF_ILNP64: length = IP6ADDRLEN/2; break; -#ifdef DRAFT_RRTYPES case RDATA_WF_EUI48: length = EUI48ADDRLEN; + break; case RDATA_WF_EUI64: length = EUI64ADDRLEN; break; -#endif case RDATA_WF_BINARY: /* Remaining RDATA is binary. */ length = end - buffer_position(packet); diff --git a/usr.sbin/nsd/server.c b/usr.sbin/nsd/server.c index 33b3fb88666..936687fe349 100644 --- a/usr.sbin/nsd/server.c +++ b/usr.sbin/nsd/server.c @@ -674,7 +674,7 @@ server_prepare(struct nsd *nsd) /* NULL for taskudb because we send soainfo in a moment, batched up, * for all zones */ if(nsd->options->zonefiles_check) - namedb_check_zonefiles(nsd->db, nsd->options, NULL, NULL); + namedb_check_zonefiles(nsd, nsd->options, NULL, NULL); compression_table_capacity = 0; initialize_dname_compression_tables(nsd); @@ -866,7 +866,7 @@ add_all_soa_to_task(struct nsd* nsd, struct udb_base* taskudb) /* add all SOA INFO to mytask */ udb_ptr_init(&task_last, taskudb); for(n=radix_first(nsd->db->zonetree); n; n=radix_next(n)) { - task_new_soainfo(taskudb, &task_last, (zone_type*)n->elem); + task_new_soainfo(taskudb, &task_last, (zone_type*)n->elem, 0); } udb_ptr_unlink(&task_last, taskudb); } @@ -1826,7 +1826,10 @@ handle_udp(int fd, short event, void* arg) while(i<recvcount) { sent = sendmmsg(fd, &msgs[i], recvcount-i, 0); if(sent == -1) { - log_msg(LOG_ERR, "sendmmsg failed: %s", strerror(errno)); + const char* es = strerror(errno); + char a[48]; + addr2str(&queries[i]->addr, a, sizeof(a)); + log_msg(LOG_ERR, "sendmmsg [0]=%s count=%d failed: %s", a, (int)(recvcount-i), es); #ifdef BIND8_STATS data->nsd->st.txerr += recvcount-i; #endif /* BIND8_STATS */ @@ -1937,7 +1940,10 @@ handle_udp(int fd, short event, void* arg) (struct sockaddr *) &q->addr, q->addrlen); if (sent == -1) { - log_msg(LOG_ERR, "sendto failed: %s", strerror(errno)); + const char* es = strerror(errno); + char a[48]; + addr2str(&q->addr, a, sizeof(a)); + log_msg(LOG_ERR, "sendto %s failed: %s", a, es); STATUP(data->nsd, txerr); } else if ((size_t) sent != buffer_remaining(q->packet)) { log_msg(LOG_ERR, "sent %d in place of %d bytes", sent, (int) buffer_remaining(q->packet)); diff --git a/usr.sbin/nsd/util.c b/usr.sbin/nsd/util.c index bb016544b52..6b58b7472b5 100644 --- a/usr.sbin/nsd/util.c +++ b/usr.sbin/nsd/util.c @@ -243,8 +243,11 @@ xalloc(size_t size) void * xalloc_zero(size_t size) { - void *result = xalloc(size); - memset(result, 0, size); + void *result = calloc(1, size); + if (!result) { + log_msg(LOG_ERR, "calloc failed: %s", strerror(errno)); + exit(1); + } return result; } diff --git a/usr.sbin/nsd/xfrd-disk.c b/usr.sbin/nsd/xfrd-disk.c index 3b5e0120dd6..94ac93e3133 100644 --- a/usr.sbin/nsd/xfrd-disk.c +++ b/usr.sbin/nsd/xfrd-disk.c @@ -445,7 +445,7 @@ xfrd_write_state(struct xfrd_state* xfrd) fprintf(out, "\tnext_timeout: %d", (zone->zone_handler_flags&EV_TIMEOUT)?(int)zone->timeout.tv_sec:0); if((zone->zone_handler_flags&EV_TIMEOUT)) { - neato_timeout(out, "\t# =", zone->timeout.tv_sec - xfrd_time()); + neato_timeout(out, "\t# =", zone->timeout.tv_sec); } fprintf(out, "\n"); xfrd_write_state_soa(out, "soa_nsd", &zone->soa_nsd, diff --git a/usr.sbin/nsd/xfrd-tcp.c b/usr.sbin/nsd/xfrd-tcp.c index a61ac95fdfa..0b7d7b4cafe 100644 --- a/usr.sbin/nsd/xfrd-tcp.c +++ b/usr.sbin/nsd/xfrd-tcp.c @@ -756,6 +756,10 @@ conn_read(xfrd_tcp_t* tcp) assert(tcp->total_bytes == sizeof(tcp->msglen)); tcp->msglen = ntohs(tcp->msglen); + if(tcp->msglen == 0) { + buffer_set_limit(tcp->packet, tcp->msglen); + return 1; + } if(tcp->msglen > buffer_capacity(tcp->packet)) { log_msg(LOG_ERR, "buffer too small, dropping connection"); return 0; diff --git a/usr.sbin/nsd/xfrd.c b/usr.sbin/nsd/xfrd.c index e4788163eb6..166f6a9fac3 100644 --- a/usr.sbin/nsd/xfrd.c +++ b/usr.sbin/nsd/xfrd.c @@ -1166,7 +1166,15 @@ xfrd_udp_read(xfrd_zone_t* zone) { DEBUG(DEBUG_XFRD,1, (LOG_INFO, "xfrd: zone %s read udp data", zone->apex_str)); if(!xfrd_udp_read_packet(xfrd->packet, zone->zone_handler.ev_fd)) { + zone->master->bad_xfr_count++; + if (zone->master->bad_xfr_count > 2) { + zone->master->ixfr_disabled = time(NULL); + zone->master->bad_xfr_count = 0; + } + /* drop packet */ xfrd_udp_release(zone); + /* query next server */ + xfrd_make_request(zone); return; } switch(xfrd_handle_received_xfr_packet(zone, xfrd->packet)) { diff --git a/usr.sbin/nsd/zonec.c b/usr.sbin/nsd/zonec.c index ca06832e237..9fad2e097b7 100644 --- a/usr.sbin/nsd/zonec.c +++ b/usr.sbin/nsd/zonec.c @@ -236,7 +236,7 @@ zparser_conv_services(region_type *region, const char *protostr, r = alloc_rdata(region, sizeof(uint8_t) + max_port / 8 + 1); p = (uint8_t *) (r + 1); *p = proto->p_proto; - memcpy(p + 1, bitmap, *r); + memcpy(p + 1, bitmap, *r-1); return r; } @@ -451,7 +451,6 @@ zparser_conv_ilnp64(region_type *region, const char *text) return r; } -#ifdef DRAFT_RRTYPES static uint16_t * zparser_conv_eui48(region_type *region, const char *text) { @@ -541,7 +540,6 @@ zparser_conv_eui(region_type *region, const char *text, size_t len) } return r; } -#endif uint16_t * zparser_conv_text(region_type *region, const char *text, size_t len) @@ -561,6 +559,50 @@ zparser_conv_text(region_type *region, const char *text, size_t len) return r; } +/* for CAA Value [RFC 6844] */ +uint16_t * +zparser_conv_long_text(region_type *region, const char *text, size_t len) +{ + uint16_t *r = NULL; + if (len > MAX_RDLENGTH) { + zc_error_prev_line("text string is longer than max rdlen"); + return NULL; + } + r = alloc_rdata_init(region, text, len); + return r; +} + +/* for CAA Tag [RFC 6844] */ +uint16_t * +zparser_conv_tag(region_type *region, const char *text, size_t len) +{ + uint16_t *r = NULL; + uint8_t *p; + const char* ptr; + + if (len < 1) { + zc_error_prev_line("invalid tag: zero length"); + return NULL; + } + if (len > 15) { + zc_error_prev_line("invalid tag %s: longer than 15 characters (%u)", + text, (unsigned) len); + return NULL; + } + for (ptr = text; *ptr; ptr++) { + if (!isdigit(*ptr) && !islower(*ptr)) { + zc_error_prev_line("invalid tag %s: contains invalid char %c", + text, *ptr); + return NULL; + } + } + r = alloc_rdata(region, len + 1); + p = (uint8_t *) (r + 1); + *p = len; + memmove(p + 1, text, len); + return r; +} + uint16_t * zparser_conv_dns_name(region_type *region, const uint8_t* name, size_t len) { diff --git a/usr.sbin/nsd/zonec.h b/usr.sbin/nsd/zonec.h index ca3ce7fa81e..4057b12cf36 100644 --- a/usr.sbin/nsd/zonec.h +++ b/usr.sbin/nsd/zonec.h @@ -96,10 +96,10 @@ uint16_t *zparser_conv_byte(region_type *region, const char *text); uint16_t *zparser_conv_a(region_type *region, const char *text); uint16_t *zparser_conv_aaaa(region_type *region, const char *text); uint16_t *zparser_conv_ilnp64(region_type *region, const char *text); -#ifdef DRAFT_RRTYPES uint16_t *zparser_conv_eui(region_type *region, const char *text, size_t len); -#endif uint16_t *zparser_conv_text(region_type *region, const char *text, size_t len); +uint16_t *zparser_conv_long_text(region_type *region, const char *text, size_t len); +uint16_t *zparser_conv_tag(region_type *region, const char *text, size_t len); uint16_t *zparser_conv_dns_name(region_type *region, const uint8_t* name, size_t len); uint16_t *zparser_conv_b32(region_type *region, const char *b32); uint16_t *zparser_conv_b64(region_type *region, const char *b64); diff --git a/usr.sbin/nsd/zparser.y b/usr.sbin/nsd/zparser.y index 28cd4a676be..63c40d5e188 100644 --- a/usr.sbin/nsd/zparser.y +++ b/usr.sbin/nsd/zparser.y @@ -67,7 +67,7 @@ nsec3_add_params(const char* hash_algo_str, const char* flag_str, %token <type> T_OPT T_APL T_UINFO T_UID T_GID T_UNSPEC T_TKEY T_TSIG T_IXFR %token <type> T_AXFR T_MAILB T_MAILA T_DS T_DLV T_SSHFP T_RRSIG T_NSEC T_DNSKEY %token <type> T_SPF T_NSEC3 T_IPSECKEY T_DHCID T_NSEC3PARAM T_TLSA -%token <type> T_NID T_L32 T_L64 T_LP T_EUI48 T_EUI64 +%token <type> T_NID T_L32 T_L64 T_LP T_EUI48 T_EUI64 T_CAA /* other tokens */ %token DOLLAR_TTL DOLLAR_ORIGIN NL SP @@ -612,6 +612,8 @@ type_and_rdata: | T_EUI48 sp rdata_unknown { $$ = $1; parse_unknown_rdata($1, $3); } | T_EUI64 sp rdata_eui64 | T_EUI64 sp rdata_unknown { $$ = $1; parse_unknown_rdata($1, $3); } + | T_CAA sp rdata_caa + | T_CAA sp rdata_unknown { $$ = $1; parse_unknown_rdata($1, $3); } | T_UTYPE sp rdata_unknown { $$ = $1; parse_unknown_rdata($1, $3); } | STR error NL { @@ -995,21 +997,22 @@ rdata_lp: STR sp dname trail rdata_eui48: STR trail { -#ifdef DRAFT_RRTYPES zadd_rdata_wireformat(zparser_conv_eui(parser->region, $1.str, 48)); -#else - zc_error_prev_line("EUI48 not supported, enable with --enable-draft-rrtypes."); -#endif } ; rdata_eui64: STR trail { -#ifdef DRAFT_RRTYPES zadd_rdata_wireformat(zparser_conv_eui(parser->region, $1.str, 64)); -#else - zc_error_prev_line("EUI64 not supported, enable with --enable-draft-rrtypes."); -#endif + } + ; + +/* RFC 6844 */ +rdata_caa: STR sp STR sp STR trail + { + zadd_rdata_wireformat(zparser_conv_byte(parser->region, $1.str)); /* Flags */ + zadd_rdata_wireformat(zparser_conv_tag(parser->region, $3.str, $3.len)); /* Tag */ + zadd_rdata_wireformat(zparser_conv_long_text(parser->region, $5.str, $5.len)); /* Value */ } ; |