git: fcceccb7d405 - main - dns/bind911: restore port

From: Rene Ladan <rene_at_FreeBSD.org>
Date: Sat, 01 Jan 2022 14:09:42 UTC
The branch main has been updated by rene:

URL: https://cgit.FreeBSD.org/ports/commit/?id=fcceccb7d405aae9c524a4f8e52b3f53c9e69cd0

commit fcceccb7d405aae9c524a4f8e52b3f53c9e69cd0
Author:     Rene Ladan <rene@FreeBSD.org>
AuthorDate: 2022-01-01 13:36:09 +0000
Commit:     Rene Ladan <rene@FreeBSD.org>
CommitDate: 2022-01-01 13:49:17 +0000

    dns/bind911: restore port
    
    It is still in extended security mode, see
    https://www.isc.org/blogs/bind-update-summer2021/
    
    Reported by:    yasu
---
 MOVED                                              |   1 -
 dns/Makefile                                       |   1 +
 dns/bind911/Makefile                               | 259 ++++++++++++
 dns/bind911/distinfo                               |   3 +
 dns/bind911/files/BIND.chroot.dist                 |  24 ++
 dns/bind911/files/BIND.chroot.local.dist           |  18 +
 dns/bind911/files/empty.db                         |   8 +
 dns/bind911/files/extrapatch-bind-min-override-ttl |  76 ++++
 dns/bind911/files/extrapatch-interfacemgr.c        |  14 +
 dns/bind911/files/localhost-forward.db             |   8 +
 dns/bind911/files/localhost-reverse.db             |  10 +
 dns/bind911/files/named.conf.in                    | 378 +++++++++++++++++
 dns/bind911/files/named.in                         | 448 +++++++++++++++++++++
 dns/bind911/files/named.root                       |  92 +++++
 .../files/patch-bin_named_include_named_globals.h  |  13 +
 .../patch-bin_tests_system_dlzexternal_Makefile.in |  13 +
 dns/bind911/files/patch-configure                  | 135 +++++++
 dns/bind911/files/patch-no-bind-tools              |  55 +++
 dns/bind911/files/pkg-message.in                   |  22 +
 dns/bind911/pkg-descr                              |  15 +
 dns/bind911/pkg-help                               |  28 ++
 dns/bind911/pkg-plist                              | 402 ++++++++++++++++++
 22 files changed, 2022 insertions(+), 1 deletion(-)

diff --git a/MOVED b/MOVED
index c2e6416a58ba..22cdab471915 100644
--- a/MOVED
+++ b/MOVED
@@ -16704,7 +16704,6 @@ java/intellij-rubymine|devel/rubymine|2021-12-31|Use better name and category
 lang/python36||2021-12-31|Has expired: Upgrade to a newer Python version. 3.6 is in maintenance status and gets security fixes only. End-of-Life: 2021-12-23. See https://devguide.python.org/
 devel/sdl_sge||2021-12-31|Has expired: Upstream no longer maintained
 net/appkonference||2021-12-31|Has expired: Outdated, depends on unsupported version of net/asterisk
-dns/bind911|dns/bind916|2021-12-31|Has expired: End of life, please migrate to a newer version of BIND9
 net/zebra||2021-12-31|Has expired: Abandoned upstream, last release in 2005. Consider migrating to net/frr7 or net/bird2
 audio/osalp||2021-12-31|Has expired: Abandoned upstream, listed as beta and no new release since 2008
 games/stransball2||2021-12-31|Has expired: Depends on expired devel/sdl_sge
diff --git a/dns/Makefile b/dns/Makefile
index 69875fe86ee9..4e25a4727b03 100644
--- a/dns/Makefile
+++ b/dns/Makefile
@@ -7,6 +7,7 @@
     SUBDIR += axfr2acl
     SUBDIR += bind-tools
     SUBDIR += bind9-devel
+    SUBDIR += bind911
     SUBDIR += bind916
     SUBDIR += bindgraph
     SUBDIR += blocky
