ABCDEFGHIJKLMNOPQRSTUVWXYZ

ldap_mods_free

LDAP_MODIFY(3)                                                  LDAP_MODIFY(3)



NAME
       ldap_modify, ldap_modify_s - Perform an LDAP modify operation

SYNOPSIS
       #include <ldap.h>

       int ldap_modify(ld, dn, mods)
       LDAP *ld;
       char *dn;
       LDAPMod *mods[];

       int ldap_modify_s(ld, dn, mods)
       LDAP *ld;
       char *dn;
       LDAPMod *mods[];

       void ldap_mods_free( mods, freemods )
       LDAPMod **mods;
       int freemods;

DESCRIPTION
       The  routine  ldap_modify_s()  is used to perform an LDAP modify opera-
       tion.  dn is the DN of the entry to modify, and mods is  a  null-termi-
       nated 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  modi-
       fications,  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 val-
       ues after the modification, having been created if necessary.  All mod-
       ifications 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.

ERRORS
       ldap_modify_s()  returns  an ldap error code, either LDAP_SUCCESS or an
       error if there was trouble.  ldap_modify() returns -1 in case of  trou-
       ble, setting the ld_errno field of ld.

SEE ALSO
       ldap(3), ldap_error(3), ldap_add(3)

ACKNOWLEDGEMENTS
       OpenLDAP   is   developed   and  maintained  by  The  OpenLDAP  Project
       (http://www.openldap.org/).  OpenLDAP is  derived  from  University  of
       Michigan LDAP 3.3 Release.



OpenLDAP 2.0.27-Release        22 September 1998                LDAP_MODIFY(3)