Back to index

openldap  2.4.31
Functions | Variables
init.c File Reference
#include "portable.h"
#include <stdio.h>
#include <ac/socket.h>
#include <ac/string.h>
#include <ac/time.h>
#include "slap.h"
#include "lber_pvt.h"
#include "ldap_rq.h"

Go to the source code of this file.

Functions

int slap_init (int mode, const char *name)
int slap_startup (Backend *be)
int slap_shutdown (Backend *be)
int slap_destroy (void)
void slap_counters_init (slap_counters_t *sc)
void slap_counters_destroy (slap_counters_t *sc)

Variables

int slap_debug = 0
int ldap_syslog
BerVarray default_referral = NULL
ldap_pvt_thread_pool_t connection_pool
int connection_pool_max = SLAP_MAX_WORKER_THREADS
int slap_tool_thread_max = 1
slap_counters_t slap_counters
slap_counters_tslap_counters_list
static const char * slap_name = NULL
int slapMode = SLAP_UNDEFINED_MODE

Function Documentation

Definition at line 300 of file init.c.

{
       int i;

       ldap_pvt_thread_mutex_destroy( &sc->sc_mutex );
       ldap_pvt_mp_clear( sc->sc_bytes );
       ldap_pvt_mp_clear( sc->sc_pdu );
       ldap_pvt_mp_clear( sc->sc_entries );
       ldap_pvt_mp_clear( sc->sc_refs );

       ldap_pvt_mp_clear( sc->sc_ops_initiated );
       ldap_pvt_mp_clear( sc->sc_ops_completed );

#ifdef SLAPD_MONITOR
       for ( i = 0; i < SLAP_OP_LAST; i++ ) {
              ldap_pvt_mp_clear( sc->sc_ops_initiated_[ i ] );
              ldap_pvt_mp_clear( sc->sc_ops_completed_[ i ] );
       }
#endif /* SLAPD_MONITOR */
}

Here is the caller graph for this function:

Definition at line 279 of file init.c.

{
       int i;

       ldap_pvt_thread_mutex_init( &sc->sc_mutex );
       ldap_pvt_mp_init( sc->sc_bytes );
       ldap_pvt_mp_init( sc->sc_pdu );
       ldap_pvt_mp_init( sc->sc_entries );
       ldap_pvt_mp_init( sc->sc_refs );

       ldap_pvt_mp_init( sc->sc_ops_initiated );
       ldap_pvt_mp_init( sc->sc_ops_completed );

#ifdef SLAPD_MONITOR
       for ( i = 0; i < SLAP_OP_LAST; i++ ) {
              ldap_pvt_mp_init( sc->sc_ops_initiated_[ i ] );
              ldap_pvt_mp_init( sc->sc_ops_completed_[ i ] );
       }
#endif /* SLAPD_MONITOR */
}

Here is the caller graph for this function:

Definition at line 232 of file init.c.

{
       int rc;

       Debug( LDAP_DEBUG_TRACE,
              "%s destroy: freeing system resources.\n",
              slap_name, 0, 0 );

       if ( default_referral ) {
              ber_bvarray_free( default_referral );
       }

       /* clear out any thread-keys for the main thread */
       ldap_pvt_thread_pool_context_reset( ldap_pvt_thread_pool_context());

       rc = backend_destroy();

       slap_sasl_destroy();

       /* rootdse destroy goes before entry_destroy()
        * because it may use entry_free() */
       root_dse_destroy();
       entry_destroy();

       switch ( slapMode & SLAP_MODE ) {
       case SLAP_SERVER_MODE:
       case SLAP_TOOL_MODE:
              slap_counters_destroy( &slap_counters );
              break;

       default:
              Debug( LDAP_DEBUG_ANY,
                     "slap_destroy(): undefined mode (%d).\n", slapMode, 0, 0 );

              rc = 1;
              break;

       }

       slap_op_destroy();

       ldap_pvt_thread_destroy();

       /* should destroy the above mutex */
       return rc;
}

Here is the call graph for this function:

Here is the caller graph for this function:

int slap_init ( int  mode,
const char *  name 
)

Definition at line 71 of file init.c.

{
       int rc;

       assert( mode );

       if ( slapMode != SLAP_UNDEFINED_MODE ) {
              /* Make sure we write something to stderr */
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
               "%s init: init called twice (old=%d, new=%d)\n",
               name, slapMode, mode );

              return 1;
       }

       slapMode = mode;

       slap_op_init();

#ifdef SLAPD_MODULES
       if ( module_init() != 0 ) {
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
                  "%s: module_init failed\n",
                     name, 0, 0 );
              return 1;
       }
#endif

       if ( slap_schema_init( ) != 0 ) {
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
                  "%s: slap_schema_init failed\n",
                  name, 0, 0 );
              return 1;
       }

       if ( filter_init() != 0 ) {
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
                  "%s: filter_init failed\n",
                  name, 0, 0 );
              return 1;
       }

       if ( entry_init() != 0 ) {
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
                  "%s: entry_init failed\n",
                  name, 0, 0 );
              return 1;
       }

       switch ( slapMode & SLAP_MODE ) {
       case SLAP_SERVER_MODE:
              root_dse_init();

              /* FALLTHRU */
       case SLAP_TOOL_MODE:
              Debug( LDAP_DEBUG_TRACE,
                     "%s init: initiated %s.\n", name,
                     (mode & SLAP_MODE) == SLAP_TOOL_MODE ? "tool" : "server",
                     0 );

              slap_name = name;

              ldap_pvt_thread_pool_init( &connection_pool,
                            connection_pool_max, 0);

              slap_counters_init( &slap_counters );

              ldap_pvt_thread_mutex_init( &slapd_rq.rq_mutex );
              LDAP_STAILQ_INIT( &slapd_rq.task_list );
              LDAP_STAILQ_INIT( &slapd_rq.run_list );

              slap_passwd_init();

              rc = slap_sasl_init();

              if( rc == 0 ) {
                     rc = backend_init( );
              }
              if ( rc )
                     return rc;

              break;

       default:
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
                     "%s init: undefined mode (%d).\n", name, mode, 0 );

              rc = 1;
              break;
       }

       if ( slap_controls_init( ) != 0 ) {
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
                  "%s: slap_controls_init failed\n",
                  name, 0, 0 );
              return 1;
       }

       if ( frontend_init() ) {
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
                  "%s: frontend_init failed\n",
                  name, 0, 0 );
              return 1;
       }

       if ( overlay_init() ) {
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
                  "%s: overlay_init failed\n",
                  name, 0, 0 );
              return 1;
       }

       if ( glue_sub_init() ) {
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
                  "%s: glue/subordinate init failed\n",
                  name, 0, 0 );

              return 1;
       }

       if ( acl_init() ) {
              slap_debug |= LDAP_DEBUG_NONE;
              Debug( LDAP_DEBUG_ANY,
                  "%s: acl_init failed\n",
                  name, 0, 0 );
              return 1;
       }

       return rc;
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 222 of file init.c.

{
       Debug( LDAP_DEBUG_TRACE,
              "%s shutdown: initiated\n",
              slap_name, 0, 0 );

       /* let backends do whatever cleanup they need to do */
       return backend_shutdown( be ); 
}

Here is the call graph for this function:

Here is the caller graph for this function:

Definition at line 212 of file init.c.

{
       Debug( LDAP_DEBUG_TRACE,
              "%s startup: initiated.\n",
              slap_name, 0, 0 );


       return backend_startup( be );
}

Here is the call graph for this function:

Here is the caller graph for this function:


Variable Documentation

Definition at line 61 of file init.c.

Definition at line 62 of file init.c.

Definition at line 56 of file init.c.

Definition at line 49 of file init.c.

Definition at line 65 of file init.c.

Definition at line 65 of file init.c.

Definition at line 44 of file init.c.

const char* slap_name = NULL [static]

Definition at line 67 of file init.c.

Definition at line 63 of file init.c.

Definition at line 68 of file init.c.