diff --git a/dns/bind911/Makefile b/dns/bind911/Makefile
new file mode 100644
index 000000000000..52c3483588ba
--- /dev/null
+++ b/dns/bind911/Makefile
@@ -0,0 +1,259 @@
+# pkg-help formatted with fmt 59 63
+
+PORTNAME=	bind
+PORTVERSION=	${ISCVERSION:S/-P/P/:S/b/.b/:S/a/.a/:S/rc/.rc/}
+PORTREVISION=	0
+CATEGORIES=	dns net
+MASTER_SITES=	ISC/bind9/${ISCVERSION}
+PKGNAMESUFFIX=	911
+DISTNAME=	${PORTNAME}-${ISCVERSION}
+
+MAINTAINER=	mat@FreeBSD.org
+COMMENT=	BIND DNS suite with updated DNSSEC and DNS64
+
+LICENSE=	MPL20
+LICENSE_FILE=	${WRKSRC}/COPYRIGHT
+
+DEPRECATED=	End of life, please migrate to a newer version of BIND9
+EXPIRATION_DATE=	2021-12-31
+
+LIB_DEPENDS=	libxml2.so:textproc/libxml2
+RUN_DEPENDS=	bind-tools>0:dns/bind-tools
+
+USES=	cpe libedit pkgconfig
+
+# ISC releases things like 9.8.0-P1, which our versioning doesn't like
+ISCVERSION=	9.11.36
+
+CPE_VENDOR=	isc
+CPE_VERSION=	${ISCVERSION:C/-.*//}
+.if ${ISCVERSION:M*-*}
+CPE_UPDATE=	${ISCVERSION:C/.*-//:tl}
+.endif
+
+GNU_CONFIGURE=	yes
+CONFIGURE_ARGS=	--localstatedir=/var --disable-linux-caps \
+		--with-randomdev=/dev/random \
+		--with-libxml2=${LOCALBASE} \
+		--with-readline="-L${LOCALBASE}/lib -ledit" \
+		--with-dlopen=yes \
+		--with-gost=no \
+		--without-python \
+		--sysconfdir=${ETCDIR}
+ETCDIR=		${PREFIX}/etc/namedb
+
+CONFLICTS=	bind912 bind913 bind914 bind916 bind9-devel
+
+SUB_FILES=	pkg-message named.conf
+USE_RC_SUBR=	named
+
+MAKE_JOBS_UNSAFE=	yes
+
+PORTDOCS=	*
+
+OPTIONS_DEFAULT=	SSL THREADS SIGCHASE IDN GSSAPI_NONE JSON \
+			DLZ_FILESYSTEM LMDB RPZ_NSDNAME RPZ_NSIP TCP_FASTOPEN \
+			FILTER_AAAA DNSTAP
+OPTIONS_DEFINE=		ACCFDNS IDN LARGE_FILE JSON GEOIP \
+			FIXED_RRSET SIGCHASE IPV6 THREADS FILTER_AAAA \
+			RPZ_NSIP RPZ_NSDNAME DOCS \
+			MINCACHE PORTREVISION QUERYTRACE LMDB DNSTAP \
+			START_LATE TUNING_LARGE TCP_FASTOPEN
+
+OPTIONS_RADIO=	CRYPTO
+OPTIONS_RADIO_CRYPTO=	SSL NATIVE_PKCS11
+
+OPTIONS_GROUP=		DLZ
+OPTIONS_GROUP_DLZ=	DLZ_POSTGRESQL DLZ_MYSQL DLZ_BDB \
+			DLZ_LDAP DLZ_FILESYSTEM DLZ_STUB
+OPTIONS_SINGLE=		GSSAPI
+OPTIONS_SINGLE_GSSAPI=	GSSAPI_BASE GSSAPI_HEIMDAL GSSAPI_MIT GSSAPI_NONE
+
+OPTIONS_SUB=	yes
+
+ACCFDNS_DESC=		Prefer DNS accept filter over generic one
+CRYPTO_DESC=		Choose which crypto engine to use
+DLZ_BDB_DESC=		DLZ BDB driver
+DLZ_DESC=		Dynamically Loadable Zones
+DLZ_FILESYSTEM_DESC=	DLZ filesystem driver
+DLZ_LDAP_DESC=		DLZ LDAP driver
+DLZ_MYSQL_DESC=		DLZ MySQL driver (no threading)
+DLZ_POSTGRESQL_DESC=	DLZ Postgres driver
+DLZ_STUB_DESC=		DLZ stub driver
+DNSTAP_DESC=		Provides fast passive logging of DNS messages
+FILTER_AAAA_DESC=	Enable filtering of AAAA records
+FIXED_RRSET_DESC=	Enable fixed rrset ordering
+GSSAPI_BASE_DESC=	Using Heimdal in base
+GSSAPI_HEIMDAL_DESC=	Using security/heimdal
+GSSAPI_MIT_DESC=	Using security/krb5
+GSSAPI_NONE_DESC=	Disable
+LARGE_FILE_DESC=	64-bit file support
+LMDB_DESC=		Use LMDB for zone management
+MINCACHE_DESC=		Use the mincachettl patch
+NATIVE_PKCS11_DESC=	Use PKCS\#11 native API (**READ HELP**)
+PORTREVISION_DESC=	Show PORTREVISION in the version string
+QUERYTRACE_DESC=	Enable the very verbose query tracelogging
+RPZ_NSDNAME_DESC=	Enable RPZ NSDNAME policy records
+RPZ_NSIP_DESC=		Enable RPZ NSIP trigger rules
+SIGCHASE_DESC=		dig/host/nslookup will do DNSSEC validation
+SSL_DESC=		Build with OpenSSL (Required for DNSSEC)
+START_LATE_DESC=	Start BIND late in the boot process (see help)
+TCP_FASTOPEN_DESC=	RFC 7413 support
+TUNING_LARGE_DESC=	Tune named for large systems (**READ HELP**)
+
+ACCFDNS_EXTRA_PATCHES=	${PATCHDIR}/extrapatch-interfacemgr.c
+	
+DLZ_BDB_CONFIGURE_ON=	--with-dlz-bdb=yes
+DLZ_BDB_USES=		bdb
+
+DLZ_FILESYSTEM_CONFIGURE_ON=	--with-dlz-filesystem=yes
+
+DLZ_LDAP_CONFIGURE_ON=	--with-dlz-ldap=yes
+DLZ_LDAP_USE=		openldap=yes
+
+DLZ_MYSQL_CONFIGURE_ON=	--with-dlz-mysql=yes
+DLZ_MYSQL_PREVENTS=	THREADS
+DLZ_MYSQL_USES=		mysql
+
+DLZ_POSTGRESQL_CONFIGURE_ON=	--with-dlz-postgres=yes
+DLZ_POSTGRESQL_USES=		pgsql
+
+DLZ_STUB_CONFIGURE_ON=	--with-dlz-stub=yes
+
+DNSTAP_CONFIGURE_ENABLE=	dnstap
+DNSTAP_IMPLIES=		THREADS
+DNSTAP_LIB_DEPENDS=	libfstrm.so:devel/fstrm \
+			libprotobuf-c.so:devel/protobuf-c
+
+FILTER_AAAA_CONFIGURE_ENABLE=	filter-aaaa
+
+FIXED_RRSET_CONFIGURE_ENABLE=	fixed-rrset
+
+GEOIP_CONFIGURE_WITH=	geoip2
+GEOIP_LIB_DEPENDS=	libmaxminddb.so:net/libmaxminddb
+GEOIP_IMPLIES=		THREADS
+
+GSSAPI_BASE_CONFIGURE_ON=\
+	--with-gssapi=${GSSAPIBASEDIR} KRB5CONFIG="${KRB5CONFIG}"
+GSSAPI_BASE_USES=	gssapi
+
+GSSAPI_HEIMDAL_CONFIGURE_ON=\
+	--with-gssapi=${GSSAPIBASEDIR} KRB5CONFIG="${KRB5CONFIG}"
+GSSAPI_HEIMDAL_USES=	gssapi:heimdal
+
+GSSAPI_MIT_CONFIGURE_ON=\
+	--with-gssapi=${GSSAPIBASEDIR} KRB5CONFIG="${KRB5CONFIG}"
+GSSAPI_MIT_USES=	gssapi:mit
+
+GSSAPI_NONE_CONFIGURE_ON=	--without-gssapi
+
+IDN_CONFIGURE_OFF=	--without-libidn2
+IDN_CONFIGURE_ON=	--with-libidn2=${LOCALBASE} ${ICONV_CONFIGURE_BASE}
+IDN_LIB_DEPENDS=	libidn2.so:dns/libidn2
+IDN_USES=		iconv
+
+IPV6_CONFIGURE_ENABLE=	ipv6
+
+JSON_CONFIGURE_WITH=	libjson=${LOCALBASE}
+JSON_LIB_DEPENDS=	libjson-c.so:devel/json-c
+
+LARGE_FILE_CONFIGURE_ENABLE=	largefile
+
+LMDB_CONFIGURE_WITH=	lmdb=${LOCALBASE}
+LMDB_LIB_DEPENDS=	liblmdb.so:databases/lmdb
+
+MINCACHE_EXTRA_PATCHES=	${FILESDIR}/extrapatch-bind-min-override-ttl
+
+NATIVE_PKCS11_CONFIGURE_ENABLE=	native-pkcs11
+NATIVE_PKCS11_IMPLIES=	THREADS
+
+QUERYTRACE_CONFIGURE_ENABLE=	querytrace
+
+RPZ_NSDNAME_CONFIGURE_ENABLE=	rpz-nsdname
+
+RPZ_NSIP_CONFIGURE_ENABLE=	rpz-nsip
+
+SIGCHASE_CONFIGURE_ON=	STD_CDEFINES="-DDIG_SIGCHASE=1"
+
+SSL_CONFIGURE_OFF=	--disable-openssl-version-check --without-openssl
+SSL_CONFIGURE_ON=	--with-openssl=${OPENSSLBASE}
+SSL_USES=		ssl
+
+START_LATE_SUB_LIST=	NAMED_REQUIRE="SERVERS cleanvar" \
+			NAMED_BEFORE="LOGIN"
+START_LATE_SUB_LIST_OFF=NAMED_REQUIRE="NETWORKING ldconfig syslogd" \
+			NAMED_BEFORE="SERVERS"
+
+THREADS_CONFIGURE_ENABLE=	threads
+
+TUNING_LARGE_IMPLIES=	THREADS
+TUNING_LARGE_CONFIGURE_ON=	--with-tuning=large
+TUNING_LARGE_CONFIGURE_OFF=	--with-tuning=default
+
+.include <bsd.port.options.mk>
+
+.if defined(WITH_DEBUG)
+CONFIGURE_ARGS+=	--enable-symtable \
+			--enable-developer
+USES+=	perl5
+USE_PERL5=	build
+BUILD_DEPENDS+=	cmocka>0:sysutils/cmocka
+# Developer mode needs ssl, always
+.if !${PORT_OPTIONS:MSSL}
+CONFIGURE_ARGS+=	--with-openssl=${OPENSSLBASE}
+USES+=		ssl
+.endif
+.else
+CONFIGURE_ARGS+=	--disable-symtable
+.endif
+
+.include <bsd.port.pre.mk>
+
+.if ${SSL_DEFAULT} == base
+SUB_LIST+=	ENGINES=/usr/lib/engines
+.else
+SUB_LIST+=	ENGINES=${LOCALBASE}/lib/engines
+.endif
+
+post-patch:
+.for FILE in check/named-checkconf.8 named/named.8 nsupdate/nsupdate.1 \
+	rndc/rndc.8
+	@${REINPLACE_CMD} -e 's#/etc/named.conf#${ETCDIR}/named.conf#g' \
+		-e 's#/etc/rndc.conf#${ETCDIR}/rndc.conf#g' \
+		-e "s#/var\/run\/named\/named.pid#/var/run/named/pid#" \
+		${WRKSRC}/bin/${FILE}
+.endfor
+
+.if ${PORTREVISION:N0}
+post-patch-PORTREVISION-on:
+	@${REINPLACE_CMD} -e '/EXTENSIONS/s#=$$#=_${PORTREVISION}#' \
+		${WRKSRC}/version
+.endif
+
+post-patch-TCP_FASTOPEN-off:
+	@${REINPLACE_CMD} -e 's/#define ISC_PLATFORM_HAVETFO 1/#undef ISC_PLATFORM_HAVETFO/' ${WRKSRC}/configure
+
+post-install:
+	${MKDIR} ${STAGEDIR}${PREFIX}/etc/mtree
+	${MKDIR} ${STAGEDIR}${ETCDIR}
+.for i in dynamic master slave working
+	@${MKDIR} ${STAGEDIR}${ETCDIR}/$i
+.endfor
+	${INSTALL_DATA} ${WRKDIR}/named.conf ${STAGEDIR}${ETCDIR}/named.conf.sample
+	${INSTALL_DATA} ${FILESDIR}/named.root ${STAGEDIR}${ETCDIR}
+	${INSTALL_DATA} ${FILESDIR}/empty.db ${STAGEDIR}${ETCDIR}/master
+	${INSTALL_DATA} ${FILESDIR}/localhost-forward.db ${STAGEDIR}${ETCDIR}/master
+	${INSTALL_DATA} ${FILESDIR}/localhost-reverse.db ${STAGEDIR}${ETCDIR}/master
+	${INSTALL_DATA} ${FILESDIR}/BIND.chroot.dist ${STAGEDIR}${PREFIX}/etc/mtree/BIND.chroot.dist.sample
+	${INSTALL_DATA} ${FILESDIR}/BIND.chroot.local.dist ${STAGEDIR}${PREFIX}/etc/mtree/BIND.chroot.local.dist.sample
+	${INSTALL_DATA} ${WRKSRC}/bin/rndc/rndc.conf \
+		${STAGEDIR}${ETCDIR}/rndc.conf.sample
+
+post-install-DOCS-on:
+	${MKDIR} ${STAGEDIR}${DOCSDIR}/arm
+	${INSTALL_DATA} ${WRKSRC}/doc/arm/*.html ${STAGEDIR}${DOCSDIR}/arm
+	${INSTALL_DATA} ${WRKSRC}/doc/arm/Bv9ARM.pdf ${STAGEDIR}${DOCSDIR}
+	${INSTALL_DATA} ${WRKSRC}/CHANGES \
+		${WRKSRC}/HISTORY* ${WRKSRC}/README* ${STAGEDIR}${DOCSDIR}
+
+.include <bsd.port.post.mk>
diff --git a/dns/bind911/distinfo b/dns/bind911/distinfo
new file mode 100644
index 000000000000..5af44adcefb6
--- /dev/null
+++ b/dns/bind911/distinfo
@@ -0,0 +1,3 @@
+TIMESTAMP = 1635400901
+SHA256 (bind-9.11.36.tar.gz) = c953fcb6703b395aaa53e65ff8b2869b69a5303dd60507cba2201305e1811681
+SIZE (bind-9.11.36.tar.gz) = 8313276
diff --git a/dns/bind911/files/BIND.chroot.dist b/dns/bind911/files/BIND.chroot.dist
new file mode 100644
index 000000000000..5616dd712f6b
--- /dev/null
+++ b/dns/bind911/files/BIND.chroot.dist
@@ -0,0 +1,24 @@
+# mtree -deU -f files/BIND.chroot.dist -p tmp
+# mtree -cjnb -k uname,gname,mode -p tmp
+
+/set type=file uname=root gname=wheel mode=0755
+.               type=dir
+    dev             type=dir mode=0555
+    ..
+    etc             type=dir
+    ..
+    tmp             type=dir mode=01777
+    ..
+/set type=file uname=bind gname=bind mode=0755
+    var             type=dir uname=root gname=wheel
+        dump            type=dir
+        ..
+        log             type=dir
+        ..
+        run             type=dir
+            named           type=dir
+            ..
+        ..
+        stats           type=dir
+        ..
+    ..
diff --git a/dns/bind911/files/BIND.chroot.local.dist b/dns/bind911/files/BIND.chroot.local.dist
new file mode 100644
index 000000000000..81fca3df322c
--- /dev/null
+++ b/dns/bind911/files/BIND.chroot.local.dist
@@ -0,0 +1,18 @@
+# mtree -deU -f files/BIND.etc.dist -p tmp
+# mtree -cjnb -k uname,gname,mode -p tmp
+
+/set type=file uname=root gname=wheel mode=0755
+.               type=dir
+    etc             type=dir
+/set type=file uname=bind gname=wheel mode=0755
+        namedb          type=dir uname=root
+            dynamic         type=dir
+            ..
+            master          type=dir uname=root
+            ..
+            slave           type=dir
+            ..
+            working         type=dir
+            ..
+        ..
+    ..
diff --git a/dns/bind911/files/empty.db b/dns/bind911/files/empty.db
new file mode 100644
index 000000000000..30870e74342f
--- /dev/null
+++ b/dns/bind911/files/empty.db
@@ -0,0 +1,8 @@
+$TTL 3h
+@ SOA @ nobody.localhost. 42 1d 12h 1w 3h
+	; Serial, Refresh, Retry, Expire, Neg. cache TTL
+
+@	NS	@
+
+; Silence a BIND warning
+@	A	127.0.0.1
diff --git a/dns/bind911/files/extrapatch-bind-min-override-ttl b/dns/bind911/files/extrapatch-bind-min-override-ttl
new file mode 100644
index 000000000000..1776bb0c6724
--- /dev/null
+++ b/dns/bind911/files/extrapatch-bind-min-override-ttl
@@ -0,0 +1,76 @@
+- Add the min-cache-ttl config knob.
+- Add the override-cache-ttl config knob.
+
+--- bin/named/config.c.orig	2021-05-12 10:45:51 UTC
++++ bin/named/config.c
+@@ -182,6 +182,8 @@ options {\n\
+ "	max-acache-size 16M;\n\
+ 	max-cache-size 90%;\n\
+ 	max-cache-ttl 604800; /* 1 week */\n\
++	min-cache-ttl 0; /* no minimal, zero is allowed */\n\
++	override-cache-ttl 0; /* do not override */\n\
+ 	max-clients-per-query 100;\n\
+ 	max-ncache-ttl 10800; /* 3 hours */\n\
+ 	max-recursion-depth 7;\n\
+--- bin/named/server.c.orig	2021-05-12 10:45:51 UTC
++++ bin/named/server.c
+@@ -3721,6 +3721,16 @@ configure_view(dns_view_t *view, dns_viewlist_t *viewl
+ 	}
+ 
+ 	obj = NULL;
++	result = ns_config_get(maps, "override-cache-ttl", &obj);
++	INSIST(result == ISC_R_SUCCESS);
++	view->overridecachettl = cfg_obj_asuint32(obj);
++
++	obj = NULL;
++	result = ns_config_get(maps, "min-cache-ttl", &obj);
++	INSIST(result == ISC_R_SUCCESS);
++	view->mincachettl = cfg_obj_asuint32(obj);
++
++	obj = NULL;
+ 	result = ns_config_get(maps, "max-cache-ttl", &obj);
+ 	INSIST(result == ISC_R_SUCCESS);
+ 	view->maxcachettl = cfg_obj_asuint32(obj);
+--- lib/dns/include/dns/view.h.orig	2021-05-12 10:45:51 UTC
++++ lib/dns/include/dns/view.h
+@@ -152,6 +152,8 @@ struct dns_view {
+ 	bool			requestnsid;
+ 	bool			sendcookie;
+ 	dns_ttl_t			maxcachettl;
++	dns_ttl_t			mincachettl;
++	dns_ttl_t			overridecachettl;
+ 	dns_ttl_t			maxncachettl;
+ 	uint32_t			nta_lifetime;
+ 	uint32_t			nta_recheck;
+--- lib/dns/resolver.c.orig	2021-05-12 10:45:51 UTC
++++ lib/dns/resolver.c
+@@ -5579,6 +5579,18 @@ cache_name(fetchctx_t *fctx, dns_message_t *rmessage,
+ 		}
+ 
+ 		/*
++		 * Enforce the configure cache TTL override.
++		 */
++                if (res->view->overridecachettl)
++                        rdataset->ttl = res->view->overridecachettl;
++
++		/*
++		 * Enforce the configure minimum cache TTL.
++		 */
++                if (rdataset->ttl < res->view->mincachettl)
++                        rdataset->ttl = res->view->mincachettl;
++
++		/*
+ 		 * Enforce the configure maximum cache TTL.
+ 		 */
+ 		if (rdataset->ttl > res->view->maxcachettl) {
+--- lib/isccfg/namedconf.c.orig	2021-05-12 10:45:51 UTC
++++ lib/isccfg/namedconf.c
+@@ -1773,6 +1773,8 @@ view_clauses[] = {
+ #endif
+ 	{ "max-acache-size", &cfg_type_sizenodefault, 0 },
+ 	{ "max-cache-size", &cfg_type_sizeorpercent, 0 },
++	{ "override-cache-ttl", &cfg_type_uint32, 0 },
++	{ "min-cache-ttl", &cfg_type_uint32, 0 },
+ 	{ "max-cache-ttl", &cfg_type_uint32, 0 },
+ 	{ "max-clients-per-query", &cfg_type_uint32, 0 },
+ 	{ "max-ncache-ttl", &cfg_type_uint32, 0 },
diff --git a/dns/bind911/files/extrapatch-interfacemgr.c b/dns/bind911/files/extrapatch-interfacemgr.c
new file mode 100644
index 000000000000..d579771f6828
--- /dev/null
+++ b/dns/bind911/files/extrapatch-interfacemgr.c
@@ -0,0 +1,14 @@
+Use accf_dns's kernel module if available.
+
+--- bin/named/interfacemgr.c.orig	2020-08-06 10:05:20 UTC
++++ bin/named/interfacemgr.c
+@@ -521,7 +521,8 @@ ns_interface_accepttcp(ns_interface_t *ifp) {
+ 	 * If/when there a multiple filters listen to the
+ 	 * result.
+ 	 */
+-	(void)isc_socket_filter(ifp->tcpsocket, "dataready");
++	if (isc_socket_filter(ifp->tcpsocket, "dnsready") != ISC_R_SUCCESS)
++		(void)isc_socket_filter(ifp->tcpsocket, "dataready");
+ 
+ 	result = ns_clientmgr_createclients(ifp->clientmgr, 1, ifp, true);
+ 	if (result != ISC_R_SUCCESS) {
diff --git a/dns/bind911/files/localhost-forward.db b/dns/bind911/files/localhost-forward.db
new file mode 100644
index 000000000000..fdd2e9ce4bee
--- /dev/null
+++ b/dns/bind911/files/localhost-forward.db
@@ -0,0 +1,8 @@
+$TTL 3h
+localhost. SOA localhost. nobody.localhost. 42 1d 12h 1w 3h
+	; Serial, Refresh, Retry, Expire, Neg. cache TTL
+
+	NS	localhost.
+
+	A	127.0.0.1
+	AAAA	::1
diff --git a/dns/bind911/files/localhost-reverse.db b/dns/bind911/files/localhost-reverse.db
new file mode 100644
index 000000000000..376e94fa94a8
--- /dev/null
+++ b/dns/bind911/files/localhost-reverse.db
@@ -0,0 +1,10 @@
+$TTL 3h
+@ SOA localhost. nobody.localhost. 42 1d 12h 1w 3h
+	; Serial, Refresh, Retry, Expire, Neg. cache TTL
+
+	NS	localhost.
+
+1.0.0	PTR	localhost.
+
+1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0 PTR localhost.
+
diff --git a/dns/bind911/files/named.conf.in b/dns/bind911/files/named.conf.in
new file mode 100644
index 000000000000..c3a367fd23ee
--- /dev/null
+++ b/dns/bind911/files/named.conf.in
@@ -0,0 +1,378 @@
+// Refer to the named.conf(5) and named(8) man pages, and the documentation
+// in /usr/local/share/doc/bind for more details.
+//
+// If you are going to set up an authoritative server, make sure you
+// understand the hairy details of how DNS works.  Even with
+// simple mistakes, you can break connectivity for affected parties,
+// or cause huge amounts of useless Internet traffic.
+
+options {
+	// All file and path names are relative to the chroot directory,
+	// if any, and should be fully qualified.
+	directory	"%%ETCDIR%%/working";
+	pid-file	"/var/run/named/pid";
+	dump-file	"/var/dump/named_dump.db";
+	statistics-file	"/var/stats/named.stats";
+
+// If named is being used only as a local resolver, this is a safe default.
+// For named to be accessible to the network, comment this option, specify
+// the proper IP address, or delete this option.
+	listen-on	{ 127.0.0.1; };
+
+// If you have IPv6 enabled on this system, uncomment this option for
+// use as a local resolver.  To give access to the network, specify
+// an IPv6 address, or the keyword "any".
+//	listen-on-v6	{ ::1; };
+
+// These zones are already covered by the empty zones listed below.
+// If you remove the related empty zones below, comment these lines out.
+	disable-empty-zone "255.255.255.255.IN-ADDR.ARPA";
+	disable-empty-zone "0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
+	disable-empty-zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.IP6.ARPA";
+
+// If you've got a DNS server around at your upstream provider, enter
+// its IP address here, and enable the line below.  This will make you
+// benefit from its cache, thus reduce overall DNS traffic in the Internet.
+/*
+	forwarders {
+		127.0.0.1;
+	};
+*/
+
+// If the 'forwarders' clause is not empty the default is to 'forward first'
+// which will fall back to sending a query from your local server if the name
+// servers in 'forwarders' do not have the answer.  Alternatively you can
+// force your name server to never initiate queries of its own by enabling the
+// following line:
+//	forward only;
+
+// If you wish to have forwarding configured automatically based on
+// the entries in /etc/resolv.conf, uncomment the following line and
+// set named_auto_forward=yes in /etc/rc.conf.  You can also enable
+// named_auto_forward_only (the effect of which is described above).
+//	include "%%ETCDIR%%/auto_forward.conf";
+
+	/*
+	   Modern versions of BIND use a random UDP port for each outgoing
+	   query by default in order to dramatically reduce the possibility
+	   of cache poisoning.  All users are strongly encouraged to utilize
+	   this feature, and to configure their firewalls to accommodate it.
+
+	   AS A LAST RESORT in order to get around a restrictive firewall
+	   policy you can try enabling the option below.  Use of this option
+	   will significantly reduce your ability to withstand cache poisoning
+	   attacks, and should be avoided if at all possible.
+
+	   Replace NNNNN in the example with a number between 49160 and 65530.
+	*/
+	// query-source address * port NNNNN;
+};
+
+// If you enable a local name server, don't forget to enter 127.0.0.1
+// first in your /etc/resolv.conf so this server will be queried.
+// Also, make sure to enable it in /etc/rc.conf.
+
+// The traditional root hints mechanism. Use this, OR the slave zones below.
+zone "." { type hint; file "%%ETCDIR%%/named.root"; };
+
+/*	Slaving the following zones from the root name servers has some
+	significant advantages:
+	1. Faster local resolution for your users
+	2. No spurious traffic will be sent from your network to the roots
+	3. Greater resilience to any potential root server failure/DDoS
+
+	On the other hand, this method requires more monitoring than the
+	hints file to be sure that an unexpected failure mode has not
+	incapacitated your server.  Name servers that are serving a lot
+	of clients will benefit more from this approach than individual
+	hosts.  Use with caution.
+
+	To use this mechanism, uncomment the entries below, and comment
+	the hint zone above.
+
+	As documented at http://dns.icann.org/services/axfr/ these zones:
+	"." (the root), ARPA, IN-ADDR.ARPA, IP6.ARPA, and a few others
+	are available for AXFR from these servers on IPv4 and IPv6:
+	xfr.lax.dns.icann.org, xfr.cjr.dns.icann.org
+*/
+/*
+zone "." {
+	type slave;
+	file "%%ETCDIR%%/slave/root.slave";
+	masters {
+		192.0.32.132;           // lax.xfr.dns.icann.org
+		2620:0:2d0:202::132;    // lax.xfr.dns.icann.org
+		192.0.47.132;           // iad.xfr.dns.icann.org
+		2620:0:2830:202::132;   // iad.xfr.dns.icann.org
+	};
+	notify no;
+};
+zone "arpa" {
+	type slave;
+	file "%%ETCDIR%%/slave/arpa.slave";
+	masters {
+		192.0.32.132;           // lax.xfr.dns.icann.org
+		2620:0:2d0:202::132;    // lax.xfr.dns.icann.org
+		192.0.47.132;           // iad.xfr.dns.icann.org
+		2620:0:2830:202::132;   // iad.xfr.dns.icann.org
+	};
+	notify no;
+};
+zone "in-addr.arpa" {
+	type slave;
+	file "%%ETCDIR%%/slave/in-addr.arpa.slave";
+	masters {
+		192.0.32.132;           // lax.xfr.dns.icann.org
+		2620:0:2d0:202::132;    // lax.xfr.dns.icann.org
+		192.0.47.132;           // iad.xfr.dns.icann.org
+		2620:0:2830:202::132;   // iad.xfr.dns.icann.org
+	};
+	notify no;
+};
+zone "ip6.arpa" {
+	type slave;
+	file "%%ETCDIR%%/slave/ip6.arpa.slave";
+	masters {
+		192.0.32.132;           // lax.xfr.dns.icann.org
+		2620:0:2d0:202::132;    // lax.xfr.dns.icann.org
+		192.0.47.132;           // iad.xfr.dns.icann.org
+		2620:0:2830:202::132;   // iad.xfr.dns.icann.org
+	};
+	notify no;
+};
+*/
+
+/*	Serving the following zones locally will prevent any queries
+	for these zones leaving your network and going to the root
+	name servers.  This has two significant advantages:
+	1. Faster local resolution for your users
+	2. No spurious traffic will be sent from your network to the roots
+*/
+// RFCs 1912, 5735 and 6303 (and BCP 32 for localhost)
+zone "localhost"	{ type master; file "%%ETCDIR%%/master/localhost-forward.db"; };
+zone "127.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/localhost-reverse.db"; };
+zone "255.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// RFC 1912-style zone for IPv6 localhost address (RFC 6303)
+zone "0.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/localhost-reverse.db"; };
+
+// "This" Network (RFCs 1912, 5735 and 6303)
+zone "0.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// Private Use Networks (RFCs 1918, 5735 and 6303)
+zone "10.in-addr.arpa"	   { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "16.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "17.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "18.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "19.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "20.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "21.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "22.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "23.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "24.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "25.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "26.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "27.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "28.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "29.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "30.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "31.172.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "168.192.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// Shared Address Space (RFC 6598)
+zone "64.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "65.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "66.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "67.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "68.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "69.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "70.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "71.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "72.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "73.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "74.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "75.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "76.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "77.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "78.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "79.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "80.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "81.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "82.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "83.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "84.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "85.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "86.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "87.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "88.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "89.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "90.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "91.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "92.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "93.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "94.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "95.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "96.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "97.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "98.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "99.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "100.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "101.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "102.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "103.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "104.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "105.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "106.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "107.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "108.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "109.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "110.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "111.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "112.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "113.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "114.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "115.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "116.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "117.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "118.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "119.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "120.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "121.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "122.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "123.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "124.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "125.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "126.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "127.100.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// Link-local/APIPA (RFCs 3927, 5735 and 6303)
+zone "254.169.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// IETF protocol assignments (RFCs 5735 and 5736)
+zone "0.0.192.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// TEST-NET-[1-3] for Documentation (RFCs 5735, 5737 and 6303)
+zone "2.0.192.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "100.51.198.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "113.0.203.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// IPv6 Example Range for Documentation (RFCs 3849 and 6303)
+zone "8.b.d.0.1.0.0.2.ip6.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// Router Benchmark Testing (RFCs 2544 and 5735)
+zone "18.198.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "19.198.in-addr.arpa" { type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// IANA Reserved - Old Class E Space (RFC 5735)
+zone "240.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "241.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "242.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "243.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "244.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "245.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "246.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "247.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "248.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "249.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "250.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "251.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "252.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "253.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "254.in-addr.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// IPv6 Unassigned Addresses (RFC 4291)
+zone "1.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "3.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "4.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "5.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "6.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "7.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "8.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "9.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "a.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "b.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "c.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "d.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "e.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "0.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "1.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "2.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "3.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "4.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "5.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "6.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "7.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "8.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "9.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "a.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "b.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "0.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "1.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "2.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "3.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "4.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "5.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "6.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "7.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// IPv6 ULA (RFCs 4193 and 6303)
+zone "c.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "d.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// IPv6 Link Local (RFCs 4291 and 6303)
+zone "8.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "9.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "a.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "b.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// IPv6 Deprecated Site-Local Addresses (RFCs 3879 and 6303)
+zone "c.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "d.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "e.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+zone "f.e.f.ip6.arpa"	{ type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// IP6.INT is Deprecated (RFC 4159)
+zone "ip6.int"		{ type master; file "%%ETCDIR%%/master/empty.db"; };
+
+// NB: Do not use the IP addresses below, they are faked, and only
+// serve demonstration/documentation purposes!
+//
+// Example slave zone config entries.  It can be convenient to become
+// a slave at least for the zone your own domain is in.  Ask
+// your network administrator for the IP address of the responsible
+// master name server.
+//
+// Do not forget to include the reverse lookup zone!
+// This is named after the first bytes of the IP address, in reverse
+// order, with ".IN-ADDR.ARPA" appended, or ".IP6.ARPA" for IPv6.
+//
+// Before starting to set up a master zone, make sure you fully
+// understand how DNS and BIND work.  There are sometimes
+// non-obvious pitfalls.  Setting up a slave zone is usually simpler.
+//
+// NB: Don't blindly enable the examples below. :-)  Use actual names
+// and addresses instead.
+
+/* An example dynamic zone
+key "exampleorgkey" {
+	algorithm hmac-md5;
+	secret "sf87HJqjkqh8ac87a02lla==";
+};
+zone "example.org" {
+	type master;
+	allow-update {
+		key "exampleorgkey";
+	};
+	file "%%ETCDIR%%/dynamic/example.org";
+};
+*/
+
+/* Example of a slave reverse zone
+zone "1.168.192.in-addr.arpa" {
+	type slave;
+	file "%%ETCDIR%%/slave/1.168.192.in-addr.arpa";
+	masters {
+		192.168.1.1;
+	};
+};
+*/
diff --git a/dns/bind911/files/named.in b/dns/bind911/files/named.in
new file mode 100644
index 000000000000..95f11da12d74
--- /dev/null
+++ b/dns/bind911/files/named.in
@@ -0,0 +1,448 @@
+#!/bin/sh
+
+# PROVIDE: named
+# REQUIRE: %%NAMED_REQUIRE%%
+# BEFORE: %%NAMED_BEFORE%%
+# KEYWORD: shutdown
+
+#
+# Add the following lines to /etc/rc.conf to enable BIND:
+# named_enable (bool):		    Run named, the DNS server (or NO).
+# named_program (str):		    Path to named, if you want a different one.
+# named_conf (str):		    Path to the configuration file
+# named_flags (str):		    Use this for flags OTHER than -u and -c
+# named_uid (str):		    User to run named as
+# named_chrootdir (str):	    Chroot directory (or "" not to auto-chroot it)
+#				    Historically, was /var/named
+# named_chroot_autoupdate (bool):   Automatically install/update chrooted
+# 				    components of named.
+# named_symlink_enable (bool):	    Symlink the chrooted pid file
+# named_wait (bool):		    Wait for working name service before exiting
+# named_wait_host (str):	    Hostname to check if named_wait is enabled
+# named_auto_forward (str):	    Set up forwarders from /etc/resolv.conf
+# named_auto_forward_only (str):    Do "forward only" instead of "forward first"
+%%NATIVE_PKCS11%%# named_pkcs11_engine (str):	    Path to the PKCS#11 library to use.
+#
+
+. /etc/rc.subr
+
+name=named
+desc="named BIND startup script"
+rcvar=named_enable
+
+load_rc_config ${name}
+
+extra_commands=reload
+
+start_precmd=named_prestart
+start_postcmd=named_poststart
+reload_cmd=named_reload
+stop_cmd=named_stop
+stop_postcmd=named_poststop
+
+named_enable=${named_enable:-"NO"}
+named_program=${named_program:-"%%PREFIX%%/sbin/named"}
+named_conf=${named_conf:-"%%ETCDIR%%/named.conf"}
+named_flags=${named_flags:-""}
+named_uid=${named_uid:-"bind"}
+named_chrootdir=${named_chrootdir:-""}
+named_chroot_autoupdate=${named_chroot_autoupdate:-"YES"}
+named_symlink_enable=${named_symlink_enable:-"YES"}
+named_wait=${named_wait:-"NO"}
+named_wait_host=${named_wait_host:-"localhost"}
+named_auto_forward=${named_auto_forward:-"NO"}
+named_auto_forward_only=${named_auto_forward_only:-"NO"}
+%%NATIVE_PKCS11%%named_pkcs11_engine=${named_pkcs11_engine:-""}
+
+# Not configuration variables but having them here keeps rclint happy
+required_dirs="${named_chrootdir}"
*** 1219 LINES SKIPPED ***