= Modules .Syntax [source,unlang] ---- ---- The `` statement is a reference to the named module. Common module names include `pap`, `chap`, `files`, `eap`, and `sql`. The `modules { ... }` subsection of `radiusd.conf` contains all of the valid modules. When processing reaches a named module, the pre-compiled module is called. The module may succeed or fail and will return a status code to the `unlang` interpreter detailing success or failure. .Example [source,unlang] ---- chap sql ---- == Module Return Codes When a module is called, it returns one of the following codes to the interpreter; the meaning of each code is detailed to the right of the source, below: .Module Return Codes The below table describes the purpose of the rcodes that may be returned by a module call. In this case the 'operation' referenced in the table is the current module call. include::partial$rcode_table.adoc[] These return codes can be used in a subsequent xref:condition/index.adoc[conditional expression] thus allowing policies to perform different actions based on the behaviour of the modules. .Example [source,unlang] ---- sql if (notfound) { update reply { Reply-Message = "We don't know who you are" } reject } ---- == Module Return Code priority overrides In the case of modules, rcodes can be modified on a per-call basis. Module priority overrides are specified in a block inline with the module call. The format of an override is ` = (0+||return)` - That is, a number greater than or equal to 0, the priority of another rcode, or the special priority `return` which causes the current section to immediately exit. [source, unlang] ---- ldap { <1> fail = 1 <2> ok = handled <3> reject = return <4> } ---- <1> Call to the `ldap` module. <2> Sets the priority of the `fail` rcode to be `1`. If the priority of the rcode for the request is `0`, then the request request rcode will be set to `fail` if the module returns `fail`. <3> Sets the priority of the `ok` rcode to be whatever the default is for `handled` in this section. As the default for `handled` is usually `return`. If `ok` is returned, the current section will immediately exit. <4> Sets the priority of `reject` to be `return`. If the module returns `reject`, the current section will immediately exit. // Copyright (C) 2020 Network RADIUS SAS. Licenced under CC-by-NC 4.0. // Development of this documentation was sponsored by Network RADIUS SAS.