# Module invocation

Syntax: action control module \[parameters].

Control is specified for each action and module.

* requisite
* required
* sufficient
* optional

\[success=ok/number default=ignore/die/bad …].

* **required**: The module result must be successful for authentication to continue.
  * If the test fails at this point, the user is not notified until the results of all module tests that reference that interface are complete.
* **requisite:** The module result must be successful for authentication to continue.
  * However, if a test fails at this point, the user is notified immediately with a message reflecting the first failed required or requisite module test.
* **sufficient**: The module result is ignored if it fails.
  * If the result of a module flagged sufficient is successful and no previous modules flagged required have failed, then no other results are required and the user is authenticated.
* **optional**: The module result is ignored.
  * A module flagged as optional only becomes necessary for successful authentication when no other modules reference the interface.
* **include**: Unlike the other controls, this does not relate to how the module result is handled.
  * This flag pulls in all lines in the configuration file which match the given parameter and appends them as an argument to the module.
