Add monitor_entry_stub() for creating entries. Fix conn peer/local mismatch.

This commit is contained in:
Howard Chu 2006-01-12 08:40:09 +00:00
parent 3a58263037
commit 797cffb9b3
14 changed files with 300 additions and 543 deletions

View 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

View 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;

View 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 );
ctmbv = bv2;
#endif
#ifdef HAVE_GMTIME_R
tm = gmtime_r( &c->c_activitytime, &tm_buf );
#else
tm = gmtime( &c->c_activitytime );
#endif
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
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 */
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
#ifndef HAVE_GMTIME_R
ldap_pvt_thread_mutex_unlock( &gmtime_mutex );
#endif
#ifndef HAVE_GMTIME_R
ldap_pvt_thread_mutex_lock( &gmtime_mutex );
#endif
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 );
#ifdef HAVE_GMTIME_R
ltm = gmtime_r( &c->c_starttime, &tm_buf );
#else
ltm = gmtime( &c->c_starttime );
#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 );
#endif
lutil_gentime( buf3, sizeof( buf3 ), ltm );
#ifndef HAVE_GMTIME_R
ldap_pvt_thread_mutex_unlock( &gmtime_mutex );
#endif /* HAVE_GMTIME_R */
snprintf( buf, sizeof( buf ),
"dn: cn=Connection %ld,%s\n"
"objectClass: %s\n"
"structuralObjectClass: %s\n"
"cn: Connection %ld\n"
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,
bv.bv_len = snprintf( buf, sizeof( buf ), "%lu", c->c_connid );
attr_merge_one( e, mi->mi_ad_monitorConnectionNumber, &bv, NULL );
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,
bv.bv_len = snprintf( buf, sizeof( buf ), "%ld", c->c_protocol );
attr_merge_one( e, mi->mi_ad_monitorConnectionProtocol, &bv, NULL );
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,
bv.bv_len = snprintf( buf, sizeof( buf ), "%ld", c->c_n_ops_received );
attr_merge_one( e, mi->mi_ad_monitorConnectionOpsReceived, &bv, NULL );
mi->mi_ad_monitorConnectionMask->ad_cname.bv_val,
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 ) {

View 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 ) {

View 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;
}

View 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 = monitor_entry_stub( NULL, NULL, &rdn, mi->mi_oc_monitorServer, mi,
NULL, NULL );
e = str2entry( buf );
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 );

View 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;

View 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 = monitor_entry_stub( &ms->mss_dn, &ms->mss_ndn, &monitor_op[i].rdn,
mi->mi_oc_monitorOperation, mi, NULL, NULL );
e = str2entry( buf );
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 );

View 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 );

View 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
*/

View 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 ) {

View 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 ) {

View 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 ) {

View 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 ) {