1.4. Using Directory Server Plug-in APIs

When using Directory Server plug-in APIs, you should be aware of the following:
  • Plug-in files and examples are installed separately from other Directory Server packages, available at the Fedora Directory Server CVS repos, https://git.fedorahosted.org/cgit/389/ds.git/tree/ldap/servers/plugins and https://git.fedorahosted.org/cgit/389/ds.git/tree/ldap/servers/slapd/test-plugins. These sample plug-in files can be installed in any directory.
  • The main header file is /usr/lib64/dirsrv/plugins/slapi-plugin.h. On some systems, the 389-ds-base-devel package installs this header file automatically in /usr/include/dirsrv/slapi-plugin.h.
  • Plug-in directives are contained in the /etc/dirsrv/slapd-instance/dse.ldif file. These plug-in configuration entries can be added or modified using LDAP tools like ldapmodify or by stopping the server and manually editing the dse.ldif file. (Either way, the server must be restarted before the plug-in changes take effect.)
    See chapter 2, "Core Server Configuration Reference," in the Configuration, Command, and File Reference for information on the syntax of the dse.ldif file.
  • Database plug-ins are not supported in Directory Server. Be sure to use the pre-operation, post-operation, or extended operation API to register plug-in functions.
  • To comply with IPv6, Red Hat Directory Server Plug-in Guide can use the SLAPI_CONN_CLIENTEDADDR and SLAPI_CONNSERVERADDR parameters to allow plug-ins to recognize the IP address of the LDAP client and server. These new parameters use the Netscape Portable Runtime (NSPR) PRNetAddr structure for storing the IP addresses. Because of this, the NSPR files are either shipped with Directory Server or are available from the operating system's nspr-devel package, with the header files installed in /usr/include/nspr4.
    The NSPR API allows compliant applications to use system facilities such as threads, thread synchronization, I/O, interval timing, atomic operations, and several other low-level services independent of platform.