Previous Contents Index DocHome Next |
Netscape LDAP SDK for C LDAP SDK for C |
Chapter 15 Working with Extended Operations
This chapter explains how LDAPv3 extended operations work and how to use the extended operations that are supported by your LDAP server.
How Extended Operations Work
Extended operations are part of the LDAPv3 protocol. Each extended operation is identified by an OID.LDAP clients can request the operation by sending an extended operation request. Within the request, the client specifies:
The OID of the extended operation that should be performed.
The server receives the request, and performs the extended operation. The server can send back to the client a response containing:In order to use extended operations, both the server and the client must understand the specific extended operation to be performed.
Determining the Extended Operations Supported
To determine the extended operations supported by the server, get the root DSE of the server, and check the supportedExtension attribute. The values of this attribute are the object identifiers (OIDs) of the extended operations supported by this server.If the root DSE does not have a supportedExtension attribute, the server does not support any extended operations.
For information on getting the root DSE, see "Getting the Root DSE".
Performing an Extended Operation
To perform an extended operation, call one of the following functions:
The synchronous ldap_extended_operation_s() function (see "Performing a Synchronous Extended Operation").
For more information about the difference between synchronous and asynchronous functions, see "Calling Synchronous and Asynchronous Functions".The asynchronous ldap_extended_operation() function (see "Performing an Asynchronous Extended Operation").
Both of these functions allow you to specify the OID of the extended operation and the data that you want applied to the operation.
Before calling the function to perform a LDAP extended operation, make sure to specify that your client is using version 3 of the LDAP protocol. If you do not, an LDAP_NOT_SUPPORTED result code is returned. For details, see "Specifying the LDAP Version of Your Client".
Performing a Synchronous Extended Operation
If you want to wait for the results of an LDAP extended operation to complete before continuing, call the synchronous ldap_extended_operation_s() function. This function sends a SASL bind request to the server and blocks until the server sends the results of the operation back to your client.The ldap_extended_operation_s() function returns LDAP_SUCCESS if the operation completed successfully or an error code if a problem occurred. See the documentation on the ldap_extended_operation_s() function for a list of the possible result codes.
Performing an Asynchronous Extended Operation
If you want to perform other work (in parallel) while waiting an LDAP extended operation to complete, do the following:
To send an LDAP extended operation request, call the asynchronous ldap_extended_operation() function.
To determine whether the server sent a response for this operation to your client, call the ldap_result() function and pass in this message ID.
- This function returns an LDAP_SUCCESS result code if the request was successfully sent (or an LDAP result code if an error occurred while sending the request). The function also sets the msgidp argument to point to a message ID identifying the extended operation.
Call the ldap_parse_extended_result() function to parse the LDAPMessage structure and retrieve information from the server's response.
- The ldap_result() function uses the message ID to determine if the server sent an extended operation response. The function passes back the response in an LDAPMessage structure.
Call the ldap_get_lderrno() function to get the LDAP result code for the operation. The function returns an LDAP_SUCCESS result code if the extended operation was performed successfully or an LDAP error code if a problem occurred.
- If the server sent an OID of an extended operation to your client, the OID is passed back as the retoidp argument.
- If the server sent a data to your client, the data is specified in the berval structure passed back as the retdatap argument.
- See the documentation on the return values of the function ldap_extended_operation_s() for a list of result codes that the server can return for this operation.
Example: Extended Operation
The following program is an example of an LDAP client that request an extended operation with the OID 1.2.3.4 from the server.
Previous Contents Index DocHome Next
Copyright © 2000 Sun Microsystems, Inc. Some preexisting portions Copyright © 2000 Netscape Communications Corp. All rights reserved.
Last Updated November 16, 2000