LDAPMod is a type of structure that you use to specify changes to an attribute in an directory entry. Before you call the ldap_add_ext(), ldap_add_ext_s(), ldap_modify_ext(), or ldap_modify_ext_s() routines to add or modify an entry in the directory, you need to fill LDAPMod structures with the attribute values that you intend to add or change.
LDAPMod is defined as follows:
typedef struct ldapmod {int mod_op;
char *mod_type;
union {char **modv_strvals;
struct berval **modv_bvals;
} mod_vals;
#define mod_values mod_vals.modv_strvals
#define mod_bvalues mod_vals.modv_bvals
} LDAPMod;The fields in this structure are described below:
LDAP_MOD_DELETE in the mod_op field and you remove all values in an attribute, the attribute is removed from the entry. LDAP_MOD_DELETE in the mod_op field and NULL in the mod_values field, the attribute is removed from the entry. LDAP_MOD_REPLACE in the mod_op field and NULL in the mod_values field, the attribute is removed from the entry. LDAP_MOD_REPLACE in the mod_op field and the attribute does not exist in the entry, the attribute is added to the entry. LDAP_MOD_ADD in the mod_op field and the attribute does not exist in the entry, the attribute is added to the entry. ldap_mods_free() function.
The following section of code sets up an LDAPMod structure to change the email address of a user's entry to "bjensen@airius.com":
LDAP *ld;
LDAPMod attribute1;
LDAPMod *list_of_attrs[2];
char *mail_values[] = { "bjensen@airius.com", NULL };char *dn;
...
/* Identify the entry that you want changed */
char *dn = "uid=bjensen, ou=People, o=Airius.com";
/* Specify that you want to replace the value of an attribute */
attribute1.mod_op = LDAP_MOD_REPLACE;
/* Specify that you want to change the value of the mail attribute */
attribute1.mod_type = "mail";
/* Specify the new value of the mail attribute */
attribute1.mod_values = mail_values;
/* Add the change to the list of attributes that you want changed */
list_of_attrs[0] = &attribute_change;
list_of_attrs[1] = NULL;
/* Update the entry with the change */
if ( ldap_modify_s( ld, dn, list_of_attrs ) != LDAP_SUCCESS ) {ldap_perror( ld, "ldap_modify_s" );
return( 1 );
}
...
Last Updated: 10/01/98 17:05:28