---
name: "ldap_url_search"
section: "3"
platform: "linux"
package: "libldap2-dev"
version: "2.0.23-6.3"
release: "Debian 3.0 (Woody)"
platforms: ["linux"]
url: "https://new.carta.tech/ldap_url"
---

# ldap\_url\_search(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\_url\_search, ldap\_url\_search\_s, ldap\_url\_search\_st - LDAP Uniform Resource Locator routines

## SYNOPSIS

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

**int ldap\_is\_ldap\_url( url )** char		\*url;

**int ldap\_url\_parse( url, ludpp )** 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 \*/\
     /\* may contain additional fields for internal use \*/ } LDAPURLDesc;

**ldap\_free\_urldesc( ludp )** LDAPURLDesc	\*ludp;

**int ldap\_url\_search( ld, url, attrsonly )** LDAP		\*ld; char		\*url; int		attrsonly;

**int ldap\_url\_search\_s( ld, url, attrsonly, res )** LDAP		\*ld; char		\*url; int		attrsonly; LDAPMessage	\*\*res;

**int ldap\_url\_search\_st( ld, url, attrsonly, timeout, res )** LDAP		\*ld; char		\*url; int		attrsonly; struct timeval	\*timeout; LDAPMessage	\*\*res;

## DESCRIPTION

These routines support the use of LDAP URLs (Uniform Resource Locators) as detailed in RFC 2255.  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 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().**

**ldap\_url\_search()** initiates an asynchronous LDAP search based on the contents of the *url* string.  This routine acts just like [**ldap\_search**(3)](/ldap_search/3.md) except that many search parameters are pulled out of the URL.

**ldap\_url\_search\_s()** performs a synchronous LDAP search based on the contents of the *url* string.  This routine acts just like [**ldap\_search\_s**(3)](/ldap_search_s/3.md) except that many search parameters are pulled out of the URL.

**ldap\_url\_search\_st()** performs a synchronous LDAP URL search with a specified *timeout*. This routine acts just like [**ldap\_search\_st**(3)](/ldap_search_st/3.md) except that many search parameters are pulled out of the URL.

## SEE ALSO

[**ldap**(3)](/ldap/3.md), [**ldap\_search**(3)](/ldap_search/3.md)

**The LDAP URL Format, RFC 2255,** Tim Howes and Mark Smith, December 1997.

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