*** ./servers/slapd/monitor.c.orig Tue Sep 12 16:24:34 2000 --- ./servers/slapd/monitor.c Tue Sep 12 19:01:20 2000 *************** *** 44,49 **** --- 44,68 ---- Connection *c; int connindex; time_t currenttime; + AttributeDescription *ad_objectClass = slap_schema.si_ad_objectClass; + AttributeDescription *ad_version = slap_schema.si_ad_version; + AttributeDescription *ad_threads = slap_schema.si_ad_threads; + AttributeDescription *ad_connection = slap_schema.si_ad_connection; + AttributeDescription *ad_currentConnections = slap_schema.si_ad_currentConnections; + AttributeDescription *ad_totalConnections = slap_schema.si_ad_totalConnections; + AttributeDescription *ad_dTableSize = slap_schema.si_ad_dTableSize; + AttributeDescription *ad_writeWaiters = slap_schema.si_ad_writeWaiters; + AttributeDescription *ad_readWaiters = slap_schema.si_ad_readWaiters; + AttributeDescription *ad_opsInitiated = slap_schema.si_ad_opsInitiated; + AttributeDescription *ad_opsCompleted = slap_schema.si_ad_opsCompleted; + AttributeDescription *ad_entriesSent = slap_schema.si_ad_entriesSent; + AttributeDescription *ad_referencesSent = slap_schema.si_ad_referencesSent; + AttributeDescription *ad_pduSent = slap_schema.si_ad_pduSent; + AttributeDescription *ad_bytesSent = slap_schema.si_ad_bytesSent; + AttributeDescription *ad_currenttime = slap_schema.si_ad_currenttime; + AttributeDescription *ad_starttime = slap_schema.si_ad_starttime; + AttributeDescription *ad_nbackends = slap_schema.si_ad_nbackends; + AttributeDescription *ad_concurrency = slap_schema.si_ad_concurrency; vals[0] = &val; vals[1] = NULL; *************** *** 57,72 **** val.bv_val = "top"; val.bv_len = sizeof("top")-1; ! attr_merge( e, "objectClass", vals ); val.bv_val = "LDAPsubentry"; val.bv_len = sizeof("LDAPsubentry")-1; ! attr_merge( e, "objectClass", vals ); val.bv_val = "extensibleObject"; val.bv_len = sizeof("extensibleObject")-1; ! attr_merge( e, "objectClass", vals ); { char *rdn = ch_strdup( SLAPD_MONITOR_DN ); val.bv_val = strchr( rdn, '=' ); --- 76,92 ---- val.bv_val = "top"; val.bv_len = sizeof("top")-1; ! attr_merge( e, ad_objectClass, vals ); val.bv_val = "LDAPsubentry"; val.bv_len = sizeof("LDAPsubentry")-1; ! attr_merge( e, ad_objectClass, vals ); val.bv_val = "extensibleObject"; val.bv_len = sizeof("extensibleObject")-1; ! attr_merge( e, ad_objectClass, vals ); + #if 0 { char *rdn = ch_strdup( SLAPD_MONITOR_DN ); val.bv_val = strchr( rdn, '=' ); *************** *** 80,85 **** --- 100,106 ---- free( rdn ); } + #endif val.bv_val = (char *) Versionstr; if (( p = strchr( Versionstr, '\n' )) == NULL ) { *************** *** 87,99 **** } else { val.bv_len = p - Versionstr; } ! attr_merge( e, "version", vals ); sprintf( buf, "%d", ldap_pvt_thread_pool_backload( &connection_pool) ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "threads", vals ); nconns = 0; nwritewaiters = 0; --- 108,120 ---- } else { val.bv_len = p - Versionstr; } ! attr_merge( e, ad_version, vals ); sprintf( buf, "%d", ldap_pvt_thread_pool_backload( &connection_pool) ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_threads, vals ); nconns = 0; nwritewaiters = 0; *************** *** 159,165 **** val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "connection", vals ); } connection_done(c); --- 180,186 ---- val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_connection, vals ); } connection_done(c); *************** *** 166,192 **** sprintf( buf, "%d", nconns ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "currentConnections", vals ); sprintf( buf, "%ld", connections_nextid() ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "totalConnections", vals ); sprintf( buf, "%ld", (long) dtblsize ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "dTableSize", vals ); sprintf( buf, "%d", nwritewaiters ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "writeWaiters", vals ); sprintf( buf, "%d", nreadwaiters ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "readWaiters", vals ); ldap_pvt_thread_mutex_lock(&num_ops_mutex); sprintf( buf, "%ld", num_ops_initiated ); --- 187,213 ---- sprintf( buf, "%d", nconns ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_currentConnections, vals ); sprintf( buf, "%ld", connections_nextid() ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_totalConnections, vals ); sprintf( buf, "%ld", (long) dtblsize ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_dTableSize, vals ); sprintf( buf, "%d", nwritewaiters ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_writeWaiters, vals ); sprintf( buf, "%d", nreadwaiters ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_readWaiters, vals ); ldap_pvt_thread_mutex_lock(&num_ops_mutex); sprintf( buf, "%ld", num_ops_initiated ); *************** *** 193,199 **** ldap_pvt_thread_mutex_unlock(&num_ops_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "opsInitiated", vals ); ldap_pvt_thread_mutex_lock(&num_ops_mutex); sprintf( buf, "%ld", num_ops_completed ); --- 214,220 ---- ldap_pvt_thread_mutex_unlock(&num_ops_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_opsInitiated, vals ); ldap_pvt_thread_mutex_lock(&num_ops_mutex); sprintf( buf, "%ld", num_ops_completed ); *************** *** 200,206 **** ldap_pvt_thread_mutex_unlock(&num_ops_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "opsCompleted", vals ); ldap_pvt_thread_mutex_lock(&num_sent_mutex); sprintf( buf, "%ld", num_entries_sent ); --- 221,227 ---- ldap_pvt_thread_mutex_unlock(&num_ops_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_opsCompleted, vals ); ldap_pvt_thread_mutex_lock(&num_sent_mutex); sprintf( buf, "%ld", num_entries_sent ); *************** *** 207,213 **** ldap_pvt_thread_mutex_unlock(&num_sent_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "entriesSent", vals ); ldap_pvt_thread_mutex_lock(&num_sent_mutex); sprintf( buf, "%ld", num_refs_sent ); --- 228,234 ---- ldap_pvt_thread_mutex_unlock(&num_sent_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_entriesSent, vals ); ldap_pvt_thread_mutex_lock(&num_sent_mutex); sprintf( buf, "%ld", num_refs_sent ); *************** *** 214,220 **** ldap_pvt_thread_mutex_unlock(&num_sent_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "referencesSent", vals ); ldap_pvt_thread_mutex_lock(&num_sent_mutex); sprintf( buf, "%ld", num_pdu_sent ); --- 235,241 ---- ldap_pvt_thread_mutex_unlock(&num_sent_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_referencesSent, vals ); ldap_pvt_thread_mutex_lock(&num_sent_mutex); sprintf( buf, "%ld", num_pdu_sent ); *************** *** 221,227 **** ldap_pvt_thread_mutex_unlock(&num_sent_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "pduSent", vals ); ldap_pvt_thread_mutex_lock(&num_sent_mutex); sprintf( buf, "%ld", num_bytes_sent ); --- 242,248 ---- ldap_pvt_thread_mutex_unlock(&num_sent_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_pduSent, vals ); ldap_pvt_thread_mutex_lock(&num_sent_mutex); sprintf( buf, "%ld", num_bytes_sent ); *************** *** 228,234 **** ldap_pvt_thread_mutex_unlock(&num_sent_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "bytesSent", vals ); currenttime = slap_get_time(); --- 249,255 ---- ldap_pvt_thread_mutex_unlock(&num_sent_mutex); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_bytesSent, vals ); currenttime = slap_get_time(); *************** *** 237,243 **** strftime( buf, sizeof(buf), "%Y%m%d%H%M%SZ", ltm ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "currenttime", vals ); ltm = gmtime( &starttime ); strftime( buf, sizeof(buf), "%Y%m%d%H%M%SZ", ltm ); --- 258,264 ---- strftime( buf, sizeof(buf), "%Y%m%d%H%M%SZ", ltm ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_currenttime, vals ); ltm = gmtime( &starttime ); strftime( buf, sizeof(buf), "%Y%m%d%H%M%SZ", ltm ); *************** *** 245,262 **** val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "starttime", vals ); sprintf( buf, "%d", nbackends ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "nbackends", vals ); #ifdef HAVE_THREAD_CONCURRENCY sprintf( buf, "%d", ldap_pvt_thread_get_concurrency() ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "concurrency", vals ); #endif *entry = e; --- 266,283 ---- val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_starttime, vals ); sprintf( buf, "%d", nbackends ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_nbackends, vals ); #ifdef HAVE_THREAD_CONCURRENCY sprintf( buf, "%d", ldap_pvt_thread_get_concurrency() ); val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_concurrency, vals ); #endif *entry = e; *** ./servers/slapd/slap.h.orig Tue Sep 12 16:52:46 2000 --- ./servers/slapd/slap.h Tue Sep 12 19:06:46 2000 *************** *** 458,463 **** --- 458,488 ---- #ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND AttributeDescription *si_ad_krbName; #endif + #if defined( SLAPD_MONITOR_DN ) + /* Monitor descriptions */ + AttributeDescription *si_ad_version; + AttributeDescription *si_ad_threads; + AttributeDescription *si_ad_connection; + AttributeDescription *si_ad_currentConnections; + AttributeDescription *si_ad_totalConnections; + AttributeDescription *si_ad_dTableSize; + AttributeDescription *si_ad_writeWaiters; + AttributeDescription *si_ad_readWaiters; + AttributeDescription *si_ad_opsInitiated; + AttributeDescription *si_ad_opsCompleted; + AttributeDescription *si_ad_entriesSent; + AttributeDescription *si_ad_referencesSent; + AttributeDescription *si_ad_pduSent; + AttributeDescription *si_ad_bytesSent; + AttributeDescription *si_ad_currenttime; + AttributeDescription *si_ad_starttime; + AttributeDescription *si_ad_nbackends; + AttributeDescription *si_ad_concurrency; + #endif + #if defined( SLAPD_CONFIG_DN ) + /* Config descriptions */ + AttributeDescription *si_ad_database; + #endif /* Undefined Attribute Type */ AttributeType *si_at_undefined; *** ./servers/slapd/schema_prep.c.orig Tue Sep 12 17:00:11 2000 --- ./servers/slapd/schema_prep.c Tue Sep 12 19:08:15 2000 *************** *** 193,198 **** --- 193,240 ---- { "krbName", NULL, NULL, NULL, offsetof(struct slap_internal_schema, si_ad_krbName) }, #endif + #if defined ( SLAPD_MONITOR_DN ) + { "version", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_version) }, + { "threads", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_threads) }, + { "connection", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_connection) }, + { "currentConnections", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_currentConnections) }, + { "totalConnections", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_totalConnections) }, + { "dTableSize", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_dTableSize) }, + { "writeWaiters", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_writeWaiters) }, + { "readWaiters", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_readWaiters) }, + { "opsInitiated", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_opsInitiated) }, + { "opsCompleted", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_opsCompleted) }, + { "entriesSent", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_entriesSent) }, + { "referencesSent", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_referencesSent) }, + { "pduSent", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_pduSent) }, + { "bytesSent", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_bytesSent) }, + { "currenttime", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_currenttime) }, + { "starttime", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_starttime) }, + { "nbackends", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_nbackends) }, + { "concurrency", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_concurrency) }, + #endif + #if defined ( SLAPD_CONFIG_DN ) + { "database", NULL, NULL, NULL, + offsetof(struct slap_internal_schema, si_ad_database) }, + #endif { NULL, NULL, NULL, NULL, 0 } }; *** ./servers/slapd/configinfo.c.orig Tue Sep 12 19:08:40 2000 --- ./servers/slapd/configinfo.c Tue Sep 12 19:10:34 2000 *************** *** 39,44 **** --- 39,46 ---- struct berval val; struct berval *vals[2]; int i, j; + AttributeDescription *ad_objectClass = slap_schema.si_ad_objectClass; + AttributeDescription *ad_database = slap_schema.si_ad_database; vals[0] = &val; vals[1] = NULL; *************** *** 53,68 **** val.bv_val = "top"; val.bv_len = sizeof("top")-1; ! attr_merge( e, "objectClass", vals ); val.bv_val = "LDAPsubentry"; val.bv_len = sizeof("LDAPsubentry")-1; ! attr_merge( e, "objectClass", vals ); val.bv_val = "extensibleObject"; val.bv_len = sizeof("extensibleObject")-1; ! attr_merge( e, "objectClass", vals ); { char *rdn = ch_strdup( SLAPD_CONFIG_DN ); val.bv_val = strchr( rdn, '=' ); --- 55,71 ---- val.bv_val = "top"; val.bv_len = sizeof("top")-1; ! attr_merge( e, ad_objectClass, vals ); val.bv_val = "LDAPsubentry"; val.bv_len = sizeof("LDAPsubentry")-1; ! attr_merge( e, ad_objectClass, vals ); val.bv_val = "extensibleObject"; val.bv_len = sizeof("extensibleObject")-1; ! attr_merge( e, ad_objectClass, vals ); + #if 0 { char *rdn = ch_strdup( SLAPD_CONFIG_DN ); val.bv_val = strchr( rdn, '=' ); *************** *** 76,81 **** --- 79,85 ---- free( rdn ); } + #endif for ( i = 0; i < nbackends; i++ ) { strcpy( buf, backends[i].be_type ); *************** *** 85,91 **** } val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, "database", vals ); } *entry = e; --- 89,95 ---- } val.bv_val = buf; val.bv_len = strlen( buf ); ! attr_merge( e, ad_database, vals ); } *entry = e;