The `instantiate` section has been removed. It originally started out
as a way to ensure that modules were instantiated in a particular
-order. As of 3.0.9, listing modules in the `instantiate` section was
-no longer necessary. The functionality was left in version 3 for
-compatibility, but has now been removed from version 4.
-
-The other use of the `instantiate` section was to define "virtual"
-modules for dynamic expansion. That functionality has been moved to
-the `mods-available/` and `mods-enabled/` directories. i.e. in
-version 4, just list the virtual module in a file, as if it was a real
-module.
+order. A later use of the `instantiate` section was to define
+"virtual modules" for dynamic expansion. That functionality has been
+moved to the `mods-available/` and `mods-enabled/` directories.
+i.e. in version 4, just list the virtual module in a file, as if it
+was a real module.
See the xref:mods-available/redundantsql.adoc[redundant_sql module]
-for more information.
+for more information. In short, a virtual module can be put into the
+`mods-enabled` directory as with any other module, as with the
+following text:
+
+[source,unlang]
+----
+redundant redundant_sql {
+ sql1
+ sql2
+}
+----
+
+In this case, this definition creates a `redundant_sql` virtual module.
+
== Virtual Servers
This tells the server what protocol is being used in that virtual
server. This configuration was not necessary in v3, because each
-protocol was pretending to be RADIUS. That was simple to do and worked
-for some things, but it was not the best approach.
+protocol was pretending to be RADIUS. That was simple to program at
+the time and worked for some things, but it was not the best approach.
In v4, each protocol is completely independent, and RADIUS is no
-longer welded into the server core. i.e. The server core does
-modules, configuration files, policies, etc. RADIUS has been
-relegated to just another plug-in protocol, with the same status as
-DHCPv4 and DHCPv6.
+longer built into the server core. i.e. The server core does modules,
+configuration files, policies, etc. RADIUS has been relegated to just
+another plug-in protocol, with the same status as DHCPv4 and DHCPv6.
Every example virtual server in the `sites-enabled/` directory
contains a `namespace` parameter. Please look at those files for
in `accounting %{Acct-Status-Type}`. See sites-available/default for
examples and more information.
+=== update sections
+
+A major difference between v3 and v4 is that `update` sections are no
+longer necessary. It is now possible to just edit attributes "in
+place", as with:
+
+See the xref:reference:unlang/update.adoc[update] documentation for a
+description of what has changed, and how to use the attribute new
+xref:reference:unlang/edit.adoc[edit] functionality.
+
+For example, instead of doing this:
+
+[source,unlang]
+----
+if (&User-Name == "bob") {
+ update reply {
+ &Reply-Message := "Hello, %{User-Name}"
+ }
+}
+----
+
+You can now do this:
+
+[source,unlang]
+----
+if (&User-Name == "bob") {
+ &reply.Reply-Message := "Hello, %{User-Name}"
+}
+----
+
+As with any upgrade across major version numbers, there are caveats.
+See the full xref:reference:unlang/update.adoc[update] documentation
+and xref:reference:unlang/edit.adoc[edit] documentation for details.
+
== Proxying
Proxying has undergone massive changes. The `proxy.conf` file no