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)