}
----
-See the xref:unlang/edit.adoc[edit] documentation for instructions on
+See the xref:reference:unlang/edit.adoc[edit] documentation for instructions on
creating and editing attributes.
These edit operation allow for attributes to be set to default values and then
}
----
-See also the xref:raddb/mods-available/isc_dhcp.adoc[isc_dhcp] module,
+See also the xref:reference:raddb/mods-available/isc_dhcp.adoc[isc_dhcp] module,
which can read a subset of the ISC DHCP configuration files.
Or the equivalent Kea configuration:
*** xref:type/string/unquoted.adoc[Unquoted Strings]
** xref:xlat/index.adoc[Dynamic Expansion]
-*** xref:xlat/all.adoc[list of Built-in Functions]
+*** xref:xlat/all.adoc[Summary of Built-in Functions]
*** xref:xlat/alternation.adoc[Alternation Syntax]
*** xref:xlat/attribute.adoc[Attribute References]
*** xref:xlat/conversion.adoc[Data Conversion]
*** xref:xlat/deprecated.adoc[Deprecated Functions]
-
-*** xref:mods-available/dict.adoc[Dictionary Handling]
-
+*** xref:xlat/dict.adoc[Dictionary Handling]
*** xref:xlat/file/index.adoc[File Handling]
**** xref:reference:xlat/file/escape.adoc[escape]
**** xref:xlat/file/exists.adoc[exists]
**** xref:xlat/misc/rand.adoc[rand]
*** xref:xlat/pairs/index.adoc[Pairs]
-**** xref:xlat/pairs/debug.adoc[Write to debug output]
+**** xref:xlat/interpreter.adoc#debug_xlat[Write to debug output]
**** xref:xlat/pairs/immutable.adoc[Mark as immutable]
**** xref:xlat/pairs/print.adoc[Print to string]
*** xref:xlat/time/index.adoc[Time Management]
**** xref:xlat/time/character.adoc[Single Character]
-**** xref:xlat/time/generic.adoc[Generic]
+**** xref:xlat/time/generic.adoc[Generic]
**** xref:xlat/time/is_dst.adoc[Daylight Savings]
**** xref:xlat/time/now.adoc[Now]
**** xref:xlat/time/offset.adoc[UTC Offset]
-
-
-
-
= Dict Module
The `dict` module registers expansions which query the dictionaries.
| omapi-port UINT16
| pid-file-name STRING
| remote-port UINT16
-|==
+|===
-= Summary of Dynamic Expansions
+= Summary of Built-in Functions
.File Handling Functions
[options="headers, autowidth]
|===
| *Function* | *Description*
-| xref:xlat/misc/config.adoc[Server Configuration] | Examine configuration items
-| xref:xlat/misc/length.adoc[length] | Get the length of data
-| xref:xlat/misc/misc.adoc[Miscellaneous] | Functions to execute regular expression search on string, using pattern.
-| xref:xlat/misc/rand.adoc[rand] | random integers
+| xref:xlat/misc/config.adoc[Server Configuration] | Examine configuration items.
+| xref:xlat/misc/length.adoc[length] | Get the length of data.
+| xref:xlat/misc/misc.adoc[Miscellaneous] | Functions to execute. regular expression search on string, using pattern.
+| xref:xlat/misc/rand.adoc[rand] | Generate random integers.
|===
== Pair Manipulation
[options="headers, autowidth]
|===
| *Function* | *Description*
-| xref:xlat/pairs/debug.adoc[debug] | Print attributes to the debug output
-| xref:xlat/pairs/immutable.adoc[immutable] | Mark attributes as immutable (cannot be changed)
-| xref:xlat/pairs/print.adoc[print] | Print attribute name and value to string
+| xref:xlat/interpreter.adoc#debug_xlat[debug] | Print attributes to the debug output.
+| xref:xlat/pairs/immutable.adoc[immutable] | Mark attributes as immutable (cannot be changed).
+| xref:xlat/pairs/print.adoc[print] | Print attribute name and value to string.
|===
== String Manipulation
[options="header, autowidth"]
|===
| *Function* | *Description*
-| xref:xlat/str/concat.adoc[concat] | Concatenate strings with delimiters
-| xref:xlat/str/split.adoc[split] | Split a string based on delimiters
-| xref:xlat/misc/misc.adoc#length[length] | Returns the size of the data
-| xref:xlat/str/lpad.adoc[lpad] | Left pad a string
-| xref:xlat/str/rpad.adoc[rpad] | Right pad a string
-| xref:xlat/str/rand.adoc[rand] | Return a random string based on input format
-| xref:xlat/str/lower.adoc[lower] | Convert the input string to lowercase.
-| xref:xlat/str/upper.adoc[upper] | Convert the input string to uppercase
+| xref:xlat/str/concat.adoc[concat] | Concatenate strings with delimiters.
+| xref:xlat/str/split.adoc[split] | Split a string based on delimiters.
+| xref:xlat/misc/misc.adoc#length[length] | Returns the size of the data.
+| xref:xlat/str/lpad.adoc[lpad] | Left pad a string.
+| xref:xlat/str/rpad.adoc[rpad] | Right pad a string.
+| xref:xlat/str/rand.adoc[rand] | Return a random string .based on input format
+| xref:xlat/str/lower.adoc[lower] | Convert the input string. to lowercase.
+| xref:xlat/str/upper.adoc[upper] | Convert the input string. to uppercase
|===
== Time Management
[cols="30%,70%"]
|=====
| Function | Description
-| xref:xlat/time/character.adoc[character] | Single character expansions
-| xref:xlat/time/generic.adoc[time] | Generic (too complex) time function
-| xref:xlat/time/is_dst.adoc[is_dst] | Is the system running in DST?
-| xref:xlat/time/now.adoc[now] | Return the current time
-| xref:xlat/time/offset.adoc[offset] | Return UTC offset
+| xref:xlat/time/character.adoc[character] | Single character. expansions
+| xref:xlat/time/generic.adoc[time] | Generic (too complex). time function
+| xref:xlat/time/is_dst.adoc[is_dst] | Is the system running in DST?.
+| xref:xlat/time/now.adoc[now] | Return the current time.
+| xref:xlat/time/offset.adoc[offset] | Return UTC offset.
| xref:xlat/time/request.adoc[request] | Return the time when the request was received.
|=====
The following functions perform lookups based on dictionary names and numbers.
-The functions are defined in the `dict` module. It must be listed in
+The functions are defined in the xref:raddb/mods-available/dict.adoc[`dict` module]. It must be listed in
the `mods-enabled/` directory in order for the expansions to work.
== %str.concat(<ref:[idx]>, <delim>)
All of the hash functions take a key, along with arbitrary data, and turn binary data as `octet`s.
-= %hmac.md5(<shared_key>, <string>)
+== %hmac.md5(<shared_key>, <string>)
Generate `HMAC-MD5` of string.
| Keyword | Description
| xref:xlat/attribute.adoc[attributes] | Expand the value of a named attribute.
| xref:xlat/function.adoc[functions] | Function call syntax.
-| xref:xlat/misc.adoc[misc] | Miscellaneous functions
-| xref:xlat/str.adoc[str] | String mandling
-| xref:xlat/time.adoc[time] | Time handling
+| xref:xlat/misc/misc.adoc[misc] | Miscellaneous functions.
+| xref:xlat/str/index.adoc[str] | String handling.
+| xref:xlat/time/index.adoc[time] | Time handling.
| xref:xlat/alternation.adoc[condition] | Conditionally expand a string.
-| xref:xlat/all.adoc[all] | List of all functions
+| xref:xlat/all.adoc[all] | List of all functions.
|=====
Expansions are used inside of
The following functions allow inspection and/or manipulation of the `unlang` interpreter as it is running.
+<<debug_xlat>>
== Debug Functions
The following functions allow changing the debug level, or printing out specific lists of attributes.
-=== %debug(<level>)
+== %debug(<level>)
Dynamically change the debug level to something high, recording the old level.
...
```
-=== %debug_attr(<list:[index]>)
+=== `%debug_attr(<list:[index]>)`
Print to debug output all instances of current attribute, or all attributes in a list.
expands to a zero-length string.
[options="headers, autowidth]
|===
| *Function* | *Description*
-| xref:xlat/pairs/debug.adoc[debug] | Print attributes to the debug output
-| xref:xlat/pairs/immutable.adoc[immutable] | Mark attributes as immutable (cannot be changed)
-| xref:xlat/pairs/print.adoc[print] | Print attribute name and value to string
+| xref:xlat/interpreter.adoc#debug_xlat[debug] | Print attributes to the debug output.
+| xref:xlat/pairs/immutable.adoc[immutable] | Mark attributes as immutable (cannot be changed).
+| xref:xlat/pairs/print.adoc[print] | Print attribute name and value to string.
|===
// Copyright (C) 2025 Network RADIUS SAS. Licenced under CC-by-NC 4.0.
[NOTE]
====
-This expansion should be used in preference to the xref:xlat/character.adoc[single letter expansions] `%l`. That expansion returns integer seconds, and is not suitable for millisecond or microsecond resolution.
+This expansion should be used in preference to the xref:xlat/time/character.adoc[single letter expansions] `%l`. That expansion returns integer seconds, and is not suitable for millisecond or microsecond resolution.
====
Due to limitations in the underlying time functions (both system and
[cols="30%,70%"]
|=====
| Function | Description
-| xref:xlat/time/character.adoc[character] | Single character expansions
-| xref:xlat/time/generic.adoc[time] | Generic (too complex) time function
+| xref:xlat/time/character.adoc[character] | Single character expansions.
+| xref:xlat/time/generic.adoc[time] | Generic (too complex) time function.
| xref:xlat/time/is_dst.adoc[is_dst] | Is the system running in DST?
-| xref:xlat/time/now.adoc[now] | Return the current time
-| xref:xlat/time/offset.adoc[offset] | Return UTC offset
-| xref:xlat/time/request.adoc[request] | Return the time when the request was received.
+| xref:xlat/time/now.adoc[now] | Return the current time.
+| xref:xlat/time/offset.adoc[offset] | Return UTC offset.
+| xref:xlat/time/request.adoc[request] | Return the time when the request. was received.
|=====
// Copyright (C) 2025 Network RADIUS SAS. Licenced under CC-by-NC 4.0.