Processes an entry’s LDAP v3 referrals (which are found in the entry’s ref attribute). For LDAP v3 clients, this function sends the LDAP referrals back to the client. For LDAP v2 clients, this function copies the referrals to an array of berval structures that you can pass to slapi_send_ldap_result() function at a later time.
#include "slapi-plugin.h" int slapi_send_ldap_referral( Slapi_PBlock *pb, Slapi_Entry *e, struct berval **refs, struct berval ***urls );
This function takes the following parameters:
Pointer to the Slapi_Entry structure representing the entry that you are working with.
Pointer to the NULL terminated array of berval structures containing the LDAP v3 referrals (search result references) found in the entry.
Pointer to the array of berval structures used to collect LDAP referrals for LDAP v2 clients.
This function returns 0 if successful, or -1 if an error occurs.
When you call this function, the server processes the LDAP referrals specified in the refs argument. The server processes referrals in different ways, depending on the version of the LDAP protocol supported by the client:
In the LDAP v3 protocol, references to other LDAP servers (search result references) can be sent to clients as search results. (For example, a server can send a mixture of entries found by the search and references to other LDAP servers as the results of a search.)
When you call the slapi_send_ldap_referral() function for LDAP v3 clients, the server sends the referrals specified in the refs argument back to the client as search result references. (The urls argument is not used in this case.)
In the LDAP v2 protocol, servers can send the LDAP result code LDAP_PARTIAL_RESULTS to refer the client to other LDAP server.
When you call the slapi_send_ldap_referral() function for LDAP v2 clients, the server collects the referrals specified in refs in the urls argument. No data is sent to the LDAP v2 client.
To get the referrals to an LDAP v2 client, you need to pass the urls argument (along with an LDAP_PARTIAL_RESULTS result code) to the slapi_send_ldap_result() function.slapi_send_ldap_result() concatenates the referrals specified in the urls argument and sends the resulting string to the client as part of the error message.
If you want to define your own function for sending referrals, write a function that complies with the type definition send_ldap_search_entry_fn_ptr_t and set the SLAPI_PLUGIN_DB_REFERRAL_FN parameter in the parameter block to the name of your function.