--- servers/slapd/root_dse.c 2000/05/16 16:13:08 1.33 +++ servers/slapd/root_dse.c 2001/09/09 02:01:07 1.40 @@ -1,4 +1,4 @@ -/* $OpenLDAP: pkg/ldap/servers/slapd/root_dse.c,v 1.32 2000/05/16 14:22:52 kurt Exp $ */ +/* $OpenLDAP: pkg/ldap/servers/slapd/root_dse.c,v 1.39 2000/08/31 16:51:15 kurt Exp $ */ /* root_dse.c - Provides the ROOT DSA-Specific Entry * * Copyright 1999-2000 The OpenLDAP Foundation. @@ -17,38 +17,33 @@ #include "slap.h" +static char *supportedFeatures[] = { + "1.3.6.1.4.1.4203.1.5.1", /* All Operational Attributes ("+") */ + NULL +}; + + int -root_dse_info( Entry **entry, char **text ) +root_dse_info( + Connection *conn, + Entry **entry, + const char **text ) { char buf[BUFSIZ]; Entry *e; struct berval val; struct berval *vals[2]; int i, j; + char ** supportedSASLMechanisms; -#ifdef SLAPD_SCHEMA_NOT_COMPAT AttributeDescription *ad_objectClass = slap_schema.si_ad_objectClass; AttributeDescription *ad_namingContexts = slap_schema.si_ad_namingContexts; AttributeDescription *ad_supportedControl = slap_schema.si_ad_supportedControl; AttributeDescription *ad_supportedExtension = slap_schema.si_ad_supportedExtension; AttributeDescription *ad_supportedLDAPVersion = slap_schema.si_ad_supportedLDAPVersion; AttributeDescription *ad_supportedSASLMechanisms = slap_schema.si_ad_supportedSASLMechanisms; -#ifdef SLAPD_ACI_ENABLED - AttributeDescription *ad_supportedACIMechanisms = slap_schema.si_ad_supportedACIMechanisms; -#endif + AttributeDescription *ad_supportedFeatures = slap_schema.si_ad_supportedFeatures; AttributeDescription *ad_ref = slap_schema.si_ad_ref; -#else - char *ad_objectClass = "objectClass"; - char *ad_namingContexts = "namingContexts"; - char *ad_supportedControl = "supportedControl"; - char *ad_supportedExtension = "supportedExtension"; - char *ad_supportedLDAPVersion = "supportedLDAPVersion"; - char *ad_supportedSASLMechanisms = "supportedSASLMechanisms"; -#ifdef SLAPD_ACI_ENABLED - char *ad_supportedACIMechanisms = "supportedACIMechanisms"; -#endif - char *ad_ref = "ref"; -#endif vals[0] = &val; vals[1] = NULL; @@ -92,8 +87,21 @@ root_dse_info( Entry **entry, char **tex attr_merge( e, ad_supportedExtension, vals ); } + /* supportedFeatures */ + for ( i=0; supportedFeatures[i] != NULL; i++ ) { + val.bv_val = supportedFeatures[i]; + val.bv_len = strlen( val.bv_val ); + attr_merge( e, ad_supportedFeatures, vals ); + } + /* supportedLDAPVersion */ for ( i=LDAP_VERSION_MIN; i<=LDAP_VERSION_MAX; i++ ) { + if (( global_disallows & SLAP_DISALLOW_BIND_V2 ) && + ( i < LDAP_VERSION3 ) ) + { + /* version 2 and lower are disallowed */ + continue; + } sprintf(buf,"%d",i); val.bv_val = buf; val.bv_len = strlen( val.bv_val ); @@ -101,6 +109,8 @@ root_dse_info( Entry **entry, char **tex } /* supportedSASLMechanism */ + supportedSASLMechanisms = slap_sasl_mechs( conn ); + if( supportedSASLMechanisms != NULL ) { for ( i=0; supportedSASLMechanisms[i] != NULL; i++ ) { val.bv_val = supportedSASLMechanisms[i]; @@ -109,14 +119,6 @@ root_dse_info( Entry **entry, char **tex } } -#ifdef SLAPD_ACI_ENABLED - /* supportedACIMechanisms */ - for ( i=0; (val.bv_val = get_supported_acimech(i)) != NULL; i++ ) { - val.bv_len = strlen( val.bv_val ); - attr_merge( e, ad_supportedACIMechanisms, vals ); - } -#endif - if ( default_referral != NULL ) { attr_merge( e, ad_ref, default_referral ); }