Skip to content
Snippets Groups Projects
Commit a6e232e7 authored by Pierangelo Masarati's avatar Pierangelo Masarati
Browse files

add uptime monitoring (in seconds)

parent 93f338eb
No related branches found
No related tags found
No related merge requests found
......@@ -46,7 +46,7 @@ monitor_subsys_time_init(
Entry *e, **ep, *e_time;
monitor_entry_t *mp;
struct berval bv;
struct berval bv, value;
assert( be != NULL );
......@@ -73,8 +73,8 @@ monitor_subsys_time_init(
if ( e == NULL ) {
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_time_init: "
"unable to create entry \"cn=Start,%s\"\n",
ms->mss_ndn.bv_val, 0, 0 );
"unable to create entry \"%s,%s\"\n",
bv.bv_val, ms->mss_ndn.bv_val, 0 );
return( -1 );
}
attr_merge_normalize_one( e, mi->mi_ad_monitorTimestamp,
......@@ -92,8 +92,8 @@ monitor_subsys_time_init(
if ( monitor_cache_add( mi, e ) ) {
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_time_init: "
"unable to add entry \"cn=Start,%s\"\n",
ms->mss_ndn.bv_val, 0, 0 );
"unable to add entry \"%s,%s\"\n",
bv.bv_val, ms->mss_ndn.bv_val, 0 );
return( -1 );
}
......@@ -109,8 +109,8 @@ monitor_subsys_time_init(
if ( e == NULL ) {
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_time_init: "
"unable to create entry \"cn=Current,%s\"\n",
ms->mss_ndn.bv_val, 0, 0 );
"unable to create entry \"%s,%s\"\n",
bv.bv_val, ms->mss_ndn.bv_val, 0 );
return( -1 );
}
attr_merge_normalize_one( e, mi->mi_ad_monitorTimestamp,
......@@ -128,8 +128,45 @@ monitor_subsys_time_init(
if ( monitor_cache_add( mi, e ) ) {
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_time_init: "
"unable to add entry \"cn=Current,%s\"\n",
ms->mss_ndn.bv_val, 0, 0 );
"unable to add entry \"%s,%s\"\n",
bv.bv_val, ms->mss_ndn.bv_val, 0 );
return( -1 );
}
*ep = e;
ep = &mp->mp_next;
/*
* Uptime
*/
BER_BVSTR( &bv, "cn=Uptime" );
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: "
"unable to create entry \"%s,%s\"\n",
bv.bv_val, ms->mss_ndn.bv_val, 0 );
return( -1 );
}
BER_BVSTR( &value, "0" );
attr_merge_normalize_one( e, mi->mi_ad_monitoredInfo,
&value, NULL );
mp = monitor_entrypriv_create();
if ( mp == NULL ) {
return -1;
}
e->e_private = ( void * )mp;
mp->mp_info = ms;
mp->mp_flags = ms->mss_flags \
| MONITOR_F_SUB | MONITOR_F_PERSISTENT;
if ( monitor_cache_add( mi, e ) ) {
Debug( LDAP_DEBUG_ANY,
"monitor_subsys_time_init: "
"unable to add entry \"%s,%s\"\n",
bv.bv_val, ms->mss_ndn.bv_val, 0 );
return( -1 );
}
......@@ -148,7 +185,8 @@ monitor_subsys_time_update(
Entry *e )
{
monitor_info_t *mi = ( monitor_info_t * )op->o_bd->be_private;
static struct berval bv_current = BER_BVC( "cn=current" );
static struct berval bv_current = BER_BVC( "cn=current" ),
bv_uptime = BER_BVC( "cn=uptime" );
struct berval rdn;
assert( mi != NULL );
......@@ -200,6 +238,27 @@ monitor_subsys_time_update(
assert( len == a->a_vals[ 0 ].bv_len );
AC_MEMCPY( a->a_vals[ 0 ].bv_val, tmbuf, len );
/* FIXME: touch modifyTimestamp? */
} else if ( dn_match( &rdn, &bv_uptime ) ) {
Attribute *a;
char buf[ BACKMONITOR_BUFSIZE ];
struct berval bv;
a = attr_find( e->e_attrs, mi->mi_ad_monitoredInfo );
if ( a == NULL ) {
return rs->sr_err = LDAP_OTHER;
}
bv.bv_len = snprintf( buf, sizeof( buf ), "%lu",
(unsigned long)difftime( slap_get_time(), starttime ) );
bv.bv_val = buf;
ber_bvreplace( &a->a_vals[ 0 ], &bv );
if ( a->a_nvals != a->a_vals ) {
ber_bvreplace( &a->a_nvals[ 0 ], &bv );
}
/* FIXME: touch modifyTimestamp? */
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment