]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/back-monitor/log.c
Remove lint
[openldap] / servers / slapd / back-monitor / log.c
index 8ab11949e983ede6f3d2c68d8b7fffed83b1d9cc..6a390891d463c49949a3e2c02537464bc85c34cf 100644 (file)
 #include "ldif.h"
 #include "back-monitor.h"
 
+static int
+monitor_subsys_log_destroy(
+       BackendDB               *be,
+       monitor_subsys_t        *ms );
+
+static int 
+monitor_subsys_log_modify( 
+       Operation               *op,
+       SlapReply               *rs,
+       Entry                   *e );
+
 /*
  * log mutex
  */
@@ -71,17 +82,14 @@ static int replace_values( Entry *e, Modification *mod, int *newlevel );
 int
 monitor_subsys_log_init(
        BackendDB               *be,
-       monitor_subsys_t        *ms
-)
+       monitor_subsys_t        *ms )
 {
        monitor_info_t  *mi;
        Entry           *e;
        int             i;
-       struct berval   desc[] = {
-               BER_BVC("This entry allows to set the log level runtime."),
-               BER_BVC("Set the attribute 'managedInfo' to the desired log levels."),
-               BER_BVNULL
-       };
+
+       ms->mss_destroy = monitor_subsys_log_destroy;
+       ms->mss_modify = monitor_subsys_log_modify;
 
        ldap_pvt_thread_mutex_init( &monitor_log_mutex );
 
@@ -119,18 +127,32 @@ monitor_subsys_log_init(
                }
        }
 
-       attr_merge( e, mi->mi_ad_description, desc, NULL );
-
        monitor_cache_release( mi, e );
 
        return( 0 );
 }
 
-int 
+static int
+monitor_subsys_log_destroy(
+       BackendDB               *be,
+       monitor_subsys_t        *ms )
+{
+       int             i;
+
+       for ( i = 0; int_2_level[ i ].i != 0; i++ ) {
+               if ( !BER_BVISNULL( &int_2_level[ i ].n ) ) {
+                       ch_free( int_2_level[ i ].n.bv_val );
+               }
+       }
+
+       return 0;
+}
+
+static int 
 monitor_subsys_log_modify( 
        Operation               *op,
-       Entry                   *e
-)
+       SlapReply               *rs,
+       Entry                   *e )
 {
        monitor_info_t  *mi = ( monitor_info_t * )op->o_bd->be_private;
        int             rc = LDAP_OTHER;
@@ -154,18 +176,17 @@ monitor_subsys_log_modify(
                 */
                if ( is_at_operational( mod->sm_desc->ad_type ) ) {
                        ( void ) attr_delete( &e->e_attrs, mod->sm_desc );
-                       rc = attr_merge( e, mod->sm_desc, mod->sm_values, mod->sm_nvalues );
-                       if ( rc != 0 ) {
-                               rc = LDAP_OTHER;
+                       rc = rs->sr_err = attr_merge( e, mod->sm_desc, mod->sm_values, mod->sm_nvalues );
+                       if ( rc != LDAP_SUCCESS ) {
                                break;
                        }
                        continue;
 
                /*
-                * only the monitor description attribute can be modified
+                * only the "managedInfo" attribute can be modified
                 */
-               } else if ( mod->sm_desc != mi->mi_ad_managedInfo) {
-                       rc = LDAP_UNWILLING_TO_PERFORM;
+               } else if ( mod->sm_desc != mi->mi_ad_managedInfo ) {
+                       rc = rs->sr_err = LDAP_UNWILLING_TO_PERFORM;
                        break;
                }
 
@@ -188,6 +209,7 @@ monitor_subsys_log_modify(
                }
 
                if ( rc != LDAP_SUCCESS ) {
+                       rs->sr_err = rc;
                        break;
                }
        }
@@ -199,15 +221,16 @@ monitor_subsys_log_modify(
 
                /* check for abandon */
                if ( op->o_abandon ) {
-                       rc = SLAPD_ABANDON;
+                       rc = rs->sr_err = SLAPD_ABANDON;
 
                        goto cleanup;
                }
 
                /* check that the entry still obeys the schema */
-               rc = entry_schema_check( be_monitor, e, save_attrs, 
-                               &text, textbuf, sizeof( textbuf ) );
+               rc = entry_schema_check( op, e, save_attrs, 0,
+                       &text, textbuf, sizeof( textbuf ) );
                if ( rc != LDAP_SUCCESS ) {
+                       rs->sr_err = rc;
                        goto cleanup;
                }
 
@@ -236,7 +259,11 @@ cleanup:;
        
        ldap_pvt_thread_mutex_unlock( &monitor_log_mutex );
 
-       return( rc );
+       if ( rc == LDAP_SUCCESS ) {
+               rc = SLAP_CB_CONTINUE;
+       }
+
+       return rc;
 }
 
 static int
@@ -320,7 +347,7 @@ add_values( Entry *e, Modification *mod, int *newlevel )
        a = attr_find( e->e_attrs, mod->sm_desc );
 
        if ( a != NULL ) {
-               /* "description" SHOULD have appropriate rules ... */
+               /* "managedInfo" SHOULD have appropriate rules ... */
                if ( mr == NULL || !mr->smr_match ) {
                        return LDAP_INAPPROPRIATE_MATCHING;
                }