# ldap_controls

## NAME



           ldap_control_create, ldap_control_find, ldap_control_dup,
           ldap_controls_dup, ldap_control_free, ldap_controls_free - LDAP
           control manipulation routines
    


## LIBRARY



           OpenLDAP LDAP (libldap, -lldap)
    


## SYNOPSIS



           **#include <ldap.h>**
    
           **int ldap_control_create(const char ***_oid_**, int** _iscritical_**, struct**
           **berval ***_value_**, int** _dupval_**, LDAPControl ****_ctrlp_**);**
    
           **LDAPControl *ldap_control_find( const char ***_oid_**, LDAPControl**
           ******_ctrls_**, LDAPControl *****_nextctrlp_**);**
    
           **LDAPControl *ldap_control_dup(LDAPControl ***_ctrl_**);**
    
           **LDAPControl **ldap_controls_dup(LDAPControl ****_ctrls_**);**
    
           **void ldap_control_free(LDAPControl ***_ctrl_**);**
    
           **void ldap_controls_free(LDAPControl ****_ctrls_**);**
    


## DESCRIPTION



           These routines are used to manipulate structures used for LDAP
           controls.
    
           **ldap_control_create**() creates a control with the specified _OID_
           using the contents of the _value_ parameter for the control value,
           if any.  The content of _value_ is duplicated if _dupval_ is non-zero.
           The _iscritical_ parameter must be non-zero for a critical control.
           The created control is returned in the _ctrlp_ parameter.  The
           routine returns **LDAP_SUCCESS** on success or some other error code
           on failure.  The content of _value_ , for supported control types,
           can be prepared using helpers provided by this implementation of
           libldap, usually in the form **ldap_create_ <control**
           **name >_control_value**().  Otherwise, it can be BER-encoded using the
           functionalities of liblber.
    
           **ldap_control_find**() searches the NULL-terminated _ctrls_ array for a
           control whose OID matches the _oid_ parameter.  The routine returns
           a pointer to the control if found, NULL otherwise.  If the
           parameter _nextctrlp_ is not NULL, on return it will point to the
           next control in the array, and can be passed to the
           **ldap_control_find**() routine for subsequent calls, to find further
           occurrences of the same control type.  The use of this function is
           discouraged; the recommended way of handling controls in responses
           consists in going through the array of controls, dealing with each
           of them in the returned order, since it could matter.
    
           **ldap_control_dup**() duplicates an individual control structure, and
           **ldap_controls_dup**() duplicates a NULL-terminated array of
           controls.
    
           **ldap_control_free**() frees an individual control structure, and
           **ldap_controls_free**() frees a NULL-terminated array of controls.
    


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


* * *