Synopsis

Description

The cldap_search_s() function performs an LDAP search using the Connectionless LDAP (CLDAP)
protocol.

cldap_search_s() has parameters and behavior identical to that of ldap_search_s(3LDAP), except for
the addition of the logdn parameter. logdn should contain a distinguished
name to be used only for logging purposed by the LDAP server.
It should be in the text format described by RFC 1779, A String Representation of Distinguished Names.

Retransmission Algorithm

cldap_search_s() operates using the CLDAP protocol over udp(7P). Since UDP is a
non-reliable protocol, a retry mechanism is used to increase reliability. The cldap_setretryinfo(3LDAP) function
can be used to set two retry parameters: tries, a count
of the number of times to send a search request and timeout, an
initial timeout that determines how long to wait for a response before
re-trying. timeout is specified seconds. These values are stored in the
ld_cldaptries and ld_cldaptimeout members of the ld LDAP structure, and the default
values set in ldap_open(3LDAP) are 4 and 3 respectively. The retransmission algorithm used
is:

Step 1

Set the current timeout to ld_cldaptimeout seconds, and the current LDAP server address to the first LDAP server found during the ldap_open(3LDAP) call.

Step 2

Send the search request to the current LDAP server address.

Step 3

Set the wait timeout to the current timeout divided by the number of server addresses found during ldap_open(3LDAP) or to one second, whichever is larger. Wait at most that long for a response; if a response is received, STOP. Note that the wait timeout is always rounded down to the next lowest second.

Step 4

Repeat steps 2 and 3 for each LDAP server address.

Step 5

Set the current timeout to twice its previous value and repeat Steps 2 through 5 a maximum of tries times.

Examples

Assume that the default values for tries and timeout of 4 tries
and 3 seconds are used. Further, assume that a space-separated list of
two hosts, each with one address, was passed to cldap_open(3LDAP). The pattern
of requests sent will be (stopping as soon as a response is
received):