version 1.12.2.7, 2001/12/06 18:48:12
|
version 1.35, 2000/05/22 01:46:58
|
Line 1
|
Line 1
|
/* $OpenLDAP: pkg/ldap/servers/slapd/root_dse.c,v 1.12.2.6 2001/09/18 16:52:58 kurt Exp $ */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/root_dse.c,v 1.34 2000/05/21 20:46:51 kurt Exp $ */ |
/* root_dse.c - Provides the ROOT DSA-Specific Entry |
/* root_dse.c - Provides the ROOT DSA-Specific Entry |
* |
* |
* Copyright 1999-2000 The OpenLDAP Foundation. |
* Copyright 1999-2000 The OpenLDAP Foundation. |
Line 17
|
Line 17
|
|
|
#include "slap.h" |
#include "slap.h" |
|
|
static char *supportedFeatures[] = { |
|
"1.3.6.1.4.1.4203.1.5.1", /* All Operational Attributes ("+") */ |
|
NULL |
|
}; |
|
|
|
|
|
int |
int |
root_dse_info( |
root_dse_info( Entry **entry, const char **text ) |
Connection *conn, |
|
Entry **entry, |
|
const char **text ) |
|
{ |
{ |
char buf[BUFSIZ]; |
char buf[BUFSIZ]; |
Entry *e; |
Entry *e; |
struct berval val; |
struct berval val; |
struct berval *vals[2]; |
struct berval *vals[2]; |
int i, j; |
int i, j; |
char ** supportedSASLMechanisms; |
|
|
|
|
#ifdef SLAPD_SCHEMA_NOT_COMPAT |
AttributeDescription *ad_objectClass = slap_schema.si_ad_objectClass; |
AttributeDescription *ad_objectClass = slap_schema.si_ad_objectClass; |
AttributeDescription *ad_namingContexts = slap_schema.si_ad_namingContexts; |
AttributeDescription *ad_namingContexts = slap_schema.si_ad_namingContexts; |
AttributeDescription *ad_supportedControl = slap_schema.si_ad_supportedControl; |
AttributeDescription *ad_supportedControl = slap_schema.si_ad_supportedControl; |
AttributeDescription *ad_supportedExtension = slap_schema.si_ad_supportedExtension; |
AttributeDescription *ad_supportedExtension = slap_schema.si_ad_supportedExtension; |
AttributeDescription *ad_supportedLDAPVersion = slap_schema.si_ad_supportedLDAPVersion; |
AttributeDescription *ad_supportedLDAPVersion = slap_schema.si_ad_supportedLDAPVersion; |
AttributeDescription *ad_supportedSASLMechanisms = slap_schema.si_ad_supportedSASLMechanisms; |
AttributeDescription *ad_supportedSASLMechanisms = slap_schema.si_ad_supportedSASLMechanisms; |
AttributeDescription *ad_supportedFeatures = slap_schema.si_ad_supportedFeatures; |
# ifdef SLAPD_ACI_ENABLED |
|
AttributeDescription *ad_supportedACIMechanisms = slap_schema.si_ad_supportedACIMechanisms; |
|
# endif |
AttributeDescription *ad_ref = slap_schema.si_ad_ref; |
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[0] = &val; |
vals[1] = NULL; |
vals[1] = NULL; |
Line 87 root_dse_info(
|
Line 92 root_dse_info(
|
attr_merge( e, ad_supportedExtension, vals ); |
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 */ |
/* supportedLDAPVersion */ |
for ( i=LDAP_VERSION_MIN; i<=LDAP_VERSION_MAX; i++ ) { |
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); |
sprintf(buf,"%d",i); |
val.bv_val = buf; |
val.bv_val = buf; |
val.bv_len = strlen( val.bv_val ); |
val.bv_len = strlen( val.bv_val ); |
Line 109 root_dse_info(
|
Line 101 root_dse_info(
|
} |
} |
|
|
/* supportedSASLMechanism */ |
/* supportedSASLMechanism */ |
supportedSASLMechanisms = slap_sasl_mechs( conn ); |
|
|
|
if( supportedSASLMechanisms != NULL ) { |
if( supportedSASLMechanisms != NULL ) { |
for ( i=0; supportedSASLMechanisms[i] != NULL; i++ ) { |
for ( i=0; supportedSASLMechanisms[i] != NULL; i++ ) { |
val.bv_val = supportedSASLMechanisms[i]; |
val.bv_val = supportedSASLMechanisms[i]; |
val.bv_len = strlen( val.bv_val ); |
val.bv_len = strlen( val.bv_val ); |
attr_merge( e, ad_supportedSASLMechanisms, vals ); |
attr_merge( e, ad_supportedSASLMechanisms, vals ); |
} |
} |
charray_free( supportedSASLMechanisms ); |
|
} |
} |
|
|
|
#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 ) { |
if ( default_referral != NULL ) { |
attr_merge( e, ad_ref, default_referral ); |
attr_merge( e, ad_ref, default_referral ); |
} |
} |