| Skip Navigation Links | |
| Exit Print View | |
|
Oracle Directory Server Enterprise Edition Developer's Guide 11 g Release 1 (11.1.1.5.0) |
Part I Directory Server Plug-In API Guide
1. Before You Start Writing Plug-Ins
2. Changes to the Plug-In API Since Directory Server 5.2
3. Getting Started With Directory Server Plug-Ins
4. Working With Entries Using Plug-Ins
5. Extending Client Request Handling Using Plug-Ins
6. Handling Authentication Using Plug-Ins
7. Performing Internal Operations With Plug-Ins
When to Use Internal Operations
Issues With Internal Operations
Finding the Internal Operations Example
Before Using the Internal Operations Example
8. Writing Entry Store and Entry Fetch Plug-Ins
9. Writing Extended Operation Plug-Ins
10. Writing Matching Rule Plug-Ins
11. Writing Password Storage Scheme Plug-Ins
12. Writing Password Quality Check Plug-Ins
13. Writing Computed Attribute Plug-Ins
Part II Directory Server Plug-In API Reference
14. Data Type and Structure Reference
15. Function Reference, Part I
16. Function Reference, Part II
This section describes how to develop a plug-in to rename an entry, or to move an entry.
An internal modify DN operation is performed in these stages:
Allocate space for a parameter block.
Set up the operation by using slapi_rename_internal_set_pb().
Invoke the operation by using slapi_modrdn_internal_pb().
The first stage of the operation is rename. The second stage of the operation is modrdn.
Free the parameter block.
Example 7-3 Internal Rename or Move Operation (internal.c)
This example demonstrates an internal modify DN operation. Internal modify DN does not consume the data that you set in the parameter block.
#include "slapi-plugin.h"
static Slapi_ComponentId * plugin_id = NULL;
int
test_internal()
{
Slapi_PBlock * pb; /* PBlock for internal ops */
int rc; /* Return code; 0 means success. */
pb = slapi_pblock_new(); /* Set up a PBlock again... */
rc = slapi_rename_internal_set_pb(
pb,
"uid=qcubbins,ou=people,dc=example,dc=com", /*Specify target entry*/
"uid=fcubbins", /*Specify new RDN */
"ou=people,dc=example,dc=com", /*Specify new superior*/
/* The new superior is the same as the old superior. */
1, /* Delete old RDN */
NULL, /* No controls */
NULL, /* DN rather than unique ID */
plugin_id,
SLAPI_OP_FLAG_NEVER_CHAIN /* Never chain this operation. */
);
if (rc != LDAP_SUCCESS) {
slapi_pblock_destroy(pb);
return (-1);
}
rc = slapi_modrdn_internal_pb(pb); /* Like internal modify, */
/* nothing consumed here. */
/* ... get status ... */
slapi_pblock_get(pb, SLAPI_PLUGIN_INTOP_RESULT, &rc);
if (rc != LDAP_SUCCESS) {
slapi_pblock_destroy(pb);
return (-1);
}
slapi_pblock_destroy(pb); /* ... cleaning up. */
slapi_log_info_ex(
SLAPI_LOG_INFO_AREA_PLUGIN,
SLAPI_LOG_INFO_LEVEL_DEFAULT,
SLAPI_LOG_NO_MSGID,
SLAPI_LOG_NO_CONNID,
SLAPI_LOG_NO_OPID,
"test_internal in test-internal plug-in",
"\nNew entry RDN: %s\n", "uid=fcubbins"
);
return (0);
}