X-Git-Url: https://git.sur5r.net/?a=blobdiff_plain;f=servers%2Fslapd%2Fback-monitor%2Fconn.c;h=24c68396eb5896fe1b71b5c8656f22836f19a505;hb=44abcdfa2fd10362ea5bf46fdc6acd6875fcc0b8;hp=d8686e8ad05f015cc2a9650894e53a5a64635f3b;hpb=12b6e804a5ca24f4990e17e094c2d593e9fdf0b6;p=openldap diff --git a/servers/slapd/back-monitor/conn.c b/servers/slapd/back-monitor/conn.c index d8686e8ad0..24c68396eb 100644 --- a/servers/slapd/back-monitor/conn.c +++ b/servers/slapd/back-monitor/conn.c @@ -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 ) {