Plug-in Programmer’s Guide
Red Hat Directory Server                                                            

Previous
Contents
Index
Next

Chapter 9

Writing Entry Store/Fetch Plug-ins


This chapter describes how to write entry store and entry fetch plug-ins. You can use these types of plug-ins to invoke functions before and after data is read from the default database.

The chapter contains the following sections:

How Entry Store/Fetch Plug-ins Work

Entry store plug-in functions are called before data is written to the database. Entry fetch plug-in functions are called after data is read from the default database. This processing is illustrated in Figure 9-1.

Figure 9-1 How the Server Calls Entry Store and Entry Fetch Plug-in Functions

Writing Entry Store/Fetch Functions

Unlike most other types of plug-in functions, entry store and entry fetch plug-in functions are not passed a parameter block when called. Instead, entry store and entry fetch plug-in functions must have the following prototype:

void function_name( char **entry, unsigned long *len );
 

The parameters are described below:

entry
Pointer to a string specifying the entry in LDIF format; for details on this format, see "slapi_filter_free()," on page 361.
len
Pointer to the length of the entry string.

Since the text of the entry is passed in as an argument, you can modify the entry before it gets saved to disk and modify the entry after it is read from disk.

Note

For example entry store and entry fetch plug-in functions, check this source file in your installation: server_root /plugins/slapd/slapi/examples/testentry.c


Registering Entry Store/Fetch Functions

Unlike most other types of plug-in functions, you do not register an entry store or entry fetch plug-in function by setting the function name in the parameter block. Instead, you specify the function name directly in the server configuration file.

Shut down the server, add the plug-in parameters to the dse.ldif file, and restart the server (see Chapter 3, "Configuring Plug-ins"). For example, your plug-in entry might look like this:

dn: cn=Test entry,cn=plugins,cn=config

objectClass: top

objectClass: nsSlapdPlugin

objectClass: extensibleObject

cn: Test entry

nsslapd-pluginPath: /opt/redhat-ds/servers/plugins/slapd/slapi/

	examples/libtest-plugin.so

nsslapd-pluginInitfunc: testentry_init

nsslapd-pluginType: ldbmentryfetchstore

nsslapd-pluginEnabled: on

nsslapd-pluginId: test-entry
 

For an example plug-in functions that implement entry store and entry fetch operations, take a look at this source file:

server_root /plugins/slapd/slapi/examples/testentry.c
 




Previous
Contents
Index
Next

© 2001 Sun Microsystems, Inc. Used by permission. © 2005 Red Hat, Inc. All rights reserved.
Read the Full Copyright and Third-Party Acknowledgments.

last updated May 26, 2005