summaryrefslogtreecommitdiffstats
path: root/ldap/c-sdk/libraries/libprldap/ldappr-public.c
diff options
context:
space:
mode:
Diffstat (limited to 'ldap/c-sdk/libraries/libprldap/ldappr-public.c')
-rw-r--r--ldap/c-sdk/libraries/libprldap/ldappr-public.c454
1 files changed, 0 insertions, 454 deletions
diff --git a/ldap/c-sdk/libraries/libprldap/ldappr-public.c b/ldap/c-sdk/libraries/libprldap/ldappr-public.c
deleted file mode 100644
index 6e9e597e6..000000000
--- a/ldap/c-sdk/libraries/libprldap/ldappr-public.c
+++ /dev/null
@@ -1,454 +0,0 @@
-/* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is Mozilla Communicator client code, released
- * March 31, 1998.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 1998-1999
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either of the GNU General Public License Version 2 or later (the "GPL"),
- * or the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
-/*
- * Public interface for libprldap -- use NSPR (Netscape Portable Runtime)
- * I/O, threads, etc. with libldap.
- *
- */
-
-#include "ldappr-int.h"
-#include <private/pprio.h>
-
-/*
- * Function: prldap_init().
- *
- * Create a new LDAP session handle, but with NSPR I/O, threading, and DNS
- * functions installed.
- *
- * Pass a non-zero value for the 'shared' parameter if you plan to use
- * this LDAP * handle from more than one thread.
- *
- * prldap_init() returns an LDAP session handle (or NULL if an error occurs).
- */
-LDAP * LDAP_CALL
-prldap_init( const char *defhost, int defport, int shared )
-{
- LDAP *ld;
-
- if (( ld = ldap_init( defhost, defport )) != NULL ) {
- if ( prldap_install_routines( ld, shared ) != LDAP_SUCCESS ) {
- prldap_set_system_errno( EINVAL ); /* XXXmcs: just a guess! */
- ldap_unbind( ld );
- ld = NULL;
- }
- }
-
- return( ld );
-}
-
-
-/*
- * Function: prldap_install_routines().
- *
- * Install NSPR I/O, threading, and DNS functions so they will be used by
- * 'ld'.
- *
- * If 'ld' is NULL, the functions are installed as the default functions
- * for all new LDAP * handles).
- *
- * Pass a non-zero value for the 'shared' parameter if you plan to use
- * this LDAP * handle from more than one thread.
- *
- * prldap_install_routines() returns an LDAP API error code (LDAP_SUCCESS
- * if all goes well).
- */
-int LDAP_CALL
-prldap_install_routines( LDAP *ld, int shared )
-{
-
- if ( prldap_install_io_functions( ld, shared ) != 0
- || prldap_install_thread_functions( ld, shared ) != 0
- || prldap_install_dns_functions( ld ) != 0 ) {
- return( ldap_get_lderrno( ld, NULL, NULL ));
- }
-
- return( LDAP_SUCCESS );
-}
-
-
-/*
- * Function: prldap_set_session_option().
- *
- * Given an LDAP session handle or a session argument such is passed to
- * SOCKET, POLL, NEWHANDLE, or DISPOSEHANDLE extended I/O callbacks, set
- * an option that affects the prldap layer.
- *
- * If 'ld' and 'session" are both NULL, the option is set as the default
- * for all new prldap sessions.
- *
- * Returns an LDAP API error code (LDAP_SUCCESS if all goes well).
- */
-int LDAP_CALL
-prldap_set_session_option( LDAP *ld, void *sessionarg, int option, ... )
-{
- int rc = LDAP_SUCCESS; /* optimistic */
- PRLDAPIOSessionArg *prsessp = NULL;
- va_list ap;
-
- if ( NULL != ld ) {
- if ( LDAP_SUCCESS !=
- ( rc = prldap_session_arg_from_ld( ld, &prsessp ))) {
- return( rc );
- }
- } else if ( NULL != sessionarg ) {
- prsessp = (PRLDAPIOSessionArg *)sessionarg;
- }
-
- va_start( ap, option );
- switch ( option ) {
- case PRLDAP_OPT_IO_MAX_TIMEOUT:
- rc = prldap_set_io_max_timeout( prsessp, va_arg( ap, int ));
- break;
- default:
- rc = LDAP_PARAM_ERROR;
- }
- va_end( ap );
-
- return( rc );
-}
-
-
-/*
- * Function: prldap_get_session_option().
- *
- * Given an LDAP session handle or a session argument such is passed to
- * SOCKET, POLL, NEWHANDLE, or DISPOSEHANDLE extended I/O callbacks, retrieve
- * the setting for an option that affects the prldap layer.
- *
- * If 'ld' and 'session" are both NULL, the default option value for all new
- * new prldap sessions is retrieved.
- *
- * Returns an LDAP API error code (LDAP_SUCCESS if all goes well).
- */
-int LDAP_CALL prldap_get_session_option( LDAP *ld, void *sessionarg,
- int option, ... )
-{
- int rc = LDAP_SUCCESS; /* optimistic */
- PRLDAPIOSessionArg *prsessp = NULL;
- va_list ap;
-
- if ( NULL != ld ) {
- if ( LDAP_SUCCESS !=
- ( rc = prldap_session_arg_from_ld( ld, &prsessp ))) {
- return( rc );
- }
- } else if ( NULL != sessionarg ) {
- prsessp = (PRLDAPIOSessionArg *)sessionarg;
- }
-
- va_start( ap, option );
- switch ( option ) {
- case PRLDAP_OPT_IO_MAX_TIMEOUT:
- rc = prldap_get_io_max_timeout( prsessp, va_arg( ap, int * ));
- break;
- default:
- rc = LDAP_PARAM_ERROR;
- }
- va_end( ap );
-
- return( rc );
-}
-
-
-/*
- * Function: prldap_set_session_info().
- *
- * Given an LDAP session handle, set some application-specific data.
- *
- * Returns an LDAP API error code (LDAP_SUCCESS if all goes well).
- */
-int LDAP_CALL
-prldap_set_session_info( LDAP *ld, void *sessionarg, PRLDAPSessionInfo *seip )
-{
- int rc;
- PRLDAPIOSessionArg *prsessp;
-
- if ( seip == NULL || PRLDAP_SESSIONINFO_SIZE != seip->seinfo_size ) {
- ldap_set_lderrno( ld, LDAP_PARAM_ERROR, NULL, NULL );
- return( LDAP_PARAM_ERROR );
- }
-
- if ( NULL != ld ) {
- if ( LDAP_SUCCESS !=
- ( rc = prldap_session_arg_from_ld( ld, &prsessp ))) {
- return( rc );
- }
- } else if ( NULL != sessionarg ) {
- prsessp = (PRLDAPIOSessionArg *)sessionarg;
- } else {
- ldap_set_lderrno( ld, LDAP_PARAM_ERROR, NULL, NULL );
- return( LDAP_PARAM_ERROR );
- }
-
- prsessp->prsess_appdata = seip->seinfo_appdata;
- return( LDAP_SUCCESS );
-}
-
-
-/*
- * Function: prldap_get_session_info().
- *
- * Given an LDAP session handle, retrieve some application-specific data.
- *
- * Returns an LDAP API error code (LDAP_SUCCESS if all goes well, in
- * which case the fields in the structure that seip points to are filled in).
- */
-int LDAP_CALL
-prldap_get_session_info( LDAP *ld, void *sessionarg, PRLDAPSessionInfo *seip )
-{
- int rc;
- PRLDAPIOSessionArg *prsessp;
-
- if ( seip == NULL || PRLDAP_SESSIONINFO_SIZE != seip->seinfo_size ) {
- ldap_set_lderrno( ld, LDAP_PARAM_ERROR, NULL, NULL );
- return( LDAP_PARAM_ERROR );
- }
-
- if ( NULL != ld ) {
- if ( LDAP_SUCCESS !=
- ( rc = prldap_session_arg_from_ld( ld, &prsessp ))) {
- return( rc );
- }
- } else if ( NULL != sessionarg ) {
- prsessp = (PRLDAPIOSessionArg *)sessionarg;
- } else {
- ldap_set_lderrno( ld, LDAP_PARAM_ERROR, NULL, NULL );
- return( LDAP_PARAM_ERROR );
- }
-
- seip->seinfo_appdata = prsessp->prsess_appdata;
- return( LDAP_SUCCESS );
-}
-
-
-/*
- * Function: prldap_set_socket_info().
- *
- * Given an integer fd and a void * argument such as those passed to the
- * extended I/O callback functions, set socket specific information.
- *
- * Returns an LDAP API error code (LDAP_SUCCESS if all goes well).
- *
- * Note: it is only safe to change soinfo_prfd from within the SOCKET
- * extended I/O callback function.
- */
-int LDAP_CALL
-prldap_set_socket_info( int fd, void *socketarg, PRLDAPSocketInfo *soip )
-{
- PRLDAPIOSocketArg *prsockp;
-
- if ( NULL == socketarg || NULL == soip ||
- PRLDAP_SOCKETINFO_SIZE != soip->soinfo_size ) {
- return( LDAP_PARAM_ERROR );
- }
-
- prsockp = (PRLDAPIOSocketArg *)socketarg;
- prsockp->prsock_prfd = soip->soinfo_prfd;
- prsockp->prsock_appdata = soip->soinfo_appdata;
-
- return( LDAP_SUCCESS );
-}
-
-
-/*
- * Function: prldap_get_socket_info().
- *
- * Given an integer fd and a void * argument such as those passed to the
- * extended I/O callback functions, retrieve socket specific information.
- *
- * Returns an LDAP API error code (LDAP_SUCCESS if all goes well, in
- * which case the fields in the structure that soip points to are filled in).
- */
-int LDAP_CALL
-prldap_get_socket_info( int fd, void *socketarg, PRLDAPSocketInfo *soip )
-{
- PRLDAPIOSocketArg *prsockp;
-
- if ( NULL == socketarg || NULL == soip ||
- PRLDAP_SOCKETINFO_SIZE != soip->soinfo_size ) {
- return( LDAP_PARAM_ERROR );
- }
-
- prsockp = (PRLDAPIOSocketArg *)socketarg;
- soip->soinfo_prfd = prsockp->prsock_prfd;
- soip->soinfo_appdata = prsockp->prsock_appdata;
-
- return( LDAP_SUCCESS );
-}
-
-
-/*
- * Function: prldap_get_default_socket_info().
- *
- * Given an LDAP session handle, retrieve socket specific information.
- * If ld is NULL, LDAP_PARAM_ERROR is returned.
- *
- * Returns an LDAP API error code (LDAP_SUCCESS if all goes well, in
- * which case the fields in the structure that soip points to are filled in).
- */
-int LDAP_CALL
-prldap_get_default_socket_info( LDAP *ld, PRLDAPSocketInfo *soip )
-{
- int rc;
- PRLDAPIOSocketArg *prsockp;
-
-
- if ( NULL == soip || PRLDAP_SOCKETINFO_SIZE != soip->soinfo_size ) {
- ldap_set_lderrno( ld, LDAP_PARAM_ERROR, NULL, NULL );
- return( LDAP_PARAM_ERROR );
- }
-
- if ( NULL != ld ) {
- if ( LDAP_SUCCESS !=
- ( rc = prldap_socket_arg_from_ld( ld, &prsockp ))) {
- return( rc );
- }
- } else {
- ldap_set_lderrno( ld, LDAP_PARAM_ERROR, NULL, NULL );
- return( LDAP_PARAM_ERROR );
- }
-
- soip->soinfo_prfd = prsockp->prsock_prfd;
- soip->soinfo_appdata = prsockp->prsock_appdata;
-
- return( LDAP_SUCCESS );
-}
-
-
-/*
- * Function: prldap_set_default_socket_info().
- *
- * Given an LDAP session handle, set socket specific information.
- * If ld is NULL, LDAP_PARAM_ERROR is returned.
- *
- * Returns an LDAP API error code (LDAP_SUCCESS if all goes well, in
- * which case the fields in the structure that soip points to are filled in).
- */
-int LDAP_CALL
-prldap_set_default_socket_info( LDAP *ld, PRLDAPSocketInfo *soip )
-{
- int rc;
- PRLDAPIOSocketArg *prsockp;
-
-
- if ( NULL == soip || PRLDAP_SOCKETINFO_SIZE != soip->soinfo_size ) {
- ldap_set_lderrno( ld, LDAP_PARAM_ERROR, NULL, NULL );
- return( LDAP_PARAM_ERROR );
- }
-
- if ( NULL != ld ) {
- if ( LDAP_SUCCESS !=
- ( rc = prldap_socket_arg_from_ld( ld, &prsockp ))) {
- return( rc );
- }
- } else {
- ldap_set_lderrno( ld, LDAP_PARAM_ERROR, NULL, NULL );
- return( LDAP_PARAM_ERROR );
- }
-
- prsockp->prsock_prfd = soip->soinfo_prfd;
- prsockp->prsock_appdata = soip->soinfo_appdata;
-
- return( LDAP_SUCCESS );
-}
-
-
-/*
-* Function: prldap_import_connection().
-*
-* Given the LDAP handle the connection parameters for the
-* file descriptor are imported into NSPR layer.
-*
-* Returns an LDAP API code (LDAP_SUCCESS) if all goes well.
-*/
-int LDAP_CALL
-prldap_import_connection (LDAP *ld)
-{
- int rc = LDAP_SUCCESS; /* optimistic */
- int shared = 1; /* Assume shared init */
- LBER_SOCKET orig_socket = -1;
- PRLDAPIOSessionArg *prsessp = NULL;
- PRLDAPIOSocketArg *prsockp = NULL;
- PRFileDesc *pr_socket = NULL;
-
- /* Check for invalid ld handle */
- if ( ld == NULL) {
- ldap_set_lderrno( ld, LDAP_PARAM_ERROR, NULL, NULL );
- return( LDAP_PARAM_ERROR );
- }
-
- /* Retrieve TCP socket's integer file descriptor */
- if ( ldap_get_option( ld, LDAP_OPT_DESC, &orig_socket ) < 0 ) {
- return( ldap_get_lderrno( ld, NULL, NULL ));
- }
-
- /* Check for NSPR functions on ld */
- if ( prldap_is_installed(ld)) { /* Error : NSPR already Installed */
- ldap_set_lderrno( ld, LDAP_LOCAL_ERROR, NULL, NULL );
- return( LDAP_LOCAL_ERROR );
- }
-
- if (LDAP_SUCCESS != (rc = prldap_install_routines(ld, shared))) {
- return( rc );
- }
-
- if (LDAP_SUCCESS != (rc = prldap_session_arg_from_ld( ld, &prsessp ))) {
- return( rc );
- }
-
- /* Get NSPR Socket Arg */
- if ( NULL == ( prsockp = prldap_socket_arg_alloc( prsessp ))) {
- ldap_set_lderrno( ld, LDAP_NO_MEMORY, NULL, NULL );
- return( LDAP_NO_MEMORY );
- }
-
- /* Import file descriptor of connection made via ldap_init() */
- if (NULL == (pr_socket = PR_ImportTCPSocket(orig_socket)) ) {
- ldap_set_lderrno( ld, LDAP_LOCAL_ERROR, NULL, NULL );
- return( LDAP_LOCAL_ERROR );
- }
-
- prsockp->prsock_prfd = pr_socket;
-
- /* Set Socket Arg in Extended I/O Layer */
- if ( ldap_set_option( ld, LDAP_X_OPT_SOCKETARG, prsockp) != 0 ) {
- return( ldap_get_lderrno( ld, NULL, NULL ));
- }
-
- return( rc );
-}