LDAP\_URL(3) Library Functions Manual LDAP\_URL(3)

# [NAME](#NAME)

ldap\_is\_ldap\_url, ldap\_url\_parse, ldap\_free\_urldesc - LDAP Uniform Resource Locator routines

# [LIBRARY](#LIBRARY)

OpenLDAP LDAP (libldap, -lldap)

# [SYNOPSIS](#SYNOPSIS)

```
#include <ldap.h>
```

```
int ldap_is_ldap_url( const char *url )
```

```
int ldap_url_parse( const char *url, LDAPURLDesc **ludpp )
```

```
typedef struct ldap_url_desc {


    char *      lud_scheme;     /* URI scheme */


    char *      lud_host;       /* LDAP host to contact */


    int         lud_port;       /* port on host */


    char *      lud_dn;         /* base for search */


    char **     lud_attrs;      /* list of attributes */


    int         lud_scope;      /* a LDAP_SCOPE_... value */


    char *      lud_filter;     /* LDAP search filter */


    char **     lud_exts;       /* LDAP extensions */


    int         lud_crit_exts;  /* true if any extension is critical */


    /* may contain additional fields for internal use */
} LDAPURLDesc;
```

```
void ldap_free_urldesc( LDAPURLDesc *ludp );
```

# [DESCRIPTION](#DESCRIPTION)

These routines support the use of LDAP URLs (Uniform Resource Locators) as detailed in RFC 4516. LDAP URLs look like this:

```


  ldap://hostport/dn[?attrs[?scope[?filter[?exts]]]]
where:


  hostport is a host name with an optional ":portnumber"


  dn is the search base


  attrs is a comma separated list of attributes to request


  scope is one of these three strings:


    base one sub (default=base)


  filter is filter


  exts are recognized set of LDAP and/or API extensions.
Example:


  ldap://ldap.example.net/dc=example,dc=net?cn,sn?sub?(cn=*)
```

URLs that are wrapped in angle-brackets and/or preceded by "URL:" are also tolerated. Alternative LDAP schemes such as ldaps:// and ldapi:// may be parsed using the below routines as well.

**ldap\_is\_ldap\_url()** returns a non-zero value if *url* looks like an LDAP URL (as opposed to some other kind of URL). It can be used as a quick check for an LDAP URL; the **ldap\_url\_parse()** routine should be used if a more thorough check is needed.

**ldap\_url\_parse()** breaks down an LDAP URL passed in *url* into its component pieces. If successful, zero is returned, an LDAP URL description is allocated, filled in, and *ludpp* is set to point to it. If an error occurs, a non-zero URL error code is returned.

**ldap\_free\_urldesc()** should be called to free an LDAP URL description that was obtained from a call to **ldap\_url\_parse().**

# [SEE ALSO](#SEE_ALSO)

```
ldap(3)
RFC 4516 <http://www.rfc-editor.org/rfc/rfc4516.txt>
```

# [ACKNOWLEDGEMENTS](#ACKNOWLEDGEMENTS)

**OpenLDAP Software** is developed and maintained by The OpenLDAP Project &lt;http://www.openldap.org/&gt;. **OpenLDAP Software** is derived from the University of Michigan LDAP 3.3 Release.

2026/10/21 OpenLDAP 2.6.16

---

Document: ldap_is_ldap_url(3) from openldap-2.6 2.6.16-r2 (Chainguard OS)
Source: https://git.openldap.org/openldap/openldap.git
