ldap_modify, ldap_modify_s — Perform an LDAP modify operation
#include <ldap.h>
int
ldap_modify( |
LDAP * | ld, |
char * | dn, | |
LDAPMod * | mods[]) ; |
int
ldap_modify_s( |
LDAP * | ld, |
char * | dn, | |
LDAPMod * | mods[]) ; |
void
ldap_mods_free( |
LDAPMod ** | mods, |
int | freemods) ; |
The routine ldap_modify_s()
is used to
perform an LDAP modify operation. dn
is the DN of the entry to
modify, and mods
is a
null-terminated array of modifications to make to the entry.
Each element of the mods
array is a pointer to an
LDAPMod structure, which is defined below.
typedef struct ldapmod { int mod_op; char *mod_type; union { char **modv_strvals; struct berval **modv_bvals; } mod_vals; struct ldapmod *mod_next; } LDAPMod; #define mod_values mod_vals.modv_strvals #define mod_bvalues mod_vals.modv_bvals
The mod_op
field
is used to specify the type of modification to perform and
should be one of LDAP_MOD_ADD, LDAP_MOD_DELETE, or
LDAP_MOD_REPLACE. The mod_type
and mod_values
fields specify the
attribute type to modify and a null-terminated array of
values to add, delete, or replace respectively. The
mod_next
field is
used only by the LDAP server and may be ignored by the
client.
If you need to specify a non-string value (e.g., to add a
photo or audio attribute value), you should set mod_op
to the logical OR of
the operation as above (e.g., LDAP_MOD_REPLACE) and the
constant LDAP_MOD_BVALUES. In this case, mod_bvalues
should be used
instead of mod_values
, and it should
point to a null-terminated array of struct bervals, as
defined in <lber.h>.
For LDAP_MOD_ADD modifications, the given values are added
to the entry, creating the attribute if necessary. For
LDAP_MOD_DELETE modifications, the given values are deleted
from the entry, removing the attribute if no values remain.
If the entire attribute is to be deleted, the mod_values
field should be
set to NULL. For LDAP_MOD_REPLACE modifications, the
attribute will have the listed values after the modification,
having been created if necessary. All modifications are
performed in the order in which they are listed.
ldap_modify_s() returns the LDAP error code resulting from the modify operation. This code can be interpreted by ldap_perror(3) and friends.
The ldap_modify()
operation works
the same way as ldap_modify_s()
, except that
it is asynchronous, returning the message id of the request
it initiates, or -1 on error. The result of the operation can
be obtained by calling ldap_result(3).
ldap_mods_free()
can be used to free each element of a NULL-terminated array
of mod structures. If freemods
is non-zero, the
mods
pointer itself
is freed as well.