From: Pierangelo Masarati Date: Fri, 29 Apr 2005 20:29:59 +0000 (+0000) Subject: anticipate monitor schema definition X-Git-Tag: OPENLDAP_AC_BP~762 X-Git-Url: https://git.sur5r.net/?a=commitdiff_plain;h=8045a0882ed4f3e46d0ea5f410c803047eeb644f;p=openldap anticipate monitor schema definition --- diff --git a/servers/slapd/back-monitor/back-monitor.h b/servers/slapd/back-monitor/back-monitor.h index c79ec16549..4f44291adc 100644 --- a/servers/slapd/back-monitor/back-monitor.h +++ b/servers/slapd/back-monitor/back-monitor.h @@ -81,7 +81,6 @@ typedef struct monitor_info_t { /* * Config parameters */ - struct berval mi_l; struct berval mi_startTime; /* don't free it! */ struct berval mi_creatorsName; /* don't free it! */ @@ -125,13 +124,6 @@ typedef struct monitor_info_t { /* * Generic description attribute */ - AttributeDescription *mi_ad_description; - AttributeDescription *mi_ad_seeAlso; - AttributeDescription *mi_ad_l; -#ifdef MONITOR_DEFINE_LABELEDURI - /* enable if si_ad_labeledURI is removed from slap_schema */ - AttributeDescription *mi_ad_labeledURI; -#endif /* MONITOR_DEFINE_LABELEDURI */ AttributeDescription *mi_ad_readOnly; AttributeDescription *mi_ad_restrictedOperation; @@ -245,6 +237,7 @@ typedef struct monitor_subsys_t { struct berval mss_rdn; struct berval mss_dn; struct berval mss_ndn; + struct berval mss_desc[ 3 ]; int mss_flags; #define MONITOR_F_OPENED 0x10000000U diff --git a/servers/slapd/back-monitor/backend.c b/servers/slapd/back-monitor/backend.c index 1c083afe87..976b68a5eb 100644 --- a/servers/slapd/back-monitor/backend.c +++ b/servers/slapd/back-monitor/backend.c @@ -139,7 +139,7 @@ monitor_subsys_backend_init( j, ms_database->mss_dn.bv_val ); ber_str2bv( buf, 0, 0, &dn ); - attr_merge_normalize_one( e, mi->mi_ad_seeAlso, + attr_merge_normalize_one( e, slap_schema.si_ad_seeAlso, &dn, NULL ); } diff --git a/servers/slapd/back-monitor/database.c b/servers/slapd/back-monitor/database.c index 4c5ef2dc2a..f6f58134d4 100644 --- a/servers/slapd/back-monitor/database.c +++ b/servers/slapd/back-monitor/database.c @@ -195,7 +195,6 @@ monitor_subsys_database_init( "objectClass: %s\n" "structuralObjectClass: %s\n" "cn: Database %d\n" - "description: This object contains the type of the database.\n" "%s: %s\n" "creatorsName: %s\n" "modifiersName: %s\n" @@ -279,7 +278,8 @@ monitor_subsys_database_init( "cn=Overlay %d,%s", j, ms_overlay->mss_dn.bv_val ); ber_str2bv( buf, 0, 0, &bv ); - attr_merge_normalize_one( e, mi->mi_ad_seeAlso, + attr_merge_normalize_one( e, + slap_schema.si_ad_seeAlso, &bv, NULL ); } } @@ -375,7 +375,8 @@ monitor_subsys_database_init( j, ms_backend->mss_dn.bv_val ); bv.bv_val = buf; bv.bv_len = strlen( buf ); - attr_merge_normalize_one( e, mi->mi_ad_seeAlso, + attr_merge_normalize_one( e, + slap_schema.si_ad_seeAlso, &bv, NULL ); break; } @@ -427,7 +428,6 @@ monitor_subsys_database_init( "objectClass: %s\n" "structuralObjectClass: %s\n" "cn: Overlay %d\n" - "description: This object contains the type of the overlay.\n" "%s: %s\n" "seeAlso: cn=Overlay %d,%s\n" "creatorsName: %s\n" diff --git a/servers/slapd/back-monitor/init.c b/servers/slapd/back-monitor/init.c index 6652833a09..1e007a06ba 100644 --- a/servers/slapd/back-monitor/init.c +++ b/servers/slapd/back-monitor/init.c @@ -38,10 +38,11 @@ * so it should not be used outside monitor_back_db_init() * until monitor_back_db_open is called. */ -BackendDB *be_monitor = NULL; +BackendDB *be_monitor; -static struct monitor_subsys_t **monitor_subsys = NULL; -static int monitor_subsys_opened = 0; +static struct monitor_subsys_t **monitor_subsys; +static int monitor_subsys_opened; +static monitor_info_t monitor_info; /* * subsystem data @@ -56,6 +57,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { { SLAPD_MONITOR_BACKEND_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about available backends." ), + BER_BVNULL }, MONITOR_F_PERSISTENT_CH, monitor_subsys_backend_init, NULL, /* update */ @@ -64,6 +67,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_CONN_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about connections." ), + BER_BVNULL }, MONITOR_F_VOLATILE_CH, monitor_subsys_conn_init, monitor_subsys_conn_update, @@ -72,6 +77,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_DATABASE_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about configured databases." ), + BER_BVNULL }, MONITOR_F_PERSISTENT_CH, monitor_subsys_database_init, NULL, /* update */ @@ -80,6 +87,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_LISTENER_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about active listeners." ), + BER_BVNULL }, MONITOR_F_PERSISTENT_CH, monitor_subsys_listener_init, NULL, /* update */ @@ -88,6 +97,9 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_LOG_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about logging." ), + BER_BVC( "Set the attribute \"managedInfo\" to the desired log levels." ), + BER_BVNULL }, MONITOR_F_NONE, monitor_subsys_log_init, NULL, /* update */ @@ -96,6 +108,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_OPS_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about performed operations." ), + BER_BVNULL }, MONITOR_F_PERSISTENT_CH, monitor_subsys_ops_init, monitor_subsys_ops_update, @@ -104,6 +118,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_OVERLAY_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about available overlays." ), + BER_BVNULL }, MONITOR_F_PERSISTENT_CH, monitor_subsys_overlay_init, NULL, /* update */ @@ -112,6 +128,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_SASL_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about SASL." ), + BER_BVNULL }, MONITOR_F_NONE, NULL, /* init */ NULL, /* update */ @@ -120,6 +138,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_SENT_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains statistics." ), + BER_BVNULL }, MONITOR_F_PERSISTENT_CH, monitor_subsys_sent_init, monitor_subsys_sent_update, @@ -128,6 +148,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_THREAD_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about threads." ), + BER_BVNULL }, MONITOR_F_PERSISTENT_CH, monitor_subsys_thread_init, monitor_subsys_thread_update, @@ -136,6 +158,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_TIME_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about time." ), + BER_BVNULL }, MONITOR_F_PERSISTENT_CH, monitor_subsys_time_init, monitor_subsys_time_update, @@ -144,6 +168,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_TLS_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about TLS." ), + BER_BVNULL }, MONITOR_F_NONE, NULL, /* init */ NULL, /* update */ @@ -152,6 +178,8 @@ static struct monitor_subsys_t known_monitor_subsys[] = { }, { SLAPD_MONITOR_RWW_NAME, BER_BVNULL, BER_BVNULL, BER_BVNULL, + { BER_BVC( "This subsystem contains information about read/write waiters." ), + BER_BVNULL }, MONITOR_F_PERSISTENT_CH, monitor_subsys_rww_init, monitor_subsys_rww_update, @@ -878,73 +906,9 @@ monitor_back_initialize( LDAP_CONTROL_MANAGEDSAIT, NULL }; - - bi->bi_controls = controls; - - bi->bi_init = 0; - bi->bi_open = 0; - bi->bi_config = monitor_back_config; - bi->bi_close = 0; - bi->bi_destroy = 0; - - bi->bi_db_init = monitor_back_db_init; - bi->bi_db_config = monitor_back_db_config; - bi->bi_db_open = monitor_back_db_open; - bi->bi_db_close = 0; - bi->bi_db_destroy = monitor_back_db_destroy; - - bi->bi_op_bind = monitor_back_bind; - bi->bi_op_unbind = 0; - bi->bi_op_search = monitor_back_search; - bi->bi_op_compare = monitor_back_compare; - bi->bi_op_modify = monitor_back_modify; - bi->bi_op_modrdn = 0; - bi->bi_op_add = 0; - bi->bi_op_delete = 0; - bi->bi_op_abandon = 0; - - bi->bi_extended = 0; - - bi->bi_entry_release_rw = 0; - bi->bi_chk_referrals = 0; - bi->bi_operational = monitor_back_operational; - - /* - * hooks for slap tools - */ - bi->bi_tool_entry_open = 0; - bi->bi_tool_entry_close = 0; - bi->bi_tool_entry_first = 0; - bi->bi_tool_entry_next = 0; - bi->bi_tool_entry_get = 0; - bi->bi_tool_entry_put = 0; - bi->bi_tool_entry_reindex = 0; - bi->bi_tool_sync = 0; - bi->bi_tool_dn2id_get = 0; - bi->bi_tool_id2entry_get = 0; - bi->bi_tool_entry_modify = 0; - - bi->bi_connection_init = 0; - bi->bi_connection_destroy = 0; - - for ( ms = known_monitor_subsys; ms->mss_name != NULL; ms++ ) { - if ( monitor_back_register_subsys( ms ) ) { - return -1; - } - } - - return 0; -} - -int -monitor_back_db_init( - BackendDB *be ) -{ - monitor_info_t *mi; - int i, rc; - struct berval dn, ndn; - struct berval bv; - const char *text; + monitor_info_t *mi = &monitor_info; + int i; + const char *text; struct m_s { char *name; @@ -959,13 +923,6 @@ monitor_back_db_init( "MUST cn " "MAY ( " "description " - "$ l " -#if 0 /* temporarily disabled */ - "$ st " - "$ street " - "$ postalAddress " - "$ postalCode " -#endif "$ seeAlso " "$ labeledURI " "$ monitoredInfo " @@ -1201,111 +1158,60 @@ monitor_back_db_init( "NO-USER-MODIFICATION " "USAGE directoryOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorConnectionActivityTime) }, -#ifdef INTEGRATE_CORE_SCHEMA - { NULL, NULL, 0, -1 }, /* description */ - { NULL, NULL, 0, -1 }, /* seeAlso */ - { NULL, NULL, 0, -1 }, /* l */ - { NULL, NULL, 0, -1 }, /* labeledURI */ -#endif /* INTEGRATE_CORE_SCHEMA */ - { NULL, NULL, 0, -1 } - }, mat_core[] = { - { "description", "( 2.5.4.13 " - "NAME 'description' " - "DESC 'RFC2256: descriptive information' " - "EQUALITY caseIgnoreMatch " - "SUBSTR caseIgnoreSubstringsMatch " - "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15{1024} )", 0, - offsetof(monitor_info_t, mi_ad_description) }, - { "seeAlso", "( 2.5.4.34 " - "NAME 'seeAlso' " - "DESC 'RFC2256: DN of related object' " - "SUP distinguishedName )", 0, - offsetof(monitor_info_t, mi_ad_seeAlso) }, - { "l", "( 2.5.4.7 " - "NAME ( 'l' 'localityName' ) " - "DESC 'RFC2256: locality which this object resides in' " - "SUP name )", 0, - offsetof(monitor_info_t, mi_ad_l) }, -#ifdef MONITOR_DEFINE_LABELEDURI - { "labeledURI", "( 1.3.6.1.4.1.250.1.57 " - "NAME 'labeledURI' " - "DESC 'RFC2079: Uniform Resource Identifier with optional label' " - "EQUALITY caseExactMatch " - "SYNTAX 1.3.6.1.4.1.1466.115.121.1.15 )", 0, - offsetof(monitor_info_t, mi_ad_labeledURI) }, -#endif /* MONITOR_DEFINE_LABELEDURI */ { NULL, NULL, 0, -1 } }; - /* - * database monitor can be defined once only - */ - if ( be_monitor ) { - Debug( LDAP_DEBUG_ANY, - "only one monitor backend is allowed\n", 0, 0, 0 ); - return( -1 ); - } - be_monitor = be; - - /* indicate system schema supported */ - SLAP_BFLAGS(be) |= SLAP_BFLAG_MONITOR; - - dn.bv_val = SLAPD_MONITOR_DN; - dn.bv_len = sizeof( SLAPD_MONITOR_DN ) - 1; - - rc = dnNormalize( 0, NULL, NULL, &dn, &ndn, NULL ); - if( rc != LDAP_SUCCESS ) { - Debug( LDAP_DEBUG_ANY, - "unable to normalize monitor DN \"%s\"\n", - SLAPD_MONITOR_DN, 0, 0 ); - return -1; - } - - ber_dupbv( &bv, &dn ); - ber_bvarray_add( &be->be_suffix, &bv ); - ber_bvarray_add( &be->be_nsuffix, &ndn ); - - mi = ( monitor_info_t * )ch_calloc( sizeof( monitor_info_t ), 1 ); - if ( mi == NULL ) { - Debug( LDAP_DEBUG_ANY, - "unable to initialize monitor backend\n", 0, 0, 0 ); - return -1; - } + bi->bi_controls = controls; - memset( mi, 0, sizeof( monitor_info_t ) ); + bi->bi_init = 0; + bi->bi_open = 0; + bi->bi_config = monitor_back_config; + bi->bi_close = 0; + bi->bi_destroy = 0; - ldap_pvt_thread_mutex_init( &mi->mi_cache_mutex ); + bi->bi_db_init = monitor_back_db_init; + bi->bi_db_config = monitor_back_db_config; + bi->bi_db_open = monitor_back_db_open; + bi->bi_db_close = 0; + bi->bi_db_destroy = monitor_back_db_destroy; - be->be_private = mi; - -#ifdef INTEGRATE_CORE_SCHEMA - /* prepare for schema integration */ - for ( k = 0; mat[ k ].name != NULL; k++ ); -#endif /* INTEGRATE_CORE_SCHEMA */ + bi->bi_op_bind = monitor_back_bind; + bi->bi_op_unbind = 0; + bi->bi_op_search = monitor_back_search; + bi->bi_op_compare = monitor_back_compare; + bi->bi_op_modify = monitor_back_modify; + bi->bi_op_modrdn = 0; + bi->bi_op_add = 0; + bi->bi_op_delete = 0; + bi->bi_op_abandon = 0; - for ( i = 0; mat_core[ i ].name != NULL; i++ ) { - AttributeDescription **ad; - const char *text; + bi->bi_extended = 0; - ad = ((AttributeDescription **)&(((char *)mi)[ mat_core[ i ].offset ])); - ad[ 0 ] = NULL; + bi->bi_entry_release_rw = 0; + bi->bi_chk_referrals = 0; + bi->bi_operational = monitor_back_operational; - switch (slap_str2ad( mat_core[ i ].name, ad, &text ) ) { - case LDAP_SUCCESS: - break; + /* + * hooks for slap tools + */ + bi->bi_tool_entry_open = 0; + bi->bi_tool_entry_close = 0; + bi->bi_tool_entry_first = 0; + bi->bi_tool_entry_next = 0; + bi->bi_tool_entry_get = 0; + bi->bi_tool_entry_put = 0; + bi->bi_tool_entry_reindex = 0; + bi->bi_tool_sync = 0; + bi->bi_tool_dn2id_get = 0; + bi->bi_tool_id2entry_get = 0; + bi->bi_tool_entry_modify = 0; -#ifdef INTEGRATE_CORE_SCHEMA - case LDAP_UNDEFINED_TYPE: - mat[ k ] = mat_core[ i ]; - k++; - break; -#endif /* INTEGRATE_CORE_SCHEMA */ + bi->bi_connection_init = 0; + bi->bi_connection_destroy = 0; - default: - Debug( LDAP_DEBUG_ANY, - "monitor_back_db_init: %s: %s\n", - mat_core[ i ].name, text, 0 ); - return( -1 ); + for ( ms = known_monitor_subsys; ms->mss_name != NULL; ms++ ) { + if ( monitor_back_register_subsys( ms ) ) { + return -1; } } @@ -1401,6 +1307,54 @@ monitor_back_db_init( return 0; } +int +monitor_back_db_init( + BackendDB *be ) +{ + monitor_info_t *mi; + int rc; + struct berval dn, ndn; + struct berval bv; + + /* + * database monitor can be defined once only + */ + if ( be_monitor != NULL ) { + Debug( LDAP_DEBUG_ANY, + "only one monitor database is allowed\n", 0, 0, 0 ); + return( -1 ); + } + be_monitor = be; + + /* indicate system schema supported */ + SLAP_BFLAGS(be) |= SLAP_BFLAG_MONITOR; + + dn.bv_val = SLAPD_MONITOR_DN; + dn.bv_len = sizeof( SLAPD_MONITOR_DN ) - 1; + + rc = dnNormalize( 0, NULL, NULL, &dn, &ndn, NULL ); + if( rc != LDAP_SUCCESS ) { + Debug( LDAP_DEBUG_ANY, + "unable to normalize monitor DN \"%s\"\n", + SLAPD_MONITOR_DN, 0, 0 ); + return -1; + } + + ber_dupbv( &bv, &dn ); + ber_bvarray_add( &be->be_suffix, &bv ); + ber_bvarray_add( &be->be_nsuffix, &ndn ); + + /* NOTE: only one monitor database is allowed, + * so we use static storage */ + mi = &monitor_info; + + ldap_pvt_thread_mutex_init( &mi->mi_cache_mutex ); + + be->be_private = mi; + + return 0; +} + int monitor_back_db_open( BackendDB *be ) @@ -1466,12 +1420,10 @@ monitor_back_db_open( "objectClass: %s\n" "structuralObjectClass: %s\n" "cn: Monitor\n" - "%s: This subtree contains monitoring/managing objects.\n" - "%s: This object contains information about this server.\n" -#if 0 - "%s: createTimestamp reflects the time this server instance was created.\n" - "%s: modifyTimestamp reflects the time this server instance was last accessed.\n" -#endif + "description: This subtree contains monitoring/managing objects.\n" + "description: This object contains information about this server.\n" + "description: Most of the information is contained in operational\n" + "description: attributeTypes, which must be explicitly requested.\n" "creatorsName: %s\n" "modifiersName: %s\n" "createTimestamp: %s\n" @@ -1479,12 +1431,6 @@ monitor_back_db_open( SLAPD_MONITOR_DN, mi->mi_oc_monitorServer->soc_cname.bv_val, mi->mi_oc_monitorServer->soc_cname.bv_val, - mi->mi_ad_description->ad_cname.bv_val, - mi->mi_ad_description->ad_cname.bv_val, -#if 0 - mi->mi_ad_description->ad_cname.bv_val, - mi->mi_ad_description->ad_cname.bv_val, -#endif mi->mi_creatorsName.bv_val, mi->mi_creatorsName.bv_val, mi->mi_startTime.bv_val, @@ -1514,15 +1460,6 @@ monitor_back_db_open( return( -1 ); } - if ( mi->mi_l.bv_len ) { - if ( attr_merge_normalize_one( e, mi->mi_ad_l, &mi->mi_l, NULL ) ) { - Debug( LDAP_DEBUG_ANY, - "unable to add locality to \"%s\" entry\n", - SLAPD_MONITOR_DN, 0, 0 ); - return( -1 ); - } - } - mp = monitor_entrypriv_create(); if ( mp == NULL ) { return -1; @@ -1599,6 +1536,11 @@ monitor_back_db_open( return( -1 ); } + if ( !BER_BVISNULL( &monitor_subsys[ i ]->mss_desc[ 0 ] ) ) { + attr_merge_normalize( e, slap_schema.si_ad_description, + monitor_subsys[ i ]->mss_desc, NULL ); + } + mp = monitor_entrypriv_create(); if ( mp == NULL ) { return -1; @@ -1735,27 +1677,20 @@ monitor_back_db_config( /* * eventually, will hold database specific configuration parameters */ - if ( strcasecmp( argv[ 0 ], "l" ) == 0 ) { - if ( argc != 2 ) { - return 1; - } - - ber_str2bv( argv[ 1 ], 0, 1, &mi->mi_l ); - - } else { - return SLAP_CONF_UNKNOWN; - } - - return( 0 ); + return SLAP_CONF_UNKNOWN; } int monitor_back_db_destroy( BackendDB *be ) { + monitor_info_t *mi = ( monitor_info_t * )be->be_private; + /* * FIXME: destroys all the data */ + /* NOTE: mi points to static storage; don't free it */ + return 0; } diff --git a/servers/slapd/back-monitor/log.c b/servers/slapd/back-monitor/log.c index 2aa3fc04cc..607b6354a4 100644 --- a/servers/slapd/back-monitor/log.c +++ b/servers/slapd/back-monitor/log.c @@ -76,11 +76,6 @@ monitor_subsys_log_init( monitor_info_t *mi; Entry *e; int i; - struct berval desc[] = { - BER_BVC("This entry allows to set the log level runtime."), - BER_BVC("Set the attribute 'managedInfo' to the desired log levels."), - BER_BVNULL - }; ldap_pvt_thread_mutex_init( &monitor_log_mutex ); @@ -118,8 +113,6 @@ monitor_subsys_log_init( } } - attr_merge_normalize( e, mi->mi_ad_description, desc, NULL ); - monitor_cache_release( mi, e ); return( 0 ); @@ -160,7 +153,7 @@ monitor_subsys_log_modify( continue; /* - * only the monitor description attribute can be modified + * only the "managedInfo" attribute can be modified */ } else if ( mod->sm_desc != mi->mi_ad_managedInfo ) { rc = rs->sr_err = LDAP_UNWILLING_TO_PERFORM; @@ -324,7 +317,7 @@ add_values( Entry *e, Modification *mod, int *newlevel ) a = attr_find( e->e_attrs, mod->sm_desc ); if ( a != NULL ) { - /* "description" SHOULD have appropriate rules ... */ + /* "managedInfo" SHOULD have appropriate rules ... */ if ( mr == NULL || !mr->smr_match ) { return LDAP_INAPPROPRIATE_MATCHING; } diff --git a/servers/slapd/back-monitor/overlay.c b/servers/slapd/back-monitor/overlay.c index 01d8beb88e..568a808d2a 100644 --- a/servers/slapd/back-monitor/overlay.c +++ b/servers/slapd/back-monitor/overlay.c @@ -123,7 +123,7 @@ monitor_subsys_overlay_init( j, ms_database->mss_dn.bv_val ); ber_str2bv( buf, 0, 0, &dn ); - attr_merge_normalize_one( e, mi->mi_ad_seeAlso, + attr_merge_normalize_one( e, slap_schema.si_ad_seeAlso, &dn, NULL ); }