Index: openldap-2.3.19/doc/man/man3/ldap.3
===================================================================
--- openldap-2.3.19.orig/doc/man/man3/ldap.3
+++ openldap-2.3.19/doc/man/man3/ldap.3
@@ -39,16 +39,21 @@ created using
 and set the protocol version to 3 by calling
 .BR ldap_set_option (3).
 The underlying session is established first operation is
-issued.  This would generally be a Start TLS or Bind operation.
+issued.  This would generally be a Start TLS or Bind operation,
+or a Search operation to read attributes of the Root DSE.
 A Start TLS operation is performed by calling
 .BR ldap_start_tls_s (3).
 A LDAP bind operation is performed by calling
 .BR ldap_sasl_bind (3)
-or one of its friends.  Subsequently, other operations are performed
+or one of its friends.
+A Search operation is performed by calling ldap_search_ext_s(3)
+or one of its friends.
+
+Subsequently, additional operations are performed
 by calling one of the synchronous or asynchronous routines (e.g.,
-.BR ldap_search_ext_s (3)
+.BR ldap_compare_ext_s (3)
 or
-.BR ldap_search_ext (3)
+.BR ldap_compare_ext (3)
 followed by
 .BR ldap_result (3)).
 Results returned from these routines are interpreted by calling the
Index: openldap-2.3.19/doc/man/man3/ldap_bind.3
===================================================================
--- openldap-2.3.19.orig/doc/man/man3/ldap_bind.3
+++ openldap-2.3.19/doc/man/man3/ldap_bind.3
@@ -1,9 +1,9 @@
 .TH LDAP_BIND 3 "RELEASEDATE" "OpenLDAP LDVERSION"
-.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_bind.3,v 1.16.2.5 2007/01/02 21:43:44 kurt Exp $
+.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_bind.3,v 1.19 2006/01/03 22:12:04 kurt Exp $
 .\" Copyright 1998-2007 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
-ldap_bind, ldap_bind_s, ldap_simple_bind, ldap_simple_bind_s, ldap_sasl_bind, ldap_sasl_bind_s, ldap_sasl_interactive_bind_s, ldap_parse_sasl_bind_result, ldap_unbind, ldap_unbind_s \- LDAP bind routines
+ldap_bind, ldap_bind_s, ldap_simple_bind, ldap_simple_bind_s, ldap_sasl_bind, ldap_sasl_bind_s, ldap_sasl_interactive_bind_s, ldap_parse_sasl_bind_result, ldap_unbind, ldap_unbind_s, ldap_unbind_ext, ldap_unbind_ext_s, ldap_set_rebind_proc \- LDAP bind routines
 .SH LIBRARY
 OpenLDAP LDAP (libldap, -lldap)
 .SH SYNOPSIS
@@ -58,6 +58,18 @@ OpenLDAP LDAP (libldap, -lldap)
 .\" .ft
 .\" LDAP *ld;
 .\" int (*rebindproc)();
+.LP
+.BI "int ldap_unbind_ext(LDAP *" ld ", LDAPControl *" sctrls "[],"
+.RS
+.BI LDAPControl *" cctrls "[]);"
+.RE
+.LP
+.BI "int ldap_unbind_ext_s(LDAP *" ld ", LDAPControl *" sctrls "[],"
+.RS
+.BI LDAPControl *" cctrls "[]);"
+.RE
+.LP
+.BI "int ldap_set_rebind_proc (LDAP *" ld ", LDAP_REBIND_PROC *" ldap_proc ", void *" params);"
 .SH DESCRIPTION
 .LP
 These routines provide various interfaces to the LDAP bind operation.
@@ -79,7 +91,6 @@ Both synchronous and asynchronous versio
 call are provided.  All routines
 take \fIld\fP as their first parameter, as returned from
 .BR ldap_init (3).
-.LP
 .SH SIMPLE AUTHENTICATION
 The simplest form of the bind call is
 .BR ldap_simple_bind_s() .
@@ -110,6 +121,41 @@ returns the message id of the request it
 returns an LDAP error indication.
 .SH SASL AUTHENTICATION
 Description still under construction...
