10. Overlays
Overlays are software components that provide hooks to functions analogous to those provided by backends, which can be stacked on top of the backend calls and as callbacks on top of backend responses to alter their behavior.
Overlays may be compiled statically into slapd, or when module support is enabled, they may be dynamically loaded. Most of the overlays are only allowed to be configured on individual databases, but some may also be configured globally.
Essentially they represent a means to:
- customize the behavior of existing backends without changing the backend code and without requiring one to write a new custom backend with complete functionality
- write functionality of general usefulness that can be applied to different backend types
Overlays are usually documented by separate specific man pages in section 5; the naming convention is
slapo-<overlay name>
Not all distributed overlays have a man page yet. Feel free to contribute one, if you think you well understood the behavior of the component and the implications of all the related configuration directives.
Official overlays are located in
servers/slapd/overlays/
That directory also contains the file slapover.txt, which describes the rationale of the overlay implementation, and may serve as guideline for the development of custom overlays.
Contribware overlays are located in
contrib/slapd-modules/<overlay name>/
along with other types of run-time loadable components; they are officially distributed, but not maintained by the project.
They can be stacked on the frontend as well; this means that they can be executed after a request is parsed and validated, but right before the appropriate database is selected. The main purpose is to affect operations regardless of the database they will be handled by, and, in some cases, to influence the selection of the database by massaging the request DN.
All the current overlays in 2.4 are listed and described in detail in the following sections.