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); }