From 9f80d80dbd0337a846d12f5fa750eb8ca69bc7e8 Mon Sep 17 00:00:00 2001 From: Pierangelo Masarati Date: Thu, 13 Aug 2009 20:58:20 +0000 Subject: [PATCH] expose subordinate databases; add a link to the superior DN --- servers/slapd/back-monitor/back-monitor.h | 1 + servers/slapd/back-monitor/database.c | 20 +++++++++++++++----- servers/slapd/back-monitor/init.c | 9 +++++++++ 3 files changed, 25 insertions(+), 5 deletions(-) diff --git a/servers/slapd/back-monitor/back-monitor.h b/servers/slapd/back-monitor/back-monitor.h index 11f8019d84..15debe0f2f 100644 --- a/servers/slapd/back-monitor/back-monitor.h +++ b/servers/slapd/back-monitor/back-monitor.h @@ -130,6 +130,7 @@ typedef struct monitor_info_t { AttributeDescription *mi_ad_monitorIsShadow; AttributeDescription *mi_ad_monitorUpdateRef; AttributeDescription *mi_ad_monitorRuntimeConfig; + AttributeDescription *mi_ad_monitorSuperiorDN; /* * Generic description attribute diff --git a/servers/slapd/back-monitor/database.c b/servers/slapd/back-monitor/database.c index eb75a340f0..8de1d833ee 100644 --- a/servers/slapd/back-monitor/database.c +++ b/servers/slapd/back-monitor/database.c @@ -126,11 +126,6 @@ monitor_subsys_database_init_one( bi = oi->oi_orig; } - /* Subordinates are not exposed as their own naming context */ - if ( SLAP_GLUE_SUBORDINATE( be ) ) { - return 0; - } - e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, rdn, mi->mi_oc_monitoredObject, mi, NULL, NULL ); @@ -166,6 +161,21 @@ monitor_subsys_database_init_one( attr_merge( e_database, slap_schema.si_ad_namingContexts, be->be_suffix, NULL ); } + + /* Subordinates are not exposed as their own naming context */ + if ( SLAP_GLUE_SUBORDINATE( be ) ) { + BackendDB *sup_be = select_backend( &be->be_nsuffix[ 0 ], 1 ); + if ( sup_be == NULL ) { + Debug( LDAP_DEBUG_ANY, + "monitor_subsys_database_init: " + "unable to get superior for %s\n", + be->be_suffix[ 0 ].bv_val, 0, 0 ); + + } else { + attr_merge( e, mi->mi_ad_monitorSuperiorDN, + sup_be->be_suffix, sup_be->be_nsuffix ); + } + } } (void)init_readOnly( mi, e, be->be_restrictops ); diff --git a/servers/slapd/back-monitor/init.c b/servers/slapd/back-monitor/init.c index 5f723a51b9..374cfba033 100644 --- a/servers/slapd/back-monitor/init.c +++ b/servers/slapd/back-monitor/init.c @@ -1903,6 +1903,15 @@ monitor_back_initialize( "SINGLE-VALUE " "USAGE dSAOperation )", SLAP_AT_HIDE, offsetof(monitor_info_t, mi_ad_monitorRuntimeConfig) }, + { "( 1.3.6.1.4.1.4203.666.1.55.30 " + "NAME 'monitorSuperiorDN' " + "DESC 'monitor superior DN' " + /* "SUP distinguishedName " */ + "EQUALITY distinguishedNameMatch " + "SYNTAX 1.3.6.1.4.1.1466.115.121.1.12 " + "NO-USER-MODIFICATION " + "USAGE dSAOperation )", SLAP_AT_FINAL|SLAP_AT_HIDE, + offsetof(monitor_info_t, mi_ad_monitorSuperiorDN) }, { NULL, 0, -1 } }; -- 2.39.5