#include <lber.h> #include <ldap.h>char
ldap_get_dn(LDAP
ld, LDAPMessage
entry);
char
ldap_explode_dn(char
dn, int notypes);
char
ldap_dn2ufn(char
dn);
int ldap_is_dns_dn(char
dn);
char
ldap_explode_dns(char
dn);
The ldap_get_dn routine takes an entry as returned by ldap_first_entry(3ldap) or ldap_next_entry(3ldap) and returns a copy of the entry's DN. Space for the DN will have been obtained via the malloc function, and should be freed by a call to the free function; see the malloc(3C) manual page for details of both of these.
The ldap_explode_dn routine takes a DN as returned by ldap_get_dn and breaks it up into its component parts. Each part is known as a Relative Distinguished Name, or RDN. ldap_explode_dn returns a NULL-terminated array, each component of which contains an RDN from the DN. The notypes parameter is used to request that only the RDN values be returned, not their types. For example, the DN ``n=Bob, c=US'' would return as either { ``cn=Bob'', ``c=U'', NULL } or { ``Bob'', ``US'', NULL }, depending on whether notypes was 0 or 1, respectively. The result can be freed by calling ldap_value_free(3ldap).
ldap_dn2ufn is used to turn a DN as returned by ldap_get_dn into a more user-friendly form, stripping off type names. See RFC 1781, Using the Directory to Achieve User Friendly Naming for more details on the UFN format. The space for the UFN returned is obtained by a call to malloc, and the user is responsible for freeing it via a call to free.
ldap_is_dns_dn returns non-zero if the dn string is an experimental DNS-style DN (generally in the form of an RFC 822 e-mail address). It returns zero if dn appears to be an RFC 1779 format DN.
ldap_explode_dns takes a DNS-style DN and breaks it up into its component parts. ldap_explode_dns returns a NULL-terminated array. For example, the DN ``mcs.umich.edu'' will return { ``mcs'', ``umich'', ``edu'', NULL }. The result can be freed by calling ldap_value_free(3ldap).
ld_errno
field in the ld parameter is set to
indicate the error. See
ldap_perror(3ldap)
for a description of possible error codes. ldap_explode_dn,
ldap_explode_dns and ldap_dn2ufn will return
NULL with errno set appropriately in case of trouble.