= Man pages
+These `man` pages are provided for quick reference, and for historical
+compatibility. In some cases, it is easier to type `man radiusd` than
+to open a web browser, and navigate to the correct page.
+
+That being said, the 'man' pages provide only brief summaries of
+functionality. The main documentation pages provide for significantly
+more content and explanation.
+
The xref:man/radclient.adoc[radclient] program.
-The main xref:man/radiusd.adoc[radiusd] daemon.
+The main xref:man/radiusd.adoc[radiusd] server.
The command-line tool for radiusd, xref:man/radmin.adoc[radmin].
A RADIUS-aware packet capture tool, xref:man/radsniff.adoc[radsniff].
+A simple summary of xref:man/unlang.adoc[unlang].
+
// Copyright (C) 2025 Network RADIUS SAS. Licenced under CC-by-NC 4.0.
// This documentation was developed by Network RADIUS SAS.
--- /dev/null
+= unlang(5)
+Alan DeKok
+:doctype: manpage
+:release-version: 4.0.0
+:man manual: FreeRADIUS
+:man source: FreeRADIUS
+:manvolnum: 5
+
+== NAME
+
+unlang - Unlang Policy Language
+
+== DESCRIPTION
+
+The server supports a simple processing language called "Unlang",
+which is short for "un-language". The original intention of using an
+"un-language" was to avoid creating yet another programming language.
+Instead, the `unlang` syntax allows for simple _if / then / else_
+checks, and attribute editing. It does not support recursion,
+functions, infinite loops, or a host of other normal language
+features.
+
+include::../unlang/keywords.adoc[]
+
+== SEE ALSO
+
+radiusd(8) radiusd.conf(5)
+
+== AUTHOR
+
+The FreeRADIUS Server Project (https://freeradius.org)
+
+// Copyright (C) 2025 Network RADIUS SAS. Licenced under CC-by-NC 4.0.
+// This documentation was developed by Network RADIUS SAS.
"un-language" was to avoid creating yet another programming language.
Instead, the `unlang` syntax allows for simple _if / then / else_
checks, and attribute editing. It does not support recursion,
-subroutines, or more complex flow controls.
-
-If third party libraries are required which are only available in `lua`,
-`perl` or `python`, then FreeRADIUS includes modules which allow those
-languages to be called as part of packet processing. We do not recommend
-writing general policy in these languages since it adds complexity and
-reduces performance.
+functions, infinite loops, or a host of other normal language
+features.
+
+In some cases, a third party library is provided only in an
+interpreted language, e.g. xref:raddb/mods-available/lua.adoc[Lua],
+xref:raddb/mods-available/perl.adoc[Perl] or
+xref:raddb/mods-available/python.adoc[Python]. FreeRADIUS includes
+support for those languages via
+xref:raddb/mods-available/index.adoc[plug-in modules]. _We do not
+recommend writing general policy in these languages since it adds
+complexity and reduces performance_.
NOTE: The documentation is this directory is _reference_
documentation. That is, it describes the syntax of `unlang` keywords,
|=====
| Keyword | Description
| xref:unlang/map.adoc[map] | Map database fields to server attributes.
-| xref:unlang/edit.adoc[editing] | Creating, modifying, and deleting attributes.
+| xref:unlang/edit.adoc['foo=bar'] | Creating, modifying, and deleting attributes.
| xref:unlang/update.adoc[update] | DEPRECATED - v3 compatible attribute editing.
|=====