]> git.sur5r.net Git - openldap/commitdiff
Add monitor_entry_stub() for creating entries. Fix conn peer/local mismatch.
authorHoward Chu <hyc@openldap.org>
Thu, 12 Jan 2006 08:40:09 +0000 (08:40 +0000)
committerHoward Chu <hyc@openldap.org>
Thu, 12 Jan 2006 08:40:09 +0000 (08:40 +0000)
14 files changed:
servers/slapd/back-monitor/back-monitor.h
servers/slapd/back-monitor/backend.c
servers/slapd/back-monitor/conn.c
servers/slapd/back-monitor/database.c
servers/slapd/back-monitor/entry.c
servers/slapd/back-monitor/init.c
servers/slapd/back-monitor/listener.c
servers/slapd/back-monitor/operation.c
servers/slapd/back-monitor/overlay.c
servers/slapd/back-monitor/proto-back-monitor.h
servers/slapd/back-monitor/rww.c
servers/slapd/back-monitor/sent.c
servers/slapd/back-monitor/thread.c
servers/slapd/back-monitor/time.c

index 32af66620afc51f23b1b6a7b8971d1a593066d7d..058dceca1616f867338604fc4a63cb48a570edf5 100644 (file)
@@ -83,6 +83,7 @@ typedef struct monitor_info_t {
         */
        struct berval           mi_startTime;           /* don't free it! */
        struct berval           mi_creatorsName;        /* don't free it! */
+       struct berval           mi_ncreatorsName;       /* don't free it! */
 
        /*
         * Specific schema entities
index 89e346fc4332fb501840c9ccac9dfb3f4baa12d0..04c21f27342ca1e0206be70880a1534e6d41359d 100644 (file)
@@ -79,32 +79,12 @@ monitor_subsys_backend_init(
 
                i++;
 
-               snprintf( buf, sizeof( buf ),
-                               "dn: cn=Backend %d,%s\n"
-                               "objectClass: %s\n"
-                               "structuralObjectClass: %s\n"
-                               "cn: Backend %d\n"
-                               "%s: %s\n"
-                               "%s: %s\n"
-                               "creatorsName: %s\n"
-                               "modifiersName: %s\n"
-                               "createTimestamp: %s\n"
-                               "modifyTimestamp: %s\n",
-                               i,
-                               ms->mss_dn.bv_val,
-                               mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                               mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                               i,
-                               mi->mi_ad_monitoredInfo->ad_cname.bv_val,
-                                       bi->bi_type,
-                               mi->mi_ad_monitorRuntimeConfig->ad_cname.bv_val,
-                                       bi->bi_cf_ocs == NULL ? "FALSE" : "TRUE",
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_startTime.bv_val,
-                               mi->mi_startTime.bv_val );
-               
-               e = str2entry( buf );
+               bv.bv_len = snprintf( buf, sizeof( buf ), "cn=Backend %d", i );
+               bv.bv_val = buf;
+
+               e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+                       mi->mi_oc_monitoredObject, mi, NULL, NULL );
+
                if ( e == NULL ) {
                        Debug( LDAP_DEBUG_ANY,
                                "monitor_subsys_backend_init: "
@@ -114,9 +94,15 @@ monitor_subsys_backend_init(
                }
                
                ber_str2bv( bi->bi_type, 0, 0, &bv );
+               attr_merge_normalize_one( e, mi->mi_ad_monitoredInfo,
+                               &bv, NULL );
                attr_merge_normalize_one( e_backend, mi->mi_ad_monitoredInfo,
                                &bv, NULL );
 
+               attr_merge_normalize_one( e, mi->mi_ad_monitorRuntimeConfig,
+                       bi->bi_cf_ocs == NULL ? (struct berval *)&slap_false_bv :
+                               (struct berval *)&slap_true_bv, NULL );
+
                if ( bi->bi_controls ) {
                        int j;
 
index d8686e8ad05f015cc2a9650894e53a5a64635f3b..24c68396eb5896fe1b71b5c8656f22836f19a505 100644 (file)
@@ -79,24 +79,10 @@ monitor_subsys_conn_init(
        /*
         * Total conns
         */
-       snprintf( buf, sizeof( buf ),
-               "dn: cn=Total,%s\n"
-               "objectClass: %s\n"
-               "structuralObjectClass: %s\n"
-               "cn: Total\n"
-               "creatorsName: %s\n"
-               "modifiersName: %s\n"
-               "createTimestamp: %s\n"
-               "modifyTimestamp: %s\n",
-               ms->mss_dn.bv_val,
-               mi->mi_oc_monitorCounterObject->soc_cname.bv_val,
-               mi->mi_oc_monitorCounterObject->soc_cname.bv_val,
-               mi->mi_creatorsName.bv_val,
-               mi->mi_creatorsName.bv_val,
-               mi->mi_startTime.bv_val,
-               mi->mi_startTime.bv_val );
+       BER_BVSTR( &bv, "cn=Total" );
+       e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+               mi->mi_oc_monitorCounterObject, mi, NULL, NULL );
        
