]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-monitor/sent.c
#include <ac/string.h>, to get strlen(), strncmp() and strncasecmp().
[openldap] / servers / slapd / back-monitor / sent.c
index e5b39379b002ee9f2ebc1811fafc66e9a96810e5..3637f4fd39e7d5e7ca922f5c412dbdbfdb5e7123 100644 (file)
@@ -1,6 +1,6 @@
 /* sent.c - deal with data sent subsystem */
 /*
- * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * Copyright 1998-2003 The OpenLDAP Foundation, All Rights Reserved.
  * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
  */
 /*
@@ -34,6 +34,7 @@
 #include "portable.h"
 
 #include <stdio.h>
+#include <ac/string.h>
 
 #include "slap.h"
 #include "back-monitor.h"
@@ -47,8 +48,8 @@ monitor_subsys_sent_init(
        
        Entry                   *e, *e_tmp, *e_sent;
        struct monitorentrypriv *mp;
-       char                    buf[1024];
-       struct berval           bv[2];
+       char                    buf[ BACKMONITOR_BUFSIZE ];
+       struct berval           bv;
 
        assert( be != NULL );
 
@@ -57,10 +58,10 @@ monitor_subsys_sent_init(
        if ( monitor_cache_get( mi,
                        &monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn, &e_sent ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+               LDAP_LOG( OPERATION, CRIT,
                        "monitor_subsys_sent_init: "
                        "unable to get entry '%s'\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val ));
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_sent_init: "
@@ -78,23 +79,20 @@ monitor_subsys_sent_init(
         */
        snprintf( buf, sizeof( buf ),
                        "dn: cn=Entries,%s\n"
-                       "objectClass: top\n"
-                       "objectClass: LDAPsubEntry\n"
-#ifdef SLAPD_MONITORSUBENTRY
-                       "objectClass: monitorSubEntry\n"
-#else /* !SLAPD_MONITORSUBENTRY */
-                       "objectClass: extensibleObject\n"
-#endif /* !SLAPD_MONITORSUBENTRY */
+                       "objectClass: %s\n"
+                       "structuralObjectClass: %s\n"
                        "cn: Entries\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_dn.bv_val );
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_dn.bv_val,
+                       mi->oc_monitorCounterObject->soc_cname.bv_val,
+                       mi->oc_monitorCounterObject->soc_cname.bv_val );
 
        e = str2entry( buf );
        if ( e == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+               LDAP_LOG( OPERATION, CRIT,
                        "monitor_subsys_sent_init: "
                        "unable to create entry 'cn=Entries,%s'\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val ));
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_sent_init: "
@@ -105,10 +103,9 @@ monitor_subsys_sent_init(
                return( -1 );
        }
        
-       bv[1].bv_val = NULL;
-       bv[0].bv_val = "0";
-       bv[0].bv_len = 1;
-       attr_merge( e, monitor_ad_desc, bv );
+       bv.bv_val = "0";
+       bv.bv_len = 1;
+       attr_merge_one( e, mi->ad_monitorCounter, &bv, NULL );
        
        mp = ( struct monitorentrypriv * )ch_calloc( sizeof( struct monitorentrypriv ), 1 );
        e->e_private = ( void * )mp;
@@ -120,10 +117,10 @@ monitor_subsys_sent_init(
 
        if ( monitor_cache_add( mi, e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+               LDAP_LOG( OPERATION, CRIT,
                        "monitor_subsys_sent_init: "
                        "unable to add entry 'cn=Entries,%s'\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val ));
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_sent_init: "
@@ -141,23 +138,20 @@ monitor_subsys_sent_init(
         */
        snprintf( buf, sizeof( buf ),
                        "dn: cn=Referrals,%s\n"
-                       "objectClass: top\n"
-                       "objectClass: LDAPsubEntry\n"
-#ifdef SLAPD_MONITORSUBENTRY
-                       "objectClass: monitorSubEntry\n"
-#else /* !SLAPD_MONITORSUBENTRY */
-                       "objectClass: extensibleObject\n"
-#endif /* !SLAPD_MONITORSUBENTRY */
+                       "objectClass: %s\n"
+                       "structuralObjectClass: %s\n"
                        "cn: Referrals\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_dn.bv_val );
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_dn.bv_val,
+                       mi->oc_monitorCounterObject->soc_cname.bv_val,
+                       mi->oc_monitorCounterObject->soc_cname.bv_val );
 
        e = str2entry( buf );
        if ( e == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+               LDAP_LOG( OPERATION, CRIT,
                        "monitor_subsys_sent_init: "
                        "unable to create entry 'cn=Referrals,%s'\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val ));
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_sent_init: "
@@ -168,9 +162,9 @@ monitor_subsys_sent_init(
                return( -1 );
        }
 
-       bv[0].bv_val = "0";
-       bv[0].bv_len = 1;
-       attr_merge( e, monitor_ad_desc, bv );
+       bv.bv_val = "0";
+       bv.bv_len = 1;
+       attr_merge_one( e, mi->ad_monitorCounter, &bv, NULL );
        
        mp = ( struct monitorentrypriv * )ch_calloc( sizeof( struct monitorentrypriv ), 1 );
        e->e_private = ( void * )mp;
@@ -182,10 +176,10 @@ monitor_subsys_sent_init(
 
        if ( monitor_cache_add( mi, e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+               LDAP_LOG( OPERATION, CRIT,
                        "monitor_subsys_sent_init: "
                        "unable to add entry 'cn=Referrals,%s'\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val ));
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_sent_init: "
@@ -203,23 +197,20 @@ monitor_subsys_sent_init(
         */
        snprintf( buf, sizeof( buf ),
                        "dn: cn=PDU,%s\n"
-                       "objectClass: top\n"
-                       "objectClass: LDAPsubEntry\n"
-#ifdef SLAPD_MONITORSUBENTRY
-                       "objectClass: monitorSubEntry\n"
-#else /* !SLAPD_MONITORSUBENTRY */
-                       "objectClass: extensibleObject\n"
-#endif /* !SLAPD_MONITORSUBENTRY */
+                       "objectClass: %s\n"
+                       "structuralObjectClass: %s\n"
                        "cn: PDU\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_dn.bv_val );
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_dn.bv_val,
+                       mi->oc_monitorCounterObject->soc_cname.bv_val,
+                       mi->oc_monitorCounterObject->soc_cname.bv_val );
 
        e = str2entry( buf );
        if ( e == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+               LDAP_LOG( OPERATION, CRIT,
                        "monitor_subsys_sent_init: "
                        "unable to create entry 'cn=PDU,%s'\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val ));
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_sent_init: "
@@ -230,9 +221,9 @@ monitor_subsys_sent_init(
                return( -1 );
        }
 
-       bv[0].bv_val = "0";
-       bv[0].bv_len = 1;
-       attr_merge( e, monitor_ad_desc, bv );
+       bv.bv_val = "0";
+       bv.bv_len = 1;
+       attr_merge_one( e, mi->ad_monitorCounter, &bv, NULL );
        
        mp = ( struct monitorentrypriv * )ch_calloc( sizeof( struct monitorentrypriv ), 1 );
        e->e_private = ( void * )mp;
@@ -244,10 +235,10 @@ monitor_subsys_sent_init(
 
        if ( monitor_cache_add( mi, e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+               LDAP_LOG( OPERATION, CRIT,
                        "monitor_subsys_sent_init: "
                        "unable to add entry 'cn=PDU,%s'\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val ));
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_sent_init: "
@@ -265,23 +256,20 @@ monitor_subsys_sent_init(
         */
        snprintf( buf, sizeof( buf ),
                        "dn: cn=Bytes,%s\n"
-                       "objectClass: top\n"
-                       "objectClass: LDAPsubEntry\n"
-#ifdef SLAPD_MONITORSUBENTRY
-                       "objectClass: monitorSubEntry\n"
-#else /* !SLAPD_MONITORSUBENTRY */
-                       "objectClass: extensibleObject\n"
-#endif /* !SLAPD_MONITORSUBENTRY */
+                       "objectClass: %s\n"
+                       "structuralObjectClass: %s\n"
                        "cn: Bytes\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_dn.bv_val );
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_dn.bv_val,
+                       mi->oc_monitorCounterObject->soc_cname.bv_val,
+                       mi->oc_monitorCounterObject->soc_cname.bv_val );
 
        e = str2entry( buf );
        if ( e == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+               LDAP_LOG( OPERATION, CRIT,
                        "monitor_subsys_sent_init: "
                        "unable to create entry 'cn=Bytes,%s'\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val ));
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_sent_init: "
@@ -292,9 +280,9 @@ monitor_subsys_sent_init(
                return( -1 );
        }
 
-       bv[0].bv_val = "0";
-       bv[0].bv_len = 1;
-       attr_merge( e, monitor_ad_desc, bv );
+       bv.bv_val = "0";
+       bv.bv_len = 1;
+       attr_merge_one( e, mi->ad_monitorCounter, &bv, NULL );
        
        mp = ( struct monitorentrypriv * )ch_calloc( sizeof( struct monitorentrypriv ), 1 );
        e->e_private = ( void * )mp;
@@ -306,10 +294,10 @@ monitor_subsys_sent_init(
 
        if ( monitor_cache_add( mi, e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
+               LDAP_LOG( OPERATION, CRIT,
                        "monitor_subsys_sent_init: "
                        "unable to add entry 'cn=Bytes,%s'\n",
-                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val ));
+                       monitor_subsys[SLAPD_MONITOR_SENT].mss_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "monitor_subsys_sent_init: "
@@ -332,35 +320,36 @@ monitor_subsys_sent_init(
 
 int
 monitor_subsys_sent_update(
-       struct monitorinfo      *mi,
+       Operation               *op,
        Entry                   *e
 )
 {
+       struct monitorinfo *mi = (struct monitorinfo *)op->o_bd->be_private;
        long            n = -1;
 
        assert( mi );
        assert( e );
        
-       if ( strncasecmp( e->e_ndn, "CN=ENTRIES", 
-                               sizeof("CN=ENTRIES")-1 ) == 0 ) {
+       if ( strncasecmp( e->e_ndn, "cn=entries", 
+                               sizeof("cn=entries")-1 ) == 0 ) {
                ldap_pvt_thread_mutex_lock(&num_sent_mutex);
                n = num_entries_sent;
                ldap_pvt_thread_mutex_unlock(&num_sent_mutex);
 
-       } else if ( strncasecmp( e->e_ndn, "CN=REFERRALS", 
-                               sizeof("CN=REFERRALS")-1 ) == 0 ) {
+       } else if ( strncasecmp( e->e_ndn, "cn=referrals", 
+                               sizeof("cn=referrals")-1 ) == 0 ) {
                ldap_pvt_thread_mutex_lock(&num_sent_mutex);
                n = num_refs_sent;
                ldap_pvt_thread_mutex_unlock(&num_sent_mutex);
 
-       } else if ( strncasecmp( e->e_ndn, "CN=PDU", 
-                               sizeof("CN=PDU")-1 ) == 0 ) {
+       } else if ( strncasecmp( e->e_ndn, "cn=pdu", 
+                               sizeof("cn=pdu")-1 ) == 0 ) {
                ldap_pvt_thread_mutex_lock(&num_sent_mutex);
                n = num_pdu_sent;
                ldap_pvt_thread_mutex_unlock(&num_sent_mutex);
 
-       } else if ( strncasecmp( e->e_ndn, "CN=BYTES", 
-                               sizeof("CN=BYTES")-1 ) == 0 ) {
+       } else if ( strncasecmp( e->e_ndn, "cn=bytes", 
+                               sizeof("cn=bytes")-1 ) == 0 ) {
                ldap_pvt_thread_mutex_lock(&num_sent_mutex);
                n = num_bytes_sent;
                ldap_pvt_thread_mutex_unlock(&num_sent_mutex);
@@ -368,16 +357,16 @@ monitor_subsys_sent_update(
 
        if ( n != -1 ) {
                Attribute       *a;
-               char            buf[16];
+               char            buf[] = "+9223372036854775807L";
 
-               a = attr_find( e->e_attrs, monitor_ad_desc );
+               a = attr_find( e->e_attrs, mi->ad_monitorCounter);
                if ( a == NULL ) {
                        return( -1 );
                }
 
                snprintf( buf, sizeof( buf ), "%ld", n );
                free( a->a_vals[ 0 ].bv_val );
-               ber_str2bv( buf, 0, 1, a->a_vals );
+               ber_str2bv( buf, 0, 1, &a->a_vals[ 0 ] );
        }
 
        return( 0 );