LDAP_MODIFY(3LDAP) LDAP Library Functions LDAP_MODIFY(3LDAP)
NAME
ldap_modify, ldap_modify_s, ldap_mods_free, ldap_modify_ext,
ldap_modify_ext_s - LDAP entry modification functions
SYNOPSIS
cc[
flag... ]
file... -lldap[
library... ]
#include <lber.h>
#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);
int ldap_modify_ext(
LDAP *ld,
char *dn,
LDAPMod **mods,
LDAPControl **serverctrls,
LDAPControl **clientctrls,
int *msgidp);
int ldap_modify_ext_s(
LDAP *ld,
char *dn,
LDAPMod **mods,
LDAPControl **serverctrls,
LDAPControl **clientctrls);
DESCRIPTION
The function
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;
} 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.
If you need to specify a non-string value (for example, to add a
photo or audio attribute value), you should set
mod_op to the logical
OR of the operation as above (for example,
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.
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(3LDAP).
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.
The
ldap_modify_ext() function initiates an asynchronous modify
operation and returns
LDAP_SUCCESS if the request was successfully
sent to the server, or else it returns a LDAP error code if not. See
ldap_error(3LDAP). If successful,
ldap_modify_ext() places the
message id of the request in
*msgidp. A subsequent call to
ldap_result(3LDAP), can be used to obtain the result of the add
request.
The
ldap_modify_ext_s() function initiates a synchronous modify
operation and returns the result of the operation itself.
ERRORS
ldap_modify_s() returns an LDAP error code, either
LDAP_SUCCESS or
an error. See
ldap_error(3LDAP).
ldap_modify() returns
-1 in case of trouble, setting the
error field
of
ld.
ATTRIBUTES
See
attributes(7) for a description of the following attributes:
+--------------------+-----------------+
| ATTRIBUTE TYPE | ATTRIBUTE VALUE |
|Interface Stability | Evolving |
+--------------------+-----------------+
SEE ALSO
ldap(3LDAP),
ldap_add(3LDAP),
ldap_error(3LDAP),
ldap_get_option(3LDAP),
attributes(7) January 28, 2002 LDAP_MODIFY(3LDAP)