+.SH REBINDING
+.LP
+The
+.B ldap_set_rebind_proc
+function() sets the process to use for binding when an operation returns a
+referral. This function is used when an application needs to bind to another server
+in order to follow a referral or search continuation reference.
+.LP
+The function takes \fIld\fP, the \fIrebind\fP function, and the \fIparams\fP,
+the arbitrary data like state information which the client might need to properly rebind.
+The LDAP_OPT_REFERRALS option in the \fIld\fP must be set to ON for the libraries
+to use the rebind function. Use the
+.BR ldap_set_option
+function to set the value.
+.LP
+The rebind function has the following syntax.
+.B int rebind_function (LDAP *ld, const char *url,int request,ber_int_t   msgid);
+.LP
+The \fIld\fP parameter must be used by the application when binding to the
+referred server if the application wants the libraries to follow the referral.
+.LP
+The \fIurl\fP parameter points to the URL referral string received from the LDAP server.
+The LDAP application can use the 
+.BR ldap_url_parse()
+.LP
+The \fIrequest\fP parameter specifies the request operation that generated the referral. 
+function to parse the string into its components.
+.LP
+The \fImsgid\fP parameter specifies the message ID of the request generating the referral.
+.LP
+The LDAP libraries set all the parameters when they call the rebind function. The application
+should not attempt to free either the ld or the url structures in the rebind function.
+.LP
+The application must supply to the rebind function the required authentication information such as,
+user name, password, and certificates. The rebind function must use a synchronous bind method.
 .SH UNBINDING
 The
 .B ldap_unbind()
@@ -154,16 +200,32 @@ both of these calls are synchronous in n
 .\" If anything but LDAP_SUCCESS is returned by the first call to
 .\" the rebindproc, then referral processing is stopped and that error code
 .\" is returned for the original LDAP operation.
+.LP
+The
+.B ldap_unbind_ext()
+and
+.B ldap_unbind_ext_s()
+allows the operations to sepicify  controls.
 .SH ERRORS
 Asynchronous routines will return -1 in case of error, setting the
 \fIld_errno\fP parameter of the \fIld\fP structure.  Synchronous
 routines return whatever \fIld_errno\fP is set to.  See
 .BR ldap_error (3)
 for more information.
+.SH NOTES
+If an anonymous bind is sufficient for the application,the rebind process
+need not be provided. The LDAP libraries with the LDAP_OPT_REFERRALS option
+set to ON (default value) will automatically follow referrals using an anonymous bind.
+.LP
+If the application needs stronger authentication than an anonymous bind,
+you need to provide a rebind process for that authentication method.
+The bind method must be synchronous.
 .SH SEE ALSO
 .BR ldap (3),
 .BR ldap_error (3),
 .BR ldap_open (3),
