---
name: "ldap_add_ext"
section: "3"
platform: "linux"
package: "libldap"
version: "2.7.2-2"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/ldap_add"
---

# ldap\_add\_ext(3)

Perform an LDAP add operation

Part of [ldap\_add(3)](/ldap_add/3.md).

## NAME

ldap\_add\_ext, ldap\_add\_ext\_s - Perform an LDAP add operation

## LIBRARY

OpenLDAP LDAP (libldap, -lldap)

## SYNOPSIS

**#include \<ldap.h\>**

```
int ldap_add_ext(
LDAP *ld,
const char *dn,
LDAPMod **attrs,
LDAPControl **sctrls,
LDAPControl **cctrls,
int *msgidp );
```

```
int ldap_add_ext_s(
LDAP *ld,
const char *dn,
LDAPMod **attrs,
LDAPControl *sctrls,
LDAPControl *cctrls );
```

## DESCRIPTION

**The** **ldap\_add\_ext\_s()** **routine is used to perform an LDAP add operation.** **It takes** *dn***, the DN of the entry to add, and** *attrs***, a** **null-terminated array of the entry's attributes.  The LDAPMod structure** **is used to represent attributes, with the** *mod\_type* **and** *mod\_values* **fields being used as described under** [**ldap\_modify\_ext**(3)](/ldap_modify_ext/3.md), **and the** *ldap\_op* **field being used only if you need to specify** **the LDAP\_MOD\_BVALUES option. Otherwise, it should be set to zero.**

**Note that all entries except that** **specified by the last component in the given DN must already exist.** **ldap\_add\_ext\_s()** **returns an code indicating success or, in the case of failure,** **indicating the nature of failure of the operation.  See** [**ldap\_error**(3)](/ldap_error/3.md) **for more details.**

**The** **ldap\_add\_ext()** **routine works just like** **ldap\_add\_ext\_s()**, **but it is asynchronous.  It returns the message id of the request it** **initiated.  The result of this operation can be obtained by calling** [**ldap\_result**(3)](/ldap_result/3.md).

## DEPRECATED INTERFACES

**The** **ldap\_add**() **and** **ldap\_add\_s**() **routines are deprecated in favor of the** **ldap\_add\_ext**() **and** **ldap\_add\_ext\_s**() **routines, respectively.**

**Deprecated interfaces generally remain in the library.  The macro** **LDAP\_DEPRECATED can be defined to a non-zero value** **(e.g., -DLDAP\_DEPRECATED=1) when compiling program designed to use** **deprecated interfaces.  It is recommended that developers writing new** **programs, or updating old programs, avoid use of deprecated interfaces.** **Over time, it is expected that documentation (and, eventually, support) for** **deprecated interfaces to be eliminated.**

## SEE ALSO

[**ldap**(3)](/ldap/3.md), [**ldap\_error**(3)](/ldap_error/3.md), [**ldap\_modify**(3)](/ldap_modify/3.md)

## ACKNOWLEDGEMENTS

**OpenLDAP Software** **is developed and maintained by The OpenLDAP Project \<http://www.openldap.org/\>.** **OpenLDAP Software** **is derived from the University of Michigan LDAP 3.3 Release.**
