diff --git a/doc/arm/Bv9ARM-book.xml b/doc/arm/Bv9ARM-book.xml
index b81f8384e3..3c90ae3958 100644
--- a/doc/arm/Bv9ARM-book.xml
+++ b/doc/arm/Bv9ARM-book.xml
@@ -1325,6 +1325,9 @@ controls {
+
+
+
Advanced DNS Features
diff --git a/doc/arm/plugins.xml b/doc/arm/plugins.xml
new file mode 100644
index 0000000000..507970b85d
--- /dev/null
+++ b/doc/arm/plugins.xml
@@ -0,0 +1,95 @@
+
+
+
+Plugins
+
+
+ Plugins are a mechanism to extend the functionality of
+ named using dynamically loadable libraries.
+ By using plugins, core server functionality can be kept simple
+ for the majority of users; more complex code implementing optional
+ features need only be installed by users that need those features.
+
+
+ The plugin interface is a work in progress, and is expected to evolve
+ as more plugins are added. Currently, only "query plugins" are supported;
+ these modify the name server query logic. Other plugin types may be added
+ in the future.
+
+
+ The only plugin currently included in BIND is
+ filter-aaaa.so, which replaces the
+ filter-aaaa feature that previously existed natively
+ as part of named.
+ The code for this feature has been removed from named,
+ and can no longer be configured using standard
+ named.conf syntax, but linking in the
+ filter-aaaa.so plugin provides identical
+ functionality.
+
+
+ Configuring Plugins
+
+ A plugin is configured with the plugin
+ statement in named.conf:
+
+
+ plugin query "library.so" {
+ parameters
+ };
+
+
+ In this example, file library.so is the plugin
+ library. query indicates that this is a query
+ plugin.
+
+
+ Multiple plugin statements can be specified, to load
+ different plugins or multiple instances of the same plugin.
+
+
+ parameters are passed as an opaque
+ string to the plugin's initialization routine. Configuration
+ syntax will differ depending on the module.
+
+
+
+ Developing Plugins
+
+ Each plugin implements four functions:
+
+ plugin_register to allocate memory,
+ configure a plugin instance, and attach to hook points within
+ named,
+ plugin_destroy to tear down the plugin
+ instance and free memory,
+ plugin_version to check that the plugin
+ is compatible with the current version of the plugin API,
+ plugin_check to test syntactic
+ correctness of the plugin parameters.
+
+
+
+ At various locations within the named source code,
+ there are "hook points" at which a plugin may register itself.
+ When a hook point is reached while named is
+ running, it is checked to see whether any plugins have registered
+ themselves there; if so, the associated "hook action" is called -
+ this is a function within the plugin library. Hook actions may
+ examine the runtime state and make changes - for example, modifying
+ the answers to be sent back to a client or forcing a query to be
+ aborted. More details can be found in the file
+ lib/ns/include/ns/hooks.h.
+
+
+
+
diff --git a/util/copyrights b/util/copyrights
index 648b7dd2aa..45bf7c0e99 100644
--- a/util/copyrights
+++ b/util/copyrights
@@ -1510,6 +1510,7 @@
./doc/arm/options.grammar.xml SGML 2018
./doc/arm/pkcs11.xml SGML 2010,2012,2013,2014,2015,2016,2018
./doc/arm/pkgversion.xml.in SGML 2015,2016,2018
+./doc/arm/plugins.xml SGML 2018
./doc/arm/redirect.zoneopt.xml SGML 2018
./doc/arm/releaseinfo.xml.in SGML 2015,2016,2018
./doc/arm/server.grammar.xml SGML 2018