X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fconfig.c;h=7442953c7d19dc774b3a320dc9ee712a1f286664;hb=f8fb4aca7668c722f41941be719203aa8c298e12;hp=ad0449ece3130317064f9393838a3d1923d83803;hpb=2dd27b0786c511623c37a48f5935fb639cdc80dc;p=openldap diff --git a/servers/slapd/config.c b/servers/slapd/config.c index ad0449ece3..7442953c7d 100644 --- a/servers/slapd/config.c +++ b/servers/slapd/config.c @@ -1,7 +1,7 @@ /* config.c - configuration file handling routines */ /* $OpenLDAP$ */ /* - * Copyright 1998-2000 The OpenLDAP Foundation, All Rights Reserved. + * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved. * COPYING RESTRICTIONS APPLY, see COPYRIGHT file */ @@ -40,7 +40,6 @@ slap_mask_t global_disallows = 0; slap_mask_t global_requires = 0; slap_ssf_set_t global_ssf_set; char *replogfile; -int global_lastmod = ON; int global_idletimeout = 0; char *global_host = NULL; char *global_realm = NULL; @@ -48,7 +47,7 @@ char *ldap_srvtab = ""; char *default_passwd_hash; struct berval default_search_base = { 0, NULL }; struct berval default_search_nbase = { 0, NULL }; -int num_subs = 0; +unsigned num_subordinates = 0; ber_len_t sockbuf_max_incoming = SLAP_SB_MAX_INCOMING_DEFAULT; ber_len_t sockbuf_max_incoming_auth= SLAP_SB_MAX_INCOMING_AUTH; @@ -76,14 +75,13 @@ read_config( const char *fname ) char *cargv[MAXARGS+1]; int lineno, i; int rc; - struct berval *vals[2]; - struct berval val; + struct berval vals[2]; + static int lastmod = ON; static BackendInfo *bi = NULL; static BackendDB *be = NULL; - vals[0] = &val; - vals[1] = NULL; + vals[1].bv_val = NULL; if ( (fp = fopen( fname, "r" )) == NULL ) { ldap_syslog = 1; @@ -262,11 +260,11 @@ read_config( const char *fname ) if ( cargc < 2 ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: missing max in \"sockbuf_max_incoming \" line\n", fname, lineno )); #else Debug( LDAP_DEBUG_ANY, - "%s: line %d: missing max in \"sockbuf_max_incoming \" line\n", fname, lineno, 0 ); #endif @@ -395,26 +393,15 @@ read_config( const char *fname ) if ( load_ucdata( NULL ) < 0 ) return 1; { - struct berval dn, *pdn, *ndn; + struct berval dn; dn.bv_val = cargv[1]; dn.bv_len = strlen( dn.bv_val ); - rc = dnPretty( NULL, &dn, &pdn ); - if( rc != LDAP_SUCCESS ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: defaultSearchBase DN is invalid.\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: defaultSearchBase DN is invalid\n", - fname, lineno, 0 ); -#endif - return( 1 ); - } + rc = dnPrettyNormal( NULL, &dn, + &default_search_base, + &default_search_nbase ); - rc = dnNormalize( NULL, &dn, &ndn ); if( rc != LDAP_SUCCESS ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_CRIT, @@ -425,15 +412,8 @@ read_config( const char *fname ) "%s: line %d: defaultSearchBase DN is invalid\n", fname, lineno, 0 ); #endif - ber_bvfree( ndn ); return( 1 ); } - - default_search_base = *pdn; - default_search_nbase = *ndn; - - free( pdn ); - free( ndn ); } /* set maximum threads in thread pool */ @@ -862,8 +842,8 @@ read_config( const char *fname ) fname, lineno, 0 ); #endif } else { - be->be_glueflags |= SLAP_GLUE_SUBORDINATE; - num_subs++; + be->be_flags |= SLAP_BFLAG_GLUE_SUBORDINATE; + num_subordinates++; } /* set database suffix */ @@ -930,22 +910,10 @@ read_config( const char *fname ) dn.bv_val = cargv[1]; dn.bv_len = strlen( cargv[1] ); + pdn = ch_malloc( sizeof( struct berval )); + ndn = ch_malloc( sizeof( struct berval )); - rc = dnPretty( NULL, &dn, &pdn ); - if( rc != LDAP_SUCCESS ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: suffix DN is invalid.\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: suffix DN is invalid\n", - fname, lineno, 0 ); -#endif - return( 1 ); - } - - rc = dnNormalize( NULL, &dn, &ndn ); + rc = dnPrettyNormal( NULL, &dn, pdn, ndn ); if( rc != LDAP_SUCCESS ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_CRIT, @@ -956,7 +924,6 @@ read_config( const char *fname ) "%s: line %d: suffix DN is invalid\n", fname, lineno, 0 ); #endif - ber_bvfree( ndn ); return( 1 ); } @@ -1009,8 +976,8 @@ read_config( const char *fname ) /* set database suffixAlias */ } else if ( strcasecmp( cargv[0], "suffixAlias" ) == 0 ) { Backend *tmp_be; - struct berval alias, *palias, *nalias; - struct berval aliased, *paliased, *naliased; + struct berval alias, *palias, nalias; + struct berval aliased, *paliased, naliased; if ( cargc < 2 ) { #ifdef NEW_LOGGING @@ -1070,8 +1037,9 @@ read_config( const char *fname ) alias.bv_val = cargv[1]; alias.bv_len = strlen( cargv[1] ); + palias = ch_malloc(sizeof(struct berval)); - rc = dnPretty( NULL, &alias, &palias ); + rc = dnPrettyNormal( NULL, &alias, palias, &nalias ); if( rc != LDAP_SUCCESS ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_CRIT, @@ -1085,24 +1053,9 @@ read_config( const char *fname ) return( 1 ); } - rc = dnNormalize( NULL, &alias, &nalias ); - if( rc != LDAP_SUCCESS ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: alias DN is invalid.\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: alias DN is invalid\n", - fname, lineno, 0 ); -#endif - ber_bvfree( palias ); - return( 1 ); - } - - tmp_be = select_backend( nalias, 0, 0 ); - ber_bvfree( nalias ); - if ( tmp_be != be ) { + tmp_be = select_backend( &nalias, 0, 0 ); + free( nalias.bv_val ); + if ( tmp_be && tmp_be != be ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: suffixAlias served by a preceeding " @@ -1120,8 +1073,9 @@ read_config( const char *fname ) aliased.bv_val = cargv[2]; aliased.bv_len = strlen( cargv[2] ); + paliased = ch_malloc(sizeof(struct berval)); - rc = dnPretty( NULL, &aliased, &paliased ); + rc = dnPrettyNormal( NULL, &aliased, paliased, &naliased ); if( rc != LDAP_SUCCESS ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_CRIT, @@ -1136,25 +1090,9 @@ read_config( const char *fname ) return( 1 ); } - rc = dnNormalize( NULL, &aliased, &naliased ); - if( rc != LDAP_SUCCESS ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: aliased DN is invalid.\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: aliased DN is invalid\n", - fname, lineno, 0 ); -#endif - ber_bvfree( palias ); - ber_bvfree( paliased ); - return( 1 ); - } - - tmp_be = select_backend( naliased, 0, 0 ); - ber_bvfree( naliased ); - if ( tmp_be != be ) { + tmp_be = select_backend( &naliased, 0, 0 ); + free( naliased.bv_val ); + if ( tmp_be && tmp_be != be ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: suffixAlias derefs to a different backend " @@ -1245,28 +1183,17 @@ read_config( const char *fname ) #endif } else { - struct berval dn, *pdn = NULL, *ndn = NULL; + struct berval dn; if ( load_ucdata( NULL ) < 0 ) return 1; dn.bv_val = cargv[1]; dn.bv_len = strlen( cargv[1] ); - rc = dnPretty( NULL, &dn, &pdn ); - if( rc != LDAP_SUCCESS ) { -#ifdef NEW_LOGGING - LDAP_LOG(( "config", LDAP_LEVEL_CRIT, - "%s: line %d: rootdn DN is invalid.\n", - fname, lineno )); -#else - Debug( LDAP_DEBUG_ANY, - "%s: line %d: rootdn DN is invalid\n", - fname, lineno, 0 ); -#endif - return( 1 ); - } + rc = dnPrettyNormal( NULL, &dn, + &be->be_rootdn, + &be->be_rootndn ); - rc = dnNormalize( NULL, &dn, &ndn ); if( rc != LDAP_SUCCESS ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_CRIT, @@ -1277,15 +1204,8 @@ read_config( const char *fname ) "%s: line %d: rootdn DN is invalid\n", fname, lineno, 0 ); #endif - ber_bvfree( ndn ); return( 1 ); } - - be->be_rootdn = *pdn; - be->be_rootndn = *ndn; - - free( pdn ); - free( ndn ); } /* set super-secret magic database password */ @@ -1658,8 +1578,8 @@ read_config( const char *fname ) return 1; } - vals[0]->bv_val = cargv[1]; - vals[0]->bv_len = strlen( vals[0]->bv_val ); + vals[0].bv_val = cargv[1]; + vals[0].bv_len = strlen( vals[0].bv_val ); value_add( &default_referral, vals ); #ifdef NEW_LOGGING @@ -1767,6 +1687,15 @@ read_config( const char *fname ) return( 1 ); } if ( strcasecmp( cargv[1], "off" ) == 0 ) { +#ifdef NEW_LOGGING + LDAP_LOG(( "config", LDAP_LEVEL_CRIT, + "%s: line %d: schema checking disabled! your mileage may vary!\n", + fname, lineno )); +#else + Debug( LDAP_DEBUG_ANY, + "%s: line %d: schema checking disabled! your mileage may vary!\n", + fname, lineno, 0 ); +#endif global_schemacheck = 0; } else { global_schemacheck = 1; @@ -1921,14 +1850,14 @@ read_config( const char *fname ) #endif } else { - struct berval dn, *ndn = NULL; + struct berval dn; if ( load_ucdata( NULL ) < 0 ) return 1; dn.bv_val = cargv[1]; dn.bv_len = strlen( cargv[1] ); - rc = dnNormalize( NULL, &dn, &ndn ); + rc = dnNormalize2( NULL, &dn, &be->be_update_ndn ); if( rc != LDAP_SUCCESS ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_CRIT, @@ -1941,9 +1870,6 @@ read_config( const char *fname ) #endif return 1; } - - be->be_update_ndn = *ndn; - free( ndn ); } } else if ( strcasecmp( cargv[0], "updateref" ) == 0 ) { @@ -1998,8 +1924,8 @@ read_config( const char *fname ) return 1; } - vals[0]->bv_val = cargv[1]; - vals[0]->bv_len = strlen( vals[0]->bv_val ); + vals[0].bv_val = cargv[1]; + vals[0].bv_len = strlen( vals[0].bv_val ); value_add( &be->be_update_refs, vals ); /* replication log file to which changes are appended */ @@ -2028,11 +1954,11 @@ read_config( const char *fname ) if ( cargc < 2 ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_CRIT, "%s: line %d: " - "missing filename in \"rootDSEfile \" line.\n", + "missing filename in \"rootDSE \" line.\n", fname, lineno )); #else Debug( LDAP_DEBUG_ANY, "%s: line %d: " - "missing filename in \"rootDSEfile \" line.\n", + "missing filename in \"rootDSE \" line.\n", fname, lineno, 0 ); #endif return 1; @@ -2041,11 +1967,11 @@ read_config( const char *fname ) if( read_root_dse_file( cargv[1] ) ) { #ifdef NEW_LOGGING LDAP_LOG(( "config", LDAP_LEVEL_CRIT, "%s: line %d: " - "could not read \"rootDSEfile \" line.\n", + "could not read \"rootDSE \" line.\n", fname, lineno )); #else Debug( LDAP_DEBUG_ANY, "%s: line %d: " - "could not read \"rootDSEfile \" line\n", + "could not read \"rootDSE \" line\n", fname, lineno, 0 ); #endif return 1; @@ -2067,15 +1993,17 @@ read_config( const char *fname ) return( 1 ); } if ( strcasecmp( cargv[1], "on" ) == 0 ) { - if ( be ) - be->be_lastmod = ON; - else - global_lastmod = ON; + if ( be ) { + be->be_flags &= ~SLAP_BFLAG_NOLASTMOD; + } else { + lastmod = ON; + } } else { - if ( be ) - be->be_lastmod = OFF; - else - global_lastmod = OFF; + if ( be ) { + be->be_flags |= SLAP_BFLAG_NOLASTMOD; + } else { + lastmod = OFF; + } } /* set idle timeout value */