/* $OpenLDAP$ */
/* This work is part of OpenLDAP Software <http://www.openldap.org/>.
*
- * Copyright 2001-2004 The OpenLDAP Foundation.
+ * Copyright 2001-2005 The OpenLDAP Foundation.
* Portions Copyright 2001-2003 Pierangelo Masarati.
* All rights reserved.
*
int
monitor_subsys_conn_init(
- BackendDB *be
+ BackendDB *be,
+ monitor_subsys_t *ms
)
{
- struct monitorinfo *mi;
-
- Entry *e, **ep, *e_conn;
- struct monitorentrypriv *mp;
- char buf[ BACKMONITOR_BUFSIZE ];
- struct berval bv;
+ monitor_info_t *mi;
+ Entry *e, **ep, *e_conn;
+ monitor_entry_t *mp;
+ char buf[ BACKMONITOR_BUFSIZE ];
+ struct berval bv;
assert( be != NULL );
- mi = ( struct monitorinfo * )be->be_private;
+ mi = ( monitor_info_t * )be->be_private;
- if ( monitor_cache_get( mi,
- &monitor_subsys[SLAPD_MONITOR_CONN].mss_ndn, &e_conn ) )
- {
+ if ( monitor_cache_get( mi, &ms->mss_ndn, &e_conn ) ) {
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_conn_init: "
"unable to get entry \"%s\"\n",
- monitor_subsys[SLAPD_MONITOR_CONN].mss_ndn.bv_val, 0, 0 );
+ ms->mss_ndn.bv_val, 0, 0 );
return( -1 );
}
- mp = ( struct monitorentrypriv * )e_conn->e_private;
+ mp = ( monitor_entry_t * )e_conn->e_private;
mp->mp_children = NULL;
ep = &mp->mp_children;
"modifiersName: %s\n"
"createTimestamp: %s\n"
"modifyTimestamp: %s\n",
- monitor_subsys[SLAPD_MONITOR_CONN].mss_dn.bv_val,
+ 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,
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_conn_init: "
"unable to create entry \"cn=Total,%s\"\n",
- monitor_subsys[SLAPD_MONITOR_CONN].mss_ndn.bv_val, 0, 0 );
+ ms->mss_ndn.bv_val, 0, 0 );
return( -1 );
}
BER_BVSTR( &bv, "0" );
attr_merge_one( e, mi->mi_ad_monitorCounter, &bv, NULL );
- mp = ( struct monitorentrypriv * )ch_calloc( sizeof( struct monitorentrypriv ), 1 );
+ mp = monitor_entrypriv_create();
+ if ( mp == NULL ) {
+ return -1;
+ }
e->e_private = ( void * )mp;
- mp->mp_next = NULL;
- mp->mp_children = NULL;
- mp->mp_info = &monitor_subsys[SLAPD_MONITOR_CONN];
- mp->mp_flags = monitor_subsys[SLAPD_MONITOR_CONN].mss_flags \
+ mp->mp_info = ms;
+ mp->mp_flags = ms->mss_flags \
| MONITOR_F_SUB | MONITOR_F_PERSISTENT;
mp->mp_flags &= ~MONITOR_F_VOLATILE_CH;
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_conn_init: "
"unable to add entry \"cn=Total,%s\"\n",
- monitor_subsys[SLAPD_MONITOR_CONN].mss_ndn.bv_val, 0, 0 );
+ ms->mss_ndn.bv_val, 0, 0 );
return( -1 );
}
"modifiersName: %s\n"
"createTimestamp: %s\n"
"modifyTimestamp: %s\n",
- monitor_subsys[SLAPD_MONITOR_CONN].mss_dn.bv_val,
+ 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,
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_conn_init: "
"unable to create entry \"cn=Current,%s\"\n",
- monitor_subsys[SLAPD_MONITOR_CONN].mss_ndn.bv_val, 0, 0 );
+ ms->mss_ndn.bv_val, 0, 0 );
return( -1 );
}
BER_BVSTR( &bv, "0" );
attr_merge_one( e, mi->mi_ad_monitorCounter, &bv, NULL );
- mp = ( struct monitorentrypriv * )ch_calloc( sizeof( struct monitorentrypriv ), 1 );
+ mp = monitor_entrypriv_create();
+ if ( mp == NULL ) {
+ return -1;
+ }
e->e_private = ( void * )mp;
- mp->mp_next = NULL;
- mp->mp_children = NULL;
- mp->mp_info = &monitor_subsys[SLAPD_MONITOR_CONN];
- mp->mp_flags = monitor_subsys[SLAPD_MONITOR_CONN].mss_flags \
+ mp->mp_info = ms;
+ mp->mp_flags = ms->mss_flags \
| MONITOR_F_SUB | MONITOR_F_PERSISTENT;
mp->mp_flags &= ~MONITOR_F_VOLATILE_CH;
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_conn_init: "
"unable to add entry \"cn=Current,%s\"\n",
- monitor_subsys[SLAPD_MONITOR_CONN].mss_ndn.bv_val, 0, 0 );
+ ms->mss_ndn.bv_val, 0, 0 );
return( -1 );
}
Entry *e
)
{
- struct monitorinfo *mi =
- (struct monitorinfo *)op->o_bd->be_private;
+ monitor_info_t *mi = ( monitor_info_t * )op->o_bd->be_private;
long n = -1;
static struct berval total_bv = BER_BVC( "cn=total" ),
}
a->a_vals[ 0 ].bv_len = len;
AC_MEMCPY( a->a_vals[ 0 ].bv_val, buf, len + 1 );
+
+ /* FIXME: touch modifyTimestamp? */
}
return( 0 );
static int
conn_create(
- struct monitorinfo *mi,
+ monitor_info_t *mi,
Connection *c,
- Entry **ep
+ Entry **ep,
+ monitor_subsys_t *ms
)
{
- struct monitorentrypriv *mp;
+ monitor_entry_t *mp;
struct tm *ltm;
char buf[ BACKMONITOR_BUFSIZE ];
char buf2[ LDAP_LUTIL_GENTIME_BUFSIZE ];
"modifiersName: %s\n"
"createTimestamp: %s\n"
"modifyTimestamp: %s\n",
- c->c_connid, monitor_subsys[SLAPD_MONITOR_CONN].mss_dn.bv_val,
+ 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,
"unable to create entry "
"\"cn=Connection %ld,%s\" entry\n",
c->c_connid,
- monitor_subsys[SLAPD_MONITOR_CONN].mss_dn.bv_val, 0 );
+ ms->mss_dn.bv_val, 0 );
return( -1 );
}
attr_merge_one( e, mi->mi_ad_monitorConnectionPeerAddress,
&c->c_peer_name, NULL );
- mp = ( struct monitorentrypriv * )ch_calloc( sizeof( struct monitorentrypriv ), 1 );
+ mp = monitor_entrypriv_create();
+ if ( mp == NULL ) {
+ return -1;
+ }
e->e_private = ( void * )mp;
- mp->mp_info = &monitor_subsys[ SLAPD_MONITOR_CONN ];
- mp->mp_children = NULL;
+ mp->mp_info = ms;
mp->mp_flags = MONITOR_F_SUB | MONITOR_F_VOLATILE;
*ep = e;
Entry **ep
)
{
- struct monitorinfo *mi =
- (struct monitorinfo *)op->o_bd->be_private;
+ monitor_info_t *mi = ( monitor_info_t * )op->o_bd->be_private;
Connection *c;
int connindex;
- struct monitorentrypriv *mp;
+ monitor_entry_t *mp;
int rc = 0;
+ monitor_subsys_t *ms;
assert( mi != NULL );
assert( e_parent != NULL );
assert( ep != NULL );
+ ms = (( monitor_entry_t *)e_parent->e_private)->mp_info;
+
*ep = NULL;
if ( ndn == NULL ) {
/* create all the children of e_parent */
for ( c = connection_first( &connindex );
c != NULL;
- c = connection_next( c, &connindex )) {
- if ( conn_create( mi, c, &e ) || e == NULL ) {
+ c = connection_next( c, &connindex ))
+ {
+ if ( conn_create( mi, c, &e, ms ) || e == NULL ) {
for ( ; e_tmp != NULL; ) {
- mp = ( struct monitorentrypriv * )e_tmp->e_private;
+ mp = ( monitor_entry_t * )e_tmp->e_private;
e = mp->mp_next;
ch_free( mp );
rc = -1;
break;
}
- mp = ( struct monitorentrypriv * )e->e_private;
+ mp = ( monitor_entry_t * )e->e_private;
mp->mp_next = e_tmp;
e_tmp = e;
}
c != NULL;
c = connection_next( c, &connindex )) {
if ( c->c_connid == connid ) {
- if ( conn_create( mi, c, ep ) || *ep == NULL ) {
+ if ( conn_create( mi, c, ep, ms ) || *ep == NULL ) {
rc = -1;
}