struct berval default_search_base = { 0, NULL };
struct berval default_search_nbase = { 0, NULL };
unsigned num_subordinates = 0;
+struct berval global_schemadn = { 0, NULL };
+struct berval global_schemandn = { 0, NULL };
ber_len_t sockbuf_max_incoming = SLAP_SB_MAX_INCOMING_DEFAULT;
ber_len_t sockbuf_max_incoming_auth= SLAP_SB_MAX_INCOMING_AUTH;
return 1;
#endif /* HAVE_CYRUS_SASL */
+ } else if ( strcasecmp( cargv[0], "schemadn" ) == 0 ) {
+ struct berval dn;
+ if ( cargc < 2 ) {
+#ifdef NEW_LOGGING
+ LDAP_LOG( CONFIG, CRIT,
+ "%s: line %d: missing dn in "
+ "\"schemadn <dn>\" line.\n", fname, lineno, 0 );
+#else
+ Debug( LDAP_DEBUG_ANY,
+ "%s: line %d: missing dn in \"schemadn <dn>\" line\n",
+ fname, lineno, 0 );
+#endif
+ return 1 ;
+ }
+ ber_str2bv( cargv[1], 0, 0, &dn );
+ if ( be ) {
+ rc = dnPrettyNormal( NULL, &dn, &be->be_schemadn,
+ &be->be_schemandn );
+ } else {
+ rc = dnPrettyNormal( NULL, &dn, &global_schemadn,
+ &global_schemandn );
+ }
+ if ( rc != LDAP_SUCCESS ) {
+#ifdef NEW_LOGGING
+ LDAP_LOG( CONFIG, CRIT,
+ "%s: line %d: schemadn DN is invalid.\n",
+ fname, lineno , 0 );
+#else
+ Debug( LDAP_DEBUG_ANY,
+ "%s: line %d: schemadn DN is invalid\n",
+ fname, lineno, 0 );
+#endif
+ return 1;
+ }
+
/* set UCDATA path */
} else if ( strcasecmp( cargv[0], "ucdata-path" ) == 0 ) {
int err;
} else if( strcasecmp( cargv[i], "bind_anon_dn" ) == 0 ) {
allows |= SLAP_ALLOW_BIND_ANON_DN;
+ } else if( strcasecmp( cargv[i], "update_anon" ) == 0 ) {
+ allows |= SLAP_ALLOW_UPDATE_ANON;
+
} else if( strcasecmp( cargv[i], "none" ) != 0 ) {
#ifdef NEW_LOGGING
- LDAP_LOG( CONFIG, CRIT,
- "%s: line %d: unknown feature %s in "
- "\"allow <features>\" line.\n",
- fname, lineno, cargv[1] );
+ LDAP_LOG( CONFIG, CRIT, "%s: line %d: "
+ "unknown feature %s in \"allow <features>\" line.\n",
+ fname, lineno, cargv[1] );
#else
- Debug( LDAP_DEBUG_ANY,
- "%s: line %d: unknown feature %s in \"allow <features>\" line\n",
- fname, lineno, cargv[i] );
+ Debug( LDAP_DEBUG_ANY, "%s: line %d: "
+ "unknown feature %s in \"allow <features>\" line\n",
+ fname, lineno, cargv[i] );
#endif
return( 1 );
} else if( strcasecmp( cargv[i], "bind_simple" ) == 0 ) {
disallows |= SLAP_DISALLOW_BIND_SIMPLE;
- } else if( strcasecmp( cargv[i], "bind_simple_unprotected" ) == 0 ) {
- disallows |= SLAP_DISALLOW_BIND_SIMPLE_UNPROTECTED;
-
} else if( strcasecmp( cargv[i], "bind_krbv4" ) == 0 ) {
disallows |= SLAP_DISALLOW_BIND_KRBV4;
set->sss_update_sasl =
atoi( &cargv[i][sizeof("update_sasl")] );
+ } else if( strncasecmp( cargv[i], "simple_bind=",
+ sizeof("simple_bind") ) == 0 )
+ {
+ set->sss_simple_bind =
+ atoi( &cargv[i][sizeof("simple_bind")] );
+
} else {
#ifdef NEW_LOGGING
LDAP_LOG( CONFIG, CRIT,
/* specify an objectclass */
} else if ( strcasecmp( cargv[0], "objectclass" ) == 0 ) {
- if ( *cargv[1] == '(' ) {
+ if ( *cargv[1] == '(' /*')'*/) {
char * p;
- p = strchr(saveline,'(');
+ p = strchr(saveline,'(' /*')'*/);
rc = parse_oc( fname, lineno, p, cargv );
if( rc ) return rc;
#endif
}
+#ifdef SLAP_EXTENDED_SCHEMA
+ } else if ( strcasecmp( cargv[0], "ditcontentrule" ) == 0 ) {
+ char * p;
+ p = strchr(saveline,'(' /*')'*/);
+ rc = parse_cr( fname, lineno, p, cargv );
+ if( rc ) return rc;
+#endif
+
/* specify an attribute type */
} else if (( strcasecmp( cargv[0], "attributetype" ) == 0 )
|| ( strcasecmp( cargv[0], "attribute" ) == 0 ))
{
- if ( *cargv[1] == '(' ) {
+ if ( *cargv[1] == '(' /*')'*/) {
char * p;
- p = strchr(saveline,'(');
+ p = strchr(saveline,'(' /*')'*/);
rc = parse_at( fname, lineno, p, cargv );
if( rc ) return rc;
if ( depth == 0 ) ch_free( cargv );
+ if ( !global_schemadn.bv_val ) {
+ ber_str2bv( SLAPD_SCHEMA_DN, sizeof(SLAPD_SCHEMA_DN)-1, 1,
+ &global_schemadn );
+ dnNormalize2( NULL, &global_schemadn, &global_schemandn );
+ }
+
if ( load_ucdata( NULL ) < 0 ) return 1;
return( 0 );
}
config_destroy( )
{
ucdata_unload( UCDATA_ALL );
+ free( global_schemandn.bv_val );
+ free( global_schemadn.bv_val );
free( line );
if ( slapd_args_file )
free ( slapd_args_file );