version 1.110, 2005/08/12 19:24:13
|
version 1.111, 2005/11/27 22:17:57
|
Line 1
|
Line 1
|
/* root_dse.c - Provides the Root DSA-Specific Entry */ |
/* root_dse.c - Provides the Root DSA-Specific Entry */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/root_dse.c,v 1.109 2005/07/22 11:18:28 hallvard Exp $ */ |
/* $OpenLDAP: pkg/ldap/servers/slapd/root_dse.c,v 1.110 2005/08/12 19:24:13 kurt Exp $ */ |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
/* This work is part of OpenLDAP Software <http://www.openldap.org/>. |
* |
* |
* Copyright 1999-2005 The OpenLDAP Foundation. |
* Copyright 1999-2005 The OpenLDAP Foundation. |
Line 28
|
Line 28
|
#include "slapi/slapi.h" |
#include "slapi/slapi.h" |
#endif |
#endif |
|
|
static struct berval supportedFeatures[] = { |
static struct berval builtin_supportedFeatures[] = { |
BER_BVC(LDAP_FEATURE_MODIFY_INCREMENT), /* Modify/increment */ |
BER_BVC(LDAP_FEATURE_MODIFY_INCREMENT), /* Modify/increment */ |
BER_BVC(LDAP_FEATURE_ALL_OP_ATTRS), /* All Op Attrs (+) */ |
BER_BVC(LDAP_FEATURE_ALL_OP_ATTRS), /* All Op Attrs (+) */ |
BER_BVC(LDAP_FEATURE_OBJECTCLASS_ATTRS), /* OCs in Attrs List (@class) */ |
BER_BVC(LDAP_FEATURE_OBJECTCLASS_ATTRS), /* OCs in Attrs List (@class) */ |
BER_BVC(LDAP_FEATURE_ABSOLUTE_FILTERS), /* (&) and (|) search filters */ |
BER_BVC(LDAP_FEATURE_ABSOLUTE_FILTERS), /* (&) and (|) search filters */ |
BER_BVC(LDAP_FEATURE_LANGUAGE_TAG_OPTIONS), /* Language Tag Options */ |
BER_BVC(LDAP_FEATURE_LANGUAGE_TAG_OPTIONS), /* Language Tag Options */ |
BER_BVC(LDAP_FEATURE_LANGUAGE_RANGE_OPTIONS),/* Language Range Options */ |
BER_BVC(LDAP_FEATURE_LANGUAGE_RANGE_OPTIONS), /* Language Range Options */ |
#ifdef LDAP_FEATURE_SUBORDINATE_SCOPE |
#ifdef LDAP_FEATURE_SUBORDINATE_SCOPE |
BER_BVC(LDAP_FEATURE_SUBORDINATE_SCOPE), /* "children" search scope */ |
BER_BVC(LDAP_FEATURE_SUBORDINATE_SCOPE), /* "children" search scope */ |
#endif |
#endif |
{0,NULL} |
BER_BVNULL |
}; |
}; |
|
static struct berval *supportedFeatures; |
|
|
static Entry *usr_attr = NULL; |
static Entry *usr_attr = NULL; |
|
|
|
static int |
|
supported_feature_init( void ) |
|
{ |
|
int i; |
|
|
|
if ( supportedFeatures != NULL ) { |
|
return 0; |
|
} |
|
|
|
for ( i = 0; !BER_BVISNULL( &builtin_supportedFeatures[ i ] ); i++ ) |
|
; |
|
|
|
supportedFeatures = ch_calloc( sizeof( struct berval ), i + 1 ); |
|
if ( supportedFeatures == NULL ) { |
|
return -1; |
|
} |
|
|
|
for ( i = 0; !BER_BVISNULL( &builtin_supportedFeatures[ i ] ); i++ ) { |
|
ber_dupbv( &supportedFeatures[ i ], &builtin_supportedFeatures[ i ] ); |
|
} |
|
BER_BVZERO( &supportedFeatures[ i ] ); |
|
|
|
return 0; |
|
} |
|
|
|
int |
|
supported_feature_destroy( void ) |
|
{ |
|
int i; |
|
|
|
if ( supportedFeatures == NULL ) { |
|
return 0; |
|
} |
|
|
|
for ( i = 0; !BER_BVISNULL( &supportedFeatures[ i ] ); i++ ) { |
|
ch_free( supportedFeatures[ i ].bv_val ); |
|
} |
|
|
|
ch_free( supportedFeatures ); |
|
supportedFeatures = NULL; |
|
|
|
return 0; |
|
} |
|
|
|
int |
|
supported_feature_load( struct berval *f ) |
|
{ |
|
struct berval *tmp; |
|
int i; |
|
|
|
supported_feature_init(); |
|
|
|
for ( i = 0; !BER_BVISNULL( &supportedFeatures[ i ] ); i++ ) |
|
; |
|
|
|
tmp = ch_realloc( supportedFeatures, sizeof( struct berval ) * ( i + 2 ) ); |
|
if ( tmp == NULL ) { |
|
return -1; |
|
} |
|
supportedFeatures = tmp; |
|
|
|
ber_dupbv( &supportedFeatures[ i ], f ); |
|
BER_BVZERO( &supportedFeatures[ i + 1 ] ); |
|
|
|
return 0; |
|
} |
|
|
int |
int |
root_dse_info( |
root_dse_info( |
Connection *conn, |
Connection *conn, |
Line 173 root_dse_info(
|
Line 241 root_dse_info(
|
#endif /* LDAP_SLAPI */ |
#endif /* LDAP_SLAPI */ |
|
|
/* supportedFeatures */ |
/* supportedFeatures */ |
|
if ( supportedFeatures == NULL ) { |
|
supported_feature_init(); |
|
} |
|
|
if( attr_merge( e, ad_supportedFeatures, supportedFeatures, NULL ) ) { |
if( attr_merge( e, ad_supportedFeatures, supportedFeatures, NULL ) ) { |
return LDAP_OTHER; |
return LDAP_OTHER; |
} |
} |