new call unregister_supported_control(), will be

needed for cn=config delete support
This commit is contained in:
Ralf Haferkamp 2010-06-30 12:38:01 +00:00
parent 14fcbf4cfc
commit b435efa694
2 changed files with 36 additions and 0 deletions

View file

@ -344,6 +344,38 @@ register_supported_control2(const char *controloid,
return LDAP_SUCCESS;
}
#ifdef SLAP_CONFIG_DELETE
int
unregister_supported_control( const char *controloid )
{
struct slap_control *sc;
int i;
if ( controloid == NULL || (sc = find_ctrl( controloid )) == NULL ){
return -1;
}
for ( i = 0; slap_known_controls[ i ]; i++ ) {
if ( strcmp( controloid, slap_known_controls[ i ] ) == 0 ) {
while ( slap_known_controls[i] ) {
slap_known_controls[i++] = slap_known_controls[i];
}
num_known_controls--;
break;
}
}
LDAP_SLIST_REMOVE(&controls_list, sc, slap_control, sc_next);
ch_free( sc->sc_oid );
if ( sc->sc_extendedopsbv != NULL ) {
ber_bvarray_free( sc->sc_extendedopsbv );
}
ch_free( sc );
return 0;
}
#endif /* SLAP_CONFIG_DELETE */
/*
* One-time initialization of internal controls.
*/

View file

@ -647,6 +647,10 @@ LDAP_SLAPD_F (int) register_supported_control2 LDAP_P((
int *controlcid ));
#define register_supported_control(oid, mask, exops, fn, cid) \
register_supported_control2((oid), (mask), (exops), (fn), 0, (cid))
#ifdef SLAP_CONFIG_DELETE
LDAP_SLAPD_F (int) unregister_supported_control LDAP_P((
const char* controloid ));
#endif /* SLAP_CONFIG_DELETE */
LDAP_SLAPD_F (int) slap_controls_init LDAP_P ((void));
LDAP_SLAPD_F (void) controls_destroy LDAP_P ((void));
LDAP_SLAPD_F (int) controls_root_dse_info LDAP_P ((Entry *e));