-       e = str2entry( buf );
        if ( e == NULL ) {
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_conn_init: "
@@ -132,24 +118,10 @@ monitor_subsys_conn_init(
        /*
         * Current conns
         */
-       snprintf( buf, sizeof( buf ),
-               "dn: cn=Current,%s\n"
-               "objectClass: %s\n"
-               "structuralObjectClass: %s\n"
-               "cn: Current\n"
-               "creatorsName: %s\n"
-               "modifiersName: %s\n"
-               "createTimestamp: %s\n"
-               "modifyTimestamp: %s\n",
-               ms->mss_dn.bv_val,
-               mi->mi_oc_monitorCounterObject->soc_cname.bv_val,
-               mi->mi_oc_monitorCounterObject->soc_cname.bv_val,
-               mi->mi_creatorsName.bv_val,
-               mi->mi_creatorsName.bv_val,
-               mi->mi_startTime.bv_val,
-               mi->mi_startTime.bv_val );
-       
-       e = str2entry( buf );
+       BER_BVSTR( &bv, "cn=Current" );
+       e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+               mi->mi_oc_monitorCounterObject, mi, NULL, NULL );
+
        if ( e == NULL ) {
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_conn_init: "
@@ -252,17 +224,20 @@ conn_create(
        monitor_subsys_t        *ms )
 {
        monitor_entry_t *mp;
-       struct tm       *ltm;
+       struct tm       *tm;
        char            buf[ BACKMONITOR_BUFSIZE ];
        char            buf2[ LDAP_LUTIL_GENTIME_BUFSIZE ];
        char            buf3[ LDAP_LUTIL_GENTIME_BUFSIZE ];
 
+       struct berval bv, ctmbv, mtmbv, bv2, bv3;
+       struct berval bv_unknown= BER_BVC("unknown");
+
        Entry           *e;
 
-       struct tm       *ctm;
+#ifdef HACK_LOCAL_TIME
        char            ctmbuf[ LDAP_LUTIL_GENTIME_BUFSIZE ];
-       struct tm       *mtm;
        char            mtmbuf[ LDAP_LUTIL_GENTIME_BUFSIZE ];
+#endif
 #ifdef HAVE_GMTIME_R
        struct tm       tm_buf;
 #endif /* HAVE_GMTIME_R */
@@ -273,67 +248,69 @@ conn_create(
 #ifndef HAVE_GMTIME_R
        ldap_pvt_thread_mutex_lock( &gmtime_mutex );
 #endif
+
+#ifdef HAVE_GMTIME_R
+       tm = gmtime_r( &c->c_starttime, &tm_buf );
+#else
+       tm = gmtime( &c->c_starttime );
+#endif
+       bv2.bv_len = lutil_gentime( buf2, sizeof( buf2 ), tm );
+       bv2.bv_val = buf2;
 #ifdef HACK_LOCAL_TIME
 # ifdef HAVE_LOCALTIME_R
-       ctm = localtime_r( &c->c_starttime, &tm_buf );
-       lutil_localtime( ctmbuf, sizeof( ctmbuf ), ctm, -timezone );
-       mtm = localtime_r( &c->c_activitytime, &tm_buf );
-       lutil_localtime( mtmbuf, sizeof( mtmbuf ), mtm, -timezone );
+       tm = localtime_r( &c->c_starttime, &tm_buf );
 # else
-       ctm = localtime( &c->c_starttime );
-       lutil_localtime( ctmbuf, sizeof( ctmbuf ), ctm, -timezone );
-       mtm = localtime( &c->c_activitytime );
-       lutil_localtime( mtmbuf, sizeof( mtmbuf ), mtm, -timezone );
-# endif /* HAVE_LOCALTIME_R */
+       tm = localtime( &c->c_starttime );
+# endif
+       ctmbv.bv_len = lutil_localtime( ctmbuf, sizeof( ctmbuf ), tm, -timezone );
+       ctmbv.bv_val = ctmbuf;
 #else /* !HACK_LOCAL_TIME */
-# ifdef HAVE_GMTIME_R
-       ctm = gmtime_r( &c->c_starttime, &tm_buf );
-       lutil_gentime( ctmbuf, sizeof( ctmbuf ), ctm );
-       mtm = gmtime_r( &c->c_activitytime, &tm_buf );
-       lutil_gentime( mtmbuf, sizeof( mtmbuf ), mtm );
-# else
-       ctm = gmtime( &c->c_starttime );
-       lutil_gentime( ctmbuf, sizeof( ctmbuf ), ctm );
-       mtm = gmtime( &c->c_activitytime );
-       lutil_gentime( mtmbuf, sizeof( mtmbuf ), mtm );
-# endif /* HAVE_GMTIME_R */
-#endif /* !HACK_LOCAL_TIME */
-#ifndef HAVE_GMTIME_R
-       ldap_pvt_thread_mutex_unlock( &gmtime_mutex );
-#endif
-
-#ifndef HAVE_GMTIME_R
-       ldap_pvt_thread_mutex_lock( &gmtime_mutex );
+       ctmbv = bv2;
 #endif
 
 #ifdef HAVE_GMTIME_R
-       ltm = gmtime_r( &c->c_starttime, &tm_buf );
+       tm = gmtime_r( &c->c_activitytime, &tm_buf );
 #else
-       ltm = gmtime( &c->c_starttime );
+       tm = gmtime( &c->c_activitytime );
 #endif
-       lutil_gentime( buf2, sizeof( buf2 ), ltm );
-
-#ifdef HAVE_GMTIME_R
-       ltm = gmtime_r( &c->c_activitytime, &tm_buf );
-#else
-       ltm = gmtime( &c->c_activitytime );
+       bv3.bv_len = lutil_gentime( buf3, sizeof( buf3 ), tm );
+       bv3.bv_val = buf3;
+#ifdef HACK_LOCAL_TIME
+# ifdef HAVE_LOCALTIME_R
+       tm = localtime_r( &c->c_activitytime, &tm_buf );
+# else
+       tm = localtime( &c->c_activitytime );
+# endif /* HAVE_LOCALTIME_R */
+       mtmbv.bv_len = lutil_localtime( mtmbuf, sizeof( mtmbuf ), tm, -timezone );
+       mtmbv.bv_val = mtmbuf;
+#else /* !HACK_LOCAL_TIME */
+       mtmbv = bv3;
 #endif
-       lutil_gentime( buf3, sizeof( buf3 ), ltm );
 
 #ifndef HAVE_GMTIME_R
        ldap_pvt_thread_mutex_unlock( &gmtime_mutex );
-#endif /* HAVE_GMTIME_R */
+#endif
 
-       snprintf( buf, sizeof( buf ),
-               "dn: cn=Connection %ld,%s\n"
-               "objectClass: %s\n"
-               "structuralObjectClass: %s\n"
-               "cn: Connection %ld\n"
+       bv.bv_len = snprintf( buf, sizeof( buf ),
+               "cn=Connection %ld", c->c_connid );
+       bv.bv_val = buf;
+       e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv, 
+               mi->mi_oc_monitorConnection, mi, &ctmbv, &mtmbv );
+
+       if ( e == NULL) {
+               Debug( LDAP_DEBUG_ANY,
+                       "monitor_subsys_conn_create: "
+                       "unable to create entry "
+                       "\"cn=Connection %ld,%s\"\n",
+                       c->c_connid, 
+                       ms->mss_dn.bv_val, 0 );
+               return( -1 );
+       }
 
 #ifdef MONITOR_LEGACY_CONN
-               /* NOTE: this will disappear, as the exploded data
-                * has been moved to dedicated attributes */
-               "%s: "
+       /* NOTE: this will disappear, as the exploded data
+        * has been moved to dedicated attributes */
+       bv.bv_len = snprintf( buf, sizeof( buf ),
                        "%ld "
                        ": %ld "
                        ": %ld/%ld/%ld/%ld "
@@ -345,44 +322,7 @@ conn_create(
                        ": %s "
                        ": %s "
                        ": %s "
-                       ": %s\n"
-#endif /* MONITOR_LEGACY_CONN */
-
-               "%s: %lu\n"
-               "%s: %ld\n"
-
-               "%s: %ld\n"
-               "%s: %ld\n"
-               "%s: %ld\n"
-               "%s: %ld\n"
-
-               "%s: %ld\n"
-               "%s: %ld\n"
-               "%s: %ld\n"
-
-               "%s: %s%s%s%s%s%s\n"
-
-               "%s: %s\n"
-
-               "%s: %s\n"
-               "%s: %s\n"
-               "%s: %s\n"
-               "%s: %s\n"
-
-               "%s: %s\n"
-               "%s: %s\n"
-
-               "creatorsName: %s\n"
-               "modifiersName: %s\n"
-               "createTimestamp: %s\n"
-               "modifyTimestamp: %s\n",
-               c->c_connid, ms->mss_dn.bv_val,
-               mi->mi_oc_monitorConnection->soc_cname.bv_val,
-               mi->mi_oc_monitorConnection->soc_cname.bv_val,
-               c->c_connid,
-
-#ifdef MONITOR_LEGACY_CONN
-               mi->mi_ad_monitoredInfo->ad_cname.bv_val,
+                       ": %s",
                        c->c_connid,
                        (long) c->c_protocol,
                        c->c_n_ops_received, c->c_n_ops_executing,
@@ -406,72 +346,67 @@ conn_create(
                        c->c_sock_name.bv_val,
                        
                        buf2,
-                       buf3,
+                       buf3 );
+       attr_merge_one( e, mi->mi_ad_monitoredInfo, &bv, NULL );
 #endif /* MONITOR_LEGACY_CONN */
 
-               mi->mi_ad_monitorConnectionNumber->ad_cname.bv_val,
-                       c->c_connid,
-               mi->mi_ad_monitorConnectionProtocol->ad_cname.bv_val,
-                       (long)c->c_protocol,
-
-               mi->mi_ad_monitorConnectionOpsReceived->ad_cname.bv_val,
-                       c->c_n_ops_received,
-               mi->mi_ad_monitorConnectionOpsExecuting->ad_cname.bv_val,
-                       c->c_n_ops_executing,
-               mi->mi_ad_monitorConnectionOpsPending->ad_cname.bv_val,
-                       c->c_n_ops_pending,
-               mi->mi_ad_monitorConnectionOpsCompleted->ad_cname.bv_val,
-                       c->c_n_ops_completed,
-
-               mi->mi_ad_monitorConnectionGet->ad_cname.bv_val,
-                       c->c_n_get,
-               mi->mi_ad_monitorConnectionRead->ad_cname.bv_val,
-                       c->c_n_read,
-               mi->mi_ad_monitorConnectionWrite->ad_cname.bv_val,
-                       c->c_n_write,
-
-               mi->mi_ad_monitorConnectionMask->ad_cname.bv_val,
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%lu", c->c_connid );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionNumber, &bv, NULL );
+
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%ld", c->c_protocol );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionProtocol, &bv, NULL );
+
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%ld", c->c_n_ops_received );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionOpsReceived, &bv, NULL );
+
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%ld", c->c_n_ops_executing );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionOpsExecuting, &bv, NULL );
+
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%ld", c->c_n_ops_pending );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionOpsPending, &bv, NULL );
+
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%ld", c->c_n_ops_completed );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionOpsCompleted, &bv, NULL );
+
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%ld", c->c_n_get );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionGet, &bv, NULL );
+
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%ld", c->c_n_read );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionRead, &bv, NULL );
+
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%ld", c->c_n_write );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionWrite, &bv, NULL );
+
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%s%s%s%s%s%s",
                        c->c_currentber ? "r" : "",
                        c->c_writewaiter ? "w" : "",
                        LDAP_STAILQ_EMPTY( &c->c_ops ) ? "" : "x",
                        LDAP_STAILQ_EMPTY( &c->c_pending_ops ) ? "" : "p",
                        connection_state2str( c->c_conn_state ),
-                       c->c_sasl_bind_in_progress ? "S" : "",
-               
-               mi->mi_ad_monitorConnectionAuthzDN->ad_cname.bv_val,
-                       c->c_dn.bv_len ? c->c_dn.bv_val : SLAPD_ANONYMOUS,
+                       c->c_sasl_bind_in_progress ? "S" : "" );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionMask, &bv, NULL );
 
-               /* NOTE: client connections leave the c_peer_* fields NULL */
-               mi->mi_ad_monitorConnectionListener->ad_cname.bv_val,
-                       c->c_listener_url.bv_val,
-               mi->mi_ad_monitorConnectionPeerDomain->ad_cname.bv_val,
-                       BER_BVISNULL( &c->c_peer_domain ) ? "unknown" : c->c_peer_domain.bv_val,
-               mi->mi_ad_monitorConnectionLocalAddress->ad_cname.bv_val,
-                       BER_BVISNULL( &c->c_peer_name ) ? "unknown" : c->c_peer_name.bv_val,
-               mi->mi_ad_monitorConnectionPeerAddress->ad_cname.bv_val,
-                       c->c_sock_name.bv_val,
+       attr_merge_one( e, mi->mi_ad_monitorConnectionAuthzDN,
+               &c->c_dn, &c->c_ndn );
 
-               mi->mi_ad_monitorConnectionStartTime->ad_cname.bv_val,
-                       buf2,
-               mi->mi_ad_monitorConnectionActivityTime->ad_cname.bv_val,
-                       buf3,
+       /* NOTE: client connections leave the c_peer_* fields NULL */
+       attr_merge_one( e, mi->mi_ad_monitorConnectionListener,
+               &c->c_listener_url, NULL );
 
-               mi->mi_creatorsName.bv_val,
-               mi->mi_creatorsName.bv_val,
-               ctmbuf,
-               mtmbuf );
-               
-       e = str2entry( buf );
+       attr_merge_one( e, mi->mi_ad_monitorConnectionPeerDomain,
+               BER_BVISNULL( &c->c_peer_domain ) ? &bv_unknown : &c->c_peer_domain,
+               NULL );
 
-       if ( e == NULL) {
-               Debug( LDAP_DEBUG_ANY,
-                       "monitor_subsys_conn_create: "
-                       "unable to create entry "
-                       "\"cn=Connection %ld,%s\" entry\n",
-                       c->c_connid, 
-                       ms->mss_dn.bv_val, 0 );
-               return( -1 );
-       }
+       attr_merge_one( e, mi->mi_ad_monitorConnectionPeerAddress,
+               BER_BVISNULL( &c->c_peer_name ) ? &bv_unknown : &c->c_peer_name,
+               NULL );
+
+       attr_merge_one( e, mi->mi_ad_monitorConnectionLocalAddress,
+               &c->c_sock_name, NULL );
+
+       attr_merge_one( e, mi->mi_ad_monitorConnectionStartTime, &bv2, NULL );
+
+       attr_merge_one( e, mi->mi_ad_monitorConnectionActivityTime, &bv3, NULL );
 
        mp = monitor_entrypriv_create();
        if ( mp == NULL ) {
index 91747ab3e3cc03d96d53e365678c57330458be4c..a5485577e6d2be974bd523034db1c403d0c0f1ed 100644 (file)
@@ -186,6 +186,7 @@ monitor_subsys_database_init(
                slap_overinfo   *oi = NULL;
                BackendInfo     *bi, *bi2;
                Entry           *e;
+               struct berval bv;
 
                i++;
 
@@ -201,32 +202,12 @@ monitor_subsys_database_init(
                        continue;
                }
 
-               snprintf( buf, sizeof( buf ),
-                               "dn: cn=Database %d,%s\n"
-                               "objectClass: %s\n"
-                               "structuralObjectClass: %s\n"
-                               "cn: Database %d\n"
-                               "%s: %s\n"
-                               "%s: %s\n"
-                               "creatorsName: %s\n"
-                               "modifiersName: %s\n"
-                               "createTimestamp: %s\n"
-                               "modifyTimestamp: %s\n",
-                               i,
-                                       ms->mss_dn.bv_val,
-                               mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                               mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                               i,
-                               mi->mi_ad_monitoredInfo->ad_cname.bv_val,
-                                       bi->bi_type,
-                               mi->mi_ad_monitorIsShadow->ad_cname.bv_val,
-                                       SLAP_SHADOW( be ) ? slap_true_bv.bv_val : slap_false_bv.bv_val,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_startTime.bv_val,
-                               mi->mi_startTime.bv_val );
-               
-               e = str2entry( buf );
+               bv.bv_len = snprintf( buf, sizeof( buf ),
+                               "cn=Database %d", i );
+               bv.bv_val = buf;
+               e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+                       mi->mi_oc_monitoredObject, mi, NULL, NULL );
+
                if ( e == NULL ) {
                        Debug( LDAP_DEBUG_ANY,
                                "monitor_subsys_database_init: "
@@ -234,7 +215,13 @@ monitor_subsys_database_init(
                                i, ms->mss_dn.bv_val, 0 );
                        return( -1 );
                }
-               
+
+               ber_str2bv( bi->bi_type, 0, 0, &bv );
+               attr_merge_one( e, mi->mi_ad_monitoredInfo, &bv, NULL );
+               attr_merge_one( e, mi->mi_ad_monitorIsShadow,
+                       SLAP_SHADOW( be ) ? (struct berval *)&slap_true_bv :
+                               (struct berval *)&slap_false_bv, NULL );
+
                if ( SLAP_MONITOR( be ) ) {
                        attr_merge( e, slap_schema.si_ad_monitorContext,
                                        be->be_suffix, be->be_nsuffix );
@@ -465,33 +452,12 @@ monitor_subsys_database_init(
                                }
                                assert( on2 != NULL );
 
-                               snprintf( buf, sizeof( buf ),
-                                               "dn: cn=Overlay %d,cn=Database %d,%s\n"
-                                               "objectClass: %s\n"
-                                               "structuralObjectClass: %s\n"
-                                               "cn: Overlay %d\n"
-                                               "%s: %s\n"
-                                               "seeAlso: cn=Overlay %d,%s\n"
-                                               "creatorsName: %s\n"
-                                               "modifiersName: %s\n"
-                                               "createTimestamp: %s\n"
-                                               "modifyTimestamp: %s\n",
-                                               o,
-                                               i,
-                                               ms->mss_dn.bv_val,
-                                               mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                                               mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                                               o,
-                                               mi->mi_ad_monitoredInfo->ad_cname.bv_val,
-                                               on->on_bi.bi_type,
-                                               j,
-                                               ms_overlay->mss_dn.bv_val,
-                                               mi->mi_creatorsName.bv_val,
-                                               mi->mi_creatorsName.bv_val,
-                                               mi->mi_startTime.bv_val,
-                                               mi->mi_startTime.bv_val );
-                               
-                               e_overlay = str2entry( buf );
+                               bv.bv_len = snprintf( buf, sizeof( buf ), "cn=Overlay %d", o );
+                               bv.bv_val = buf;
+
+                               e_overlay = monitor_entry_stub( &e->e_name, &e->e_nname, &bv,
+                                       mi->mi_oc_monitoredObject, mi, NULL, NULL );
+
                                if ( e_overlay == NULL ) {
                                        Debug( LDAP_DEBUG_ANY,
                                                "monitor_subsys_database_init: "
@@ -500,6 +466,14 @@ monitor_subsys_database_init(
                                                o, i, ms->mss_dn.bv_val );
                                        return( -1 );
                                }
+                               ber_str2bv( on->on_bi.bi_type, 0, 0, &bv );
+                               attr_merge_one( e, mi->mi_ad_monitoredInfo, &bv, NULL );
+
+                               bv.bv_len = snprintf( buf, sizeof( buf ), "cn=Overlay %d,%s",
+                                       j, ms_overlay->mss_dn.bv_val );
+                               bv.bv_val = buf;
+                               attr_merge_normalize_one( e, slap_schema.si_ad_seeAlso,
+                                       &bv, NULL );
 
                                mp_overlay = monitor_entrypriv_create();
                                if ( mp_overlay == NULL ) {
index 6901e4455e6102bd79b9f0167206f619a8c2b5a4..6ccdb9abdbf95295a9758d1d7d3038be58ed11f2 100644 (file)
@@ -165,3 +165,54 @@ monitor_entrypriv_create( void )
 
        return mp;
 }
+
+Entry *
+monitor_entry_stub(
+       struct berval *pdn,
+       struct berval *pndn,
+       struct berval *rdn,
+       ObjectClass *oc,
+       monitor_info_t  *mi,
+       struct berval *create,
+       struct berval *modify
+)
+{
+       AttributeDescription *nad = NULL;
+       Entry *e;
+       struct berval nat;
+       char *ptr;
+       const char *text;
+       int rc;
+
+       nat = *rdn;
+       ptr = strchr( nat.bv_val, '=' );
+       nat.bv_len = ptr - nat.bv_val;
+       rc = slap_bv2ad( &nat, &nad, &text );
+       if ( rc )
+               return NULL;
+
+       e = ch_calloc( 1, sizeof( Entry ));
+       if ( e ) {
+               struct berval nrdn;
+
+               rdnNormalize( 0, NULL, NULL, rdn, &nrdn, NULL );
+               build_new_dn( &e->e_name, pdn, rdn, NULL );
+               build_new_dn( &e->e_nname, pndn, &nrdn, NULL );
+               nat.bv_val = ptr + 1;
+               nat.bv_len = rdn->bv_len - ( nat.bv_val - rdn->bv_val );
+               attr_merge_normalize_one( e, slap_schema.si_ad_objectClass,
+                       &oc->soc_cname, NULL );
+               attr_merge_normalize_one( e, slap_schema.si_ad_structuralObjectClass,
+                       &oc->soc_cname, NULL );
+               attr_merge_normalize_one( e, nad, &nat, NULL );
+               attr_merge_one( e, slap_schema.si_ad_creatorsName, &mi->mi_creatorsName,
+                       &mi->mi_ncreatorsName );
+               attr_merge_one( e, slap_schema.si_ad_modifiersName, &mi->mi_creatorsName,
+                       &mi->mi_ncreatorsName );
+               attr_merge_normalize_one( e, slap_schema.si_ad_createTimestamp,
+                       create ? create : &mi->mi_startTime, NULL );
+               attr_merge_normalize_one( e, slap_schema.si_ad_modifyTimestamp,
+                       modify ? modify : &mi->mi_startTime, NULL );
+       }
+       return e;
+}
index 736a6cfdb9e76750385e69891e38720f622117e6..5e3c1db925b29b0a82517cea43250058972e0715 100644 (file)
@@ -1496,16 +1496,21 @@ monitor_back_db_open(
 {
        monitor_info_t          *mi = (monitor_info_t *)be->be_private;
        struct monitor_subsys_t **ms;
-       Entry                   *e, **ep;
+       Entry                   *e, **ep, *root;
        monitor_entry_t         *mp;
        int                     i;
-       char                    buf[ BACKMONITOR_BUFSIZE ];
-       struct berval           bv;
+       struct berval           bv, rdn = BER_BVC(SLAPD_MONITOR_DN);
        struct tm               *tms;
 #ifdef HAVE_GMTIME_R
        struct tm               tm_buf;
 #endif
        static char             tmbuf[ LDAP_LUTIL_GENTIME_BUFSIZE ];
+       struct berval   desc[] = {
+               BER_BVC("This subtree contains monitoring/managing objects."),
+               BER_BVC("This object contains information about this server."),
+               BER_BVC("Most of the information is held in operational"
+               " attributes, which must be explicitly requested."),
+               BER_BVNULL };
 
        assert( be_monitor != NULL );
        if ( be != be_monitor ) {
@@ -1542,35 +1547,18 @@ monitor_back_db_open(
 
        if ( BER_BVISEMPTY( &be->be_rootdn ) ) {
                BER_BVSTR( &mi->mi_creatorsName, SLAPD_ANONYMOUS );
+               BER_BVSTR( &mi->mi_ncreatorsName, SLAPD_ANONYMOUS );
        } else {
                mi->mi_creatorsName = be->be_rootdn;
+               mi->mi_ncreatorsName = be->be_rootndn;
        }
 
        /*
         * creates the "cn=Monitor" entry 
         */
-       snprintf( buf, sizeof( buf ), 
-               "dn: %s\n"
-               "objectClass: %s\n"
-               "structuralObjectClass: %s\n"
-               "cn: Monitor\n"
-               "description: This subtree contains monitoring/managing objects.\n"
-               "description: This object contains information about this server.\n"
-               "description: Most of the information is held in operational"
-               " attributes, which must be explicitly requested.\n"
-               "creatorsName: %s\n"
-               "modifiersName: %s\n"
-               "createTimestamp: %s\n"
-               "modifyTimestamp: %s\n",
-               SLAPD_MONITOR_DN,
-               mi->mi_oc_monitorServer->soc_cname.bv_val,
-               mi->mi_oc_monitorServer->soc_cname.bv_val,
-               mi->mi_creatorsName.bv_val,
-               mi->mi_creatorsName.bv_val,
-               mi->mi_startTime.bv_val,
-               mi->mi_startTime.bv_val );
-
-       e = str2entry( buf );
+       e = monitor_entry_stub( NULL, NULL, &rdn, mi->mi_oc_monitorServer, mi,
+               NULL, NULL );
+
        if ( e == NULL) {
                Debug( LDAP_DEBUG_ANY,
                        "unable to create \"%s\" entry\n",
@@ -1578,6 +1566,8 @@ monitor_back_db_open(
                return( -1 );
        }
 
+       attr_merge_normalize( e, slap_schema.si_ad_description, desc, NULL );
+
        bv.bv_val = strchr( (char *) Versionstr, '$' );
        if ( bv.bv_val != NULL ) {
                char    *end;
@@ -1623,6 +1613,7 @@ monitor_back_db_open(
                        SLAPD_MONITOR_DN, 0, 0 );
                return -1;
        }
+       root = e;
 
        /*      
         * Create all the subsystem specific entries
@@ -1645,46 +1636,18 @@ monitor_back_db_open(
                        return( -1 );
                }
 
-               dn.bv_len += sizeof( SLAPD_MONITOR_DN ); /* 1 for the , */
-               dn.bv_val = ch_malloc( dn.bv_len + 1 );
-               strcpy( dn.bv_val , monitor_subsys[ i ]->mss_rdn.bv_val );
-               strcat( dn.bv_val, "," SLAPD_MONITOR_DN );
-               rc = dnPrettyNormal( NULL, &dn, &monitor_subsys[ i ]->mss_dn,
-                       &monitor_subsys[ i ]->mss_ndn, NULL );
-               free( dn.bv_val );
-               if ( rc != LDAP_SUCCESS ) {
-                       Debug( LDAP_DEBUG_ANY,
-                               "monitor DN \"%s\" is invalid\n", 
-                               dn.bv_val, 0, 0 );
-                       return( -1 );
-               }
+               e = monitor_entry_stub( &root->e_name, &root->e_nname,
+                       &monitor_subsys[ i ]->mss_rdn, mi->mi_oc_monitorContainer, mi,
+                       NULL, NULL );
 
-               snprintf( buf, sizeof( buf ),
-                               "dn: %s\n"
-                               "objectClass: %s\n"
-                               "structuralObjectClass: %s\n"
-                               "cn: %s\n"
-                               "creatorsName: %s\n"
-                               "modifiersName: %s\n"
-                               "createTimestamp: %s\n"
-                               "modifyTimestamp: %s\n",
-                               monitor_subsys[ i ]->mss_dn.bv_val,
-                               mi->mi_oc_monitorContainer->soc_cname.bv_val,
-                               mi->mi_oc_monitorContainer->soc_cname.bv_val,
-                               monitor_subsys[ i ]->mss_name,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_startTime.bv_val,
-                               mi->mi_startTime.bv_val );
-               
-               e = str2entry( buf );
-               
                if ( e == NULL) {
                        Debug( LDAP_DEBUG_ANY,
                                "unable to create \"%s\" entry\n", 
                                monitor_subsys[ i ]->mss_dn.bv_val, 0, 0 );
                        return( -1 );
                }
+               monitor_subsys[i]->mss_dn = e->e_name;
+               monitor_subsys[i]->mss_ndn = e->e_nname;
 
                if ( !BER_BVISNULL( &monitor_subsys[ i ]->mss_desc[ 0 ] ) ) {
                        attr_merge_normalize( e, slap_schema.si_ad_description,
@@ -1860,14 +1823,6 @@ monitor_back_db_destroy(
                        if ( !BER_BVISNULL( &monitor_subsys[ i ]->mss_rdn ) ) {
                                ch_free( monitor_subsys[ i ]->mss_rdn.bv_val );
                        }
-
-                       if ( !BER_BVISNULL( &monitor_subsys[ i ]->mss_dn ) ) {
-                               ch_free( monitor_subsys[ i ]->mss_dn.bv_val );
-                       }
-
-                       if ( !BER_BVISNULL( &monitor_subsys[ i ]->mss_ndn ) ) {
-                               ch_free( monitor_subsys[ i ]->mss_ndn.bv_val );
-                       }
                }
 
                ch_free( monitor_subsys );
index 90fb440c46cc87e980f8de25295cccea7d91b80a..102d5c0d55c52d46620376785c38e0e242143f17 100644 (file)
@@ -69,32 +69,14 @@ monitor_subsys_listener_init(
        for ( i = 0; l[ i ]; i++ ) {
                char            buf[ BACKMONITOR_BUFSIZE ];
                Entry           *e;
+               struct berval bv;
+
+               bv.bv_len = snprintf( buf, sizeof( buf ),
+                               "cn=Listener %d", i );
+               bv.bv_val = buf;
+               e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+                       mi->mi_oc_monitoredObject, mi, NULL, NULL );
 
-               snprintf( buf, sizeof( buf ),
-                               "dn: cn=Listener %d,%s\n"
-                               "objectClass: %s\n"
-                               "structuralObjectClass: %s\n"
-                               "cn: Listener %d\n"
-                               "%s: %s\n"
-                               "labeledURI: %s\n"
-                               "creatorsName: %s\n"
-                               "modifiersName: %s\n"
-                               "createTimestamp: %s\n"
-                               "modifyTimestamp: %s\n",
-                               i,
-                               ms->mss_dn.bv_val,
-                               mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                               mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                               i,
-                               mi->mi_ad_monitorConnectionLocalAddress->ad_cname.bv_val,
-                               l[ i ]->sl_name.bv_val,
-                               l[ i ]->sl_url.bv_val,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_startTime.bv_val,
-                               mi->mi_startTime.bv_val );
-               
-               e = str2entry( buf );
                if ( e == NULL ) {
                        Debug( LDAP_DEBUG_ANY,
                                "monitor_subsys_listener_init: "
@@ -103,6 +85,12 @@ monitor_subsys_listener_init(
                        return( -1 );
                }
 
+               attr_merge_normalize_one( e, mi->mi_ad_monitorConnectionLocalAddress,
+                               &l[ i ]->sl_name, NULL );
+
+               attr_merge_normalize_one( e, slap_schema.si_ad_labeledURI,
+                               &l[ i ]->sl_url, NULL );
+
 #ifdef HAVE_TLS
                if ( l[ i ]->sl_is_tls ) {
                        struct berval bv;
index 8488a49bcf333cc0a08ce8c69be21761f1750f96..c9dbf3b627535691a6d3ff0469ec538dbd8a5cc3 100644 (file)
@@ -97,34 +97,14 @@ monitor_subsys_ops_init(
        for ( i = 0; i < SLAP_OP_LAST; i++ ) {
                struct berval   rdn;
                Entry           *e;
+               struct berval bv;
 
                /*
                 * Initiated ops
                 */
-               snprintf( buf, sizeof( buf ),
-                               "dn: %s,%s\n"
-                               "objectClass: %s\n"
-                               "structuralObjectClass: %s\n"
-                               "cn: %s\n"
-                               "%s: 0\n"
-                               "%s: 0\n"
-                               "creatorsName: %s\n"
-                               "modifiersName: %s\n"
-                               "createTimestamp: %s\n"
-                               "modifyTimestamp: %s\n",
-                               monitor_op[ i ].rdn.bv_val,
-                               ms->mss_dn.bv_val,
-                               mi->mi_oc_monitorOperation->soc_cname.bv_val,
-                               mi->mi_oc_monitorOperation->soc_cname.bv_val,
-                               &monitor_op[ i ].rdn.bv_val[ STRLENOF( "cn=" ) ],
-                               mi->mi_ad_monitorOpInitiated->ad_cname.bv_val,
-                               mi->mi_ad_monitorOpCompleted->ad_cname.bv_val,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_startTime.bv_val,
-                               mi->mi_startTime.bv_val );
-
-               e = str2entry( buf );
+               e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &monitor_op[i].rdn,
+                       mi->mi_oc_monitorOperation, mi, NULL, NULL );
+
                if ( e == NULL ) {
                        Debug( LDAP_DEBUG_ANY,
                                "monitor_subsys_ops_init: "
@@ -133,7 +113,11 @@ monitor_subsys_ops_init(
                                ms->mss_ndn.bv_val, 0 );
                        return( -1 );
                }
-       
+
+               BER_BVSTR( &bv, "0" );
+               attr_merge_one( e, mi->mi_ad_monitorOpInitiated, &bv, NULL );
+               attr_merge_one( e, mi->mi_ad_monitorOpCompleted, &bv, NULL );
+
                /* steal normalized RDN */
                dnRdn( &e->e_nname, &rdn );
                ber_dupbv( &monitor_op[ i ].nrdn, &rdn );
index cb741f2fd01eadb725df9a98a79205c9c7b34706..5c6f100a86123bcec78d38126a1b3a553340ed74 100644 (file)
@@ -75,32 +75,10 @@ monitor_subsys_overlay_init(
                Entry           *e;
                BackendDB       *be;
 
-               snprintf( buf, sizeof( buf ),
-                               "dn: cn=Overlay %d,%s\n"
-                               "objectClass: %s\n"
-                               "structuralObjectClass: %s\n"
-                               "cn: Overlay %d\n"
-                               "%s: %s\n"
-                               "%s: %s\n"
-                               "creatorsName: %s\n"
-                               "modifiersName: %s\n"
-                               "createTimestamp: %s\n"
-                               "modifyTimestamp: %s\n",
-                               i,
-                               ms->mss_dn.bv_val,
-                               mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                               mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                               i,
-                               mi->mi_ad_monitoredInfo->ad_cname.bv_val,
-                                       on->on_bi.bi_type,
-                               mi->mi_ad_monitorRuntimeConfig->ad_cname.bv_val,
-                                       on->on_bi.bi_cf_ocs ? "TRUE" : "FALSE",
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_startTime.bv_val,
-                               mi->mi_startTime.bv_val );
-               
-               e = str2entry( buf );
+               bv.bv_len = snprintf( buf, sizeof( buf ), "cn=Overlay %d", i );
+               bv.bv_val = buf;
+               e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+                       mi->mi_oc_monitoredObject, mi, NULL, NULL );
                if ( e == NULL ) {
                        Debug( LDAP_DEBUG_ANY,
                                "monitor_subsys_overlay_init: "
@@ -108,8 +86,12 @@ monitor_subsys_overlay_init(
                                i, ms->mss_ndn.bv_val, 0 );
                        return( -1 );
                }
-               
                ber_str2bv( on->on_bi.bi_type, 0, 0, &bv );
+               attr_merge_normalize_one( e, mi->mi_ad_monitoredInfo, &bv, NULL );
+               attr_merge_normalize_one( e, mi->mi_ad_monitorRuntimeConfig,
+                       on->on_bi.bi_cf_ocs ? (struct berval *)&slap_true_bv :
+                               (struct berval *)&slap_false_bv, NULL );
+               
                attr_merge_normalize_one( e_overlay, mi->mi_ad_monitoredInfo,
                                &bv, NULL );
 
index 0c8fdafcffffa66f4464ab8f149dd032686313a1..ebe6a46c687a6f917408c76039f8b34006c7748e 100644 (file)
@@ -116,6 +116,16 @@ extern monitor_entry_t *
 monitor_entrypriv_create LDAP_P((
        void ));
 
+extern Entry *
+monitor_entry_stub LDAP_P((
+       struct berval   *pdn,
+       struct berval   *pndn,
+       struct berval   *rdn,
+       ObjectClass             *oc,
+       monitor_info_t  *mi,
+       struct berval   *create,
+       struct berval   *modify));
+
 /*
  * init
  */
index 8037d9fda2d2a67278629e89c34ab688aa7b11dc..e8ae7bf6178ee44d81cbc3e3827e58746b471bc3 100644 (file)
@@ -90,26 +90,8 @@ monitor_subsys_rww_init(
                struct berval           nrdn, bv;
                Entry                   *e;
                
-               snprintf( buf, sizeof( buf ),
-                       "dn: %s,%s\n"
-                       "objectClass: %s\n"
-                       "structuralObjectClass: %s\n"
-                       "cn: %s\n"
-                       "creatorsName: %s\n"
-                       "modifiersName: %s\n"
-                       "createTimestamp: %s\n"
-                       "modifyTimestamp: %s\n",
-                       monitor_rww[ i ].rdn.bv_val,
-                       ms->mss_dn.bv_val,
-                       mi->mi_oc_monitorCounterObject->soc_cname.bv_val,
-                       mi->mi_oc_monitorCounterObject->soc_cname.bv_val,
-                       &monitor_rww[ i ].rdn.bv_val[ STRLENOF( "cn=" ) ],
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_startTime.bv_val,
-                       mi->mi_startTime.bv_val );
-       
-               e = str2entry( buf );
+               e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &monitor_rww[i].rdn,
+                       mi->mi_oc_monitorCounterObject, mi, NULL, NULL );
                if ( e == NULL ) {
                        Debug( LDAP_DEBUG_ANY,
                                "monitor_subsys_rww_init: "
@@ -123,7 +105,7 @@ monitor_subsys_rww_init(
                ber_dupbv( &monitor_rww[ i ].nrdn, &nrdn );
        
                BER_BVSTR( &bv, "0" );
-               attr_merge_one( e, mi->mi_ad_monitorCounter, &bv, &bv );
+               attr_merge_normalize_one( e, mi->mi_ad_monitorCounter, &bv, NULL );
        
                mp = monitor_entrypriv_create();
                if ( mp == NULL ) {
index 3c36e6fc4e3a45e166d92e0fe27fa2faf9cb01b5..23ed6419ca3dc698507fb3a963d930e98849a5a9 100644 (file)
@@ -93,26 +93,10 @@ monitor_subsys_sent_init(
                struct berval           nrdn, bv;
                Entry                   *e;
 
-               snprintf( buf, sizeof( buf ),
-                               "dn: %s,%s\n"
-                               "objectClass: %s\n"
-                               "structuralObjectClass: %s\n"
-                               "cn: %s\n"
-                               "creatorsName: %s\n"
-                               "modifiersName: %s\n"
-                               "createTimestamp: %s\n"
-                               "modifyTimestamp: %s\n",
-                               monitor_sent[ i ].rdn.bv_val,
-                               ms->mss_dn.bv_val,
-                               mi->mi_oc_monitorCounterObject->soc_cname.bv_val,
-                               mi->mi_oc_monitorCounterObject->soc_cname.bv_val,
-                               &monitor_sent[ i ].rdn.bv_val[ STRLENOF( "cn=" ) ],
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_creatorsName.bv_val,
-                               mi->mi_startTime.bv_val,
-                               mi->mi_startTime.bv_val );
-
-               e = str2entry( buf );
+               e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn,
+                       &monitor_sent[i].rdn, mi->mi_oc_monitorCounterObject,
+                       mi, NULL, NULL );
+                       
                if ( e == NULL ) {
                        Debug( LDAP_DEBUG_ANY,
                                "monitor_subsys_sent_init: "
@@ -127,7 +111,7 @@ monitor_subsys_sent_init(
                ber_dupbv( &monitor_sent[ i ].nrdn, &nrdn );
        
                BER_BVSTR( &bv, "0" );
-               attr_merge_one( e, mi->mi_ad_monitorCounter, &bv, &bv );
+               attr_merge_normalize_one( e, mi->mi_ad_monitorCounter, &bv, NULL );
        
                mp = monitor_entrypriv_create();
                if ( mp == NULL ) {
index 2e4ded453561b80228588b95535e49f4996a75e1..c66df017d6eaaee33ecb3af3cafabff22f4a01ca 100644 (file)
@@ -48,6 +48,7 @@ monitor_subsys_thread_init(
        monitor_entry_t *mp;
        Entry           *e, **ep, *e_thread;
        static char     buf[ BACKMONITOR_BUFSIZE ];
+       struct berval bv;
 
        ms->mss_update = monitor_subsys_thread_update;
 
@@ -68,27 +69,9 @@ monitor_subsys_thread_init(
        /*
         * Max
         */
-       snprintf( buf, sizeof( buf ),
-                       "dn: cn=Max,%s\n"
-                       "objectClass: %s\n"
-                       "structuralObjectClass: %s\n"
-                       "cn: Max\n"
-                       "%s: %d\n"
-                       "creatorsName: %s\n"
-                       "modifiersName: %s\n"
-                       "createTimestamp: %s\n"
-                       "modifyTimestamp: %s\n", 
-                       ms->mss_dn.bv_val,
-                       mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                       mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                       mi->mi_ad_monitoredInfo->ad_cname.bv_val,
-                       connection_pool_max,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_startTime.bv_val,
-                       mi->mi_startTime.bv_val );
-
-       e = str2entry( buf );
+       BER_BVSTR( &bv, "cn=Max" );
+       e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+               mi->mi_oc_monitoredObject, mi, NULL, NULL );
        if ( e == NULL ) {
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_thread_init: "
@@ -96,6 +79,9 @@ monitor_subsys_thread_init(
                        ms->mss_ndn.bv_val, 0, 0 );
                return( -1 );
        }
+       bv.bv_len = snprintf( buf, sizeof( buf ), "%d", connection_pool_max );
+       bv.bv_val = buf;
+       attr_merge_normalize_one( e, mi->mi_ad_monitoredInfo, &bv, NULL );
        
        mp = monitor_entrypriv_create();
        if ( mp == NULL ) {
@@ -120,26 +106,9 @@ monitor_subsys_thread_init(
        /*
         * Backload
         */
-       snprintf( buf, sizeof( buf ),
-                       "dn: cn=Backload,%s\n"
-                       "objectClass: %s\n"
-                       "structuralObjectClass: %s\n"
-                       "cn: Backload\n"
-                       "%s: 0\n"
-                       "creatorsName: %s\n"
-                       "modifiersName: %s\n"
-                       "createTimestamp: %s\n"
-                       "modifyTimestamp: %s\n",
-                       ms->mss_dn.bv_val,
-                       mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                       mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                       mi->mi_ad_monitoredInfo->ad_cname.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_startTime.bv_val,
-                       mi->mi_startTime.bv_val );
-
-       e = str2entry( buf );
+       BER_BVSTR( &bv, "cn=Backload" );
+       e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+               mi->mi_oc_monitoredObject, mi, NULL, NULL );
        if ( e == NULL ) {
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_thread_init: "
@@ -147,6 +116,8 @@ monitor_subsys_thread_init(
                        ms->mss_ndn.bv_val, 0, 0 );
                return( -1 );
        }
+       BER_BVSTR( &bv, "0" );
+       attr_merge_normalize_one( e, mi->mi_ad_monitoredInfo, &bv, NULL );
 
        mp = monitor_entrypriv_create();
        if ( mp == NULL ) {
@@ -171,26 +142,9 @@ monitor_subsys_thread_init(
        /*
         * Runqueue runners
         */
-       snprintf( buf, sizeof( buf ),
-                       "dn: cn=Runqueue,%s\n"
-                       "objectClass: %s\n"
-                       "structuralObjectClass: %s\n"
-                       "cn: Runqueue\n"
-                       "%s: 0\n"
-                       "creatorsName: %s\n"
-                       "modifiersName: %s\n"
-                       "createTimestamp: %s\n"
-                       "modifyTimestamp: %s\n",
-                       ms->mss_dn.bv_val,
-                       mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                       mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                       mi->mi_ad_monitoredInfo->ad_cname.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_startTime.bv_val,
-                       mi->mi_startTime.bv_val );
-
-       e = str2entry( buf );
+       BER_BVSTR( &bv, "cn=Runqueue" );
+       e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+               mi->mi_oc_monitoredObject, mi, NULL, NULL );
        if ( e == NULL ) {
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_thread_init: "
@@ -198,6 +152,8 @@ monitor_subsys_thread_init(
                        ms->mss_ndn.bv_val, 0, 0 );
                return( -1 );
        }
+       BER_BVSTR( &bv, "0" );
+       attr_merge_normalize_one( e, mi->mi_ad_monitoredInfo, &bv, NULL );
 
        mp = monitor_entrypriv_create();
        if ( mp == NULL ) {
index d62fbca983027b9875b800cb1e5434b32b8ecf75..c8588e8048f3942b6a5f8f34ba8633718da3f8b2 100644 (file)
@@ -47,6 +47,7 @@ monitor_subsys_time_init(
        Entry           *e, **ep, *e_time;
        monitor_entry_t *mp;
        char            buf[ BACKMONITOR_BUFSIZE ];
+       struct berval bv;
 
        assert( be != NULL );
 
@@ -67,27 +68,9 @@ monitor_subsys_time_init(
        mp->mp_children = NULL;
        ep = &mp->mp_children;
 
-       snprintf( buf, sizeof( buf ),
-                       "dn: cn=Start,%s\n"
-                       "objectClass: %s\n"
-                       "structuralObjectClass: %s\n"
-                       "cn: Start\n"
-                       "%s: %s\n"
-                       "creatorsName: %s\n"
-                       "modifiersName: %s\n"
-                       "createTimestamp: %s\n"
-                       "modifyTimestamp: %s\n", 
-                       ms->mss_dn.bv_val,
-                       mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                       mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                       mi->mi_ad_monitorTimestamp->ad_cname.bv_val,
-                       mi->mi_startTime.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_startTime.bv_val,
-                       mi->mi_startTime.bv_val );
-
-       e = str2entry( buf );
+       BER_BVSTR( &bv, "cn=Start" );
+       e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+               mi->mi_oc_monitoredObject, mi, NULL, NULL );
        if ( e == NULL ) {
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_time_init: "
@@ -95,6 +78,8 @@ monitor_subsys_time_init(
                        ms->mss_ndn.bv_val, 0, 0 );
                return( -1 );
        }
+       attr_merge_normalize_one( e, mi->mi_ad_monitorTimestamp,
+               &mi->mi_startTime, NULL );
        
        mp = monitor_entrypriv_create();
        if ( mp == NULL ) {
@@ -119,27 +104,9 @@ monitor_subsys_time_init(
        /*
         * Current
         */
-       snprintf( buf, sizeof( buf ),
-                       "dn: cn=Current,%s\n"
-                       "objectClass: %s\n"
-                       "structuralObjectClass: %s\n"
-                       "cn: Current\n"
-                       "%s: %s\n"
-                       "creatorsName: %s\n"
-                       "modifiersName: %s\n"
-                       "createTimestamp: %s\n"
-                       "modifyTimestamp: %s\n",
-                       ms->mss_dn.bv_val,
-                       mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                       mi->mi_oc_monitoredObject->soc_cname.bv_val,
-                       mi->mi_ad_monitorTimestamp->ad_cname.bv_val,
-                       mi->mi_startTime.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_creatorsName.bv_val,
-                       mi->mi_startTime.bv_val,
-                       mi->mi_startTime.bv_val );
-
-       e = str2entry( buf );
+       BER_BVSTR( &bv, "cn=Current" );
+       e = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &bv,
+               mi->mi_oc_monitoredObject, mi, NULL, NULL );
        if ( e == NULL ) {
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_time_init: "
@@ -147,6 +114,8 @@ monitor_subsys_time_init(
                        ms->mss_ndn.bv_val, 0, 0 );
                return( -1 );
        }
+       attr_merge_normalize_one( e, mi->mi_ad_monitorTimestamp,
+               &mi->mi_startTime, NULL );
 
        mp = monitor_entrypriv_create();
        if ( mp == NULL ) {