+.BR ldap_set_option (3),
+.BR ldap_url_parse (3)
 .B RFC 2222
 (http://www.ietf.org),
 .B Cyrus SASL
Index: openldap-2.3.19/doc/man/man3/ldap_bind.3.links
===================================================================
--- openldap-2.3.19.orig/doc/man/man3/ldap_bind.3.links
+++ openldap-2.3.19/doc/man/man3/ldap_bind.3.links
@@ -7,3 +7,4 @@ ldap_unbind.3
 ldap_unbind_ext.3
 ldap_unbind_s.3
 ldap_unbind_ext_s.3
+ldap_set_rebind_proc.3
Index: openldap-2.3.19/doc/man/man3/ldap_compare.3
===================================================================
--- openldap-2.3.19.orig/doc/man/man3/ldap_compare.3
+++ openldap-2.3.19/doc/man/man3/ldap_compare.3
@@ -1,9 +1,9 @@
 .TH LDAP_COMPARE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
-.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_compare.3,v 1.13.2.4 2007/01/02 21:43:44 kurt Exp $
+.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_compare.3,v 1.15 2006/01/03 22:12:04 kurt Exp $
 .\" Copyright 1998-2007 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
-ldap_compare, ldap_compare_s \- Perform an LDAP compare operation
+ldap_compare, ldap_compare_s, ldap_compare_ext, ldap_compare_ext_s \- Perform an LDAP compare operation.
 .SH LIBRARY
 OpenLDAP LDAP (libldap, -lldap)
 .SH SYNOPSIS
@@ -22,6 +22,23 @@ int ldap_compare(ld, dn, attr, value)
 .ft
 LDAP *ld;
 char *dn, *attr, *value;
+.LP
+.ft B
+int ldap_compare_ext(ld, dn, attr, bvalue, serverctrls, clientctrls, msgidp)
+.ft
+LDAP *ld;
+char *dn, *attr;
+const struct berval *bvalue;
+LDAPControl **serverctrls, **clientctrls;
+int *msgidp;
+.LP
+.ft B
+int ldap_compare_ext_s(ld, dn, attr, bvalue, serverctrls, clientctrls)
+.ft
+LDAP *ld;
+char *dn, *attr;
+const struct berval *bvalue;
+LDAPControl **serverctrls, **clientctrls;
 .SH DESCRIPTION
 The
 .B ldap_compare_s()
@@ -40,6 +57,20 @@ asynchronously.  It takes the same param
 but returns the message id of the request it initiated.  The result of
 the compare can be obtained by a subsequent call to
 .BR ldap_result (3).
+.LP
+The
+.B ldap_compare_ext()
+routine  allows  server  and client controls to be 
+specified to extend the compare request. This routine is asynchronous like 
+ldap_compare(),  but its return value is an LDAP error code. It stores the 
+message id of the request in the integer pointed to by msgidp.
+.LP
+The
+.B ldap_compare_ext_s()
+routine is the synchronous version of
+.BR ldap_compare_ext().
+It also returns an LDAP error code indicating success 
+or failure of the operation.
 .SH ERRORS
 .B ldap_compare_s()
 returns an LDAP error code which can be interpreted
@@ -48,6 +79,12 @@ by calling one of
 and friends.  ldap_compare() returns
 -1 if something went wrong initiating the request.  It returns the
 non-negative message id of the request if things went ok.
+.LP
+.B ldap_compare_ext_s()
+and
+.B ldap_compare_ext()
+return some Non-zero value other than 0x05 or 0x06 in case of failure.
+0x05 corresponds to LDAP_COMPARE_FALSE and 0x06 corresponds to LDAP_COMPARE_TRUE.
 .SH BUGS
 There is no way to compare binary values, but there should be.
 .SH SEE ALSO
Index: openldap-2.3.19/doc/man/man3/ldap_delete.3
===================================================================
--- openldap-2.3.19.orig/doc/man/man3/ldap_delete.3
+++ openldap-2.3.19/doc/man/man3/ldap_delete.3
@@ -1,9 +1,9 @@
 .TH LDAP_DELETE 3 "RELEASEDATE" "OpenLDAP LDVERSION"
-.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_delete.3,v 1.13.2.4 2007/01/02 21:43:44 kurt Exp $
+.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_delete.3,v 1.15 2006/01/03 22:12:04 kurt Exp $
 .\" Copyright 1998-2007 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
-ldap_delete, ldap_delete_s \- Perform an LDAP delete operation
+ldap_delete, ldap_delete_s, ldap_delete_ext, ldap_delete_ext_s \- Perform an LDAP delete operation.
 .SH LIBRARY
 OpenLDAP LDAP (libldap, -lldap)
 .SH SYNOPSIS
@@ -22,22 +22,51 @@ int ldap_delete(ld, dn)
 .ft
 LDAP *ld;
 char *dn;
+.LP
+.ft B
+int ldap_delete_ext(ld, dn, serverctrls, clientctrls, msgidp)
+.ft
+LDAP *ld;
+char *dn;
+LDAPControl **serverctrls, **clientctrls;
+int *msgidp;
+.LP
+.ft B
+int ldap_delete_ext_s(ld, dn, serverctrls, clientctrls)
+.ft
+LDAP *ld;
+char *dn;
+LDAPControl **serverctrls, **clientctrls;
 .SH DESCRIPTION
 The
 .B ldap_delete_s()
 routine is used to perform an LDAP delete operation
-synchronously.  It takes \fIdn\fP, the DN of the entry to be deleted.
+synchronously. It takes \fIdn\fP, the DN of the entry to be deleted.
 It returns an LDAP error code, indicating the success or failure of the
 operation.
 .LP
 The
 .B ldap_delete()
 routine is used to perform an LDAP delete operation
-asynchronously.  It takes the same parameters as
-.BR ldap_delete_s() ,
-but returns the message id of the request it initiated.  The result of
+asynchronously. It takes the same parameters as
+.BR ldap_delete_s(),
+but returns the message id of the request it initiated. The result of
 the delete can be obtained by a subsequent call to
 .BR ldap_result (3).
+.LP
+The
+.B ldap_delete_ext()
+routine  allows  server  and client controls to be 
+specified to extend the delete request. This routine is asynchronous like 
+ldap_delete(), but its return value is an LDAP error code. It stores the 
+message id of the request in the integer pointed to by msgidp.
+.LP
+The
+.B ldap_delete_ext_s()
+routine is the synchronous version of
+.BR ldap_delete_ext().
+It also returns an LDAP error code indicating success 
+or failure of the operation.
 .SH ERRORS
 .B ldap_delete_s()
 returns an LDAP error code which can be interpreted
@@ -45,8 +74,14 @@ by calling one of
 .BR ldap_perror (3)
 and friends.
 .B ldap_delete()
-returns -1 if something went wrong initiating the request.  It returns the
+returns -1 if something went wrong initiating the request. It returns the
 non-negative message id of the request if things went ok.
+.LP
+.B ldap_delete_ext()
+and
+.B ldap_delete_ext_s()
+return some Non-zero value if
+something  went wrong initiating the request, else return 0.
 .SH SEE ALSO
 .BR ldap (3),
 .BR ldap_error (3)
Index: openldap-2.3.19/doc/man/man3/ldap_extended_operation.3
===================================================================
--- /dev/null
+++ openldap-2.3.19/doc/man/man3/ldap_extended_operation.3
@@ -0,0 +1,64 @@
+.TH LDAP_EXTENDED_OPERATION 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_extended_operation.3,v 1.17 2006/01/03 22:12:04 kurt Exp $
+.\" Copyright 1998-2006 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
+.SH NAME
+ldap_extended_operation, ldap_extended_operation_s \- Extends the LDAP operations to the LDAP server.
+.SH LIBRARY
+OpenLDAP LDAP (libldap, -lldap)
+.SH SYNOPSIS
+.nf
+.ft B
+#include <ldap.h>
+.LP
+.ft B
+int ldap_extended_operation( ld, requestoid, requestdata, sctrls[], cctrls[], msgidp );
+.ft
+LDAP *ld;
+const char *requestoid;
+const struct berval *requestdata;
+LDAPControl *sctrls[], *cctrls[];
+int *msgidp;
+.LP
+.ft B
+int ldap_extended_operation_s( ld, requestoid, requestdata, sctrls[], cctrls[], retoidp, retdatap ); 
+.ft
+LDAP *ld,
+const char *requestoid;
+const struct berval *requestdata;
+LDAPControl *sctrls[], *cctrls[];
+char **retoidp;
+struct berval **retdatap;
+.SH DESCRIPTION
+The
+.B ldap_extended_operation_s
+method is used to synchronously send an extended operation to the server.
+It takes \fIrequestoid\fP, which points to a dotted OID text string identifying
+the extended operation to perform. \fIrequestdata\fP is the data required for the
+operation, \fIseverctrls\fP is an array of LDAPControl structures to use with this
+extended operation,\fIclientctrls\fP is an array of LDAPControl structures that list
+the client controls to use with this extended operation .The input parameter
+\fIretoidp\fP points to a dotted-OID text string returned by the LDAP server.
+The memory used by the string should be freed with the ldap_memfree function.
+retdatap is an output parameter which points to a pointer to a berval structure
+that contains the returned data. If no data is returned, the server set this
+to NULL. The memory used by this structure should be freed with the ber_bvfree
+function.
+.LP
+The
+.B ldap_extended_operation
+works just like ldap_extended_operation_s, but the operation is asynchornous.
+It returns the message id of the request it initiated.
+The result of this operation can be obtained by calling
+.BR ldap_result(3).
+.SH NOTES
+The LDAP server must support the operation; otherwise an
+LDAP_NOT_SUPPORTED error is returned.
+.SH SEE ALSO
+.BR ldap_result (3),
+.BR ldap_parse_extended_result (3)
+.SH ACKNOWLEDGEMENTS
+.B OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
Index: openldap-2.3.19/doc/man/man3/ldap_extended_operation.3.links
===================================================================
--- /dev/null
+++ openldap-2.3.19/doc/man/man3/ldap_extended_operation.3.links
@@ -0,0 +1,2 @@
+ldap_extended_operation_s.3
+
Index: openldap-2.3.19/doc/man/man3/ldap_parse_sort_control.3
===================================================================
--- /dev/null
+++ openldap-2.3.19/doc/man/man3/ldap_parse_sort_control.3
@@ -0,0 +1,44 @@
+.TH LDAP_PARSE_SORT-CONTROL 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_parse_sort_control.3,v 1.15 2006/01/03 22:12:04 kurt Exp $
+.\" Copyright 1998-2006 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
+.SH NAME
+ldap_parse_sort_control \- Decodes the information returned from a search operation
+that used a server-side sort control.
+.SH LIBRARY
+OpenLDAP LDAP (libldap, -lldap)
+.SH SYNOPSIS
+.nf
+.ft B
+#include <ldap.h>
+.LP
+.ft B
+int ldap_parse_sort_control(ld, ctrls, returnCode, attribute)
+.ft
+LDAP *ld;
+LDAPControl **ctrls;
+unsigned long *returnCode;
+char **attribute;
+.SH DESCRIPTION
+This function is used to parse the results returned in a search operation
+that uses a server-side sort control.
+.LP
+It takes a null terminated array of LDAPControl structures usually obtained
+by a call to the 
+.BR ldap_parse_result
+function. A returncode which points to the sort control result code,and an array
+of LDAPControl structures that list the client controls to use with the search.
+The function also takes an out parameter \fIattribute\fP and if the sort operation
+fails, the server may return a string that indicates the first attribute in the
+sortKey list that caused the failure. If this parameter is NULL, no string is
+returned. If a string is returned, the memory should be freed by calling the
+ldap_memfree function.
+.SH NOTES
+.SH SEE ALSO
+.BR ldap_result (3),
+.BR ldap_controls_free (3)
+.SH ACKNOWLEDGEMENTS
+.B OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
Index: openldap-2.3.19/doc/man/man3/ldap_parse_vlv_control.3
===================================================================
--- /dev/null
+++ openldap-2.3.19/doc/man/man3/ldap_parse_vlv_control.3
@@ -0,0 +1,53 @@
+.TH LDAP_PARSE_VLV_CONTROL 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_parse_vlv_control.3,v 1.17 2006/01/03 22:12:04 kurt Exp $
+.\" Copyright 1998-2006 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
+.SH NAME
+ldap_parse_vlv_control \- Decodes the information returned from a search operation that
+used a VLV (virtual list view) control.
+.SH LIBRARY
+OpenLDAP LDAP (libldap, -lldap)
+.SH SYNOPSIS
+.nf
+.ft B
+#include <ldap.h>
+.LP
+.ft B
+int ldap_parse_vlv_control( ld, ctrlp, target_posp, list_countp, contextp, errcodep );  
+.ft
+LDAP *ld;
+LDAPControl **ctrlp;
+unsigned long *target_posp, *list_countp;
+struct berval **contextp;
+int *errcodep;
+.SH DESCRIPTION
+The
+.B ldap_parse_vlv_control
+is used to decode the information returned from a search operation that used a
+VLV (virtual list view)control. It takes a null terminated array of LDAPControl
+structures, usually obtained by a call to the 
+.BR ldap_parse_result function,
+a \fItarget_pos\fP which points to the list index of the target entry. If
+this parameter is NULL, the target position is not returned. The index returned 
+is an approximation of the position of the target entry. It is
+not guaranteed to be exact. The parameter \fIlist_countp\fP points to 
+the server's estimate of the size of the list. If this parameter is NULL, the
+size is not returned. \fIcontextp\fP is a pointer to the address of a berval
+structure that contains a server-generated context identifier if server returns
+one. If server does not return a context identifier, the server returns a NULL
+in this parameter. If this parameter is set to NULL, the context identifier is
+not returned. You should use this returned context in the next call to
+create a VLV control. When the berval structure is no longer needed, you should
+free the memory by calling the \fIber_bvfree function.e\fP
+\fIerrcodep\fP is an output paremeter, which points to the result code returned
+by the server. If this parameter is NULL, the result code is not returned.
+.LP 
+See
+ldap.h for a list of possible return codes.
+.SH SEE ALSO
+.BR ldap_search (3)
+.SH ACKNOWLEDGEMENTS
+.B OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
Index: openldap-2.3.19/doc/man/man3/ldap_rename.3
===================================================================
--- /dev/null
+++ openldap-2.3.19/doc/man/man3/ldap_rename.3
@@ -0,0 +1,69 @@
+.TH LDAP_RENAME 3 "RELEASEDATE" "OpenLDAP LDVERSION"
+.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_rename.3,v 1.17 2006/01/03 22:12:04 kurt Exp $
+.\" Copyright 1998-2006 The OpenLDAP Foundation All Rights Reserved.
+.\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
+.SH NAME
+ldap_rename, ldap_rename_s \- Renames the specified entry.
+.SH LIBRARY
+OpenLDAP LDAP (libldap, -lldap)
+.SH SYNOPSIS
+.nf
+.ft B
+#include <ldap.h>
+.LP
+.ft B
+int ldap_rename( ld, dn, newrdn, newparent, deleteoldrdn, sctrls[], cctrls[], msgidp );
+.ft
+LDAP *ld;
+const char *dn, *newrdn, *newparent;
+int deleteoldrdn;
+LDAPControl *sctrls[], *cctrls[];
+int *msgidp);
+.LP
+.ft B
+int ldap_rename_s( ld, dn, newrdn, newparent, deleteoldrdn, sctrls[], cctrls[] );
+.ft
+LDAP *ld;
+const char *dn, *newrdn, *newparent;
+int deleteoldrdn;
+LDAPControl *sctrls[], *cctrls[];
+.SH DESCRIPTION
+These routines are used to perform a LDAP rename operation.
+The function changes the leaf component of an entry's distinguished
+name and  optionally moves the entry to a new parent container. The 
+.B ldap_rename_s
+performs a rename operation synchronously.
+The method takes \fIdn\fP, which points to the distinguished name of
+the entry whose attribute is being compared, \fInewparent\fP,the distinguished
+name of the entry's new parent. If this parameter is NULL, only the RDN is changed.
+The root DN is specified by passing a zero length string, "". 
+\fIdeleteoldrdn\fP specifies whether the old RDN should be retained or deleted.
+Zero indicates that the old RDN should be retained. If you choose this option,
+the attribute will contain both names (the old and the new).
+Non-zero indicates that the old RDN should be deleted.
+\fIserverctrls\fP points to an array of LDAPControl structures that list the
+client controls to use with this extended operation. Use NULL to specify
+no client controls. \fIclientctrls\fP points to an array of LDAPControl 
+structures that list the client controls to use with the search.
+.LP
+.B ldap_rename
+works just like
+.B ldap_rename_s,
+but the operation is asynchornous. It returns the message id of the request
+it initiated. The result of this operation can be obtained by calling
+.BR ldap_result(3).
+.SH ERRORS
+.B ldap_rename()
+returns -1 in case of error initiating the request, and
+will set the \fIld_errno\fP field in the \fIld\fP parameter to
+indicate the error.
+.BR ldap_rename_s()
+returns the LDAP error code resulting from the rename operation.
+.SH SEE ALSO
+.BR ldap (3),
+.BR ldap_modify (3)
+.SH ACKNOWLEDGEMENTS
+.B OpenLDAP
+is developed and maintained by The OpenLDAP Project (http://www.openldap.org/).
+.B OpenLDAP
+is derived from University of Michigan LDAP 3.3 Release.  
Index: openldap-2.3.19/doc/man/man3/ldap_rename.3.links
===================================================================
--- /dev/null
+++ openldap-2.3.19/doc/man/man3/ldap_rename.3.links
@@ -0,0 +1,2 @@
+ldap_rename_s.3
+
Index: openldap-2.3.19/doc/man/man3/ldap_result.3
===================================================================
--- openldap-2.3.19.orig/doc/man/man3/ldap_result.3
+++ openldap-2.3.19/doc/man/man3/ldap_result.3
@@ -1,5 +1,5 @@
 .TH LDAP_RESULT 3 "RELEASEDATE" "OpenLDAP LDVERSION"
-.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_result.3,v 1.16.2.4 2007/01/02 21:43:45 kurt Exp $
+.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_result.3,v 1.20 2006/01/03 22:12:04 kurt Exp $
 .\" Copyright 1998-2007 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
@@ -72,7 +72,8 @@ all references, all extended partial res
 result have been received.
 .LP
 Upon success, the type of the result received is returned and the
-\fIresult\fP parameter will contain the result of the operation.  This
+\fIresult\fP parameter will contain the result of the operation;
+otherwise, the \fIresult\fP parameter is undefined.  This
 result should be passed to the LDAP parsing routines,
 .BR ldap_first_message (3)
 and friends, for interpretation.
Index: openldap-2.3.19/doc/man/man3/ldap_search.3
===================================================================
--- openldap-2.3.19.orig/doc/man/man3/ldap_search.3
+++ openldap-2.3.19/doc/man/man3/ldap_search.3
@@ -1,9 +1,9 @@
 .TH LDAP_SEARCH 3 "RELEASEDATE" "OpenLDAP LDVERSION"
-.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_search.3,v 1.17.2.6 2007/01/02 21:43:45 kurt Exp $
+.\" $OpenLDAP: pkg/ldap/doc/man/man3/ldap_search.3,v 1.21 2006/01/03 22:12:04 kurt Exp $
 .\" Copyright 1998-2007 The OpenLDAP Foundation All Rights Reserved.
 .\" Copying restrictions apply.  See COPYRIGHT/LICENSE.
 .SH NAME
-ldap_search, ldap_search_s, ldap_search_st \- Perform an LDAP search operation
+ldap_search, ldap_search_s, ldap_search_st, ldap_search_ext, ldap_search_ext_s \- Perform an LDAP search operation
 .SH LIBRARY
 OpenLDAP LDAP (libldap, -lldap)
 .SH SYNOPSIS
@@ -41,6 +41,35 @@ char *filter, *attrs[]
 int attrsonly;
 struct timeval *timeout;
 LDAPMessage **res;
+.LP
+.ft B
+int ldap_search_ext(ld, base, scope, filter, attrs, attrsonly, serverctrls,
+.ft
+clientctrls, timeout, sizelimit, msgidp)
+.ft
+LDAP *ld;
+char *base;
+int scope;
+char *filter, *attrs[]
+int attrsonly;
+LDAPControl **serverctrls, **clientctrls; 
+struct timeval *timeout;
+int sizelimit, *msgidp;
+.LP
+.ft B
+int ldap_search_ext_s(ld, base, scope, filter, attrs, attrsonly, serverctrls,
+.ft
+clientctrls, timeout, sizelimit, res)
+.ft
+LDAP *ld;
+char *base;
+int scope;
+char *filter, *attrs[]
+int attrsonly;
+LDAPControl **serverctrls, **clientctrls; 
+struct timeval *timeout;
+int sizelimit;
+LDAPMessage **res;
 .SH DESCRIPTION
 These routines are used to perform LDAP search operations.
 .B ldap_search_s()
@@ -59,6 +88,7 @@ LDAP_SCOPE_ONELEVEL, to search the objec
 or LDAP_SCOPE_SUBTREE, to search the object and all its descendants.
 .LP
 \fIFilter\fP is a string
+
 representation of the filter to apply in the search.  Simple filters
 can be specified as \fI(attributetype=attributevalue)\fP.  More complex
 filters are specified using a prefix notation according to the following
@@ -99,8 +129,24 @@ To request no attributes, the type "1.1"
 should be listed by itself.
 .LP
 \fIAttrsonly\fP should be set to 1 if
-only attribute types are wanted.  It should be set to 0 if both
+only attribute types are wanted. It should be set to 0 if both
 attributes types and attribute values are wanted.
+.LP
+.B ldap_search_ext()
+routine allows server and client controls to be specified to extend
+the search request. This routine is asynchronous like
+.BR ldap_search() ,
+but its return value is an LDAP error code. It stores the message id
+of the request in the integer pointed to
+by
+.IR msgidp .
+.LP
+The
+.B ldap_search_ext_s()
+routine is the synchronous version of
+.BR ldap_search_ext().
+It also returns an LDAP error code indicating success or failure
+of the operation.
 .SH ERRORS
 .B ldap_search_s()
 and
@@ -111,15 +157,28 @@ See
 for details.
 .B ldap_search()
 returns -1 in case of trouble.
+.LP
+.B ldap_search_s(),
+.B ldap_search_ext_s
+and
+.B ldap_search_st()
+will return the LDAP error code resulting from the search operation.
+See
+.BR  ldap_error (3)
+for  details.
+.B ldap_search()
+and
+.B ldap_search_ext
+returns -1 in case of trouble.
 .SH NOTES
 Note that both read
 and list functionality are subsumed by these routines,
 by using a filter like "(objectclass=*)" and a scope of LDAP_SCOPE_BASE (to
 emulate read) or LDAP_SCOPE_ONELEVEL (to emulate list).
 .LP
-These routines may dynamically allocate memory.  The caller is
+These routines may dynamically allocate memory. The caller is
 responsible for freeing such memory using supplied deallocation
-routines.  Return values are contained in <ldap.h>.
+routines. Return values are contained in <ldap.h>.
 .SH SEE ALSO
 .BR ldap (3),
 .BR ldap_result (3),