---
name: "ldap_url_parse"
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_url"
---

# ldap\_url\_parse(3)

LDAP Uniform Resource Locator routines

Part of [ldap\_url(3)](/ldap_url/3.md).

## NAME

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

## LIBRARY

OpenLDAP LDAP (libldap, -lldap)

## 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

**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

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

## 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.**
