]> git.sur5r.net Git - openldap/commitdiff
mostly new logging
authorKurt Zeilenga <kurt@openldap.org>
Sun, 28 Jul 2002 21:15:50 +0000 (21:15 +0000)
committerKurt Zeilenga <kurt@openldap.org>
Sun, 28 Jul 2002 21:15:50 +0000 (21:15 +0000)
121 files changed:
servers/slapd/abandon.c
servers/slapd/acl.c
servers/slapd/aclparse.c
servers/slapd/add.c
servers/slapd/ava.c
servers/slapd/back-bdb/add.c
servers/slapd/back-bdb/attr.c
servers/slapd/back-bdb/attribute.c
servers/slapd/back-bdb/bind.c
servers/slapd/back-bdb/cache.c
servers/slapd/back-bdb/compare.c
servers/slapd/back-bdb/dbcache.c
servers/slapd/back-bdb/delete.c
servers/slapd/back-bdb/dn2entry.c
servers/slapd/back-bdb/dn2id.c
servers/slapd/back-bdb/error.c
servers/slapd/back-bdb/filterindex.c
servers/slapd/back-bdb/group.c
servers/slapd/back-bdb/idl.c
servers/slapd/back-bdb/index.c [new file with mode: 0644]
servers/slapd/back-bdb/init.c
servers/slapd/back-bdb/key.c
servers/slapd/back-bdb/modify.c
servers/slapd/back-bdb/modrdn.c
servers/slapd/back-bdb/nextid.c
servers/slapd/back-bdb/operational.c
servers/slapd/back-bdb/passwd.c
servers/slapd/back-bdb/referral.c
servers/slapd/back-bdb/search.c
servers/slapd/back-bdb/tools.c
servers/slapd/back-ldap/add.c [new file with mode: 0644]
servers/slapd/back-ldap/bind.c
servers/slapd/back-ldap/compare.c [new file with mode: 0644]
servers/slapd/back-ldap/config.c
servers/slapd/back-ldap/delete.c [new file with mode: 0644]
servers/slapd/back-ldap/group.c [new file with mode: 0644]
servers/slapd/back-ldap/modify.c [new file with mode: 0644]
servers/slapd/back-ldap/modrdn.c [new file with mode: 0644]
servers/slapd/back-ldap/search.c
servers/slapd/back-ldap/suffixmassage.c
servers/slapd/back-ldap/unbind.c
servers/slapd/back-ldbm/add.c
servers/slapd/back-ldbm/attr.c
servers/slapd/back-ldbm/attribute.c
servers/slapd/back-ldbm/bind.c
servers/slapd/back-ldbm/cache.c
servers/slapd/back-ldbm/close.c
servers/slapd/back-ldbm/compare.c
servers/slapd/back-ldbm/config.c
servers/slapd/back-ldbm/dbcache.c
servers/slapd/back-ldbm/delete.c
servers/slapd/back-ldbm/dn2id.c
servers/slapd/back-ldbm/filterindex.c
servers/slapd/back-ldbm/group.c [new file with mode: 0644]
servers/slapd/back-ldbm/id2children.c
servers/slapd/back-ldbm/id2entry.c
servers/slapd/back-ldbm/idl.c
servers/slapd/back-ldbm/index.c
servers/slapd/back-ldbm/init.c
servers/slapd/back-ldbm/key.c [new file with mode: 0644]
servers/slapd/back-ldbm/modify.c
servers/slapd/back-ldbm/modrdn.c
servers/slapd/back-ldbm/nextid.c
servers/slapd/back-ldbm/passwd.c
servers/slapd/back-ldbm/referral.c [new file with mode: 0644]
servers/slapd/back-ldbm/search.c
servers/slapd/back-ldbm/tools.c [new file with mode: 0644]
servers/slapd/back-meta/add.c [new file with mode: 0644]
servers/slapd/back-meta/bind.c
servers/slapd/back-meta/compare.c [new file with mode: 0644]
servers/slapd/back-meta/conn.c
servers/slapd/back-meta/delete.c [new file with mode: 0644]
servers/slapd/back-meta/group.c
servers/slapd/back-meta/modify.c [new file with mode: 0644]
servers/slapd/back-meta/modrdn.c [new file with mode: 0644]
servers/slapd/back-meta/search.c
servers/slapd/back-meta/unbind.c [new file with mode: 0644]
servers/slapd/backend.c
servers/slapd/bind.c
servers/slapd/ch_malloc.c
servers/slapd/charray.c
servers/slapd/compare.c
servers/slapd/config.c
servers/slapd/connection.c
servers/slapd/controls.c
servers/slapd/daemon.c
servers/slapd/delete.c
servers/slapd/dn.c
servers/slapd/entry.c
servers/slapd/extended.c
servers/slapd/filter.c
servers/slapd/filterentry.c
servers/slapd/init.c
servers/slapd/limits.c
servers/slapd/lock.c
servers/slapd/main.c
servers/slapd/matchedValues.c
servers/slapd/modify.c
servers/slapd/modrdn.c
servers/slapd/module.c
servers/slapd/mr.c
servers/slapd/mra.c
servers/slapd/oc.c
servers/slapd/passwd.c
servers/slapd/proto-slap.h
servers/slapd/referral.c
servers/slapd/result.c
servers/slapd/root_dse.c
servers/slapd/sasl.c
servers/slapd/saslauthz.c
servers/slapd/schema_check.c
servers/slapd/schema_init.c
servers/slapd/schema_prep.c
servers/slapd/schemaparse.c
servers/slapd/search.c
servers/slapd/slap.h
servers/slapd/str2filter.c
servers/slapd/suffixalias.c
servers/slapd/syntax.c
servers/slapd/unbind.c
servers/slapd/user.c [new file with mode: 0644]

index b092d124f338f2c1d2713d7a0fe672af46949edd..80ea94be0ce51671969174d2d19c419d889fc7dd 100644 (file)
@@ -35,8 +35,7 @@ do_abandon(
        int rc;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY, "conn: %d do_abandon\n",
-               conn->c_connid));
+       LDAP_LOG( OPERATION, ENTRY, "conn: %d do_abandon\n", conn->c_connid, 0, 0);
 #else
        Debug( LDAP_DEBUG_TRACE, "do_abandon\n", 0, 0, 0 );
 #endif
@@ -49,9 +48,8 @@ do_abandon(
 
        if ( ber_scanf( op->o_ber, "i", &id ) == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR, 
-                      "conn: %d do_abandon: ber_scanf failed\n",
-                      conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "conn: %d do_abandon: ber_scanf failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_abandon: ber_scanf failed\n", 0, 0 ,0 );
 #endif
@@ -66,16 +64,17 @@ do_abandon(
        } 
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-               "do_abandon: conn: %d  id=%ld\n", conn->c_connid, (long) id ));
+       LDAP_LOG( OPERATION, ARGS, "do_abandon: conn: %d  id=%ld\n", 
+               conn->c_connid, (long) id, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "do_abandon: id=%ld\n", (long) id, 0 ,0 );
 #endif
 
        if( id <= 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                   "do_abandon: conn: %d bad msgid %ld\n", conn->c_connid, (long) id ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_abandon: conn: %d bad msgid %ld\n", 
+                       conn->c_connid, (long) id, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "do_abandon: bad msgid %ld\n", (long) id, 0, 0 );
@@ -109,9 +108,9 @@ done:
        ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( OPERATION, ENTRY, 
                "do_abandon: conn: %d op=%ld %sfound\n",
-               conn->c_connid, (long)id, o ? "" : "not " ));
+               conn->c_connid, (long)id, o ? "" : "not " );
 #else
        Debug( LDAP_DEBUG_TRACE, "do_abandon: op=%ld %sfound\n",
                (long) id, o ? "" : "not ", 0 );
index 2318cbffd508eebd7ba923c6b51f691271f395ce..c99695b603b77e75b45a06e2502c8fdd02837a4f 100644 (file)
@@ -19,7 +19,6 @@
 
 #define ACL_BUF_SIZE   1024    /* use most appropriate size */
 
-
 /*
  * speed up compares
  */
@@ -122,6 +121,7 @@ access_allowed(
        int                             ret = 1;
        int                             count;
        AccessControl   *a;
+
 #ifdef LDAP_DEBUG
        char accessmaskbuf[ACCESSMASK_MAXLEN];
 #endif
@@ -152,9 +152,9 @@ access_allowed(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "acl", LDAP_LEVEL_ENTRY,
-               "access_allowed: conn %lu %s access to \"%s\" \"%s\" requested\n",
-               conn ? conn->c_connid : -1, access2str( access ), e->e_dn, attr ));
+       LDAP_LOG( ACL, ENTRY, 
+               "access_allowed: %s access to \"%s\" \"%s\" requested\n",
+               access2str( access ), e->e_dn, attr );
 #else
        Debug( LDAP_DEBUG_ACL,
                "=> access_allowed: %s access to \"%s\" \"%s\" requested\n",
@@ -172,9 +172,9 @@ access_allowed(
        /* grant database root access */
        if ( be != NULL && be_isroot( be, &op->o_ndn ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_INFO,
-                      "access_allowed: conn %lu root access granted\n",
-                      conn->c_connid));
+               LDAP_LOG( ACL, INFO, 
+                       "access_allowed: conn %lu root access granted\n", 
+                       conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                    "<= root access granted\n",
@@ -193,9 +193,9 @@ access_allowed(
                && desc != slap_schema.si_ad_children )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                      "access_allowed: conn %lu NoUserMod Operational attribute: %s access granted\n",
-                      conn->c_connid, attr ));
+               LDAP_LOG( ACL, DETAIL1, 
+                       "access_allowed: conn %lu NoUserMod Operational attribute: %s "
+                       "access granted\n", conn->c_connid, attr , 0 );
 #else
                Debug( LDAP_DEBUG_ACL, "NoUserMod Operational attribute:"
                        " %s access granted\n",
@@ -207,10 +207,11 @@ access_allowed(
        /* use backend default access if no backend acls */
        if( be != NULL && be->be_acl == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                      "access_allowed: conn %lu backend default %s access %s to \"%s\"\n",
-                      conn->c_connid, access2str( access ),
-                      be->be_dfltaccess >= access ? "granted" : "denied", op->o_dn.bv_val ));
+               LDAP_LOG( ACL, DETAIL1, 
+                       "access_allowed: backend default %s access %s to \"%s\"\n",
+                   access2str( access ),
+                   be->be_dfltaccess >= access ? "granted" : "denied", 
+                       op->o_dn.bv_val );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "=> access_allowed: backend default %s access %s to \"%s\"\n",
@@ -225,10 +226,11 @@ access_allowed(
        /* use global default access if no global acls */
        } else if ( be == NULL && global_acl == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                      "access_allowed: conn %lu global default %s access %s to \"%s\"\n",
-                      conn->c_connid, access2str( access ),
-                      global_default_access >= access ? "granted" : "denied", op->o_dn.bv_val ));
+               LDAP_LOG( ACL, DETAIL1, 
+                       "access_allowed: global default %s access %s to \"%s\"\n",
+                   access2str( access ),
+                   global_default_access >= access ? "granted" : "denied", 
+                       op->o_dn.bv_val );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "=> access_allowed: global default %s access %s to \"%s\"\n",
@@ -267,10 +269,9 @@ access_allowed(
 
                for (i = 0; i < MAXREMATCHES && matches[i].rm_so > 0; i++) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                           "access_allowed: conn %lu match[%d]:  %d %d ",
-                           conn->c_connid, i,
-                               (int)matches[i].rm_so, (int)matches[i].rm_eo ));
+                       LDAP_LOG( ACL, DETAIL1, 
+                               "access_allowed: match[%d]:  %d %d ",
+                           i, (int)matches[i].rm_so, (int)matches[i].rm_eo );
 #else
                        Debug( LDAP_DEBUG_ACL, "=> match[%d]: %d %d ", i,
                            (int)matches[i].rm_so, (int)matches[i].rm_eo );
@@ -282,7 +283,7 @@ access_allowed(
                                }
                        }
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_ARGS, "\n" ));
+                       LDAP_LOG( ACL, ARGS, "\n" , 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ARGS, "\n", 0, 0, 0 );
 #endif
@@ -301,9 +302,9 @@ vd_access:
 
        if ( ACL_IS_INVALID( mask ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                   "access_allowed: conn %lu    \"%s\" (%s) invalid!\n",
-                   conn->c_connid, e->e_dn, attr ));
+               LDAP_LOG( ACL, DETAIL1, 
+                       "access_allowed: conn %lu \"%s\" (%s) invalid!\n",
+                   conn->c_connid, e->e_dn, attr );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "=> access_allowed: \"%s\" (%s) invalid!\n",
@@ -313,9 +314,8 @@ vd_access:
 
        } else if ( control == ACL_BREAK ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                      "access_allowed: conn %lu         no more rules\n", 
-                      conn->c_connid ));
+               LDAP_LOG( ACL, DETAIL1, 
+                       "access_allowed: conn %lu        no more rules\n", conn->c_connid, 0,0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "=> access_allowed: no more rules\n", 0, 0, 0);
@@ -325,12 +325,10 @@ vd_access:
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "acl", LDAP_LEVEL_ENTRY,
-               "access_allowed: conn %lu  %s access %s by %s\n",
-               conn->c_connid,
-               access2str( access ),
-               ACL_GRANT( mask, access ) ? "granted" : "denied",
-               accessmask2str( mask, accessmaskbuf ) ));
+       LDAP_LOG( ACL, ENTRY, 
+               "access_allowed: %s access %s by %s\n", 
+               access2str( access ), ACL_GRANT( mask, access ) ? "granted" : "denied",
+               accessmask2str( mask, accessmaskbuf ) );
 #else
        Debug( LDAP_DEBUG_ACL,
                "=> access_allowed: %s access %s by %s\n",
@@ -398,9 +396,10 @@ acl_get(
                if ( a->acl_dn_pat.bv_len || ( a->acl_dn_style != ACL_STYLE_REGEX )) {
                        if ( a->acl_dn_style == ACL_STYLE_REGEX ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                                          "acl_get: dnpat [%d] %s nsub: %d\n",
-                                          *count, a->acl_dn_pat.bv_val, (int) a->acl_dn_re.re_nsub ));
+                               LDAP_LOG( ACL, DETAIL1, 
+                                       "acl_get: dnpat [%d] %s nsub: %d\n",
+                                       *count, a->acl_dn_pat.bv_val, 
+                                       (int) a->acl_dn_re.re_nsub );
 #else
                                Debug( LDAP_DEBUG_ACL, "=> dnpat: [%d] %s nsub: %d\n", 
                                        *count, a->acl_dn_pat.bv_val, (int) a->acl_dn_re.re_nsub );
@@ -410,9 +409,8 @@ acl_get(
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                                          "acl_get: dn [%d] %s\n",
-                                          *count, a->acl_dn_pat.bv_val ));
+                               LDAP_LOG( ACL, DETAIL1, "acl_get: dn [%d] %s\n",
+                                          *count, a->acl_dn_pat.bv_val, 0 );
 #else
                                Debug( LDAP_DEBUG_ACL, "=> dn: [%d] %s\n", 
                                        *count, a->acl_dn_pat.bv_val, 0 );
@@ -455,9 +453,8 @@ acl_get(
                        }
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                                  "acl_get: [%d] matched\n",
-                                  *count ));
+                       LDAP_LOG( ACL, DETAIL1, 
+                               "acl_get: [%d] matched\n", *count, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "=> acl_get: [%d] matched\n",
                                *count, 0, 0 );
@@ -472,9 +469,8 @@ acl_get(
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                          "acl_get: [%d] check attr %s\n",
-                          *count, attr ));
+               LDAP_LOG( ACL, DETAIL1, 
+                       "acl_get: [%d] check attr %s\n", *count, attr ,0 );
 #else
                Debug( LDAP_DEBUG_ACL, "=> acl_get: [%d] check attr %s\n",
                       *count, attr, 0);
@@ -483,9 +479,8 @@ acl_get(
                        ad_inlist( desc, a->acl_attrs ) )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                                  "acl_get:  [%d] acl %s attr: %s\n",
-                                  *count, e->e_dn, attr ));
+                       LDAP_LOG( ACL, DETAIL1, 
+                               "acl_get:  [%d] acl %s attr: %s\n", *count, e->e_dn, attr );
 #else
                        Debug( LDAP_DEBUG_ACL,
                                "<= acl_get: [%d] acl %s attr: %s\n",
@@ -497,8 +492,7 @@ acl_get(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "acl", LDAP_LEVEL_ENTRY,
-                  "acl_get: done.\n" ));
+       LDAP_LOG( ACL, RESULTS, "acl_get: done.\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ACL, "<= acl_get: done.\n", 0, 0, 0 );
 #endif
@@ -559,15 +553,14 @@ acl_mask(
        assert( attr != NULL );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "acl", LDAP_LEVEL_ENTRY,
-                  "acl_mask: conn %lu  access to entry \"%s\", attr \"%s\" requested\n",
-                  conn->c_connid, e->e_dn, attr ));
-
-       LDAP_LOG(( "acl", LDAP_LEVEL_ARGS,
-                  " to %s by \"%s\", (%s) \n",
-                  val ? "value" : "all values",
-                  op->o_ndn.bv_val ? op->o_ndn.bv_val : "",
-                  accessmask2str( *mask, accessmaskbuf ) ));
+       LDAP_LOG( ACL, ENTRY, 
+               "acl_mask: conn %lu  access to entry \"%s\", attr \"%s\" requested\n",
+               conn->c_connid, e->e_dn, attr );
+
+       LDAP_LOG( ACL, ARGS, 
+               " to %s by \"%s\", (%s) \n", val ? "value" : "all values",
+               op->o_ndn.bv_val ? op->o_ndn.bv_val : "",
+               accessmask2str( *mask, accessmaskbuf ) );
 #else
        Debug( LDAP_DEBUG_ACL,
                "=> acl_mask: access to entry \"%s\", attr \"%s\" requested\n",
@@ -599,9 +592,9 @@ acl_mask(
                /* AND <who> clauses */
                if ( b->a_dn_pat.bv_len != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                                  "acl_mask: conn %lu  check a_dn_pat: %s\n",
-                                  conn->c_connid, b->a_dn_pat.bv_val ));
+                       LDAP_LOG( ACL, DETAIL1, 
+                               "acl_mask: conn %lu  check a_dn_pat: %s\n",
+                               conn->c_connid, b->a_dn_pat.bv_val ,0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "<= check a_dn_pat: %s\n",
                                b->a_dn_pat.bv_val, 0, 0);
@@ -723,9 +716,9 @@ dn_match_cleanup:;
 
                if ( b->a_sockurl_pat.bv_len ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( ACL, DETAIL1, 
                                   "acl_mask: conn %lu  check a_sockurl_pat: %s\n",
-                                  conn->c_connid, b->a_sockurl_pat.bv_val ));
+                                  conn->c_connid, b->a_sockurl_pat.bv_val , 0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "<= check a_sockurl_pat: %s\n",
                                b->a_sockurl_pat.bv_val, 0, 0 );
@@ -747,9 +740,9 @@ dn_match_cleanup:;
 
                if ( b->a_domain_pat.bv_len ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( ACL, DETAIL1, 
                                   "acl_mask: conn %lu  check a_domain_pat: %s\n",
-                                  conn->c_connid, b->a_domain_pat.bv_val ));
+                                  conn->c_connid, b->a_domain_pat.bv_val , 0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "<= check a_domain_pat: %s\n",
                                b->a_domain_pat.bv_val, 0, 0 );
@@ -801,9 +794,9 @@ dn_match_cleanup:;
 
                if ( b->a_peername_pat.bv_len ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( ACL, DETAIL1, 
                                   "acl_mask: conn %lu  check a_perrname_path: %s\n",
-                                  conn->c_connid, b->a_peername_pat.bv_val ));
+                                  conn->c_connid, b->a_peername_pat.bv_val , 0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "<= check a_peername_path: %s\n",
                                b->a_peername_pat.bv_val, 0, 0 );
@@ -824,9 +817,9 @@ dn_match_cleanup:;
 
                if ( b->a_sockname_pat.bv_len ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( ACL, DETAIL1, 
                                   "acl_mask: conn %lu  check a_sockname_path: %s\n",
-                                  conn->c_connid, b->a_sockname_pat.bv_val ));
+                                  conn->c_connid, b->a_sockname_pat.bv_val , 0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "<= check a_sockname_path: %s\n",
                                b->a_sockname_pat.bv_val, 0, 0 );
@@ -859,9 +852,9 @@ dn_match_cleanup:;
                        }
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( ACL, DETAIL1, 
                                   "acl_mask: conn %lu  check a_dn_pat: %s\n",
-                                  conn->c_connid, attr ));
+                                  conn->c_connid, attr , 0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "<= check a_dn_at: %s\n",
                                attr, 0, 0);
@@ -970,9 +963,9 @@ dn_match_cleanup:;
 
                if ( b->a_authz.sai_ssf ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                                  "acl_mask: conn %lu  check a_authz.sai_ssf: ACL %u > OP %u\n",
-                                  conn->c_connid, b->a_authz.sai_ssf, op->o_ssf ));
+                       LDAP_LOG( ACL, DETAIL1, 
+                               "acl_mask: conn %lu  check a_authz.sai_ssf: ACL %u > OP %u\n",
+                               conn->c_connid, b->a_authz.sai_ssf, op->o_ssf  );
 #else
                        Debug( LDAP_DEBUG_ACL, "<= check a_authz.sai_ssf: ACL %u > OP %u\n",
                                b->a_authz.sai_ssf, op->o_ssf, 0 );
@@ -984,9 +977,11 @@ dn_match_cleanup:;
 
                if ( b->a_authz.sai_transport_ssf ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                                  "acl_mask: conn %lu  check a_authz.sai_transport_ssf: ACL %u > OP %u\n",
-                                  conn->c_connid, b->a_authz.sai_transport_ssf, op->o_transport_ssf ));
+                       LDAP_LOG( ACL, DETAIL1, 
+                               "acl_mask: conn %lu  check a_authz.sai_transport_ssf: "
+                               "ACL %u > OP %u\n",
+                               conn->c_connid, b->a_authz.sai_transport_ssf, 
+                               op->o_transport_ssf  );
 #else
                        Debug( LDAP_DEBUG_ACL,
                                "<= check a_authz.sai_transport_ssf: ACL %u > OP %u\n",
@@ -999,9 +994,10 @@ dn_match_cleanup:;
 
                if ( b->a_authz.sai_tls_ssf ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                                  "acl_mask: conn %lu  check a_authz.sai_tls_ssf: ACL %u > OP %u\n",
-                                  conn->c_connid, b->a_authz.sai_tls_ssf, op->o_tls_ssf ));
+                       LDAP_LOG( ACL, DETAIL1, 
+                               "acl_mask: conn %lu  check a_authz.sai_tls_ssf: ACL %u > "
+                               "OP %u\n",
+                               conn->c_connid, b->a_authz.sai_tls_ssf, op->o_tls_ssf  );
 #else
                        Debug( LDAP_DEBUG_ACL,
                                "<= check a_authz.sai_tls_ssf: ACL %u > OP %u\n",
@@ -1014,9 +1010,10 @@ dn_match_cleanup:;
 
                if ( b->a_authz.sai_sasl_ssf ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
-                                  "acl_mask: conn %lu check a_authz.sai_sasl_ssf: ACL %u > OP %u\n",
-                                  conn->c_connid, b->a_authz.sai_sasl_ssf, op->o_sasl_ssf ));
+                       LDAP_LOG( ACL, DETAIL1, 
+                          "acl_mask: conn %lu check a_authz.sai_sasl_ssf: " 
+                          "ACL %u > OP %u\n",
+                               conn->c_connid, b->a_authz.sai_sasl_ssf, op->o_sasl_ssf );
 #else
                        Debug( LDAP_DEBUG_ACL,
                                "<= check a_authz.sai_sasl_ssf: ACL %u > OP %u\n",
@@ -1109,11 +1106,11 @@ dn_match_cleanup:;
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_RESULTS,
-                          "acl_mask: conn %lu  [%d] applying %s (%s)\n",
-                          conn->c_connid, i, accessmask2str( modmask, accessmaskbuf),
+               LDAP_LOG( ACL, RESULTS, 
+                          "acl_mask: [%d] applying %s (%s)\n",
+                          i, accessmask2str( modmask, accessmaskbuf),
                           b->a_type == ACL_CONTINUE ? "continue" : b->a_type == ACL_BREAK
-                          ? "break" : "stop" ));
+                          ? "break" : "stop"  );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= acl_mask: [%d] applying %s (%s)\n",
@@ -1147,9 +1144,9 @@ dn_match_cleanup:;
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "aci", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( ACL, DETAIL1, 
                           "acl_mask: conn %lu  [%d] mask: %s\n",
-                          conn->c_connid, i, accessmask2str( *mask, accessmaskbuf) ));
+                          conn->c_connid, i, accessmask2str( *mask, accessmaskbuf)  );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= acl_mask: [%d] mask: %s\n",
@@ -1171,9 +1168,9 @@ dn_match_cleanup:;
        ACL_INIT(*mask);
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "acl", LDAP_LEVEL_RESULTS,
+       LDAP_LOG( ACL, RESULTS, 
                   "acl_mask: conn %lu  no more <who> clauses, returning %d (stop)\n",
-                  conn->c_connid, accessmask2str( *mask, accessmaskbuf) ));
+                  conn->c_connid, accessmask2str( *mask, accessmaskbuf) , 0 );
 #else
        Debug( LDAP_DEBUG_ACL,
                "<= acl_mask: no more <who> clauses, returning %s (stop)\n",
@@ -1205,9 +1202,9 @@ acl_check_modlist(
        /* short circuit root database access */
        if ( be_isroot( be, &op->o_ndn ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( ACL, DETAIL1, 
                           "acl_check_modlist: conn %lu  access granted to root user\n",
-                          conn->c_connid ));
+                          conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= acl_access_allowed: granted to database root\n",
@@ -1219,10 +1216,11 @@ acl_check_modlist(
        /* use backend default access if no backend acls */
        if( be != NULL && be->be_acl == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "aci", LDAP_LEVEL_DETAIL1,
-                          "acl_check_modlist: conn %lu  backend default %s access %s to \"%s\"\n",
-                          conn->c_connid, access2str( ACL_WRITE ),
-                          be->be_dfltaccess >= ACL_WRITE ? "granted" : "denied", op->o_dn.bv_val ));
+               LDAP_LOG( ACL, DETAIL1, 
+                       "acl_check_modlist: backend default %s access %s to \"%s\"\n",
+                       access2str( ACL_WRITE ),
+                       be->be_dfltaccess >= ACL_WRITE ? "granted" : "denied", 
+                       op->o_dn.bv_val  );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "=> access_allowed: backend default %s access %s to \"%s\"\n",
@@ -1236,10 +1234,11 @@ acl_check_modlist(
        /* use global default access if no global acls */
        } else if ( be == NULL && global_acl == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "aci", LDAP_LEVEL_DETAIL1,
-                          "acl_check_modlist: conn %lu  global default %s access %s to \"%s\"\n",
-                          conn->c_connid, access2str( ACL_WRITE ),
-                          global_default_access >= ACL_WRITE ? "granted" : "denied", op->o_dn ));
+               LDAP_LOG( ACL, DETAIL1, 
+                       "acl_check_modlist: global default %s access %s to \"%s\"\n",
+                  access2str( ACL_WRITE ),
+                  global_default_access >= ACL_WRITE ? "granted" : "denied", 
+                  op->o_dn  );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "=> access_allowed: global default %s access %s to \"%s\"\n",
@@ -1261,9 +1260,9 @@ acl_check_modlist(
                 */
                if ( is_at_no_user_mod( mlist->sml_desc->ad_type ) ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "aci", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( ACL, DETAIL1, 
                                   "acl_check_modlist: conn %lu  no-user-mod %s: modify access granted\n",
-                                  conn->c_connid, mlist->sml_desc->ad_cname.bv_val ));
+                                  conn->c_connid, mlist->sml_desc->ad_cname.bv_val , 0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "acl: no-user-mod %s:"
                                " modify access granted\n",
@@ -1825,7 +1824,8 @@ string_expand(
 
        flag = 0;
        for ( dp = bv->bv_val, sp = pat->bv_val; size < bv->bv_len &&
-               sp < pat->bv_val + pat->bv_len ; sp++) {
+               sp < pat->bv_val + pat->bv_len ; sp++ )
+       {
                /* did we previously see a $ */
                if ( flag ) {
                        if ( flag == 1 && *sp == '$' ) {
@@ -1833,7 +1833,7 @@ string_expand(
                                size++;
                                flag = 0;
 
-                       } else if ( flag == 1 && *sp == '{') {
+                       } else if ( flag == 1 && *sp == '{' /*'}'*/) {
                                flag = 2;
 
                        } else if ( *sp >= '0' && *sp <= '9' ) {
@@ -1844,13 +1844,13 @@ string_expand(
                                n = *sp - '0';
 
                                if ( flag == 2 ) {
-                                       for ( sp++; *sp != '\0' && *sp != /* { */ '}'; sp++ ) {
+                                       for ( sp++; *sp != '\0' && *sp != /*'{'*/ '}'; sp++ ) {
                                                if ( *sp >= '0' && *sp <= '9' ) {
                                                        n = 10*n + ( *sp - '0' );
                                                }
                                        }
 
-                                       if ( *sp != /* { */ '}' ) {
+                                       if ( *sp != /*'{'*/ '}' ) {
                                                /* error */
                                        }
                                }
@@ -1889,10 +1889,9 @@ string_expand(
        bv->bv_len = size;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "aci", LDAP_LEVEL_DETAIL1,
-                  "string_expand:  pattern = %.*s\n", (int)pat->bv_len, pat->bv_val ));
-       LDAP_LOG(( "aci", LDAP_LEVEL_DETAIL1,
-                  "string_expand:  expanded = %s\n", bv->bv_val ));
+       LDAP_LOG( ACL, DETAIL1, 
+          "string_expand:  pattern = %.*s\n", (int)pat->bv_len, pat->bv_val, 0 );
+       LDAP_LOG( ACL, DETAIL1, "string_expand:  expanded = %s\n", bv->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> string_expand: pattern:  %.*s\n", (int)pat->bv_len, pat->bv_val, 0 );
        Debug( LDAP_DEBUG_TRACE, "=> string_expand: expanded: %s\n", bv->bv_val, 0, 0 );
@@ -1908,7 +1907,7 @@ regex_matches(
 )
 {
        regex_t re;
-       char newbuf[512];
+       char newbuf[ACL_BUF_SIZE];
        struct berval bv;
        int     rc;
 
@@ -1919,13 +1918,13 @@ regex_matches(
 
        string_expand(&bv, pat, buf, matches);
        if (( rc = regcomp(&re, newbuf, REG_EXTENDED|REG_ICASE))) {
-               char error[512];
+               char error[ACL_BUF_SIZE];
                regerror(rc, &re, error, sizeof(error));
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "aci", LDAP_LEVEL_ERR,
+               LDAP_LOG( ACL, ERR, 
                           "regex_matches: compile( \"%s\", \"%s\") failed %s\n",
-                          pat->bv_val, str, error ));
+                          pat->bv_val, str, error  );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "compile( \"%s\", \"%s\") failed %s\n",
@@ -1938,11 +1937,9 @@ regex_matches(
        regfree( &re );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "aci", LDAP_LEVEL_DETAIL2,
-                  "regex_matches: string:   %s\n", str ));
-       LDAP_LOG(( "aci", LDAP_LEVEL_DETAIL2,
-                  "regex_matches: rc:  %d  %s\n",
-                  rc, rc ? "matches" : "no matches" ));
+       LDAP_LOG( ACL, DETAIL2, "regex_matches: string:   %s\n", str, 0, 0 );
+       LDAP_LOG( ACL, DETAIL2, "regex_matches: rc:     %d  %s\n",
+                  rc, rc ? "matches" : "no matches", 0  );
 #else
        Debug( LDAP_DEBUG_TRACE,
            "=> regex_matches: string:   %s\n", str, 0, 0 );
index 02703af4706bfa0f80dd51d884936b0a7a77f6db..51f0a0c1c3578712fda496e2b608caba4f4ad506 100644 (file)
@@ -201,8 +201,7 @@ parse_acl(
                                }
 
                                if ( strcasecmp( left, "filter" ) == 0 ) {
-                                       if ( (a->acl_filter = str2filter(
-                                           right )) == NULL ) {
+                                       if ( (a->acl_filter = str2filter( right )) == NULL ) {
                                                fprintf( stderr,
                                "%s: line %d: bad filter \"%s\" in to clause\n",
                                                    fname, lineno, right );
@@ -227,7 +226,7 @@ parse_acl(
                        }
 
                        if ( a->acl_dn_pat.bv_len != 0 &&
-                               strcmp(a->acl_dn_pat.bv_val, "*") == 0)
+                               strcmp(a->acl_dn_pat.bv_val, "*") == 0 )
                        {
                                free( a->acl_dn_pat.bv_val );
                                a->acl_dn_pat.bv_val = NULL;
@@ -1107,24 +1106,24 @@ accessmask2str( slap_mask_t mask, char *buf )
 
        if ( ACL_IS_LEVEL( mask ) ) {
                if ( ACL_LVL_IS_NONE(mask) ) {
-                       ptr = slap_strcopy( ptr, "none" );
+                       ptr = lutil_strcopy( ptr, "none" );
 
                } else if ( ACL_LVL_IS_AUTH(mask) ) {
-                       ptr = slap_strcopy( ptr, "auth" );
+                       ptr = lutil_strcopy( ptr, "auth" );
 
                } else if ( ACL_LVL_IS_COMPARE(mask) ) {
-                       ptr = slap_strcopy( ptr, "compare" );
+                       ptr = lutil_strcopy( ptr, "compare" );
 
                } else if ( ACL_LVL_IS_SEARCH(mask) ) {
-                       ptr = slap_strcopy( ptr, "search" );
+                       ptr = lutil_strcopy( ptr, "search" );
 
                } else if ( ACL_LVL_IS_READ(mask) ) {
-                       ptr = slap_strcopy( ptr, "read" );
+                       ptr = lutil_strcopy( ptr, "read" );
 
                } else if ( ACL_LVL_IS_WRITE(mask) ) {
-                       ptr = slap_strcopy( ptr, "write" );
+                       ptr = lutil_strcopy( ptr, "write" );
                } else {
-                       ptr = slap_strcopy( ptr, "unknown" );
+                       ptr = lutil_strcopy( ptr, "unknown" );
                }
                
                *ptr++ = '(';
index 48411f3b9908f69031daf99e51cca56aa3940f4f..b43e78105212e139b353cecd8cec865f62203463 100644 (file)
@@ -50,8 +50,7 @@ do_add( Connection *conn, Operation *op )
        int     manageDSAit;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "do_add: conn %d enter\n", conn->c_connid ));
+       LDAP_LOG( OPERATION, ENTRY, "do_add: conn %d enter\n", conn->c_connid,0,0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "do_add\n", 0, 0, 0 );
 #endif
@@ -70,8 +69,8 @@ do_add( Connection *conn, Operation *op )
        /* get the name */
        if ( ber_scanf( ber, "{m", /*}*/ &dn ) == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_add: conn %d ber_scanf failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_add: conn %d ber_scanf failed\n", conn->c_connid,0,0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_add: ber_scanf failed\n", 0, 0, 0 );
 #endif
@@ -86,9 +85,8 @@ do_add( Connection *conn, Operation *op )
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_add: conn %d invalid dn (%s)\n", conn->c_connid,
-                               dn.bv_val ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_add: conn %d invalid dn (%s)\n", conn->c_connid, dn.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_add: invalid dn (%s)\n", dn.bv_val, 0, 0 );
 #endif
@@ -98,8 +96,8 @@ do_add( Connection *conn, Operation *op )
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-               "do_add: conn %d  dn (%s)\n", conn->c_connid, e->e_dn ));
+       LDAP_LOG( OPERATION, ARGS, 
+               "do_add: conn %d  dn (%s)\n", conn->c_connid, e->e_dn, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "do_add: dn (%s)\n", e->e_dn, 0, 0 );
 #endif
@@ -115,8 +113,8 @@ do_add( Connection *conn, Operation *op )
 
                if ( rtag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "do_add: conn %d      decoding error \n", conn->c_connid ));
+                       LDAP_LOG( OPERATION, ERR, 
+                                  "do_add: conn %d      decoding error \n", conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "do_add: decoding error\n", 0, 0, 0 );
 #endif
@@ -128,9 +126,9 @@ do_add( Connection *conn, Operation *op )
 
                if ( tmp.sml_bvalues == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+                       LDAP_LOG( OPERATION, INFO, 
                                "do_add: conn %d         no values for type %s\n",
-                               conn->c_connid, tmp.sml_type.bv_val ));
+                               conn->c_connid, tmp.sml_type.bv_val, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "no values for type %s\n",
                                tmp.sml_type.bv_val, 0, 0 );
@@ -153,8 +151,8 @@ do_add( Connection *conn, Operation *op )
 
        if ( ber_scanf( ber, /*{*/ "}") == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_add: conn %d ber_scanf failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_add: conn %d ber_scanf failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_add: ber_scanf failed\n", 0, 0, 0 );
 #endif
@@ -166,8 +164,8 @@ do_add( Connection *conn, Operation *op )
 
        if( (rc = get_ctrls( conn, op, 1 )) != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                       "do_add: conn %d get_ctrls failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "do_add: conn %d get_ctrls failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_add: get_ctrls failed\n", 0, 0, 0 );
 #endif
@@ -309,8 +307,8 @@ do_add( Connection *conn, Operation *op )
                }
        } else {
 #ifdef NEW_LOGGING
-           LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                      "do_add: conn %d  no backend support\n", conn->c_connid ));
+           LDAP_LOG( OPERATION, INFO, 
+                      "do_add: conn %d  no backend support\n", conn->c_connid, 0, 0 );
 #else
            Debug( LDAP_DEBUG_ARGS, "    do_add: no backend support\n", 0, 0, 0 );
 #endif
index c521993c54bf3b9c66c667357e96ec052b9b444d..e0fdd8bb2e8decf242ae5c381d37f9d9d83996f9 100644 (file)
@@ -44,8 +44,7 @@ get_ava(
 
        if( rtag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                          "get_ava:  ber_scanf failure\n" ));
+               LDAP_LOG( FILTER, ERR, "get_ava:  ber_scanf failure\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "  get_ava ber_scanf\n", 0, 0, 0 );
 #endif
index 98fa9b85665a0c0e60fbc89325a5879ce13856ac..983ddd9dba9c5c56ab6d25c083c8f70a85c7885c 100644 (file)
@@ -41,7 +41,7 @@ bdb_add(
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "add", LDAP_LEVEL_ARGS, "==> bdb_add: %s\n", e->e_dn ));
+       LDAP_LOG ( OPERATION, ARGS, "==> bdb_add: %s\n", e->e_dn, 0, 0 );
 #else
        Debug(LDAP_DEBUG_ARGS, "==> bdb_add: %s\n", e->e_dn, 0, 0);
 #endif
@@ -50,7 +50,8 @@ bdb_add(
        rc = entry_schema_check( be, e, NULL, &text, textbuf, textlen );
        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "add", LDAP_LEVEL_ERR, "bdb_add: entry failed schema check: %s (%d)\n", text, rc ));
+       LDAP_LOG ( OPERATION, ERR, 
+               "bdb_add: entry failed schema check: %s (%d)\n", text, rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_add: entry failed schema check: %s (%d)\n",
@@ -70,7 +71,8 @@ bdb_add(
        rc = bdb_next_id( be, NULL, &e->e_id );
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "add", LDAP_LEVEL_ERR, "bdb_add: next_id failed (%d)\n", rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_add: next_id failed (%d)\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_add: next_id failed (%d)\n",
@@ -100,7 +102,8 @@ retry:      /* transaction retry */
        text = NULL;
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "add", LDAP_LEVEL_ERR, "bdb_add: txn_begin failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_add: txn_begin failed: %s (%d)\n", db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_add: txn_begin failed: %s (%d)\n",
@@ -182,7 +185,8 @@ retry:      /* transaction retry */
                        }
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "add", LDAP_LEVEL_DETAIL1, "bdb_add: parent does not exist\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "bdb_add: parent does not exist\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "bdb_add: parent does not exist\n",
                                0, 0, 0 );
@@ -211,7 +215,8 @@ retry:      /* transaction retry */
 
                if ( ! rc ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "add", LDAP_LEVEL_DETAIL1, "bdb_add: no write access to parent\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "bdb_add: no write access to parent\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "bdb_add: no write access to parent\n",
                                0, 0, 0 );
@@ -225,7 +230,8 @@ retry:      /* transaction retry */
                if ( is_entry_subentry( p ) ) {
                        /* parent is a subentry, don't allow add */
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "add", LDAP_LEVEL_DETAIL1, "bdb_add: parent is subentry\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "bdb_add: parent is subentry\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "bdb_add: parent is subentry\n",
                                0, 0, 0 );
@@ -239,7 +245,8 @@ retry:      /* transaction retry */
                if ( is_entry_alias( p ) ) {
                        /* parent is an alias, don't allow add */
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "add", LDAP_LEVEL_DETAIL1, "bdb_add: parent is alias\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "bdb_add: parent is alias\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "bdb_add: parent is alias\n",
                                0, 0, 0 );
@@ -256,7 +263,8 @@ retry:      /* transaction retry */
                        BerVarray refs = get_entry_referrals( be, conn, op, p );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "add", LDAP_LEVEL_DETAIL1, "bdb_add: parent is referral\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "bdb_add: parent is referral\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "bdb_add: parent is referral\n",
                                0, 0, 0 );
@@ -305,7 +313,8 @@ retry:      /* transaction retry */
 
                                if ( ! rc ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG (( "add", LDAP_LEVEL_DETAIL1, "bdb_add: no write access to parent\n" ));
+                                       LDAP_LOG ( OPERATION, DETAIL1, 
+                                               "bdb_add: no write access to parent\n", 0, 0, 0 );
 #else
                                        Debug( LDAP_DEBUG_TRACE,
                                                "bdb_add: no write access to parent\n",
@@ -318,7 +327,8 @@ retry:      /* transaction retry */
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "add", LDAP_LEVEL_DETAIL1, "bdb_add: %s denied\n", pdn.bv_len == 0 ? "suffix" : "entry at root" ));
+                               LDAP_LOG ( OPERATION, DETAIL1, "bdb_add: %s denied\n", 
+                                       pdn.bv_len == 0 ? "suffix" : "entry at root", 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE, "bdb_add: %s denied\n",
                                        pdn.bv_len == 0 ? "suffix" : "entry at root",
@@ -332,7 +342,8 @@ retry:      /* transaction retry */
 #ifdef BDB_SUBENTRIES
                if( subentry ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "add", LDAP_LEVEL_DETAIL1, "bdb_add: no parent, cannot add subentry\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "bdb_add: no parent, cannot add subentry\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "bdb_add: no parent, cannot add subentry\n",
@@ -358,7 +369,8 @@ retry:      /* transaction retry */
        rc = bdb_dn2id_add( be, ltid, &pdn, e );
        if ( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "add", LDAP_LEVEL_ERR, "bdb_add: dn2id_add failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_add: dn2id_add failed: %s (%d)\n", db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "bdb_add: dn2id_add failed: %s (%d)\n",
                        db_strerror(rc), rc, 0 );
@@ -381,7 +393,7 @@ retry:      /* transaction retry */
        rc = bdb_id2entry_add( be, ltid, e );
        if ( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "add", LDAP_LEVEL_ERR, "bdb_add: id2entry_add failed\n" ));
+               LDAP_LOG ( OPERATION, ERR, "bdb_add: id2entry_add failed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "bdb_add: id2entry_add failed\n",
                        0, 0, 0 );
@@ -401,7 +413,8 @@ retry:      /* transaction retry */
        rc = bdb_index_entry_add( be, ltid, e, e->e_attrs );
        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "add", LDAP_LEVEL_ERR, "bdb_add: index_entry_add failed\n" ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_add: index_entry_add failed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "bdb_add: index_entry_add failed\n",
                        0, 0, 0 );
@@ -471,7 +484,9 @@ retry:      /* transaction retry */
 
        if (rc == LDAP_SUCCESS) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "add", LDAP_LEVEL_RESULTS, "bdb_add: added%s id=%08lx dn=\"%s\"\n", op->o_noop ? " (no-op)" : "", e->e_id, e->e_dn ));
+               LDAP_LOG ( OPERATION, RESULTS, 
+                       "bdb_add: added%s id=%08lx dn=\"%s\"\n", 
+                       op->o_noop ? " (no-op)" : "", e->e_id, e->e_dn );
 #else
                Debug(LDAP_DEBUG_TRACE, "bdb_add: added%s id=%08lx dn=\"%s\"\n",
                        op->o_noop ? " (no-op)" : "", e->e_id, e->e_dn );
@@ -481,7 +496,8 @@ retry:      /* transaction retry */
        }
        else {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "add", LDAP_LEVEL_ERR, "bdb_add: %s : %s (%d)\n", text, db_strerror(rc), rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_add: %s : %s (%d)\n",  text, db_strerror(rc), rc );
 #else
                Debug( LDAP_DEBUG_TRACE, "bdb_add: %s : %s (%d)\n",
                        text, db_strerror(rc), rc );
index c05cfc393390b46624cc01f5b3531c55d89ef096..b60f82c8dedb33932c0a708859016aa4bdb86804 100644 (file)
@@ -181,9 +181,9 @@ bdb_attr_index_config(
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( BACK_BDB, DETAIL1, 
                        "attr_index_config: index %s 0x%04lx\n",
-                       ad->ad_cname.bv_val, mask ));
+                       ad->ad_cname.bv_val, mask, 0 );
 #else
                Debug( LDAP_DEBUG_CONFIG, "index %s 0x%04lx\n",
                        ad->ad_cname.bv_val, mask, 0 ); 
index 1277f0256104f9addae957f37ed24829b19ed65a..b41177b4e74fdb4750091ca0a8c567b27646af43 100644 (file)
@@ -43,13 +43,12 @@ bdb_attribute(
        DB_LOCK         lock;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ARGS,
-               "bdb_attribute: gr dn: \"%s\"\n", entry_ndn->bv_val ));
-       LDAP_LOG(( "backend", LDAP_LEVEL_ARGS,
-               "bdb_attribute: at: \"%s\"\n", entry_at_name));
-       LDAP_LOG(( "backend", LDAP_LEVEL_ARGS,
-               "bdb_attribute: tr dn: \"%s\"\n",
-               target ? target->e_ndn : "" ));
+       LDAP_LOG( BACK_BDB, ARGS, 
+               "bdb_attribute: gr dn: \"%s\"\n", entry_ndn->bv_val, 0, 0 );
+       LDAP_LOG( BACK_BDB, ARGS, 
+               "bdb_attribute: at: \"%s\"\n", entry_at_name, 0, 0);
+       LDAP_LOG( BACK_BDB, ARGS, "bdb_attribute: tr dn: \"%s\"\n",
+               target ? target->e_ndn : "", 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS,
                "=> bdb_attribute: gr dn: \"%s\"\n",
@@ -77,9 +76,8 @@ bdb_attribute(
                /* we already have a LOCKED copy of the entry */
                e = target;
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                       "bdb_attribute: target is LOCKED (%s)\n",
-                       entry_ndn->bv_val ));
+               LDAP_LOG( BACK_BDB, DETAIL1, 
+                       "bdb_attribute: target is LOCKED (%s)\n", entry_ndn->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ARGS,
                        "=> bdb_attribute: target is entry: \"%s\"\n",
@@ -109,9 +107,9 @@ dn2entry_retry:
                }
                if (e == NULL) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                               "bdb_attribute: cannot find entry (%s)\n",
-                               entry_ndn->bv_val ));
+                       LDAP_LOG( BACK_BDB, INFO, 
+                               "bdb_attribute: cannot find entry (%s)\n", 
+                               entry_ndn->bv_val, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ACL,
                                "=> bdb_attribute: cannot find entry: \"%s\"\n",
@@ -124,9 +122,8 @@ dn2entry_retry:
                }
                
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                       "bdb_attribute: found entry (%s)\n",
-                       entry_ndn->bv_val ));
+               LDAP_LOG( BACK_BDB, DETAIL1, "bdb_attribute: found entry (%s)\n",
+                       entry_ndn->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "=> bdb_attribute: found entry: \"%s\"\n",
@@ -138,8 +135,8 @@ dn2entry_retry:
        /* find attribute values */
        if( is_entry_alias( e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "bdb_attribute: entry (%s) is an alias\n", e->e_dn ));
+               LDAP_LOG( BACK_BDB, INFO, 
+                       "bdb_attribute: entry (%s) is an alias\n", e->e_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= bdb_attribute: entry is an alias\n", 0, 0, 0 );
@@ -151,8 +148,8 @@ dn2entry_retry:
 
        if( is_entry_referral( e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "bdb_attribute: entry (%s) is a referral.\n", e->e_dn ));
+               LDAP_LOG( BACK_BDB, INFO, 
+                       "bdb_attribute: entry (%s) is a referral.\n", e->e_dn, 0, 0);
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= bdb_attribute: entry is a referral\n", 0, 0, 0 );
@@ -171,8 +168,8 @@ dn2entry_retry:
 
        if ((attr = attr_find(e->e_attrs, entry_at)) == NULL) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "bdb_attribute: failed to find %s.\n", entry_at_name ));
+               LDAP_LOG( BACK_BDB, INFO, 
+                       "bdb_attribute: failed to find %s.\n", entry_at_name, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= bdb_attribute: failed to find %s\n",
@@ -231,9 +228,7 @@ return_results:
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
-               "bdb_attribute: rc=%d nvals=%d.\n",
-               rc, j ));
+       LDAP_LOG( BACK_BDB, ENTRY, "bdb_attribute: rc=%d nvals=%d.\n", rc, j, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "bdb_attribute: rc=%d nvals=%d\n",
index be64c5b6a8c90ca587a63b51cbf81943868bf619..ebd4880642383e15872e3fc971ed94ef295cfc55 100644 (file)
@@ -44,7 +44,7 @@ bdb_bind(
        DB_LOCK         lock;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "bind", LDAP_LEVEL_ARGS, "==> bdb_bind: dn: %s\n", dn->bv_val ));
+       LDAP_LOG ( OPERATION, ARGS, "==> bdb_bind: dn: %s\n", dn->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "==> bdb_bind: dn: %s\n", dn->bv_val, 0, 0);
 #endif
@@ -134,7 +134,8 @@ dn2entry_retry:
        if ( is_entry_subentry( e ) ) {
                /* entry is an subentry, don't allow bind */
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "bind", LDAP_LEVEL_DETAIL1, "bdb_bind: entry is subentry\n" ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "bdb_bind: entry is subentry\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "entry is subentry\n", 0,
                        0, 0 );
@@ -151,7 +152,7 @@ dn2entry_retry:
        if ( is_entry_alias( e ) ) {
                /* entry is an alias, don't allow bind */
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "bind", LDAP_LEVEL_DETAIL1, "bdb_bind: entry is alias\n" ));
+               LDAP_LOG ( OPERATION, DETAIL1, "bdb_bind: entry is alias\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "entry is alias\n", 0,
                        0, 0 );
@@ -170,7 +171,8 @@ dn2entry_retry:
                        conn, op, e );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "bind", LDAP_LEVEL_DETAIL1, "bdb_bind: entry is referral\n" ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "bdb_bind: entry is referral\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0,
                        0, 0 );
index 18854548fed61a6764105066e3f1d7348f53a697..8f20bcee6ff0f1b9559a3a91b98d3d7f815cc12d 100644 (file)
@@ -49,9 +49,9 @@ static int
 bdb_cache_entry_rdwr_lock(Entry *e, int rw)
 {
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ENTRY,
-                  "bdb_cache_entry_rdwr_lock: %s lock on ID %ld\n",
-                  rw ? "w" : "r", e->e_id ));
+       LDAP_LOG( CACHE, ENTRY, 
+               "bdb_cache_entry_rdwr_lock: %s lock on ID %ld\n",
+               rw ? "w" : "r", e->e_id, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "entry_rdwr_%slock: ID: %ld\n",
                rw ? "w" : "r", e->e_id, 0);
@@ -67,9 +67,9 @@ static int
 bdb_cache_entry_rdwr_trylock(Entry *e, int rw)
 {
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ENTRY,
-                  "bdb_cache_entry_rdwr_trylock: try %s lock on ID: %ld.\n",
-                  rw ? "w" : "r", e->e_id ));
+       LDAP_LOG( CACHE, ENTRY, 
+               "bdb_cache_entry_rdwr_trylock: try %s lock on ID: %ld.\n",
+               rw ? "w" : "r", e->e_id, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "entry_rdwr_%strylock: ID: %ld\n",
                rw ? "w" : "r", e->e_id, 0);
@@ -85,9 +85,9 @@ static int
 bdb_cache_entry_rdwr_unlock(Entry *e, int rw)
 {
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ENTRY,
-                  "bdb_cache_entry_rdwr_unlock: remove %s lock on ID %ld.\n",
-                  rw ? "w" : "r", e->e_id ));
+       LDAP_LOG( CACHE, ENTRY, 
+               "bdb_cache_entry_rdwr_unlock: remove %s lock on ID %ld.\n",
+               rw ? "w" : "r", e->e_id, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "entry_rdwr_%sunlock: ID: %ld\n",
                rw ? "w" : "r", e->e_id, 0);
@@ -232,9 +232,9 @@ bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw )
                ldap_pvt_thread_rdwr_wunlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CACHE, DETAIL1, 
                           "bdb_unlocked_cache_return_entry_rw: return (%ld):%s, refcnt=%d\n",
-                          id, rw ? "w" : "r", refcnt ));
+                          id, rw ? "w" : "r", refcnt );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "====> bdb_unlocked_cache_return_entry_%s( %ld ): created (%d)\n",
@@ -248,9 +248,9 @@ bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw )
                        ldap_pvt_thread_rdwr_wunlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( CACHE, DETAIL1, 
                                   "bdb_unlocked_cache_return_entry_rw: %ld, delete pending (%d).\n",
-                                  id, refcnt ));
+                                  id, refcnt, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "====> bdb_unlocked_cache_return_entry_%s( %ld ): delete pending (%d)\n",
@@ -267,9 +267,9 @@ bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw )
                        ldap_pvt_thread_rdwr_wunlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( CACHE, DETAIL1, 
                                   "bdb_unlocked_cache_return_entry_rw: (%ld): deleted (%d)\n",
-                                  id, refcnt ));
+                                  id, refcnt, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "====> bdb_unlocked_cache_return_entry_%s( %ld ): deleted (%d)\n",
@@ -282,9 +282,9 @@ bdb_unlocked_cache_return_entry_rw( Cache *cache, Entry *e, int rw )
                ldap_pvt_thread_rdwr_wunlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CACHE, DETAIL1, 
                           "bdb_unlocked_cache_return_entry_rw: ID %ld:%s returned (%d)\n",
-                          id, rw ? "w": "r", refcnt ));
+                          id, rw ? "w": "r", refcnt );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "====> bdb_unlocked_cache_return_entry_%s( %ld ): returned (%d)\n",
@@ -335,9 +335,9 @@ bdb_cache_return_entry_rw
                ldap_pvt_thread_rdwr_wunlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CACHE, DETAIL1, 
                           "bdb_cache_return_entry_rw: return (%ld):%s, refcnt=%d\n",
-                          id, rw ? "w" : "r", refcnt ));
+                          id, rw ? "w" : "r", refcnt );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "====> bdb_cache_return_entry_%s( %ld ): created (%d)\n",
@@ -351,9 +351,9 @@ bdb_cache_return_entry_rw
                        ldap_pvt_thread_rdwr_wunlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( CACHE, DETAIL1, 
                                   "bdb_cache_return_entry_rw: %ld, delete pending (%d).\n",
-                                  id, refcnt ));
+                                  id, refcnt, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "====> bdb_cache_return_entry_%s( %ld ): delete pending (%d)\n",
@@ -370,9 +370,9 @@ bdb_cache_return_entry_rw
                        ldap_pvt_thread_rdwr_wunlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( CACHE, DETAIL1, 
                                   "bdb_cache_return_entry_rw: (%ld): deleted (%d)\n",
-                                  id, refcnt ));
+                                  id, refcnt, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "====> bdb_cache_return_entry_%s( %ld ): deleted (%d)\n",
@@ -385,9 +385,9 @@ bdb_cache_return_entry_rw
                ldap_pvt_thread_rdwr_wunlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CACHE, DETAIL1, 
                           "bdb_cache_return_entry_rw: ID %ld:%s returned (%d)\n",
-                          id, rw ? "w": "r", refcnt ));
+                          id, rw ? "w": "r", refcnt );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "====> bdb_cache_return_entry_%s( %ld ): returned (%d)\n",
@@ -442,9 +442,9 @@ bdb_cache_add_entry_rw(
        Entry   *ee;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ENTRY,
-                  "bdb_cache_add_entry_rw: add (%s):%s to cache\n",
-                  e->e_dn, rw ? "w" : "r" ));
+       LDAP_LOG( CACHE, ENTRY, 
+               "bdb_cache_add_entry_rw: add (%s):%s to cache\n",
+               e->e_dn, rw ? "w" : "r", 0 );
 #endif
        /* set cache write lock */
        ldap_pvt_thread_rdwr_wlock( &cache->c_rwlock );
@@ -456,9 +456,9 @@ bdb_cache_add_entry_rw(
                ldap_pvt_thread_rdwr_wunlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_ERR,
-                          "bdb_cache_add_entry_rw: add (%s):%ld private init failed!\n",
-                          e->e_dn, e->e_id ));
+               LDAP_LOG( CACHE, ERR, 
+                       "bdb_cache_add_entry_rw: add (%s):%ld private init failed!\n",
+                       e->e_dn, e->e_id, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "====> bdb_cache_add_entry( %ld ): \"%s\": private init failed!\n",
@@ -476,9 +476,9 @@ bdb_cache_add_entry_rw(
                ldap_pvt_thread_rdwr_wunlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                          "bdb_cache_add_entry: (%s):%ld already in cache.\n",
-                          e->e_dn, e->e_id ));
+               LDAP_LOG( CACHE, DETAIL1, 
+                       "bdb_cache_add_entry: (%s):%ld already in cache.\n",
+                       e->e_dn, e->e_id, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "====> bdb_cache_add_entry( %ld ): \"%s\": already in dn cache\n",
@@ -495,9 +495,9 @@ bdb_cache_add_entry_rw(
                (AVL_CMP) entry_id_cmp, avl_dup_error ) != 0 )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                          "bdb_cache_add_entry: (%s):%ls already in cache.\n",
-                          e->e_dn, e->e_id ));
+               LDAP_LOG( CACHE, DETAIL1, 
+                       "bdb_cache_add_entry: (%s):%ls already in cache.\n",
+                       e->e_dn, e->e_id, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "====> bdb_cache_add_entry( %ld ): \"%s\": already in id cache\n",
@@ -509,9 +509,9 @@ bdb_cache_add_entry_rw(
                        (AVL_CMP) entry_dn_cmp ) == NULL )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                                  "bdb_cache_add_entry: can't delete (%s) from cache.\n",
-                                  e->e_dn ));
+                       LDAP_LOG( CACHE, INFO, 
+                               "bdb_cache_add_entry: can't delete (%s) from cache.\n", 
+                               e->e_dn, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "====> can't delete from dn cache\n",
                            0, 0, 0 );
@@ -535,8 +535,9 @@ bdb_cache_add_entry_rw(
                if ( avl_delete( &cache->c_idtree, (caddr_t) e,
                        (AVL_CMP) entry_id_cmp ) == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                               "bdb_cache_add_entry: can't delete (%s) from cache.\n", e->e_dn ));
+                       LDAP_LOG( CACHE, INFO, 
+                               "bdb_cache_add_entry: can't delete (%s) from cache.\n", 
+                               e->e_dn, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "====> can't delete from id cache\n", 0, 0, 0 );
 #endif
@@ -544,8 +545,9 @@ bdb_cache_add_entry_rw(
                if ( avl_delete( &cache->c_dntree, (caddr_t) e,
                                (AVL_CMP) entry_dn_cmp ) == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                                       "bdb_cache_add_entry: can't delete (%s) from cache.\n", e->e_dn ));
+                       LDAP_LOG( CACHE, INFO, 
+                               "bdb_cache_add_entry: can't delete (%s) from cache.\n", 
+                               e->e_dn, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "====> can't delete from dn cache\n", 0, 0, 0 );
 #endif
@@ -633,9 +635,9 @@ bdb_cache_update_entry(
                (AVL_CMP) entry_dn_cmp, avl_dup_error ) != 0 )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                          "bdb_cache_update_entry: (%s):%ld already in dn cache\n",
-                          e->e_dn, e->e_id ));
+               LDAP_LOG( CACHE, DETAIL1, 
+                       "bdb_cache_update_entry: (%s):%ld already in dn cache\n",
+                       e->e_dn, e->e_id, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "====> bdb_cache_update_entry( %ld ): \"%s\": already in dn cache\n",
@@ -652,9 +654,9 @@ bdb_cache_update_entry(
                (AVL_CMP) entry_id_cmp, avl_dup_error ) != 0 )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                          "bdb_cache_update_entry: (%s)%ld already in id cache\n",
-                          e->e_dn, e->e_id ));
+               LDAP_LOG( CACHE, DETAIL1, 
+                       "bdb_cache_update_entry: (%s)%ld already in id cache\n",
+                       e->e_dn, e->e_id, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "====> bdb_cache_update_entry( %ld ): \"%s\": already in id cache\n",
@@ -666,9 +668,9 @@ bdb_cache_update_entry(
                        (AVL_CMP) entry_dn_cmp ) == NULL )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                                  "bdb_cache_update_entry: can't delete (%s)%ld from dn cache.\n",
-                                  e->e_dn, e->e_id ));
+                       LDAP_LOG( CACHE, INFO, 
+                               "bdb_cache_update_entry: can't delete (%s)%ld from dn cache.\n",
+                               e->e_dn, e->e_id, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "====> can't delete from dn cache\n",
                            0, 0, 0 );
@@ -778,9 +780,9 @@ try_again:
                        ldap_pvt_thread_rdwr_runlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                                  "bdb_cache_find_entry_dn2id: (%s) %ld not ready: %d\n",
-                                  ndn->bv_val, id, state ));
+                       LDAP_LOG( CACHE, INFO, 
+                               "bdb_cache_find_entry_dn2id: (%s) %ld not ready: %d\n",
+                               ndn->bv_val, id, state );
 #else
                        Debug(LDAP_DEBUG_TRACE,
                                "====> bdb_cache_find_entry_dn2id(\"%s\"): %ld (not ready) %d\n",
@@ -806,9 +808,9 @@ try_again:
                ldap_pvt_thread_mutex_unlock( &cache->lru_mutex );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                          "bdb_cache_find_entry_dn2id: (%s): %ld %d tries\n",
-                          ndn->bv_val, id, count ));
+               LDAP_LOG( CACHE, DETAIL1, 
+                       "bdb_cache_find_entry_dn2id: (%s): %ld %d tries\n",
+                       ndn->bv_val, id, count );
 #else
                Debug(LDAP_DEBUG_TRACE,
                        "====> bdb_cache_find_entry_dn2id(\"%s\"): %ld (%d tries)\n",
@@ -874,9 +876,9 @@ try_again:
                        ldap_pvt_thread_rdwr_runlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                                  "bdb_cache_find_entry_id: (%ld)->%ld not ready (%d).\n",
-                                  id, ep_id, state ));
+                       LDAP_LOG( CACHE, INFO, 
+                               "bdb_cache_find_entry_id: (%ld)->%ld not ready (%d).\n",
+                               id, ep_id, state );
                                   
 #else
                        Debug(LDAP_DEBUG_TRACE,
@@ -905,9 +907,9 @@ try_again:
                        ldap_pvt_thread_rdwr_runlock( &cache->c_rwlock );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                                  "bdb_cache_find_entry_id: %ld -> %ld (busy) %d.\n",
-                                  id, ep_id, state ));
+                       LDAP_LOG( CACHE, INFO, 
+                               "bdb_cache_find_entry_id: %ld -> %ld (busy) %d.\n",
+                               id, ep_id, state );
 #else
                        Debug(LDAP_DEBUG_TRACE,
                                "====> bdb_cache_find_entry_id( %ld ): %ld (busy) %d\n",
@@ -935,9 +937,9 @@ try_again:
                ldap_pvt_thread_mutex_unlock( &cache->lru_mutex );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                          "bdb_cache_find_entry_id: %ld -> %s  found %d tries.\n",
-                          ep_id, ep->e_dn, count ));
+               LDAP_LOG( CACHE, DETAIL1, 
+                       "bdb_cache_find_entry_id: %ld -> %s  found %d tries.\n",
+                       ep_id, ep->e_dn, count );
 #else
                Debug(LDAP_DEBUG_TRACE,
                        "====> bdb_cache_find_entry_id( %ld ) \"%s\" (found) (%d tries)\n",
@@ -979,8 +981,8 @@ bdb_cache_delete_entry(
        assert( e->e_private );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ENTRY,
-                  "bdb_cache_delete_entry: delete %ld.\n", e->e_id ));
+       LDAP_LOG( CACHE, ENTRY, 
+               "bdb_cache_delete_entry: delete %ld.\n", e->e_id, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "====> bdb_cache_delete_entry( %ld )\n",
                e->e_id, 0, 0 );
@@ -1047,8 +1049,7 @@ bdb_cache_release_all( Cache *cache )
        ldap_pvt_thread_mutex_lock( &cache->lru_mutex );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ENTRY,
-                  "bdb_cache_release_all: enter\n" ));
+       LDAP_LOG( CACHE, ENTRY, "bdb_cache_release_all: enter\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "====> bdb_cache_release_all\n", 0, 0, 0 );
 #endif
@@ -1067,8 +1068,8 @@ bdb_cache_release_all( Cache *cache )
 
        if ( cache->c_cursize ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                          "bdb_cache_release_all: Entry cache could not be emptied.\n" ));
+               LDAP_LOG( CACHE, INFO,
+                  "bdb_cache_release_all: Entry cache could not be emptied.\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "Entry-cache could not be emptied\n", 0, 0, 0 );
 #endif
index ac799bb62777791701da86b2cd90c090a076f781..25c8cf4f9554480bd81db6913ce5238dda08b2ba 100644 (file)
@@ -88,7 +88,8 @@ dn2entry_retry:
                        conn, op, e );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "compare", LDAP_LEVEL_DETAIL1,"bdb_compare: entry is referral\n" ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "bdb_compare: entry is referral\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0,
                        0, 0 );
index 85ed700fbba42bed33ffe66a739e4ad5c323f394..68efe9aad4b977a75807bbf050943257f318960e 100644 (file)
@@ -87,7 +87,9 @@ bdb_db_cache(
        rc = db_create( &db->bdi_db, bdb->bi_dbenv, 0 );
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "dbcache", LDAP_LEVEL_ERR, "bdb_db_cache: db_create(%s) failed: %s (%d)\n", bdb->bi_dbenv_home, db_strerror(rc), rc ));
+               LDAP_LOG ( CACHE, ERR, 
+                       "bdb_db_cache: db_create(%s) failed: %s (%d)\n", 
+                       bdb->bi_dbenv_home, db_strerror(rc), rc );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "bdb_db_cache: db_create(%s) failed: %s (%d)\n",
@@ -116,7 +118,9 @@ bdb_db_cache(
 
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "dbcache", LDAP_LEVEL_ERR, "bdb_db_cache: db_open(%s) failed: %s (%d)\n", name, db_strerror(rc), rc ));
+               LDAP_LOG ( CACHE, ERR, 
+                       "bdb_db_cache: db_open(%s) failed: %s (%d)\n", 
+                       name, db_strerror(rc), rc );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "bdb_db_cache: db_open(%s) failed: %s (%d)\n",
index 8c26e9a08054771297a633e2cfe9b428ed46f2b7..c15662b15d8b494a1c48e5c8b4a00618f71e51c4 100644 (file)
@@ -42,8 +42,7 @@ bdb_delete(
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "delete", LDAP_LEVEL_ARGS, "==> bdb_delete: %s\n", 
-               dn->bv_val ));
+       LDAP_LOG ( OPERATION, ARGS,  "==> bdb_delete: %s\n", dn->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "==> bdb_delete: %s\n",
                dn->bv_val, 0, 0 );
@@ -55,8 +54,8 @@ retry:        /* transaction retry */
                        bdb_unlocked_cache_return_entry_w(&bdb->bi_cache, e);
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "delete", LDAP_LEVEL_DETAIL1, 
-                       "==> bdb_delete: retrying...\n" ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "==> bdb_delete: retrying...\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "==> bdb_delete: retrying...\n",
                        0, 0, 0 );
@@ -78,9 +77,9 @@ retry:        /* transaction retry */
        text = NULL;
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "delete", LDAP_LEVEL_ERR, 
+               LDAP_LOG ( OPERATION, ERR, 
                        "==> bdb_delete: txn_begin failed: %s (%d)\n",
-                       db_strerror(rc), rc ));
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_delete: txn_begin failed: %s (%d)\n",
@@ -136,8 +135,8 @@ retry:      /* transaction retry */
 
                if( p == NULL) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "delete", LDAP_LEVEL_DETAIL1, 
-                               "<=- bdb_delete: parent does not exist\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "<=- bdb_delete: parent does not exist\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "<=- bdb_delete: parent does not exist\n",
@@ -163,8 +162,8 @@ retry:      /* transaction retry */
 
                if ( !rc  ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "delete", LDAP_LEVEL_DETAIL1, 
-                               "<=- bdb_delete: no access to parent\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "<=- bdb_delete: no access to parent\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "<=- bdb_delete: no access to parent\n",
@@ -194,8 +193,8 @@ retry:      /* transaction retry */
 
                                if ( !rc  ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG (( "delete", LDAP_LEVEL_DETAIL1, 
-                                               "<=- bdb_delete: no access to parent\n" ));
+                                       LDAP_LOG ( OPERATION, DETAIL1, 
+                                               "<=- bdb_delete: no access to parent\n", 0, 0, 0 );
 #else
                                        Debug( LDAP_DEBUG_TRACE,
                                                "<=- bdb_delete: no access "
@@ -207,8 +206,8 @@ retry:      /* transaction retry */
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "delete", LDAP_LEVEL_DETAIL1, 
-                                       "<=- bdb_delete: no parent and not root\n" ));
+                               LDAP_LOG ( OPERATION, DETAIL1, 
+                                       "<=- bdb_delete: no parent and not root\n", 0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "<=- bdb_delete: no parent "
@@ -254,9 +253,8 @@ retry:      /* transaction retry */
                BerVarray refs;
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "delete", LDAP_LEVEL_ARGS, 
-                       "<=- bdb_delete: no such object %s\n",
-                       dn->bv_val ));
+               LDAP_LOG ( OPERATION, ARGS, 
+                       "<=- bdb_delete: no such object %s\n", dn->bv_val, 0, 0);
 #else
                Debug( LDAP_DEBUG_ARGS,
                        "<=- bdb_delete: no such object %s\n",
@@ -292,8 +290,8 @@ retry:      /* transaction retry */
                        conn, op, e );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "delete", LDAP_LEVEL_DETAIL1, 
-                       "<=- bdb_delete: entry is referral\n" ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "<=- bdb_delete: entry is referral\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_delete: entry is referral\n",
@@ -317,9 +315,8 @@ retry:      /* transaction retry */
                        goto retry;
                case 0:
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "delete", LDAP_LEVEL_DETAIL1, 
-                               "<=- bdb_delete: non-leaf %s\n",
-                               dn->bv_val ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "<=- bdb_delete: non-leaf %s\n", dn->bv_val, 0, 0 );
 #else
                        Debug(LDAP_DEBUG_ARGS,
                                "<=- bdb_delete: non-leaf %s\n",
@@ -330,9 +327,9 @@ retry:      /* transaction retry */
                        break;
                default:
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "delete", LDAP_LEVEL_ERR, 
+                       LDAP_LOG ( OPERATION, ERR, 
                                "<=- bdb_delete: has_children failed %s (%d)\n",
-                               db_strerror(rc), rc ));
+                               db_strerror(rc), rc, 0 );
 #else
                        Debug(LDAP_DEBUG_ARGS,
                                "<=- bdb_delete: has_children failed: %s (%d)\n",
@@ -355,9 +352,8 @@ retry:      /* transaction retry */
                        rc = LDAP_OTHER;
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "delete", LDAP_LEVEL_ERR, 
-                       "<=- bdb_delete: dn2id failed %s (%d)\n",
-                       db_strerror(rc), rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "<=- bdb_delete: dn2id failed %s (%d)\n", db_strerror(rc), rc, 0 );
 #else
                Debug(LDAP_DEBUG_ARGS,
                        "<=- bdb_delete: dn2id failed: %s (%d)\n",
@@ -378,9 +374,9 @@ retry:      /* transaction retry */
                        rc = LDAP_OTHER;
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "delete", LDAP_LEVEL_ERR, 
-                       "<=- bdb_delete: id2entry failed: %s (%d)\n",
-                       db_strerror(rc), rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "<=- bdb_delete: id2entry failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug(LDAP_DEBUG_ARGS,
                        "<=- bdb_delete: id2entry failed: %s (%d)\n",
@@ -401,8 +397,8 @@ retry:      /* transaction retry */
                        rc = LDAP_OTHER;
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "delete", LDAP_LEVEL_ERR, 
-                       "<=- bdb_delete: entry index delete failed!\n" ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "<=- bdb_delete: entry index delete failed!\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "entry index delete failed!\n",
                        0, 0, 0 );
@@ -429,10 +425,9 @@ retry:     /* transaction retry */
 
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "delete", LDAP_LEVEL_ERR, 
+               LDAP_LOG ( OPERATION, ERR, 
                        "bdb_delete: txn_%s failed: %s (%d)\n",
-                       op->o_noop ? "abort (no-op)" : "commit",
-                       db_strerror(rc), rc ));
+                       op->o_noop ? "abort (no-op)" : "commit", db_strerror(rc), rc );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_delete: txn_%s failed: %s (%d)\n",
@@ -444,10 +439,9 @@ retry:     /* transaction retry */
 
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "delete", LDAP_LEVEL_RESULTS, 
+               LDAP_LOG ( OPERATION, RESULTS, 
                        "bdb_delete: deleted%s id=%08lx db=\"%s\"\n",
-                       op->o_noop ? " (no-op)" : "",
-                       e->e_id, e->e_dn ));
+                       op->o_noop ? " (no-op)" : "", e->e_id, e->e_dn );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_delete: deleted%s id=%08lx dn=\"%s\"\n",
index 497514113050e57a51ed8ceefc2739dff0c994da..c2817e23b22104671732c539b0c06adff54c940b 100644 (file)
@@ -12,6 +12,7 @@
 
 #include "back-bdb.h"
 
+
 /*
  * dn2entry - look up dn in the cache/indexes and return the corresponding
  * entry.
@@ -33,8 +34,7 @@ bdb_dn2entry_rw(
        ID              id, id2 = 0;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "db2entry", LDAP_LEVEL_ARGS, "bdb_dn2entry_rw(\"%s\")\n",
-               dn->bv_val ));
+       LDAP_LOG ( CACHE, ARGS, "bdb_dn2entry_rw(\"%s\")\n", dn->bv_val, 0, 0 );
 #else
        Debug(LDAP_DEBUG_TRACE, "bdb_dn2entry_rw(\"%s\")\n",
                dn->bv_val, 0, 0 );
index ea63172b6aa7f11d0a9b3197908f3116c66d53a5..4e8d02cd60aab4b6439f1344fdb8379d78de9ad8 100644 (file)
@@ -29,8 +29,8 @@ bdb_dn2id_add(
        struct berval   ptr, pdn;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "db2id", LDAP_LEVEL_ARGS, "bdb_dn2id_add( \"%s\", 0x%08lx )\n",
-               e->e_ndn, (long) e->e_id ));
+       LDAP_LOG ( INDEX, ARGS, "bdb_dn2id_add( \"%s\", 0x%08lx )\n",
+               e->e_ndn, (long) e->e_id, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_dn2id_add( \"%s\", 0x%08lx )\n",
                e->e_ndn, (long) e->e_id, 0 );
@@ -57,9 +57,8 @@ bdb_dn2id_add(
        rc = db->put( db, txn, &key, &data, DB_NOOVERWRITE );
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
-                       "bdb_dn2id_add: put failed: %s %d\n",
-                       db_strerror(rc), rc ));
+               LDAP_LOG ( INDEX, ERR, "bdb_dn2id_add: put failed: %s %d\n",
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_dn2id_add: put failed: %s %d\n",
                        db_strerror(rc), rc, 0 );
@@ -72,9 +71,9 @@ bdb_dn2id_add(
                rc = bdb_idl_insert_key( be, db, txn, &key, e->e_id );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
-                       "=> bdb_dn2id_add: subtree (%s) insert failed: %d\n",
-                       ptr.bv_val, rc ));
+                       LDAP_LOG ( INDEX, ERR, 
+                               "=> bdb_dn2id_add: subtree (%s) insert failed: %d\n",
+                               ptr.bv_val, rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                        "=> bdb_dn2id_add: subtree (%s) insert failed: %d\n",
@@ -95,9 +94,9 @@ bdb_dn2id_add(
 
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
+                       LDAP_LOG ( INDEX, ERR, 
                                "=> bdb_dn2id_add: parent (%s) insert failed: %d\n",
-                               ptr.bv_val, rc ));
+                               ptr.bv_val, rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "=> bdb_dn2id_add: parent (%s) insert failed: %d\n",
@@ -114,9 +113,9 @@ bdb_dn2id_add(
 
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
+                       LDAP_LOG ( INDEX, ERR, 
                                "=> bdb_dn2id_add: subtree (%s) insert failed: %d\n",
-                               ptr.bv_val, rc ));
+                               ptr.bv_val, rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "=> bdb_dn2id_add: subtree (%s) insert failed: %d\n",
@@ -135,8 +134,7 @@ bdb_dn2id_add(
 done:
        ch_free( buf );
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "db2id", LDAP_LEVEL_RESULTS, 
-               "<= bdb_dn2id_add: %d\n", rc ));
+       LDAP_LOG ( INDEX, RESULTS, "<= bdb_dn2id_add: %d\n", rc, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= bdb_dn2id_add: %d\n", rc, 0, 0 );
 #endif
@@ -158,9 +156,8 @@ bdb_dn2id_delete(
        struct berval   pdn, ptr;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "db2id", LDAP_LEVEL_ARGS, 
-               "=> bdb_dn2id_delete ( \"%s\", 0x08lx )\n", 
-               e->e_ndn, e->e_id ));
+       LDAP_LOG ( INDEX, ARGS, 
+               "=> bdb_dn2id_delete ( \"%s\", 0x%08lx )\n", e->e_ndn, e->e_id, 0);
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_dn2id_delete( \"%s\", 0x%08lx )\n",
                e->e_ndn, e->e_id, 0 );
@@ -181,9 +178,9 @@ bdb_dn2id_delete(
        rc = db->del( db, txn, &key, 0 );
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
+               LDAP_LOG ( INDEX, ERR, 
                        "=> bdb_dn2id_delete: delete failed: %s %d\n", 
-                       db_strerror(rc), rc ));
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_dn2id_delete: delete failed: %s %d\n",
                        db_strerror(rc), rc, 0 );
@@ -196,9 +193,9 @@ bdb_dn2id_delete(
                rc = db->del( db, txn, &key, 0 );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
-                       "=> bdb_dn2id_delete: subtree (%s) delete failed: %d\n", 
-                       ptr.bv_val, rc ));
+                       LDAP_LOG ( INDEX, ERR, 
+                               "=> bdb_dn2id_delete: subtree (%s) delete failed: %d\n", 
+                               ptr.bv_val, rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                        "=> bdb_dn2id_delete: subtree (%s) delete failed: %d\n",
@@ -219,9 +216,9 @@ bdb_dn2id_delete(
 
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
+                       LDAP_LOG ( INDEX, ERR, 
                                "=> bdb_dn2id_delete: parent (%s) delete failed: %d\n", 
-                               ptr.bv_val, rc ));
+                               ptr.bv_val, rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "=> bdb_dn2id_delete: parent (%s) delete failed: %d\n",
@@ -237,9 +234,9 @@ bdb_dn2id_delete(
                rc = bdb_idl_delete_key( be, db, txn, &key, e->e_id );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
+                       LDAP_LOG ( INDEX, ERR, 
                                "=> bdb_dn2id_delete: subtree (%s) delete failed: %d\n", 
-                               ptr.bv_val, rc ));
+                               ptr.bv_val, rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "=> bdb_dn2id_delete: subtree (%s) delete failed: %d\n",
@@ -258,7 +255,7 @@ bdb_dn2id_delete(
 done:
        ch_free( buf );
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "db2id", LDAP_LEVEL_RESULTS, "<= bdb_dn2id_delete %d\n", rc ));
+       LDAP_LOG ( INDEX, RESULTS, "<= bdb_dn2id_delete %d\n", rc, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= bdb_dn2id_delete %d\n", rc, 0, 0 );
 #endif
@@ -279,8 +276,7 @@ bdb_dn2id(
        DB *db = bdb->bi_dn2id->bdi_db;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "db2id", LDAP_LEVEL_ARGS, "=> bdb_dn2id( \"%s\" )\n", 
-       dn->bv_val ));
+       LDAP_LOG ( INDEX, ARGS, "=> bdb_dn2id( \"%s\" )\n", dn->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_dn2id( \"%s\" )\n", dn->bv_val, 0, 0 );
 #endif
@@ -309,17 +305,16 @@ bdb_dn2id(
 
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
-                       "<= bdb_dn2id: get failed %s (%d)\n", 
-                       db_strerror(rc), rc ));
+               LDAP_LOG ( INDEX, ERR, "<= bdb_dn2id: get failed %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "<= bdb_dn2id: get failed: %s (%d)\n",
                        db_strerror( rc ), rc, 0 );
 #endif
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "db2id", LDAP_LEVEL_RESULTS, 
-                       "<= bdb_dn2id: got id=0x%08lx\n", *id ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_dn2id: got id=0x%08lx\n", *id, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "<= bdb_dn2id: got id=0x%08lx\n",
                        *id, 0, 0 );
@@ -348,8 +343,8 @@ bdb_dn2id_matched(
        ID              cached_id;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "db2id", LDAP_LEVEL_ARGS, 
-               "=> bdb_dn2id_matched( \"%s\" )\n", in->bv_val ));
+       LDAP_LOG ( INDEX, ARGS, 
+               "=> bdb_dn2id_matched( \"%s\" )\n", in->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_dn2id_matched( \"%s\" )\n", in->bv_val, 0, 0 );
 #endif
@@ -395,8 +390,8 @@ bdb_dn2id_matched(
                                dnParent( &dn, &pdn );
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "db2id", LDAP_LEVEL_DETAIL1, 
-                                       "<= bdb_dn2id_matched: no match\n" ));
+                               LDAP_LOG ( INDEX, DETAIL1, 
+                                       "<= bdb_dn2id_matched: no match\n", 0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "<= bdb_dn2id_matched: no match\n",
@@ -412,10 +407,10 @@ bdb_dn2id_matched(
                } else if ( rc == 0 ) {
                        if( data.size != sizeof( ID ) ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "db2id", LDAP_LEVEL_DETAIL1, 
+                               LDAP_LOG ( INDEX, DETAIL1, 
                                        "<= bdb_dn2id_matched: get size mismatch:"
                                        "expected %ld, got %ld\n",
-                                       (long) sizeof(ID), (long) data.size ));
+                                       (long) sizeof(ID), (long) data.size, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "<= bdb_dn2id_matched: get size mismatch: "
@@ -429,9 +424,9 @@ bdb_dn2id_matched(
                        }
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "db2id", LDAP_LEVEL_DETAIL1, 
+                       LDAP_LOG ( INDEX, DETAIL1, 
                                "<= bdb_dn2id_matched: id=0x%08lx: %s %s\n",
-                               (long) *id, *id2 == 0 ? "entry" : "matched", dn.bv_val ));
+                               (long) *id, *id2 == 0 ? "entry" : "matched", dn.bv_val );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "<= bdb_dn2id_matched: id=0x%08lx: %s %s\n",
@@ -441,9 +436,9 @@ bdb_dn2id_matched(
 
                } else {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
+                       LDAP_LOG ( INDEX, ERR, 
                                "<= bdb_dn2id_matched: get failed: %s (%d)\n",
-                               db_strerror(rc), rc ));
+                               db_strerror(rc), rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "<= bdb_dn2id_matched: get failed: %s (%d)\n",
@@ -471,8 +466,8 @@ bdb_dn2id_children(
        ID              id;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "db2id", LDAP_LEVEL_ARGS, 
-               "=> bdb_dn2id_children( %s )\n", dn->bv_val ));
+       LDAP_LOG ( INDEX, ARGS, 
+               "=> bdb_dn2id_children( %s )\n", dn->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_dn2id_children( %s )\n",
                dn->bv_val, 0, 0 );
@@ -496,10 +491,10 @@ bdb_dn2id_children(
        free( key.data );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "db2id", LDAP_LEVEL_DETAIL1, 
+       LDAP_LOG ( INDEX, DETAIL1, 
                "<= bdb_dn2id_children( %s ): %schildren (%d)\n", 
                dn->bv_val, rc == 0 ? "" : ( rc == DB_NOTFOUND ? "no " :
-               db_strerror(rc)), rc ));
+               db_strerror(rc)), rc );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= bdb_dn2id_children( %s ): %schildren (%d)\n",
                dn->bv_val,
@@ -523,8 +518,8 @@ bdb_dn2idl(
        DB *db = bdb->bi_dn2id->bdi_db;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "db2id", LDAP_LEVEL_ARGS, 
-               "=> bdb_dn2ididl( \"%s\" )\n", dn->bv_val ));
+       LDAP_LOG ( INDEX, ARGS, 
+               "=> bdb_dn2ididl( \"%s\" )\n", dn->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_dn2idl( \"%s\" )\n", dn->bv_val, 0, 0 );
 #endif
@@ -547,9 +542,8 @@ bdb_dn2idl(
 
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "db2id", LDAP_LEVEL_ERR, 
-                       "<= bdb_dn2ididl: get failed: %s (%d)\n", 
-                       db_strerror(rc), rc ));
+               LDAP_LOG ( INDEX, ERR, 
+                       "<= bdb_dn2ididl: get failed: %s (%d)\n", db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_dn2idl: get failed: %s (%d)\n",
@@ -558,10 +552,10 @@ bdb_dn2idl(
 
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "db2id", LDAP_LEVEL_RESULTS, 
+               LDAP_LOG ( INDEX, RESULTS, 
                        "<= bdb_dn2ididl: id=%ld first=%ld last=%ld\n", 
                        (long) ids[0], (long) BDB_IDL_FIRST( ids ), 
-                       (long) BDB_IDL_LAST( ids ) ));
+                       (long) BDB_IDL_LAST( ids ) );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_dn2idl: id=%ld first=%ld last=%ld\n",
@@ -799,9 +793,9 @@ int bdb_fix_dn(
        ptr = e->e_name.bv_val;
        nptr = e->e_nname.bv_val;
        for (n = o; n && n->i_parent; n=n->i_parent) {
-               ptr = slap_strcopy(ptr, n->i_rdn->rdn.bv_val);
+               ptr = lutil_strcopy(ptr, n->i_rdn->rdn.bv_val);
                *ptr++ = ',';
-               nptr = slap_strcopy(nptr, n->i_rdn->nrdn.bv_val);
+               nptr = lutil_strcopy(nptr, n->i_rdn->nrdn.bv_val);
                *nptr++ = ',';
        }
        ldap_pvt_thread_rdwr_runlock(&bdb->bi_tree_rdwr);
index ba96309a390940ed192a23323aaa66ea22ac7cd7..c34b277df1316bdf3b19da4d4c4d09016fbfda2c 100644 (file)
@@ -16,7 +16,7 @@
 void bdb_errcall( const char *pfx, char * msg )
 {
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "error", LDAP_LEVEL_INFO, "bdb(%s): %s\n", pfx, msg ));
+       LDAP_LOG ( OPERATION, INFO, "bdb(%s): %s\n", pfx, msg, 0 );
 #else
        Debug( LDAP_DEBUG_ANY, "bdb(%s): %s\n", pfx, msg, 0 );
 #endif
index a09bc1e3f4b578dcec590e8befcd484512c263a7..53289e7ffaf3ddf3356d583456b8853e933a1d68 100644 (file)
@@ -52,7 +52,7 @@ bdb_filter_candidates(
 {
        int rc = -1;
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_ENTRY, "=> bdb_filter_candidates\n"));
+       LDAP_LOG ( INDEX, ENTRY, "=> bdb_filter_candidates\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "=> bdb_filter_candidates\n", 0, 0, 0 );
 #endif
@@ -60,7 +60,7 @@ bdb_filter_candidates(
        switch ( f->f_choice ) {
        case SLAPD_FILTER_DN_ONE:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tDN ONE\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tDN ONE\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tDN ONE\n", 0, 0, 0 );
 #endif
@@ -73,7 +73,7 @@ bdb_filter_candidates(
 
        case SLAPD_FILTER_DN_SUBTREE:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tDN SUBTREE\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tDN SUBTREE\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tDN SUBTREE\n", 0, 0, 0 );
 #endif
@@ -82,7 +82,7 @@ bdb_filter_candidates(
 
        case LDAP_FILTER_PRESENT:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tPRESENT\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tPRESENT\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tPRESENT\n", 0, 0, 0 );
 #endif
@@ -91,7 +91,7 @@ bdb_filter_candidates(
 
        case LDAP_FILTER_EQUALITY:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tEQUALITY\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tEQUALITY\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tEQUALITY\n", 0, 0, 0 );
 #endif
@@ -100,7 +100,7 @@ bdb_filter_candidates(
 
        case LDAP_FILTER_APPROX:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tAPPROX\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tAPPROX\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tAPPROX\n", 0, 0, 0 );
 #endif
@@ -109,7 +109,7 @@ bdb_filter_candidates(
 
        case LDAP_FILTER_SUBSTRINGS:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tSUBSTRINGS\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tSUBSTRINGS\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tSUBSTRINGS\n", 0, 0, 0 );
 #endif
@@ -119,7 +119,7 @@ bdb_filter_candidates(
        case LDAP_FILTER_GE:
                /* no GE index, use pres */
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tGE\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tGE\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tGE\n", 0, 0, 0 );
 #endif
@@ -129,7 +129,7 @@ bdb_filter_candidates(
        case LDAP_FILTER_LE:
                /* no LE index, use pres */
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tLE\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tLE\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tLE\n", 0, 0, 0 );
 #endif
@@ -139,7 +139,7 @@ bdb_filter_candidates(
        case LDAP_FILTER_NOT:
                /* no indexing to support NOT filters */
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tNOT\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tNOT\n",0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tNOT\n", 0, 0, 0 );
 #endif
@@ -147,7 +147,7 @@ bdb_filter_candidates(
 
        case LDAP_FILTER_AND:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tAND\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tAND\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tAND\n", 0, 0, 0 );
 #endif
@@ -157,7 +157,7 @@ bdb_filter_candidates(
 
        case LDAP_FILTER_OR:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tOR\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tOR\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tOR\n", 0, 0, 0 );
 #endif
@@ -167,7 +167,7 @@ bdb_filter_candidates(
 
        default:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_filter_candidates: \tUNKNOWN\n"));
+               LDAP_LOG ( INDEX, ARGS, "=> bdb_filter_candidates: \tUNKNOWN\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tUNKNOWN %lu\n",
                        (unsigned long) f->f_choice, 0, 0 );
@@ -175,7 +175,9 @@ bdb_filter_candidates(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "=> bdb_filter_candidates: id=%ld first=%ld last=%ld\n", (long) ids[0], (long) BDB_IDL_FIRST( ids ), (long) BDB_IDL_LAST( ids ) ));
+       LDAP_LOG ( INDEX, RESULTS, 
+               "=> bdb_filter_candidates: id=%ld first=%ld last=%ld\n", 
+               (long)ids[0], (long)BDB_IDL_FIRST( ids ), (long) BDB_IDL_LAST( ids ));
 #else
        Debug( LDAP_DEBUG_FILTER,
                "<= bdb_filter_candidates: id=%ld first=%ld last=%ld\n",
@@ -201,7 +203,7 @@ list_candidates(
        Filter  *f;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "=> bdb_list_candidates: 0x%x\n", ftype));
+       LDAP_LOG ( INDEX, ARGS, "=> bdb_list_candidates: 0x%x\n", ftype, 0 , 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "=> bdb_list_candidates 0x%x\n", ftype, 0, 0 );
 #endif
@@ -237,7 +239,10 @@ list_candidates(
 
        if( rc ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_list_candidates: id=%ld first=%ld last=%ld\n", (long) ids[0], (long) BDB_IDL_FIRST( ids ), (long) BDB_IDL_LAST( ids ) ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_list_candidates: id=%ld first=%ld last=%ld\n",
+                       (long) ids[0], (long) BDB_IDL_FIRST( ids ), 
+                       (long) BDB_IDL_LAST( ids ) );
 #else
                Debug( LDAP_DEBUG_FILTER,
                        "<= bdb_list_candidates: id=%ld first=%ld last=%ld\n",
@@ -248,7 +253,7 @@ list_candidates(
 
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_ARGS, "<= bdb_list_candidates: rc=%d\n", rc));
+               LDAP_LOG ( INDEX, ARGS, "<= bdb_list_candidates: rc=%d\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER,
                        "<= bdb_list_candidates: undefined rc=%d\n",
@@ -272,7 +277,7 @@ presence_candidates(
        struct berval prefix = {0};
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_ENTRY, "=> bdb_presence_candidates\n"));
+       LDAP_LOG ( INDEX, ENTRY, "=> bdb_presence_candidates\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_presence_candidates\n", 0, 0, 0 );
 #endif
@@ -287,7 +292,8 @@ presence_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "=> bdb_presence_candidates: index_parm returned=%d\n", rc ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "=> bdb_presence_candidates: index_parm returned=%d\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_presence_candidates: index_param returned=%d\n",
@@ -299,7 +305,8 @@ presence_candidates(
        if( db == NULL ) {
                /* not indexed */
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_presence_candidates: not indexed\n" ));
+               LDAP_LOG(INDEX, RESULTS, 
+                       "<= bdb_presence_candidates: not indexed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_presence_candidates: not indexed\n",
@@ -310,7 +317,8 @@ presence_candidates(
 
        if( prefix.bv_val == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_presence_candidates: no prefix\n" ));
+               LDAP_LOG(INDEX, RESULTS, 
+                       "<= bdb_presence_candidates: no prefix\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_presence_candidates: no prefix\n",
@@ -326,7 +334,8 @@ presence_candidates(
                rc = 0;
        } else if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_presence_candidates: key read failed (%d)\n", rc ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_presence_candidates: key read failed (%d)\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_presense_candidates: key read failed (%d)\n",
@@ -336,7 +345,9 @@ presence_candidates(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_presence_candidates: id=%ld first=%ld last=%ld\n", (long) ids[0], (long) BDB_IDL_FIRST( ids ), (long) BDB_IDL_LAST( ids ) ));
+       LDAP_LOG ( INDEX, RESULTS, 
+               "<= bdb_presence_candidates: id=%ld first=%ld last=%ld\n",
+               (long)ids[0], (long)BDB_IDL_FIRST( ids ), (long)BDB_IDL_LAST( ids ) );
 #else
        Debug(LDAP_DEBUG_TRACE,
                "<= bdb_presence_candidates: id=%ld first=%ld last=%ld\n",
@@ -365,7 +376,7 @@ equality_candidates(
        MatchingRule *mr;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_ENTRY, "=> equality_candidates\n"));
+       LDAP_LOG ( INDEX, ENTRY, "=> equality_candidates\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_equality_candidates\n", 0, 0, 0 );
 #endif
@@ -375,7 +386,8 @@ equality_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "=> bdb_equality_candidates: index_param failed (%d)\n", rc));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "=> bdb_equality_candidates: index_param failed (%d)\n", rc, 0, 0);
 #else
                Debug( LDAP_DEBUG_ANY,
                        "<= bdb_equality_candidates: index_param failed (%d)\n",
@@ -386,7 +398,8 @@ equality_candidates(
 
        if ( db == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "=> bdb_equality_candidates: not indexed\n"));
+               LDAP_LOG(INDEX, RESULTS, 
+                       "=> bdb_equality_candidates: not indexed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "<= bdb_equality_candidates: not indexed\n", 0, 0, 0 );
@@ -414,7 +427,8 @@ equality_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "=> bdb_equality_candidates: MR filter failed (%d)\n", rc));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "=> bdb_equality_candidates: MR filter failed (%d)\n", rc, 0, 0);
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_equality_candidates: MR filter failed (%d)\n",
@@ -425,7 +439,8 @@ equality_candidates(
 
        if( keys == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "=> bdb_equality_candidates: no keys\n"));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "=> bdb_equality_candidates: no keys\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_equality_candidates: no keys\n",
@@ -442,7 +457,8 @@ equality_candidates(
                        rc = 0;
                } else if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_equality_candidates: key read failed (%d)\n", rc));
+                       LDAP_LOG ( INDEX, RESULTS, 
+                               "<= bdb_equality_candidates: key read failed (%d)\n", rc, 0, 0);
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "<= bdb_equality_candidates key read failed (%d)\n",
@@ -453,7 +469,7 @@ equality_candidates(
 
                if( BDB_IDL_IS_ZERO( tmp ) ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "=> bdb_equality_candidates: NULL\n"));
+                       LDAP_LOG ( INDEX, RESULTS, "=> bdb_equality_candidates: NULL\n", 0, 0, 0);
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "<= bdb_equality_candidates NULL\n",
@@ -472,7 +488,10 @@ equality_candidates(
        ber_bvarray_free( keys );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_equality_candidates: id=%ld first=%ld last=%ld\n", (long) ids[0], (long) BDB_IDL_FIRST( ids ), (long) BDB_IDL_LAST( ids ) ));
+       LDAP_LOG ( INDEX, RESULTS, 
+               "<= bdb_equality_candidates: id=%ld first=%ld last=%ld\n", 
+               (long) ids[0], (long) BDB_IDL_FIRST( ids ), 
+               (long) BDB_IDL_LAST( ids ) );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "<= bdb_equality_candidates id=%ld, first=%ld, last=%ld\n",
@@ -500,7 +519,7 @@ approx_candidates(
        MatchingRule *mr;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_ENTRY, "=> bdb_approx_candidates\n"));
+       LDAP_LOG ( INDEX, ENTRY, "=> bdb_approx_candidates\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_approx_candidates\n", 0, 0, 0 );
 #endif
@@ -510,7 +529,8 @@ approx_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_approx_candidates: index_param failed (%d)\n", rc ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_approx_candidates: index_param failed (%d)\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "<= bdb_approx_candidates: index_param failed (%d)\n",
@@ -521,7 +541,8 @@ approx_candidates(
 
        if ( db == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_approx_candidates: not indexed\n" ));
+               LDAP_LOG(INDEX, RESULTS, 
+                       "<= bdb_approx_candidates: not indexed\n",0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "<= bdb_approx_candidates: not indexed\n", 0, 0, 0 );
@@ -554,7 +575,8 @@ approx_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_approx_candidates: MR filter failed (%d)\n", rc ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_approx_candidates: MR filter failed (%d)\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_approx_candidates: (%s) MR filter failed (%d)\n",
@@ -565,7 +587,8 @@ approx_candidates(
 
        if( keys == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_approx_candidates: no keys (%s)\n", prefix.bv_val ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_approx_candidates: no keys (%s)\n", prefix.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_approx_candidates: no keys (%s)\n",
@@ -583,7 +606,8 @@ approx_candidates(
                        break;
                } else if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_approx_candidates: key read failed (%d)\n", rc ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_approx_candidates: key read failed (%d)\n", rc, 0, 0);
 #else
                        Debug( LDAP_DEBUG_TRACE, "<= bdb_approx_candidates key read failed (%d)\n",
                                rc, 0, 0 );
@@ -593,7 +617,8 @@ approx_candidates(
 
                if( BDB_IDL_IS_ZERO( tmp ) ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_approx_candidates: NULL\n" ));
+                       LDAP_LOG ( INDEX, RESULTS, 
+                               "<= bdb_approx_candidates: NULL\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "<= bdb_approx_candidates NULL\n",
                                0, 0, 0 );
@@ -611,7 +636,10 @@ approx_candidates(
        ber_bvarray_free( keys );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_approx_candidates: id=%ld first=%ld last=%ld\n", (long) ids[0], (long) BDB_IDL_FIRST( ids ), (long) BDB_IDL_LAST( ids ) ));
+       LDAP_LOG ( INDEX, RESULTS, 
+               "<= bdb_approx_candidates: id=%ld first=%ld last=%ld\n", 
+               (long) ids[0], (long) BDB_IDL_FIRST( ids ), 
+               (long) BDB_IDL_LAST( ids ) );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= bdb_approx_candidates %ld, first=%ld, last=%ld\n",
                (long) ids[0],
@@ -637,7 +665,7 @@ substring_candidates(
        MatchingRule *mr;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_ENTRY, "=> bdb_substring_candidates\n"));
+       LDAP_LOG ( INDEX, ENTRY, "=> bdb_substring_candidates\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_substring_candidates\n", 0, 0, 0 );
 #endif
@@ -647,7 +675,8 @@ substring_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_substring_candidates: index_param failed (%d)\n", rc ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_substring_candidates: index_param failed (%d)\n", rc, 0, 0);
 #else
                Debug( LDAP_DEBUG_ANY,
                        "<= bdb_substring_candidates: index_param failed (%d)\n",
@@ -658,7 +687,8 @@ substring_candidates(
 
        if ( db == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_substring_candidates: not indexed\n"));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_substring_candidates: not indexed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "<= bdb_substring_candidates not indexed\n",
@@ -688,7 +718,9 @@ substring_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_substring_candidates: (%s) MR filter failed (%d)\n", sub->sa_desc->ad_cname.bv_val, rc ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_substring_candidates: (%s) MR filter failed (%d)\n", 
+                       sub->sa_desc->ad_cname.bv_val, rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_substring_candidates: (%s) MR filter failed (%d)\n",
@@ -699,7 +731,9 @@ substring_candidates(
 
        if( keys == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_substring_candidates: (%s) MR filter failed (%d)\n", mask, sub->sa_desc->ad_cname.bv_val ));
+               LDAP_LOG ( INDEX, RESULTS, 
+                       "<= bdb_substring_candidates: (%d) MR filter failed (%s)\n", 
+                       mask, sub->sa_desc->ad_cname.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "<= bdb_substring_candidates: (0x%04lx) no keys (%s)\n",
@@ -717,7 +751,8 @@ substring_candidates(
                        break;
                } else if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_substring_candidates: key read failed (%d)\n", rc));
+                       LDAP_LOG ( INDEX, RESULTS, 
+                               "<= bdb_substring_candidates: key read failed (%d)\n", rc, 0,0);
 #else
                        Debug( LDAP_DEBUG_TRACE, "<= bdb_substring_candidates key read failed (%d)\n",
                                rc, 0, 0 );
@@ -727,7 +762,8 @@ substring_candidates(
 
                if( BDB_IDL_IS_ZERO( tmp ) ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_substring_candidates: NULL \n" ));
+                       LDAP_LOG ( INDEX, RESULTS, 
+                               "<= bdb_substring_candidates: NULL \n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "<= bdb_substring_candidates NULL\n",
                                0, 0, 0 );
@@ -745,7 +781,10 @@ substring_candidates(
        ber_bvarray_free( keys );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "filterindex", LDAP_LEVEL_RESULTS, "<= bdb_substring_candidates: id=%ld first=%ld last=%ld\n", (long) ids[0], (long) BDB_IDL_FIRST( ids ), (long) BDB_IDL_LAST( ids ) ));
+       LDAP_LOG ( INDEX, RESULTS, 
+               "<= bdb_substring_candidates: id=%ld first=%ld last=%ld\n",
+               (long) ids[0], (long) BDB_IDL_FIRST( ids ), 
+               (long) BDB_IDL_LAST( ids ) );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= bdb_substring_candidates %ld, first=%ld, last=%ld\n",
                (long) ids[0],
index 6c2cdf11330a3c7f9035248c16555a65ffa41101..59a33e94b387b6d93699bc98394b1fd4206fc281 100644 (file)
@@ -54,9 +54,9 @@ bdb_group(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( BACK_BDB, ENTRY, 
                "bdb_group: check (%s) member of (%s), oc %s\n",
-               op_ndn->bv_val, gr_ndn->bv_val, group_oc_name ));
+               op_ndn->bv_val, gr_ndn->bv_val, group_oc_name );
 #else
        Debug( LDAP_DEBUG_ARGS,
                "=> bdb_group: gr dn: \"%s\"\n",
@@ -88,8 +88,8 @@ bdb_group(
                /* we already have a LOCKED copy of the entry */
                e = target;
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                       "bdb_group: target is group (%s)\n", gr_ndn->bv_val ));
+               LDAP_LOG( BACK_BDB, DETAIL1, 
+                       "bdb_group: target is group (%s)\n", gr_ndn->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ARGS,
                        "=> bdb_group: target is group: \"%s\"\n",
@@ -112,9 +112,8 @@ dn2entry_retry:
                }
                if (e == NULL) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "bdb_group: cannot find group (%s)\n",
-                               gr_ndn->bv_val ));
+                       LDAP_LOG( BACK_BDB, DETAIL1, 
+                               "bdb_group: cannot find group (%s)\n", gr_ndn->bv_val, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ACL,
                                "=> bdb_group: cannot find group: \"%s\"\n",
@@ -126,8 +125,8 @@ dn2entry_retry:
                        return( 1 );
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                       "bdb_group: found group (%s)\n", gr_ndn->bv_val ));
+               LDAP_LOG( BACK_BDB, DETAIL1, 
+                       "bdb_group: found group (%s)\n", gr_ndn->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "=> bdb_group: found group: \"%s\"\n",
@@ -144,8 +143,8 @@ dn2entry_retry:
 #ifdef BDB_ALIASES
        if( is_entry_alias( e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "bdb_group: group (%s) is an alias\n", gr_ndn->bv_val ));
+               LDAP_LOG( BACK_BDB, INFO, 
+                       "bdb_group: group (%s) is an alias\n", gr_ndn->bv_val, 0, 0);
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= bdb_group: group is an alias\n", 0, 0, 0 );
@@ -156,8 +155,8 @@ dn2entry_retry:
 
        if( is_entry_referral( e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "bdb_group: group (%s) is a referral.\n", gr_ndn->bv_val ));
+               LDAP_LOG( BACK_BDB, INFO, 
+                       "bdb_group: group (%s) is a referral.\n", gr_ndn->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= bdb_group: group is a referral\n", 0, 0, 0 );
@@ -167,9 +166,9 @@ dn2entry_retry:
 
        if( !is_entry_objectclass( e, group_oc, 0 ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                       "bdb_group: failed to find %s in objectClass.\n",
-                       group_oc_name ));
+               LDAP_LOG( BACK_BDB, ERR, 
+                       "bdb_group: failed to find %s in objectClass.\n", 
+                       group_oc_name, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= bdb_group: failed to find %s in objectClass\n", 
@@ -180,8 +179,8 @@ dn2entry_retry:
 
        if ((attr = attr_find(e->e_attrs, group_at)) == NULL) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "bdb_group: failed to find %s\n", group_at_name ));
+               LDAP_LOG( BACK_BDB, INFO, 
+                       "bdb_group: failed to find %s\n", group_at_name, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= bdb_group: failed to find %s\n",
@@ -191,9 +190,9 @@ dn2entry_retry:
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( BACK_BDB, ENTRY, 
                "bdb_group: found objectClass %s and %s\n",
-               group_oc_name, group_at_name ));
+               group_oc_name, group_at_name, 0 );
 #else
        Debug( LDAP_DEBUG_ACL,
                "<= bdb_group: found objectClass %s and %s\n",
@@ -202,9 +201,9 @@ dn2entry_retry:
 
        if( value_find( group_at, attr->a_vals, op_ndn ) != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( BACK_BDB, DETAIL1, 
                        "bdb_group: \"%s\" not in \"%s\": %s\n",
-                       op_ndn->bv_val, gr_ndn->bv_val, group_at_name ));
+                       op_ndn->bv_val, gr_ndn->bv_val, group_at_name );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= bdb_group: \"%s\" not in \"%s\": %s\n", 
@@ -214,9 +213,8 @@ dn2entry_retry:
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-               "bdb_group: %s is in %s: %s\n",
-               op_ndn->bv_val, gr_ndn->bv_val, group_at_name ));
+       LDAP_LOG( BACK_BDB, DETAIL1, "bdb_group: %s is in %s: %s\n",
+               op_ndn->bv_val, gr_ndn->bv_val, group_at_name );
 #else
        Debug( LDAP_DEBUG_ACL,
                "<= bdb_group: \"%s\" is in \"%s\": %s\n", 
@@ -236,8 +234,7 @@ return_results:
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
-               "bdb_group: rc=%d\n", rc ));
+       LDAP_LOG( BACK_BDB, ENTRY, "bdb_group: rc=%d\n", rc, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "bdb_group: rc=%d\n", rc, 0, 0 ); 
 #endif
index 175faa0bbdc742db7766b81ceebd02d4016c5670..09f86a7ccffd1c8507975c940ef42af46d70de77 100644 (file)
@@ -36,9 +36,9 @@ static void idl_dump( ID *ids )
 {
        if( BDB_IDL_IS_RANGE( ids ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_INFO, "IDL: range (%ld - %ld)\n",
+               LDAP_LOG( INDEX, INFO, "IDL: range (%ld - %ld)\n",
                        (long) BDB_IDL_RANGE_FIRST( ids ),
-                       (long) BDB_IDL_RANGE_LAST( ids ) ));
+                       (long) BDB_IDL_RANGE_LAST( ids ), 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "IDL: range ( %ld - %ld )\n",
@@ -49,8 +49,7 @@ static void idl_dump( ID *ids )
        } else {
                ID i;
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_INFO, "IDL: size %ld",
-                       (long) ids[0] ));
+               LDAP_LOG( INDEX, INFO, "IDL: size %ld", (long) ids[0], 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "IDL: size %ld", (long) ids[0], 0, 0 );
 #endif
@@ -60,7 +59,7 @@ static void idl_dump( ID *ids )
                                Debug( LDAP_DEBUG_ANY, "\n", 0, 0, 0 );
                        }
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_INFO, "%02lx",(long)ids[i] ));
+                       LDAP_LOG( INDEX, INFO, "%02lx",(long)ids[i], 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "  %02lx", (long) ids[i], 0, 0 );
 #endif
@@ -139,8 +138,7 @@ int bdb_idl_insert( ID *ids, ID id )
 
 #if IDL_DEBUG > 1
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "idl", LDAP_LEVEL_DETAIL1, "insert: %04lx at %d\n",
-                       (long) id, x ));
+       LDAP_LOG( INDEX, DETAIL1, "insert: %04lx at %d\n", (long) id, x, 0 );
 #else
        Debug( LDAP_DEBUG_ANY, "insert: %04lx at %d\n", (long) id, x, 0 );
        idl_dump( ids );
@@ -193,8 +191,7 @@ static int idl_delete( ID *ids, ID id )
 
 #if IDL_DEBUG > 1
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "idl", LDAP_LEVEL_DETAIL1, "delete: %04lx at %d\n",
-                       (long) id, x ));
+       LDAP_LOG( INDEX, DETAIL1, "delete: %04lx at %d\n", (long) id, x, 0 );
 #else
        Debug( LDAP_DEBUG_ANY, "delete: %04lx at %d\n", (long) id, x, 0 );
        idl_dump( ids );
@@ -267,7 +264,9 @@ bdb_idl_fetch_key(
                rc = db->cursor( db, tid, &cursor, bdb->bi_db_opflags );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_fetch_key: cursor failed: %s (%d)\n", db_strerror(rc), rc ));
+                       LDAP_LOG( INDEX, ERR, 
+                               "bdb_idl_fetch_key: cursor failed: %s (%d)\n", 
+                               db_strerror(rc), rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: "
                                "cursor failed: %s (%d)\n", db_strerror(rc), rc, 0 );
@@ -296,7 +295,10 @@ bdb_idl_fetch_key(
                        if (ids[1] == 0) {
                                if (ids[0] != BDB_IDL_RANGE_SIZE) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "=> bdb_idl_fetch_key: range size mismatch: expected %ld, got %ld\n", BDB_IDL_RANGE_SIZE, ids[0] ));
+                                       LDAP_LOG( INDEX, ERR, 
+                                               "=> bdb_idl_fetch_key: range size mismatch: "
+                                               "expected %ld, got %ld\n", 
+                                               BDB_IDL_RANGE_SIZE, ids[0], 0 );
 #else
                                        Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: "
                                                "range size mismatch: expected %d, got %ld\n",
@@ -312,7 +314,9 @@ bdb_idl_fetch_key(
                rc2 = cursor->c_close( cursor );
                if (rc2) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_fetch_key: close failed: %s (%d)\n", db_strerror(rc2), rc2 ));
+                       LDAP_LOG( INDEX, ERR, 
+                               "bdb_idl_fetch_key: close failed: %s (%d)\n", 
+                               db_strerror(rc2), rc2, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: "
                                "close failed: %s (%d)\n", db_strerror(rc2), rc2, 0 );
@@ -333,7 +337,9 @@ bdb_idl_fetch_key(
 
        } else if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_fetch_key: get failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG( INDEX, ERR, 
+                       "bdb_idl_fetch_key: get failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: "
                        "get failed: %s (%d)\n",
@@ -344,7 +350,9 @@ bdb_idl_fetch_key(
        } else if ( data.size == 0 || data.size % sizeof( ID ) ) {
                /* size not multiple of ID size */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_fetch_key: odd size: expected %ld multiple, got %ld\n", (long) sizeof( ID ), (long) data.size ));
+               LDAP_LOG( INDEX, ERR, 
+                       "bdb_idl_fetch_key: odd size: expected %ld multiple, got %ld\n", 
+                       (long) sizeof( ID ), (long) data.size, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: "
                        "odd size: expected %ld multiple, got %ld\n",
@@ -355,7 +363,9 @@ bdb_idl_fetch_key(
        } else if ( data.size != BDB_IDL_SIZEOF(ids) ) {
                /* size mismatch */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_fetch_key: get size mismatch: expected %ld, got %ld\n", (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size ));
+               LDAP_LOG( INDEX, ERR, 
+                       "bdb_idl_fetch_key: get size mismatch: expected %ld, got %ld\n", 
+                       (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_fetch_key: "
                        "get size mismatch: expected %ld, got %ld\n",
@@ -385,7 +395,8 @@ bdb_idl_insert_key(
 #if 0
        /* for printable keys only */
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "idl", LDAP_LEVEL_ARGS, "bdb_idl_insert_key: %s %ld\n", (char *)key->data, (long) id ));
+       LDAP_LOG( INDEX, ARGS, "bdb_idl_insert_key: %s %ld\n", 
+               (char *)key->data, (long) id, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS,
                "=> bdb_idl_insert_key: %s %ld\n",
@@ -409,7 +420,9 @@ bdb_idl_insert_key(
                rc = db->cursor( db, tid, &cursor, bdb->bi_db_opflags );
                if ( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: cursor failed: %s (%d)\n", db_strerror(rc), rc ));
+                       LDAP_LOG( INDEX, ERR, 
+                               "bdb_idl_insert_key: cursor failed: %s (%d)\n", 
+                               db_strerror(rc), rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: "
                                "cursor failed: %s (%d)\n", db_strerror(rc), rc, 0 );
@@ -433,13 +446,31 @@ bdb_idl_insert_key(
                                }
                                if ( count >= BDB_IDL_DB_SIZE ) {
                                /* No room, convert to a range */
+                                       DBT key2 = *key;
+
+                                       key2.dlen = key2.ulen;
+                                       key2.flags |= DB_DBT_PARTIAL;
+
                                        lo = tmp;
                                        data.data = &hi;
-                                       rc = cursor->c_get( cursor, key, &data, DB_LAST );
-                                       if ( rc != 0 ) {
-                                               err = "c_get last";
+                                       rc = cursor->c_get( cursor, &key2, &data, DB_NEXT_NODUP );
+                                       if ( rc != 0 && rc != DB_NOTFOUND ) {
+                                               err = "c_get next_nodup";
                                                goto fail;
                                        }
+                                       if ( rc == DB_NOTFOUND ) {
+                                               rc = cursor->c_get( cursor, key, &data, DB_LAST );
+                                               if ( rc != 0 ) {
+                                                       err = "c_get last";
+                                                       goto fail;
+                                               }
+                                       } else {
+                                               rc = cursor->c_get( cursor, key, &data, DB_PREV );
+                                               if ( rc != 0 ) {
+                                                       err = "c_get prev";
+                                                       goto fail;
+                                               }
+                                       }
                                        if ( id < lo )
                                                lo = id;
                                        else if ( id > hi )
@@ -518,7 +549,9 @@ put1:                       data.data = &id;
                        /* initial c_get failed, nothing was done */
 fail:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: %s failed: %s (%d)\n", err, db_strerror(rc), rc ));
+                       LDAP_LOG( INDEX, ERR, 
+                               "bdb_idl_insert_key: %s failed: %s (%d)\n", 
+                               err, db_strerror(rc), rc );
 #else
                        Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: "
                                "%s failed: %s (%d)\n", err, db_strerror(rc), rc );
@@ -543,7 +576,8 @@ fail:
 
        } else if ( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: get failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG( INDEX, ERR, "bdb_idl_insert_key: get failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: "
                        "get failed: %s (%d)\n",
@@ -554,7 +588,9 @@ fail:
        } else if ( data.size == 0 || data.size % sizeof( ID ) ) {
                /* size not multiple of ID size */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: odd size: expected %ld multiple, got %ld\n", (long) sizeof( ID ), (long) data.size ));
+               LDAP_LOG( INDEX, ERR, 
+                       "bdb_idl_insert_key: odd size: expected %ld multiple, got %ld\n", 
+                       (long) sizeof( ID ), (long) data.size, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: "
                        "odd size: expected %ld multiple, got %ld\n",
@@ -565,7 +601,9 @@ fail:
        } else if ( data.size != BDB_IDL_SIZEOF(ids) ) {
                /* size mismatch */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: odd size: expected %ld multiple, got %ld\n", (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size ));
+               LDAP_LOG( INDEX, ERR, 
+                       "bdb_idl_insert_key: odd size: expected %ld multiple, got %ld\n", 
+                       (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: "
                        "get size mismatch: expected %ld, got %ld\n",
@@ -587,7 +625,7 @@ fail:
 
                if( rc == -1 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_DETAIL1, "bdb_idl_insert_key: dup\n" ));
+                       LDAP_LOG( INDEX, DETAIL1, "bdb_idl_insert_key: dup\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "=> bdb_idl_insert_key: dup\n",
                                0, 0, 0 );
@@ -596,7 +634,8 @@ fail:
                }
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: insert failed: (%d)\n", rc ));
+                       LDAP_LOG( INDEX, ERR, 
+                               "bdb_idl_insert_key: insert failed: (%d)\n", rc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: "
                                "bdb_idl_insert failed (%d)\n",
@@ -616,7 +655,9 @@ fail:
 
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_insert_key: put failed: (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG( INDEX, ERR, 
+                       "bdb_idl_insert_key: put failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_insert_key: "
                        "put failed: %s (%d)\n",
@@ -644,7 +685,8 @@ bdb_idl_delete_key(
 #if 0
        /* for printable keys only */
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "idl", LDAP_LEVEL_ARGS, "bdb_idl_delete_key: %s %ld\n", (char *)key->data, (long) id ));
+       LDAP_LOG( INDEX, ARGS, "bdb_idl_delete_key: %s %ld\n", 
+               (char *)key->data, (long) id, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS,
                "=> bdb_idl_delete_key: %s %ld\n",
@@ -669,7 +711,9 @@ bdb_idl_delete_key(
                rc = db->cursor( db, tid, &cursor, bdb->bi_db_opflags );
                if ( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: cursor failed: %s (%d)\n", db_strerror(rc), rc ));
+                       LDAP_LOG( INDEX, ERR, 
+                               "bdb_idl_delete_key: cursor failed: %s (%d)\n", 
+                               db_strerror(rc), rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: "
                                "cursor failed: %s (%d)\n", db_strerror(rc), rc, 0 );
@@ -752,7 +796,9 @@ bdb_idl_delete_key(
                        /* initial c_get failed, nothing was done */
 fail:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: %s failed: %s (%d)\n", err, db_strerror(rc), rc ));
+                       LDAP_LOG( INDEX, ERR, 
+                               "bdb_idl_delete_key: %s failed: %s (%d)\n", 
+                               err, db_strerror(rc), rc );
 #else
                        Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: "
                                "%s failed: %s (%d)\n", err, db_strerror(rc), rc );
@@ -772,7 +818,8 @@ fail:
 
        if ( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: get failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG( INDEX, ERR, "bdb_idl_delete_key: get failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: "
                        "get failed: %s (%d)\n",
@@ -783,7 +830,9 @@ fail:
        } else if ( data.size == 0 || data.size % sizeof( ID ) ) {
                /* size not multiple of ID size */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: odd size: expected: %ld multiple, got %ld\n", (long) sizeof( ID ), (long) data.size ));
+               LDAP_LOG( INDEX, ERR, 
+                       "bdb_idl_delete_key: odd size: expected: %ld multiple, got %ld\n", 
+                       (long) sizeof( ID ), (long) data.size, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: "
                        "odd size: expected %ld multiple, got %ld\n",
@@ -797,7 +846,9 @@ fail:
        } else if ( data.size != (1 + ids[0]) * sizeof( ID ) ) {
                /* size mismatch */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: get size mismatch: expected: %ld, got %ld\n", (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size ));
+               LDAP_LOG( INDEX, ERR, 
+                       "bdb_idl_delete_key: get size mismatch: expected: %ld, got %ld\n", 
+                       (long) ((1 + ids[0]) * sizeof( ID )), (long) data.size, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: "
                        "get size mismatch: expected %ld, got %ld\n",
@@ -810,7 +861,8 @@ fail:
 
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: delete failed: (%d)\n", rc ));
+                       LDAP_LOG( INDEX, ERR, 
+                               "bdb_idl_delete_key: delete failed: (%d)\n", rc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: "
                                "idl_delete failed (%d)\n",
@@ -824,7 +876,9 @@ fail:
                        rc = db->del( db, tid, key, 0 );
                        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: delete failed: %s (%d)\n", db_strerror(rc), rc ));
+                               LDAP_LOG( INDEX, ERR, 
+                                       "bdb_idl_delete_key: delete failed: %s (%d)\n",
+                                       db_strerror(rc), rc, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "=> bdb_idl_delete_key: "
                                        "delete failed: %s (%d)\n",
@@ -844,7 +898,8 @@ fail:
 
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR, "bdb_idl_delete_key: put failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG( INDEX, ERR, "bdb_idl_delete_key: put failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_idl_delete_key: put failed: %s (%d)\n",
diff --git a/servers/slapd/back-bdb/index.c b/servers/slapd/back-bdb/index.c
new file mode 100644 (file)
index 0000000..907b058
--- /dev/null
@@ -0,0 +1,384 @@
+/* index.c - routines for dealing with attribute indexes */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "back-bdb.h"
+#include "lutil_hash.h"
+
+static char presence_keyval[LUTIL_HASH_BYTES] = {0,0,0,1};
+static struct berval presence_key = {LUTIL_HASH_BYTES, presence_keyval};
+
+static slap_mask_t index_mask(
+       Backend *be,
+       AttributeDescription *desc,
+       char **dbname,
+       struct berval *atname )
+{
+       AttributeType *at;
+       slap_mask_t mask = 0;
+
+       bdb_attr_mask( be->be_private, desc, &mask );
+
+       if( mask ) {
+               *atname = desc->ad_cname;
+               *dbname = desc->ad_cname.bv_val;
+               return mask;
+       }
+
+       /* If there is a language tag, did we ever index the base
+        * type? If so, check for mask, otherwise it's not there.
+        */
+       if( slap_ad_is_lang( desc ) && desc != desc->ad_type->sat_ad ) {
+               /* has language tag */
+               bdb_attr_mask( be->be_private, desc->ad_type->sat_ad, &mask );
+
+               if ( mask && ( mask ^ SLAP_INDEX_NOLANG ) ) {
+                       *atname = desc->ad_type->sat_cname;
+                       *dbname = desc->ad_type->sat_cname.bv_val;
+                       return mask;
+               }
+       }
+
+       /* see if supertype defined mask for its subtypes */
+       for( at = desc->ad_type; at != NULL ; at = at->sat_sup ) {
+               /* If no AD, we've never indexed this type */
+               if ( !at->sat_ad ) continue;
+
+               bdb_attr_mask( be->be_private, at->sat_ad, &mask );
+
+               if ( mask && ( mask ^ SLAP_INDEX_NOSUBTYPES ) ) {
+                       *atname = at->sat_cname;
+                       *dbname = at->sat_cname.bv_val;
+                       return mask;
+               }
+       }
+
+       return 0;
+}
+
+int bdb_index_is_indexed(
+       Backend *be,
+       AttributeDescription *desc )
+{
+       slap_mask_t mask;
+       char *dbname;
+       struct berval prefix;
+
+       mask = index_mask( be, desc, &dbname, &prefix );
+
+       if( mask == 0 ) {
+               return LDAP_INAPPROPRIATE_MATCHING;
+       }
+
+       return LDAP_SUCCESS;
+}
+
+int bdb_index_param(
+       Backend *be,
+       AttributeDescription *desc,
+       int ftype,
+       DB **dbp,
+       slap_mask_t *maskp,
+       struct berval *prefixp )
+{
+       int rc;
+       slap_mask_t mask;
+       DB *db;
+       char *dbname;
+
+       mask = index_mask( be, desc, &dbname, prefixp );
+
+       if( mask == 0 ) {
+               return LDAP_INAPPROPRIATE_MATCHING;
+       }
+
+       rc = bdb_db_cache( be, dbname, &db );
+
+       if( rc != LDAP_SUCCESS ) {
+               return rc;
+       }
+
+       switch( ftype ) {
+       case LDAP_FILTER_PRESENT:
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_PRESENT ) ) {
+                       goto done;
+               }
+               break;
+
+       case LDAP_FILTER_APPROX:
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_APPROX ) ) {
+                       goto done;
+               }
+               /* fall thru */
+
+       case LDAP_FILTER_EQUALITY:
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_EQUALITY ) ) {
+                       goto done;
+               }
+               break;
+
+       case LDAP_FILTER_SUBSTRINGS:
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_SUBSTR ) ) {
+                       goto done;
+               }
+               break;
+
+       default:
+               return LDAP_OTHER;
+       }
+
+       return LDAP_INAPPROPRIATE_MATCHING;
+
+done:
+       *dbp = db;
+       *maskp = mask;
+       return LDAP_SUCCESS;
+}
+
+static int indexer(
+       Backend *be,
+       DB_TXN *txn,
+       char *dbname,
+       struct berval *atname,
+       BerVarray vals,
+       ID id,
+       int op,
+       slap_mask_t mask )
+{
+       int rc, i;
+       const char *text;
+       DB *db;
+       AttributeDescription *ad = NULL;
+       struct berval *keys;
+
+       assert( mask );
+
+       rc = bdb_db_cache( be, dbname, &db );
+       
+       if ( rc != LDAP_SUCCESS ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( INDEX, ERR, 
+                       "bdb_index_read: Could not open DB %s\n", dbname, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY,
+                       "<= bdb_index_read NULL (could not open %s)\n",
+                       dbname, 0, 0 );
+#endif
+               return LDAP_OTHER;
+       }
+
+       rc = slap_bv2ad( atname, &ad, &text );
+       if( rc != LDAP_SUCCESS ) return rc;
+
+       if( IS_SLAP_INDEX( mask, SLAP_INDEX_PRESENT ) ) {
+               rc = bdb_key_change( be, db, txn, &presence_key, id, op );
+               if( rc ) {
+                       goto done;
+               }
+       }
+
+       if( IS_SLAP_INDEX( mask, SLAP_INDEX_EQUALITY ) ) {
+               rc = ad->ad_type->sat_equality->smr_indexer(
+                       LDAP_FILTER_EQUALITY,
+                       mask,
+                       ad->ad_type->sat_syntax,
+                       ad->ad_type->sat_equality,
+                       atname, vals, &keys );
+
+               if( rc == LDAP_SUCCESS && keys != NULL ) {
+                       for( i=0; keys[i].bv_val != NULL; i++ ) {
+                               rc = bdb_key_change( be, db, txn, &keys[i], id, op );
+                               if( rc ) {
+                                       ber_bvarray_free( keys );
+                                       goto done;
+                               }
+                       }
+                       ber_bvarray_free( keys );
+               }
+               rc = LDAP_SUCCESS;
+       }
+
+       if( IS_SLAP_INDEX( mask, SLAP_INDEX_APPROX ) ) {
+               rc = ad->ad_type->sat_approx->smr_indexer(
+                       LDAP_FILTER_APPROX,
+                       mask,
+                       ad->ad_type->sat_syntax,
+                       ad->ad_type->sat_approx,
+                       atname, vals, &keys );
+
+               if( rc == LDAP_SUCCESS && keys != NULL ) {
+                       for( i=0; keys[i].bv_val != NULL; i++ ) {
+                               rc = bdb_key_change( be, db, txn, &keys[i], id, op );
+                               if( rc ) {
+                                       ber_bvarray_free( keys );
+                                       goto done;
+                               }
+                       }
+                       ber_bvarray_free( keys );
+               }
+
+               rc = LDAP_SUCCESS;
+       }
+
+       if( IS_SLAP_INDEX( mask, SLAP_INDEX_SUBSTR ) ) {
+               rc = ad->ad_type->sat_substr->smr_indexer(
+                       LDAP_FILTER_SUBSTRINGS,
+                       mask,
+                       ad->ad_type->sat_syntax,
+                       ad->ad_type->sat_substr,
+                       atname, vals, &keys );
+
+               if( rc == LDAP_SUCCESS && keys != NULL ) {
+                       for( i=0; keys[i].bv_val != NULL; i++ ) {
+                               bdb_key_change( be, db, txn, &keys[i], id, op );
+                               if( rc ) {
+                                       ber_bvarray_free( keys );
+                                       goto done;
+                               }
+                       }
+                       ber_bvarray_free( keys );
+               }
+
+               rc = LDAP_SUCCESS;
+       }
+
+done:
+       return rc;
+}
+
+static int index_at_values(
+       Backend *be,
+       DB_TXN *txn,
+       AttributeType *type,
+       struct berval *lang,
+       BerVarray vals,
+       ID id,
+       int op )
+{
+       int rc;
+       slap_mask_t mask = 0;
+
+       if( type->sat_sup ) {
+               /* recurse */
+               rc = index_at_values( be, txn,
+                       type->sat_sup, lang,
+                       vals, id, op );
+
+               if( rc ) return rc;
+       }
+
+       /* If this type has no AD, we've never used it before */
+       if( type->sat_ad ) {
+               bdb_attr_mask( be->be_private, type->sat_ad, &mask );
+       }
+
+       if( mask ) {
+               rc = indexer( be, txn, type->sat_cname.bv_val,
+                       &type->sat_cname,
+                       vals, id, op,
+                       mask );
+
+               if( rc ) return rc;
+       }
+
+       if( lang->bv_len ) {
+               AttributeDescription *desc;
+
+               mask = 0;
+
+               desc = ad_find_lang( type, lang );
+               if( desc ) {
+                       bdb_attr_mask( be->be_private, desc, &mask );
+               }
+
+               if( mask ) {
+                       rc = indexer( be, txn, desc->ad_cname.bv_val,
+                               &desc->ad_cname,
+                               vals, id, op,
+                               mask );
+
+                       if( rc ) {
+                               return rc;
+                       }
+               }
+       }
+
+       return LDAP_SUCCESS;
+}
+
+int bdb_index_values(
+       Backend *be,
+       DB_TXN *txn,
+       AttributeDescription *desc,
+       BerVarray vals,
+       ID id,
+       int op )
+{
+       int rc;
+
+       rc = index_at_values( be, txn,
+               desc->ad_type, &desc->ad_lang,
+               vals, id, op );
+
+       return rc;
+}
+
+int
+bdb_index_entry(
+       Backend *be,
+       DB_TXN *txn,
+       int op,
+       Entry   *e,
+       Attribute *ap )
+{
+       int rc;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( INDEX, ENTRY, "index_entry: %s (%s) %ld\n",
+               op == SLAP_INDEX_ADD_OP ? "add" : "del", e->e_dn, (long) e->e_id );
+#else
+       Debug( LDAP_DEBUG_TRACE, "=> index_entry_%s( %ld, \"%s\" )\n",
+               op == SLAP_INDEX_ADD_OP ? "add" : "del",
+               (long) e->e_id, e->e_dn );
+#endif
+
+       /* add each attribute to the indexes */
+       for ( ; ap != NULL; ap = ap->a_next ) {
+               rc = bdb_index_values( be, txn,
+                       ap->a_desc, ap->a_vals, e->e_id, op );
+
+               if( rc != LDAP_SUCCESS ) {
+#ifdef NEW_LOGGING
+                       LDAP_LOG( INDEX, ENTRY, 
+                               "index_entry: failure (%d)\n", rc, 0, 0 );
+#else
+                       Debug( LDAP_DEBUG_TRACE,
+                               "<= index_entry_%s( %ld, \"%s\" ) failure\n",
+                               op == SLAP_INDEX_ADD_OP ? "add" : "del",
+                               (long) e->e_id, e->e_dn );
+#endif
+                       return rc;
+               }
+       }
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( INDEX, ENTRY, "index_entry: success\n", 0, 0, 0  );
+#else
+       Debug( LDAP_DEBUG_TRACE, "<= index_entry_%s( %ld, \"%s\" ) success\n",
+               op == SLAP_INDEX_ADD_OP ? "add" : "del",
+               (long) e->e_id, e->e_dn );
+#endif
+
+       return LDAP_SUCCESS;
+}
index 8563b3ee83a88388177fda06395349a6d4c5835e..2a80970a46c48604c006ef59ea8523e5109a5e35 100644 (file)
@@ -61,7 +61,7 @@ bdb_db_init( BackendDB *be )
        struct bdb_info *bdb;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "init", LDAP_LEVEL_ENTRY, "bdb_db_init" ));
+       LDAP_LOG( BACK_BDB, ENTRY, "bdb_db_init", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ANY,
                "bdb_db_init: Initializing BDB database\n",
@@ -126,7 +126,8 @@ static void *lock_detect_task( void *arg )
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_init: aborted %d locks\n", aborted ));
+               LDAP_LOG( BACK_BDB, ERR, "bdb_db_init: aborted %d locks\n", 
+                       aborted, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "bdb_lock_detect: aborted %d locks\n",
@@ -171,7 +172,8 @@ bdb_db_open( BackendDB *be )
        u_int32_t flags;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "init", LDAP_LEVEL_ARGS, "bdb_db_open: %s\n", be->be_suffix[0].bv_val ));
+       LDAP_LOG( BACK_BDB, ARGS, 
+               "bdb_db_open: %s\n", be->be_suffix[0].bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS,
                "bdb_db_open: %s\n",
@@ -183,7 +185,9 @@ bdb_db_open( BackendDB *be )
        rc = db_env_create( &bdb->bi_dbenv, 0 );
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_open: db_env_create failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG( BACK_BDB, ERR, 
+                       "bdb_db_open: db_env_create failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "bdb_db_open: db_env_create failed: %s (%d)\n",
@@ -193,7 +197,12 @@ bdb_db_open( BackendDB *be )
        }
 
        flags = DB_INIT_MPOOL | DB_THREAD | DB_CREATE
-               | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_TXN | DB_RECOVER;
+               | DB_INIT_LOCK | DB_INIT_LOG | DB_INIT_TXN;
+       
+       /* Only slapd will do recovery, slap-tools won't. Otherwise
+        * running slapcat while slapd is active corrupts the db.
+        */
+       if( !(slapMode & SLAP_TOOL_MODE) ) flags |= DB_RECOVER;
 
        bdb->bi_dbenv->set_errpfx( bdb->bi_dbenv, be->be_suffix[0].bv_val );
        bdb->bi_dbenv->set_errcall( bdb->bi_dbenv, bdb_errcall );
@@ -212,7 +221,9 @@ bdb_db_open( BackendDB *be )
                rc = bdb->bi_dbenv->set_tmp_dir( bdb->bi_dbenv, dir );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_open: set_tmp_dir(%s) failed: %s (%d)\n", dir, db_strerror(rc), rc ));
+                       LDAP_LOG( BACK_BDB, ERR, 
+                               "bdb_db_open: set_tmp_dir(%s) failed: %s (%d)\n", 
+                               dir, db_strerror(rc), rc );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "bdb_db_open: set_tmp_dir(%s) failed: %s (%d)\n",
@@ -226,7 +237,9 @@ bdb_db_open( BackendDB *be )
                rc = bdb->bi_dbenv->set_lg_dir( bdb->bi_dbenv, dir );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_open: set_lg_dir(%s) failed: %s (%d)\n", dir, db_strerror(rc), rc ));
+                       LDAP_LOG( BACK_BDB, ERR, 
+                               "bdb_db_open: set_lg_dir(%s) failed: %s (%d)\n", 
+                               dir, db_strerror(rc), rc );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "bdb_db_open: set_lg_dir(%s) failed: %s (%d)\n",
@@ -240,7 +253,9 @@ bdb_db_open( BackendDB *be )
                rc = bdb->bi_dbenv->set_data_dir( bdb->bi_dbenv, dir );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_open: set_data_dir(%s) failed: %s (%d)\n", dir, db_strerror(rc), rc ));
+                       LDAP_LOG( BACK_BDB, ERR, 
+                               "bdb_db_open: set_data_dir(%s) failed: %s (%d)\n",
+                               dir, db_strerror(rc), rc );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "bdb_db_open: set_data_dir(%s) failed: %s (%d)\n",
@@ -252,7 +267,8 @@ bdb_db_open( BackendDB *be )
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "init", LDAP_LEVEL_DETAIL1, "bdb_db_open: dbenv_open %s\n", bdb->bi_dbenv_home ));
+       LDAP_LOG( BACK_BDB, DETAIL1, 
+               "bdb_db_open: dbenv_open %s\n", bdb->bi_dbenv_home, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "bdb_db_open: dbenv_open(%s)\n",
@@ -265,7 +281,9 @@ bdb_db_open( BackendDB *be )
                bdb->bi_dbenv_mode );
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_open: dbenv_open failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG( BACK_BDB, ERR, 
+                       "bdb_db_open: dbenv_open failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "bdb_db_open: dbenv_open failed: %s (%d)\n",
@@ -279,7 +297,9 @@ bdb_db_open( BackendDB *be )
                        bdb->bi_dbenv_xflags, 1);
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_open: dbenv_set_flags failed: %s (%d)\n", db_strerror(rc), rc ));
+                       LDAP_LOG( BACK_BDB, ERR, 
+                               "bdb_db_open: dbenv_set_flags failed: %s (%d)\n", 
+                               db_strerror(rc), rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "bdb_db_open: dbenv_set_flags failed: %s (%d)\n",
@@ -303,7 +323,9 @@ bdb_db_open( BackendDB *be )
                rc = db_create( &db->bdi_db, bdb->bi_dbenv, 0 );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_open: db_create(%s) failed: %s (%d)\n", bdb->bi_dbenv_home, db_strerror(rc), rc ));
+                       LDAP_LOG( BACK_BDB, ERR, 
+                               "bdb_db_open: db_create(%s) failed: %s (%d)\n", 
+                               bdb->bi_dbenv_home, db_strerror(rc), rc );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "bdb_db_open: db_create(%s) failed: %s (%d)\n",
@@ -340,7 +362,9 @@ bdb_db_open( BackendDB *be )
 
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_open: db_create(%s) failed: %s (%d)\n", bdb->bi_dbenv_home, db_strerror(rc), rc ));
+                       LDAP_LOG( BACK_BDB, ERR, 
+                               "bdb_db_open: db_create(%s) failed: %s (%d)\n", 
+                               bdb->bi_dbenv_home, db_strerror(rc), rc );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "bdb_db_open: db_open(%s) failed: %s (%d)\n",
@@ -360,7 +384,9 @@ bdb_db_open( BackendDB *be )
        rc = bdb_last_id( be, NULL );
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_open: last_id(%s) failed: %s (%d)\n", bdb->bi_dbenv_home, db_strerror(rc), rc ));
+                       LDAP_LOG( BACK_BDB, ERR, 
+                               "bdb_db_open: last_id(%s) failed: %s (%d)\n", 
+                               bdb->bi_dbenv_home, db_strerror(rc), rc );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "bdb_db_open: last_id(%s) failed: %s (%d)\n",
@@ -419,7 +445,9 @@ bdb_db_destroy( BackendDB *be )
                rc = TXN_CHECKPOINT( bdb->bi_dbenv, 0, 0, DB_FORCE );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_destroy: txn_checkpoint failed: %s (%d)\n", db_strerror(rc), rc ));
+                       LDAP_LOG( BACK_BDB, ERR, 
+                               "bdb_db_destroy: txn_checkpoint failed: %s (%d)\n",
+                               db_strerror(rc), rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "bdb_db_destroy: txn_checkpoint failed: %s (%d)\n",
@@ -433,7 +461,9 @@ bdb_db_destroy( BackendDB *be )
                bdb->bi_dbenv = NULL;
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_destroy: close failed: %s (%d)\n", db_strerror(rc), rc ));
+                       LDAP_LOG( BACK_BDB, ERR, 
+                               "bdb_db_destroy: close failed: %s (%d)\n", 
+                               db_strerror(rc), rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "bdb_db_destroy: close failed: %s (%d)\n",
@@ -490,7 +520,7 @@ bdb_initialize(
 
        /* initialize the underlying database system */
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "init", LDAP_LEVEL_ENTRY, "bdb_db_initialize\n" ));
+       LDAP_LOG( BACK_BDB, ENTRY, "bdb_db_initialize\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "bdb_open: initialize BDB backend\n",
                0, 0, 0 );
@@ -505,7 +535,9 @@ bdb_initialize(
                        patch < DB_VERSION_PATCH )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "init", LDAP_LEVEL_ERR, "bdb_db_initialize: version mismatch: \texpected: %s \tgot: %s\n", DB_VERSION_STRING, version ));
+                       LDAP_LOG( BACK_BDB, ERR, 
+                               "bdb_db_initialize: version mismatch: "
+                               "\texpected: %s \tgot: %s\n", DB_VERSION_STRING, version, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "bdb_open: version mismatch\n"
@@ -515,7 +547,8 @@ bdb_initialize(
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "init", LDAP_LEVEL_DETAIL1, "bdb_db_initialize: bdb_open: %s\n", version ));
+               LDAP_LOG( BACK_BDB, DETAIL1, 
+                       "bdb_db_initialize: bdb_open: %s\n", version, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "bdb_open: %s\n",
                        version, 0, 0 );
index a6b490f101cac5f2d2dcdc9f9e50987a9020face..46371dc519125a00ceb0e0b604787f1bda7c1662 100644 (file)
@@ -30,8 +30,7 @@ bdb_key_read(
        DBT key;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "index", LDAP_LEVEL_ENTRY,
-               "key_read: enter\n" ));
+       LDAP_LOG( INDEX, ENTRY, "key_read: enter\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> key_read\n", 0, 0, 0 );
 #endif
@@ -45,17 +44,15 @@ bdb_key_read(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "index", LDAP_LEVEL_ERR,
-                       "bdb_key_read: failed (%d)\n",
-                       rc ));
+               LDAP_LOG( INDEX, ERR, "bdb_key_read: failed (%d)\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "<= bdb_index_read: failed (%d)\n",
                        rc, 0, 0 );
 #endif
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "index", LDAP_LEVEL_DETAIL1,
-                       "bdb_key_read: %ld candidates\n", (long) BDB_IDL_N(ids) ));
+               LDAP_LOG( INDEX, DETAIL1, 
+                       "bdb_key_read: %ld candidates\n", (long)BDB_IDL_N(ids), 0, 0);
 #else
                Debug( LDAP_DEBUG_TRACE, "<= bdb_index_read %ld candidates\n",
                        (long) BDB_IDL_N(ids), 0, 0 );
@@ -80,9 +77,8 @@ bdb_key_change(
        DBT     key;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "index", LDAP_LEVEL_DETAIL1,
-               "key_change: %s ID %lx\n",
-               op == SLAP_INDEX_ADD_OP ? "Add" : "Delete", (long) id ));
+       LDAP_LOG( INDEX, ENTRY, "key_change: %s ID %lx\n",
+               op == SLAP_INDEX_ADD_OP ? "Add" : "Delete", (long) id, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> key_change(%s,%lx)\n",
                op == SLAP_INDEX_ADD_OP ? "ADD":"DELETE", (long) id, 0 );
@@ -103,8 +99,7 @@ bdb_key_change(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "index", LDAP_LEVEL_RESULTS,
-               "key_change: return %d\n", rc ));
+       LDAP_LOG( INDEX, RESULTS, "key_change: return %d\n", rc, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= key_change %d\n", rc, 0, 0 );
 #endif
index a6c80c3992387031425be0e5a378714532c7f43c..4f052e404ce7ad154f40c28389826ffcb1552116 100644 (file)
@@ -32,7 +32,8 @@ int bdb_modify_internal(
        Attribute       *ap;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "modify", LDAP_LEVEL_ENTRY,"bdb_modify_internal: 0x%08lx: %s\n", e->e_id, e->e_dn ));
+       LDAP_LOG ( OPERATION, ENTRY, "bdb_modify_internal: 0x%08lx: %s\n", 
+               e->e_id, e->e_dn, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "bdb_modify_internal: 0x%08lx: %s\n",
                e->e_id, e->e_dn, 0);
@@ -51,14 +52,15 @@ int bdb_modify_internal(
                switch ( mod->sm_op ) {
                case LDAP_MOD_ADD:
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modify", LDAP_LEVEL_DETAIL1, "bdb_modify_internal: add\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, "bdb_modify_internal: add\n", 0,0,0);
 #else
                        Debug(LDAP_DEBUG_ARGS, "bdb_modify_internal: add\n", 0, 0, 0);
 #endif
                        err = modify_add_values( e, mod, text, textbuf, textlen );
                        if( err != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify_internal: %d %s\n", err, *text ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "bdb_modify_internal: %d %s\n", err, *text, 0 );
 #else
                                Debug(LDAP_DEBUG_ARGS, "bdb_modify_internal: %d %s\n",
                                        err, *text, 0);
@@ -68,7 +70,8 @@ int bdb_modify_internal(
 
                case LDAP_MOD_DELETE:
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modify", LDAP_LEVEL_DETAIL1, "bdb_modify_internal: delete\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "bdb_modify_internal: delete\n", 0, 0, 0 );
 #else
                        Debug(LDAP_DEBUG_ARGS, "bdb_modify_internal: delete\n", 0, 0, 0);
 #endif
@@ -76,7 +79,8 @@ int bdb_modify_internal(
                        assert( err != LDAP_TYPE_OR_VALUE_EXISTS );
                        if( err != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify_internal: %d %s\n", err, *text ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "bdb_modify_internal: %d %s\n", err, *text, 0 );
 #else
                                Debug(LDAP_DEBUG_ARGS, "bdb_modify_internal: %d %s\n",
                                        err, *text, 0);
@@ -86,14 +90,16 @@ int bdb_modify_internal(
 
                case LDAP_MOD_REPLACE:
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modify", LDAP_LEVEL_DETAIL1, "bdb_modify_internal: replace\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "bdb_modify_internal: replace\n", 0, 0, 0 );
 #else
                        Debug(LDAP_DEBUG_ARGS, "bdb_modify_internal: replace\n", 0, 0, 0);
 #endif
                        err = modify_replace_values( e, mod, text, textbuf, textlen );
                        if( err != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify_internal: %d %s\n", err, *text ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "bdb_modify_internal: %d %s\n", err, *text, 0 );
 #else
                                Debug(LDAP_DEBUG_ARGS, "bdb_modify_internal: %d %s\n",
                                        err, *text, 0);
@@ -103,7 +109,8 @@ int bdb_modify_internal(
 
                case SLAP_MOD_SOFTADD:
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modify", LDAP_LEVEL_DETAIL1, "bdb_modify_internal: softadd\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "bdb_modify_internal: softadd\n",0,0,0 );
 #else
                        Debug(LDAP_DEBUG_ARGS, "bdb_modify_internal: softadd\n", 0, 0, 0);
 #endif
@@ -119,7 +126,8 @@ int bdb_modify_internal(
 
                        if( err != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify_internal: %d %s\n", err, *text ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "bdb_modify_internal: %d %s\n", err, *text, 0 );
 #else
                                Debug(LDAP_DEBUG_ARGS, "bdb_modify_internal: %d %s\n",
                                        err, *text, 0);
@@ -129,7 +137,8 @@ int bdb_modify_internal(
 
                default:
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify_internal: invalid op %d\n", mod->sm_op ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "bdb_modify_internal: invalid op %d\n", mod->sm_op, 0, 0 );
 #else
                        Debug(LDAP_DEBUG_ANY, "bdb_modify_internal: invalid op %d\n",
                                mod->sm_op, 0, 0);
@@ -137,7 +146,8 @@ int bdb_modify_internal(
                        *text = "Invalid modify operation";
                        err = LDAP_OTHER;
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify_internal: %d %s\n", err, *text ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "bdb_modify_internal: %d %s\n", err, *text, 0 );
 #else
                        Debug(LDAP_DEBUG_ARGS, "bdb_modify_internal: %d %s\n",
                                err, *text, 0);
@@ -173,7 +183,9 @@ int bdb_modify_internal(
                attrs_free( e->e_attrs );
                e->e_attrs = save_attrs;
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify_internal: entry failed schema check %s\n", *text ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "bdb_modify_internal: entry failed schema check %s\n", 
+                                       *text, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "entry failed schema check: %s\n",
                        *text, 0, 0 );
@@ -192,7 +204,9 @@ int bdb_modify_internal(
                                attrs_free( e->e_attrs );
                                e->e_attrs = save_attrs;
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify_internal: attribute index delete failure\n" ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "bdb_modify_internal: attribute index delete failure\n",
+                                       0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                       "Attribute index delete failure",
@@ -213,7 +227,9 @@ int bdb_modify_internal(
                                attrs_free( e->e_attrs );
                                e->e_attrs = save_attrs;
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify_internal: attribute index add failure\n" ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "bdb_modify_internal: attribute index add failure\n", 
+                                       0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                       "Attribute index add failure",
@@ -253,7 +269,7 @@ bdb_modify(
        DB_LOCK         lock;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "modify", LDAP_LEVEL_ENTRY, "bdb_modify: %s\n", dn->bv_val ));
+       LDAP_LOG ( OPERATION, ENTRY, "bdb_modify: %s\n", dn->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "bdb_modify: %s\n", dn->bv_val, 0, 0 );
 #endif
@@ -265,7 +281,7 @@ retry:      /* transaction retry */
                        bdb_unlocked_cache_return_entry_w(&bdb->bi_cache, e);
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modify", LDAP_LEVEL_DETAIL1, "bdb_modify: retrying...\n" ));
+               LDAP_LOG ( OPERATION, DETAIL1, "bdb_modify: retrying...\n", 0, 0, 0 );
 #else
                Debug(LDAP_DEBUG_TRACE,
                        "bdb_modify: retrying...\n", 0, 0, 0);
@@ -287,7 +303,8 @@ retry:      /* transaction retry */
        text = NULL;
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modify", LDAP_LEVEL_DETAIL1, "bdb_modify: txn_begin failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "bdb_modify: txn_begin failed: %s (%d)\n", db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modify: txn_begin failed: %s (%d)\n",
@@ -310,7 +327,8 @@ retry:      /* transaction retry */
 
        if ( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modify", LDAP_LEVEL_DETAIL1, "bdb_modify: dn2entry failed: (%d)\n", rc ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "bdb_modify: dn2entry failed: (%d)\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modify: dn2entry failed (%d)\n",
@@ -365,7 +383,7 @@ retry:      /* transaction retry */
                        conn, op, e );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modify", LDAP_LEVEL_DETAIL1, "bdb_modify: entry is referral\n" ));
+               LDAP_LOG ( OPERATION, DETAIL1, "bdb_modify: entry is referral\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modify: entry is referral\n",
@@ -385,7 +403,8 @@ retry:      /* transaction retry */
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify: modify failed (%d)\n", rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_modify: modify failed (%d)\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modify: modify failed (%d)\n",
@@ -403,7 +422,8 @@ retry:      /* transaction retry */
        rc = bdb_id2entry_update( be, ltid, e );
        if ( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify: id2entry update failed (%d)\n", rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_modify: id2entry update failed (%d)\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modify: id2entry update failed (%d)\n",
@@ -428,7 +448,9 @@ retry:      /* transaction retry */
 
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modify", LDAP_LEVEL_ERR, "bdb_modify: txn_%s failed %s (%d)\n", op->o_noop ? "abort (no_op)" : "commit", db_strerror(rc), rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_modify: txn_%s failed %s (%d)\n", 
+                       op->o_noop ? "abort (no_op)" : "commit", db_strerror(rc), rc );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modify: txn_%s failed: %s (%d)\n",
@@ -440,7 +462,9 @@ retry:      /* transaction retry */
 
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modify", LDAP_LEVEL_DETAIL1, "bdb_modify: updated%s id=%08lx dn=\"%s\"\n", op->o_noop ? " (no_op)" : "", e->e_id, e->e_dn ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "bdb_modify: updated%s id=%08lx dn=\"%s\"\n", 
+                       op->o_noop ? " (no_op)" : "", e->e_id, e->e_dn );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modify: updated%s id=%08lx dn=\"%s\"\n",
index 439fcc2b5de47df2dca37c46af60cc96ffe7398d..da4ab3ec95b9e11bda48e4c8a4166554c5d6b649 100644 (file)
@@ -60,9 +60,8 @@ bdb_modrdn(
        DB_LOCK         lock;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "modrdn", LDAP_LEVEL_ENTRY, "==>bdb_modrdn(%s,%s,%s)\n",
-               dn->bv_val,newrdn->bv_val,
-               newSuperior ? newSuperior->bv_val : "NULL" ));
+       LDAP_LOG ( OPERATION, ENTRY, "==>bdb_modrdn(%s,%s,%s)\n", 
+               dn->bv_val,newrdn->bv_val, newSuperior ? newSuperior->bv_val : "NULL" );
 #else
        Debug( LDAP_DEBUG_TRACE, "==>bdb_modrdn(%s,%s,%s)\n",
                dn->bv_val, newrdn->bv_val,
@@ -90,7 +89,7 @@ retry:        /* transaction retry */
                        bdb_unlocked_cache_return_entry_r(&bdb->bi_cache, np);
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: retrying...\n"));
+               LDAP_LOG ( OPERATION, DETAIL1, "==>bdb_modrdn: retrying...\n", 0, 0, 0);
 #else
                Debug( LDAP_DEBUG_TRACE, "==>bdb_modrdn: retrying...\n", 0, 0, 0 );
 #endif
@@ -111,7 +110,9 @@ retry:      /* transaction retry */
        text = NULL;
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "==>bdb_modrdn: txn_begin failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "==>bdb_modrdn: txn_begin failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_delete: txn_begin failed: %s (%d)\n",
@@ -181,7 +182,8 @@ retry:      /* transaction retry */
                        conn, op, e );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: entry %s is referral \n", e->e_dn ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "==>bdb_modrdn: entry %s is referral \n", e->e_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "bdb_modrdn: entry %s is referral\n",
                        e->e_dn, 0, 0 );
@@ -224,7 +226,8 @@ retry:      /* transaction retry */
 
                if( p == NULL) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "==>bdb_modrdn: parent does not exist\n" ));
+                       LDAP_LOG ( OPERATION, ERR, 
+                               "==>bdb_modrdn: parent does not exist\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "bdb_modrdn: parent does not exist\n",
                                0, 0, 0);
@@ -238,7 +241,8 @@ retry:      /* transaction retry */
                        children, NULL, ACL_WRITE, NULL ) )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "==>bdb_modrdn: no access to parent\n" ));
+                       LDAP_LOG ( OPERATION, ERR, 
+                               "==>bdb_modrdn: no access to parent\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "no access to parent\n", 0,
                                0, 0 );
@@ -249,7 +253,8 @@ retry:      /* transaction retry */
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: wr to children %s is OK\n", p_ndn.bv_val ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "==>bdb_modrdn: wr to children %s is OK\n", p_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modrdn: wr to children of entry %s OK\n",
@@ -263,7 +268,8 @@ retry:      /* transaction retry */
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: parent dn=%s\n", p_dn.bv_val ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "==>bdb_modrdn: parent dn=%s\n", p_dn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modrdn: parent dn=%s\n",
@@ -288,7 +294,8 @@ retry:      /* transaction retry */
                                if ( ! rc )
                                {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "==>bdb_modrdn: no access to parent\n" ));
+                                       LDAP_LOG ( OPERATION, ERR, 
+                                               "==>bdb_modrdn: no access to parent\n", 0, 0, 0 );
 #else
                                        Debug( LDAP_DEBUG_TRACE, 
                                                "no access to parent\n", 
@@ -301,7 +308,9 @@ retry:      /* transaction retry */
                                }
 
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: wr to children of entry \"\" OK\n", p_dn.bv_val ));
+                               LDAP_LOG ( OPERATION, DETAIL1, 
+                                       "==>bdb_modrdn: wr to children of entry \"%s\" OK\n", 
+                                       p_dn.bv_val, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_modrdn: wr to children of entry \"\" OK\n",
@@ -312,7 +321,8 @@ retry:      /* transaction retry */
                                p_dn.bv_len = 0;
 
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: parent dn=\"\" \n" ));
+                               LDAP_LOG ( OPERATION, DETAIL1, 
+                                       "==>bdb_modrdn: parent dn=\"\" \n", 0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_modrdn: parent dn=\"\"\n",
@@ -321,7 +331,9 @@ retry:      /* transaction retry */
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "==>bdb_modrdn: no parent, not root &\"\" is not suffix\n" ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "==>bdb_modrdn: no parent, not root &\"\" is not "
+                                       "suffix\n", 0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_modrdn: no parent, not root "
@@ -338,7 +350,9 @@ retry:      /* transaction retry */
 
        if ( newSuperior != NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: new parent \"%s\" requested...\n", newSuperior->bv_val ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "==>bdb_modrdn: new parent \"%s\" requested...\n", 
+                       newSuperior->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, 
                        "bdb_modrdn: new parent \"%s\" requested...\n",
@@ -373,7 +387,9 @@ retry:      /* transaction retry */
 
                        if( np == NULL) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: newSup(ndn=%s) not here!\n", np_ndn->bv_val ));
+                               LDAP_LOG ( OPERATION, DETAIL1, 
+                                       "==>bdb_modrdn: newSup(ndn=%s) not here!\n", 
+                                       np_ndn->bv_val, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_modrdn: newSup(ndn=%s) not here!\n",
@@ -384,7 +400,9 @@ retry:      /* transaction retry */
                        }
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: wr to new parent OK np=%p, id=%ld\n", np, (long) np->e_id ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "==>bdb_modrdn: wr to new parent OK np=%p, id=%ld\n", 
+                               np, (long) np->e_id, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "bdb_modrdn: wr to new parent OK np=%p, id=%ld\n",
@@ -394,7 +412,8 @@ retry:      /* transaction retry */
                        /* check newSuperior for "children" acl */
                        if ( !access_allowed( be, conn, op, np, children, NULL, ACL_WRITE, NULL ) ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: no wr to newSup children\n" ));
+                               LDAP_LOG ( OPERATION, DETAIL1, 
+                                       "==>bdb_modrdn: no wr to newSup children\n", 0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_modrdn: no wr to newSup children\n",
@@ -408,7 +427,8 @@ retry:      /* transaction retry */
                        if ( is_entry_alias( np ) ) {
                                /* parent is an alias, don't allow add */
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: entry is alias\n" ));
+                               LDAP_LOG ( OPERATION, DETAIL1, 
+                                       "==>bdb_modrdn: entry is alias\n", 0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE, "bdb_modrdn: entry is alias\n",
                                        0, 0, 0 );
@@ -422,7 +442,8 @@ retry:      /* transaction retry */
                        if ( is_entry_referral( np ) ) {
                                /* parent is a referral, don't allow add */
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "==>bdb_modrdn: entry is referral\n" ));
+                               LDAP_LOG ( OPERATION, DETAIL1, 
+                                       "==>bdb_modrdn: entry is referral\n", 0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE, "bdb_modrdn: entry is referral\n",
                                        0, 0, 0 );
@@ -454,7 +475,8 @@ retry:      /* transaction retry */
                                        if ( ! rc )
                                        {
 #ifdef NEW_LOGGING
-                                               LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "==>bdb_modrdn: no access to superior\n" ));
+                                               LDAP_LOG ( OPERATION, ERR, 
+                                                       "==>bdb_modrdn: no access to superior\n", 0, 0, 0 );
 #else
                                                Debug( LDAP_DEBUG_TRACE, 
                                                        "no access to new superior\n", 
@@ -467,7 +489,8 @@ retry:      /* transaction retry */
                                        }
 
 #ifdef NEW_LOGGING
-                                       LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "bdb_modrdn: wr to children entry \"\" OK\n" ));
+                                       LDAP_LOG ( OPERATION, DETAIL1, 
+                                               "bdb_modrdn: wr to children entry \"\" OK\n", 0, 0, 0 );
 #else
                                        Debug( LDAP_DEBUG_TRACE,
                                                "bdb_modrdn: wr to children of entry \"\" OK\n",
@@ -476,7 +499,9 @@ retry:      /* transaction retry */
                
                                } else {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "bdb_modrdn: new superior=\"\", not root & \"\" is not suffix\n" ));
+                                       LDAP_LOG ( OPERATION, ERR, 
+                                               "bdb_modrdn: new superior=\"\", not root & \"\" "
+                                               "is not suffix\n", 0, 0, 0 );
 #else
                                        Debug( LDAP_DEBUG_TRACE,
                                                "bdb_modrdn: new superior=\"\", not root "
@@ -489,7 +514,8 @@ retry:      /* transaction retry */
                        }
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "bdb_modrdn: new superior=\"\"\n" ));
+                       LDAP_LOG ( OPERATION, DETAIL1, 
+                               "bdb_modrdn: new superior=\"\"\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "bdb_modrdn: new superior=\"\"\n",
@@ -498,7 +524,8 @@ retry:      /* transaction retry */
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_DETAIL1, "bdb_modrdn: wr to new parent's children OK\n" ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "bdb_modrdn: wr to new parent's children OK\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modrdn: wr to new parent's children OK\n",
@@ -514,7 +541,8 @@ retry:      /* transaction retry */
        dnNormalize2( NULL, &new_dn, &new_ndn );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "modrdn", LDAP_LEVEL_RESULTS, "bdb_modrdn: new ndn=%s\n", new_ndn.bv_val ));
+       LDAP_LOG ( OPERATION, RESULTS, 
+               "bdb_modrdn: new ndn=%s\n", new_ndn.bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "bdb_modrdn: new ndn=%s\n",
                new_ndn.bv_val, 0, 0 );
@@ -537,7 +565,8 @@ retry:      /* transaction retry */
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "bdb_modrdn: new ndn=%s does not exist\n", new_ndn.bv_val ));
+       LDAP_LOG ( OPERATION, ERR, 
+               "bdb_modrdn: new ndn=%s does not exist\n", new_ndn.bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "bdb_modrdn: new ndn=%s does not exist\n",
@@ -551,7 +580,9 @@ retry:      /* transaction retry */
                LDAP_DN_FORMAT_LDAP ) )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "bdb_modrdn: can't figure out type(s)/values(s) of newrdn\n" ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_modrdn: can't figure out type(s)/values(s) of newrdn\n", 
+                       0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modrdn: can't figure out type(s)/values(s) "
@@ -563,7 +594,9 @@ retry:      /* transaction retry */
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "modrdn", LDAP_LEVEL_RESULTS, "bdb_modrdn: new_rdn_type=\"%s\", new_rdn_val=\"%s\"\n", new_rdn[0][0]->la_attr.bv_val, new_rdn[0][0]->la_value.bv_val ));
+       LDAP_LOG ( OPERATION, RESULTS, 
+               "bdb_modrdn: new_rdn_type=\"%s\", new_rdn_val=\"%s\"\n",
+               new_rdn[0][0]->la_attr.bv_val, new_rdn[0][0]->la_value.bv_val, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "bdb_modrdn: new_rdn_type=\"%s\", new_rdn_val=\"%s\"\n",
@@ -574,7 +607,9 @@ retry:      /* transaction retry */
                LDAP_DN_FORMAT_LDAP ) )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "bdb_modrdn: can't figure out type(s)/values(s) of old_rdn\n" ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_modrdn: can't figure out type(s)/values(s) of old_rdn\n", 
+                       0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_back_modrdn: can't figure out the old_rdn "
@@ -591,7 +626,9 @@ retry:      /* transaction retry */
                                ( const char ** )new_rdn_types ) != 0 ) {
                /* Not a big deal but we may say something */
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "bdb_modrdn: old_rdn_type(s)=%s, new_rdn_type(s)=%s do not match\n", old_rdn_types[ 0 ], new_rdn_types[ 0 ] ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_modrdn: old_rdn_type(s)=%s, new_rdn_type(s)=%s do not match\n",
+                   old_rdn_types[ 0 ], new_rdn_types[ 0 ], 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_modrdn: old_rdn_type(s)=%s, new_rdn_type(s)=%s "
@@ -611,7 +648,8 @@ retry:      /* transaction retry */
 
                if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "bdb_modrdn: %s: %s (new)\n", text, new_rdn[0][a_cnt]->la_attr.bv_val ));
+                       LDAP_LOG ( OPERATION, ERR, "bdb_modrdn: %s: %s (new)\n", 
+                               text, new_rdn[0][a_cnt]->la_attr.bv_val, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "bdb_modrdn: %s: %s (new)\n",
@@ -624,7 +662,9 @@ retry:      /* transaction retry */
                if ( !access_allowed( be, conn, op, e, desc,
                        &new_rdn[0][ a_cnt ]->la_value, ACL_WRITE, NULL ) ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "bdb_modrdn: access to attr \"%s\" (new) not allowed\n", new_rdn[0][a_cnt]->la_attr.bv_val ));
+                       LDAP_LOG ( OPERATION, ERR, 
+                               "bdb_modrdn: access to attr \"%s\" (new) not allowed\n", 
+                               new_rdn[0][a_cnt]->la_attr.bv_val, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "bdb_modrdn: access to attr \"%s\" "
@@ -652,7 +692,9 @@ retry:      /* transaction retry */
                /* Get value of old rdn */
                if ( old_rdn == NULL) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "bdb_modrdn: can't figure out old RDN values(s) from old RDN\n" ));
+                       LDAP_LOG ( OPERATION, ERR, 
+                               "bdb_modrdn: can't figure out old RDN values(s) "
+                               "from old RDN\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "bdb_modrdn: can't figure out old RDN value(s) "
@@ -673,7 +715,8 @@ retry:      /* transaction retry */
 
                        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "bdb_modrdn: %s: %s (old)\n", text, old_rdn[0][d_cnt]->la_attr.bv_val ));
+                               LDAP_LOG ( OPERATION, ERR, "bdb_modrdn: %s: %s (old)\n", 
+                                       text, old_rdn[0][d_cnt]->la_attr.bv_val, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_modrdn: %s: %s (old)\n",
@@ -686,7 +729,9 @@ retry:      /* transaction retry */
                        if ( !access_allowed( be, conn, op, e, desc,
                                &old_rdn[0][d_cnt]->la_value, ACL_WRITE, NULL ) ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "modrdn", LDAP_LEVEL_ERR, "bdb_modrdn: access to attr \"%s\" (old) not allowed\n", old_rdn[0][d_cnt]->la_attr.bv_val ));
+                               LDAP_LOG ( OPERATION, ERR, 
+                                       "bdb_modrdn: access to attr \"%s\" (old) not allowed\n", 
+                                       old_rdn[0][d_cnt]->la_attr.bv_val, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_modrdn: access to attr \"%s\" "
@@ -813,7 +858,9 @@ retry:      /* transaction retry */
  
        if( rc == LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_RESULTS, "bdb_modrdn: rdn modified%s id=%08lx dn=\"%s\"\n", op->o_noop ? " (no-op)" : "", e->e_id, e->e_dn ));
+               LDAP_LOG ( OPERATION, RESULTS, 
+                       "bdb_modrdn: rdn modified%s id=%08lx dn=\"%s\"\n", 
+                       op->o_noop ? " (no-op)" : "", e->e_id, e->e_dn );
 #else
                Debug(LDAP_DEBUG_TRACE,
                        "bdb_modrdn: rdn modified%s id=%08lx dn=\"%s\"\n",
@@ -824,7 +871,8 @@ retry:      /* transaction retry */
 
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "modrdn", LDAP_LEVEL_RESULTS, "bdb_modrdn: %s : %s (%d)\n", text, db_strerror(rc), rc ));
+               LDAP_LOG ( OPERATION, RESULTS, "bdb_modrdn: %s : %s (%d)\n", 
+                       text, db_strerror(rc), rc );
 #else
                Debug( LDAP_DEBUG_TRACE, "bdb_add: %s : %s (%d)\n",
                        text, db_strerror(rc), rc );
index f5d0e618b17508df03e4b6e47f82f37fcc9da5df..b9e4151b34aa715c2b2b1a72f9baff38f6591e5a 100644 (file)
@@ -58,9 +58,8 @@ int bdb_last_id( BackendDB *be, DB_TXN *tid )
 
        default:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "nextid", LDAP_LEVEL_ERR, 
-                       "bdb_last_id: get failed: %s (%d)\n",
-                       db_strerror(rc), rc ));
+               LDAP_LOG ( INDEX, ERR, "bdb_last_id: get failed: %s (%d)\n",
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_last_id: get failed: %s (%d)\n",
index 9cff5cb3fc42316eced86b2192872d310e0372f9..cfcf17cdb3d02ec46f62cdd2c1354923b7ffca93 100644 (file)
@@ -33,7 +33,7 @@ bdb_operational(
        Attribute       **aa = a;
        int             rc;
        DB_TXN          *ltid = NULL;
-        struct bdb_op_info opinfo;
+    struct bdb_op_info opinfo;
        
        assert( e );
 
@@ -50,8 +50,8 @@ retry:        /* transaction retry */
                }
 #endif
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "operational", LDAP_LEVEL_DETAIL1,
-                       "=> bdb_operational: retrying...\n" ));
+               LDAP_LOG ( OPERATION, DETAIL1, 
+                       "=> bdb_operational: retrying...\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "==> bdb_operational: retrying...\n", 
                                0, 0, 0 );
@@ -70,9 +70,9 @@ retry:        /* transaction retry */
        rc = TXN_BEGIN( bdb->bi_dbenv, NULL, &ltid, bdb->bi_db_opflags );
        if ( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "operational", LDAP_LEVEL_ERR,
+               LDAP_LOG ( OPERATION, ERR, 
                        "=> bdb_operational: txn_begin failed: %s (%d)\n",
-                        db_strerror(rc), rc ));
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_operational: txn_begin failed: %s (%d)\n",
@@ -104,9 +104,9 @@ retry:      /* transaction retry */
 
        default:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "operational", LDAP_LEVEL_ERR,
+               LDAP_LOG ( OPERATION, ERR, 
                        "=> bdb_operational: has_children failed: %s (%d)\n",
-                        db_strerror(rc), rc ));
+                       db_strerror(rc), rc, 0 );
 #else
                Debug(LDAP_DEBUG_ARGS, 
                        "<=- bdb_operational: has_children failed: %s (%d)\n", 
index 25f0c654ed7513a2184c6684b29b49dc0af7abc9..17d54cacc5a733022e1a2d18e0d5cc17a4040e53 100644 (file)
@@ -51,8 +51,8 @@ bdb_exop_passwd(
                &id, NULL, &new, text );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "passwd", LDAP_LEVEL_ENTRY, "==>bdb_exop_passwd: \"%s\"\n",
-               id.bv_val ? id.bv_val : "" ));
+       LDAP_LOG ( ACL, ENTRY, 
+               "==>bdb_exop_passwd: \"%s\"\n", id.bv_val ? id.bv_val : "", 0, 0  );
 #else
        Debug( LDAP_DEBUG_ARGS, "==> bdb_exop_passwd: \"%s\"\n",
                id.bv_val ? id.bv_val : "", 0, 0 );
@@ -89,8 +89,8 @@ bdb_exop_passwd(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "passwd", LDAP_LEVEL_DETAIL1, "bdb_exop_passwd: \"%s\"%s\"\n",
-               dn.bv_val, id.bv_len ? " (proxy)" : "" ));
+       LDAP_LOG ( ACL, DETAIL1, "bdb_exop_passwd: \"%s\"%s\"\n",
+               dn.bv_val, id.bv_len ? " (proxy)" : "", 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "bdb_exop_passwd: \"%s\"%s\n",
                dn.bv_val, id.bv_len ? " (proxy)" : "", 0 );
@@ -115,7 +115,7 @@ retry:      /* transaction retry */
                        bdb_cache_return_entry_w(bdb->bi_dbenv, &bdb->bi_cache, e, &lock);
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "passwd", LDAP_LEVEL_DETAIL1, "bdb_exop_passwd: retrying...\n" ));
+               LDAP_LOG ( ACL, DETAIL1, "bdb_exop_passwd: retrying...\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "bdb_exop_passwd: retrying...\n", 0, 0, 0 );
 #endif
@@ -136,7 +136,9 @@ retry:      /* transaction retry */
        *text = NULL;
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "passwd", LDAP_LEVEL_ERR, "bdb_exop_passwd: txn_begin failed: %s (%d)\n", db_strerror(rc), rc ));
+               LDAP_LOG ( ACL, ERR, 
+                       "bdb_exop_passwd: txn_begin failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_exop_passwd: txn_begin failed: %s (%d)\n",
index 4d60f68d0e83030029b78329c7c41b3424ea4b3f..07c85df4b360f08e9ecdb8430e91542cbb169ec7 100644 (file)
@@ -66,9 +66,9 @@ dn2entry_retry:
                goto dn2entry_retry;
        default:
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "referral", LDAP_LEVEL_ERR,
-                       "bdb_referrals: dn2entry failed: %s (%d)\n",
-                       db_strerror(rc), rc ));
+               LDAP_LOG ( OPERATION, ERR, 
+                       "bdb_referrals: dn2entry failed: %s (%d)\n", 
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_referrals: dn2entry failed: %s (%d)\n",
@@ -94,9 +94,9 @@ dn2entry_retry:
                        matched_dn = ch_strdup( matched->e_dn );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "referral", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG ( OPERATION, DETAIL1, 
                        "bdb_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
-                       (long) op->o_tag, dn->bv_val, matched_dn ));
+                       (long) op->o_tag, dn->bv_val, matched_dn );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "bdb_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
@@ -139,9 +139,9 @@ dn2entry_retry:
                        refs, &e->e_name, dn, LDAP_SCOPE_DEFAULT );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "referral", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG ( OPERATION, DETAIL1, 
                        "bdb_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
-                       (long) op->o_tag, dn->bv_val, e->e_dn ));
+                       (long) op->o_tag, dn->bv_val, e->e_dn );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "bdb_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
index a68e17fb646e90400b4058bb1f660c30aea5f04b..44076d7abeed248791f8c46787c854fbf38065b1 100644 (file)
@@ -63,7 +63,7 @@ bdb_search(
        DB_LOCK         lock;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "search", LDAP_LEVEL_ENTRY,"bdb_back_search\n"));
+       LDAP_LOG ( OPERATION, ENTRY, "bdb_back_search\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_back_search\n",
                0, 0, 0);
@@ -175,7 +175,8 @@ dn2entry_retry:
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "search", LDAP_LEVEL_RESULTS,"bdb_search: entry is referral\n"));
+               LDAP_LOG ( OPERATION, RESULTS, 
+                       "bdb_search: entry is referral\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "bdb_search: entry is referral\n",
                        0, 0, 0 );
@@ -288,7 +289,7 @@ dn2entry_retry:
 
        if ( candidates[0] == 0 ) {
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "search", LDAP_LEVEL_RESULTS,"bdb_search: no candidates\n"));
+       LDAP_LOG ( OPERATION, RESULTS, "bdb_search: no candidates\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "bdb_search: no candidates\n",
                        0, 0, 0 );
@@ -349,7 +350,8 @@ id2entry_retry:
                        if( !BDB_IDL_IS_RANGE(candidates) ) {
                                /* only complain for non-range IDLs */
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "search", LDAP_LEVEL_RESULTS,"bdb_search: candidate %ld not found\n", (long) id));
+                               LDAP_LOG ( OPERATION, RESULTS,
+                                       "bdb_search: candidate %ld not found\n", (long) id, 0, 0);
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_search: candidate %ld not found\n",
@@ -411,7 +413,8 @@ id2entry_retry:
                        } else if ( dnIsSuffix( &e->e_nname, &realbase ) ) {
                                /* alias is within scope */
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "search", LDAP_LEVEL_RESULTS,"bdb_search: \"%s\" in subtree\n", e->edn));
+                               LDAP_LOG ( OPERATION, RESULTS,
+                                       "bdb_search: \"%s\" in subtree\n", e->edn, 0, 0);
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_search: \"%s\" in subtree\n",
@@ -466,9 +469,9 @@ id2entry_retry:
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL2,
+                               LDAP_LOG(OPERATION, DETAIL2, 
                                        "bdb_search: candidate referral %ld scope not okay\n",
-                                       id ));
+                                       id, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_search: candidate referral %ld scope not okay\n",
@@ -536,7 +539,8 @@ id2entry_retry:
                                }
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "search", LDAP_LEVEL_RESULTS,"bdb_search: %ld scope not okay\n", (long) id));
+                               LDAP_LOG ( OPERATION, RESULTS,
+                                       "bdb_search: %ld scope not okay\n", (long) id, 0, 0);
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "bdb_search: %ld scope not okay\n",
@@ -545,7 +549,8 @@ id2entry_retry:
                        }
                } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "search", LDAP_LEVEL_RESULTS,"bdb_search: %ld does match filter\n", (long) id));
+                               LDAP_LOG ( OPERATION, RESULTS,
+                                       "bdb_search: %ld does match filter\n", (long) id, 0, 0);
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "bdb_search: %ld does match filter\n",
@@ -589,7 +594,8 @@ static int base_candidate(
        ID              *ids )
 {
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "search", LDAP_LEVEL_ENTRY,"base_candidate: base: \"%s\" (0x%08lx)\n", e->e_dn, (long) e->e_id));
+       LDAP_LOG ( OPERATION, ENTRY,
+               "base_candidate: base: \"%s\" (0x%08lx)\n", e->e_dn, (long) e->e_id, 0);
 #else
        Debug(LDAP_DEBUG_ARGS, "base_candidates: base: \"%s\" (0x%08lx)\n",
                e->e_dn, (long) e->e_id, 0);
@@ -669,7 +675,9 @@ static int search_candidates(
         */
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "search", LDAP_LEVEL_ENTRY,"search_candidates: base=\"%s\" (0x%08lx) scope=%d\n", e->e_dn, (long) e->e_id, scope));
+       LDAP_LOG ( OPERATION, ENTRY,
+               "search_candidates: base=\"%s\" (0x%08lx) scope=%d\n", 
+               e->e_dn, (long) e->e_id, scope);
 #else
        Debug(LDAP_DEBUG_TRACE,
                "search_candidates: base=\"%s\" (0x%08lx) scope=%d\n",
@@ -741,7 +749,8 @@ static int search_candidates(
 
        if( rc ) {
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "search", LDAP_LEVEL_DETAIL1,"bdb_search_candidates: failed (rc=%d)\n", rc));
+               LDAP_LOG ( OPERATION, DETAIL1,
+                       "bdb_search_candidates: failed (rc=%d)\n", rc, 0, 0  );
 #else
                Debug(LDAP_DEBUG_TRACE,
                        "bdb_search_candidates: failed (rc=%d)\n",
@@ -750,7 +759,10 @@ static int search_candidates(
 
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "search", LDAP_LEVEL_DETAIL1,"bdb_search_candidates: id=%ld first=%ld last=%ld\n", (long) ids[0], (long) BDB_IDL_FIRST(ids), (long) BDB_IDL_LAST(ids)));
+               LDAP_LOG ( OPERATION, DETAIL1,
+                       "bdb_search_candidates: id=%ld first=%ld last=%ld\n",
+                       (long) ids[0], (long) BDB_IDL_FIRST(ids), 
+                       (long) BDB_IDL_LAST(ids));
 #else
                Debug(LDAP_DEBUG_TRACE,
                        "bdb_search_candidates: id=%ld first=%ld last=%ld\n",
index 0203ef71068b7ede316b0f0bc60d540f3d00abc4..1056944ebd255be7170b73275a5ca7b9c41ac04c 100644 (file)
@@ -126,9 +126,8 @@ ID bdb_tool_entry_put(
        assert( text->bv_val[0] == '\0' );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "tools", LDAP_LEVEL_ARGS,
-               "=> bdb_tool_entry_put( %ld, \"%s\" )\n",
-               (long) e->e_id, e->e_dn ));
+       LDAP_LOG ( TOOLS, ARGS, "=> bdb_tool_entry_put( %ld, \"%s\" )\n",
+               (long) e->e_id, e->e_dn, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_tool_entry_put( %ld, \"%s\" )\n",
                (long) e->e_id, e->e_dn, 0 );
@@ -141,8 +140,7 @@ ID bdb_tool_entry_put(
                        "txn_begin failed: %s (%d)",
                        db_strerror(rc), rc );
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
-               "=> bdb_tool_entry_put: %s\n", text->bv_val ));
+       LDAP_LOG ( TOOLS, ERR, "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_tool_entry_put: %s\n",
@@ -157,8 +155,8 @@ ID bdb_tool_entry_put(
                                "next_id failed: %s (%d)",
                                db_strerror(rc), rc );
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
-                       "=> bdb_tool_entry_put: %s\n", text->bv_val ));
+               LDAP_LOG ( TOOLS, ERR, 
+                       "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
@@ -178,8 +176,8 @@ ID bdb_tool_entry_put(
                                "dn2id_add failed: %s (%d)",
                                db_strerror(rc), rc );
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
-                       "=> bdb_tool_entry_put: %s\n", text->bv_val ));
+               LDAP_LOG ( TOOLS, ERR, 
+                       "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
@@ -194,8 +192,8 @@ ID bdb_tool_entry_put(
                                "id2entry_add failed: %s (%d)",
                                db_strerror(rc), rc );
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
-                       "=> bdb_tool_entry_put: %s\n", text->bv_val ));
+               LDAP_LOG ( TOOLS, ERR, 
+                       "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
@@ -209,8 +207,8 @@ ID bdb_tool_entry_put(
                                "index_entry_add failed: %s (%d)",
                                db_strerror(rc), rc );
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
-                       "=> bdb_tool_entry_put: %s\n", text->bv_val ));
+               LDAP_LOG ( TOOLS, ERR, 
+                       "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
@@ -226,8 +224,8 @@ done:
                                        "txn_commit failed: %s (%d)",
                                        db_strerror(rc), rc );
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
-                               "=> bdb_tool_entry_put: %s\n", text->bv_val ));
+                       LDAP_LOG ( TOOLS, ERR, 
+                               "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "=> bdb_tool_entry_put: %s\n",
@@ -242,8 +240,8 @@ done:
                        "txn_aborted! %s (%d)",
                        db_strerror(rc), rc );
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
-                       "=> bdb_tool_entry_put: %s\n", text->bv_val ));
+               LDAP_LOG ( TOOLS, ERR, 
+                       "=> bdb_tool_entry_put: %s\n", text->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_tool_entry_put: %s\n",
@@ -266,8 +264,8 @@ int bdb_tool_entry_reindex(
        struct berval pdn;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "tools", LDAP_LEVEL_ARGS,
-               "=> bdb_tool_entry_reindex( %ld )\n", (long) id ));
+       LDAP_LOG ( TOOLS, ARGS, 
+               "=> bdb_tool_entry_reindex( %ld )\n", (long) id, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "=> bdb_tool_entry_reindex( %ld )\n",
                (long) id, 0, 0 );
@@ -277,9 +275,9 @@ int bdb_tool_entry_reindex(
 
        if( e == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "tools", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG ( TOOLS, DETAIL1, 
                        "bdb_tool_entry_reindex:: could not locate id=%ld\n", 
-                       (long) id ));
+                       (long) id, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "bdb_tool_entry_reindex:: could not locate id=%ld\n",
@@ -291,9 +289,9 @@ int bdb_tool_entry_reindex(
        rc = TXN_BEGIN( bi->bi_dbenv, NULL, &tid, bi->bi_db_opflags );
        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
+               LDAP_LOG ( TOOLS, ERR, 
                        "=> bdb_tool_entry_reindex: txn_begin failed: %s (%d)\n", 
-                       db_strerror(rc), rc ));
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_tool_entry_reindex: txn_begin failed: %s (%d)\n",
@@ -310,9 +308,8 @@ int bdb_tool_entry_reindex(
         */
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
-               "=> bdb_tool_entry_reindex( %ld, \"%s\" )\n", 
-                       (long) id, e->e_dn ));
+       LDAP_LOG ( TOOLS, ERR, 
+               "=> bdb_tool_entry_reindex( %ld, \"%s\" )\n", (long) id, e->e_dn, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> bdb_tool_entry_reindex( %ld, \"%s\" )\n",
                (long) id, e->e_dn, 0 );
@@ -327,9 +324,9 @@ int bdb_tool_entry_reindex(
        rc = bdb_dn2id_add( be, tid, &pdn, e );
        if( rc != 0 && rc != DB_KEYEXIST ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
+               LDAP_LOG ( TOOLS, ERR, 
                        "=> bdb_tool_entry_reindex: dn2id_add failed: %s (%d)\n", 
-                       db_strerror(rc), rc ));
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_tool_entry_reindex: dn2id_add failed: %s (%d)\n",
@@ -345,9 +342,9 @@ done:
                rc = TXN_COMMIT( tid, 0 );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "tools", LDAP_LEVEL_ERR,
+                       LDAP_LOG ( TOOLS, ERR, 
                                "=> bdb_tool_entry_reindex: txn_commit failed: %s (%d)\n", 
-                               db_strerror(rc), rc ));
+                               db_strerror(rc), rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "=> bdb_tool_entry_reindex: txn_commit failed: %s (%d)\n",
@@ -359,9 +356,9 @@ done:
        } else {
                TXN_ABORT( tid );
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "tools", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG ( TOOLS, DETAIL1, 
                        "=> bdb_tool_entry_reindex: txn_aborted! %s (%d)\n", 
-                       db_strerror(rc), rc ));
+                       db_strerror(rc), rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "=> bdb_tool_entry_reindex: txn_aborted! %s (%d)\n",
diff --git a/servers/slapd/back-ldap/add.c b/servers/slapd/back-ldap/add.c
new file mode 100644 (file)
index 0000000..b947441
--- /dev/null
@@ -0,0 +1,239 @@
+/* add.c - ldap backend add function */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+/* This is an altered version */
+/*
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ * 
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ * 
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ * 
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ * 
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ * 
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ *
+ * Copyright 2000, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ *
+ * This software is being modified by Pierangelo Masarati.
+ * The previously reported conditions apply to the modified code as well.
+ * Changes in the original code are highlighted where required.
+ * Credits for the original code go to the author, Howard Chu.
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "back-ldap.h"
+
+int
+ldap_back_add(
+    Backend    *be,
+    Connection *conn,
+    Operation  *op,
+    Entry      *e
+)
+{
+       struct ldapinfo *li = (struct ldapinfo *) be->be_private;
+       struct ldapconn *lc;
+       int i, j;
+       Attribute *a;
+       LDAPMod **attrs;
+       struct berval mapped;
+       struct berval mdn = { 0, NULL };
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDAP, ENTRY, "ldap_back_add: %s\n", e->e_dn, 0, 0 );
+#else /* !NEW_LOGGING */
+       Debug(LDAP_DEBUG_ARGS, "==> ldap_back_add: %s\n", e->e_dn, 0, 0);
+#endif /* !NEW_LOGGING */
+       
+       lc = ldap_back_getconn(li, conn, op);
+       if ( !lc || !ldap_back_dobind( lc, op ) ) {
+               return( -1 );
+       }
+
+       /*
+        * Rewrite the add dn, if needed
+        */
+#ifdef ENABLE_REWRITE
+       switch (rewrite_session( li->rwinfo, "addDn", e->e_dn, conn, 
+                               &mdn.bv_val )) {
+       case REWRITE_REGEXEC_OK:
+               if ( mdn.bv_val != NULL && mdn.bv_val[ 0 ] != '\0' ) {
+                       mdn.bv_len = strlen( mdn.bv_val );
+               } else {
+                       mdn = e->e_name;
+               }
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "[rw] addDn: \"%s\" -> \"%s\"\n", e->e_dn, mdn.bv_val, 0 );             
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS, "rw> addDn: \"%s\" -> \"%s\"\n%s", 
+                               e->e_dn, mdn.bv_val, "" );
+#endif /* !NEW_LOGGING */
+               break;
+               
+       case REWRITE_REGEXEC_UNWILLING:
+               send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                               NULL, "Unwilling to perform", NULL, NULL );
+               return( -1 );
+               
+       case REWRITE_REGEXEC_ERR:
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, "Operations error", NULL, NULL );
+               return( -1 );
+       }
+#else /* !ENABLE_REWRITE */
+       ldap_back_dn_massage( li, &e->e_name, &mdn, 0, 1 );
+#endif /* !ENABLE_REWRITE */
+
+       /* Count number of attributes in entry */
+       for (i = 1, a = e->e_attrs; a; i++, a = a->a_next)
+               ;
+       
+       /* Create array of LDAPMods for ldap_add() */
+       attrs = (LDAPMod **)ch_malloc(sizeof(LDAPMod *)*i);
+
+       for (i=0, a=e->e_attrs; a; a=a->a_next) {
+               /*
+                * lastmod should always be <off>, so that
+                * creation/modification operational attrs
+                * of the target directory are used, if available
+                */
+#if 0
+               if ( !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_creatorsName->ad_cname.bv_val )
+                       || !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_createTimestamp->ad_cname.bv_val )
+                       || !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_modifiersName->ad_cname.bv_val )
+                       || !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_modifyTimestamp->ad_cname.bv_val )
+               ) {
+                       continue;
+               }
+#endif
+               
+               ldap_back_map(&li->at_map, &a->a_desc->ad_cname, &mapped, 0);
+               if (mapped.bv_val == NULL) {
+                       continue;
+               }
+
+               attrs[i] = (LDAPMod *)ch_malloc(sizeof(LDAPMod));
+               if (attrs[i] == NULL) {
+                       continue;
+               }
+
+               attrs[i]->mod_op = LDAP_MOD_BVALUES;
+               attrs[i]->mod_type = mapped.bv_val;
+
+#ifdef ENABLE_REWRITE
+               /*
+                * FIXME: dn-valued attrs should be rewritten
+                * to allow their use in ACLs at the back-ldap
+                * level.
+                */
+               if ( strcmp( a->a_desc->ad_type->sat_syntax->ssyn_oid,
+                                       SLAPD_DN_SYNTAX ) == 0 ) {
+                       ldap_dnattr_rewrite( li->rwinfo, a->a_vals, conn );
+               }
+#endif /* ENABLE_REWRITE */
+
+               for (j=0; a->a_vals[j].bv_val; j++);
+               attrs[i]->mod_vals.modv_bvals = ch_malloc((j+1)*sizeof(struct berval *));
+               for (j=0; a->a_vals[j].bv_val; j++)
+                       attrs[i]->mod_vals.modv_bvals[j] = &a->a_vals[j];
+               attrs[i]->mod_vals.modv_bvals[j] = NULL;
+               i++;
+       }
+       attrs[i] = NULL;
+
+       ldap_add_s(lc->ld, mdn.bv_val, attrs);
+       for (--i; i>= 0; --i) {
+               ch_free(attrs[i]->mod_vals.modv_bvals);
+               ch_free(attrs[i]);
+       }
+       ch_free(attrs);
+       if ( mdn.bv_val != e->e_dn ) {
+               free( mdn.bv_val );
+       }
+       
+       return( ldap_back_op_result( lc, op ) );
+}
+
+#ifdef ENABLE_REWRITE
+int
+ldap_dnattr_rewrite(
+               struct rewrite_info     *rwinfo,
+               BerVarray                       a_vals,
+               void                    *cookie
+)
+{
+       char *mattr;
+       
+       for ( ; a_vals->bv_val != NULL; a_vals++ ) {
+               switch ( rewrite_session( rwinfo, "bindDn", a_vals->bv_val,
+                                       cookie, &mattr )) {
+               case REWRITE_REGEXEC_OK:
+                       if ( mattr == NULL ) {
+                               /* no substitution */
+                               continue;
+                       }
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_LDAP, DETAIL1, 
+                               "[rw] bindDn (in add of dn-valued"
+                               " attr): \"%s\" -> \"%s\"\n", a_vals->bv_val, mattr, 0 );
+#else /* !NEW_LOGGING */
+                       Debug( LDAP_DEBUG_ARGS,
+                                       "rw> bindDn (in add of dn-valued attr):"
+                                       " \"%s\" -> \"%s\"\n%s",
+                                       a_vals->bv_val, mattr, "" );
+#endif /* !NEW_LOGGING */
+
+                       /*
+                        * FIXME: replacing server-allocated memory 
+                        * (ch_malloc) with librewrite allocated memory
+                        * (malloc)
+                        */
+                       ch_free( a_vals->bv_val );
+                       a_vals->bv_val = mattr;
+                       a_vals->bv_len = strlen( mattr );
+                       
+                       break;
+                       
+               case REWRITE_REGEXEC_UNWILLING:
+                       
+               case REWRITE_REGEXEC_ERR:
+                       /*
+                        * FIXME: better give up,
+                        * skip the attribute
+                        * or leave it untouched?
+                        */
+                       break;
+               }
+       }
+       
+       return 0;
+}
+#endif /* ENABLE_REWRITE */
+
index c0e532930a884995f4ddb0b0b37b2248651037fd..32d432c285c7c39496210860701bfde1c6b64d3b 100644 (file)
@@ -84,8 +84,8 @@ ldap_back_bind(
                        mdn.bv_val = ( char * )dn->bv_val;
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "[rw] bindDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn.bv_val ));
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "[rw] bindDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn.bv_val, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_ARGS, "rw> bindDn: \"%s\" -> \"%s\"\n%s",
                                dn->bv_val, mdn.bv_val, "" );
@@ -258,11 +258,11 @@ ldap_back_getconn(struct ldapinfo *li, Connection *conn, Operation *op)
                                        ber_dupbv( &lc->bound_dn, &lc->conn->c_dn );
                                }
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                               "[rw] bindDn: \"%s\" ->"
+                               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                                               "[rw] bindDn: \"%s\" ->" 
                                                " \"%s\"\n%s",
-                                               lc->conn->c_dn.bv_val,
-                                               lc->bound_dn.bv_val ));
+                                               lc->conn->c_dn.bv_val, 
+                                               lc->bound_dn.bv_val, "" );
 #else /* !NEW_LOGGING */
                                Debug( LDAP_DEBUG_ARGS,
                                                "rw> bindDn: \"%s\" ->"
@@ -312,9 +312,8 @@ ldap_back_getconn(struct ldapinfo *li, Connection *conn, Operation *op)
                ldap_pvt_thread_mutex_unlock( &li->conn_mutex );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                               "ldap_back_getconn: conn %ld inserted\n",
-                               lc->conn->c_connid ));
+               LDAP_LOG( BACK_LDAP, INFO, 
+                       "ldap_back_getconn: conn %ld inserted\n", lc->conn->c_connid, 0, 0);
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_TRACE,
                        "=>ldap_back_getconn: conn %ld inserted\n%s%s",
@@ -330,9 +329,9 @@ ldap_back_getconn(struct ldapinfo *li, Connection *conn, Operation *op)
                }
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                               "ldap_back_getconn: conn %ld inserted\n",
-                               lc->conn->c_connid ));
+               LDAP_LOG( BACK_LDAP, INFO, 
+                       "ldap_back_getconn: conn %ld inserted\n", 
+                       lc->conn->c_connid, 0, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_TRACE,
                        "=>ldap_back_getconn: conn %ld fetched%s%s\n",
diff --git a/servers/slapd/back-ldap/compare.c b/servers/slapd/back-ldap/compare.c
new file mode 100644 (file)
index 0000000..d7d1f77
--- /dev/null
@@ -0,0 +1,118 @@
+/* compare.c - ldap backend compare function */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+/* This is an altered version */
+/*
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ * 
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ * 
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ * 
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ * 
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ * 
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ *
+ * Copyright 2000, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ * 
+ * This software is being modified by Pierangelo Masarati.
+ * The previously reported conditions apply to the modified code as well.
+ * Changes in the original code are highlighted where required.
+ * Credits for the original code go to the author, Howard Chu.
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "back-ldap.h"
+
+int
+ldap_back_compare(
+    Backend    *be,
+    Connection *conn,
+    Operation  *op,
+    struct berval      *dn,
+    struct berval      *ndn,
+       AttributeAssertion *ava
+)
+{
+       struct ldapinfo *li = (struct ldapinfo *) be->be_private;
+       struct ldapconn *lc;
+       struct berval mapped_oc, mapped_at;
+       struct berval mdn = { 0, NULL };
+
+       lc = ldap_back_getconn(li, conn, op);
+       if (!lc || !ldap_back_dobind( lc, op ) ) {
+               return( -1 );
+       }
+
+       /*
+        * Rewrite the compare dn, if needed
+        */
+#ifdef ENABLE_REWRITE
+       switch ( rewrite_session( li->rwinfo, "compareDn", dn->bv_val, conn, &mdn.bv_val ) ) {
+       case REWRITE_REGEXEC_OK:
+               if ( mdn.bv_val == NULL ) {
+                       mdn.bv_val = ( char * )dn->bv_val;
+               }
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "[rw] compareDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn.bv_val, 0 );
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS, "rw> compareDn: \"%s\" -> \"%s\"\n%s",
+                               dn->bv_val, mdn.bv_val, "" );
+#endif /* !NEW_LOGGING */
+               break;
+               
+       case REWRITE_REGEXEC_UNWILLING:
+               send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                               NULL, "Unwilling to perform", NULL, NULL );
+               return( -1 );
+               
+       case REWRITE_REGEXEC_ERR:
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, "Operations error", NULL, NULL );
+               return( -1 );
+       }
+#else /* !ENABLE_REWRITE */
+       ldap_back_dn_massage( li, dn, &mdn, 0, 1 );
+       if ( mdn.bv_val == NULL ) {
+               return -1;
+       }
+#endif /* !ENABLE_REWRITE */
+
+       ldap_back_map(&li->oc_map, &ava->aa_desc->ad_cname, &mapped_oc, 0);
+       if (mapped_oc.bv_val == NULL)
+               return( -1 );
+
+       ldap_back_map(&li->at_map, &ava->aa_value, &mapped_at, 0);
+       if (mapped_at.bv_val == NULL)
+               return( -1 );
+
+       ldap_compare_s( lc->ld, mdn.bv_val, mapped_oc.bv_val, mapped_at.bv_val );
+
+       if ( mdn.bv_val != dn->bv_val ) {
+               free( mdn.bv_val );
+       }
+       
+       return( ldap_back_op_result( lc, op ) );
+}
index a8e82ad0eacd6c612c246ca2760630c0d1bce8c8..f0ea612e8137575f1134c18bca2b534c610b0224 100644 (file)
@@ -325,18 +325,18 @@ suffix_massage_regexize( const char *s )
 
        res = ch_calloc( sizeof( char ), strlen( s ) + 4 + 4*i + 1 );
 
-       ptr = slap_strcopy( res, "(.*)" );
+       ptr = lutil_strcopy( res, "(.*)" );
        for ( i = 0, p = s;
                        ( r = strchr( p, ',' ) ) != NULL;
                        p = r + 1 , i++ ) {
-               ptr = slap_strncopy( ptr, p, r - p + 1 );
-               ptr = slap_strcopy( ptr, "[ ]?" );
+               ptr = lutil_strncopy( ptr, p, r - p + 1 );
+               ptr = lutil_strcopy( ptr, "[ ]?" );
 
                if ( r[ 1 ] == ' ' ) {
                        r++;
                }
        }
-       slap_strcopy( ptr, p );
+       lutil_strcopy( ptr, p );
 
        return res;
 }
diff --git a/servers/slapd/back-ldap/delete.c b/servers/slapd/back-ldap/delete.c
new file mode 100644 (file)
index 0000000..115252b
--- /dev/null
@@ -0,0 +1,107 @@
+/* delete.c - ldap backend delete function */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+/* This is an altered version */
+/*
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ * 
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ * 
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ * 
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ * 
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ * 
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ *
+ * Copyright 2000, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ * 
+ * This software is being modified by Pierangelo Masarati.
+ * The previously reported conditions apply to the modified code as well.
+ * Changes in the original code are highlighted where required.
+ * Credits for the original code go to the author, Howard Chu.
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "back-ldap.h"
+
+int
+ldap_back_delete(
+    Backend    *be,
+    Connection *conn,
+    Operation  *op,
+    struct berval      *dn,
+    struct berval      *ndn
+)
+{
+       struct ldapinfo *li = (struct ldapinfo *) be->be_private;
+       struct ldapconn *lc;
+
+       struct berval mdn = { 0, NULL };
+
+       lc = ldap_back_getconn( li, conn, op );
+       
+       if ( !lc || !ldap_back_dobind( lc, op ) ) {
+               return( -1 );
+       }
+
+       /*
+        * Rewrite the compare dn, if needed
+        */
+#ifdef ENABLE_REWRITE
+       switch ( rewrite_session( li->rwinfo, "deleteDn", dn->bv_val, conn, &mdn.bv_val ) ) {
+       case REWRITE_REGEXEC_OK:
+       if ( mdn.bv_val == NULL ) {
+                       mdn.bv_val = ( char * )dn->bv_val;
+               }
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDAP, DETAIL1, 
+               "[rw] deleteDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn.bv_val, 0 );
+#else /* !NEW_LOGGING */
+       Debug( LDAP_DEBUG_ARGS, "rw> deleteDn: \"%s\" -> \"%s\"\n%s",
+                       dn->bv_val, mdn.bv_val, "" );
+#endif /* !NEW_LOGGING */
+       break;
+               
+       case REWRITE_REGEXEC_UNWILLING:
+               send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                               NULL, "Unwilling to perform", NULL, NULL );
+               return( -1 );
+
+       case REWRITE_REGEXEC_ERR:
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, "Operations error", NULL, NULL );
+               return( -1 );
+       }
+#else /* !ENABLE_REWRITE */
+       ldap_back_dn_massage( li, dn, &mdn, 0, 1 );
+#endif /* !ENABLE_REWRITE */
+       
+       ldap_delete_s( lc->ld, mdn.bv_val );
+
+       if ( mdn.bv_val != dn->bv_val ) {
+               free( mdn.bv_val );
+       }
+       
+       return( ldap_back_op_result( lc, op ) );
+}
diff --git a/servers/slapd/back-ldap/group.c b/servers/slapd/back-ldap/group.c
new file mode 100644 (file)
index 0000000..16a2c50
--- /dev/null
@@ -0,0 +1,209 @@
+/* group.c - ldap backend acl group routine */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/socket.h>
+#include <ac/string.h>
+
+#include "slap.h"
+#include "back-ldap.h"
+
+
+/* return 0 IFF op_dn is a value in group_at (member) attribute
+ * of entry with gr_dn AND that entry has an objectClass
+ * value of group_oc (groupOfNames)
+ */
+int
+ldap_back_group(
+       Backend         *be,
+       Connection      *conn,
+       Operation       *op,
+       Entry           *target,
+       struct berval   *gr_ndn,
+       struct berval   *op_ndn,
+       ObjectClass     *group_oc,
+       AttributeDescription* group_at
+)
+{
+       struct ldapinfo *li = (struct ldapinfo *) be->be_private;    
+       int rc = 1;
+       Attribute   *attr;
+
+       LDAPMessage     *result;
+       char *gattr[2];
+       char *filter = NULL, *ptr;
+       LDAP *ld;
+       struct berval mop_ndn = { 0, NULL }, mgr_ndn = { 0, NULL };
+
+       AttributeDescription *ad_objectClass = slap_schema.si_ad_objectClass;
+       struct berval group_oc_name = {0, NULL};
+       struct berval group_at_name = group_at->ad_cname;
+
+       if( group_oc->soc_names && group_oc->soc_names[0] ) {
+               group_oc_name.bv_val = group_oc->soc_names[0];
+       } else {
+               group_oc_name.bv_val = group_oc->soc_oid;
+       }
+       if (group_oc_name.bv_val)
+               group_oc_name.bv_len = strlen(group_oc_name.bv_val);
+
+       if (target != NULL && dn_match( &target->e_nname, gr_ndn ) ) {
+               /* we already have a copy of the entry */
+               /* attribute and objectclass mapping has already been done */
+
+               /*
+                * first we need to check if the objectClass attribute
+                * has been retieved; otherwise we need to repeat the search
+                */
+               attr = attr_find( target->e_attrs, ad_objectClass );
+               if ( attr != NULL ) {
+
+                       /*
+                        * Now we can check for the group objectClass value
+                        */
+                       if( !is_entry_objectclass( target, group_oc, 0 ) ) {
+                               return(1);
+                       }
+
+                       /*
+                        * This part has been reworked: the group attr compare
+                        * fails only if the attribute is PRESENT but the value
+                        * is NOT PRESENT; if the attribute is NOT PRESENT, the
+                        * search must be repeated as well.
+                        * This may happen if a search for an entry has already
+                        * been performed (target is not null) but the group
+                        * attribute has not been required
+                        */
+                       if ((attr = attr_find(target->e_attrs, group_at)) != NULL) {
+                               if( value_find( group_at, attr->a_vals, op_ndn ) != LDAP_SUCCESS  )
+                                       return(1);
+                               return(0);
+                       } /* else: repeat the search */
+               } /* else: repeat the search */
+       } /* else: do the search */
+
+       /*
+        * Rewrite the op ndn if needed
+        */
+#ifdef ENABLE_REWRITE
+       switch ( rewrite_session( li->rwinfo, "bindDn",
+                               op_ndn->bv_val, conn, &mop_ndn.bv_val ) ) {
+       case REWRITE_REGEXEC_OK:
+               if ( mop_ndn.bv_val == NULL ) {
+                       mop_ndn = *op_ndn;
+               }
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "[rw] bindDn (op ndn in group): \"%s\" -> \"%s\"\n", 
+                       op_ndn->bv_val, mop_ndn.bv_val, 0 );
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS,
+                       "rw> bindDn (op ndn in group): \"%s\" -> \"%s\"\n%s",
+                       op_ndn->bv_val, mop_ndn.bv_val, "" );
+#endif /* !NEW_LOGGING */
+               break;
+       
+       case REWRITE_REGEXEC_UNWILLING:
+       
+       case REWRITE_REGEXEC_ERR:
+               goto cleanup;
+       }
+
+       /*
+        * Rewrite the gr ndn if needed
+        */
+        switch ( rewrite_session( li->rwinfo, "searchBase",
+                               gr_ndn->bv_val, conn, &mgr_ndn.bv_val ) ) {
+       case REWRITE_REGEXEC_OK:
+               if ( mgr_ndn.bv_val == NULL ) {
+                       mgr_ndn = *gr_ndn;
+               }
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "[rw] searchBase (gr ndn in group): \"%s\" -> \"%s\"\n%s", 
+                       gr_ndn->bv_val, mgr_ndn.bv_val, "" );
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS,
+                       "rw> searchBase (gr ndn in group):"
+                       " \"%s\" -> \"%s\"\n%s",
+                       gr_ndn->bv_val, mgr_ndn.bv_val, "" );
+#endif /* !NEW_LOGGING */
+               break;
+       
+       case REWRITE_REGEXEC_UNWILLING:
+       
+       case REWRITE_REGEXEC_ERR:
+               goto cleanup;
+       }
+#else /* !ENABLE_REWRITE */
+       ldap_back_dn_massage( li, op_ndn, &mop_ndn, 1, 1 );
+       if ( mop_ndn.bv_val == NULL ) {
+               goto cleanup;
+       }
+       ldap_back_dn_massage( li, gr_ndn, &mgr_ndn, 1, 1 );
+       if ( mgr_ndn.bv_val == NULL ) {
+               goto cleanup;
+       }
+#endif /* !ENABLE_REWRITE */
+
+       ldap_back_map(&li->oc_map, &group_oc_name, &group_oc_name, 0);
+       if (group_oc_name.bv_val == NULL)
+               goto cleanup;
+       ldap_back_map(&li->at_map, &group_at_name, &group_at_name, 0);
+       if (group_at_name.bv_val == NULL)
+               goto cleanup;
+
+       filter = ch_malloc(sizeof("(&(objectclass=)(=))")
+                                               + group_oc_name.bv_len
+                                               + group_at_name.bv_len
+                                               + mop_ndn.bv_len + 1);
+       if (filter == NULL)
+               goto cleanup;
+
+       if (ldap_initialize(&ld, li->url) != LDAP_SUCCESS) {
+               goto cleanup;
+       }
+
+       if (ldap_bind_s(ld, li->binddn, li->bindpw, LDAP_AUTH_SIMPLE)
+                       != LDAP_SUCCESS) {
+               goto cleanup;
+       }
+
+       ptr = lutil_strcopy(filter, "(&(objectclass=");
+       ptr = lutil_strcopy(ptr, group_oc_name.bv_val);
+       ptr = lutil_strcopy(ptr, ")(");
+       ptr = lutil_strcopy(ptr, group_at_name.bv_val);
+       ptr = lutil_strcopy(ptr, "=");
+       ptr = lutil_strcopy(ptr, mop_ndn.bv_val);
+       strcpy(ptr, "))");
+
+       gattr[0] = "objectclass";
+       gattr[1] = NULL;
+       if (ldap_search_ext_s(ld, mgr_ndn.bv_val, LDAP_SCOPE_BASE, filter,
+               gattr, 0, NULL, NULL, LDAP_NO_LIMIT,
+               LDAP_NO_LIMIT, &result) == LDAP_SUCCESS) {
+               if (ldap_first_entry(ld, result) != NULL)
+                       rc = 0;
+               ldap_msgfree(result);
+       }
+
+cleanup:;
+       if ( ld != NULL ) {
+               ldap_unbind(ld);
+       }
+       ch_free(filter);
+       if ( mop_ndn.bv_val != op_ndn->bv_val ) {
+               free( mop_ndn.bv_val );
+       }
+       if ( mgr_ndn.bv_val != gr_ndn->bv_val ) {
+               free( mgr_ndn.bv_val );
+       }
+       return(rc);
+}
diff --git a/servers/slapd/back-ldap/modify.c b/servers/slapd/back-ldap/modify.c
new file mode 100644 (file)
index 0000000..8e19960
--- /dev/null
@@ -0,0 +1,165 @@
+/* modify.c - ldap backend modify function */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+/* This is an altered version */
+/*
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ * 
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ * 
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ * 
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ * 
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ * 
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ *
+ * Copyright 2000, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ * 
+ * This software is being modified by Pierangelo Masarati.
+ * The previously reported conditions apply to the modified code as well.
+ * Changes in the original code are highlighted where required.
+ * Credits for the original code go to the author, Howard Chu.
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "back-ldap.h"
+
+int
+ldap_back_modify(
+    Backend    *be,
+    Connection *conn,
+    Operation  *op,
+    struct berval      *dn,
+    struct berval      *ndn,
+    Modifications      *modlist
+)
+{
+       struct ldapinfo *li = (struct ldapinfo *) be->be_private;
+       struct ldapconn *lc;
+       LDAPMod **modv = NULL;
+       LDAPMod *mods;
+       Modifications *ml;
+       int i, j;
+       struct berval mapped;
+       struct berval mdn = { 0, NULL };
+
+       lc = ldap_back_getconn(li, conn, op);
+       if ( !lc || !ldap_back_dobind( lc, op ) ) {
+               return( -1 );
+       }
+
+       /*
+        * Rewrite the modify dn, if needed
+        */
+#ifdef ENABLE_REWRITE
+       switch ( rewrite_session( li->rwinfo, "modifyDn", dn->bv_val, conn, &mdn.bv_val ) ) {
+       case REWRITE_REGEXEC_OK:
+               if ( mdn.bv_val == NULL ) {
+                       mdn.bv_val = ( char * )dn->bv_val;
+               }
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "[rw] modifyDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn.bv_val, 0 );
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS, "rw> modifyDn: \"%s\" -> \"%s\"\n%s",
+                               dn->bv_val, mdn.bv_val, "" );
+#endif /* !NEW_LOGGING */
+               break;
+               
+       case REWRITE_REGEXEC_UNWILLING:
+               send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                               NULL, "Unwilling to perform", NULL, NULL );
+               return( -1 );
+
+       case REWRITE_REGEXEC_ERR:
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, "Operations error", NULL, NULL );
+               return( -1 );
+       }
+#else /* !ENABLE_REWRITE */
+       ldap_back_dn_massage( li, dn, &mdn, 0, 1 );
+#endif /* !ENABLE_REWRITE */
+
+       for (i=0, ml=modlist; ml; i++,ml=ml->sml_next)
+               ;
+
+       mods = (LDAPMod *)ch_malloc(i*sizeof(LDAPMod));
+       if (mods == NULL) {
+               goto cleanup;
+       }
+       modv = (LDAPMod **)ch_malloc((i+1)*sizeof(LDAPMod *));
+       if (modv == NULL) {
+               goto cleanup;
+       }
+
+       for (i=0, ml=modlist; ml; ml=ml->sml_next) {
+               ldap_back_map(&li->at_map, &ml->sml_desc->ad_cname, &mapped, 0);
+               if (mapped.bv_val == NULL) {
+                       continue;
+               }
+
+               modv[i] = &mods[i];
+               mods[i].mod_op = ml->sml_op | LDAP_MOD_BVALUES;
+               mods[i].mod_type = mapped.bv_val;
+
+#ifdef ENABLE_REWRITE
+               /*
+                * FIXME: dn-valued attrs should be rewritten
+                * to allow their use in ACLs at the back-ldap
+                * level.
+                */
+               if ( strcmp( ml->sml_desc->ad_type->sat_syntax->ssyn_oid,
+                                       SLAPD_DN_SYNTAX ) == 0 ) {
+                       ldap_dnattr_rewrite( li->rwinfo,
+                                       ml->sml_bvalues, conn );
+               }
+#endif /* ENABLE_REWRITE */
+       
+               for (j = 0; ml->sml_bvalues[j].bv_val; j++);
+               mods[i].mod_bvalues = (struct berval **)ch_malloc((j+1) *
+                       sizeof(struct berval *));
+               for (j = 0; ml->sml_bvalues[j].bv_val; j++)
+                       mods[i].mod_bvalues[j] = &ml->sml_bvalues[j];
+               mods[i].mod_bvalues[j] = NULL;
+               i++;
+       }
+       modv[i] = 0;
+
+       ldap_modify_s( lc->ld, mdn.bv_val, modv );
+
+cleanup:;
+#ifdef ENABLE_REWRITE
+       if ( mdn.bv_val != dn->bv_val ) {
+#endif /* ENABLE_REWRITE */
+               free( mdn.bv_val );
+#ifdef ENABLE_REWRITE
+       }
+#endif /* ENABLE_REWRITE */
+       for (i=0; modv[i]; i++)
+               ch_free(modv[i]->mod_bvalues);
+       ch_free(mods);
+       ch_free(modv);
+       return( ldap_back_op_result( lc, op ));
+}
+
diff --git a/servers/slapd/back-ldap/modrdn.c b/servers/slapd/back-ldap/modrdn.c
new file mode 100644 (file)
index 0000000..5caf780
--- /dev/null
@@ -0,0 +1,160 @@
+/* modrdn.c - ldap backend modrdn function */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+/* This is an altered version */
+/*
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ * 
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ * 
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ * 
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ * 
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ * 
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ *
+ * Copyright 2000, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ * 
+ * This software is being modified by Pierangelo Masarati.
+ * The previously reported conditions apply to the modified code as well.
+ * Changes in the original code are highlighted where required.
+ * Credits for the original code go to the author, Howard Chu.
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/socket.h>
+#include <ac/string.h>
+
+#include "slap.h"
+#include "back-ldap.h"
+
+int
+ldap_back_modrdn(
+    Backend    *be,
+    Connection *conn,
+    Operation  *op,
+    struct berval      *dn,
+    struct berval      *ndn,
+    struct berval      *newrdn,
+    struct berval      *nnewrdn,
+    int                deleteoldrdn,
+    struct berval      *newSuperior,
+    struct berval      *nnewSuperior
+)
+{
+       struct ldapinfo *li = (struct ldapinfo *) be->be_private;
+       struct ldapconn *lc;
+
+       struct berval mdn = { 0, NULL }, mnewSuperior = { 0, NULL };
+
+       lc = ldap_back_getconn( li, conn, op );
+       if ( !lc || !ldap_back_dobind(lc, op) ) {
+               return( -1 );
+       }
+
+       if (newSuperior) {
+               int version = LDAP_VERSION3;
+               ldap_set_option( lc->ld, LDAP_OPT_PROTOCOL_VERSION, &version);
+               
+               /*
+                * Rewrite the new superior, if defined and required
+                */
+#ifdef ENABLE_REWRITE
+               switch ( rewrite_session( li->rwinfo, "newSuperiorDn",
+                                       newSuperior->bv_val, conn, &mnewSuperior.bv_val ) ) {
+               case REWRITE_REGEXEC_OK:
+                       if ( mnewSuperior.bv_val == NULL ) {
+                               mnewSuperior.bv_val = ( char * )newSuperior;
+                       }
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_LDAP, DETAIL1, 
+                               "[rw] newSuperiorDn:" " \"%s\" -> \"%s\"\n",
+                               newSuperior, mnewSuperior.bv_val, 0 );
+#else /* !NEW_LOGGING */
+                       Debug( LDAP_DEBUG_ARGS, "rw> newSuperiorDn:"
+                                       " \"%s\" -> \"%s\"\n%s",
+                                       newSuperior->bv_val, mnewSuperior.bv_val, "" );
+#endif /* !NEW_LOGGING */
+                       break;
+
+               case REWRITE_REGEXEC_UNWILLING:
+                       send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                                       NULL, "Unwilling to perform",
+                                       NULL, NULL );
+                       return( -1 );
+
+               case REWRITE_REGEXEC_ERR:
+                       send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                                       NULL, "Operations error",
+                                       NULL, NULL );
+                       return( -1 );
+               }
+#else /* !ENABLE_REWRITE */
+               ldap_back_dn_massage( li, newSuperior, &mnewSuperior, 0, 1 );
+               if ( mnewSuperior.bv_val == NULL ) {
+                       return( -1 );
+               }
+#endif /* !ENABLE_REWRITE */
+       }
+
+#ifdef ENABLE_REWRITE
+       /*
+        * Rewrite the modrdn dn, if required
+        */
+       switch ( rewrite_session( li->rwinfo, "modrDn", dn->bv_val, conn, &mdn.bv_val ) ) {
+       case REWRITE_REGEXEC_OK:
+               if ( mdn.bv_val == NULL ) {
+                       mdn.bv_val = ( char * )dn->bv_val;
+               }
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "[rw] modrDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn.bv_val, 0 );
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS, "rw> modrDn: \"%s\" -> \"%s\"\n%s",
+                               dn->bv_val, mdn.bv_val, "" );
+#endif /* !NEW_LOGGING */
+               break;
+               
+       case REWRITE_REGEXEC_UNWILLING:
+               send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                               NULL, "Unwilling to perform", NULL, NULL );
+               return( -1 );
+
+       case REWRITE_REGEXEC_ERR:
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, "Operations error", NULL, NULL );
+               return( -1 );
+       }
+#else /* !ENABLE_REWRITE */
+       ldap_back_dn_massage( li, dn, &mdn, 0, 1 );
+#endif /* !ENABLE_REWRITE */
+
+       ldap_rename2_s( lc->ld, mdn.bv_val, newrdn->bv_val, mnewSuperior.bv_val, deleteoldrdn );
+
+       if ( mdn.bv_val != dn->bv_val ) {
+               free( mdn.bv_val );
+       }
+       if ( mnewSuperior.bv_val != NULL
+               && mnewSuperior.bv_val != newSuperior->bv_val ) {
+               free( mnewSuperior.bv_val );
+       }
+       
+       return( ldap_back_op_result( lc, op ) );
+}
index 4f107a4f38f9cc23d401e755954522865753ee99..65d9b8110704f907ec4ba4839085682ffebdd2e4 100644 (file)
@@ -153,9 +153,9 @@ ldap_back_search(
                        mbase = *base;
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "[rw] searchBase: \"%s\" -> \"%s\"\n%",
-                               base->bv_val, mbase.bv_val ));
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "[rw] searchBase: \"%s\" -> \"%s\"\n", 
+                       base->bv_val, mbase.bv_val, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_ARGS, "rw> searchBase: \"%s\" -> \"%s\"\n%s",
                                base->bv_val, mbase.bv_val, "" );
@@ -191,9 +191,9 @@ ldap_back_search(
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "[rw] searchFilter: \"%s\" -> \"%s\"\n",
-                               filterstr->bv_val, mfilter.bv_val ));
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "[rw] searchFilter: \"%s\" -> \"%s\"\n",
+                       filterstr->bv_val, mfilter.bv_val, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_ARGS,
                                "rw> searchFilter: \"%s\" -> \"%s\"\n%s",
@@ -300,10 +300,8 @@ fail:;
                                mmatch = ( char * )match;
                        }
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                       "[rw]  matchedDn:"
-                                       " \"%s\" -> \"%s\"\n",
-                                       match, mmatch ));
+                       LDAP_LOG( BACK_LDAP, DETAIL1, 
+                               "[rw]  matchedDn:" " \"%s\" -> \"%s\"\n", match, mmatch, 0 );
 #else /* !NEW_LOGGING */
                        Debug( LDAP_DEBUG_ARGS, "rw> matchedDn:"
                                        " \"%s\" -> \"%s\"\n%s",
@@ -389,9 +387,9 @@ ldap_send_entry(
                        ent.e_name = bdn;
                } else {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                       "[rw] searchResult: \"%s\""
-                                       " -> \"%s\"\n", bdn.bv_val, ent.e_dn ));
+                       LDAP_LOG( BACK_LDAP, DETAIL1, 
+                               "[rw] searchResult: \"%s\"" " -> \"%s\"\n", 
+                               bdn.bv_val, ent.e_dn, 0 );
 #else /* !NEW_LOGGING */
                        Debug( LDAP_DEBUG_ARGS, "rw> searchResult: \"%s\""
                                        " -> \"%s\"\n%s", bdn.bv_val, ent.e_dn, "" );
@@ -428,9 +426,8 @@ ldap_send_entry(
                        if (slap_bv2undef_ad(&mapped, &attr->a_desc, &text) 
                                        != LDAP_SUCCESS) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                               "slap_bv2undef_ad(%s):  "
-                                               "%s\n", mapped.bv_val, text ));
+                               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                                       "slap_bv2undef_ad(%s):  %s\n", mapped.bv_val, text, 0 );
 #else /* !NEW_LOGGING */
                                Debug( LDAP_DEBUG_ANY, 
                                                "slap_bv2undef_ad(%s):  "
@@ -506,14 +503,10 @@ ldap_send_entry(
                                        }
                                        newval.bv_len = strlen( newval.bv_val );
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "backend",
-                                                       LDAP_LEVEL_DETAIL1,
-                                                       "[rw] searchResult on"
-                                                       " attr=%s:"
-                                                       " \"%s\" -> \"%s\"\n",
-                                                       attr->a_desc->ad_type->sat_cname.bv_val,
-                                                       bv->bv_val, 
-                                                       newval.bv_val ));
+                                       LDAP_LOG( BACK_LDAP, DETAIL1, 
+                                               "[rw] searchResult on attr=%s: \"%s\" -> \"%s\"\n",
+                                               attr->a_desc->ad_type->sat_cname.bv_val,
+                                               bv->bv_val, newval.bv_val );
 #else /* !NEW_LOGGING */
                                        Debug( LDAP_DEBUG_ARGS,
                "rw> searchResult on attr=%s: \"%s\" -> \"%s\"\n",
index d24af0e275af0e3ca6b868cf1271e71d70894e0b..c392207b3a0f2ca242eb2ffd9d57f8373e1f20ad 100644 (file)
@@ -99,9 +99,9 @@ ldap_back_dn_massage(
                         strncpy( res->bv_val, dn->bv_val, diff );
                         strcpy( &res->bv_val[diff], li->suffix_massage[i+dst].bv_val );
 #ifdef NEW_LOGGING
-                                       LDAP_LOG (( "suffixmassage", LDAP_LEVEL_ARGS,
+                                       LDAP_LOG ( BACK_LDAP, ARGS, 
                                                "ldap_back_dn_massage: converted \"%s\" to \"%s\"\n",
-                                               dn->bv_val, res->bv_val ));
+                                               dn->bv_val, res->bv_val, 0 );
 #else
                         Debug( LDAP_DEBUG_ARGS,
                                 "ldap_back_dn_massage:"
index a15452721a2dde7092f5269fa1e77d2da13cdd13..a5aa5f1f9245f117b8e9b1b9e73a2e7f301f0f93 100644 (file)
@@ -55,9 +55,8 @@ ldap_back_conn_destroy(
        struct ldapconn *lc, lc_curr;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "ldap_back_conn_destroy: fetching conn %ld\n",
-                       conn->c_connid ));
+       LDAP_LOG( BACK_LDAP, INFO,
+               "ldap_back_conn_destroy: fetching conn %ld\n", conn->c_connid, 0, 0 );
 #else /* !NEW_LOGGING */
        Debug( LDAP_DEBUG_TRACE,
                "=>ldap_back_conn_destroy: fetching conn %ld\n",
@@ -72,9 +71,9 @@ ldap_back_conn_destroy(
 
        if (lc) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                       "ldap_back_conn_destroy: destroying conn %ld\n",
-                       conn->c_connid ));
+               LDAP_LOG( BACK_LDAP, DETAIL1, 
+                       "ldap_back_conn_destroy: destroying conn %ld\n", 
+                       conn->c_connid, 0, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_TRACE,
                        "=>ldap_back_conn_destroy: destroying conn %ld\n",
index 3dacd6da3dba445dece437a7eff58708971c2e65..64854753fa332688e76e1f087fa0721501d02c4d 100644 (file)
@@ -1,16 +1,20 @@
 /* add.c - ldap ldbm back-end add routine */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
 
 #include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
+
+#include <ac/socket.h>
+#include <ac/string.h>
+
 #include "slap.h"
 #include "back-ldbm.h"
-
-extern int     global_schemacheck;
-extern char    *dn_parent();
-extern char    *dn_normalize();
-extern Entry   *dn2entry();
+#include "proto-back-ldbm.h"
 
 int
 ldbm_back_add(
@@ -21,49 +25,48 @@ ldbm_back_add(
 )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       char            *matched;
-       char            *dn = NULL, *pdn = NULL;
-       Entry           *p;
-
-       dn = dn_normalize( strdup( e->e_dn ) );
-       matched = NULL;
-       if ( (p = dn2entry( be, dn, &matched )) != NULL ) {
-               cache_return_entry( &li->li_cache, p );
-               entry_free( e );
-               free( dn );
-               send_ldap_result( conn, op, LDAP_ALREADY_EXISTS, "", "" );
-               return( -1 );
-       }
-       if ( matched != NULL ) {
-               free( matched );
-       }
-       /* XXX race condition here til we cache_add_entry_lock below XXX */
+       struct berval   pdn;
+       Entry           *p = NULL;
+       int                     rc;
+       ID               id = NOID;
+       const char      *text = NULL;
+       AttributeDescription *children = slap_schema.si_ad_children;
+       char textbuf[SLAP_TEXT_BUFLEN];
+       size_t textlen = sizeof textbuf;
 
-       if ( global_schemacheck && oc_schema_check( e ) != 0 ) {
-               Debug( LDAP_DEBUG_TRACE, "entry failed schema check\n", 0, 0,
-                   0 );
-               entry_free( e );
-               free( dn );
-               send_ldap_result( conn, op, LDAP_OBJECT_CLASS_VIOLATION, "",
-                   "" );
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, "ldbm_back_add: %s\n", e->e_dn, 0, 0 );
+#else
+       Debug(LDAP_DEBUG_ARGS, "==> ldbm_back_add: %s\n", e->e_dn, 0, 0);
+#endif
+
+       /* grab giant lock for writing */
+       ldap_pvt_thread_rdwr_wlock(&li->li_giant_rwlock);
+
+       if ( ( rc = dn2id( be, &e->e_nname, &id ) ) || id != NOID ) {
+               /* if (rc) something bad happened to ldbm cache */
+               ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+               send_ldap_result( conn, op, 
+                       rc ? LDAP_OPERATIONS_ERROR : LDAP_ALREADY_EXISTS,
+                       NULL, NULL, NULL, NULL );
                return( -1 );
        }
 
-       /*
-        * Try to add the entry to the cache, assign it a new dnid
-        * and mark it locked.  This should only fail if the entry
-        * already exists.
-        */
+       rc = entry_schema_check( be, e, NULL, &text, textbuf, textlen );
 
-       e->e_id = next_id( be );
-       if ( cache_add_entry_lock( &li->li_cache, e, ENTRY_STATE_CREATING )
-           != 0 ) {
-               Debug( LDAP_DEBUG_ANY, "cache_add_entry_lock failed\n", 0, 0,
-                   0 );
-               next_id_return( be, e->e_id );
-               entry_free( e );
-               free( dn );
-               send_ldap_result( conn, op, LDAP_ALREADY_EXISTS, "", "" );
+       if ( rc != LDAP_SUCCESS ) {
+               ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR, 
+                       "ldbm_back_add: entry (%s) failed schema check.\n", e->e_dn, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_TRACE, "entry failed schema check: %s\n",
+                       text, 0, 0 );
+#endif
+
+               send_ldap_result( conn, op, rc,
+                       NULL, text, NULL, NULL );
                return( -1 );
        }
 
@@ -73,101 +76,311 @@ ldbm_back_add(
         * add the entry.
         */
 
-       if ( (pdn = dn_parent( be, dn )) != NULL ) {
-               /* no parent */
-               matched = NULL;
-               if ( (p = dn2entry( be, pdn, &matched )) == NULL ) {
-                       send_ldap_result( conn, op, LDAP_NO_SUCH_OBJECT,
-                           matched, "" );
+       if ( be_issuffix( be, &e->e_nname ) ) {
+               pdn = slap_empty_bv;
+       } else {
+               dnParent( &e->e_nname, &pdn );
+       }
+
+       if( pdn.bv_len ) {
+               Entry *matched = NULL;
+
+               /* get parent with writer lock */
+               if ( (p = dn2entry_w( be, &pdn, &matched )) == NULL ) {
+                       char *matched_dn = NULL;
+                       BerVarray refs;
+
                        if ( matched != NULL ) {
-                               free( matched );
+                               matched_dn = ch_strdup( matched->e_dn );
+                               refs = is_entry_referral( matched )
+                                       ? get_entry_referrals( be, conn, op, matched )
+                                       : NULL;
+                               cache_return_entry_r( &li->li_cache, matched );
+
+                       } else {
+                               refs = referral_rewrite( default_referral,
+                                       NULL, &e->e_name, LDAP_SCOPE_DEFAULT );
                        }
-                       Debug( LDAP_DEBUG_TRACE, "parent does not exist\n", 0,
+
+                       ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_LDBM, ERR, 
+                               "ldbm_back_add: Parent of (%s) does not exist.\n", 
+                               e->e_dn, 0, 0 );
+#else
+                       Debug( LDAP_DEBUG_TRACE, "parent does not exist\n",
+                               0, 0, 0 );
+#endif
+
+                       send_ldap_result( conn, op, LDAP_REFERRAL, matched_dn,
+                               refs == NULL ? "parent does not exist" : "parent is referral",
+                               refs, NULL );
+
+                       ber_bvarray_free( refs );
+                       free( matched_dn );
+
+                       return -1;
+               }
+
+               if ( ! access_allowed( be, conn, op, p,
+                       children, NULL, ACL_WRITE, NULL ) )
+               {
+                       /* free parent and writer lock */
+                       cache_return_entry_w( &li->li_cache, p ); 
+                       ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_LDBM, ERR, 
+                               "ldbm_back_add: No write access to parent (%s).\n", 
+                               e->e_dn, 0, 0 );
+#else
+                       Debug( LDAP_DEBUG_TRACE, "no write access to parent\n", 0,
                            0, 0 );
-                       goto error_return;
+#endif
+
+                       send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
+                           NULL, "no write access to parent", NULL, NULL );
+
+                       return -1;
                }
-               if ( matched != NULL ) {
-                       free( matched );
+
+               if ( is_entry_alias( p ) ) {
+                       /* parent is an alias, don't allow add */
+
+                       /* free parent and writer lock */
+                       cache_return_entry_w( &li->li_cache, p );
+                       ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+
+#ifdef NEW_LOGGING
+                       LDAP_LOG(BACK_LDBM, ERR, 
+                               "ldbm_back_add:  Parent is an alias.\n", 0, 0, 0 );
+#else
+                       Debug( LDAP_DEBUG_TRACE, "parent is alias\n", 0,
+                           0, 0 );
+#endif
+
+
+                       send_ldap_result( conn, op, LDAP_ALIAS_PROBLEM,
+                           NULL, "parent is an alias", NULL, NULL );
+
+                       return -1;
                }
 
-               if ( ! access_allowed( be, conn, op, p, "children", NULL,
-                   op->o_dn, ACL_WRITE ) ) {
-                       Debug( LDAP_DEBUG_TRACE, "no access to parent\n", 0,
+               if ( is_entry_referral( p ) ) {
+                       /* parent is a referral, don't allow add */
+                       char *matched_dn = ch_strdup( p->e_dn );
+                       BerVarray refs = is_entry_referral( p )
+                               ? get_entry_referrals( be, conn, op, p )
+                               : NULL;
+
+                       /* free parent and writer lock */
+                       cache_return_entry_w( &li->li_cache, p );
+                       ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_LDBM, ERR,
+                                  "ldbm_back_add: Parent is referral.\n", 0, 0, 0 );
+#else
+                       Debug( LDAP_DEBUG_TRACE, "parent is referral\n", 0,
                            0, 0 );
-                       send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
-                           "", "" );
-                       goto error_return;
+#endif
+
+                       send_ldap_result( conn, op, LDAP_REFERRAL,
+                           matched_dn, NULL, refs, NULL );
+
+                       ber_bvarray_free( refs );
+                       free( matched_dn );
+                       return -1;
                }
+
        } else {
-               if ( ! be_isroot( be, op->o_dn ) ) {
-                       Debug( LDAP_DEBUG_TRACE, "no parent & not root\n", 0,
-                           0, 0 );
-                       send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
-                           "", "" );
-                       goto error_return;
+               if(pdn.bv_val != NULL) {
+                       assert( *pdn.bv_val == '\0' );
+               }
+
+               /* no parent, must be adding entry to root */
+               if ( !be_isroot( be, &op->o_ndn ) ) {
+                       if ( be_issuffix( be, (struct berval *)&slap_empty_bv ) || be_isupdate( be, &op->o_ndn ) ) {
+                               p = (Entry *)&slap_entry_root;
+                               
+                               rc = access_allowed( be, conn, op, p,
+                                       children, NULL, ACL_WRITE, NULL );
+                               p = NULL;
+                               
+                               if ( ! rc ) {
+                                       ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+
+#ifdef NEW_LOGGING
+                                       LDAP_LOG( BACK_LDBM, ERR,
+                                               "ldbm_back_add: No write "
+                                               "access to parent (\"\").\n", 0, 0, 0 );
+#else
+                                       Debug( LDAP_DEBUG_TRACE, 
+                                               "no write access to parent\n", 
+                                               0, 0, 0 );
+#endif
+
+                                       send_ldap_result( conn, op, 
+                                               LDAP_INSUFFICIENT_ACCESS,
+                                               NULL, 
+                                               "no write access to parent", 
+                                               NULL, NULL );
+
+                                       return -1;
+                               }
+
+                       } else {
+                               ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+
+#ifdef NEW_LOGGING
+                               LDAP_LOG( BACK_LDBM, ERR,
+                                          "ldbm_back_add: %s add denied.\n",
+                                          pdn.bv_val == NULL ? "suffix" 
+                                          : "entry at root", 0, 0 );
+#else
+                               Debug( LDAP_DEBUG_TRACE, "%s add denied\n",
+                                               pdn.bv_val == NULL ? "suffix" 
+                                               : "entry at root", 0, 0 );
+#endif
+
+                               send_ldap_result( conn, op, 
+                                               LDAP_INSUFFICIENT_ACCESS,
+                                               NULL, NULL, NULL, NULL );
+
+                               return -1;
+                       }
                }
-               p = NULL;
        }
 
-       /*
-        * add it to the id2children index for the parent
-        */
+       if ( next_id( be, &e->e_id ) ) {
+               if( p != NULL) {
+                       /* free parent and writer lock */
+                       cache_return_entry_w( &li->li_cache, p ); 
+               }
 
-       if ( id2children_add( be, p, e ) != 0 ) {
-               Debug( LDAP_DEBUG_TRACE, "id2children_add failed\n", 0,
-                   0, 0 );
-               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, "",
-                   "" );
-               goto error_return;
+               ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR,
+                       "ldbm_back_add: next_id failed.\n", 0, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "ldbm_add: next_id failed\n",
+                       0, 0, 0 );
+#endif
+
+               send_ldap_result( conn, op, LDAP_OTHER,
+                       NULL, "next_id add failed", NULL, NULL );
+
+               return( -1 );
        }
 
        /*
-        * Add the entry to the attribute indexes, then add it to
-        * the id2children index, dn2id index, and the id2entry index.
+        * Try to add the entry to the cache, assign it a new dnid.
         */
+       rc = cache_add_entry_rw(&li->li_cache, e, CACHE_WRITE_LOCK);
+
+       if ( rc != 0 ) {
+               if( p != NULL) {
+                       /* free parent and writer lock */
+                       cache_return_entry_w( &li->li_cache, p ); 
+               }
+
+               ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR,
+                       "ldbm_back_add: cache_add_entry_lock failed.\n", 0, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "cache_add_entry_lock failed\n", 0, 0,
+                   0 );
+#endif
+
+               send_ldap_result( conn, op,
+                       rc > 0 ? LDAP_ALREADY_EXISTS : LDAP_OTHER,
+                       NULL, rc > 0 ? NULL : "cache add failed", NULL, NULL );
+
+               return( -1 );
+       }
+
+       rc = -1;
 
        /* attribute indexes */
-       if ( index_add_entry( be, e ) != 0 ) {
-               Debug( LDAP_DEBUG_TRACE, "index_add_entry failed\n", 0,
+       if ( index_entry_add( be, e, e->e_attrs ) != LDAP_SUCCESS ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR,
+                       "ldbm_back_add: index_entry_add failed.\n", 0, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_TRACE, "index_entry_add failed\n", 0,
                    0, 0 );
-               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, "", "" );
-               goto error_return;
+#endif
+               
+               send_ldap_result( conn, op, LDAP_OTHER,
+                       NULL, "index generation failed", NULL, NULL );
+
+               goto return_results;
        }
 
        /* dn2id index */
-       if ( dn2id_add( be, dn, e->e_id ) != 0 ) {
+       if ( dn2id_add( be, &e->e_nname, e->e_id ) != 0 ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR,
+                       "ldbm_back_add: dn2id_add failed.\n", 0, 0, 0 );
+#else
                Debug( LDAP_DEBUG_TRACE, "dn2id_add failed\n", 0,
                    0, 0 );
-               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, "", "" );
-               goto error_return;
+#endif
+               /* FIXME: delete attr indices? */
+
+               send_ldap_result( conn, op, LDAP_OTHER,
+                       NULL, "DN index generation failed", NULL, NULL );
+
+               goto return_results;
        }
 
        /* id2entry index */
        if ( id2entry_add( be, e ) != 0 ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR,
+                          "ldbm_back_add: id2entry_add failed.\n", 0, 0, 0 );
+#else
                Debug( LDAP_DEBUG_TRACE, "id2entry_add failed\n", 0,
                    0, 0 );
-               (void) dn2id_delete( be, dn );
-               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, "", "" );
-               goto error_return;
+#endif
+
+               /* FIXME: delete attr indices? */
+               (void) dn2id_delete( be, &e->e_nname, e->e_id );
+               
+               send_ldap_result( conn, op, LDAP_OTHER,
+                       NULL, "entry store failed", NULL, NULL );
+
+               goto return_results;
+       }
+
+       send_ldap_result( conn, op, LDAP_SUCCESS,
+               NULL, NULL, NULL, NULL );
+
+       /* marks the entry as committed, so it is added to the cache;
+        * otherwise it is removed from the cache, but not destroyed;
+        * it will be destroyed by the caller */
+       rc = 0;
+       cache_entry_commit( e );
+
+return_results:;
+       if (p != NULL) {
+               /* free parent and writer lock */
+               cache_return_entry_w( &li->li_cache, p ); 
+       }
+
+       if ( rc ) {
+               /*
+                * in case of error, writer lock is freed 
+                * and entry's private data is destroyed.
+                * otherwise, this is done when entry is released
+                */
+               cache_return_entry_w( &li->li_cache, e );
+               ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
        }
 
-       send_ldap_result( conn, op, LDAP_SUCCESS, "", "" );
-       if ( dn != NULL )
-               free( dn );
-       if ( pdn != NULL )
-               free( pdn );
-       cache_set_state( &li->li_cache, e, 0 );
-       cache_return_entry( &li->li_cache, e );
-       return( 0 );
-
-error_return:;
-       if ( dn != NULL )
-               free( dn );
-       if ( pdn != NULL )
-               free( pdn );
-       next_id_return( be, e->e_id );
-       cache_delete_entry( &li->li_cache, e );
-       cache_return_entry( &li->li_cache, e );
-
-       return( -1 );
+       return( rc );
 }
index d0bb831c263337797c0f5ed1e8f2603c35664ec8..6bfa9824b4a12a096fe6e6b15697924b852d99be 100644 (file)
 /* attr.c - backend routines for dealing with attributes */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
 
 #include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
+
+#include <ac/socket.h>
+#include <ac/string.h>
+
 #include "slap.h"
 #include "back-ldbm.h"
 
-extern char    **str2charray();
+/* for the cache of attribute information (which are indexed, etc.) */
+typedef struct ldbm_attrinfo {
+       AttributeDescription *ai_desc; /* attribute description cn;lang-en */
+       slap_mask_t ai_indexmask;       /* how the attr is indexed      */
+} AttrInfo;
 
 static int
 ainfo_type_cmp(
-    char               *type,
-    struct attrinfo    *a
+       AttributeDescription *desc,
+    AttrInfo   *a
 )
 {
-       return( strcasecmp( type, a->ai_type ) );
+       return desc - a->ai_desc;
 }
 
 static int
 ainfo_cmp(
-    struct attrinfo    *a,
-    struct attrinfo    *b
+    AttrInfo   *a,
+    AttrInfo   *b
 )
 {
-       return( strcasecmp( a->ai_type, b->ai_type ) );
-}
-
-/*
- * Called when a duplicate "index" line is encountered.
- *
- * returns 1 => original from init code, indexmask updated
- *        2 => original not from init code, warn the user
- */
-
-static int
-ainfo_dup(
-    struct attrinfo    *a,
-    struct attrinfo    *b
-)
-{
-       /*
-        * if the duplicate definition is because we initialized the attr,
-        * just add what came from the config file. otherwise, complain.
-        */
-       if ( a->ai_indexmask & INDEX_FROMINIT ) {
-               a->ai_indexmask |= b->ai_indexmask;
-
-               return( 1 );
-       }
-
-       return( 2 );
+       return a->ai_desc - b->ai_desc;
 }
 
 void
-attr_masks(
+attr_mask(
     struct ldbminfo    *li,
-    char               *type,
-    int                        *indexmask,
-    int                        *syntaxmask
-)
+    AttributeDescription *desc,
+    slap_mask_t *indexmask )
 {
-       struct attrinfo *a;
-
-       *indexmask = 0;
-       *syntaxmask = 0;
-       if ( (a = (struct attrinfo *) avl_find( li->li_attrs, type,
-           ainfo_type_cmp )) == NULL ) {
-               if ( (a = (struct attrinfo *) avl_find( li->li_attrs, "default",
-                   ainfo_type_cmp )) == NULL ) {
-                       return;
-               }
-       }
-       *indexmask = a->ai_indexmask;
-       if ( strcasecmp( a->ai_type, "default" ) == 0 ) {
-               *syntaxmask = attr_syntax( type );
-       } else {
-               *syntaxmask = a->ai_syntaxmask;
-       }
+       AttrInfo        *a;
+
+       a = (AttrInfo *) avl_find( li->li_attrs, desc,
+           (AVL_CMP) ainfo_type_cmp );
+       
+       *indexmask = a != NULL ? a->ai_indexmask : 0;
 }
 
-void
+int
 attr_index_config(
     struct ldbminfo    *li,
-    char               *fname,
+    const char         *fname,
     int                        lineno,
     int                        argc,
-    char               **argv,
-    int                        init
-)
+    char               **argv )
 {
-       int             i, j;
-       char            **attrs, **indexes;
-       struct attrinfo *a;
+       int rc;
+       int     i;
+       slap_mask_t mask;
+       char **attrs;
+       char **indexes = NULL;
 
        attrs = str2charray( argv[0], "," );
+
+       if( attrs == NULL ) {
+               fprintf( stderr, "%s: line %d: "
+                       "no attributes specified: %s\n",
+                       fname, lineno, argv[0] );
+               return LDAP_PARAM_ERROR;
+       }
+
        if ( argc > 1 ) {
                indexes = str2charray( argv[1], "," );
+
+               if( indexes == NULL ) {
+                       fprintf( stderr, "%s: line %d: "
+                               "no indexes specified: %s\n",
+                               fname, lineno, argv[1] );
+                       return LDAP_PARAM_ERROR;
+               }
        }
-       for ( i = 0; attrs[i] != NULL; i++ ) {
-               a = (struct attrinfo *) ch_malloc( sizeof(struct attrinfo) );
-               a->ai_type = strdup( attrs[i] );
-               a->ai_syntaxmask = attr_syntax( a->ai_type );
-               if ( argc == 1 ) {
-                       a->ai_indexmask = (INDEX_PRESENCE | INDEX_EQUALITY |
-                           INDEX_APPROX | INDEX_SUB);
-               } else {
-                       a->ai_indexmask = 0;
-                       for ( j = 0; indexes[j] != NULL; j++ ) {
-                               if ( strncasecmp( indexes[j], "pres", 4 )
-                                   == 0 ) {
-                                       a->ai_indexmask |= INDEX_PRESENCE;
-                               } else if ( strncasecmp( indexes[j], "eq", 2 )
-                                   == 0 ) {
-                                       a->ai_indexmask |= INDEX_EQUALITY;
-                               } else if ( strncasecmp( indexes[j], "approx",
-                                   6 ) == 0 ) {
-                                       a->ai_indexmask |= INDEX_APPROX;
-                               } else if ( strncasecmp( indexes[j], "sub", 3 )
-                                   == 0 ) {
-                                       a->ai_indexmask |= INDEX_SUB;
-                               } else if ( strncasecmp( indexes[j], "none", 4 )
-                                   == 0 ) {
-                                       if ( a->ai_indexmask != 0 ) {
-                                               fprintf( stderr,
-"%s: line %d: index type \"none\" cannot be combined with other types\n",
-                                                   fname, lineno );
-                                       }
-                                       a->ai_indexmask = 0;
-                               } else {
-                                       fprintf( stderr,
-                       "%s: line %d: unknown index type \"%s\" (ignored)\n",
-                                           fname, lineno, indexes[j] );
-                                       fprintf( stderr,
-       "valid index types are \"pres\", \"eq\", \"approx\", or \"sub\"\n" );
-                               }
+
+       if( indexes == NULL ) {
+               mask = li->li_defaultmask;
+
+       } else {
+               mask = 0;
+
+               for ( i = 0; indexes[i] != NULL; i++ ) {
+                       slap_mask_t index;
+                       rc = slap_str2index( indexes[i], &index );
+
+                       if( rc != LDAP_SUCCESS ) {
+                               fprintf( stderr, "%s: line %d: "
+                                       "index type \"%s\" undefined\n",
+                                       fname, lineno, indexes[i] );
+                               return LDAP_PARAM_ERROR;
                        }
+
+                       mask |= index;
+               }
+       }
+
+    if( !mask ) {
+               fprintf( stderr, "%s: line %d: "
+                       "no indexes selected\n",
+                       fname, lineno );
+               return LDAP_PARAM_ERROR;
+       }
+
+       for ( i = 0; attrs[i] != NULL; i++ ) {
+               AttrInfo        *a;
+               AttributeDescription *ad;
+               const char *text;
+
+               if( strcasecmp( attrs[i], "default" ) == 0 ) {
+                       li->li_defaultmask = mask;
+                       continue;
+               }
+
+               a = (AttrInfo *) ch_malloc( sizeof(AttrInfo) );
+
+               ad = NULL;
+               rc = slap_str2ad( attrs[i], &ad, &text );
+
+               if( rc != LDAP_SUCCESS ) {
+                       fprintf( stderr, "%s: line %d: "
+                               "index attribute \"%s\" undefined\n",
+                               fname, lineno, attrs[i] );
+                       return rc;
+               }
+
+               if( slap_ad_is_binary( ad ) ) {
+                       fprintf( stderr, "%s: line %d: "
+                               "index of attribute \"%s\" disallowed\n",
+                               fname, lineno, attrs[i] );
+                       return LDAP_UNWILLING_TO_PERFORM;
+               }
+
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_APPROX ) && !(
+                       ( ad->ad_type->sat_approx
+                               && ad->ad_type->sat_approx->smr_indexer
+                               && ad->ad_type->sat_approx->smr_filter )
+                       && ( ad->ad_type->sat_equality
+                               && ad->ad_type->sat_equality->smr_indexer
+                               && ad->ad_type->sat_equality->smr_filter ) ) )
+               {
+                       fprintf( stderr, "%s: line %d: "
+                               "approx index of attribute \"%s\" disallowed\n",
+                               fname, lineno, attrs[i] );
+                       return LDAP_INAPPROPRIATE_MATCHING;
+               }
+
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_EQUALITY ) && !(
+                       ad->ad_type->sat_equality
+                               && ad->ad_type->sat_equality->smr_indexer
+                               && ad->ad_type->sat_equality->smr_filter ) )
+               {
+                       fprintf( stderr, "%s: line %d: "
+                               "equality index of attribute \"%s\" disallowed\n",
+                               fname, lineno, attrs[i] );
+                       return LDAP_INAPPROPRIATE_MATCHING;
                }
-               if ( init ) {
-                       a->ai_indexmask |= INDEX_FROMINIT;
+
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_SUBSTR ) && !(
+                       ad->ad_type->sat_substr
+                               && ad->ad_type->sat_substr->smr_indexer
+                               && ad->ad_type->sat_substr->smr_filter ) )
+               {
+                       fprintf( stderr, "%s: line %d: "
+                               "substr index of attribute \"%s\" disallowed\n",
+                               fname, lineno, attrs[i] );
+                       return LDAP_INAPPROPRIATE_MATCHING;
                }
 
-               switch (avl_insert( &li->li_attrs, a, ainfo_cmp, ainfo_dup )) {
-               case 1:         /* duplicate - updating init version */
-                       free( a->ai_type );
-                       free( (char *) a );
-                       break;
-
-               case 2:         /* user duplicate - ignore and warn */
-                       fprintf( stderr,
-    "%s: line %d: duplicate index definition for attr \"%s\" (ignored)\n",
-                           fname, lineno, a->ai_type );
-                       free( a->ai_type );
-                       free( (char *) a );
-                       break;
-
-               default:;       /* inserted ok */
-                       /* FALL */
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, DETAIL1, 
+                       "attr_index_config: index %s 0x%04lx\n", 
+                       ad->ad_cname.bv_val, mask, 0 );
+#else
+               Debug( LDAP_DEBUG_CONFIG, "index %s 0x%04lx\n",
+                       ad->ad_cname.bv_val, mask, 0 ); 
+#endif
+
+
+               a->ai_desc = ad;
+
+               a->ai_indexmask = mask;
+
+               rc = avl_insert( &li->li_attrs, (caddr_t) a,
+                       (AVL_CMP) ainfo_cmp, (AVL_DUP) avl_dup_error );
+
+               if( rc ) {
+                       fprintf( stderr, "%s: line %d: duplicate index definition "
+                               "for attr \"%s\" (ignored)\n",
+                           fname, lineno, attrs[i] );
+
+                       return LDAP_PARAM_ERROR;
                }
        }
+
        charray_free( attrs );
-       if ( argc > 1 )
-               charray_free( indexes );
+       if ( indexes != NULL ) charray_free( indexes );
+
+       return LDAP_SUCCESS;
+}
+
+void
+attr_index_destroy( Avlnode *tree )
+{
+       avl_free( tree, free );
 }
index eaa8d3e116e2cece0b479d0b0cb8c1f4605e0b89..0dc5daf03a20fb31a7e4f2f50743b0f0b0145520 100644 (file)
@@ -16,7 +16,6 @@
 #include "back-ldbm.h"
 #include "proto-back-ldbm.h"
 
-
 /* return LDAP_SUCCESS IFF we can retrieve the attributes
  * of entry with e_ndn
  */
@@ -41,13 +40,12 @@ ldbm_back_attribute(
        int nvals = 0;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ARGS,
-               "ldbm_back_attribute: gr dn: \"%s\"\n", entry_ndn->bv_val ));
-       LDAP_LOG(( "backend", LDAP_LEVEL_ARGS,
-               "ldbm_back_attribute: at: \"%s\"\n", entry_at_name));
-       LDAP_LOG(( "backend", LDAP_LEVEL_ARGS,
-               "ldbm_back_attribute: tr dn: \"%s\"\n",
-               target ? target->e_ndn : "" ));
+       LDAP_LOG( BACK_LDBM, ARGS,
+               "ldbm_back_attribute: gr dn: \"%s\"\n", entry_ndn->bv_val, 0, 0 );
+       LDAP_LOG( BACK_LDBM, ARGS, 
+               "ldbm_back_attribute: at: \"%s\"\n", entry_at_name, 0, 0);
+       LDAP_LOG( BACK_LDBM, ARGS, "ldbm_back_attribute: tr dn: \"%s\"\n",
+               target ? target->e_ndn : "", 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS,
                "=> ldbm_back_attribute: gr dn: \"%s\"\n",
@@ -65,9 +63,9 @@ ldbm_back_attribute(
                /* we already have a LOCKED copy of the entry */
                e = target;
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                       "ldbm_back_attribute: target is LOCKED (%s)\n",
-                       entry_ndn->bv_val ));
+               LDAP_LOG( BACK_LDBM, DETAIL1, 
+                       "ldbm_back_attribute: target is LOCKED (%s)\n", 
+                       entry_ndn->bv_val, 0, 0);
 #else
                Debug( LDAP_DEBUG_ARGS,
                        "=> ldbm_back_attribute: target is entry: \"%s\"\n",
@@ -79,9 +77,9 @@ ldbm_back_attribute(
                /* can we find entry with reader lock */
                if ((e = dn2entry_r(be, entry_ndn, NULL )) == NULL) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
+                       LDAP_LOG( BACK_LDBM, INFO, 
                                "ldbm_back_attribute: cannot find entry (%s)\n",
-                               entry_ndn->bv_val ));
+                               entry_ndn->bv_val, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ACL,
                                "=> ldbm_back_attribute: cannot find entry: \"%s\"\n",
@@ -92,9 +90,8 @@ ldbm_back_attribute(
                }
                
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                       "ldbm_back_attribute: found entry (%s)\n",
-                       entry_ndn->bv_val ));
+               LDAP_LOG( BACK_LDBM, DETAIL1, 
+                       "ldbm_back_attribute: found entry (%s)\n", entry_ndn->bv_val, 0, 0);
 #else
                Debug( LDAP_DEBUG_ACL,
                        "=> ldbm_back_attribute: found entry: \"%s\"\n",
@@ -107,8 +104,8 @@ ldbm_back_attribute(
 
        if( is_entry_alias( e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "ldbm_back_attribute: entry (%s) is an alias\n", e->e_dn ));
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_attribute: entry (%s) is an alias\n", e->e_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= ldbm_back_attribute: entry is an alias\n", 0, 0, 0 );
@@ -120,8 +117,8 @@ ldbm_back_attribute(
 
        if( is_entry_referral( e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "ldbm_back_attribute: entry (%s) is a referral.\n", e->e_dn ));
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_attribute: entry (%s) is a referral.\n", e->e_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= ldbm_back_attribute: entry is an referral\n", 0, 0, 0 );
@@ -141,8 +138,8 @@ ldbm_back_attribute(
 
        if ((attr = attr_find(e->e_attrs, entry_at)) == NULL) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "ldbm_back_attribute: failed to find %s.\n", entry_at_name ));
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_attribute: failed to find %s.\n", entry_at_name, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "<= ldbm_back_attribute: failed to find %s\n",
@@ -199,9 +196,8 @@ return_results:
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
-                  "ldbm_back_attribute: rc=%d nvals=%d.\n",
-                  rc, nvals ));
+       LDAP_LOG( BACK_LDBM, ENTRY, 
+               "ldbm_back_attribute: rc=%d nvals=%d.\n", rc, nvals, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "ldbm_back_attribute: rc=%d nvals=%d\n",
index 88fd4030c41df52a20815451fdc6491f4f431449..766e31c0c693bcfbb1d56c3a8de190acddcd8ff4 100644 (file)
 /* bind.c - ldbm backend bind and unbind routines */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
 
 #include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include "slap.h"
-#include "back-ldbm.h"
-#ifdef KERBEROS
-#include "krb.h"
-#endif
 
-extern Entry           *dn2entry();
-extern Attribute       *attr_find();
+#include <ac/krb.h>
+#include <ac/socket.h>
+#include <ac/string.h>
+#include <ac/unistd.h>
 
-#ifdef KERBEROS
-extern int     krbv4_ldap_auth();
-#endif
+#include "slap.h"
+#include "back-ldbm.h"
+#include "proto-back-ldbm.h"
 
 int
 ldbm_back_bind(
     Backend            *be,
     Connection         *conn,
     Operation          *op,
-    char               *dn,
+    struct berval      *dn,
+    struct berval      *ndn,
     int                        method,
-    struct berval      *cred
+    struct berval      *cred,
+    struct berval      *edn
 )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
        Entry           *e;
        Attribute       *a;
        int             rc;
-       char            *matched = NULL;
-#ifdef KERBEROS
+       Entry           *matched;
+#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
        char            krbname[MAX_K_NAME_SZ + 1];
+       AttributeDescription *krbattr = slap_schema.si_ad_krbName;
        AUTH_DAT        ad;
 #endif
 
-       if ( (e = dn2entry( be, dn, &matched )) == NULL ) {
-               /* allow noauth binds */
-               if ( method == LDAP_AUTH_SIMPLE && cred->bv_len == 0 ) {
-                       /*
-                        * bind successful, but return 1 so we don't
-                        * authorize based on noauth credentials
-                        */
-                       send_ldap_result( conn, op, LDAP_SUCCESS, NULL, NULL );
-                       rc = 1;
-               } else if ( be_isroot_pw( be, dn, cred ) ) {
-                       /* front end will send result */
-                       rc = 0;
+       AttributeDescription *password = slap_schema.si_ad_userPassword;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, 
+               "ldbm_back_bind: dn: %s.\n", dn->bv_val, 0, 0 );
+#else
+       Debug(LDAP_DEBUG_ARGS, "==> ldbm_back_bind: dn: %s\n", dn->bv_val, 0, 0);
+#endif
+
+       dn = ndn;
+
+       /* grab giant lock for reading */
+       ldap_pvt_thread_rdwr_rlock(&li->li_giant_rwlock);
+
+       /* get entry with reader lock */
+       if ( (e = dn2entry_r( be, dn, &matched )) == NULL ) {
+               char *matched_dn = NULL;
+               BerVarray refs = NULL;
+
+               if( matched != NULL ) {
+                       matched_dn = ch_strdup( matched->e_dn );
+
+                       refs = is_entry_referral( matched )
+                               ? get_entry_referrals( be, conn, op, matched )
+                               : NULL;
+
+                       cache_return_entry_r( &li->li_cache, matched );
+
                } else {
-                       send_ldap_result( conn, op, LDAP_NO_SUCH_OBJECT,
-                           matched, NULL );
-                       rc = 1;
+                       refs = referral_rewrite( default_referral,
+                               NULL, dn, LDAP_SCOPE_DEFAULT );
                }
-               if ( matched != NULL ) {
-                       free( matched );
+
+               ldap_pvt_thread_rdwr_runlock(&li->li_giant_rwlock);
+
+               /* allow noauth binds */
+               rc = 1;
+               if ( method == LDAP_AUTH_SIMPLE ) {
+                       if ( be_isroot_pw( be, conn, dn, cred ) ) {
+                               ber_dupbv( edn, be_root_dn( be ) );
+                               rc = 0; /* front end will send result */
+
+                       } else if ( refs != NULL ) {
+                               send_ldap_result( conn, op, LDAP_REFERRAL,
+                                       matched_dn, NULL, refs, NULL );
+
+                       } else {
+                               send_ldap_result( conn, op, LDAP_INVALID_CREDENTIALS,
+                                       NULL, NULL, NULL, NULL );
+                       }
+
+               } else if ( refs != NULL ) {
+                       send_ldap_result( conn, op, LDAP_REFERRAL,
+                               matched_dn, NULL, refs, NULL );
+
+               } else {
+                       send_ldap_result( conn, op, LDAP_INVALID_CREDENTIALS,
+                               NULL, NULL, NULL, NULL );
                }
+
+               if ( refs ) ber_bvarray_free( refs );
+               if ( matched_dn ) free( matched_dn );
                return( rc );
        }
 
+       ber_dupbv( edn, &e->e_name );
+
+       /* check for deleted */
+
+       if ( is_entry_alias( e ) ) {
+               /* entry is an alias, don't allow bind */
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_bind: entry (%s) is an alias.\n", e->e_dn, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_TRACE, "entry is alias\n", 0,
+                   0, 0 );
+#endif
+
+
+               send_ldap_result( conn, op, LDAP_ALIAS_PROBLEM,
+                   NULL, "entry is alias", NULL, NULL );
+
+               rc = 1;
+               goto return_results;
+       }
+
+       if ( is_entry_referral( e ) ) {
+               /* entry is a referral, don't allow bind */
+               BerVarray refs = get_entry_referrals( be,
+                       conn, op, e );
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, INFO, 
+                          "ldbm_back_bind: entry(%s) is a referral.\n", e->e_dn, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0,
+                   0, 0 );
+#endif
+
+
+               if( refs != NULL ) {
+                       send_ldap_result( conn, op, LDAP_REFERRAL,
+                               e->e_dn, NULL, refs, NULL );
+
+               } else {
+                       send_ldap_result( conn, op, LDAP_INVALID_CREDENTIALS,
+                               NULL, NULL, NULL, NULL );
+               }
+
+               ber_bvarray_free( refs );
+
+               rc = 1;
+               goto return_results;
+       }
+
        switch ( method ) {
        case LDAP_AUTH_SIMPLE:
-               if ( cred->bv_len == 0 ) {
-                       send_ldap_result( conn, op, LDAP_SUCCESS, NULL, NULL );
-                       return( 1 );
-               } else if ( be_isroot_pw( be, dn, cred ) ) {
+               /* check for root dn/passwd */
+               if ( be_isroot_pw( be, conn, dn, cred ) ) {
                        /* front end will send result */
-                       return( 0 );
+                       if(edn->bv_val != NULL) free( edn->bv_val );
+                       ber_dupbv( edn, be_root_dn( be ) );
+                       rc = 0;
+                       goto return_results;
                }
 
-               if ( (a = attr_find( e->e_attrs, "userpassword" )) == NULL ) {
-                       if ( be_isroot_pw( be, dn, cred ) ) {
-                               /* front end will send result */
-                               return( 0 );
-                       }
+               if ( ! access_allowed( be, conn, op, e,
+                       password, NULL, ACL_AUTH, NULL ) )
+               {
+                       send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
+                               NULL, NULL, NULL, NULL );
+                       rc = 1;
+                       goto return_results;
+               }
+
+               if ( (a = attr_find( e->e_attrs, password )) == NULL ) {
                        send_ldap_result( conn, op, LDAP_INAPPROPRIATE_AUTH,
-                           NULL, NULL );
-                       cache_return_entry( &li->li_cache, e );
-                       return( 1 );
+                           NULL, NULL, NULL, NULL );
+
+                       /* stop front end from sending result */
+                       rc = 1;
+                       goto return_results;
                }
 
-               if ( value_find( a->a_vals, cred, a->a_syntax, 0 ) != 0 ) {
-                       if ( be_isroot_pw( be, dn, cred ) ) {
-                               /* front end will send result */
-                               return( 0 );
-                       }
+               if ( slap_passwd_check( conn, a, cred ) != 0 ) {
                        send_ldap_result( conn, op, LDAP_INVALID_CREDENTIALS,
-                           NULL, NULL );
-                       cache_return_entry( &li->li_cache, e );
-                       return( 1 );
+                               NULL, NULL, NULL, NULL );
+                       /* stop front end from sending result */
+                       rc = 1;
+                       goto return_results;
                }
+
+               rc = 0;
                break;
 
-#ifdef KERBEROS
+#ifdef LDAP_API_FEATURE_X_OPENLDAP_V2_KBIND
        case LDAP_AUTH_KRBV41:
                if ( krbv4_ldap_auth( be, cred, &ad ) != LDAP_SUCCESS ) {
                        send_ldap_result( conn, op, LDAP_INVALID_CREDENTIALS,
-                           NULL, NULL );
-                       cache_return_entry( &li->li_cache, e );
-                       return( 1 );
+                           NULL, NULL, NULL, NULL );
+                       rc = 1;
+                       goto return_results;
                }
+
+               if ( ! access_allowed( be, conn, op, e,
+                       krbattr, NULL, ACL_AUTH, NULL ) )
+               {
+                       send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
+                               NULL, NULL, NULL, NULL );
+                       rc = 1;
+                       goto return_results;
+               }
+
                sprintf( krbname, "%s%s%s@%s", ad.pname, *ad.pinst ? "."
                    : "", ad.pinst, ad.prealm );
-               if ( (a = attr_find( e->e_attrs, "krbname" )) == NULL ) {
+
+               if ( (a = attr_find( e->e_attrs, krbattr )) == NULL ) {
                        /*
-                        * no krbName values present:  check against DN
+                        * no krbname values present:  check against DN
                         */
-                       if ( strcasecmp( dn, krbname ) == 0 ) {
+                       if ( strcasecmp( dn->bv_val, krbname ) == 0 ) {
+                               rc = 0;
                                break;
                        }
                        send_ldap_result( conn, op, LDAP_INAPPROPRIATE_AUTH,
-                           NULL, NULL );
-                       cache_return_entry( &li->li_cache, e );
-                       return( 1 );
-               } else {        /* look for krbName match */
+                           NULL, NULL, NULL, NULL );
+                       rc = 1;
+                       goto return_results;
+
+               } else {        /* look for krbname match */
                        struct berval   krbval;
 
                        krbval.bv_val = krbname;
                        krbval.bv_len = strlen( krbname );
 
-                       if ( value_find( a->a_vals, &krbval, a->a_syntax, 3 )
-                           != 0 ) {
+                       if ( value_find( a->a_desc, a->a_vals, &krbval ) != 0 ) {
                                send_ldap_result( conn, op,
-                                   LDAP_INVALID_CREDENTIALS, NULL, NULL );
-                               cache_return_entry( &li->li_cache, e );
-                               return( 1 );
+                                   LDAP_INVALID_CREDENTIALS,
+                                       NULL, NULL, NULL, NULL );
+                               rc = 1;
+                               goto return_results;
                        }
                }
+               rc = 0;
                break;
 
        case LDAP_AUTH_KRBV42:
-               send_ldap_result( conn, op, LDAP_SUCCESS, NULL, NULL );
-               cache_return_entry( &li->li_cache, e );
-               return( 1 );
+               send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                       NULL, "Kerberos bind step 2 not supported",
+                       NULL, NULL );
+               /* stop front end from sending result */
+               rc = LDAP_UNWILLING_TO_PERFORM;
+               goto return_results;
 #endif
 
        default:
                send_ldap_result( conn, op, LDAP_STRONG_AUTH_NOT_SUPPORTED,
-                   NULL, "auth method not supported" );
-               cache_return_entry( &li->li_cache, e );
-               return( 1 );
+                   NULL, "authentication method not supported", NULL, NULL );
+               rc = 1;
+               goto return_results;
        }
 
-       cache_return_entry( &li->li_cache, e );
+return_results:;
+       /* free entry and reader lock */
+       cache_return_entry_r( &li->li_cache, e );
+       ldap_pvt_thread_rdwr_runlock(&li->li_giant_rwlock);
 
-       /* success:  front end will send result */
-       return( 0 );
+       /* front end with send result on success (rc==0) */
+       return( rc );
 }
+
index 72ec35e9b72cb6ef6b74670f54e47ac8e924430f..4a26488a4e8bf3831a7ab06e4f6808fb1458f110 100644 (file)
@@ -116,9 +116,9 @@ cache_return_entry_rw( Cache *cache, Entry *e, int rw )
                ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CACHE, DETAIL1, 
                           "cache_return_entry_rw: return (%ld):%s, refcnt=%d\n",
-                          id, rw ? "w" : "r", refcnt ));
+                          id, rw ? "w" : "r", refcnt );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "====> cache_return_entry_%s( %ld ): created (%d)\n",
@@ -131,9 +131,9 @@ cache_return_entry_rw( Cache *cache, Entry *e, int rw )
                        ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( CACHE, DETAIL1, 
                                   "cache_return_entry_rw: %ld, delete pending (%d).\n",
-                                  id, refcnt ));
+                                  id, refcnt, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "====> cache_return_entry_%s( %ld ): delete pending (%d)\n",
@@ -150,9 +150,8 @@ cache_return_entry_rw( Cache *cache, Entry *e, int rw )
                        ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                                  "cache_return_entry_rw: (%ld): deleted (%d)\n",
-                                  id, refcnt ));
+                       LDAP_LOG( CACHE, DETAIL1,
+                               "cache_return_entry_rw: (%ld): deleted (%d)\n", id, refcnt, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "====> cache_return_entry_%s( %ld ): deleted (%d)\n",
@@ -165,9 +164,9 @@ cache_return_entry_rw( Cache *cache, Entry *e, int rw )
                ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CACHE, DETAIL1, 
                           "cache_return_entry_rw: ID %ld:%s returned (%d)\n",
-                          id, rw ? "w": "r", refcnt ));
+                          id, rw ? "w": "r", refcnt );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "====> cache_return_entry_%s( %ld ): returned (%d)\n",
@@ -218,9 +217,9 @@ cache_add_entry_rw(
        Entry   *ee;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( CACHE, ENTRY, 
                   "cache_add_entry_rw: add (%s):%s to cache\n",
-                  e->e_dn, rw ? "w" : "r" ));
+                  e->e_dn, rw ? "w" : "r", 0 );
 #endif
        /* set cache mutex */
        ldap_pvt_thread_mutex_lock( &cache->c_mutex );
@@ -232,9 +231,9 @@ cache_add_entry_rw(
                ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_ERR,
+               LDAP_LOG( CACHE, ERR, 
                           "cache_add_entry_rw: add (%s):%ld private init failed!\n",
-                          e->e_dn, e->e_id ));
+                          e->e_dn, e->e_id, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "====> cache_add_entry( %ld ): \"%s\": private init failed!\n",
@@ -251,9 +250,9 @@ cache_add_entry_rw(
                ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                          "cache_add_entry: (%s):%ld already in cache.\n",
-                          e->e_dn, e->e_id ));
+               LDAP_LOG( CACHE, DETAIL1, 
+                       "cache_add_entry: (%s):%ld already in cache.\n", 
+                       e->e_dn, e->e_id, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "====> cache_add_entry( %ld ): \"%s\": already in dn cache\n",
@@ -270,9 +269,9 @@ cache_add_entry_rw(
                (AVL_CMP) entry_id_cmp, avl_dup_error ) != 0 )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                          "cache_add_entry: (%s):%ls already in cache.\n",
-                          e->e_dn, e->e_id ));
+               LDAP_LOG( CACHE, DETAIL1, 
+                       "cache_add_entry: (%s):%ls already in cache.\n", 
+                       e->e_dn, e->e_id, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "====> cache_add_entry( %ld ): \"%s\": already in id cache\n",
@@ -284,9 +283,9 @@ cache_add_entry_rw(
                        (AVL_CMP) entry_dn_cmp ) == NULL )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                                  "cache_add_entry: can't delete (%s) from cache.\n",
-                                  e->e_dn ));
+                       LDAP_LOG( CACHE, INFO, 
+                               "cache_add_entry: can't delete (%s) from cache.\n", 
+                               e->e_dn, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "====> can't delete from dn cache\n",
                            0, 0, 0 );
@@ -372,9 +371,9 @@ cache_update_entry(
                (AVL_CMP) entry_dn_cmp, avl_dup_error ) != 0 )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CACHE, DETAIL1, 
                           "cache_update_entry: (%s):%ld already in dn cache\n",
-                          e->e_dn, e->e_id ));
+                          e->e_dn, e->e_id, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "====> cache_update_entry( %ld ): \"%s\": already in dn cache\n",
@@ -391,9 +390,9 @@ cache_update_entry(
                (AVL_CMP) entry_id_cmp, avl_dup_error ) != 0 )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CACHE, DETAIL1, 
                           "cache_update_entry: (%s)%ld already in id cache\n",
-                          e->e_dn, e->e_id ));
+                          e->e_dn, e->e_id, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "====> cache_update_entry( %ld ): \"%s\": already in id cache\n",
@@ -405,9 +404,9 @@ cache_update_entry(
                        (AVL_CMP) entry_dn_cmp ) == NULL )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                                  "cache_update_entry: can't delete (%s)%ld from dn cache.\n",
-                                  e->e_dn, e->e_id ));
+                       LDAP_LOG( CACHE, INFO, 
+                               "cache_update_entry: can't delete (%s)%ld from dn cache.\n",
+                               e->e_dn, e->e_id, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "====> can't delete from dn cache\n",
                            0, 0, 0 );
@@ -511,9 +510,9 @@ try_again:
                        ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
+                       LDAP_LOG( CACHE, INFO, 
                                   "cache_find_entry_dn2id: (%s) %ld not ready: %d\n",
-                                  ndn->bv_val, id, state ));
+                                  ndn->bv_val, id, state );
 #else
                        Debug(LDAP_DEBUG_TRACE,
                                "====> cache_find_entry_dn2id(\"%s\"): %ld (not ready) %d\n",
@@ -532,9 +531,9 @@ try_again:
                ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CACHE, DETAIL1, 
                           "cache_find_entry_dn2id: (%s): %ld %d tries\n",
-                          ndn->bv_val, id, count ));
+                          ndn->bv_val, id, count );
 #else
                Debug(LDAP_DEBUG_TRACE,
                        "====> cache_find_entry_dn2id(\"%s\"): %ld (%d tries)\n",
@@ -594,9 +593,9 @@ try_again:
                        ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
+                       LDAP_LOG( CACHE, INFO, 
                                   "cache_find_entry_id: (%ld)->%ld not ready (%d).\n",
-                                  id, ep_id, state ));
+                                  id, ep_id, state );
                                   
 #else
                        Debug(LDAP_DEBUG_TRACE,
@@ -618,9 +617,9 @@ try_again:
                ldap_pvt_thread_mutex_unlock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CACHE, DETAIL1, 
                           "cache_find_entry_id: %ld -> %s  found %d tries.\n",
-                          ep_id, ep->e_dn, count ));
+                          ep_id, ep->e_dn, count );
 #else
                Debug(LDAP_DEBUG_TRACE,
                        "====> cache_find_entry_id( %ld ) \"%s\" (found) (%d tries)\n",
@@ -661,8 +660,8 @@ cache_delete_entry(
        assert( e->e_private );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ENTRY,
-                  "cache_delete_entry: delete %ld.\n", e->e_id ));
+       LDAP_LOG( CACHE, ENTRY, 
+               "cache_delete_entry: delete %ld.\n", e->e_id, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "====> cache_delete_entry( %ld )\n",
                e->e_id, 0, 0 );
@@ -723,8 +722,7 @@ cache_release_all( Cache *cache )
        ldap_pvt_thread_mutex_lock( &cache->c_mutex );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ENTRY,
-                  "cache_release_all: enter\n" ));
+       LDAP_LOG( CACHE, ENTRY, "cache_release_all: enter\n" , 0, 0, 0);
 #else
        Debug( LDAP_DEBUG_TRACE, "====> cache_release_all\n", 0, 0, 0 );
 #endif
@@ -740,8 +738,8 @@ cache_release_all( Cache *cache )
 
        if ( cache->c_cursize ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                          "cache_release_all: Entry cache could not be emptied.\n" ));
+               LDAP_LOG( CACHE, INFO,
+                        "cache_release_all: Entry cache could not be emptied.\n", 0, 0, 0);
 #else
                Debug( LDAP_DEBUG_TRACE, "Entry-cache could not be emptied\n", 0, 0, 0 );
 #endif
index d6758e143bf2113ef2d35b297eef002bad38332b..383817a5d9baf36b9c4f7cb4ba5699c069b00191 100644 (file)
@@ -1,14 +1,45 @@
 /* close.c - close ldbm backend */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
+
+#include <ac/socket.h>
+
 #include "slap.h"
 #include "back-ldbm.h"
 
-ldbm_back_close( Backend *be )
+int
+ldbm_back_db_close( Backend *be )
 {
+       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
+       if ( li->li_dbsyncfreq > 0 )
+       {
+               li->li_dbshutdown++;
+               ldap_pvt_thread_join( li->li_dbsynctid, (void *) NULL );
+       }
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, CRIT,
+                  "ldbm_back_db_close: ldbm backend syncing\n", 0, 0, 0 );
+#else
        Debug( LDAP_DEBUG_TRACE, "ldbm backend syncing\n", 0, 0, 0 );
+#endif
+
        ldbm_cache_flush_all( be );
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, CRIT,
+                  "ldbm_back_db_close: ldbm backend synch'ed\n", 0, 0, 0 );
+#else
        Debug( LDAP_DEBUG_TRACE, "ldbm backend done syncing\n", 0, 0, 0 );
+#endif
+
+
+       cache_release_all( &((struct ldbminfo *) be->be_private)->li_cache );
+
+       return 0;
 }
index 4757a29b9228684dbfb6e834b74ed8fa0c66e857..b96dbd0163e45c2fa4061faa470396bb8bd5f76b 100644 (file)
 /* compare.c - ldbm backend compare routine */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
 
 #include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
+
+#include <ac/socket.h>
+#include <ac/string.h>
+
 #include "slap.h"
 #include "back-ldbm.h"
-
-extern Entry           *dn2entry();
-extern Attribute       *attr_find();
+#include "proto-back-ldbm.h"
 
 int
 ldbm_back_compare(
     Backend    *be,
     Connection *conn,
     Operation  *op,
-    char       *dn,
-    Ava                *ava
+    struct berval      *dn,
+    struct berval      *ndn,
+       AttributeAssertion *ava
 )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       char            *matched;
+       Entry           *matched;
        Entry           *e;
        Attribute       *a;
-       int             i;
+       int             rc;
+       int             manageDSAit = get_manageDSAit( op );
+
+       /* grab giant lock for reading */
+       ldap_pvt_thread_rdwr_rlock(&li->li_giant_rwlock);
+
+       /* get entry with reader lock */
+       if ( (e = dn2entry_r( be, ndn, &matched )) == NULL ) {
+               char *matched_dn = NULL;
+               BerVarray refs = NULL;
+
+               if ( matched != NULL ) {
+                       matched_dn = ch_strdup( matched->e_dn );
+                       refs = is_entry_referral( matched )
+                               ? get_entry_referrals( be, conn, op, matched )
+                               : NULL;
+                       cache_return_entry_r( &li->li_cache, matched );
+               } else {
+                       refs = referral_rewrite( default_referral,
+                               NULL, dn, LDAP_SCOPE_DEFAULT );
+               }
+
+               ldap_pvt_thread_rdwr_runlock(&li->li_giant_rwlock);
+
+               send_ldap_result( conn, op, LDAP_REFERRAL,
+                       matched_dn, NULL, refs, NULL );
+
+               if ( refs ) ber_bvarray_free( refs );
+               free( matched_dn );
 
-       if ( (e = dn2entry( be, dn, &matched )) == NULL ) {
-               send_ldap_result( conn, op, LDAP_NO_SUCH_OBJECT, matched, "" );
                return( 1 );
        }
 
-       if ( ! access_allowed( be, conn, op, e, ava->ava_type, &ava->ava_value,
-           op->o_dn, ACL_COMPARE ) ) {
-               send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS, "", "" );
-               cache_return_entry( &li->li_cache, e );
-               return( 1 );
+       if (!manageDSAit && is_entry_referral( e ) ) {
+               /* entry is a referral, don't allow add */
+               BerVarray refs = get_entry_referrals( be,
+                       conn, op, e );
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_compare: entry (%s) is a referral.\n", e->e_dn, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0,
+                   0, 0 );
+#endif
+
+
+               send_ldap_result( conn, op, LDAP_REFERRAL,
+                   e->e_dn, NULL, refs, NULL );
+
+               if (refs ) ber_bvarray_free( refs );
+
+               rc = 1;
+               goto return_results;
        }
 
-       if ( (a = attr_find( e->e_attrs, ava->ava_type )) == NULL ) {
-               send_ldap_result( conn, op, LDAP_NO_SUCH_ATTRIBUTE, "", "" );
-               cache_return_entry( &li->li_cache, e );
-               return( 1 );
+       if ( ! access_allowed( be, conn, op, e,
+               ava->aa_desc, &ava->aa_value, ACL_COMPARE, NULL ) )
+       {
+               send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
+                       NULL, NULL, NULL, NULL );
+               rc = 1;
+               goto return_results;
        }
 
-       if ( value_find( a->a_vals, &ava->ava_value, a->a_syntax, 1 ) == 0 ) {
-               send_ldap_result( conn, op, LDAP_COMPARE_TRUE, "", "" );
-               cache_return_entry( &li->li_cache, e );
-               return( 0 );
+       rc = LDAP_NO_SUCH_ATTRIBUTE;
+
+       for(a = attrs_find( e->e_attrs, ava->aa_desc );
+               a != NULL;
+               a = attrs_find( a->a_next, ava->aa_desc ))
+       {
+               rc = LDAP_COMPARE_FALSE;
+
+               if ( value_find( ava->aa_desc, a->a_vals, &ava->aa_value ) == 0 ) {
+                       rc = LDAP_COMPARE_TRUE;
+                       break;
+               }
        }
 
-       send_ldap_result( conn, op, LDAP_COMPARE_FALSE, "", "" );
-       cache_return_entry( &li->li_cache, e );
-       return( 0 );
+       send_ldap_result( conn, op, rc,
+               NULL, NULL, NULL, NULL );
+
+       if( rc != LDAP_NO_SUCH_ATTRIBUTE ) {
+               rc = 0;
+       }
+
+
+return_results:;
+       cache_return_entry_r( &li->li_cache, e );
+       ldap_pvt_thread_rdwr_runlock(&li->li_giant_rwlock);
+       return( rc );
 }
index 2cb64aa675aa263749c569475003c23ccc26427c..527f3c4c43874ae1425a8a00e692f0901cb7b538 100644 (file)
@@ -107,9 +107,9 @@ ldbm_back_db_config(
                int i;
                if ( argc < 2 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "config", LDAP_LEVEL_ERR, "ldbm_back_db_config: %s: "
+                       LDAP_LOG ( CONFIG, ERR, "ldbm_back_db_config: %s: "
                                "line %d: missing frequency value in \"dbsync <frequency> "
-                               "[<wait-times> [wait-interval]]\" line\n", fname, lineno ));
+                               "[<wait-times> [wait-interval]]\" line\n", fname, lineno, 0 );
 #else  
                        Debug( LDAP_DEBUG_ANY,
     "%s: line %d: missing frquency value in \"dbsync <frequency> [<wait-times> [wait-interval]]\" line\n",
@@ -122,10 +122,11 @@ ldbm_back_db_config(
 
                if( i < 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "config", LDAP_LEVEL_ERR, "ldbm_back_db_config: %s: "
+                       LDAP_LOG ( CONFIG, ERR, 
+                               "ldbm_back_db_config: %s: "
                                "line %d: frequency value (%d) invalid \"dbsync "
                                "<frequency> [<wait-times> [wait-interval]]\" line\n", 
-                               fname, lineno, i ));
+                               fname, lineno, i );
 #else  
                        Debug( LDAP_DEBUG_ANY,
     "%s: line %d: frquency value (%d) invalid \"dbsync <frequency> [<wait-times> [wait-interval]]\" line\n",
@@ -140,10 +141,10 @@ ldbm_back_db_config(
                        i = atoi( argv[2] );
                        if ( i < 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "config",LDAP_LEVEL_ERR, "ldbm_back_db_config: %s: "
+                               LDAP_LOG ( CONFIG,ERR, "ldbm_back_db_config: %s: "
                                        "line %d: frequency value (%d) invalid \"dbsync "
                                        "<frequency> [<wait-times> [wait-interval]]\" line\n", 
-                                       fname, lineno, i ));
+                                       fname, lineno, i );
 #else  
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: frquency value (%d) invalid \"dbsync <frequency> [<wait-times> [wait-interval]]\" line\n",
@@ -158,10 +159,10 @@ ldbm_back_db_config(
                        i = atoi( argv[3] );
                        if ( i <= 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG (( "config",LDAP_LEVEL_ERR, "ldbm_back_db_config: %s: "
+                               LDAP_LOG ( CONFIG,ERR, "ldbm_back_db_config: %s: "
                                        "line %d: frequency value (%d) invalid \"dbsync "
                                        "<frequency> [<wait-times> [wait-interval]]\" line\n", 
-                                       fname, lineno, i ));
+                                       fname, lineno, i );
 #else  
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: frquency value (%d) invalid \"dbsync <frequency> [<wait-times> [wait-interval]]\" line\n",
@@ -177,8 +178,8 @@ ldbm_back_db_config(
 
 #else
 #ifdef NEW_LOGGING
-               LDAP_LOG (( "config", LDAP_LEVEL_ERR, "ldbm_back_db_config: \"dbsync\""
-                       " policies not supported in non-threaded environments\n" ));
+               LDAP_LOG ( CONFIG, ERR, "ldbm_back_db_config: \"dbsync\""
+                       " policies not supported in non-threaded environments\n", 0, 0, 0 );
 #else  
                Debug( LDAP_DEBUG_ANY,
     "\"dbsync\" policies not supported in non-threaded environments\n", 0, 0, 0);
index 1cf5bf9bd129513fa49c448866285521dda9d8c9..b9407f4d1a8461ea9e3e1c26c4ef1dce26bf596e 100644 (file)
@@ -54,8 +54,8 @@ ldbm_cache_open(
        }
        
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ENTRY,
-                  "ldbm_cache_open: \"%s\", %d, %o\n", buf, flags, li->li_mode ));
+       LDAP_LOG( CACHE, ENTRY, 
+               "ldbm_cache_open: \"%s\", %d, %o\n", buf, flags, li->li_mode );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> ldbm_cache_open( \"%s\", %d, %o )\n", buf,
            flags, li->li_mode );
@@ -101,8 +101,8 @@ ldbm_cache_open(
                                }
                                li->li_dbcache[i].dbc_refcnt++;
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                                          "ldbm_cache_open: cache %d\n", i ));
+                               LDAP_LOG( CACHE, DETAIL1, 
+                                       "ldbm_cache_open: cache %d\n", i, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                    "<= ldbm_cache_open (cache %d)\n", i, 0, 0 );
@@ -132,8 +132,9 @@ ldbm_cache_open(
                                li->li_dbcache[i].dbc_name = NULL;
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                                          "ldbm_cache_open: no unused db to close - waiting\n" ));
+                               LDAP_LOG( CACHE, INFO,
+                                       "ldbm_cache_open: no unused db to close - waiting\n", 
+                                       0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                    "ldbm_cache_open no unused db to close - waiting\n",
@@ -155,10 +156,10 @@ ldbm_cache_open(
        {
                int err = errno;
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "cache", LDAP_LEVEL_ERR,
-                          "ldbm_cache_open: \"%s\" failed, errono=%d, reason=%s\n",
-                          buf, err, err > -1 && err < sys_nerr ? sys_errlist[err] :
-                          "unknown" ));
+               LDAP_LOG( CACHE, ERR, 
+                       "ldbm_cache_open: \"%s\" failed, errono=%d, reason=%s\n",
+                       buf, err, err > -1 && err < sys_nerr ? sys_errlist[err] :
+                       "unknown" );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= ldbm_cache_open NULL \"%s\" errno=%d reason=\"%s\")\n",
@@ -190,10 +191,10 @@ ldbm_cache_open(
        assert( li->li_dbcache[i].dbc_maxindirect < 256 );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_ARGS,
+       LDAP_LOG( CACHE, ARGS, 
                   "ldbm_cache_open: blksize:%ld  maxids:%d  maxindirect:%d\n",
                   li->li_dbcache[i].dbc_blksize, li->li_dbcache[i].dbc_maxids,
-                  li->li_dbcache[i].dbc_maxindirect ));
+                  li->li_dbcache[i].dbc_maxindirect );
 #else
        Debug( LDAP_DEBUG_ARGS,
            "ldbm_cache_open (blksize %ld) (maxids %d) (maxindirect %d)\n",
@@ -202,8 +203,7 @@ ldbm_cache_open(
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
-                  "<= ldbm_cache_open: (opened %d)\n", i ));
+       LDAP_LOG( CACHE, DETAIL1, "<= ldbm_cache_open: (opened %d)\n", i, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= ldbm_cache_open (opened %d)\n", i, 0, 0 );
 #endif
@@ -259,9 +259,9 @@ ldbm_cache_flush_all( Backend *be )
        for ( i = 0; i < MAXDBCACHE; i++ ) {
                if ( li->li_dbcache[i].dbc_name != NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( CACHE, DETAIL1, 
                                   "ldbm_cache_flush_all: flushing db (%s)\n",
-                                  li->li_dbcache[i].dbc_name ));
+                                  li->li_dbcache[i].dbc_name, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "ldbm flushing db (%s)\n",
                            li->li_dbcache[i].dbc_name, 0, 0 );
@@ -271,9 +271,9 @@ ldbm_cache_flush_all( Backend *be )
                        li->li_dbcache[i].dbc_dirty = 0;
                        if ( li->li_dbcache[i].dbc_refcnt != 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "cache", LDAP_LEVEL_INFO,
-                                          "ldbm_cache_flush_all: couldn't close db (%s), refcnt=%d\n",
-                                          li->li_dbcache[i].dbc_name, li->li_dbcache[i].dbc_refcnt ));
+                               LDAP_LOG( CACHE, INFO, 
+                                       "ldbm_cache_flush_all: couldn't close db (%s), refcnt=%d\n",
+                                       li->li_dbcache[i].dbc_name, li->li_dbcache[i].dbc_refcnt,0);
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                       "refcnt = %d, couldn't close db (%s)\n",
@@ -283,9 +283,9 @@ ldbm_cache_flush_all( Backend *be )
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "cache", LDAP_LEVEL_DETAIL1,
+                               LDAP_LOG( CACHE, DETAIL1, 
                                           "ldbm_cache_flush_all: ldbm closing db (%s)\n",
-                                          li->li_dbcache[i].dbc_name ));
+                                          li->li_dbcache[i].dbc_name, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                       "ldbm closing db (%s)\n",
@@ -312,8 +312,8 @@ ldbm_cache_sync( Backend *be )
        for ( i = 0; i < MAXDBCACHE; i++ ) {
                if ( li->li_dbcache[i].dbc_name != NULL && li->li_dbcache[i].dbc_dirty ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "dbcache", LDAP_LEVEL_DETAIL1, "ldbm_cache_sync: "
-                               "ldbm syncing db (%s)\n", li->li_dbcache[i].dbc_name ));
+                       LDAP_LOG ( CACHE, DETAIL1, "ldbm_cache_sync: "
+                               "ldbm syncing db (%s)\n", li->li_dbcache[i].dbc_name, 0, 0 );
 #else
                        Debug(  LDAP_DEBUG_TRACE, "ldbm syncing db (%s)\n",
                                li->li_dbcache[i].dbc_name, 0, 0 );
@@ -391,8 +391,8 @@ ldbm_cache_sync_daemon(
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "dbcache", LDAP_LEVEL_ARGS, "ldbm_cache_sync_daemon:"
-               " synchronizer starting for %s\n", li->li_directory ));
+       LDAP_LOG ( CACHE, ARGS, "ldbm_cache_sync_daemon:"
+               " synchronizer starting for %s\n", li->li_directory, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ANY, "synchronizer starting for %s\n", li->li_directory, 0, 0 );
 #endif
@@ -404,8 +404,8 @@ ldbm_cache_sync_daemon(
 
                while (i && ldap_pvt_thread_pool_backload(&connection_pool) != 0) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "dbcache", LDAP_LEVEL_DETAIL1, "ldbm_cache_sync_daemon:"
-                               " delay syncing %s\n", li->li_directory ));
+                       LDAP_LOG ( CACHE, DETAIL1, "ldbm_cache_sync_daemon:"
+                               " delay syncing %s\n", li->li_directory, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "delay syncing %s\n", li->li_directory, 0, 0 );
 #endif
@@ -415,8 +415,8 @@ ldbm_cache_sync_daemon(
 
                if (!li->li_dbshutdown) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "dbcache", LDAP_LEVEL_DETAIL1, "ldbm_cache_sync_daemon:"
-                               " syncing %s\n", li->li_directory ));
+                       LDAP_LOG ( CACHE, DETAIL1, "ldbm_cache_sync_daemon:"
+                               " syncing %s\n", li->li_directory, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "syncing %s\n", li->li_directory, 0, 0 );
 #endif
@@ -425,8 +425,8 @@ ldbm_cache_sync_daemon(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG (( "dbcache", LDAP_LEVEL_DETAIL1, "ldbm_cache_sync_daemon:"
-                               " synchronizer stopping\n" ));
+       LDAP_LOG ( CACHE, DETAIL1, "ldbm_cache_sync_daemon:"
+                               " synchronizer stopping\n", 0, 0, 0);
 #else
        Debug( LDAP_DEBUG_ANY, "synchronizer stopping\n", 0, 0, 0 );
 #endif
index c773929ffb43a64eb73ba3e3b7c28124a5655b08..d33e957f678f6dd3d1457399c586200fe8060e6a 100644 (file)
 /* delete.c - ldbm backend delete routine */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
 
 #include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
 #include "slap.h"
 #include "back-ldbm.h"
-
-extern Entry           *dn2entry();
-extern Attribute       *attr_find();
+#include "proto-back-ldbm.h"
 
 int
 ldbm_back_delete(
     Backend    *be,
     Connection *conn,
     Operation  *op,
-    char       *dn
+    struct berval      *dn,
+    struct berval      *ndn
 )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       char            *matched = NULL;
-       Entry           *e;
+       Entry   *matched;
+       struct berval   pdn;
+       Entry   *e, *p = NULL;
+       int     rc = -1;
+       int             manageDSAit = get_manageDSAit( op );
+       AttributeDescription *children = slap_schema.si_ad_children;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, "ldbm_back_delete: %s\n", dn->bv_val, 0, 0 );
+#else
+       Debug(LDAP_DEBUG_ARGS, "==> ldbm_back_delete: %s\n", dn->bv_val, 0, 0);
+#endif
+
+       /* grab giant lock for writing */
+       ldap_pvt_thread_rdwr_wlock(&li->li_giant_rwlock);
+
+       /* get entry with writer lock */
+       if ( (e = dn2entry_w( be, ndn, &matched )) == NULL ) {
+               char *matched_dn = NULL;
+               BerVarray refs;
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_delete: no such object %s\n", dn->bv_val, 0, 0 );
+#else
+               Debug(LDAP_DEBUG_ARGS, "<=- ldbm_back_delete: no such object %s\n",
+                       dn->bv_val, 0, 0);
+#endif
 
-       if ( (e = dn2entry( be, dn, &matched )) == NULL ) {
-               send_ldap_result( conn, op, LDAP_NO_SUCH_OBJECT, matched, "" );
                if ( matched != NULL ) {
-                       free( matched );
+                       matched_dn = ch_strdup( matched->e_dn );
+                       refs = is_entry_referral( matched )
+                               ? get_entry_referrals( be, conn, op, matched )
+                               : NULL;
+                       cache_return_entry_r( &li->li_cache, matched );
+
+               } else {
+                       refs = referral_rewrite( default_referral,
+                               NULL, dn, LDAP_SCOPE_DEFAULT );
                }
+
+               ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
+
+               send_ldap_result( conn, op, LDAP_REFERRAL,
+                       matched_dn, NULL, refs, NULL );
+
+               if ( refs ) ber_bvarray_free( refs );
+               free( matched_dn );
+
                return( -1 );
        }
 
-       if ( has_children( be, e ) ) {
-               send_ldap_result( conn, op, LDAP_NOT_ALLOWED_ON_NONLEAF, "",
-                   "" );
-               cache_return_entry( &li->li_cache, e );
-               return( -1 );
+    if ( !manageDSAit && is_entry_referral( e ) ) {
+               /* parent is a referral, don't allow add */
+               /* parent is an alias, don't allow add */
+               BerVarray refs = get_entry_referrals( be,
+                       conn, op, e );
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_delete: entry (%s) is a referral.\n", e->e_dn, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0,
+                   0, 0 );
+#endif
+
+               send_ldap_result( conn, op, LDAP_REFERRAL,
+                   e->e_dn, NULL, refs, NULL );
+
+               if ( refs ) ber_bvarray_free( refs );
+
+               rc = 1;
+               goto return_results;
        }
 
-       if ( ! access_allowed( be, conn, op, e, "entry", NULL, op->o_dn,
-           ACL_WRITE ) ) {
-               send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS, "", "" );
-               cache_return_entry( &li->li_cache, e );
-               return( -1 );
+
+       if ( has_children( be, e ) ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR, 
+                          "ldbm_back_delete: (%s) is a non-leaf node.\n", dn->bv_val, 0,0);
+#else
+               Debug(LDAP_DEBUG_ARGS, "<=- ldbm_back_delete: non leaf %s\n",
+                       dn->bv_val, 0, 0);
+#endif
+
+               send_ldap_result( conn, op, LDAP_NOT_ALLOWED_ON_NONLEAF,
+                       NULL, "subtree delete not supported", NULL, NULL );
+               goto return_results;
        }
 
-       /* XXX delete from parent's id2children entry XXX */
+       /* delete from parent's id2children entry */
+       if( !be_issuffix( be, &e->e_nname ) && (dnParent( &e->e_nname, &pdn ),
+               pdn.bv_len) ) {
+               if( (p = dn2entry_w( be, &pdn, NULL )) == NULL) {
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_LDBM, ERR, 
+                               "ldbm_back_delete: parent of (%s) does not exist\n", dn, 0, 0 );
+#else
+                       Debug( LDAP_DEBUG_TRACE,
+                               "<=- ldbm_back_delete: parent does not exist\n",
+                               0, 0, 0);
+#endif
+
+                       send_ldap_result( conn, op, LDAP_OTHER,
+                               NULL, "could not locate parent of entry", NULL, NULL );
+                       goto return_results;
+               }
+
+               /* check parent for "children" acl */
+               if ( ! access_allowed( be, conn, op, p,
+                       children, NULL, ACL_WRITE, NULL ) )
+               {
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_LDBM, ERR, 
+                               "ldbm_back_delete: no access to parent of (%s)\n", 
+                               dn->bv_val, 0, 0 );
+#else
+                       Debug( LDAP_DEBUG_TRACE,
+                               "<=- ldbm_back_delete: no access to parent\n", 0,
+                               0, 0 );
+#endif
+
+                       send_ldap_result( conn, op, LDAP_INSUFFICIENT_ACCESS,
+                               NULL, NULL, NULL, NULL );
+                       goto return_results;
+               }
+
+       } else {
+               /* no parent, must be root to delete */
+               if( ! be_isroot( be, &op->o_ndn ) ) {
+                       if ( be_issuffix( be, (struct berval *)&slap_empty_bv ) || be_isupdate( be, &op->o_ndn ) ) {
+                               p = (Entry *)&slap_entry_root;
+                               
+                               rc = access_allowed( be, conn, op, p,
+                                       children, NULL, ACL_WRITE, NULL );
+                               p = NULL;
+                                                               
+                               /* check parent for "children" acl */
+                               if ( ! rc ) {
+#ifdef NEW_LOGGING
+                                       LDAP_LOG( BACK_LDBM, ERR,
+                                               "ldbm_back_delete: no access "
+                                               "to parent of ("")\n", 0, 0, 0 );
+#else
+                                       Debug( LDAP_DEBUG_TRACE,
+                                               "<=- ldbm_back_delete: no "
+                                               "access to parent\n", 0, 0, 0 );
+#endif
+
+                                       send_ldap_result( conn, op, 
+                                               LDAP_INSUFFICIENT_ACCESS,
+                                               NULL, NULL, NULL, NULL );
+                                       goto return_results;
+                               }
+
+                       } else {
+#ifdef NEW_LOGGING
+                               LDAP_LOG( BACK_LDBM, ERR, 
+                                       "ldbm_back_delete: (%s) has no "
+                                       "parent & not a root.\n", dn, 0, 0 );
+#else
+                               Debug( LDAP_DEBUG_TRACE,
+                                       "<=- ldbm_back_delete: no parent & "
+                                       "not root\n", 0, 0, 0);
+#endif
+
+                               send_ldap_result( conn, op, 
+                                       LDAP_INSUFFICIENT_ACCESS,
+                                       NULL, NULL, NULL, NULL );
+                               goto return_results;
+                       }
+               }
+       }
 
        /* delete from dn2id mapping */
-       if ( dn2id_delete( be, e->e_dn ) != 0 ) {
-               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, "", "" );
-               cache_return_entry( &li->li_cache, e );
-               return( -1 );
+       if ( dn2id_delete( be, &e->e_nname, e->e_id ) != 0 ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR, 
+                       "ldbm_back_delete: (%s) operations error\n", dn->bv_val, 0, 0 );
+#else
+               Debug(LDAP_DEBUG_ARGS,
+                       "<=- ldbm_back_delete: operations error %s\n",
+                       dn->bv_val, 0, 0);
+#endif
+
+               send_ldap_result( conn, op, LDAP_OTHER,
+                       NULL, "DN index delete failed", NULL, NULL );
+               goto return_results;
        }
 
        /* delete from disk and cache */
        if ( id2entry_delete( be, e ) != 0 ) {
-               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR, "", "" );
-               cache_return_entry( &li->li_cache, e );
-               return( -1 );
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR, 
+                       "ldbm_back_delete: (%s) operations error\n", dn->bv_val, 0, 0 );
+#else
+               Debug(LDAP_DEBUG_ARGS,
+                       "<=- ldbm_back_delete: operations error %s\n",
+                       dn->bv_val, 0, 0);
+#endif
+
+               send_ldap_result( conn, op, LDAP_OTHER,
+                       NULL, "entry delete failed", NULL, NULL );
+               goto return_results;
        }
-       cache_return_entry( &li->li_cache, e );
 
-       send_ldap_result( conn, op, LDAP_SUCCESS, "", "" );
+       /* delete attribute indices */
+       (void) index_entry_del( be, e, e->e_attrs );
+
+       send_ldap_result( conn, op, LDAP_SUCCESS,
+               NULL, NULL, NULL, NULL );
+       rc = 0;
+
+return_results:;
+       if( p != NULL ) {
+               /* free parent and writer lock */
+               cache_return_entry_w( &li->li_cache, p );
+       }
+
+       /* free entry and writer lock */
+       cache_return_entry_w( &li->li_cache, e );
+
+       ldap_pvt_thread_rdwr_wunlock(&li->li_giant_rwlock);
 
-       return( 0 );
+       return rc;
 }
index c4116086b00d5aab3d143a14f045956a3737c51d..757d4b0f7170158f9ec78c8c7769dfa510b42666 100644 (file)
 /* dn2id.c - routines to deal with the dn2id index */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
 
 #include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
 #include "slap.h"
 #include "back-ldbm.h"
-
-extern struct dbcache  *ldbm_cache_open();
-extern Entry           *cache_find_entry_dn();
-extern Entry           *id2entry();
-extern char            *dn_parent();
-extern Datum           ldbm_cache_fetch();
+#include "proto-back-ldbm.h"
 
 int
 dn2id_add(
     Backend    *be,
-    char       *dn,
+    struct berval *dn,
     ID         id
 )
 {
-       int             rc;
-       struct dbcache  *db;
+       int             rc, flags;
+       DBCache *db;
        Datum           key, data;
+       char            *buf;
+       struct berval   ptr, pdn;
 
-       Debug( LDAP_DEBUG_TRACE, "=> dn2id_add( \"%s\", %ld )\n", dn, id, 0 );
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, "dn2id_add: (%s):%ld\n", dn->bv_val, id, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "=> dn2id_add( \"%s\", %ld )\n", dn->bv_val, id, 0 );
+#endif
+
+       assert( id != NOID );
 
        if ( (db = ldbm_cache_open( be, "dn2id", LDBM_SUFFIX, LDBM_WRCREAT ))
            == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR, 
+                       "dn2id_add: couldn't open/create dn2id%s\n", LDBM_SUFFIX, 0, 0 );
+#else
                Debug( LDAP_DEBUG_ANY, "Could not open/create dn2id%s\n",
                    LDBM_SUFFIX, 0, 0 );
+#endif
+
                return( -1 );
        }
 
-       dn = strdup( dn );
-       dn_normalize_case( dn );
+       ldbm_datum_init( key );
+       key.dsize = dn->bv_len + 2;
+       buf = ch_malloc( key.dsize );
+       key.dptr = buf;
+       buf[0] = DN_BASE_PREFIX;
+       ptr.bv_val = buf + 1;
+       ptr.bv_len = dn->bv_len;
+       strcpy( ptr.bv_val, dn->bv_val );
 
-       key.dptr = dn;
-       key.dsize = strlen( dn ) + 1;
+       ldbm_datum_init( data );
        data.dptr = (char *) &id;
        data.dsize = sizeof(ID);
 
-       rc = ldbm_cache_store( db, key, data, LDBM_INSERT );
+       flags = LDBM_INSERT;
+       rc = ldbm_cache_store( db, key, data, flags );
+
+       if ( rc != -1 && !be_issuffix( be, &ptr )) {
+               buf[0] = DN_SUBTREE_PREFIX;
+               ldap_pvt_thread_mutex_lock( &db->dbc_write_mutex );
+               rc = idl_insert_key( be, db, key, id );
+               ldap_pvt_thread_mutex_unlock( &db->dbc_write_mutex );
+
+               if ( rc != -1 ) {
+                       dnParent( &ptr, &pdn );
+
+                       pdn.bv_val[-1] = DN_ONE_PREFIX;
+                       key.dsize = pdn.bv_len + 2;
+                       key.dptr = pdn.bv_val - 1;
+                       ptr = pdn;
+                       ldap_pvt_thread_mutex_lock( &db->dbc_write_mutex );
+                       rc = idl_insert_key( be, db, key, id );
+                       ldap_pvt_thread_mutex_unlock( &db->dbc_write_mutex );
+               }
+       }
+
+       while ( rc != -1 && !be_issuffix( be, &ptr )) {
+               ptr.bv_val[-1] = DN_SUBTREE_PREFIX;
+
+               ldap_pvt_thread_mutex_lock( &db->dbc_write_mutex );
+               rc = idl_insert_key( be, db, key, id );
+               ldap_pvt_thread_mutex_unlock( &db->dbc_write_mutex );
 
-       free( dn );
+               if( rc != 0 ) break;
+               dnParent( &ptr, &pdn );
+               key.dsize = pdn.bv_len + 2;
+               key.dptr = pdn.bv_val - 1;
+               ptr = pdn;
+       }
+
+       free( buf );
        ldbm_cache_close( be, db );
 
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, "dn2id_add: return %d\n", rc, 0, 0 );
+#else
        Debug( LDAP_DEBUG_TRACE, "<= dn2id_add %d\n", rc, 0, 0 );
+#endif
+
        return( rc );
 }
 
-ID
+int
 dn2id(
     Backend    *be,
-    char       *dn
+    struct berval *dn,
+    ID          *idp
 )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       struct dbcache  *db;
-       Entry           *e;
-       ID              id;
+       DBCache *db;
        Datum           key, data;
 
-       Debug( LDAP_DEBUG_TRACE, "=> dn2id( \"%s\" )\n", dn, 0, 0 );
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, "dn2id: (%s)\n", dn->bv_val, 0, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "=> dn2id( \"%s\" )\n", dn->bv_val, 0, 0 );
+#endif
 
-       dn = strdup( dn );
-       dn_normalize_case( dn );
+       assert( idp );
 
        /* first check the cache */
-       if ( (e = cache_find_entry_dn( &li->li_cache, dn )) != NULL ) {
-               id = e->e_id;
-               free( dn );
-               Debug( LDAP_DEBUG_TRACE, "<= dn2id %d (in cache)\n", e->e_id,
-                   0, 0 );
-               cache_return_entry( &li->li_cache, e );
-
-               return( id );
+       if ( (*idp = cache_find_entry_ndn2id( be, &li->li_cache, dn )) != NOID ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, DETAIL1, "dn2id: (%s)%ld in cache.\n", dn, *idp, 0 );
+#else
+               Debug( LDAP_DEBUG_TRACE, "<= dn2id %ld (in cache)\n", *idp,
+                       0, 0 );
+#endif
+
+               return( 0 );
        }
 
        if ( (db = ldbm_cache_open( be, "dn2id", LDBM_SUFFIX, LDBM_WRCREAT ))
-           == NULL ) {
-               free( dn );
+               == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR, 
+                          "dn2id: couldn't open dn2id%s\n", LDBM_SUFFIX, 0, 0 );
+#else
                Debug( LDAP_DEBUG_ANY, "<= dn2id could not open dn2id%s\n",
-                   LDBM_SUFFIX, 0, 0 );
-               return( NOID );
+                       LDBM_SUFFIX, 0, 0 );
+#endif
+               /*
+                * return code !0 if ldbm cache open failed;
+                * callers should handle this
+                */
+               *idp = NOID;
+               return( -1 );
        }
 
-       key.dptr = dn;
-       key.dsize = strlen( dn ) + 1;
+       ldbm_datum_init( key );
+
+       key.dsize = dn->bv_len + 2;
+       key.dptr = ch_malloc( key.dsize );
+       sprintf( key.dptr, "%c%s", DN_BASE_PREFIX, dn->bv_val );
 
        data = ldbm_cache_fetch( db, key );
 
        ldbm_cache_close( be, db );
-       free( dn );
+
+       free( key.dptr );
 
        if ( data.dptr == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, INFO, "dn2id: (%s) NOID\n", dn, 0, 0 );
+#else
                Debug( LDAP_DEBUG_TRACE, "<= dn2id NOID\n", 0, 0, 0 );
-               return( NOID );
+#endif
+
+               *idp = NOID;
+               return( 0 );
        }
 
-       (void) memcpy( (char *) &id, data.dptr, sizeof(ID) );
+       AC_MEMCPY( (char *) idp, data.dptr, sizeof(ID) );
+
+       assert( *idp != NOID );
 
        ldbm_datum_free( db->dbc_db, data );
 
-       Debug( LDAP_DEBUG_TRACE, "<= dn2id %d\n", id, 0, 0 );
-       return( id );
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, "dn2id: %ld\n", *idp, 0, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "<= dn2id %ld\n", *idp, 0, 0 );
+#endif
+
+       return( 0 );
+}
+
+int
+dn2idl(
+    Backend    *be,
+    struct berval      *dn,
+    int                prefix,
+    ID_BLOCK    **idlp
+)
+{
+       DBCache *db;
+       Datum           key;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, "dn2idl: \"%c%s\"\n", prefix, dn->bv_val, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "=> dn2idl( \"%c%s\" )\n", prefix, dn->bv_val, 0 );
+#endif
+
+       assert( idlp != NULL );
+       *idlp = NULL;
+
+       if ( prefix == DN_SUBTREE_PREFIX && be_issuffix(be, dn) ) {
+               *idlp = idl_allids( be );
+               return 0;
+       }
+
+       if ( (db = ldbm_cache_open( be, "dn2id", LDBM_SUFFIX, LDBM_WRCREAT ))
+               == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR, 
+                          "dn2idl: could not open dn2id%s\n", LDBM_SUFFIX, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "<= dn2idl could not open dn2id%s\n",
+                       LDBM_SUFFIX, 0, 0 );
+#endif
+
+               return -1;
+       }
+
+       ldbm_datum_init( key );
+
+       key.dsize = dn->bv_len + 2;
+       key.dptr = ch_malloc( key.dsize );
+       sprintf( key.dptr, "%c%s", prefix, dn->bv_val );
+
+       *idlp = idl_fetch( be, db, key );
+
+       ldbm_cache_close( be, db );
+
+       free( key.dptr );
+
+       return( 0 );
 }
 
+
 int
 dn2id_delete(
     Backend    *be,
-    char       *dn
+    struct berval *dn,
+       ID id
 )
 {
-       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       struct dbcache  *db;
+       DBCache *db;
        Datum           key;
        int             rc;
+       char            *buf;
+       struct berval   ptr, pdn;
 
-       Debug( LDAP_DEBUG_TRACE, "=> dn2id_delete( \"%s\" )\n", dn, 0, 0 );
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, 
+                  "dn2id_delete: (%s)%ld\n", dn->bv_val, id, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "=> dn2id_delete( \"%s\", %ld )\n", dn->bv_val, id, 0 );
+#endif
+
+
+       assert( id != NOID );
 
        if ( (db = ldbm_cache_open( be, "dn2id", LDBM_SUFFIX, LDBM_WRCREAT ))
            == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR, 
+                          "dn2id_delete: couldn't open db2id%s\n", LDBM_SUFFIX, 0, 0 );
+#else
                Debug( LDAP_DEBUG_ANY,
                    "<= dn2id_delete could not open dn2id%s\n", LDBM_SUFFIX,
                    0, 0 );
+#endif
+
                return( -1 );
        }
 
-       dn_normalize_case( dn );
-       key.dptr = dn;
-       key.dsize = strlen( dn ) + 1;
+       ldbm_datum_init( key );
+       key.dsize = dn->bv_len + 2;
+       buf = ch_malloc( key.dsize );
+       key.dptr = buf;
+       buf[0] = DN_BASE_PREFIX;
+       ptr.bv_val = buf + 1;
+       ptr.bv_len = dn->bv_len;
+       strcpy( ptr.bv_val, dn->bv_val );
 
        rc = ldbm_cache_delete( db, key );
+       
+       if( !be_issuffix( be, &ptr )) {
+               buf[0] = DN_SUBTREE_PREFIX;
+               ldap_pvt_thread_mutex_lock( &db->dbc_write_mutex );
+               (void) idl_delete_key( be, db, key, id );
+               ldap_pvt_thread_mutex_unlock( &db->dbc_write_mutex );
+
+               dnParent( &ptr, &pdn );
+
+               pdn.bv_val[-1] = DN_ONE_PREFIX;
+               key.dsize = pdn.bv_len + 2;
+               key.dptr = pdn.bv_val - 1;
+               ptr = pdn;
+
+               ldap_pvt_thread_mutex_lock( &db->dbc_write_mutex );
+               (void) idl_delete_key( be, db, key, id );
+               ldap_pvt_thread_mutex_unlock( &db->dbc_write_mutex );
+       }
+
+       while ( rc != -1 && !be_issuffix( be, &ptr )) {
+               ptr.bv_val[-1] = DN_SUBTREE_PREFIX;
+
+               ldap_pvt_thread_mutex_lock( &db->dbc_write_mutex );
+               (void) idl_delete_key( be, db, key, id );
+               ldap_pvt_thread_mutex_unlock( &db->dbc_write_mutex );
+
+               dnParent( &ptr, &pdn );
+               key.dsize = pdn.bv_len + 2;
+               key.dptr = pdn.bv_val - 1;
+               ptr = pdn;
+       }
+
+       free( buf );
 
        ldbm_cache_close( be, db );
 
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, "dn2id_delete: return %d\n", rc, 0, 0 );
+#else
        Debug( LDAP_DEBUG_TRACE, "<= dn2id_delete %d\n", rc, 0, 0 );
+#endif
+
        return( rc );
 }
 
@@ -146,37 +349,66 @@ dn2id_delete(
  */
 
 Entry *
-dn2entry(
+dn2entry_rw(
     Backend    *be,
-    char       *dn,
-    char       **matched
+    struct berval *dn,
+    Entry      **matched,
+    int                rw
 )
 {
-       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
        ID              id;
-       Entry           *e;
-       char            *pdn;
+       Entry           *e = NULL;
+       struct berval   pdn;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, 
+                  "dn2entry_rw: %s entry %s\n", rw ? "w" : "r", dn->bv_val, 0 );
+#else
+       Debug(LDAP_DEBUG_TRACE, "dn2entry_%s: dn: \"%s\"\n",
+               rw ? "w" : "r", dn->bv_val, 0);
+#endif
 
-       if ( (id = dn2id( be, dn )) != NOID && (e = id2entry( be, id ))
-           != NULL ) {
-               return( e );
+
+       if( matched != NULL ) {
+               /* caller cares about match */
+               *matched = NULL;
        }
-       *matched = NULL;
 
-       /* stop when we get to the suffix */
-       if ( be_issuffix( be, dn ) ) {
+       if ( dn2id( be, dn, &id ) ) {
+               /* something bad happened to ldbm cache */
                return( NULL );
+
+       } else if ( id != NOID ) {
+               /* try to return the entry */
+               if ((e = id2entry_rw( be, id, rw )) != NULL ) {
+                       return( e );
+               }
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR, 
+                       "dn2entry_rw: no entry for valid id (%ld), dn (%s)\n", 
+                       id, dn->bv_val, 0 );
+#else
+               Debug(LDAP_DEBUG_ANY,
+                       "dn2entry_%s: no entry for valid id (%ld), dn \"%s\"\n",
+                       rw ? "w" : "r", id, dn->bv_val);
+#endif
+
+               /* must have been deleted from underneath us */
+               /* treat as if NOID was found */
        }
 
+       /* caller doesn't care about match */
+       if( matched == NULL ) return NULL;
+
        /* entry does not exist - see how much of the dn does exist */
-       if ( (pdn = dn_parent( be, dn )) != NULL ) {
-               if ( (e = dn2entry( be, pdn, matched )) != NULL ) {
-                       *matched = pdn;
-                       cache_return_entry( &li->li_cache, e );
-               } else {
-                       free( pdn );
+       if ( !be_issuffix( be, dn ) && (dnParent( dn, &pdn ), pdn.bv_len) ) {
+               /* get entry with reader lock */
+               if ( (e = dn2entry_r( be, &pdn, matched )) != NULL ) {
+                       *matched = e;
                }
        }
 
-       return( NULL );
+       return NULL;
 }
+
index bc370f239b6916d167899796e692ca9e6c52cf62..c59145e296053538b536034e41210c794b75d965 100644 (file)
@@ -39,7 +39,7 @@ filter_candidates(
        ID_BLOCK        *result;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY, "filter_candidates: enter\n"));
+       LDAP_LOG( FILTER, ENTRY, "filter_candidates: enter\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> filter_candidates\n", 0, 0, 0 );
 #endif
@@ -49,8 +49,8 @@ filter_candidates(
        switch ( f->f_choice ) {
        case SLAPD_FILTER_DN_ONE:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "filter_candidates:  DN ONE (%s)\n", f->f_dn ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                          "filter_candidates:  DN ONE (%s)\n", f->f_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tDN ONE\n", 0, 0, 0 );
 #endif
@@ -65,8 +65,8 @@ filter_candidates(
 
        case SLAPD_FILTER_DN_SUBTREE:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "filter_candidates:  DN SUBTREE (%s)\n", f->f_dn ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                          "filter_candidates:  DN SUBTREE (%s)\n", f->f_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tDN SUBTREE\n", 0, 0, 0 );
 #endif
@@ -81,8 +81,9 @@ filter_candidates(
 
        case LDAP_FILTER_PRESENT:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "filter_candidates:  Present (%s)\n", f->f_desc->ad_cname.bv_val ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "filter_candidates:  Present (%s)\n", 
+                       f->f_desc->ad_cname.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tPRESENT\n", 0, 0, 0 );
 #endif
@@ -92,10 +93,10 @@ filter_candidates(
 
        case LDAP_FILTER_EQUALITY:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( FILTER, DETAIL1, 
                           "filter_candidates:  EQUALITY (%s),(%s)\n",
                           f->f_ava->aa_desc->ad_cname.bv_val,
-                          f->f_ava->aa_value.bv_val ));
+                          f->f_ava->aa_value.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tEQUALITY\n", 0, 0, 0 );
 #endif
@@ -105,10 +106,10 @@ filter_candidates(
 
        case LDAP_FILTER_APPROX:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( FILTER, DETAIL1, 
                           "filter_candidates:  APPROX (%s), (%s)\n",
                           f->f_ava->aa_desc->ad_cname.bv_val,
-                          f->f_ava->aa_value.bv_val ));
+                          f->f_ava->aa_value.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tAPPROX\n", 0, 0, 0 );
 #endif
@@ -118,8 +119,8 @@ filter_candidates(
 
        case LDAP_FILTER_SUBSTRINGS:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "filter_candidates:  SUBSTRINGS\n"));
+               LDAP_LOG( FILTER, DETAIL1,
+                          "filter_candidates:  SUBSTRINGS\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tSUBSTRINGS\n", 0, 0, 0 );
 #endif
@@ -129,8 +130,7 @@ filter_candidates(
 
        case LDAP_FILTER_GE:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "filter_candidates:  GE\n"));
+               LDAP_LOG( FILTER, DETAIL1, "filter_candidates:  GE\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tGE\n", 0, 0, 0 );
 #endif
@@ -140,8 +140,7 @@ filter_candidates(
 
        case LDAP_FILTER_LE:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "filter_candidates:  LE\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "filter_candidates:  LE\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tLE\n", 0, 0, 0 );
 #endif
@@ -151,8 +150,7 @@ filter_candidates(
 
        case LDAP_FILTER_AND:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "filter_candidates:  AND\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "filter_candidates:  AND\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tAND\n", 0, 0, 0 );
 #endif
@@ -162,8 +160,7 @@ filter_candidates(
 
        case LDAP_FILTER_OR:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "filter_candidates:  OR\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "filter_candidates:  OR\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tOR\n", 0, 0, 0 );
 #endif
@@ -173,8 +170,7 @@ filter_candidates(
 
        case LDAP_FILTER_NOT:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "filter_candidates:  NOT\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "filter_candidates:  NOT\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tNOT\n", 0, 0, 0 );
 #endif
@@ -189,8 +185,7 @@ filter_candidates(
                break;
        default:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "filter_candidates:  UNKNOWN\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "filter_candidates:  UNKNOWN\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "\tUNKNOWN\n", 0, 0, 0 );
 #endif
@@ -202,9 +197,9 @@ filter_candidates(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "filter_candidates: return %ld\n",
-                  result ? ID_BLOCK_NIDS(result) : 0 ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "filter_candidates: return %ld\n", 
+               result ? ID_BLOCK_NIDS(result) : 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= filter_candidates %ld\n",
            result ? ID_BLOCK_NIDS(result) : 0, 0, 0 );
@@ -227,8 +222,7 @@ presence_candidates(
        struct berval prefix = {0};
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "presence_candidates: enter\n" ));
+       LDAP_LOG( FILTER, ENTRY, "presence_candidates: enter\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> presence_candidates\n", 0, 0, 0 );
 #endif
@@ -244,9 +238,8 @@ presence_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
-                          "presence_candidates: index_param returned %d\n",
-                          rc ));
+               LDAP_LOG( FILTER, INFO, 
+                          "presence_candidates: index_param returned %d\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= presence_candidates: index_param returned=%d\n",
@@ -259,8 +252,7 @@ presence_candidates(
        if( dbname == NULL ) {
                /* not indexed */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
-                          "presence_candidates: not indexed\n" ));
+               LDAP_LOG( FILTER, INFO, "presence_candidates: not indexed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= presense_candidates: not indexed\n",
@@ -274,9 +266,9 @@ presence_candidates(
        
        if ( db == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
+               LDAP_LOG( FILTER, INFO, 
                           "presence_candidates: db open failed (%s%s)\n",
-                          dbname, LDBM_SUFFIX ));
+                          dbname, LDBM_SUFFIX, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "<= presense_candidates db open failed (%s%s)\n",
@@ -294,8 +286,8 @@ presence_candidates(
 
                if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                                  "presence_candidates: key read failed (%d)\n", rc ));
+                       LDAP_LOG( FILTER, ERR, 
+                                  "presence_candidates: key read failed (%d)\n", rc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "<= presense_candidates key read failed (%d)\n",
@@ -305,8 +297,7 @@ presence_candidates(
 
                } else if( idl == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                                  "presence_candidates: NULL\n" ));
+                       LDAP_LOG( FILTER, DETAIL1, "presence_candidates: NULL\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "<= presense_candidates NULL\n",
@@ -319,9 +310,9 @@ presence_candidates(
        ldbm_cache_close( be, db );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "presence_candidates:  return %ld\n",
-                  idl ? ID_BLOCK_NIDS(idl) : 0 ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "presence_candidates:  return %ld\n", 
+               idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= presence_candidates %ld\n",
            idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
@@ -347,8 +338,7 @@ equality_candidates(
        MatchingRule *mr;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "equality_candidates: enter\n" ));
+       LDAP_LOG( FILTER, ENTRY, "equality_candidates: enter\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> equality_candidates\n", 0, 0, 0 );
 #endif
@@ -361,8 +351,8 @@ equality_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                          "equality_candidates:  index_param returned %d\n", rc ));
+               LDAP_LOG( FILTER, ERR, 
+                          "equality_candidates:  index_param returned %d\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= equality_candidates: index_param returned=%d\n",
@@ -375,8 +365,7 @@ equality_candidates(
        if( dbname == NULL ) {
                /* not indexed */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                          "equality_candidates: not indexed\n" ));
+               LDAP_LOG( FILTER, ERR, "equality_candidates: not indexed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= equality_candidates: not indexed\n",
@@ -406,9 +395,9 @@ equality_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
+               LDAP_LOG( FILTER, ERR, 
                           "equality_candidates: (%s%s) MR filter failed (%d\n",
-                          dbname, LDBM_SUFFIX, rc ));
+                          dbname, LDBM_SUFFIX, rc );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= equality_candidates: (%s%s) MR filter failed (%d)\n",
@@ -420,9 +409,8 @@ equality_candidates(
 
        if( keys == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                          "equality_candidates: no keys (%s%s)\n",
-                          dbname, LDBM_SUFFIX ));
+               LDAP_LOG( FILTER, ERR, 
+                  "equality_candidates: no keys (%s%s)\n", dbname, LDBM_SUFFIX, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= equality_candidates: no keys (%s%s)\n",
@@ -436,9 +424,8 @@ equality_candidates(
        
        if ( db == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                          "equality_candidates: db open failed (%s%s)\n",
-                          dbname, LDBM_SUFFIX ));
+               LDAP_LOG( FILTER, ERR, "equality_candidates: db open failed (%s%s)\n",
+                       dbname, LDBM_SUFFIX, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "<= equality_candidates db open failed (%s%s)\n",
@@ -458,8 +445,8 @@ equality_candidates(
                        idl_free( idl );
                        idl = NULL;
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                                  "equality_candidates: key read failed (%d)\n", rc ));
+                       LDAP_LOG( FILTER, ERR, 
+                                  "equality_candidates: key read failed (%d)\n", rc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "<= equality_candidates key read failed (%d)\n",
@@ -473,8 +460,7 @@ equality_candidates(
                        idl_free( idl );
                        idl = NULL;
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
-                                  "equality_candidates NULL\n" ));
+                       LDAP_LOG( FILTER, INFO, "equality_candidates NULL\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "<= equality_candidates NULL\n",
@@ -498,9 +484,9 @@ equality_candidates(
 
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "equality_candidates: return %ld\n",
-                  idl ? ID_BLOCK_NIDS(idl) : 0 ));
+       LDAP_LOG( FILTER, ENTRY, 
+                  "equality_candidates: return %ld\n", 
+                  idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= equality_candidates %ld\n",
            idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
@@ -526,8 +512,7 @@ approx_candidates(
        MatchingRule *mr;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "approx_candidates: enter\n" ));
+       LDAP_LOG( FILTER, ENTRY, "approx_candidates: enter\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> approx_candidates\n", 0, 0, 0 );
 #endif
@@ -540,8 +525,8 @@ approx_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                          "approx_candidates: index_param returned %d\n", rc ));
+               LDAP_LOG( FILTER, ERR, 
+                          "approx_candidates: index_param returned %d\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= approx_candidates: index_param returned=%d\n",
@@ -554,8 +539,7 @@ approx_candidates(
        if( dbname == NULL ) {
                /* not indexed */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                          "approx_candidates: not indexed\n" ));
+               LDAP_LOG( FILTER, ERR, "approx_candidates: not indexed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "<= approx_candidates: not indexed\n",
@@ -590,9 +574,9 @@ approx_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
+               LDAP_LOG( FILTER, ERR, 
                           "approx_candidates: (%s%s) MR filter failed (%d)\n",
-                          dbname, LDBM_SUFFIX, rc ));
+                          dbname, LDBM_SUFFIX, rc );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= approx_candidates: (%s%s) MR filter failed (%d)\n",
@@ -604,9 +588,9 @@ approx_candidates(
 
        if( keys == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
+               LDAP_LOG( FILTER, INFO, 
                           "approx_candidates: no keys (%s%s)\n",
-                          dbname, LDBM_SUFFIX ));
+                          dbname, LDBM_SUFFIX, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= approx_candidates: no keys (%s%s)\n",
@@ -620,9 +604,9 @@ approx_candidates(
        
        if ( db == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                          "approx_candidates db open failed (%s%s)\n",
-                          dbname, LDBM_SUFFIX ));
+               LDAP_LOG( FILTER, ERR, 
+                       "approx_candidates db open failed (%s%s)\n", 
+                       dbname, LDBM_SUFFIX, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "<= approx_candidates db open failed (%s%s)\n",
@@ -642,8 +626,8 @@ approx_candidates(
                        idl_free( idl );
                        idl = NULL;
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                                  "approx_candidates: key read failed (%d)\n", rc ));
+                       LDAP_LOG( FILTER, ERR, 
+                                  "approx_candidates: key read failed (%d)\n", rc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "<= approx_candidates key read failed (%d)\n",
                            rc, 0, 0 );
@@ -656,8 +640,7 @@ approx_candidates(
                        idl_free( idl );
                        idl = NULL;
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
-                                  "approx_candidates: NULL\n" ));
+                       LDAP_LOG( FILTER, INFO, "approx_candidates: NULL\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "<= approx_candidates NULL\n",
                            0, 0, 0 );
@@ -679,9 +662,9 @@ approx_candidates(
        ldbm_cache_close( be, db );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "approx_candidates: return %ld\n",
-                  idl ? ID_BLOCK_NIDS(idl) : 0 ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "approx_candidates: return %ld\n", 
+               idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= approx_candidates %ld\n",
            idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
@@ -701,8 +684,7 @@ list_candidates(
        Filter  *f;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "list_candidates: 0x%x\n", ftype ));
+       LDAP_LOG( FILTER, ENTRY, "list_candidates: 0x%x\n", ftype, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> list_candidates 0x%x\n", ftype, 0, 0 );
 #endif
@@ -713,8 +695,7 @@ list_candidates(
                if ( (tmp = filter_candidates( be, f )) == NULL &&
                    ftype == LDAP_FILTER_AND ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
-                                  "list_candidates: NULL\n" ));
+                       LDAP_LOG( FILTER, INFO, "list_candidates: NULL\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                               "<= list_candidates NULL\n", 0, 0, 0 );
@@ -739,9 +720,8 @@ list_candidates(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "list_candidates: return %ld\n",
-                  idl ? ID_BLOCK_NIDS(idl) : 0 ));
+       LDAP_LOG( FILTER, ENTRY, "list_candidates: return %ld\n",
+                  idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= list_candidates %ld\n",
            idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
@@ -767,8 +747,7 @@ substring_candidates(
        MatchingRule *mr;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "substrings_candidates: enter\n" ));
+       LDAP_LOG( FILTER, ENTRY, "substrings_candidates: enter\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> substrings_candidates\n", 0, 0, 0 );
 #endif
@@ -781,8 +760,8 @@ substring_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                          "substrings_candidates: index_param returned %d\n", rc ));
+               LDAP_LOG( FILTER, ERR, 
+                          "substrings_candidates: index_param returned %d\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= substrings_candidates: index_param returned=%d\n",
@@ -795,8 +774,7 @@ substring_candidates(
        if( dbname == NULL ) {
                /* not indexed */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                          "substrings_candidates: not indexed\n" ));
+               LDAP_LOG( FILTER, ERR, "substrings_candidates: not indexed\n", 0, 0, 0);
 #else
                Debug( LDAP_DEBUG_ANY,
                    "<= substrings_candidates: not indexed\n",
@@ -827,9 +805,9 @@ substring_candidates(
 
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
+               LDAP_LOG( FILTER, ERR, 
                           "substrings_candidates: (%s%s) MR filter failed (%d)\n",
-                          dbname, LDBM_SUFFIX, rc ));
+                          dbname, LDBM_SUFFIX, rc );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= substrings_candidates: (%s%s) MR filter failed (%d)\n",
@@ -841,9 +819,9 @@ substring_candidates(
 
        if( keys == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
+               LDAP_LOG( FILTER, ERR, 
                           "substrings_candidates: (0x%04lx) no keys (%s%s)\n",
-                          mask, dbname, LDBM_SUFFIX ));
+                          mask, dbname, LDBM_SUFFIX );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "<= substrings_candidates: (0x%04lx) no keys (%s%s)\n",
@@ -857,9 +835,9 @@ substring_candidates(
        
        if ( db == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
+               LDAP_LOG( FILTER, ERR, 
                           "substrings_candidates: db open failed (%s%s)\n",
-                          dbname, LDBM_SUFFIX ));
+                          dbname, LDBM_SUFFIX, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "<= substrings_candidates db open failed (%s%s)\n",
@@ -879,9 +857,8 @@ substring_candidates(
                        idl_free( idl );
                        idl = NULL;
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                                  "substrings_candidates: key read failed (%d)\n",
-                                  rc ));
+                       LDAP_LOG( FILTER, ERR, 
+                                  "substrings_candidates: key read failed (%d)\n", rc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "<= substrings_candidates key read failed (%d)\n",
                            rc, 0, 0 );
@@ -894,8 +871,7 @@ substring_candidates(
                        idl_free( idl );
                        idl = NULL;
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
-                                  "substrings_candidates: NULL\n" ));
+                       LDAP_LOG( FILTER, INFO, "substrings_candidates: NULL\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "<= substrings_candidates NULL\n",
                            0, 0, 0 );
@@ -917,9 +893,9 @@ substring_candidates(
        ldbm_cache_close( be, db );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( FILTER, ENTRY, 
                   "substrings_candidates: return %ld\n",
-                  idl ? ID_BLOCK_NIDS(idl) : 0 ));
+                  idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= substrings_candidates %ld\n",
            idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
diff --git a/servers/slapd/back-ldbm/group.c b/servers/slapd/back-ldbm/group.c
new file mode 100644 (file)
index 0000000..f8d5074
--- /dev/null
@@ -0,0 +1,223 @@
+/* group.c - ldbm backend acl group routine */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/socket.h>
+#include <ac/string.h>
+
+#include "slap.h"
+#include "back-ldbm.h"
+#include "proto-back-ldbm.h"
+
+
+/* return 0 IFF op_dn is a value in member attribute
+ * of entry with gr_dn AND that entry has an objectClass
+ * value of groupOfNames
+ */
+int
+ldbm_back_group(
+       Backend *be,
+       Connection *conn,
+       Operation *op,
+       Entry   *target,
+       struct berval   *gr_ndn,
+       struct berval   *op_ndn,
+       ObjectClass *group_oc,
+       AttributeDescription *group_at
+)
+{
+       struct ldbminfo *li = (struct ldbminfo *) be->be_private;    
+       Entry        *e;
+       int          rc = 1;
+       Attribute   *attr;
+
+       const char *group_oc_name = NULL;
+       const char *group_at_name = group_at->ad_cname.bv_val;
+
+       if( group_oc->soc_names && group_oc->soc_names[0] ) {
+               group_oc_name = group_oc->soc_names[0];
+       } else {
+               group_oc_name = group_oc->soc_oid;
+       }
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, 
+               "ldbm_back_group: check (%s) member of (%s), oc %s\n",
+               op_ndn->bv_val, gr_ndn->bv_val, group_oc_name );
+#else
+       Debug( LDAP_DEBUG_ARGS,
+               "=> ldbm_back_group: gr dn: \"%s\"\n",
+               gr_ndn->bv_val, 0, 0 ); 
+
+       Debug( LDAP_DEBUG_ARGS,
+               "=> ldbm_back_group: op dn: \"%s\"\n",
+               op_ndn->bv_val, 0, 0 ); 
+       Debug( LDAP_DEBUG_ARGS,
+               "=> ldbm_back_group: oc: \"%s\" at: \"%s\"\n", 
+               group_oc_name, group_at_name, 0 ); 
+
+       Debug( LDAP_DEBUG_ARGS,
+               "=> ldbm_back_group: tr dn: \"%s\"\n",
+               target->e_ndn, 0, 0 ); 
+#endif
+
+       if (dn_match(&target->e_nname, gr_ndn)) {
+               /* we already have a LOCKED copy of the entry */
+               e = target;
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, DETAIL1, 
+                       "ldbm_back_group: target is group (%s)\n", gr_ndn->bv_val, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ARGS,
+                       "=> ldbm_back_group: target is group: \"%s\"\n",
+                       gr_ndn->bv_val, 0, 0 );
+#endif
+
+
+       } else {
+               /* can we find group entry with reader lock */
+               if ((e = dn2entry_r(be, gr_ndn, NULL )) == NULL) {
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_LDBM, DETAIL1, 
+                               "ldbm_back_group: cannot find group (%s)\n", 
+                               gr_ndn->bv_val, 0, 0 );
+#else
+                       Debug( LDAP_DEBUG_ACL,
+                               "=> ldbm_back_group: cannot find group: \"%s\"\n",
+                               gr_ndn->bv_val, 0, 0 ); 
+#endif
+
+                       return( 1 );
+               }
+               
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, DETAIL1, 
+                       "ldbm_back_group: found group (%s)\n", gr_ndn->bv_val, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ACL,
+                       "=> ldbm_back_group: found group: \"%s\"\n",
+                       gr_ndn->bv_val, 0, 0 ); 
+#endif
+
+    }
+
+       /* find it's objectClass and member attribute values
+        * make sure this is a group entry
+        * finally test if we can find op_dn in the member attribute value list *
+        */
+       
+       rc = 1;
+       
+       
+       if( is_entry_alias( e ) ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_group: group (%s) is an alias\n", gr_ndn->bv_val, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ACL,
+                       "<= ldbm_back_group: group is an alias\n", 0, 0, 0 );
+#endif
+
+               goto return_results;
+       }
+
+       if( is_entry_referral( e ) ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_group: group (%s) is a referral.\n", gr_ndn->bv_val,0,0);
+#else
+               Debug( LDAP_DEBUG_ACL,
+                       "<= ldbm_back_group: group is an referral\n", 0, 0, 0 );
+#endif
+
+               goto return_results;
+       }
+
+       if( !is_entry_objectclass( e, group_oc, 0 ) ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ERR, 
+                       "ldbm_back_group: failed to find %s in objectClass.\n",
+                       group_oc_name, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ACL,
+                       "<= ldbm_back_group: failed to find %s in objectClass\n", 
+                               group_oc_name, 0, 0 ); 
+#endif
+
+               goto return_results;
+       }
+
+       if ((attr = attr_find(e->e_attrs, group_at)) == NULL) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_group: failed to find %s\n", group_at_name, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ACL,
+                       "<= ldbm_back_group: failed to find %s\n",
+                       group_at_name, 0, 0 ); 
+#endif
+
+               goto return_results;
+       }
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, 
+                  "ldbm_back_group: found objectClass %s and %s\n",
+                  group_oc_name, group_at_name, 0 );
+#else
+       Debug( LDAP_DEBUG_ACL,
+               "<= ldbm_back_group: found objectClass %s and %s\n",
+               group_oc_name, group_at_name, 0 ); 
+#endif
+
+
+       if( value_find( group_at, attr->a_vals, op_ndn ) != LDAP_SUCCESS ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, DETAIL1, 
+                       "ldbm_back_group: \"%s\" not in \"%s\": %s\n",
+                       op_ndn->bv_val, gr_ndn->bv_val, group_at_name );
+#else
+               Debug( LDAP_DEBUG_ACL,
+                       "<= ldbm_back_group: \"%s\" not in \"%s\": %s\n", 
+                       op_ndn->bv_val, gr_ndn->bv_val, group_at_name ); 
+#endif
+
+               goto return_results;
+       }
+
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, DETAIL1, 
+               "ldbm_back_group: %s is in %s: %s\n",
+               op_ndn->bv_val, gr_ndn->bv_val, group_at_name );
+#else
+       Debug( LDAP_DEBUG_ACL,
+               "<= ldbm_back_group: \"%s\" is in \"%s\": %s\n", 
+               op_ndn->bv_val, gr_ndn->bv_val, group_at_name ); 
+#endif
+
+
+       rc = 0;
+
+return_results:
+       if( target != e ) {
+               /* free entry and reader lock */
+               cache_return_entry_r( &li->li_cache, e );                 
+       }
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, "ldbm_back_group: rc=%d\n", rc, 0, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "ldbm_back_group: rc=%d\n", rc, 0, 0 ); 
+#endif
+
+       return(rc);
+}
+
index c27496d5730b6f5a47e6370ee3ba6c71239f56a8..8c375a6c169b7b9df2c44d00cfb4a97899e0c4bd 100644 (file)
@@ -15,7 +15,6 @@
 #include "slap.h"
 #include "back-ldbm.h"
 
-
 int
 has_children(
     Backend    *be,
@@ -30,8 +29,7 @@ has_children(
        ldbm_datum_init( key );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "id2children", LDAP_LEVEL_ENTRY,
-                  "has_children: enter %ld\n", p->e_id ));
+       LDAP_LOG( INDEX, ENTRY, "has_children: enter %ld\n", p->e_id, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> has_children( %ld )\n", p->e_id , 0, 0 );
 #endif
@@ -40,9 +38,8 @@ has_children(
        if ( (db = ldbm_cache_open( be, "dn2id", LDBM_SUFFIX,
            LDBM_WRCREAT )) == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "id2children", LDAP_LEVEL_ERR,
-                          "has_children: could not open \"dn2id%s\"\n",
-                          LDBM_SUFFIX ));
+               LDAP_LOG( INDEX, ERR, 
+                       "has_children: could not open \"dn2id%s\"\n", LDBM_SUFFIX, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "<= has_children -1 could not open \"dn2id%s\"\n",
@@ -68,9 +65,9 @@ has_children(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "id2children", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( INDEX, ENTRY, 
                   "has_children: id (%ld) %s children.\n",
-                  p->e_id, rc ? "has" : "doesn't have" ));
+                  p->e_id, rc ? "has" : "doesn't have", 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= has_children( %ld ): %s\n",
                p->e_id, rc ? "yes" : "no", 0 );
index 0bcde14620a4f1e7ffdf4b15c6b32ab39be9702b..2f071b84420c002c7cdc9de2395138309111658e 100644 (file)
@@ -33,8 +33,7 @@ id2entry_add( Backend *be, Entry *e )
        ldbm_datum_init( data );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "id2entry", LDAP_LEVEL_ENTRY,
-                  "id2entry_add: (%s)%ld\n", e->e_dn, e->e_id ));
+       LDAP_LOG( INDEX, ENTRY, "id2entry_add: (%s)%ld\n", e->e_dn, e->e_id, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> id2entry_add( %ld, \"%s\" )\n", e->e_id,
            e->e_dn, 0 );
@@ -44,9 +43,9 @@ id2entry_add( Backend *be, Entry *e )
        if ( (db = ldbm_cache_open( be, "id2entry", LDBM_SUFFIX, LDBM_WRCREAT ))
            == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "id2entry", LDAP_LEVEL_ERR,
-                          "id2entry_add: could not open/create id2entry%s\n",
-                          LDBM_SUFFIX ));
+               LDAP_LOG( INDEX, ERR, 
+                  "id2entry_add: could not open/create id2entry%s\n", 
+                  LDBM_SUFFIX, 0,0 );
 #else
                Debug( LDAP_DEBUG_ANY, "Could not open/create id2entry%s\n",
                    LDBM_SUFFIX, 0, 0 );
@@ -76,8 +75,7 @@ id2entry_add( Backend *be, Entry *e )
        ldbm_cache_close( be, db );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "id2entry", LDAP_LEVEL_ENTRY,
-                  "id2entry_add: return %d\n", rc ));
+       LDAP_LOG( INDEX, ENTRY, "id2entry_add: return %d\n", rc, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= id2entry_add %d\n", rc, 0, 0 );
 #endif
@@ -98,8 +96,7 @@ id2entry_delete( Backend *be, Entry *e )
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "id2entry", LDAP_LEVEL_ENTRY,
-                  "id2entry_delete: (%s)%ld\n", e->e_dn, e->e_id ));
+       LDAP_LOG( INDEX, ENTRY, "id2entry_delete: (%s)%ld\n", e->e_dn, e->e_id, 0 );
 #else
        Debug(LDAP_DEBUG_TRACE, "=> id2entry_delete( %ld, \"%s\" )\n", e->e_id,
            e->e_dn, 0 );
@@ -118,9 +115,9 @@ id2entry_delete( Backend *be, Entry *e )
        if ( (db = ldbm_cache_open( be, "id2entry", LDBM_SUFFIX, LDBM_WRCREAT ))
                == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "id2entry", LDAP_LEVEL_ERR,
+               LDAP_LOG( INDEX, ERR, 
                           "id2entry_delete: could not open/create id2entry%s\n",
-                          LDBM_SUFFIX ));
+                          LDBM_SUFFIX, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "Could not open/create id2entry%s\n",
                    LDBM_SUFFIX, 0, 0 );
@@ -131,9 +128,9 @@ id2entry_delete( Backend *be, Entry *e )
 
        if ( cache_delete_entry( &li->li_cache, e ) != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "id2entry", LDAP_LEVEL_ERR,
+               LDAP_LOG( INDEX, ERR, 
                           "id2entry_delete: Could not delete (%s)%ld from cache\n",
-                          e->e_dn, e->e_id ));
+                          e->e_dn, e->e_id, 0 );
 #else
                Debug(LDAP_DEBUG_ANY, "could not delete %ld (%s) from cache\n",
                    e->e_id, e->e_dn, 0 );
@@ -154,8 +151,7 @@ id2entry_delete( Backend *be, Entry *e )
        ldbm_cache_close( be, db );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "id2entry", LDAP_LEVEL_ENTRY,
-                  "id2entry_delete: return %d\n", rc ));
+       LDAP_LOG( INDEX, ENTRY, "id2entry_delete: return %d\n", rc, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= id2entry_delete %d\n", rc, 0, 0 );
 #endif
@@ -179,9 +175,8 @@ id2entry_rw( Backend *be, ID id, int rw )
        ldbm_datum_init( data );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "id2entry", LDAP_LEVEL_ENTRY,
-                  "id2entry_rw: %s (%ld)\n",
-                  rw ? "write" : "read", id ));
+       LDAP_LOG( INDEX, ENTRY, 
+                  "id2entry_rw: %s (%ld)\n", rw ? "write" : "read", id, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> id2entry_%s( %ld )\n",
                rw ? "w" : "r", id, 0 );
@@ -190,9 +185,9 @@ id2entry_rw( Backend *be, ID id, int rw )
 
        if ( (e = cache_find_entry_id( &li->li_cache, id, rw )) != NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "id2entry", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( INDEX, DETAIL1, 
                           "id2entry_rw: %s (%ld) 0x%lx (cache).\n",
-                          rw ? "write" : "read", id, (unsigned long)e ));
+                          rw ? "write" : "read", id, (unsigned long)e  );
 #else
                Debug( LDAP_DEBUG_TRACE, "<= id2entry_%s( %ld ) 0x%lx (cache)\n",
                        rw ? "w" : "r", id, (unsigned long) e );
@@ -204,8 +199,8 @@ id2entry_rw( Backend *be, ID id, int rw )
        if ( (db = ldbm_cache_open( be, "id2entry", LDBM_SUFFIX, LDBM_WRCREAT ))
                == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "id2entry", LDAP_LEVEL_ERR,
-                          "id2entry_rw: could not open id2entry%s\n", LDBM_SUFFIX ));
+               LDAP_LOG( INDEX, ERR, 
+                          "id2entry_rw: could not open id2entry%s\n", LDBM_SUFFIX, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "Could not open id2entry%s\n",
                    LDBM_SUFFIX, 0, 0 );
@@ -226,8 +221,8 @@ id2entry_rw( Backend *be, ID id, int rw )
 
        if ( data.dptr == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "id2entry", LDAP_LEVEL_ERR,
-                          "id2entry_rw: (%ld) not found\n", id ));
+               LDAP_LOG( INDEX, ERR, 
+                          "id2entry_rw: (%ld) not found\n", id, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "<= id2entry_%s( %ld ) not found\n",
                        rw ? "w" : "r", id, 0 );
@@ -243,9 +238,8 @@ id2entry_rw( Backend *be, ID id, int rw )
 
        if ( e == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "id2entry", LDAP_LEVEL_ERR,
-                          "id2entry_rw: %s of %ld failed\n",
-                          rw ? "write" : "read", id ));
+               LDAP_LOG( INDEX, ERR, 
+                          "id2entry_rw: %s of %ld failed\n", rw ? "write" : "read", id, 0);
 #else
                Debug( LDAP_DEBUG_TRACE, "<= id2entry_%s( %ld ) (failed)\n",
                        rw ? "w" : "r", id, 0 );
@@ -265,9 +259,9 @@ id2entry_rw( Backend *be, ID id, int rw )
                 */
                if ( (e = cache_find_entry_id( &li->li_cache, id, rw )) != NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "id2entry", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( INDEX, DETAIL1, 
                                   "id2entry_rw: %s of %ld 0x%lx (cache)\n",
-                                  rw ? "write" : "read", id, (unsigned long)e ));
+                                  rw ? "write" : "read", id, (unsigned long)e  );
 #else
                        Debug( LDAP_DEBUG_TRACE, "<= id2entry_%s( %ld ) 0x%lx (cache)\n",
                                rw ? "w" : "r", id, (unsigned long) e );
@@ -277,9 +271,9 @@ id2entry_rw( Backend *be, ID id, int rw )
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "id2entry", LDAP_LEVEL_ERR,
+               LDAP_LOG( INDEX, ERR, 
                           "id2entry_rw: %s of %ld (cache add failed)\n",
-                          rw ? "write" : "read", id ));
+                          rw ? "write" : "read", id, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "<= id2entry_%s( %ld ) (cache add failed)\n",
                        rw ? "w" : "r", id, 0 );
@@ -289,9 +283,9 @@ id2entry_rw( Backend *be, ID id, int rw )
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "id2entry", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( INDEX, ENTRY, 
                   "id2entry_rw: %s of %ld 0x%lx (disk)\n",
-                  rw ? "write" : "read", id, (unsigned long)e ));
+                  rw ? "write" : "read", id, (unsigned long)e  );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= id2entry_%s( %ld ) 0x%lx (disk)\n",
                rw ? "w" : "r", id, (unsigned long) e );
index 60ca3e65946d383f7e63d8cc1c5a8d85bec41eda..a070f46adf399002cb42b59d386bad7cc9bb4f01 100644 (file)
@@ -104,8 +104,7 @@ idl_free( ID_BLOCK *idl )
 {
        if ( idl == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_INFO,
-                          "idl_free: called with NULL pointer\n" ));
+               LDAP_LOG( INDEX, INFO, "idl_free: called with NULL pointer\n" , 0,0,0);
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "idl_free: called with NULL pointer\n",
@@ -217,8 +216,8 @@ idl_fetch(
 
                if ( (tmp[i] = idl_fetch_one( be, db, data )) == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_INFO,
-                                  "idl_fetch: idl_fetch_one returned NULL\n" ));
+                       LDAP_LOG( INDEX, INFO,
+                                  "idl_fetch: idl_fetch_one returned NULL\n", 0,0,0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                            "idl_fetch: one returned NULL\n", 0, 0, 0 );
@@ -259,9 +258,9 @@ idl_fetch(
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "idl", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( INDEX, ENTRY, 
                   "idl_fetch: %ld ids (%ld max)\n",
-                  ID_BLOCK_NIDS(idl), ID_BLOCK_NMAXN(idl) ));
+                  ID_BLOCK_NIDS(idl), ID_BLOCK_NMAXN(idl), 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= idl_fetch %ld ids (%ld max)\n",
               ID_BLOCK_NIDS(idl), ID_BLOCK_NMAXN(idl), 0 );
@@ -408,8 +407,8 @@ idl_change_first(
        /* delete old key block */
        if ( (rc = ldbm_cache_delete( db, bkey )) != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_INFO,
-                          "idl_change_first: ldbm_cache_delete returned %d\n", rc ));
+               LDAP_LOG( INDEX, INFO, 
+                          "idl_change_first: ldbm_cache_delete returned %d\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "idl_change_first: ldbm_cache_delete returned %d\n",
@@ -424,8 +423,8 @@ idl_change_first(
 
        if ( (rc = idl_store( be, db, bkey, b )) != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_INFO,
-                          "idl_change_first: idl_store returned %d\n", rc ));
+               LDAP_LOG( INDEX, INFO, 
+                          "idl_change_first: idl_store returned %d\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "idl_change_first: idl_store returned %d\n", rc, 0, 0 );
@@ -438,8 +437,8 @@ idl_change_first(
        ID_BLOCK_ID(h, pos) = ID_BLOCK_ID(b, 0);
        if ( (rc = idl_store( be, db, hkey, h )) != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_INFO,
-                          "idl_change_first: idl_store returned %s\n", rc ));
+               LDAP_LOG( INDEX, INFO, 
+                          "idl_change_first: idl_store returned %s\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "idl_change_first: idl_store returned %d\n", rc, 0, 0 );
@@ -572,8 +571,8 @@ idl_insert_key(
 
        if ( (tmp = idl_fetch_one( be, db, k2 )) == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "idl", LDAP_LEVEL_ERR,
-                          "idl_insert_key: nonexistent continuation block\n" ));
+               LDAP_LOG( INDEX, ERR,
+                          "idl_insert_key: nonexistent continuation block\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "idl_insert_key: nonexistent continuation block\n",
                    0, 0, 0 );
@@ -589,8 +588,8 @@ idl_insert_key(
        case 0:         /* id inserted ok */
                if ( (rc = idl_store( be, db, k2, tmp )) != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_ERR,
-                                  "ids_insert_key: idl_store returned %d\n", rc ));
+                       LDAP_LOG( INDEX, ERR, 
+                                  "ids_insert_key: idl_store returned %d\n", rc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                            "idl_insert_key: idl_store returned %d\n", rc, 0, 0 );
@@ -632,8 +631,8 @@ idl_insert_key(
                        cont_id( &k2, ID_BLOCK_ID(idl, i) );
                        if ( (tmp2 = idl_fetch_one( be, db, k2 )) == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "idl", LDAP_LEVEL_ERR,
-                                          "idl_insert_key: idl_fetch_one returned NULL\n"));
+                               LDAP_LOG( INDEX, ERR,
+                                          "idl_insert_key: idl_fetch_one returned NULL\n", 0, 0, 0);
 #else
                                Debug( LDAP_DEBUG_ANY,
                                    "idl_insert_key: idl_fetch_one returned NULL\n",
@@ -661,8 +660,8 @@ idl_insert_key(
 
                            if ( (rc = idl_store( be, db, k2, tmp )) != 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "idl", LDAP_LEVEL_ERR,
-                                              "idl_insert_key: idl_store returned %d\n", rc ));
+                               LDAP_LOG( INDEX, ERR, 
+                                       "idl_insert_key: idl_store returned %d\n", rc, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                            "idl_insert_key: idl_store returned %d\n", rc, 0, 0 );
@@ -692,9 +691,9 @@ idl_insert_key(
                                         */
                                if ( rc == 2 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "idl", LDAP_LEVEL_INFO,
+                                       LDAP_LOG( INDEX, INFO, 
                                                   "idl_insert_key: id %ld is already in next block\n", 
-                                                  id ));
+                                                  id, 0, 0 );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                            "idl_insert_key: id %ld already in next block\n",
@@ -947,8 +946,8 @@ idl_delete_key (
 
                if ( (tmp = idl_fetch_one( be, db, data )) == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "idl", LDAP_LEVEL_INFO,
-                                  "idl_delete_key: idl_fetch_one returned NULL\n" ));
+                       LDAP_LOG( INDEX, INFO,
+                                  "idl_delete_key: idl_fetch_one returned NULL\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                            "idl_delete_key: idl_fetch of returned NULL\n", 0, 0, 0 );
index 3d75a091d3166f497ebbc9fa9a58bbff92521014..f5078c0051313dffcc2ff3e3940e31349b07cba6 100644 (file)
 /* index.c - routines for dealing with attribute indexes */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
 
-#include <stdio.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include "slap.h"
-#include "back-ldbm.h"
+#include "portable.h"
 
-extern char            *first_word();
-extern char            *next_word();
-extern char            *phonetic();
-extern IDList          *idl_fetch();
-extern IDList          *idl_allids();
-extern struct dbcache  *ldbm_cache_open();
+#include <stdio.h>
 
-int    index_add_values();
+#include <ac/string.h>
+#include <ac/socket.h>
 
-static int     add_value();
-static int     index2prefix();
+#include "slap.h"
+#include "back-ldbm.h"
 
-int
-index_add_entry(
-    Backend    *be,
-    Entry      *e
-)
+static slap_mask_t index_mask(
+       Backend *be,
+       AttributeDescription *desc,
+       char **dbname,
+       struct berval *atname )
 {
-       Attribute       *ap;
-       char            *dnval;
-       struct berval   bv;
-       struct berval   *bvals[2];
-
-       Debug( LDAP_DEBUG_TRACE, "=> index_add( %ld, \"%s\" )\n", e->e_id,
-           e->e_dn, 0 );
-
-       /*
-        * dn index entry - make it look like an attribute so it works
-        * with index_add_values() call
-        */
+       AttributeType *at;
+       slap_mask_t mask = 0;
 
-       bv.bv_val = strdup( e->e_dn );
-       bv.bv_len = strlen( bv.bv_val );
-       (void) dn_normalize_case( bv.bv_val );
-       bvals[0] = &bv;
-       bvals[1] = NULL;
+       attr_mask( be->be_private, desc, &mask );
 
-       /* add the dn to the indexes */
-       index_add_values( be, "dn", bvals, e->e_id );
+       if( mask ) {
+               *atname = desc->ad_cname;
+               *dbname = desc->ad_cname.bv_val;
+               return mask;
+       }
 
-       free( bv.bv_val );
+       /* If there is a language tag, did we ever index the base
+        * type? If so, check for mask, otherwise it's not there.
+        */
+       if( slap_ad_is_lang( desc ) && desc != desc->ad_type->sat_ad ) {
+               /* has language tag */
+               attr_mask( be->be_private, desc->ad_type->sat_ad, &mask );
+
+               if( mask && ( mask ^ SLAP_INDEX_NOLANG ) ) {
+                       *atname = desc->ad_type->sat_cname;
+                       *dbname = desc->ad_type->sat_cname.bv_val;
+                       return mask;
+               }
+       }
 
-       /* add each attribute to the indexes */
-       for ( ap = e->e_attrs; ap != NULL; ap = ap->a_next ) {
-               index_add_values( be, ap->a_type, ap->a_vals, e->e_id );
+       /* see if supertype defined mask for its subtypes */
+       for( at = desc->ad_type->sat_sup; at != NULL ; at = at->sat_sup ) {
+               /* If no AD, we've never indexed this type */
+               if (!at->sat_ad)
+                       continue;
+               
+               attr_mask( be->be_private, at->sat_ad, &mask );
+
+               if( mask && ( mask ^ SLAP_INDEX_NOSUBTYPES ) ) {
+                       *atname = at->sat_cname;
+                       *dbname = at->sat_cname.bv_val;
+                       return mask;
+               }
        }
 
-       Debug( LDAP_DEBUG_TRACE, "<= index_add( %ld, \"%s\" ) 0\n", e->e_id,
-           e->e_dn, 0 );
-       return( 0 );
+       return 0;
 }
 
-int
-index_add_mods(
-    Backend    *be,
-    LDAPMod    *mods,
-    ID         id
-)
+int index_is_indexed(
+       Backend *be,
+       AttributeDescription *desc )
 {
-       int     rc;
-
-       for ( ; mods != NULL; mods = mods->mod_next ) {
-               switch ( mods->mod_op & ~LDAP_MOD_BVALUES ) {
-               case LDAP_MOD_ADD:
-               case LDAP_MOD_REPLACE:
-                       rc = index_add_values( be, mods->mod_type,
-                           mods->mod_bvalues, id );
-                       break;
-
-               case LDAP_MOD_DELETE:
-                       rc = 0;
-                       break;
-               }
+       slap_mask_t mask;
+       char *dbname;
+       struct berval prefix;
 
-               if ( rc != 0 ) {
-                       return( rc );
-               }
+       mask = index_mask( be, desc, &dbname, &prefix );
+
+       if( mask == 0 ) {
+               return LDAP_INAPPROPRIATE_MATCHING;
        }
 
-       return( 0 );
+       return LDAP_SUCCESS;
 }
 
-IDList *
-index_read(
-    Backend    *be,
-    char       *type,
-    int                indextype,
-    char       *val
-)
+int index_param(
+       Backend *be,
+       AttributeDescription *desc,
+       int ftype,
+       char **dbnamep,
+       slap_mask_t *maskp,
+       struct berval *prefixp )
 {
-       struct dbcache  *db;
-       Datum           key;
-       IDList          *idl;
-       int             indexmask, syntax;
-       char            prefix;
-       char            *realval, *tmpval;
-       char            buf[BUFSIZ];
-
-       prefix = index2prefix( indextype );
-       Debug( LDAP_DEBUG_TRACE, "=> index_read( \"%s\" \"%c\" \"%s\" )\n",
-           type, prefix, val );
-
-       attr_masks( be->be_private, type, &indexmask, &syntax );
-       if ( ! (indextype & indexmask) ) {
-               idl =  idl_allids( be );
-               Debug( LDAP_DEBUG_TRACE,
-                   "<= index_read %d candidates (allids - not indexed)\n",
-                   idl ? idl->b_nids : 0, 0, 0 );
-               return( idl );
-       }
+       slap_mask_t mask;
+       char *dbname;
 
-       attr_normalize( type );
-       if ( (db = ldbm_cache_open( be, type, LDBM_SUFFIX, LDBM_WRCREAT ))
-           == NULL ) {
-               Debug( LDAP_DEBUG_ANY,
-                   "<= index_read NULL (could not open %s%s)\n", type,
-                   LDBM_SUFFIX, 0 );
-               return( NULL );
+       mask = index_mask( be, desc, &dbname, prefixp );
+
+       if( mask == 0 ) {
+               return LDAP_INAPPROPRIATE_MATCHING;
        }
 
-       realval = val;
-       tmpval = NULL;
-       if ( prefix != '\0' ) {
-               int     len;
-
-               if ( (len = strlen( val )) < sizeof(buf) ) {
-                       buf[0] = prefix;
-                       strcpy( &buf[1], val );
-                       realval = buf;
-               } else {
-                       /* value + prefix + null */
-                       tmpval = (char *) ch_malloc( len + 2 );
-                       tmpval[0] = prefix;
-                       strcat( &tmpval[1], val );
-                       realval = tmpval;
+       switch( ftype ) {
+       case LDAP_FILTER_PRESENT:
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_PRESENT ) ) {
+                       goto done;
                }
-       }
+               break;
+
+       case LDAP_FILTER_APPROX:
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_APPROX ) ) {
+                       goto done;
+               }
+               /* fall thru */
+
+       case LDAP_FILTER_EQUALITY:
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_EQUALITY ) ) {
+                       goto done;
+               }
+               break;
 
-       key.dptr = realval;
-       key.dsize = strlen( realval ) + 1;
+       case LDAP_FILTER_SUBSTRINGS:
+               if( IS_SLAP_INDEX( mask, SLAP_INDEX_SUBSTR ) ) {
+                       goto done;
+               }
+               break;
 
-       idl = idl_fetch( be, db, key );
+       default:
+               return LDAP_OTHER;
+       }
 
-       ldbm_cache_close( be, db );
+       return LDAP_INAPPROPRIATE_MATCHING;
 
-       Debug( LDAP_DEBUG_TRACE, "<= index_read %d candidates\n",
-           idl ? idl->b_nids : 0, 0, 0 );
-       return( idl );
+done:
+       *dbnamep = dbname;
+       *maskp = mask;
+       return LDAP_SUCCESS;
 }
 
-static int
-add_value(
-    Backend            *be,
-    struct dbcache     *db,
-    char               *type,
-    int                        indextype,
-    char               *val,
-    ID                 id
-)
+static int indexer(
+       Backend *be,
+       char *dbname,
+       struct berval *atname,
+       BerVarray vals,
+       ID id,
+       int op,
+       slap_mask_t mask )
 {
-       int     rc;
-       Datum   key;
-       IDList  *idl;
-       char    prefix;
-       char    *realval, *tmpval, *s;
-       char    buf[BUFSIZ];
-
-       prefix = index2prefix( indextype );
-       Debug( LDAP_DEBUG_TRACE, "=> add_value( \"%c%s\" )\n", prefix, val, 0 );
-
-       realval = val;
-       tmpval = NULL;
-       idl = NULL;
-       if ( prefix != '\0' ) {
-               int     len;
-
-               if ( (len = strlen( val )) < sizeof(buf) ) {
-                       buf[0] = prefix;
-                       strcpy( &buf[1], val );
-                       realval = buf;
-               } else {
-                       /* value + prefix + null */
-                       tmpval = (char *) ch_malloc( len + 2 );
-                       tmpval[0] = prefix;
-                       strcat( &tmpval[1], val );
-                       realval = tmpval;
-               }
-       }
+       int rc, i;
+       const char *text;
+    DBCache    *db;
+       AttributeDescription *ad = NULL;
+       struct berval *keys;
 
-       key.dptr = realval;
-       key.dsize = strlen( realval ) + 1;
+       assert( mask );
 
-       rc = idl_insert_key( be, db, key, id );
+       rc = slap_bv2ad( atname, &ad, &text );
 
-       if ( tmpval != NULL ) {
-               free( tmpval );
-       }
-       idl_free( idl );
+       if( rc != LDAP_SUCCESS ) return rc;
 
-       pthread_yield();
-
-       /* Debug( LDAP_DEBUG_TRACE, "<= add_value %d\n", rc, 0, 0 ); */
-       return( rc );
-}
+       db = ldbm_cache_open( be, dbname, LDBM_SUFFIX, LDBM_WRCREAT );
+       
+       if ( db == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( INDEX, ERR, 
+                          "index_read: Could not open db %s%s\n", dbname, LDBM_SUFFIX, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY,
+                   "<= index_read NULL (could not open %s%s)\n",
+                       dbname, LDBM_SUFFIX, 0 );
+#endif
 
-int
-index_add_values(
-    Backend            *be,
-    char               *type,
-    struct berval      **vals,
-    ID                 id
-)
-{
-       char            *val, *p, *code, *w;
-       int             i, j, len;
-       int             indexmask, syntax;
-       char            buf[SUBLEN + 1];
-       char            vbuf[BUFSIZ];
-       char            *bigbuf;
-       struct dbcache  *db;
-
-       Debug( LDAP_DEBUG_TRACE, "=> index_add_values( \"%s\", %ld )\n", type,
-           id, 0 );
-
-       attr_masks( be->be_private, type, &indexmask, &syntax );
-       if ( indexmask == 0 ) {
-               return( 0 );
+               return LDAP_OTHER;
        }
 
-       if ( (db = ldbm_cache_open( be, type, LDBM_SUFFIX, LDBM_WRCREAT ))
-           == NULL ) {
-               Debug( LDAP_DEBUG_ANY,
-                   "<= index_add_values -1 (could not open/create %s%s)\n",
-                   type, LDBM_SUFFIX, 0 );
-               return( -1 );
+       if( IS_SLAP_INDEX( mask, SLAP_INDEX_PRESENT ) ) {
+               key_change( be, db, atname, id, op );
        }
 
+       if( IS_SLAP_INDEX( mask, SLAP_INDEX_EQUALITY ) ) {
+               rc = ad->ad_type->sat_equality->smr_indexer(
+                       LDAP_FILTER_EQUALITY,
+                       mask,
+                       ad->ad_type->sat_syntax,
+                       ad->ad_type->sat_equality,
+                       atname, vals, &keys );
+
+               if( rc == LDAP_SUCCESS && keys != NULL ) {
+                       for( i=0; keys[i].bv_val != NULL; i++ ) {
+                               key_change( be, db, &keys[i], id, op );
+                       }
+                       ber_bvarray_free( keys );
+               }
+       }
 
-       for ( i = 0; vals[i] != NULL; i++ ) {
-               /*
-                * presence index entry
-                */
-               if ( indexmask & INDEX_PRESENCE ) {
-                       add_value( be, db, type, INDEX_PRESENCE, "*", id );
+       if( IS_SLAP_INDEX( mask, SLAP_INDEX_APPROX ) ) {
+               rc = ad->ad_type->sat_approx->smr_indexer(
+                       LDAP_FILTER_APPROX,
+                       mask,
+                       ad->ad_type->sat_syntax,
+                       ad->ad_type->sat_approx,
+                       atname, vals, &keys );
+
+               if( rc == LDAP_SUCCESS && keys != NULL ) {
+                       for( i=0; keys[i].bv_val != NULL; i++ ) {
+                               key_change( be, db, &keys[i], id, op );
+                       }
+                       ber_bvarray_free( keys );
                }
+       }
 
-               Debug( LDAP_DEBUG_TRACE, "*** index_add_values syntax 0x%x syntax bin 0x%x\n",
-                   syntax, SYNTAX_BIN, 0 );
-               if ( syntax & SYNTAX_BIN ) {
-                       ldbm_cache_close( be, db );
-                       return( 0 );
+       if( IS_SLAP_INDEX( mask, SLAP_INDEX_SUBSTR ) ) {
+               rc = ad->ad_type->sat_substr->smr_indexer(
+                       LDAP_FILTER_SUBSTRINGS,
+                       mask,
+                       ad->ad_type->sat_syntax,
+                       ad->ad_type->sat_substr,
+                       atname, vals, &keys );
+
+               if( rc == LDAP_SUCCESS && keys != NULL ) {
+                       for( i=0; keys[i].bv_val != NULL; i++ ) {
+                               key_change( be, db, &keys[i], id, op );
+                       }
+                       ber_bvarray_free( keys );
                }
+       }
 
-               bigbuf = NULL;
-               len = vals[i]->bv_len;
+       ldbm_cache_close( be, db );
+       return LDAP_SUCCESS;
+}
 
-               /* value + null */
-               if ( len + 2 > sizeof(vbuf) ) {
-                       bigbuf = (char *) ch_malloc( len + 1 );
-                       val = bigbuf;
-               } else {
-                       val = vbuf;
-               }
-               (void) memcpy( val, vals[i]->bv_val, len );
-               val[len] = '\0';
+static int index_at_values(
+       Backend *be,
+       AttributeType *type,
+       struct berval *lang,
+       BerVarray vals,
+       ID id,
+       int op )
+{
+       slap_mask_t mask = 0;
 
-               value_normalize( val, syntax );
+       if( type->sat_sup ) {
+               /* recurse */
+               (void) index_at_values( be,
+                       type->sat_sup, lang,
+                       vals, id, op );
+       }
 
-               /*
-                * equality index entry
-                */
-               if ( indexmask & INDEX_EQUALITY ) {
-                       add_value( be, db, type, INDEX_EQUALITY, val, id );
-               }
+       /* If this type has no AD, we've never used it before */
+       if( type->sat_ad ) {
+               attr_mask( be->be_private, type->sat_ad, &mask );
+       }
 
-               /*
-                * approximate index entry
-                */
-               if ( indexmask & INDEX_APPROX ) {
-                       for ( w = first_word( val ); w != NULL;
-                           w = next_word( w ) ) {
-                               if ( (code = phonetic( w )) != NULL ) {
-                                       add_value( be, db, type, INDEX_APPROX,
-                                           code, id );
-                                       free( code );
-                               }
-                       }
-               }
+       if( mask ) {
+               indexer( be, type->sat_cname.bv_val,
+                       &type->sat_cname,
+                       vals, id, op,
+                       mask );
+       }
 
-               /*
-                * substrings index entry
-                */
-               if ( indexmask & INDEX_SUB ) {
-                       /* leading and trailing */
-                       if ( len > SUBLEN - 2 ) {
-                               buf[0] = '^';
-                               for ( j = 0; j < SUBLEN - 1; j++ ) {
-                                       buf[j + 1] = val[j];
-                               }
-                               buf[SUBLEN] = '\0';
-
-                               add_value( be, db, type, INDEX_SUB, buf, id );
-
-                               p = val + len - SUBLEN + 1;
-                               for ( j = 0; j < SUBLEN - 1; j++ ) {
-                                       buf[j] = p[j];
-                               }
-                               buf[SUBLEN - 1] = '$';
-                               buf[SUBLEN] = '\0';
-
-                               add_value( be, db, type, INDEX_SUB, buf, id );
-                       }
+       if( lang->bv_len ) {
+               AttributeDescription *desc;
 
-                       /* any */
-                       for ( p = val; p < (val + len - SUBLEN + 1); p++ ) {
-                               for ( j = 0; j < SUBLEN; j++ ) {
-                                       buf[j] = p[j];
-                               }
-                               buf[SUBLEN] = '\0';
+               mask = 0;
 
-                               add_value( be, db, type, INDEX_SUB, buf, id );
-                       }
+               desc = ad_find_lang(type, lang);
+               if( desc ) {
+                       attr_mask( be->be_private, desc, &mask );
                }
 
-               if ( bigbuf != NULL ) {
-                       free( bigbuf );
+               if( mask ) {
+                       indexer( be, desc->ad_cname.bv_val, &desc->ad_cname,
+                               vals, id, op,
+                               mask );
                }
        }
-       ldbm_cache_close( be, db );
 
-       return( 0 );
+       return LDAP_SUCCESS;
 }
 
-static int
-index2prefix( int indextype )
+int index_values(
+       Backend *be,
+       AttributeDescription *desc,
+       BerVarray vals,
+       ID id,
+       int op )
 {
-       int     prefix;
+       (void) index_at_values( be,
+               desc->ad_type, &desc->ad_lang,
+               vals, id, op );
 
-       switch ( indextype ) {
-       case INDEX_EQUALITY:
-               prefix = EQ_PREFIX;
-               break;
-       case INDEX_APPROX:
-               prefix = APPROX_PREFIX;
-               break;
-       case INDEX_SUB:
-               prefix = SUB_PREFIX;
-               break;
-       default:
-               prefix = '\0';
-               break;
+       return LDAP_SUCCESS;
+}
+
+int
+index_entry(
+    Backend    *be,
+       int op,
+    Entry *e,
+       Attribute *ap )
+{
+#ifdef NEW_LOGGING
+       LDAP_LOG( INDEX, ENTRY, 
+               "index_entry: %s (%s)%ld\n", op == SLAP_INDEX_ADD_OP ? "add" : "del",
+               e->e_dn, e->e_id );
+#else
+       Debug( LDAP_DEBUG_TRACE, "=> index_entry_%s( %ld, \"%s\" )\n",
+               op == SLAP_INDEX_ADD_OP ? "add" : "del",
+               e->e_id, e->e_dn );
+#endif
+
+       /* add each attribute to the indexes */
+       for ( ; ap != NULL; ap = ap->a_next ) {
+               index_values( be, ap->a_desc, ap->a_vals, e->e_id, op );
        }
 
-       return( prefix );
+#ifdef NEW_LOGGING
+       LDAP_LOG( INDEX, ENTRY, "index_entry: success\n", 0, 0, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "<= index_entry_%s( %ld, \"%s\" ) success\n",
+           op == SLAP_INDEX_ADD_OP ? "add" : "del",
+               e->e_id, e->e_dn );
+#endif
+
+       return LDAP_SUCCESS;
 }
+
index d3e16e31c95b4b709180b1ca7e4aaf4f20a8e401..be55fac73c7de7d47d77186e5d3188493fb6bab5 100644 (file)
@@ -202,8 +202,8 @@ ldbm_back_db_open(
                if ( rc != 0 )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG (( "init", LDAP_LEVEL_ERR, "ldbm_back_db_open: sync "
-                       "ldap_pvt_thread_create failed (%d)\n", rc ));
+                       LDAP_LOG ( BACK_LDBM, ERR, "ldbm_back_db_open: sync "
+                               "ldap_pvt_thread_create failed (%d)\n", rc, 0, 0 );
 #else  
                        Debug(  LDAP_DEBUG_ANY,
                                "sync ldap_pvt_thread_create failed (%d)\n", rc, 0, 0 );
diff --git a/servers/slapd/back-ldbm/key.c b/servers/slapd/back-ldbm/key.c
new file mode 100644 (file)
index 0000000..0ea188a
--- /dev/null
@@ -0,0 +1,104 @@
+/* index.c - routines for dealing with attribute indexes */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "back-ldbm.h"
+
+/* read a key */
+int
+key_read(
+    Backend    *be,
+       DBCache *db,
+    struct berval *k,
+       ID_BLOCK **idout
+)
+{
+       Datum           key;
+       ID_BLOCK                *idl;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( INDEX, ENTRY, "key_read: enter\n", 0, 0, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "=> key_read\n", 0, 0, 0 );
+#endif
+
+
+       ldbm_datum_init( key );
+       key.dptr = k->bv_val;
+       key.dsize = k->bv_len;
+
+       idl = idl_fetch( be, db, key );
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( INDEX, ENTRY, 
+                  "key_read: %ld candidates\n", idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "<= index_read %ld candidates\n",
+              idl ? ID_BLOCK_NIDS(idl) : 0, 0, 0 );
+#endif
+
+
+       *idout = idl;
+       return LDAP_SUCCESS;
+}
+
+/* Add or remove stuff from index files */
+int
+key_change(
+    Backend            *be,
+    DBCache    *db,
+    struct berval *k,
+    ID                 id,
+    int                        op
+)
+{
+       int     rc;
+       Datum   key;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( INDEX, ENTRY, "key_change: %s ID %lx\n",
+                  op == SLAP_INDEX_ADD_OP ? "Add" : "Delete", (long)id, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "=> key_change(%s,%lx)\n",
+               op == SLAP_INDEX_ADD_OP ? "ADD":"DELETE", (long) id, 0 );
+#endif
+
+
+       ldbm_datum_init( key );
+       key.dptr = k->bv_val;
+       key.dsize = k->bv_len;
+
+       ldap_pvt_thread_mutex_lock( &db->dbc_write_mutex );
+       if (op == SLAP_INDEX_ADD_OP) {
+           /* Add values */
+           rc = idl_insert_key( be, db, key, id );
+
+       } else {
+           /* Delete values */
+           rc = idl_delete_key( be, db, key, id );
+       }
+       ldap_pvt_thread_mutex_unlock( &db->dbc_write_mutex );
+
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( INDEX, ENTRY, "key_change: return %d\n", rc, 0, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "<= key_change %d\n", rc, 0, 0 );
+#endif
+
+
+       ldap_pvt_thread_yield();
+
+       return rc;
+}
index 03f81b1687aa2675d3faa87f8f9577538e062331..a34cc06e979d6ed07a4d41966dd468b2f294f327 100644 (file)
@@ -41,8 +41,7 @@ int ldbm_modify_internal(
        Attribute       *ap;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
-               "ldbm_modify_internal: %s\n", dn ));
+       LDAP_LOG( BACK_LDBM, ENTRY,  "ldbm_modify_internal: %s\n", dn, 0, 0 );
 #else
        Debug(LDAP_DEBUG_TRACE, "ldbm_modify_internal: %s\n", dn, 0, 0);
 #endif
@@ -61,8 +60,7 @@ int ldbm_modify_internal(
                switch ( mod->sm_op ) {
                case LDAP_MOD_ADD:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "ldbm_modify_internal: add\n" ));
+                       LDAP_LOG( BACK_LDBM, DETAIL1, "ldbm_modify_internal: add\n", 0, 0, 0);
 #else
                        Debug(LDAP_DEBUG_ARGS, "ldbm_modify_internal: add\n", 0, 0, 0);
 #endif
@@ -70,9 +68,8 @@ int ldbm_modify_internal(
                        rc = modify_add_values( e, mod, text, textbuf, textlen );
                        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                       "ldbm_modify_internal: failed %d (%s)\n",
-                                       rc, *text ));
+                               LDAP_LOG( BACK_LDBM, INFO, 
+                                       "ldbm_modify_internal: failed %d (%s)\n", rc, *text, 0 );
 #else
                                Debug(LDAP_DEBUG_ARGS, "ldbm_modify_internal: %d %s\n",
                                        rc, *text, 0);
@@ -82,8 +79,7 @@ int ldbm_modify_internal(
 
                case LDAP_MOD_DELETE:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "ldbm_modify_internal: delete\n" ));
+                       LDAP_LOG( BACK_LDBM, DETAIL1, "ldbm_modify_internal: delete\n", 0,0,0);
 #else
                        Debug(LDAP_DEBUG_ARGS, "ldbm_modify_internal: delete\n", 0, 0, 0);
 #endif
@@ -92,8 +88,8 @@ int ldbm_modify_internal(
                        assert( rc != LDAP_TYPE_OR_VALUE_EXISTS );
                        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                       "ldbm_modify_internal: failed %d (%s)\n", rc, *text ));
+                               LDAP_LOG( BACK_LDBM, INFO, 
+                                       "ldbm_modify_internal: failed %d (%s)\n", rc, *text, 0 );
 #else
                                Debug(LDAP_DEBUG_ARGS, "ldbm_modify_internal: %d %s\n",
                                        rc, *text, 0);
@@ -103,8 +99,7 @@ int ldbm_modify_internal(
 
                case LDAP_MOD_REPLACE:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "ldbm_modify_internal:  replace\n" ));
+                       LDAP_LOG( BACK_LDBM, DETAIL1, "ldbm_modify_internal:  replace\n",0,0,0);
 #else
                        Debug(LDAP_DEBUG_ARGS, "ldbm_modify_internal: replace\n", 0, 0, 0);
 #endif
@@ -112,8 +107,8 @@ int ldbm_modify_internal(
                        rc = modify_replace_values( e, mod, text, textbuf, textlen );
                        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                       "ldbm_modify_internal: failed %d (%s)\n", rc, *text ));
+                               LDAP_LOG( BACK_LDBM, INFO, 
+                                       "ldbm_modify_internal: failed %d (%s)\n", rc, *text, 0 );
 #else
                                Debug(LDAP_DEBUG_ARGS, "ldbm_modify_internal: %d %s\n",
                                        rc, *text, 0);
@@ -123,8 +118,8 @@ int ldbm_modify_internal(
 
                case SLAP_MOD_SOFTADD:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "ldbm_modify_internal: softadd\n" ));
+                       LDAP_LOG( BACK_LDBM, DETAIL1, 
+                               "ldbm_modify_internal: softadd\n", 0, 0, 0 );
 #else
                        Debug(LDAP_DEBUG_ARGS, "ldbm_modify_internal: softadd\n", 0, 0, 0);
 #endif
@@ -141,8 +136,8 @@ int ldbm_modify_internal(
 
                        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                          "ldbm_modify_internal: failed %d (%s)\n", rc, *text ));
+                               LDAP_LOG( BACK_LDBM, INFO, 
+                                          "ldbm_modify_internal: failed %d (%s)\n", rc, *text, 0 );
 #else
                                Debug(LDAP_DEBUG_ARGS, "ldbm_modify_internal: %d %s\n",
                                        rc, *text, 0);
@@ -152,8 +147,8 @@ int ldbm_modify_internal(
 
                default:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                               "ldbm_modify_internal: invalid op %d\n", mod->sm_op ));
+                       LDAP_LOG( BACK_LDBM, ERR, 
+                               "ldbm_modify_internal: invalid op %d\n", mod->sm_op, 0, 0 );
 #else
                        Debug(LDAP_DEBUG_ANY, "ldbm_modify_internal: invalid op %d\n",
                                mod->sm_op, 0, 0);
@@ -162,8 +157,8 @@ int ldbm_modify_internal(
                        rc = LDAP_OTHER;
                        *text = "Invalid modify operation";
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                               "ldbm_modify_internal: %d (%s)\n", rc, *text ));
+                       LDAP_LOG( BACK_LDBM, INFO, 
+                               "ldbm_modify_internal: %d (%s)\n", rc, *text, 0 );
 #else
                        Debug(LDAP_DEBUG_ARGS, "ldbm_modify_internal: %d %s\n",
                                rc, *text, 0);
@@ -194,9 +189,9 @@ int ldbm_modify_internal(
        rc = entry_schema_check( be, e, save_attrs, text, textbuf, textlen );
        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                       "ldbm_modify_internal: entry failed schema check: %s\n",
-                       *text ));
+               LDAP_LOG( BACK_LDBM, ERR, 
+                       "ldbm_modify_internal: entry failed schema check: %s\n", 
+                       *text, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "entry failed schema check: %s\n",
                        *text, 0, 0 );
@@ -220,8 +215,9 @@ int ldbm_modify_internal(
                                           SLAP_INDEX_DELETE_OP );
                        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                                          "ldbm_modify_internal: Attribute index delete failure\n" ));
+                               LDAP_LOG( BACK_LDBM, ERR,
+                                       "ldbm_modify_internal: Attribute index delete failure\n",
+                                       0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                       "Attribute index delete failure",
@@ -240,8 +236,9 @@ int ldbm_modify_internal(
                                           SLAP_INDEX_ADD_OP );
                        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                                          "ldbm_modify_internal: Attribute index add failure\n" ));
+                               LDAP_LOG( BACK_LDBM, ERR,
+                                       "ldbm_modify_internal: Attribute index add failure\n",
+                                       0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                       "Attribute index add failure",
@@ -287,8 +284,7 @@ ldbm_back_modify(
        size_t textlen = sizeof textbuf;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
-               "ldbm_back_modify: enter\n" ));
+       LDAP_LOG( BACK_LDBM, ENTRY, "ldbm_back_modify: enter\n", 0, 0, 0);
 #else
        Debug(LDAP_DEBUG_ARGS, "ldbm_back_modify:\n", 0, 0, 0);
 #endif
@@ -329,8 +325,8 @@ ldbm_back_modify(
                        conn, op, e );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                          "ldbm_back_modify: entry (%s) is referral\n", ndn->bv_val ));
+               LDAP_LOG( BACK_LDBM, INFO, 
+                          "ldbm_back_modify: entry (%s) is referral\n", ndn->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "entry is referral\n", 0,
                    0, 0 );
index 59aee6894c5d6a2318369dc978ef29c46b4a4701..eb01cee71dfb28018ac3d06b4858fac0b735f0de 100644 (file)
@@ -74,11 +74,10 @@ ldbm_back_modrdn(
        int             manageDSAit = get_manageDSAit( op );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( BACK_LDBM, ENTRY, 
                "ldbm_back_modrdn: dn: %s newSuperior=%s\n", 
                dn->bv_len ? dn->bv_val : "NULL",
-               ( newSuperior && newSuperior->bv_len )
-                       ? newSuperior->bv_val : "NULL" ));
+               ( newSuperior && newSuperior->bv_len ) ? newSuperior->bv_val : "NULL",0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "==>ldbm_back_modrdn: dn: %s newSuperior=%s\n", 
@@ -124,8 +123,8 @@ ldbm_back_modrdn(
                        conn, op, e );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "ldbm_back_modrdn: entry %s is a referral\n", e->e_dn ));
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_modrdn: entry %s is a referral\n", e->e_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "entry %s is referral\n", e->e_dn,
                    0, 0 );
@@ -140,8 +139,8 @@ ldbm_back_modrdn(
 
        if ( has_children( be, e ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "ldbm_back_modrdn: entry %s has children\n", e->e_dn ));
+               LDAP_LOG( BACK_LDBM, INFO, 
+                       "ldbm_back_modrdn: entry %s has children\n", e->e_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "entry %s has children\n", e->e_dn,
                    0, 0 );
@@ -165,8 +164,9 @@ ldbm_back_modrdn(
 
                if( (p = dn2entry_w( be, &p_ndn, NULL )) == NULL) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                               "ldbm_back_modrdn: parent of %s does not exist\n", e->e_ndn ));
+                       LDAP_LOG( BACK_LDBM, INFO, 
+                               "ldbm_back_modrdn: parent of %s does not exist\n", 
+                               e->e_ndn, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "parent does not exist\n",
                                0, 0, 0);
@@ -183,8 +183,9 @@ ldbm_back_modrdn(
                        children, NULL, ACL_WRITE, NULL ) )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                  "ldbm_back_modrdn: no access to parent of (%s)\n", e->e_dn ));
+                       LDAP_LOG( BACK_LDBM, INFO, 
+                               "ldbm_back_modrdn: no access to parent of (%s)\n", 
+                               e->e_dn, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "no access to parent\n", 0,
                                0, 0 );
@@ -196,9 +197,9 @@ ldbm_back_modrdn(
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                          "ldbm_back_modrdn: wr to children of entry %s OK\n",
-                          p_ndn.bv_val ));
+               LDAP_LOG( BACK_LDBM, DETAIL1, 
+                       "ldbm_back_modrdn: wr to children of entry %s OK\n", 
+                       p_ndn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                       "ldbm_back_modrdn: wr to children of entry %s OK\n",
@@ -212,8 +213,8 @@ ldbm_back_modrdn(
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                          "ldbm_back_modrdn: parent dn=%s\n", p_dn.bv_val ));
+               LDAP_LOG( BACK_LDBM, DETAIL1, 
+                          "ldbm_back_modrdn: parent dn=%s\n", p_dn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "ldbm_back_modrdn: parent dn=%s\n",
                       p_dn.bv_val, 0, 0 );
@@ -233,9 +234,8 @@ ldbm_back_modrdn(
                                /* check parent for "children" acl */
                                if ( ! rc ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                                               "ldbm_back_modrdn: no access "
-                                               "to parent \"\"\n" ));
+                                       LDAP_LOG( BACK_LDBM, ERR,
+                                               "ldbm_back_modrdn: no access to parent \"\"\n", 0,0,0 );
 #else
                                        Debug( LDAP_DEBUG_TRACE,
                                                "<=- ldbm_back_modrdn: no "
@@ -250,9 +250,9 @@ ldbm_back_modrdn(
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                                          "ldbm_back_modrdn: (%s) has no "
-                                          "parent & not a root.\n", dn ));
+                               LDAP_LOG( BACK_LDBM, ERR, 
+                                       "ldbm_back_modrdn: (%s) has no parent & not a root.\n", 
+                                       dn, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "<=- ldbm_back_modrdn: no parent & "
@@ -267,8 +267,8 @@ ldbm_back_modrdn(
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                          "ldbm_back_modrdn: (%s) no parent, locked root.\n", e->e_dn ));
+               LDAP_LOG( BACK_LDBM, INFO, 
+                  "ldbm_back_modrdn: (%s) no parent, locked root.\n", e->e_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                       "ldbm_back_modrdn: no parent, locked root\n",
@@ -280,9 +280,9 @@ ldbm_back_modrdn(
 
        if ( newSuperior != NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( BACK_LDBM, DETAIL1, 
                        "ldbm_back_modrdn: new parent \"%s\" requested\n",
-                       newSuperior->bv_val ));
+                       newSuperior->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, 
                        "ldbm_back_modrdn: new parent \"%s\" requested...\n",
@@ -294,10 +294,9 @@ ldbm_back_modrdn(
                /* newSuperior == oldParent? */
                if ( dn_match( &p_ndn, np_ndn ) ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO, "ldbm_back_modrdn: "
+                       LDAP_LOG( BACK_LDBM, INFO, "ldbm_back_modrdn: "
                                "new parent\"%s\" seems to be the same as the "
-                               "old parent \"%s\"\n",
-                               newSuperior->bv_val, p_dn.bv_val ));
+                               "old parent \"%s\"\n", newSuperior->bv_val, p_dn.bv_val, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "ldbm_back_modrdn: "
                                "new parent\"%s\" seems to be the same as the "
@@ -316,8 +315,9 @@ ldbm_back_modrdn(
                if ( nnewSuperior->bv_len ) {
                        if( (np = dn2entry_w( be, np_ndn, NULL )) == NULL) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                                       "ldbm_back_modrdn: newSup(ndn=%s) not found.\n", np_ndn->bv_val ));
+                               LDAP_LOG( BACK_LDBM, ERR, 
+                                       "ldbm_back_modrdn: newSup(ndn=%s) not found.\n", 
+                                       np_ndn->bv_val, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                    "ldbm_back_modrdn: newSup(ndn=%s) not here!\n",
@@ -330,9 +330,9 @@ ldbm_back_modrdn(
                        }
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( BACK_LDBM, DETAIL1,
                                "ldbm_back_modrdn: wr to new parent OK np=%p, id=%ld\n",
-                               np, np->e_id ));
+                               np, np->e_id, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "ldbm_back_modrdn: wr to new parent OK np=%p, id=%ld\n",
@@ -344,8 +344,8 @@ ldbm_back_modrdn(
                                              ACL_WRITE, NULL ) )
                        {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                          "ldbm_back_modrdn: no wr to newSup children.\n" ));
+                               LDAP_LOG( BACK_LDBM, INFO,
+                                  "ldbm_back_modrdn: no wr to newSup children.\n", 0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                       "ldbm_back_modrdn: no wr to newSup children\n",
@@ -360,8 +360,8 @@ ldbm_back_modrdn(
                        if ( is_entry_alias( np ) ) {
                                /* parent is an alias, don't allow add */
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                          "ldbm_back_modrdn: entry (%s) is an alias.\n", np->e_dn ));
+                               LDAP_LOG( BACK_LDBM, INFO,
+                                  "ldbm_back_modrdn: entry (%s) is an alias.\n", np->e_dn,0,0);
 #else
                                Debug( LDAP_DEBUG_TRACE, "entry is alias\n", 0, 0, 0 );
 #endif
@@ -376,9 +376,9 @@ ldbm_back_modrdn(
                        if ( is_entry_referral( np ) ) {
                                /* parent is a referral, don't allow add */
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
+                               LDAP_LOG( BACK_LDBM, INFO,
                                        "ldbm_back_modrdn: entry (%s) is a referral\n",
-                               np->e_dn ));
+                                       np->e_dn, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE, "entry (%s) is referral\n",
                                        np->e_dn, 0, 0 );
@@ -408,9 +408,9 @@ ldbm_back_modrdn(
                                        /* check parent for "children" acl */
                                        if ( ! rc ) {
 #ifdef NEW_LOGGING
-                                               LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
+                                               LDAP_LOG( BACK_LDBM, ERR,
                                                        "ldbm_back_modrdn: no access "
-                                                       "to new superior \"\"\n" ));
+                                                       "to new superior \"\"\n", 0, 0, 0 );
 #else
                                                Debug( LDAP_DEBUG_TRACE,
                                                        "<=- ldbm_back_modrdn: no "
@@ -425,9 +425,9 @@ ldbm_back_modrdn(
 
                                } else {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                                                  "ldbm_back_modrdn: \"\" "
-                                                  "not allowed as new superior\n" ));
+                                       LDAP_LOG( BACK_LDBM, ERR,
+                                               "ldbm_back_modrdn: \"\" not allowed as new superior\n",
+                                               0, 0, 0 );
 #else
                                        Debug( LDAP_DEBUG_TRACE,
                                                "<=- ldbm_back_modrdn: \"\" "
@@ -444,8 +444,8 @@ ldbm_back_modrdn(
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                       "ldbm_back_modrdn: wr to new parent's children OK.\n" ));
+               LDAP_LOG( BACK_LDBM, DETAIL1,
+                       "ldbm_back_modrdn: wr to new parent's children OK.\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "ldbm_back_modrdn: wr to new parent's children OK\n",
@@ -460,8 +460,8 @@ ldbm_back_modrdn(
        dnNormalize2( NULL, &new_dn, &new_ndn );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-               "ldbm_back_modrdn: new ndn=%s\n", new_ndn.bv_val ));
+       LDAP_LOG( BACK_LDBM, DETAIL1, "ldbm_back_modrdn: new ndn=%s\n", 
+               new_ndn.bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "ldbm_back_modrdn: new ndn=%s\n",
            new_ndn.bv_val, 0, 0 );
@@ -481,8 +481,8 @@ ldbm_back_modrdn(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-               "ldbm_back_modrdn: new ndn (%s) does not exist\n", new_ndn.bv_val ));
+       LDAP_LOG( BACK_LDBM, INFO, "ldbm_back_modrdn: new ndn (%s) does not exist\n",
+               new_ndn.bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
            "ldbm_back_modrdn: new ndn=%s does not exist\n",
@@ -497,8 +497,9 @@ ldbm_back_modrdn(
                LDAP_DN_FORMAT_LDAP ) )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "ldbm_back_modrdn: can't figure out type(s)/value(s) of newrdn\n" ));
+               LDAP_LOG( BACK_LDBM, INFO,
+                       "ldbm_back_modrdn: can't figure out type(s)/value(s) of newrdn\n",
+                       0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                    "ldbm_back_modrdn: can't figure out type(s)/value(s) of newrdn\n",
@@ -511,9 +512,9 @@ ldbm_back_modrdn(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                  "ldbm_back_modrdn: new_rdn_type=\"%s\", new_rdn_val=\"%s\"\n",
-                  new_rdn[0][0]->la_attr.bv_val, new_rdn[0][0]->la_value.bv_val ));
+       LDAP_LOG( BACK_LDBM, DETAIL1,
+               "ldbm_back_modrdn: new_rdn_type=\"%s\", new_rdn_val=\"%s\"\n",
+               new_rdn[0][0]->la_attr.bv_val, new_rdn[0][0]->la_value.bv_val, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
               "ldbm_back_modrdn: new_rdn_type=\"%s\", new_rdn_val=\"%s\"\n",
@@ -525,8 +526,9 @@ ldbm_back_modrdn(
                LDAP_DN_FORMAT_LDAP ) )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                          "ldbm_back_modrdn: can't figure out the old_rdn type(s)/value(s).\n" ));
+               LDAP_LOG( BACK_LDBM, INFO,
+                       "ldbm_back_modrdn: can't figure out the old_rdn "
+                       "type(s)/value(s).\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                       "ldbm_back_modrdn: can't figure out the old_rdn type(s)/value(s)\n",
@@ -544,9 +546,9 @@ ldbm_back_modrdn(
        {
            /* Not a big deal but we may say something */
 #ifdef NEW_LOGGING
-           LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
+           LDAP_LOG( BACK_LDBM, INFO,
                       "ldbm_back_modrdn: old_rdn_type=%s new_rdn_type=%s\n",
-                      old_rdn_types[0], new_rdn_types[0] ));
+                      old_rdn_types[0], new_rdn_types[0], 0 );
 #else
            Debug( LDAP_DEBUG_TRACE,
                   "ldbm_back_modrdn: old_rdn_type=%s, new_rdn_type=%s!\n",
@@ -556,8 +558,7 @@ ldbm_back_modrdn(
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                  "ldbm_back_modrdn:  DN_X500\n" ));
+       LDAP_LOG( BACK_LDBM, DETAIL1, "ldbm_back_modrdn:  DN_X500\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "ldbm_back_modrdn: DN_X500\n",
               0, 0, 0 );
@@ -573,9 +574,9 @@ ldbm_back_modrdn(
 
                if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                  "ldbm_back_modrdn: slap_bv2ad error: %s (%s)\n",
-                                  text, new_rdn[0][a_cnt]->la_attr.bv_val ));
+                       LDAP_LOG( BACK_LDBM, INFO,
+                               "ldbm_back_modrdn: slap_bv2ad error: %s (%s)\n",
+                               text, new_rdn[0][a_cnt]->la_attr.bv_val, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "ldbm_back_modrdn: %s: %s (new)\n",
@@ -591,10 +592,9 @@ ldbm_back_modrdn(
                if ( ! access_allowed( be, conn, op, e, 
                                desc, &new_rdn[0][a_cnt]->la_value, ACL_WRITE, NULL ) ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                  "ldbm_back_modrdn: access "
-                                  "not allowed to attr \"%s\"\n",
-                                  new_rdn[0][a_cnt]->la_attr.bv_val ));
+                       LDAP_LOG( BACK_LDBM, INFO,
+                               "ldbm_back_modrdn: access not allowed to attr \"%s\"\n",
+                                  new_rdn[0][a_cnt]->la_attr.bv_val, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "ldbm_back_modrdn: access not allowed "
@@ -624,8 +624,9 @@ ldbm_back_modrdn(
                /* Get value of old rdn */
                if ( old_rdn == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                  "ldbm_back_modrdn: can't figure out old RDN value(s) from old RDN\n" ));
+                       LDAP_LOG( BACK_LDBM, INFO,
+                          "ldbm_back_modrdn: can't figure out old RDN value(s) "
+                          "from old RDN\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                               "ldbm_back_modrdn: can't figure out oldRDN value(s) from old RDN\n",
@@ -646,9 +647,9 @@ ldbm_back_modrdn(
 
                        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                          "ldbm_back_modrdn: %s: %s (old)\n",
-                                          text, old_rdn[0][d_cnt]->la_attr.bv_val ));
+                               LDAP_LOG( BACK_LDBM, INFO,
+                                  "ldbm_back_modrdn: %s: %s (old)\n",
+                                       text, old_rdn[0][d_cnt]->la_attr.bv_val, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "ldbm_back_modrdn: %s: %s (old)\n",
@@ -664,10 +665,9 @@ ldbm_back_modrdn(
                        if ( ! access_allowed( be, conn, op, e, 
                                        desc, &old_rdn[0][d_cnt]->la_value, ACL_WRITE, NULL ) ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                                          "ldbm_back_modrdn: access "
-                                          "not allowed to attr \"%s\"\n",
-                                          old_rdn[0][d_cnt]->la_attr.bv_val ));
+                               LDAP_LOG( BACK_LDBM, INFO,
+                                  "ldbm_back_modrdn: access not allowed to attr \"%s\"\n",
+                                          old_rdn[0][d_cnt]->la_attr.bv_val, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "ldbm_back_modrdn: access not allowed "
@@ -693,8 +693,9 @@ ldbm_back_modrdn(
                        mod = mod_tmp;
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                  "ldbm_back_modrdn: removing old_rdn_val=%s\n", old_rdn[0][d_cnt]->la_value.bv_val ));
+                       LDAP_LOG( BACK_LDBM, DETAIL1,
+                          "ldbm_back_modrdn: removing old_rdn_val=%s\n", 
+                          old_rdn[0][d_cnt]->la_value.bv_val, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                               "ldbm_back_modrdn: removing old_rdn_val=%s\n",
index e51f4d84e76ce4de24f4dc6a4819befdc4cc3deb..8159ccf39ba8abfd20d1a0703ed32fe815743676 100644 (file)
-/* id.c - keep track of the next id to be given out */
+/* nextid.c - keep track of the next id to be given out */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
-#include <sys/param.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+#include <ac/param.h>
+
 #include "slap.h"
 #include "back-ldbm.h"
 
-ID
-next_id( Backend *be )
+static int
+next_id_read( Backend *be, ID *idp )
 {
-       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       char            buf[MAXPATHLEN];
-       char            buf2[20];
-       FILE            *fp;
-       ID              id;
-
-       sprintf( buf, "%s/NEXTID", li->li_directory );
-
-       pthread_mutex_lock( &li->li_nextid_mutex );
-       /* first time in here since startup - try to read the nexid */
-       if ( li->li_nextid == -1 ) {
-               if ( (fp = fopen( buf, "r" )) == NULL ) {
-                       Debug( LDAP_DEBUG_ANY,
-                           "next_id %d: could not open \"%s\"\n",
-                           li->li_nextid, buf, 0 );
-                       li->li_nextid = 1;
-               } else {
-                       if ( fgets( buf2, sizeof(buf2), fp ) != NULL ) {
-                               li->li_nextid = atol( buf2 );
-                       } else {
-                               Debug( LDAP_DEBUG_ANY,
-                           "next_id %d: could not fgets nextid from \"%s\"\n",
-                                   li->li_nextid, buf2, 0 );
-                               li->li_nextid = 1;
-                       }
-                       fclose( fp );
-               }
+       Datum key, data;
+       DBCache *db;
+
+       *idp = NOID;
+
+       if ( (db = ldbm_cache_open( be, "nextid", LDBM_SUFFIX, LDBM_WRCREAT ))
+           == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, CRIT,
+                  "next_id_read: could not open/create nextid%s\n", LDBM_SUFFIX, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "Could not open/create nextid" LDBM_SUFFIX "\n",
+                       0, 0, 0 );
+#endif
+
+               return( -1 );
        }
 
-       li->li_nextid++;
-       if ( (fp = fopen( buf, "w" )) == NULL ) {
-               Debug( LDAP_DEBUG_ANY, "next_id %d: could not open \"%s\"\n",
-                   li->li_nextid, buf, 0 );
+       ldbm_datum_init( key );
+       key.dptr = (char *) idp;
+       key.dsize = sizeof(ID);
+
+       data = ldbm_cache_fetch( db, key );
+
+       if( data.dptr != NULL ) {
+               AC_MEMCPY( idp, data.dptr, sizeof( ID ) );
+               ldbm_datum_free( db->dbc_db, data );
+
        } else {
-               if ( fprintf( fp, "%ld\n", li->li_nextid ) == EOF ) {
-                       Debug( LDAP_DEBUG_ANY, "next_id %d: cannot fprintf\n",
-                           li->li_nextid, 0, 0 );
-               }
-               if( fclose( fp ) != 0 ) {
-                       Debug( LDAP_DEBUG_ANY, "next_id %d: cannot fclose\n",
-                           li->li_nextid, 0, 0 );
-               }
+               *idp = 1;
        }
-       id = li->li_nextid - 1;
-       pthread_mutex_unlock( &li->li_nextid_mutex );
 
-       return( id );
+       ldbm_cache_close( be, db );
+       return( 0 );
 }
 
-void
-next_id_return( Backend *be, ID id )
+int
+next_id_write( Backend *be, ID id )
 {
-       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       char            buf[MAXPATHLEN];
-       FILE            *fp;
+       Datum key, data;
+       DBCache *db;
+       ID noid = NOID;
+       int flags, rc = 0;
 
-       pthread_mutex_lock( &li->li_nextid_mutex );
-       if ( id != li->li_nextid - 1 ) {
-               pthread_mutex_unlock( &li->li_nextid_mutex );
-               return;
+       if ( (db = ldbm_cache_open( be, "nextid", LDBM_SUFFIX, LDBM_WRCREAT ))
+           == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, CRIT,
+                 "next_id_write: Could not open/create nextid%s\n", LDBM_SUFFIX, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "Could not open/create nextid" LDBM_SUFFIX "\n",
+                   0, 0, 0 );
+#endif
+
+               return( -1 );
        }
 
-       sprintf( buf, "%s/NEXTID", li->li_directory );
+       ldbm_datum_init( key );
+       ldbm_datum_init( data );
 
-       li->li_nextid--;
-       if ( (fp = fopen( buf, "w" )) == NULL ) {
-               Debug( LDAP_DEBUG_ANY,
-                   "next_id_return of %d: could not open \"%s\" next id %d\n",
-                   id, buf, li->li_nextid );
-       } else {
-               if ( fprintf( fp, "%ld\n", li->li_nextid ) == EOF ) {
-                       Debug( LDAP_DEBUG_ANY,
-                   "next_id_return of %d: cannot fprintf \"%s\" next id %d\n",
-                           id, buf, li->li_nextid );
-               }
-               if( fclose( fp ) != 0 ) {
-                       Debug( LDAP_DEBUG_ANY,
-                   "next_id_return of %d: cannot fclose \"%s\" next id %d\n",
-                           id, buf, li->li_nextid );
+       key.dptr = (char *) &noid;
+       key.dsize = sizeof(ID);
+
+       data.dptr = (char *) &id;
+       data.dsize = sizeof(ID);
+
+       flags = LDBM_REPLACE;
+       if ( ldbm_cache_store( db, key, data, flags ) != 0 ) {
+               rc = -1;
+       }
+
+       ldbm_cache_close( be, db );
+       return( rc );
+}
+
+int
+next_id_get( Backend *be, ID *idp )
+{
+       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
+       int rc = 0;
+
+       *idp = NOID;
+
+       if ( li->li_nextid == NOID ) {
+               if ( ( rc = next_id_read( be, idp ) ) ) {
+                       return( rc );
                }
+               li->li_nextid = *idp;
        }
-       pthread_mutex_unlock( &li->li_nextid_mutex );
+
+       *idp = li->li_nextid;
+
+       return( rc );
 }
 
-ID
-next_id_get( Backend *be )
+int
+next_id( Backend *be, ID *idp )
 {
        struct ldbminfo *li = (struct ldbminfo *) be->be_private;
-       char            buf[MAXPATHLEN];
-       char            buf2[20];
-       FILE            *fp;
-       ID              id;
-
-       sprintf( buf, "%s/NEXTID", li->li_directory );
-
-       pthread_mutex_lock( &li->li_nextid_mutex );
-       /* first time in here since startup - try to read the nexid */
-       if ( li->li_nextid == -1 ) {
-               if ( (fp = fopen( buf, "r" )) == NULL ) {
-                       Debug( LDAP_DEBUG_ANY,
-                           "next_id %d: could not open \"%s\"\n",
-                           li->li_nextid, buf, 0 );
-                       li->li_nextid = 1;
-               } else {
-                       if ( fgets( buf2, sizeof(buf2), fp ) != NULL ) {
-                               li->li_nextid = atol( buf2 );
-                       } else {
-                               Debug( LDAP_DEBUG_ANY,
-                           "next_id %d: cannot fgets nextid from \"%s\"\n",
-                                   li->li_nextid, buf2, 0 );
-                               li->li_nextid = 1;
-                       }
-                       fclose( fp );
+       int rc = 0;
+
+       if ( li->li_nextid == NOID ) {
+               if ( ( rc = next_id_read( be, idp ) ) ) {
+                       return( rc );
                }
+               li->li_nextid = *idp;
+       }
+
+       *idp = li->li_nextid++;
+       if ( next_id_write( be, li->li_nextid ) ) {
+               rc = -1;
        }
-       id = li->li_nextid;
-       pthread_mutex_unlock( &li->li_nextid_mutex );
 
-       return( id );
+       return( rc );
 }
index ae0f245858baf04814381e36a3d84261622085b1..e7df1ae28fa5e3249901e93dace665fa0ff3eb1f 100644 (file)
@@ -48,9 +48,8 @@ ldbm_back_exop_passwd(
                &id, NULL, &new, text );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
-                  "ldbm_back_exop_passwd: \"%s\"\n",
-                  id.bv_val ? id.bv_val : "" ));
+       LDAP_LOG( BACK_LDBM, ENTRY,
+                  "ldbm_back_exop_passwd: \"%s\"\n", id.bv_val ? id.bv_val : "", 0,0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "==> ldbm_back_exop_passwd: \"%s\"\n",
                id.bv_val ? id.bv_val : "", 0, 0 );
@@ -88,9 +87,9 @@ ldbm_back_exop_passwd(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
+       LDAP_LOG( BACK_LDBM, DETAIL1,
                "ldbm_back_exop_passwd: \"%s\"%s\n",
-               dn.bv_val, id.bv_len ? " (proxy)" : "" ));
+               dn.bv_val, id.bv_len ? " (proxy)" : "", 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "passwd: \"%s\"%s\n",
                dn.bv_val, id.bv_len ? " (proxy)" : "", 0 );
diff --git a/servers/slapd/back-ldbm/referral.c b/servers/slapd/back-ldbm/referral.c
new file mode 100644 (file)
index 0000000..a1e34bd
--- /dev/null
@@ -0,0 +1,128 @@
+/* referral.c - LDBM backend referral handler */
+/* $OpenLDAP$ */
+/*
+ * Copyright 2000-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "back-ldbm.h"
+
+int
+ldbm_back_referrals(
+    Backend    *be,
+    Connection *conn,
+    Operation  *op,
+    struct berval *dn,
+    struct berval *ndn,
+       const char **text )
+{
+       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
+       int rc = LDAP_SUCCESS;
+       Entry *e, *matched;
+
+       if( op->o_tag == LDAP_REQ_SEARCH ) {
+               /* let search take care of itself */
+               return rc;
+       }
+
+       if( get_manageDSAit( op ) ) {
+               /* let op take care of DSA management */
+               return rc;
+       } 
+
+       /* grab giant lock for reading */
+       ldap_pvt_thread_rdwr_rlock(&li->li_giant_rwlock);
+
+       /* get entry with reader lock */
+       e = dn2entry_r( be, ndn, &matched );
+       if ( e == NULL ) {
+               char *matched_dn = NULL;
+               BerVarray refs = NULL;
+
+               if ( matched != NULL ) {
+                       matched_dn = ch_strdup( matched->e_dn );
+
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_LDBM, DETAIL1,
+                               "ldbm_back_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
+                               op->o_tag, dn->bv_val, matched_dn );
+#else
+                       Debug( LDAP_DEBUG_TRACE,
+                               "ldbm_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
+                               op->o_tag, dn->bv_val, matched_dn );
+#endif
+
+                       if( is_entry_referral( matched ) ) {
+                               rc = LDAP_OTHER;
+                               refs = get_entry_referrals( be, conn, op, matched );
+                       }
+
+                       cache_return_entry_r( &li->li_cache, matched );
+
+               } else if ( default_referral != NULL ) {
+                       rc = LDAP_OTHER;
+                       refs = referral_rewrite( default_referral,
+                               NULL, dn, LDAP_SCOPE_DEFAULT );
+               }
+
+               ldap_pvt_thread_rdwr_runlock(&li->li_giant_rwlock);
+
+               if( refs != NULL ) {
+                       /* send referrals */
+                       send_ldap_result( conn, op, rc = LDAP_REFERRAL,
+                               matched_dn, NULL, refs, NULL );
+                       ber_bvarray_free( refs );
+
+               } else if ( rc != LDAP_SUCCESS ) {
+                       send_ldap_result( conn, op, rc, matched_dn,
+                               matched_dn ? "bad referral object" : "bad default referral",
+                               NULL, NULL );
+               }
+
+               if ( matched_dn ) free( matched_dn );
+               return rc;
+       }
+
+       if ( is_entry_referral( e ) ) {
+               /* entry is a referral */
+               BerVarray refs = get_entry_referrals( be, conn, op, e );
+               BerVarray rrefs = referral_rewrite(
+                       refs, &e->e_name, dn, LDAP_SCOPE_DEFAULT );
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, DETAIL1,
+                       "ldbm_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
+                       op->o_tag, dn->bv_val, e->e_dn );
+#else
+               Debug( LDAP_DEBUG_TRACE,
+                       "ldbm_referrals: op=%ld target=\"%s\" matched=\"%s\"\n",
+                       op->o_tag, dn->bv_val, e->e_dn );
+#endif
+
+               if( rrefs != NULL ) {
+                       send_ldap_result( conn, op, rc = LDAP_REFERRAL,
+                               e->e_dn, NULL, rrefs, NULL );
+
+                       ber_bvarray_free( rrefs );
+
+               } else {
+                       send_ldap_result( conn, op, rc = LDAP_OTHER, e->e_dn,
+                               "bad referral object", NULL, NULL );
+               }
+
+               if( refs != NULL ) ber_bvarray_free( refs );
+       }
+
+       cache_return_entry_r( &li->li_cache, e );
+       ldap_pvt_thread_rdwr_runlock(&li->li_giant_rwlock);
+
+       return rc;
+}
index 91549f1b8b4c8d4a2d3b013df766e0e304ce1920..87f4b9278b1676360089b3b42d5fd18445464e53 100644 (file)
@@ -58,8 +58,7 @@ ldbm_back_search(
        int isroot = 0;
                
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
-               "ldbm_back_search: enter\n" ));
+       LDAP_LOG( BACK_LDBM, ENTRY, "ldbm_back_search: enter\n", 0, 0, 0 );
 #else
        Debug(LDAP_DEBUG_TRACE, "=> ldbm_back_search\n", 0, 0, 0);
 #endif
@@ -142,9 +141,9 @@ ldbm_back_search(
                ldap_pvt_thread_rdwr_runlock(&li->li_giant_rwlock);
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
+               LDAP_LOG( BACK_LDBM, INFO,
                        "ldbm_search: entry (%s) is a referral.\n",
-                       e->e_dn ));
+                       e->e_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "ldbm_search: entry is referral\n",
@@ -198,8 +197,8 @@ searchit:
        if ( candidates == NULL ) {
                /* no candidates */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                       "ldbm_search: no candidates\n" ));
+               LDAP_LOG( BACK_LDBM, INFO,
+                       "ldbm_search: no candidates\n" , 0, 0, 0);
 #else
                Debug( LDAP_DEBUG_TRACE, "ldbm_search: no candidates\n",
                        0, 0, 0 );
@@ -313,8 +312,8 @@ searchit:
 
                if ( e == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                               "ldbm_search: candidate %ld not found.\n", id ));
+                       LDAP_LOG( BACK_LDBM, INFO,
+                               "ldbm_search: candidate %ld not found.\n", id, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "ldbm_search: candidate %ld not found\n",
@@ -352,8 +351,8 @@ searchit:
                        } else if ( dnIsSuffix( &e->e_nname, &realbase ) ) {
                                /* alias is within scope */
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                       "ldbm_search: alias \"%s\" in subtree\n", e->e_dn ));
+                               LDAP_LOG( BACK_LDBM, DETAIL1,
+                                       "ldbm_search: alias \"%s\" in subtree\n", e->e_dn, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "ldbm_search: alias \"%s\" in subtree\n",
@@ -408,9 +407,9 @@ searchit:
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL2,
+                               LDAP_LOG( BACK_LDBM, DETAIL2,
                                        "ldbm_search: candidate referral %ld scope not okay\n",
-                                       id ));
+                                       id, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "ldbm_search: candidate referral %ld scope not okay\n",
@@ -470,8 +469,9 @@ searchit:
                                }
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL2,
-                                       "ldbm_search: candidate entry %ld scope not okay\n", id ));
+                               LDAP_LOG( BACK_LDBM, DETAIL2,
+                                       "ldbm_search: candidate entry %ld scope not okay\n", 
+                                       id, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                        "ldbm_search: candidate entry %ld scope not okay\n",
@@ -481,8 +481,9 @@ searchit:
 
                } else {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL2,
-                               "ldbm_search: candidate entry %ld does not match filter\n", id ));
+                       LDAP_LOG( BACK_LDBM, DETAIL2,
+                               "ldbm_search: candidate entry %ld does not match filter\n", 
+                               id, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "ldbm_search: candidate entry %ld does not match filter\n",
@@ -525,8 +526,7 @@ base_candidate(
        ID_BLOCK                *idl;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
-                  "base_candidate: base (%s)\n", e->e_dn ));
+       LDAP_LOG( BACK_LDBM, ENTRY, "base_candidate: base (%s)\n", e->e_dn, 0, 0 );
 #else
        Debug(LDAP_DEBUG_TRACE, "base_candidates: base: \"%s\"\n",
                e->e_dn, 0, 0);
@@ -555,9 +555,9 @@ search_candidates(
        struct berval bv_alias = { sizeof("ALIAS")-1, "ALIAS" };
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
+       LDAP_LOG( BACK_LDBM, DETAIL1,
                   "search_candidates: base (%s) scope %d deref %d\n",
-                  e->e_ndn, scope, deref ));
+                  e->e_ndn, scope, deref );
 #else
        Debug(LDAP_DEBUG_TRACE,
                "search_candidates: base=\"%s\" s=%d d=%d\n",
diff --git a/servers/slapd/back-ldbm/tools.c b/servers/slapd/back-ldbm/tools.c
new file mode 100644 (file)
index 0000000..5d0855b
--- /dev/null
@@ -0,0 +1,325 @@
+/* tools.c - tools for slap tools */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "back-ldbm.h"
+
+static LDBMCursor *cursorp = NULL;
+static DBCache *id2entry = NULL;
+
+int ldbm_tool_entry_open(
+       BackendDB *be, int mode )
+{
+       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
+       int flags;
+
+       assert( slapMode & SLAP_TOOL_MODE );
+       assert( id2entry == NULL );
+
+       switch( mode ) {
+       case 1:
+               flags = LDBM_WRCREAT;
+               break;
+       case 2:
+#ifdef TRUNCATE_MODE
+               flags = LDBM_NEWDB;
+#else
+               flags = LDBM_WRCREAT;
+#endif
+               break;
+       default:
+               flags = LDBM_READER;
+       }
+
+       li->li_dbwritesync = 0;
+
+       if ( (id2entry = ldbm_cache_open( be, "id2entry", LDBM_SUFFIX, flags ))
+           == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, CRIT,
+                          "Could not open/create id2entry%s\n", LDBM_SUFFIX, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "Could not open/create id2entry" LDBM_SUFFIX "\n",
+                   0, 0, 0 );
+#endif
+
+               return( -1 );
+       }
+
+       return 0;
+}
+
+int ldbm_tool_entry_close(
+       BackendDB *be )
+{
+       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
+
+       assert( slapMode & SLAP_TOOL_MODE );
+       assert( id2entry != NULL );
+
+       ldbm_cache_close( be, id2entry );
+       li->li_dbwritesync = 1;
+       id2entry = NULL;
+
+       return 0;
+}
+
+ID ldbm_tool_entry_first(
+       BackendDB *be )
+{
+       Datum key;
+       ID id;
+
+       assert( slapMode & SLAP_TOOL_MODE );
+       assert( id2entry != NULL );
+
+       key = ldbm_firstkey( id2entry->dbc_db, &cursorp );
+
+       if( key.dptr == NULL ) {
+               return NOID;
+       }
+
+       AC_MEMCPY( &id, key.dptr, key.dsize );
+#ifndef WORDS_BIGENDIAN
+       id = ntohl( id );
+#endif
+
+       ldbm_datum_free( id2entry->dbc_db, key );
+
+       return id;
+}
+
+ID ldbm_tool_entry_next(
+       BackendDB *be )
+{
+       Datum key;
+       ID id;
+
+       assert( slapMode & SLAP_TOOL_MODE );
+       assert( id2entry != NULL );
+
+       /* allow for NEXTID */
+       ldbm_datum_init( key );
+
+       key = ldbm_nextkey( id2entry->dbc_db, key, cursorp );
+
+       if( key.dptr == NULL ) {
+               return NOID;
+       }
+
+       AC_MEMCPY( &id, key.dptr, key.dsize );
+#ifndef WORDS_BIGENDIAN
+       id = ntohl( id );
+#endif
+
+       ldbm_datum_free( id2entry->dbc_db, key );
+
+       return id;
+}
+
+Entry* ldbm_tool_entry_get( BackendDB *be, ID id )
+{
+       Entry *e;
+       Datum key, data;
+#ifndef WORDS_BIGENDIAN
+       ID id2;
+#endif
+       assert( slapMode & SLAP_TOOL_MODE );
+       assert( id2entry != NULL );
+
+       ldbm_datum_init( key );
+
+#ifndef WORDS_BIGENDIAN
+       id2 = htonl( id );
+       key.dptr = (char *) &id2;
+#else
+       key.dptr = (char *) &id;
+#endif
+       key.dsize = sizeof(ID);
+
+       data = ldbm_cache_fetch( id2entry, key );
+
+       if ( data.dptr == NULL ) {
+               return NULL;
+       }
+
+       e = str2entry( data.dptr );
+       ldbm_datum_free( id2entry->dbc_db, data );
+
+       if( e != NULL ) {
+               e->e_id = id;
+       }
+
+       return e;
+}
+
+ID ldbm_tool_entry_put(
+       BackendDB *be,
+       Entry *e,
+       struct berval *text )
+{
+       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
+       Datum key, data;
+       int rc, len;
+       ID id;
+
+       assert( slapMode & SLAP_TOOL_MODE );
+       assert( id2entry != NULL );
+
+       assert( text );
+       assert( text->bv_val );
+       assert( text->bv_val[0] == '\0' );
+
+       if ( next_id_get( be, &id ) || id == NOID ) {
+               strncpy( text->bv_val, "unable to get nextid", text->bv_len );
+               return NOID;
+       }
+
+       e->e_id = li->li_nextid++;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY,
+               "ldbm_tool_entry_put: (%s)%ld\n", e->e_dn, e->e_id ,0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "=> ldbm_tool_entry_put( %ld, \"%s\" )\n",
+               e->e_id, e->e_dn, 0 );
+#endif
+
+       if ( dn2id( be, &e->e_nname, &id ) ) {
+               /* something bad happened to ldbm cache */
+               strncpy( text->bv_val, "ldbm cache corrupted", text->bv_len );
+               return NOID;
+       }
+
+       if( id != NOID ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, ENTRY,
+                       "ldbm_tool_entry_put: \"%s\" already exists (id=%ld)\n",
+                       e->e_dn, id, 0 );
+#else
+               Debug( LDAP_DEBUG_TRACE,
+                       "<= ldbm_tool_entry_put: \"%s\" already exists (id=%ld)\n",
+                       e->e_ndn, id, 0 );
+#endif
+               strncpy( text->bv_val, "already exists", text->bv_len );
+               return NOID;
+       }
+
+       rc = index_entry_add( be, e, e->e_attrs );
+       if( rc != 0 ) {
+               strncpy( text->bv_val, "index add failed", text->bv_len );
+               return NOID;
+       }
+
+       rc = dn2id_add( be, &e->e_nname, e->e_id );
+       if( rc != 0 ) {
+               strncpy( text->bv_val, "dn2id add failed", text->bv_len );
+               return NOID;
+       }
+
+       ldbm_datum_init( key );
+       ldbm_datum_init( data );
+
+#ifndef WORDS_BIGENDIAN
+       id = htonl( e->e_id );
+       key.dptr = (char *) &id;
+#else
+       key.dptr = (char *) &e->e_id;
+#endif
+       key.dsize = sizeof(ID);
+
+       data.dptr = entry2str( e, &len );
+       data.dsize = len + 1;
+
+       /* store it */
+       rc = ldbm_cache_store( id2entry, key, data, LDBM_REPLACE );
+
+       if( rc != 0 ) {
+               (void) dn2id_delete( be, &e->e_nname, e->e_id );
+               strncpy( text->bv_val, "cache store failed", text->bv_len );
+               return NOID;
+       }
+
+       return e->e_id;
+}
+
+int ldbm_tool_entry_reindex(
+       BackendDB *be,
+       ID id )
+{
+       int rc;
+       Entry *e;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY, "ldbm_tool_entry_reindex: ID=%ld\n", 
+               (long)id, 0, 0 );
+#else
+       Debug( LDAP_DEBUG_ARGS, "=> ldbm_tool_entry_reindex( %ld )\n",
+               (long) id, 0, 0 );
+#endif
+
+
+       e = ldbm_tool_entry_get( be, id );
+
+       if( e == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_LDBM, INFO,
+                  "ldbm_tool_entry_reindex: could not locate id %ld\n", 
+                  (long)id, 0, 0  );
+#else
+               Debug( LDAP_DEBUG_ANY,
+                       "ldbm_tool_entry_reindex:: could not locate id=%ld\n",
+                       (long) id, 0, 0 );
+#endif
+
+               return -1;
+       }
+
+       /*
+        * just (re)add them for now
+        * assume that some other routine (not yet implemented)
+        * will zap index databases
+        *
+        */
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_LDBM, ENTRY,
+                  "ldbm_tool_entry_reindex: (%s) %ld\n", e->e_dn, id, 0 );
+#else
+       Debug( LDAP_DEBUG_TRACE, "=> ldbm_tool_entry_reindex( %ld, \"%s\" )\n",
+               id, e->e_dn, 0 );
+#endif
+
+       dn2id_add( be, &e->e_nname, e->e_id );
+       rc = index_entry_add( be, e, e->e_attrs );
+
+       entry_free( e );
+
+       return rc;
+}
+
+int ldbm_tool_sync( BackendDB *be )
+{
+       struct ldbminfo *li = (struct ldbminfo *) be->be_private;
+
+       assert( slapMode & SLAP_TOOL_MODE );
+
+       if ( li->li_nextid != NOID ) {
+               if ( next_id_write( be, li->li_nextid ) ) {
+                       return( -1 );
+               }
+       }
+
+       return 0;
+}
diff --git a/servers/slapd/back-meta/add.c b/servers/slapd/back-meta/add.c
new file mode 100644 (file)
index 0000000..ce3d73f
--- /dev/null
@@ -0,0 +1,214 @@
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ *
+ * Copyright 2001, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ *
+ * This work has been developed to fulfill the requirements
+ * of SysNet s.n.c. <http:www.sys-net.it> and it has been donated
+ * to the OpenLDAP Foundation in the hope that it may be useful
+ * to the Open Source community, but WITHOUT ANY WARRANTY.
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ * 
+ * 1. The author and SysNet s.n.c. are not responsible for the consequences
+ *    of use of this software, no matter how awful, even if they arise from 
+ *    flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ *    SysNet s.n.c. cannot be responsible for the consequences of the
+ *    alterations.
+ * 
+ * 4. This notice may not be removed or altered.
+ * 
+ * 
+ * This software is based on the backend back-ldap, implemented
+ * by Howard Chu <hyc@highlandsun.com>, and modified by Mark Valence
+ * <kurash@sassafras.com>, Pierangelo Masarati <ando@sys-net.it> and other
+ * contributors. The contribution of the original software to the present
+ * implementation is acknowledged in this copyright statement.
+ * 
+ * A special acknowledgement goes to Howard for the overall architecture
+ * (and for borrowing large pieces of code), and to Mark, who implemented
+ * from scratch the attribute/objectclass mapping.
+ * 
+ * The original copyright statement follows.
+ *
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the
+ *    documentation.
+ *
+ * 4. This notice may not be removed or altered.
+ *                
+ */
+
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "../back-ldap/back-ldap.h"
+#include "back-meta.h"
+
+int
+meta_back_add(
+               Backend         *be,
+               Connection      *conn,
+               Operation       *op,
+               Entry           *e
+)
+{
+       struct metainfo *li = ( struct metainfo * )be->be_private;
+       struct metaconn *lc;
+       int i, candidate = -1;
+       Attribute *a;
+       LDAPMod **attrs;
+       struct berval mdn = { 0, NULL }, mapped;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_META, ENTRY, "meta_back_add: %s\n", e->e_dn, 0, 0 );
+#else /* !NEW_LOGGING */
+       Debug(LDAP_DEBUG_ARGS, "==> meta_back_add: %s\n%s%s", e->e_dn, "", "");
+#endif /* !NEW_LOGGING */
+
+       /*
+        * get the current connection
+        */
+       lc = meta_back_getconn( li, conn, op, META_OP_REQUIRE_SINGLE,
+                       &e->e_nname, &candidate );
+       if ( !lc || !meta_back_dobind( lc, op ) || !meta_back_is_valid( lc, candidate ) ) {
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+       }
+
+       /*
+        * Rewrite the add dn, if needed
+        */
+       switch ( rewrite_session( li->targets[ candidate ]->rwinfo,
+                               "addDn", e->e_dn, conn, &mdn.bv_val )) {
+       case REWRITE_REGEXEC_OK:
+               if ( mdn.bv_val != NULL && mdn.bv_val[ 0 ] != '\0' ) {
+                       mdn.bv_len = strlen( mdn.bv_val );
+               } else {
+                       mdn = e->e_name;
+               }
+
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_META, DETAIL1,
+                       "[rw] addDn: \"%s\" -> \"%s\"\n", e->e_dn, mdn.bv_val, 0 );
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS, "rw> addDn: \"%s\" -> \"%s\"\n%s", 
+                               e->e_dn, mdn.bv_val, "" );
+#endif /* !NEW_LOGGING */
+               break;
+               
+       case REWRITE_REGEXEC_UNWILLING:
+               send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+               
+       case REWRITE_REGEXEC_ERR:
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+       }
+
+       /* Count number of attributes in entry */
+       for ( i = 1, a = e->e_attrs; a; i++, a = a->a_next );
+       
+       /* Create array of LDAPMods for ldap_add() */
+       attrs = ch_malloc( sizeof( LDAPMod * )*i );
+
+       for ( i = 0, a = e->e_attrs; a; a = a->a_next ) {
+               int j;
+               /*
+                * lastmod should always be <off>, so that
+                * creation/modification operational attrs
+                * of the target directory are used, if available
+                */
+#if 0
+               if ( !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_creatorsName->ad_cname.bv_val )
+                       || !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_createTimestamp->ad_cname.bv_val )
+                       || !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_modifiersName->ad_cname.bv_val )
+                       || !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_modifyTimestamp->ad_cname.bv_val )
+               ) {
+                       continue;
+               }
+#endif
+               
+               ldap_back_map( &li->targets[ candidate ]->at_map,
+                               &a->a_desc->ad_cname, &mapped, 0);
+               if ( mapped.bv_val == NULL ) {
+                       continue;
+               }
+
+               attrs[ i ] = ch_malloc( sizeof( LDAPMod ) );
+               if ( attrs[ i ] == NULL ) {
+                       continue;
+               }
+               attrs[ i ]->mod_op = LDAP_MOD_BVALUES;
+               attrs[ i ]->mod_type = mapped.bv_val;
+
+               /*
+                * FIXME: dn-valued attrs should be rewritten
+                * to allow their use in ACLs at the back-ldap
+                * level.
+                */
+               if ( strcmp( a->a_desc->ad_type->sat_syntax->ssyn_oid,
+                                       SLAPD_DN_SYNTAX ) == 0 ) {
+                       ldap_dnattr_rewrite( li->targets[ candidate ]->rwinfo,
+                                       a->a_vals, conn );
+               }
+
+               for (j=0; a->a_vals[ j ].bv_val; j++);
+               attrs[ i ]->mod_vals.modv_bvals = ch_malloc((j+1)*sizeof(struct berval *));
+               for (j=0; a->a_vals[ j ].bv_val; j++)
+                       attrs[ i ]->mod_vals.modv_bvals[ j ] = &a->a_vals[ j ];
+               attrs[ i ]->mod_vals.modv_bvals[ j ] = NULL;
+               i++;
+       }
+       attrs[ i ] = NULL;
+
+       ldap_add_s( lc->conns[ candidate ]->ld, mdn.bv_val, attrs );
+       for ( --i; i >= 0; --i ) {
+               free( attrs[ i ]->mod_vals.modv_bvals );
+               free( attrs[ i ] );
+       }
+       free( attrs );
+       if ( mdn.bv_val != e->e_dn ) {
+               free( mdn.bv_val );
+       }
+       return meta_back_op_result( lc, op );
+}
+
index 808bb689099217f02146fa397ce8166bf3095ee8..9dc738a87327d977d4bee30a420a2dd9b20d4df0 100644 (file)
@@ -102,8 +102,8 @@ meta_back_bind(
        int realmethod = method;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
-                       "meta_back_bind: dn: %s.\n", dn->bv_val ));
+       LDAP_LOG( BACK_META, ENTRY,
+                       "meta_back_bind: dn: %s.\n", dn->bv_val, 0, 0 );
 #else /* !NEW_LOGGING */
        Debug( LDAP_DEBUG_ARGS, "meta_back_bind: dn: %s.\n%s%s", dn->bv_val, "", "" );
 #endif /* !NEW_LOGGING */
@@ -117,9 +117,8 @@ meta_back_bind(
        lc = meta_back_getconn( li, conn, op, op_type, ndn, NULL );
        if ( !lc ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_NOTICE,
-                               "meta_back_bind: no target for dn %s.\n",
-                               dn->bv_val ));
+               LDAP_LOG( BACK_META, NOTICE,
+                               "meta_back_bind: no target for dn %s.\n", dn->bv_val, 0, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_ANY,
                                "meta_back_bind: no target for dn %s.\n%s%s",
@@ -153,10 +152,10 @@ meta_back_bind(
                         * ONE CANDIDATE ONLY!
                         */
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_WARNING,
+                       LDAP_LOG( BACK_META, WARNING,
                                        "==>meta_back_bind: more than one"
                                        " candidate is attempting to bind"
-                                       " ...\n" ));
+                                       " ...\n" , 0, 0, 0 );
 #else /* !NEW_LOGGING */
                        Debug( LDAP_DEBUG_ANY,
                                        "==>meta_back_bind: more than one"
@@ -248,8 +247,8 @@ meta_back_do_single_bind(
                        mdn = *dn;
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "[rw] bindDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn.bv_val ));
+               LDAP_LOG( BACK_META, DETAIL1,
+                               "[rw] bindDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn.bv_val, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_ARGS,
                                "rw> bindDn: \"%s\" -> \"%s\"\n%s",
@@ -334,12 +333,12 @@ meta_back_dobind( struct metaconn *lc, Operation *op )
                if ( rc != LDAP_SUCCESS ) {
                        
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_WARNING,
+                       LDAP_LOG( BACK_META, WARNING,
                                        "meta_back_dobind: (anonymous)"
                                        " bind as \"%s\" failed"
                                        " with error \"%s\"\n",
                                        lsc[ 0 ]->bound_dn.bv_val,
-                                       ldap_err2string( rc ) ));
+                                       ldap_err2string( rc ), 0 );
 #else /* !NEW_LOGGING */
                        Debug( LDAP_DEBUG_ANY,
                                        "==>meta_back_dobind: (anonymous)"
@@ -424,12 +423,12 @@ meta_back_op_result( struct metaconn *lc, Operation *op )
                        err = ldap_back_map_result( err );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_RESULTS,
+                       LDAP_LOG( BACK_META, RESULTS,
                                        "meta_back_op_result: target"
                                        " <%d> sending msg \"%s\""
                                        " (matched \"%s\")\n",
                                        i, ( msg ? msg : "" ),
-                                       ( match ? match : "" ) ));
+                                       ( match ? match : "" ) );
 #else /* !NEW_LOGGING */
                        Debug(LDAP_DEBUG_ANY,
                                        "==> meta_back_op_result: target"
diff --git a/servers/slapd/back-meta/compare.c b/servers/slapd/back-meta/compare.c
new file mode 100644 (file)
index 0000000..40cc651
--- /dev/null
@@ -0,0 +1,358 @@
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ *
+ * Copyright 2001, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ *
+ * This work has been developed to fulfill the requirements
+ * of SysNet s.n.c. <http:www.sys-net.it> and it has been donated
+ * to the OpenLDAP Foundation in the hope that it may be useful
+ * to the Open Source community, but WITHOUT ANY WARRANTY.
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author and SysNet s.n.c. are not responsible for the consequences
+ *    of use of this software, no matter how awful, even if they arise from 
+ *    flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ *    SysNet s.n.c. cannot be responsible for the consequences of the
+ *    alterations.
+ * 
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ * This software is based on the backend back-ldap, implemented
+ * by Howard Chu <hyc@highlandsun.com>, and modified by Mark Valence
+ * <kurash@sassafras.com>, Pierangelo Masarati <ando@sys-net.it> and other
+ * contributors. The contribution of the original software to the present
+ * implementation is acknowledged in this copyright statement.
+ *
+ * A special acknowledgement goes to Howard for the overall architecture
+ * (and for borrowing large pieces of code), and to Mark, who implemented
+ * from scratch the attribute/objectclass mapping.
+ *
+ * The original copyright statement follows.
+ *
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the
+ *    documentation.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "../back-ldap/back-ldap.h"
+#include "back-meta.h"
+
+int
+meta_back_compare(
+               Backend                 *be,
+               Connection              *conn,
+               Operation               *op,
+               struct berval           *dn,
+               struct berval           *ndn,
+               AttributeAssertion      *ava
+)
+{
+       struct metainfo *li = ( struct metainfo * )be->be_private;
+       struct metaconn *lc;
+       struct metasingleconn **lsc;
+       char *match = NULL, *err = NULL, *mmatch = NULL;
+       int candidates = 0, last = 0, i, count, rc;
+               int cres = LDAP_SUCCESS, rres = LDAP_SUCCESS;
+       int *msgid;
+
+       lc = meta_back_getconn( li, conn, op, META_OP_ALLOW_MULTIPLE,
+                       ndn, NULL );
+       if ( !lc || !meta_back_dobind( lc, op ) ) {
+               return -1;
+       }
+
+       msgid = ch_calloc( sizeof( int ), li->ntargets );
+       if ( msgid == NULL ) {
+               return -1;
+       }
+
+       /*
+        * start an asynchronous compare for each candidate target
+        */
+       for ( i = 0, lsc = lc->conns; lsc[ 0 ] != NULL; ++i, ++lsc ) {
+               char *mdn = NULL;
+               struct berval mapped_attr = ava->aa_desc->ad_cname;
+               struct berval mapped_value = ava->aa_value;
+
+               if ( lsc[ 0 ]->candidate != META_CANDIDATE ) {
+                       continue;
+               }
+
+               /*
+                * Rewrite the compare dn, if needed
+                */
+               switch ( rewrite_session( li->targets[ i ]->rwinfo,
+                                       "compareDn", 
+                                       dn->bv_val, conn, &mdn ) ) {
+               case REWRITE_REGEXEC_OK:
+                       if ( mdn == NULL ) {
+                               mdn = ( char * )dn->bv_val;
+                       }
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_META, DETAIL1,
+                               "[rw] compareDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn, 0 );
+#else /* !NEW_LOGGING */
+                       Debug( LDAP_DEBUG_ARGS,
+                                       "rw> compareDn: \"%s\" -> \"%s\"\n%s",
+                                       dn->bv_val, mdn, "" );
+#endif /* !NEW_LOGGING */
+                       break;
+               
+               case REWRITE_REGEXEC_UNWILLING:
+                       send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                                       NULL, "Unwilling to perform",
+                                       NULL, NULL );
+                       return -1;
+                       
+               case REWRITE_REGEXEC_ERR:
+                       send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                                       NULL, "Operations error",
+                                       NULL, NULL );
+                       return -1;
+               }
+
+               /*
+                * if attr is objectClass, try to remap the value
+                */
+               if ( ava->aa_desc->ad_type->sat_oid 
+                       == slap_schema.si_ad_objectClass->ad_type->sat_oid ) {
+                       ldap_back_map( &li->targets[ i ]->oc_map,
+                                       &ava->aa_value, &mapped_value, 0 );
+
+                       if ( mapped_value.bv_val == NULL ) {
+                               lsc[ 0 ]->candidate = META_NOT_CANDIDATE;
+                               continue;
+                       }
+               /*
+                * else try to remap the attribute
+                */
+               } else {
+                       ldap_back_map( &li->targets[ i ]->at_map,
+                               &ava->aa_desc->ad_cname, &mapped_attr, 0 );
+                       if ( mapped_attr.bv_val == NULL ) {
+                               lsc[ 0 ]->candidate = META_NOT_CANDIDATE;
+                               continue;
+                       }
+               }
+               
+               /*
+                * the compare op is spawned across the targets and the first
+                * that returns determines the result; a constraint on unicity
+                * of the result ought to be enforced
+                */
+               msgid[ i ] = ldap_compare( lc->conns[ i ]->ld, mdn,
+                               mapped_attr.bv_val, mapped_value.bv_val );
+               if ( msgid[ i ] == -1 ) {
+                       lsc[ 0 ]->candidate = META_NOT_CANDIDATE;
+                       continue;
+               }
+
+               if ( mdn != dn->bv_val ) {
+                       free( mdn );
+               }
+               if ( mapped_attr.bv_val != ava->aa_desc->ad_cname.bv_val ) {
+                       free( mapped_attr.bv_val );
+               }
+               if ( mapped_value.bv_val != ava->aa_value.bv_val ) {
+                       free( mapped_value.bv_val );
+               }
+
+               ++candidates;
+       }
+
+       /*
+        * wait for replies
+        */
+       for ( rc = 0, count = 0; candidates > 0; ) {
+
+               /*
+                * FIXME: should we check for abandon?
+                */
+               for ( i = 0, lsc = lc->conns; lsc[ 0 ] != NULL; lsc++, i++ ) {
+                       int lrc;
+                       LDAPMessage *res = NULL;
+
+                       if ( lsc[ 0 ]->candidate != META_CANDIDATE ) {
+                               continue;
+                       }
+
+                       lrc = ldap_result( lsc[ 0 ]->ld, msgid[ i ],
+                                       0, NULL, &res );
+
+                       if ( lrc == 0 ) {
+                               /*
+                                * FIXME: should we yield?
+                                */
+                               if ( res ) {
+                                       ldap_msgfree( res );
+                               }
+                               continue;
+                       } else if ( lrc == LDAP_RES_COMPARE ) {
+                               if ( count > 0 ) {
+                                       rres = LDAP_OPERATIONS_ERROR;
+                                       rc = -1;
+                                       goto finish;
+                               }
+                               
+                               cres = ldap_result2error( lsc[ 0 ]->ld,
+                                               res, 1 );
+                               switch ( cres ) {
+                               case LDAP_COMPARE_TRUE:
+                               case LDAP_COMPARE_FALSE:
+
+                                       /*
+                                        * true or flase, got it;
+                                        * sending to cache ...
+                                        */
+                                       if ( li->cache.ttl != META_DNCACHE_DISABLED ) {
+                                               ( void )meta_dncache_update_entry( &li->cache, ndn, i );
+                                       }
+
+                                       count++;
+                                       rc = 0;
+                                       break;
+
+                               default:
+                                       rres = ldap_back_map_result( cres );
+
+                                       if ( err != NULL ) {
+                                               free( err );
+                                       }
+                                       ldap_get_option( lsc[ 0 ]->ld,
+                                               LDAP_OPT_ERROR_STRING, &err );
+
+                                       if ( match != NULL ) {
+                                               free( match );
+                                       }
+                                       ldap_get_option( lsc[ 0 ]->ld,
+                                               LDAP_OPT_MATCHED_DN, &match );
+                                       
+                                       last = i;
+                                       break;
+                               }
+                               lsc[ 0 ]->candidate = META_NOT_CANDIDATE;
+                               --candidates;
+                       } else {
+                               lsc[ 0 ]->candidate = META_NOT_CANDIDATE;
+                               --candidates;
+                               if ( res ) {
+                                       ldap_msgfree( res );
+                               }
+                               break;
+                       }
+               }
+       }
+
+finish:;
+
+       /*
+        * Rewrite the matched portion of the search base, if required
+        * 
+        * FIXME: only the last one gets caught!
+        */
+       if ( count == 1 ) {
+               if ( match != NULL ) {
+                       free( match );
+                       match = NULL;
+               }
+               
+               /*
+                * the result of the compare is assigned to the res code
+                * that will be returned
+                */
+               rres = cres;
+               
+       } else if ( match != NULL ) {
+               
+               /*
+                * At least one compare failed with matched portion,
+                * and none was successful
+                */
+               switch ( rewrite_session( li->targets[ last ]->rwinfo,
+                                       "matchedDn", match, conn, &mmatch ) ) {
+               case REWRITE_REGEXEC_OK:
+                       if ( mmatch == NULL ) {
+                               mmatch = ( char * )match;
+                       }
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_META, DETAIL1,
+                               "[rw] matchedDn: \"%s\" -> \"%s\"\n", match, mmatch, 0 );
+#else /* !NEW_LOGGING */
+                       Debug( LDAP_DEBUG_ARGS, "rw> matchedDn:"
+                                       " \"%s\" -> \"%s\"\n%s",
+                                       match, mmatch, "" );
+#endif /* !NEW_LOGGING */
+                       break;
+                       
+               
+               case REWRITE_REGEXEC_UNWILLING:
+                       send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                                       NULL, "Unwilling to perform",
+                                       NULL, NULL );
+                       rc = -1;
+                       goto cleanup;
+                       
+               case REWRITE_REGEXEC_ERR:
+                       send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                                       NULL, "Operations error",
+                                       NULL, NULL );
+                       rc = -1;
+                       goto cleanup;
+               }
+       }
+
+       send_ldap_result( conn, op, rres, mmatch, err, NULL, NULL );
+
+cleanup:;
+       if ( match != NULL ) {
+               if ( mmatch != match ) {
+                       free( mmatch );
+               }
+               free( match );
+       }
+
+       if ( msgid ) {
+               free( msgid );
+       }
+       
+       return rc;
+}
+
index 8f17f60590917869eb9784313da395c6e2916e26..739af0e44b5ab6c1ebf767d319027dfdac17327d 100644 (file)
@@ -289,9 +289,9 @@ init_one_conn(
                                ber_dupbv( &lsc->bound_dn, &conn->c_dn );
                        }
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                       "[rw] bindDn: \"%s\" -> \"%s\"\n",
-                                       conn->c_dn.bv_val, lsc->bound_dn.bv_val ));
+                       LDAP_LOG( BACK_META, DETAIL1,
+                               "[rw] bindDn: \"%s\" -> \"%s\"\n",
+                               conn->c_dn.bv_val, lsc->bound_dn.bv_val, 0 );
 #else /* !NEW_LOGGING */
                        Debug( LDAP_DEBUG_ARGS,
                                        "rw> bindDn: \"%s\" -> \"%s\"\n",
@@ -402,10 +402,9 @@ meta_back_getconn(
                }
                                
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                               "meta_back_getconn: got target %d"
-                               " for ndn=\"%s\" from cache\n", 
-                               i, ndn->bv_val ));
+               LDAP_LOG( BACK_META, INFO,
+                       "meta_back_getconn: got target %d for ndn=\"%s\" from cache\n", 
+                       i, ndn->bv_val, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_CACHE,
        "==>meta_back_getconn: got target %d for ndn=\"%s\" from cache\n%s",
@@ -513,9 +512,8 @@ meta_back_getconn(
                ldap_pvt_thread_mutex_unlock( &li->conn_mutex );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                               "meta_back_getconn: conn %ld inserted\n",
-                               lc->conn->c_connid ));
+               LDAP_LOG( BACK_META, INFO,
+                       "meta_back_getconn: conn %ld inserted\n", lc->conn->c_connid, 0, 0);
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_TRACE,
                        "=>meta_back_getconn: conn %ld inserted\n%s%s",
@@ -533,9 +531,8 @@ meta_back_getconn(
                }
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                               "meta_back_getconn: conn %ld fetched\n",
-                               lc->conn->c_connid ));
+               LDAP_LOG( BACK_META, INFO,
+                       "meta_back_getconn: conn %ld fetched\n", lc->conn->c_connid, 0, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_TRACE,
                        "=>meta_back_getconn: conn %ld fetched\n%s%s",
diff --git a/servers/slapd/back-meta/delete.c b/servers/slapd/back-meta/delete.c
new file mode 100644 (file)
index 0000000..21613c5
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ *
+ * Copyright 2001, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ *
+ * This work has been developed to fulfill the requirements
+ * of SysNet s.n.c. <http:www.sys-net.it> and it has been donated
+ * to the OpenLDAP Foundation in the hope that it may be useful
+ * to the Open Source community, but WITHOUT ANY WARRANTY.
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author and SysNet s.n.c. are not responsible for the consequences
+ *    of use of this software, no matter how awful, even if they arise from 
+ *    flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ *    SysNet s.n.c. cannot be responsible for the consequences of the
+ *    alterations.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ * This software is based on the backend back-ldap, implemented
+ * by Howard Chu <hyc@highlandsun.com>, and modified by Mark Valence
+ * <kurash@sassafras.com>, Pierangelo Masarati <ando@sys-net.it> and other
+ * contributors. The contribution of the original software to the present
+ * implementation is acknowledged in this copyright statement.
+ *
+ * A special acknowledgement goes to Howard for the overall architecture
+ * (and for borrowing large pieces of code), and to Mark, who implemented
+ * from scratch the attribute/objectclass mapping.
+ *
+ * The original copyright statement follows.
+ *
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the
+ *    documentation.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "../back-ldap/back-ldap.h"
+#include "back-meta.h"
+
+int
+meta_back_delete(
+               Backend         *be,
+               Connection      *conn,
+               Operation       *op,
+               struct berval   *dn,
+               struct berval   *ndn
+)
+{
+       struct metainfo *li = ( struct metainfo * )be->be_private;
+       struct metaconn *lc;
+       int candidate = -1;
+
+       char *mdn = NULL;
+
+       lc = meta_back_getconn( li, conn, op, META_OP_REQUIRE_SINGLE,
+                       ndn, &candidate );
+       if ( !lc || !meta_back_dobind( lc, op ) || !meta_back_is_valid( lc, candidate ) ) {
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+       }
+
+       /*
+        * Rewrite the compare dn, if needed
+        */
+       switch ( rewrite_session( li->targets[ candidate ]->rwinfo,
+                               "deleteDn", dn->bv_val, conn, &mdn ) ) {
+       case REWRITE_REGEXEC_OK:
+               if ( mdn == NULL ) {
+                       mdn = ( char * )dn->bv_val;
+               }
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_META, DETAIL1,
+                       "[rw] deleteDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn, 0 );
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS, "rw> deleteDn: \"%s\" -> \"%s\"\n%s",
+                               dn->bv_val, mdn, "" );
+#endif /* !NEW_LOGGING */
+               break;
+               
+       case REWRITE_REGEXEC_UNWILLING:
+               send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+
+       case REWRITE_REGEXEC_ERR:
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+       }
+       
+       ldap_delete_s( lc->conns[ candidate ]->ld, mdn );
+
+       if ( mdn != dn->bv_val ) {
+               free( mdn );
+       }
+       
+       return meta_back_op_result( lc, op );
+}
+
index 53b5ed5aee298853e73f080fe2f80d98ca875eb2..67886898a3236262b2767914b2d6d7407327fc51 100644 (file)
@@ -75,7 +75,6 @@
 #include "../back-ldap/back-ldap.h"
 #include "back-meta.h"
 
-
 /* return 0 IFF op_dn is a value in group_at (member) attribute
  * of entry with gr_dn AND that entry has an objectClass
  * value of group_oc (groupOfNames)
@@ -171,10 +170,9 @@ meta_back_group(
                        mop_ndn = *op_ndn;
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "[rw] bindDn (op ndn in group):"
-                               " \"%s\" -> \"%s\"\n",
-                                op_ndn->bv_val, mop_ndn.bv_val));
+               LDAP_LOG( BACK_META, DETAIL1,
+                       "[rw] bindDn (op ndn in group): \"%s\" -> \"%s\"\n",
+                       op_ndn->bv_val, mop_ndn.bv_val, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_ARGS,
                                "rw> bindDn (op ndn in group):"
@@ -203,10 +201,9 @@ meta_back_group(
                        mgr_ndn = *gr_ndn;
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "[rw] searchBase (gr ndn in group):"
-                               " \"%s\" -> \"%s\"\n",
-                               gr_ndn->bv_val, mgr_ndn.bv_val ));
+               LDAP_LOG( BACK_META, DETAIL1,
+                       "[rw] searchBase (gr ndn in group): \"%s\" -> \"%s\"\n",
+                       gr_ndn->bv_val, mgr_ndn.bv_val, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_ARGS,
                                "rw> searchBase (gr ndn in group):"
@@ -253,12 +250,12 @@ meta_back_group(
                goto cleanup;
        }
 
-       ptr = slap_strcopy( filter, "(&(objectclass=" );
-       ptr = slap_strcopy( ptr , group_oc_name.bv_val );
-       ptr = slap_strcopy( ptr , ")(" );
-       ptr = slap_strcopy( ptr , group_at_name.bv_val );
-       ptr = slap_strcopy( ptr , "=" );
-       ptr = slap_strcopy( ptr , mop_ndn.bv_val );
+       ptr = lutil_strcopy( filter, "(&(objectclass=" );
+       ptr = lutil_strcopy( ptr , group_oc_name.bv_val );
+       ptr = lutil_strcopy( ptr , ")(" );
+       ptr = lutil_strcopy( ptr , group_at_name.bv_val );
+       ptr = lutil_strcopy( ptr , "=" );
+       ptr = lutil_strcopy( ptr , mop_ndn.bv_val );
        strcpy( ptr , "))" );
 
        gattr[ 0 ] = "objectclass";
diff --git a/servers/slapd/back-meta/modify.c b/servers/slapd/back-meta/modify.c
new file mode 100644 (file)
index 0000000..9a2813e
--- /dev/null
@@ -0,0 +1,214 @@
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ *
+ * Copyright 2001, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ *
+ * This work has been developed to fulfill the requirements
+ * of SysNet s.n.c. <http:www.sys-net.it> and it has been donated
+ * to the OpenLDAP Foundation in the hope that it may be useful
+ * to the Open Source community, but WITHOUT ANY WARRANTY.
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author and SysNet s.n.c. are not responsible for the consequences
+ *    of use of this software, no matter how awful, even if they arise from 
+ *    flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ *    SysNet s.n.c. cannot be responsible for the consequences of the
+ *    alterations.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ * This software is based on the backend back-ldap, implemented
+ * by Howard Chu <hyc@highlandsun.com>, and modified by Mark Valence
+ * <kurash@sassafras.com>, Pierangelo Masarati <ando@sys-net.it> and other
+ * contributors. The contribution of the original software to the present
+ * implementation is acknowledged in this copyright statement.
+ *
+ * A special acknowledgement goes to Howard for the overall architecture
+ * (and for borrowing large pieces of code), and to Mark, who implemented
+ * from scratch the attribute/objectclass mapping.
+ *
+ * The original copyright statement follows.
+ *
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the
+ *    documentation.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
+#include "slap.h"
+#include "../back-ldap/back-ldap.h"
+#include "back-meta.h"
+
+int
+meta_back_modify(
+               Backend *be,
+               Connection      *conn,
+               Operation       *op,
+               struct berval   *dn,
+               struct berval   *ndn,
+               Modifications   *modlist
+)
+{
+       struct metainfo *li = ( struct metainfo * )be->be_private;
+       struct metaconn *lc;
+       LDAPMod **modv;
+       LDAPMod *mods;
+       Modifications *ml;
+       int candidate = -1, i;
+       char *mdn;
+       struct berval mapped;
+
+       lc = meta_back_getconn( li, conn, op, META_OP_REQUIRE_SINGLE,
+                       ndn, &candidate );
+       if ( !lc || !meta_back_dobind( lc, op ) || !meta_back_is_valid( lc, candidate ) ) {
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+       }
+
+       /*
+        * Rewrite the modify dn, if needed
+        */
+       switch ( rewrite_session( li->targets[ candidate ]->rwinfo,
+                               "modifyDn", dn->bv_val, conn, &mdn ) ) {
+       case REWRITE_REGEXEC_OK:
+               if ( mdn == NULL ) {
+                       mdn = ( char * )dn->bv_val;
+               }
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_META, DETAIL1,
+                       "[rw] modifyDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn, 0 );
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS, "rw> modifyDn: \"%s\" -> \"%s\"\n%s",
+                               dn->bv_val, mdn, "" );
+#endif /* !NEW_LOGGING */
+               break;
+               
+       case REWRITE_REGEXEC_UNWILLING:
+               send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+
+       case REWRITE_REGEXEC_ERR:
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+       }
+
+       for ( i = 0, ml = modlist; ml; i++ ,ml = ml->sml_next )
+               ;
+
+       mods = ch_malloc( sizeof( LDAPMod )*i );
+       if ( mods == NULL ) {
+               if ( mdn != dn->bv_val ) {
+                       free( mdn );
+               }
+               return -1;
+       }
+       modv = ( LDAPMod ** )ch_malloc( ( i + 1 )*sizeof( LDAPMod * ) );
+       if ( modv == NULL ) {
+               free( mods );
+               if ( mdn != dn->bv_val ) {
+                       free( mdn );
+               }
+               return -1;
+       }
+
+       for ( i = 0, ml = modlist; ml; ml = ml->sml_next ) {
+               int j;
+               /*
+                * lastmod should always be <off>
+                */
+#if 0
+               if ( !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_creatorsName->ad_cname.bv_val )
+                       || !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_createTimestamp->ad_cname.bv_val )
+                       || !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_modifiersName->ad_cname.bv_val )
+                       || !strcasecmp( a->a_desc->ad_cname.bv_val,
+                       slap_schema.si_ad_modifyTimestamp->ad_cname.bv_val ) ) {
+                       continue;
+               }
+#endif
+
+               ldap_back_map( &li->targets[ candidate ]->at_map,
+                               &ml->sml_desc->ad_cname, &mapped, 0 );
+               if ( mapped.bv_val == NULL ) {
+                       continue;
+               }
+
+               modv[ i ] = &mods[ i ];
+               mods[ i ].mod_op = ml->sml_op | LDAP_MOD_BVALUES;
+               mods[ i ].mod_type = mapped.bv_val;
+
+               /*
+                * FIXME: dn-valued attrs should be rewritten
+                * to allow their use in ACLs at the back-ldap
+                * level.
+                */
+               if ( strcmp( ml->sml_desc->ad_type->sat_syntax->ssyn_oid,
+                                       SLAPD_DN_SYNTAX ) == 0 ) {
+                       ldap_dnattr_rewrite(
+                               li->targets[ candidate ]->rwinfo,
+                               ml->sml_bvalues, conn );
+               }
+
+               for (j = 0; ml->sml_bvalues[ j ].bv_val; j++);
+               mods[ i ].mod_bvalues = (struct berval **)ch_malloc((j+1) *
+                       sizeof(struct berval *));
+               for (j = 0; ml->sml_bvalues[ j ].bv_val; j++)
+                       mods[ i ].mod_bvalues[ j ] = &ml->sml_bvalues[j];
+               mods[ i ].mod_bvalues[ j ] = NULL;
+               i++;
+       }
+       modv[ i ] = 0;
+
+       ldap_modify_s( lc->conns[ candidate ]->ld, mdn, modv );
+
+       if ( mdn != dn->bv_val ) {
+               free( mdn );
+       }
+       for ( i=0; modv[ i ]; i++)
+               free( modv[ i ]->mod_bvalues );
+       free( mods );
+       free( modv );
+       return meta_back_op_result( lc, op );
+}
+
diff --git a/servers/slapd/back-meta/modrdn.c b/servers/slapd/back-meta/modrdn.c
new file mode 100644 (file)
index 0000000..1ce1c53
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ *
+ * Copyright 2001, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ *
+ * This work has been developed to fulfill the requirements
+ * of SysNet s.n.c. <http:www.sys-net.it> and it has been donated
+ * to the OpenLDAP Foundation in the hope that it may be useful
+ * to the Open Source community, but WITHOUT ANY WARRANTY.
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author and SysNet s.n.c. are not responsible for the consequences
+ *    of use of this software, no matter how awful, even if they arise from 
+ *    flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ *    SysNet s.n.c. cannot be responsible for the consequences of the
+ *    alterations.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ * This software is based on the backend back-ldap, implemented
+ * by Howard Chu <hyc@highlandsun.com>, and modified by Mark Valence
+ * <kurash@sassafras.com>, Pierangelo Masarati <ando@sys-net.it> and other
+ * contributors. The contribution of the original software to the present
+ * implementation is acknowledged in this copyright statement.
+ *
+ * A special acknowledgement goes to Howard for the overall architecture
+ * (and for borrowing large pieces of code), and to Mark, who implemented
+ * from scratch the attribute/objectclass mapping.
+ *
+ * The original copyright statement follows.
+ *
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the
+ *    documentation.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/socket.h>
+#include <ac/string.h>
+
+#include "slap.h"
+#include "../back-ldap/back-ldap.h"
+#include "back-meta.h"
+
+int
+meta_back_modrdn(
+               Backend         *be,
+               Connection      *conn,
+               Operation       *op,
+               struct berval   *dn,
+               struct berval   *ndn,
+               struct berval   *newrdn,
+               struct berval   *nnewrdn,
+               int             deleteoldrdn,
+               struct berval   *newSuperior,
+               struct berval   *nnewSuperior
+)
+{
+       struct metainfo *li = ( struct metainfo * )be->be_private;
+       struct metaconn *lc;
+       int candidate = -1;
+
+       char *mdn = NULL, *mnewSuperior = NULL;
+
+       lc = meta_back_getconn( li, conn, op, META_OP_REQUIRE_SINGLE,
+                       ndn, &candidate );
+       if ( !lc || !meta_back_dobind( lc, op ) || !meta_back_is_valid( lc, candidate ) ) {
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+       }
+
+       if ( newSuperior ) {
+               int nsCandidate, version = LDAP_VERSION3;
+
+               nsCandidate = meta_back_select_unique_candidate( li,
+                               newSuperior );
+
+               if ( nsCandidate != candidate ) {
+                       /*
+                        * FIXME: one possibility is to delete the entry
+                        * from one target and add it to the other;
+                        * unfortunately we'd need write access to both,
+                        * which is nearly impossible; for administration
+                        * needs, the rootdn of the metadirectory could
+                        * be mapped to an administrative account on each
+                        * target (the binddn?); we'll see.
+                        */
+                       /*
+                        * FIXME: is this the correct return code?
+                        */
+                       send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                                       NULL, NULL, NULL, NULL );
+                       return -1;
+               }
+
+               ldap_set_option( lc->conns[ nsCandidate ]->ld,
+                               LDAP_OPT_PROTOCOL_VERSION, &version );
+               
+               /*
+                * Rewrite the new superior, if defined and required
+                */
+               switch ( rewrite_session( li->targets[ nsCandidate ]->rwinfo,
+                                       "newSuperiorDn",
+                                       newSuperior->bv_val, 
+                                       conn, 
+                                       &mnewSuperior ) ) {
+               case REWRITE_REGEXEC_OK:
+                       if ( mnewSuperior == NULL ) {
+                               mnewSuperior = ( char * )newSuperior;
+                       }
+#ifdef NEW_LOGGING
+                       LDAP_LOG( BACK_META, DETAIL1,
+                               "[rw] newSuperiorDn: \"%s\" -> \"%s\"\n",
+                               newSuperior, mnewSuperior, 0 );
+#else /* !NEW_LOGGING */
+                       Debug( LDAP_DEBUG_ARGS, "rw> newSuperiorDn:"
+                                       " \"%s\" -> \"%s\"\n%s",
+                                       newSuperior->bv_val, mnewSuperior, "" );
+#endif /* !NEW_LOGGING */
+                       break;
+
+               case REWRITE_REGEXEC_UNWILLING:
+                       send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                                       NULL, NULL, NULL, NULL );
+                       return -1;
+
+               case REWRITE_REGEXEC_ERR:
+                       send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                                       NULL, NULL, NULL, NULL );
+                       return -1;
+               }
+       }
+
+       /*
+        * Rewrite the modrdn dn, if required
+        */
+       switch ( rewrite_session( li->targets[ candidate ]->rwinfo,
+                               "modrDn", dn->bv_val, conn, &mdn ) ) {
+       case REWRITE_REGEXEC_OK:
+               if ( mdn == NULL ) {
+                       mdn = ( char * )dn->bv_val;
+               }
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_META, DETAIL1,
+                       "[rw] modrDn: \"%s\" -> \"%s\"\n", dn->bv_val, mdn, 0 );
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_ARGS, "rw> modrDn: \"%s\" -> \"%s\"\n%s",
+                               dn->bv_val, mdn, "" );
+#endif /* !NEW_LOGGING */
+               break;
+               
+       case REWRITE_REGEXEC_UNWILLING:
+               send_ldap_result( conn, op, LDAP_UNWILLING_TO_PERFORM,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+
+       case REWRITE_REGEXEC_ERR:
+               send_ldap_result( conn, op, LDAP_OPERATIONS_ERROR,
+                               NULL, NULL, NULL, NULL );
+               return -1;
+       }
+
+       ldap_rename2_s( lc->conns[ candidate ]->ld, mdn, newrdn->bv_val,
+                       mnewSuperior, deleteoldrdn );
+
+       if ( mdn != dn->bv_val ) {
+               free( mdn );
+       }
+       if ( mnewSuperior != NULL && mnewSuperior != newSuperior->bv_val ) {
+               free( mnewSuperior );
+       }
+       
+       return meta_back_op_result( lc, op );
+}
+
index 7d00e2a2ff4cb5579f5145059a8a326b2a72c686..f1b2f698cb4b7c0c94a653cd7dfe8406f095c99f 100644 (file)
@@ -77,6 +77,7 @@
 #include "back-meta.h"
 #include "ldap_pvt.h"
 #undef ldap_debug      /* silence a warning in ldap-int.h */
+#include "ldap_log.h"
 #include "../../../libraries/libldap/ldap-int.h"
 
 static void
@@ -277,9 +278,8 @@ meta_back_search(
                        mbase = realbase;
                }
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                               "[rw] searchBase: \"%s\" -> \"%s\"\n",
-                               base->bv_val, mbase ));
+               LDAP_LOG( BACK_META, DETAIL1,
+                       "[rw] searchBase: \"%s\" -> \"%s\"\n", base->bv_val, mbase, 0 );
 #else /* !NEW_LOGGING */
                Debug( LDAP_DEBUG_ARGS, "rw> searchBase: \"%s\" -> \"%s\"\n%s",
                                base->bv_val, mbase, "" );
@@ -317,9 +317,9 @@ meta_back_search(
                                mfilter = *filterstr;
                        }
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                       "[rw] searchFilter: \"%s\" -> \"%s\"\n",
-                                       filterstr->bv_val, mfilter.bv_val ));
+                       LDAP_LOG( BACK_META, DETAIL1,
+                               "[rw] searchFilter: \"%s\" -> \"%s\"\n",
+                               filterstr->bv_val, mfilter.bv_val, 0 );
 #else /* !NEW_LOGGING */
                        Debug( LDAP_DEBUG_ARGS,
                                "rw> searchFilter: \"%s\" -> \"%s\"\n%s",
@@ -348,7 +348,9 @@ meta_back_search(
                if ( mapped_filter == NULL ) {
                        mapped_filter = ( char * )mfilter.bv_val;
                } else {
-                       free( mfilter.bv_val );
+                       if ( mfilter.bv_val != filterstr->bv_val ) {
+                               free( mfilter.bv_val );
+                       }
                }
                mfilter.bv_val = NULL;
                mfilter.bv_len = 0;
@@ -464,10 +466,9 @@ meta_back_search(
                                                LDAP_OPT_MATCHED_DN, &match );
 
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                                               "meta_back_search [%d]"
-                                               " match=\"%s\" err=\"%s\"\n",
-                                               i, match, err ));
+                               LDAP_LOG( BACK_META, ERR,
+                                       "meta_back_search [%d] match=\"%s\" err=\"%s\"\n",
+                                       i, match, err );
 #else /* !NEW_LOGGING */
                                Debug( LDAP_DEBUG_ANY,
        "=>meta_back_search [%d] match=\"%s\" err=\"%s\"\n",
@@ -521,9 +522,8 @@ meta_back_search(
                                mmatch = ( char * )match;
                        }
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                       "[rw] matchedDn: \"%s\" -> \"%s\"\n",
-                                       match, mmatch ));
+                       LDAP_LOG( BACK_META, DETAIL1,
+                               "[rw] matchedDn: \"%s\" -> \"%s\"\n", match, mmatch, 0 );
 #else /* !NEW_LOGGING */
                        Debug( LDAP_DEBUG_ARGS, "rw> matchedDn:"
                                       " \"%s\" -> \"%s\"\n%s",
@@ -602,10 +602,9 @@ meta_send_entry(
 
                } else {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                       "[rw] searchResult[%d]:"
-                                       " \"%s\" -> \"%s\"\n",
-                                       target, bdn.bv_val, ent.e_name.bv_val ));
+                       LDAP_LOG( BACK_META, DETAIL1,
+                               "[rw] searchResult[%d]: \"%s\" -> \"%s\"\n",
+                               target, bdn.bv_val, ent.e_name.bv_val );
 #else /* !NEW_LOGGING */
                        Debug( LDAP_DEBUG_ARGS, "rw> searchResult[%d]: \"%s\""
                                        " -> \"%s\"\n", target, bdn.bv_val, ent.e_name.bv_val );
@@ -653,9 +652,8 @@ meta_send_entry(
                        if ( slap_bv2undef_ad( &mapped, &attr->a_desc, &text ) 
                                        != LDAP_SUCCESS) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                                               "slap_bv2undef_ad(%s): "
-                                               "%s\n", mapped.bv_val, text ));
+                               LDAP_LOG( BACK_META, DETAIL1,
+                                       "slap_bv2undef_ad(%s): %s\n", mapped.bv_val, text, 0 );
 #else /* !NEW_LOGGING */
                                Debug( LDAP_DEBUG_ANY,
                                                "slap_bv2undef_ad(%s): "
@@ -672,8 +670,10 @@ meta_send_entry(
                        continue;
                }
 
-               if ( ber_scanf( &ber, "[W]", &attr->a_vals ) == LBER_ERROR ) {
+               if ( ber_scanf( &ber, "[W]", &attr->a_vals ) == LBER_ERROR 
+                               || attr->a_vals == NULL ) {
                        attr->a_vals = &dummy;
+
                } else if ( attr->a_desc == slap_schema.si_ad_objectClass
                                || attr->a_desc == slap_schema.si_ad_structuralObjectClass ) {
                        int i, last;
@@ -723,13 +723,10 @@ meta_send_entry(
                                                break;
                                        }
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "backend",
-                                                       LDAP_LEVEL_DETAIL1,
-                                                       "[rw] searchResult on"
-                                                       " attr=%s:"
-                                                       " \"%s\" -> \"%s\"\n",
-                                       attr->a_desc->ad_type->sat_cname.bv_val,
-                                                       bv->bv_val, newval ));
+                                       LDAP_LOG( BACK_META, DETAIL1,
+                                               "[rw] searchResult on attr=%s: \"%s\" -> \"%s\"\n",
+                                               attr->a_desc->ad_type->sat_cname.bv_val,
+                                               bv->bv_val, newval );
 #else /* !NEW_LOGGING */
                                        Debug( LDAP_DEBUG_ARGS,
                                                "rw> searchResult on attr=%s:"
diff --git a/servers/slapd/back-meta/unbind.c b/servers/slapd/back-meta/unbind.c
new file mode 100644 (file)
index 0000000..84b36ad
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ *
+ * Copyright 2001, Pierangelo Masarati, All rights reserved. <ando@sys-net.it>
+ * 
+ * This work has been developed to fulfill the requirements
+ * of SysNet s.n.c. <http:www.sys-net.it> and it has been donated
+ * to the OpenLDAP Foundation in the hope that it may be useful
+ * to the Open Source community, but WITHOUT ANY WARRANTY.
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author and SysNet s.n.c. are not responsible for the consequences
+ *    of use of this software, no matter how awful, even if they arise from 
+ *    flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the documentation.
+ *    SysNet s.n.c. cannot be responsible for the consequences of the
+ *    alterations.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ *
+ * This software is based on the backend back-ldap, implemented
+ * by Howard Chu <hyc@highlandsun.com>, and modified by Mark Valence
+ * <kurash@sassafras.com>, Pierangelo Masarati <ando@sys-net.it> and other
+ * contributors. The contribution of the original software to the present
+ * implementation is acknowledged in this copyright statement.
+ *
+ * A special acknowledgement goes to Howard for the overall architecture
+ * (and for borrowing large pieces of code), and to Mark, who implemented
+ * from scratch the attribute/objectclass mapping.
+ *
+ * The original copyright statement follows.
+ *
+ * Copyright 1999, Howard Chu, All rights reserved. <hyc@highlandsun.com>
+ *
+ * Permission is granted to anyone to use this software for any purpose
+ * on any computer system, and to alter it and redistribute it, subject
+ * to the following restrictions:
+ *
+ * 1. The author is not responsible for the consequences of use of this
+ *    software, no matter how awful, even if they arise from flaws in it.
+ *
+ * 2. The origin of this software must not be misrepresented, either by
+ *    explicit claim or by omission.  Since few users ever read sources,
+ *    credits should appear in the documentation.
+ *
+ * 3. Altered versions must be plainly marked as such, and must not be
+ *    misrepresented as being the original software.  Since few users
+ *    ever read sources, credits should appear in the
+ *    documentation.
+ *
+ * 4. This notice may not be removed or altered.
+ *
+ */
+
+#include "portable.h"
+
+#include <stdio.h>
+
+#include <ac/socket.h>
+#include <ac/string.h>
+
+#include "slap.h"
+#include "../back-ldap/back-ldap.h"
+#include "back-meta.h"
+
+int
+meta_back_conn_destroy(
+               Backend         *be,
+               Connection      *conn
+)
+{
+       struct metainfo *li = ( struct metainfo * )be->be_private;
+       struct metaconn *lc, lc_curr;
+
+#ifdef NEW_LOGGING
+       LDAP_LOG( BACK_META, ENTRY,
+               "meta_back_conn_destroy: fetching conn %ld\n", conn->c_connid, 0, 0 );
+#else /* !NEW_LOGGING */
+       Debug( LDAP_DEBUG_TRACE,
+               "=>meta_back_conn_destroy: fetching conn %ld\n%s%s",
+               conn->c_connid, "", "" );
+#endif /* !NEW_LOGGING */
+       
+       lc_curr.conn = conn;
+       
+       ldap_pvt_thread_mutex_lock( &li->conn_mutex );
+       lc = avl_delete( &li->conntree, ( caddr_t )&lc_curr,
+                       meta_back_conn_cmp );
+       ldap_pvt_thread_mutex_unlock( &li->conn_mutex );
+
+       if ( lc ) {
+               int i;
+               
+#ifdef NEW_LOGGING
+               LDAP_LOG( BACK_META, INFO,
+                       "meta_back_conn_destroy: destroying conn %ld\n",
+                       lc->conn->c_connid, 0, 0 );
+#else /* !NEW_LOGGING */
+               Debug( LDAP_DEBUG_TRACE,
+                       "=>meta_back_conn_destroy: destroying conn %ld\n%s%s",
+                       lc->conn->c_connid, "", "" );
+#endif /* !NEW_LOGGING */
+               
+               /*
+                * Cleanup rewrite session
+                */
+               for ( i = 0; i < li->ntargets; ++i ) {
+                       if ( lc->conns[ i ]->ld == NULL ) {
+                               free( lc->conns[ i ] );
+                               continue;
+                       }
+
+                       rewrite_session_delete( li->targets[ i ]->rwinfo, conn );
+                       meta_clear_one_candidate( lc->conns[ i ], 1 );
+                       free( lc->conns[ i ] );
+               }
+
+               free( lc->conns );
+               free( lc );
+       }
+
+       /* no response to unbind */
+
+       return 0;
+}
+
index a962aabd063fc36a540a56ec07f20cda21495b4c..3389fceddd787c5ef4cc25a028c3bec3df7a3f3f 100644 (file)
@@ -124,8 +124,8 @@ int backend_init(void)
        if((nBackendInfo != 0) || (backendInfo != NULL)) {
                /* already initialized */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-                          "backend_init:  backend already initialized\n" ));
+               LDAP_LOG( BACKEND, ERR, 
+                       "backend_init:  backend already initialized\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "backend_init: already initialized.\n", 0, 0, 0 );
@@ -141,9 +141,9 @@ int backend_init(void)
 
                if(rc != 0) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
+                       LDAP_LOG( BACKEND, INFO, 
                                "backend_init:  initialized for type \"%s\"\n",
-                               binfo[nBackendInfo].bi_type ));
+                               binfo[nBackendInfo].bi_type, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "backend_init: initialized for type \"%s\"\n",
@@ -173,8 +173,7 @@ int backend_init(void)
 #else
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
-               "backend_init: failed\n" ));
+       LDAP_LOG( BACKEND, ERR, "backend_init: failed\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ANY,
                "backend_init: failed\n",
@@ -191,9 +190,9 @@ int backend_add(BackendInfo *aBackendInfo)
 
    if ((rc = aBackendInfo->bi_init(aBackendInfo)) != 0) {
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ERR,
+               LDAP_LOG( BACKEND, ERR, 
                   "backend_add:  initialization for type \"%s\" failed\n",
-                  aBackendInfo->bi_type ));
+                  aBackendInfo->bi_type, 0, 0 );
 #else
       Debug( LDAP_DEBUG_ANY,
             "backend_add: initialization for type \"%s\" failed\n",
@@ -232,9 +231,8 @@ int backend_startup(Backend *be)
        if( ! ( nBackendDB > 0 ) ) {
                /* no databases */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_INFO,
-                          "backend_startup: %d databases to startup. \n",
-                          nBackendDB ));
+               LDAP_LOG( BACKEND, INFO, 
+                       "backend_startup: %d databases to startup. \n", nBackendDB, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "backend_startup: %d databases to startup.\n",
@@ -246,9 +244,8 @@ int backend_startup(Backend *be)
        if(be != NULL) {
                /* startup a specific backend database */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "backend", LDAP_LEVEL_DETAIL1,
-                          "backend_startup:  starting \"%s\"\n",
-                          be->be_suffix[0].bv_val ));
+               LDAP_LOG( BACKEND, DETAIL1, "backend_startup:  starting \"%s\"\n",
+                          be->be_suffix[0].bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "backend_startup: starting \"%s\"\n",
@@ -261,8 +258,7 @@ int backend_startup(Backend *be)
 
                if(rc != 0) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_CRIT,
-                                  "backend_startup: bi_open failed!\n" ));
+                       LDAP_LOG( BACKEND, CRIT, "backend_startup: bi_open failed!\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "backend_startup: bi_open failed!\n",
@@ -278,8 +274,8 @@ int backend_startup(Backend *be)
 
                if(rc != 0) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_CRIT,
-                               "backend_startup: bi_db_open failed! (%d)\n", rc ));
+                       LDAP_LOG( BACKEND, CRIT, 
+                               "backend_startup: bi_db_open failed! (%d)\n", rc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "backend_startup: bi_db_open failed! (%d)\n",
@@ -305,8 +301,8 @@ int backend_startup(Backend *be)
 
                if(rc != 0) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_CRIT,
-                                  "backend_startup: bi_open %d failed!\n", i ));
+                       LDAP_LOG( BACKEND, CRIT, 
+                               "backend_startup: bi_open %d failed!\n", i, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "backend_startup: bi_open %d failed!\n",
@@ -328,9 +324,8 @@ int backend_startup(Backend *be)
 
                if(rc != 0) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_CRIT,
-                               "backend_startup: bi_db_open(%d) failed! (%d)\n",
-                               i, rc ));
+                       LDAP_LOG( BACKEND, CRIT, 
+                               "backend_startup: bi_db_open(%d) failed! (%d)\n", i, rc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "backend_startup: bi_db_open(%d) failed! (%d)\n",
@@ -388,9 +383,9 @@ int backend_shutdown( Backend *be )
 
                if(rc != 0) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "backend", LDAP_LEVEL_NOTICE,
-                                  "backend_shutdown: bi_close %s failed!\n",
-                                  backendDB[i].be_type ));
+                       LDAP_LOG( BACKEND, NOTICE, 
+                               "backend_shutdown: bi_close %s failed!\n",
+                               backendDB[i].be_type, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "backend_close: bi_close %s failed!\n",
@@ -914,7 +909,7 @@ backend_check_restrictions(
 
                        if( op->o_ndn.bv_len == 0 ) {
                                *text = "modifications require authentication";
-                               return LDAP_OPERATIONS_ERROR;
+                               return LDAP_STRONG_AUTH_REQUIRED;
                        }
                }
        }
@@ -1031,6 +1026,7 @@ backend_group(
        } 
 
        ldap_pvt_thread_mutex_lock( &conn->c_mutex );
+
        for (g = conn->c_groups; g; g=g->ga_next) {
                if (g->ga_be != be || g->ga_oc != group_oc ||
                        g->ga_at != group_at || g->ga_len != gr_ndn->bv_len)
@@ -1038,7 +1034,9 @@ backend_group(
                if (strcmp( g->ga_ndn, gr_ndn->bv_val ) == 0)
                        break;
        }
+
        ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
+
        if (g) {
                return g->ga_res;
        }
@@ -1048,7 +1046,7 @@ backend_group(
                        target, gr_ndn, op_ndn,
                        group_oc, group_at );
                
-               if (op->o_tag != LDAP_REQ_BIND) {
+               if ( op->o_tag != LDAP_REQ_BIND && !op->o_do_not_cache ) {
                        g = ch_malloc(sizeof(GroupAssertion) + gr_ndn->bv_len);
                        g->ga_be = be;
                        g->ga_oc = group_oc;
index 15055120b4e5ca95d24336b916bfb50a5e83a81b..81898e3ea083dd5c6bf159d522581e6e789db920 100644 (file)
@@ -48,8 +48,7 @@ do_bind(
        Backend *be;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-               "do_bind: conn %d\n", conn->c_connid ));
+       LDAP_LOG( OPERATION, ENTRY, "do_bind: conn %d\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "do_bind\n", 0, 0, 0 );
 #endif
@@ -58,7 +57,9 @@ do_bind(
         * Force to connection to "anonymous" until bind succeeds.
         */
        ldap_pvt_thread_mutex_lock( &conn->c_mutex );
+       if ( conn->c_sasl_bind_in_progress ) be = conn->c_authz_backend;
        connection2anonymous( conn );
+       if ( conn->c_sasl_bind_in_progress ) conn->c_authz_backend = be;
        ldap_pvt_thread_mutex_unlock( &conn->c_mutex );
 
        if ( op->o_dn.bv_val != NULL ) {
@@ -97,8 +98,8 @@ do_bind(
 
        if ( tag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_bind: conn %d  ber_scanf failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_bind: conn %d  ber_scanf failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "bind: ber_scanf failed\n", 0, 0, 0 );
 #endif
@@ -144,8 +145,8 @@ do_bind(
 
        if( (rc = get_ctrls( conn, op, 1 )) != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                       "do_bind: conn %d  get_ctrls failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "do_bind: conn %d  get_ctrls failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_bind: get_ctrls failed\n", 0, 0, 0 );
 #endif
@@ -155,9 +156,9 @@ do_bind(
        rc = dnPrettyNormal( NULL, &dn, &pdn, &ndn );
        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                       "do_bind: conn %d  invalid dn (%s)\n",
-                       conn->c_connid, dn.bv_val ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "do_bind: conn %d  invalid dn (%s)\n", 
+                       conn->c_connid, dn.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "bind: invalid dn (%s)\n",
                        dn.bv_val, 0, 0 );
@@ -169,9 +170,9 @@ do_bind(
 
        if( method == LDAP_AUTH_SASL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation",  LDAP_LEVEL_DETAIL1,
-                       "do_sasl_bind: conn %d  dn (%s) mech %s\n", conn->c_connid,
-                       pdn.bv_val, mech.bv_val ));
+               LDAP_LOG( OPERATION,     DETAIL1, 
+                       "do_sasl_bind: conn %d  dn (%s) mech %s\n", 
+                       conn->c_connid, pdn.bv_val, mech.bv_val );
 #else
                Debug( LDAP_DEBUG_TRACE, "do_sasl_bind: dn (%s) mech %s\n",
                        pdn.bv_val, mech.bv_val, NULL );
@@ -179,10 +180,9 @@ do_bind(
 
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                       "do_bind: conn %d  version=%ld dn=\"%s\" method=%ld\n",
-                       conn->c_connid, (unsigned long) version,
-                       pdn.bv_val, (unsigned long)method ));
+               LDAP_LOG( OPERATION, DETAIL1, 
+                       "do_bind: version=%ld dn=\"%s\" method=%ld\n",
+                       (unsigned long) version, pdn.bv_val, (unsigned long)method );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "do_bind: version=%ld dn=\"%s\" method=%ld\n",
@@ -196,9 +196,9 @@ do_bind(
 
        if ( version < LDAP_VERSION_MIN || version > LDAP_VERSION_MAX ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+               LDAP_LOG( OPERATION, INFO, 
                        "do_bind: conn %d  unknown version = %ld\n",
-                       conn->c_connid, (unsigned long)version ));
+                       conn->c_connid, (unsigned long)version, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_bind: unknown version=%ld\n",
                        (unsigned long) version, 0, 0 );
@@ -236,9 +236,9 @@ do_bind(
 
                if ( version < LDAP_VERSION3 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+                       LDAP_LOG( OPERATION, INFO, 
                                "do_bind: conn %d  sasl with LDAPv%ld\n",
-                               conn->c_connid, (unsigned long)version ));
+                               conn->c_connid, (unsigned long)version , 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "do_bind: sasl with LDAPv%ld\n",
                                (unsigned long) version, 0, 0 );
@@ -251,9 +251,9 @@ do_bind(
 
                if( mech.bv_len == 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+                       LDAP_LOG( OPERATION, INFO, 
                                   "do_bind: conn %d  no SASL mechanism provided\n",
-                                  conn->c_connid ));
+                                  conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "do_bind: no sasl mechanism provided\n",
@@ -378,9 +378,9 @@ do_bind(
                        send_ldap_result( conn, op, rc,
                                NULL, text, NULL, NULL );
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( OPERATION, DETAIL1, 
                                   "do_bind: conn %d  v%d anonymous bind\n",
-                                  conn->c_connid, version ));
+                                  conn->c_connid, version , 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "do_bind: v%d anonymous bind\n",
                                version, 0, 0 );
@@ -395,9 +395,9 @@ do_bind(
                        send_ldap_result( conn, op, rc,
                                NULL, text, NULL, NULL );
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+                       LDAP_LOG( OPERATION, INFO, 
                                   "do_bind: conn %d  v%d simple bind(%s) disallowed\n",
-                                  conn->c_connid, version, ndn.bv_val ));
+                                  conn->c_connid, version, ndn.bv_val );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "do_bind: v%d simple bind(%s) disallowed\n",
@@ -416,9 +416,9 @@ do_bind(
                                NULL, text, NULL, NULL );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO, "do_bind: conn %d  "
+                       LDAP_LOG( OPERATION, INFO, "do_bind: conn %d  "
                                "v%d unprotected simple bind(%s) disallowed\n",
-                               conn->c_connid, version, ndn.bv_val ));
+                               conn->c_connid, version, ndn.bv_val );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "do_bind: v%d unprotected simple bind(%s) disallowed\n",
@@ -437,9 +437,9 @@ do_bind(
                        send_ldap_result( conn, op, rc,
                                NULL, text, NULL, NULL );
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( OPERATION, DETAIL1, 
                                   "do_bind: conn %d  v%d Kerberos V4 bind\n",
-                                  conn->c_connid, version ));
+                                  conn->c_connid, version , 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "do_bind: v%d Kerberos V4 bind\n",
                                version, 0, 0 );
@@ -455,9 +455,9 @@ do_bind(
                send_ldap_result( conn, op, rc,
                        NULL, text, NULL, NULL );
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+               LDAP_LOG( OPERATION, INFO, 
                           "do_bind: conn %ld  v%d unknown authentication method (%ld)\n",
-                          conn->c_connid, version, method ));
+                          conn->c_connid, version, method );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "do_bind: v%d unknown authentication method (%ld)\n",
@@ -534,9 +534,9 @@ do_bind(
                        }
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                               "do_bind: conn %d  v%d bind: \"%s\" to \"%s\" \n",
-                               conn->c_connid, version, dn.bv_val, conn->c_dn.bv_val ));
+                       LDAP_LOG( OPERATION, DETAIL1, 
+                               "do_bind: v%d bind: \"%s\" to \"%s\" \n",
+                               version, conn->c_dn.bv_val, conn->c_dn.bv_val );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "do_bind: v%d bind: \"%s\" to \"%s\"\n",
index 43ec4c9adb08ebd63a0eaec3e9967f9bc3252379..c9af173946e0f06c03a56f9692ba91f180de5678 100644 (file)
 /* ch_malloc.c - malloc routines that test returns from malloc and friends */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+
+#define CH_FREE 1
+
+#include "portable.h"
 
 #include <stdio.h>
-#include <sys/types.h>
-#include <sys/socket.h>
+
+#include <ac/stdlib.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+
 #include "slap.h"
 
-char *
+#ifndef CSRIMALLOC
+
+void *
 ch_malloc(
-    unsigned long      size
+    ber_len_t  size
 )
 {
-       char    *new;
+       void    *new;
 
-       if ( (new = (char *) malloc( size )) == NULL ) {
-               Debug( LDAP_DEBUG_ANY, "malloc of %d bytes failed\n", size, 0, 0 );
-               exit( 1 );
+       if ( (new = (void *) ber_memalloc( size )) == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( OPERATION, ERR, 
+                          "ch_malloc: allocation of %lu bytes failed\n", (long)size, 0,0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "ch_malloc of %lu bytes failed\n",
+                       (long) size, 0, 0 );
+#endif
+               assert( 0 );
+               exit( EXIT_FAILURE );
        }
 
        return( new );
 }
 
-char *
+void *
 ch_realloc(
-    char               *block,
-    unsigned long      size
+    void               *block,
+    ber_len_t  size
 )
 {
-       char    *new;
+       void    *new;
 
        if ( block == NULL ) {
                return( ch_malloc( size ) );
        }
 
-       if ( (new = (char *) realloc( block, size )) == NULL ) {
-               Debug( LDAP_DEBUG_ANY, "realloc of %d bytes failed\n", size, 0, 0 );
-               exit( 1 );
+       if( size == 0 ) {
+               ch_free( block );
+       }
+
+       if ( (new = (void *) ber_memrealloc( block, size )) == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( OPERATION, ERR, 
+                          "ch_realloc: reallocation of %lu bytes failed\n", (long)size, 0,0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "ch_realloc of %lu bytes failed\n",
+                       (long) size, 0, 0 );
+#endif
+               assert( 0 );
+               exit( EXIT_FAILURE );
        }
 
        return( new );
 }
 
-char *
+void *
 ch_calloc(
-    unsigned long      nelem,
-    unsigned long      size
+    ber_len_t  nelem,
+    ber_len_t  size
+)
+{
+       void    *new;
+
+       if ( (new = (void *) ber_memcalloc( nelem, size )) == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( OPERATION, ERR, 
+                          "ch_calloc: allocation of %lu elements of %lu bytes faild\n",
+                          (long)nelem, (long)size, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "ch_calloc of %lu elems of %lu bytes failed\n",
+                 (long) nelem, (long) size, 0 );
+#endif
+               assert( 0 );
+               exit( EXIT_FAILURE );
+       }
+
+       return( new );
+}
+
+char *
+ch_strdup(
+    const char *string
 )
 {
        char    *new;
 
-       if ( (new = (char *) calloc( nelem, size )) == NULL ) {
-               Debug( LDAP_DEBUG_ANY, "calloc of %d elems of %d bytes failed\n",
-                 nelem, size, 0 );
-               exit( 1 );
+       if ( (new = ber_strdup( string )) == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( OPERATION, ERR, 
+                       "chr_strdup: duplication of \"%s\" failed\n", string, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "ch_strdup(%s) failed\n", string, 0, 0 );
+#endif
+               assert( 0 );
+               exit( EXIT_FAILURE );
        }
 
        return( new );
 }
+
+void
+ch_free( void *ptr )
+{
+       ber_memfree( ptr );
+}
+
+#endif
index e8c3dbc048d1f74a11d5f6de7b8334c8bfceef64..46bff0714af508f3ff9819c9bafd00528180d9b8 100644 (file)
@@ -211,38 +211,3 @@ charray_strcasecmp( const char **a1, const char **a2 )
 
        return 0;
 }
-
-/* strcopy is like strcpy except it returns a pointer to the trailing NUL of
- * the result string. This allows fast construction of catenated strings
- * without the overhead of strlen/strcat.
- */
-char *
-slap_strcopy(
-       char *a,
-       const char *b
-)
-{
-       if (!a || !b)
-               return a;
-       
-       while ((*a++ = *b++)) ;
-       return a-1;
-}
-
-/* strncopy is like strcpy except it returns a pointer to the trailing NUL of
- * the result string. This allows fast construction of catenated strings
- * without the overhead of strlen/strcat.
- */
-char *
-slap_strncopy(
-       char *a,
-       const char *b,
-       size_t n
-)
-{
-       if (!a || !b || n == 0)
-               return a;
-       
-       while ((*a++ = *b++) && n-- > 0) ;
-       return a-1;
-}
index ead4af626e45d00cbc9611d403c19202e12178ff..b62d69dc4ad9410bfcb9271f1a460d1f65017576 100644 (file)
@@ -50,8 +50,7 @@ do_compare(
        ava.aa_desc = NULL;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-               "do_compare: conn %d\n", conn->c_connid ));
+       LDAP_LOG( OPERATION, ENTRY, "do_compare: conn %d\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "do_compare\n", 0, 0, 0 );
 #endif
@@ -69,8 +68,8 @@ do_compare(
 
        if ( ber_scanf( op->o_ber, "{m" /*}*/, &dn ) == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_compare: conn %d  ber_scanf failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_compare: conn %d  ber_scanf failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_scanf failed\n", 0, 0, 0 );
 #endif
@@ -81,8 +80,8 @@ do_compare(
 
        if ( ber_scanf( op->o_ber, "{mm}", &desc, &value ) == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_compare: conn %d  get ava failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_compare: conn %d  get ava failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_compare: get ava failed\n", 0, 0, 0 );
 #endif
@@ -94,8 +93,8 @@ do_compare(
 
        if ( ber_scanf( op->o_ber, /*{*/ "}" ) == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_compare: conn %d  ber_scanf failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_compare: conn %d  ber_scanf failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_scanf failed\n", 0, 0, 0 );
 #endif
@@ -107,8 +106,8 @@ do_compare(
 
        if( ( rc = get_ctrls( conn, op, 1 )) != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                       "do_compare: conn %d  get_ctrls failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "do_compare: conn %d  get_ctrls failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_compare: get_ctrls failed\n", 0, 0, 0 );
 #endif
@@ -118,9 +117,9 @@ do_compare(
        rc = dnPrettyNormal( NULL, &dn, &pdn, &ndn );
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+               LDAP_LOG( OPERATION, INFO, 
                        "do_compare: conn %d  invalid dn (%s)\n",
-                       conn->c_connid, dn.bv_val ));
+                       conn->c_connid, dn.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "do_compare: invalid dn (%s)\n", dn.bv_val, 0, 0 );
@@ -145,10 +144,9 @@ do_compare(
 
        if( strcasecmp( ndn.bv_val, LDAP_ROOT_DSE ) == 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-                       "do_compare: conn %d  dn (%s) attr(%s) value (%s)\n",
-                       conn->c_connid, pdn.bv_val,
-                       ava.aa_desc->ad_cname.bv_val, ava.aa_value.bv_val ));
+               LDAP_LOG( OPERATION, ARGS, 
+                       "do_compare: dn (%s) attr(%s) value (%s)\n",
+                       pdn.bv_val, ava.aa_desc->ad_cname.bv_val, ava.aa_value.bv_val );
 #else
                Debug( LDAP_DEBUG_ARGS, "do_compare: dn (%s) attr (%s) value (%s)\n",
                        pdn.bv_val, ava.aa_desc->ad_cname.bv_val, ava.aa_value.bv_val );
@@ -173,10 +171,10 @@ do_compare(
 
        } else if ( strcasecmp( ndn.bv_val, SLAPD_SCHEMA_DN ) == 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-                       "do_compare: conn %d  dn (%s) attr(%s) value (%s)\n",
-                       conn->c_connid, pdn.bv_val, ava.aa_desc->ad_cname.bv_val,
-                       ava.aa_value.bv_val ));
+               LDAP_LOG( OPERATION, ARGS, 
+                       "do_compare: dn (%s) attr(%s) value (%s)\n",
+                       pdn.bv_val, ava.aa_desc->ad_cname.bv_val,
+                       ava.aa_value.bv_val );
 #else
                Debug( LDAP_DEBUG_ARGS, "do_compare: dn (%s) attr (%s) value (%s)\n",
                        pdn.bv_val, ava.aa_desc->ad_cname.bv_val, ava.aa_value.bv_val );
@@ -249,10 +247,9 @@ do_compare(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-               "do_compare: conn %d     dn (%s) attr(%s) value (%s)\n",
-               conn->c_connid, pdn.bv_val, ava.aa_desc->ad_cname.bv_val,
-               ava.aa_value.bv_val ));
+       LDAP_LOG( OPERATION, ARGS, 
+               "do_compare: dn (%s) attr(%s) value (%s)\n",
+               pdn.bv_val, ava.aa_desc->ad_cname.bv_val, ava.aa_value.bv_val );
 #else
        Debug( LDAP_DEBUG_ARGS, "do_compare: dn (%s) attr (%s) value (%s)\n",
            pdn.bv_val, ava.aa_desc->ad_cname.bv_val, ava.aa_value.bv_val );
index d3619af88924439ffdd6bbd6374e08adb490b455..5362cbdb9efd245576f6511f89b5c45be9ee054b 100644 (file)
@@ -96,9 +96,9 @@ read_config( const char *fname )
        if ( (fp = fopen( fname, "r" )) == NULL ) {
                ldap_syslog = 1;
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "config", LDAP_LEVEL_ENTRY, "read_config: "
-                       "could not open config file \"%s\": %s (%d)\n",
-                   fname, strerror(errno), errno ));
+               LDAP_LOG( CONFIG, ENTRY, 
+                       "read_config: " "could not open config file \"%s\": %s (%d)\n",
+                   fname, strerror(errno), errno );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "could not open config file \"%s\": %s (%d)\n",
@@ -108,8 +108,8 @@ read_config( const char *fname )
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "config", LDAP_LEVEL_ENTRY,
-               "read_config: reading config file %s\n", fname ));
+       LDAP_LOG( CONFIG, ENTRY, 
+               "read_config: reading config file %s\n", fname, 0, 0 );
 #else
        Debug( LDAP_DEBUG_CONFIG, "reading config file %s\n", fname, 0, 0 );
 #endif
@@ -132,9 +132,8 @@ read_config( const char *fname )
 
                if ( cargc < 1 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                  "%s: line %d: bad config line (ignored)\n",
-                                  fname, lineno ));
+                       LDAP_LOG( CONFIG, INFO, 
+                               "%s: line %d: bad config line (ignored)\n", fname, lineno, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                            "%s: line %d: bad config line (ignored)\n",
@@ -147,9 +146,9 @@ read_config( const char *fname )
                if ( strcasecmp( cargv[0], "backend" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s : line %d: missing type in \"backend\" line.\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                "%s: line %d: missing type in \"backend <type>\" line\n",
@@ -161,9 +160,9 @@ read_config( const char *fname )
 
                        if( be != NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: backend line must appear before any "
-                                          "database definition.\n", fname, lineno ));
+                                          "database definition.\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: backend line must appear before any database definition\n",
@@ -177,9 +176,9 @@ read_config( const char *fname )
 
                        if( bi == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "read_config: backend %s initialization failed.\n",
-                                          cargv[1] ));
+                                          cargv[1], 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "backend %s initialization failed.\n",
@@ -191,9 +190,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "database" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing type in \"database <type>\" line\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing type in \"database <type>\" line\n",
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                "%s: line %d: missing type in \"database <type>\" line\n",
@@ -208,9 +207,8 @@ read_config( const char *fname )
 
                        if( be == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "database %s initialization failed.\n",
-                                          cargv[1] ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "database %s initialization failed.\n", cargv[1], 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "database %s initialization failed.\n",
@@ -225,9 +223,9 @@ read_config( const char *fname )
                        int c;
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing level in \"concurrency <level\" line\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing level in \"concurrency <level\" "
+                                       " line\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing level in \"concurrency <level>\" line\n",
@@ -241,10 +239,9 @@ read_config( const char *fname )
 
                        if( c < 1 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: invalid level (%d) in "
-                                          "\"concurrency <level>\" line.\n",
-                                          fname, lineno, c ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: invalid level (%d) in "
+                                       "\"concurrency <level>\" line.\n", fname, lineno, c );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: invalid level (%d) in \"concurrency <level>\" line\n",
@@ -261,9 +258,9 @@ read_config( const char *fname )
                        long max;
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing max in \"sockbuf_max_incoming <bytes>\" line\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                  "%s: line %d: missing max in \"sockbuf_max_incoming "
+                                  "<bytes>\" line\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                           "%s: line %d: missing max in \"sockbuf_max_incoming <bytes>\" line\n",
@@ -277,10 +274,10 @@ read_config( const char *fname )
 
                        if( max < 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: invalid max value (%ld) in "
                                           "\"sockbuf_max_incoming <bytes>\" line.\n",
-                                          fname, lineno, max ));
+                                          fname, lineno, max );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: invalid max value (%ld) in "
@@ -298,9 +295,9 @@ read_config( const char *fname )
                        long max;
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing max in \"sockbuf_max_incoming_auth <bytes>\" line\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                  "%s: line %d: missing max in \"sockbuf_max_incoming_auth "
+                                  "<bytes>\" line\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                           "%s: line %d: missing max in \"sockbuf_max_incoming_auth <bytes>\" line\n",
@@ -314,10 +311,10 @@ read_config( const char *fname )
 
                        if( max < 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: invalid max value (%ld) in "
                                           "\"sockbuf_max_incoming_auth <bytes>\" line.\n",
-                                          fname, lineno, max ));
+                                          fname, lineno, max );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: invalid max value (%ld) in "
@@ -334,9 +331,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "defaultSearchBase" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                        "%s: line %d: missing dn in \"defaultSearchBase <dn\" "
-                                       "line\n", fname, lineno ));
+                                       "line\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "missing dn in \"defaultSearchBase <dn>\" line\n",
@@ -347,10 +344,10 @@ read_config( const char *fname )
 
                        } else if ( cargc > 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                        "%s: line %d: extra cruft after <dn> in "
                                        "\"defaultSearchBase %s\" line (ignored)\n",
-                                       fname, lineno, cargv[1] ));
+                                       fname, lineno, cargv[1] );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "extra cruft after <dn> in \"defaultSearchBase %s\", "
@@ -361,10 +358,10 @@ read_config( const char *fname )
 
                        if ( bi != NULL || be != NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                        "%s: line %d: defaultSearchBase line must appear "
                                        "prior to any backend or database definitions\n",
-                                       fname, lineno ));
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "defaultSearchBaase line must appear prior to "
@@ -377,10 +374,10 @@ read_config( const char *fname )
 
                        if ( default_search_nbase.bv_len ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: "
+                               LDAP_LOG( CONFIG, INFO, "%s: line %d: "
                                        "default search base \"%s\" already defined "
                                        "(discarding old)\n", fname, lineno,
-                                       default_search_base.bv_val ));
+                                       default_search_base.bv_val );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "default search base \"%s\" already defined "
@@ -406,9 +403,9 @@ read_config( const char *fname )
 
                                if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                       LDAP_LOG( CONFIG, CRIT, 
                                                "%s: line %d: defaultSearchBase DN is invalid.\n",
-                                               fname, lineno ));
+                                               fname, lineno, 0 );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                                "%s: line %d: defaultSearchBase DN is invalid\n",
@@ -423,9 +420,9 @@ read_config( const char *fname )
                        int c;
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing count in \"threads <count>\" line\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing count in \"threads <count>\" line\n",
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing count in \"threads <count>\" line\n",
@@ -439,9 +436,9 @@ read_config( const char *fname )
 
                        if( c < 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: invalid level (%d) in \"threads <count>\""
-                                          "line\n",fname, lineno, c ));
+                                          "line\n", fname, lineno, c );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: invalid level (%d) in \"threads <count>\" line\n",
@@ -460,9 +457,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "pidfile" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d missing file name in \"pidfile <file>\" line.\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d missing file name in \"pidfile <file>\" "
+                                       "line.\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing file name in \"pidfile <file>\" line\n",
@@ -478,10 +475,10 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "argsfile" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: %d: missing file name in "
                                           "\"argsfile <file>\" line.\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing file name in \"argsfile <file>\" line\n",
@@ -497,10 +494,10 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "password-hash" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: missing hash in "
                                           "\"password-hash <hash>\" line.\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing hash in \"password-hash <hash>\" line\n",
@@ -511,9 +508,9 @@ read_config( const char *fname )
                        }
                        if ( default_passwd_hash != NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: already set default password_hash!\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: already set default password_hash!\n",
@@ -526,9 +523,9 @@ read_config( const char *fname )
 
                        if ( lutil_passwd_scheme( cargv[1] ) == 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: password scheme \"%s\" not available\n",
-                                          fname, lineno, cargv[1] ));
+                                          fname, lineno, cargv[1] );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: password scheme \"%s\" not available\n",
@@ -543,10 +540,10 @@ read_config( const char *fname )
                {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                        "%s: line %d: missing format in "
                                        "\"password-crypt-salt-format <format>\" line\n",
-                                       fname, lineno ));
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: missing format in "
                                        "\"password-crypt-salt-format <format>\" line\n",
@@ -570,10 +567,9 @@ read_config( const char *fname )
                        int err;
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: missing path in "
-                                          "\"ucdata-path <path>\" line.\n",
-                                          fname, lineno ));
+                                          "\"ucdata-path <path>\" line.\n", fname, lineno, 0  );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing path in \"ucdata-path <path>\" line\n",
@@ -587,11 +583,10 @@ read_config( const char *fname )
                        if ( err <= 0 ) {
                                if ( err == 0 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                       LDAP_LOG( CONFIG, CRIT, 
                                                   "%s: line %d: ucdata already loaded, ucdata-path "
                                                   "must be set earlier in the file and/or be "
-                                                  "specified only once!\n",
-                                                  fname, lineno ));
+                                                  "specified only once!\n", fname, lineno, 0 );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                               "%s: line %d: ucdata already loaded, ucdata-path must be set earlier in the file and/or be specified only once!\n",
@@ -609,9 +604,9 @@ read_config( const char *fname )
                        
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing limit in \"sizelimit <limit>\" line.\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                  "%s: line %d: missing limit in \"sizelimit <limit>\" "
+                                  "line.\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing limit in \"sizelimit <limit>\" line\n",
@@ -637,12 +632,10 @@ read_config( const char *fname )
 
                                if ( rc ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                                  "%s: line %d: unable "
-                                                  "to parse value \"%s\" "
-                                                  "in \"sizelimit "
-                                                  "<limit>\" line.\n",
-                                                  fname, lineno, cargv[i] ));
+                                       LDAP_LOG( CONFIG, CRIT, 
+                                               "%s: line %d: unable "
+                                                  "to parse value \"%s\" in \"sizelimit "
+                                                  "<limit>\" line.\n", fname, lineno, cargv[i] );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                                "%s: line %d: unable "
@@ -661,9 +654,9 @@ read_config( const char *fname )
                        
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d missing limit in \"timelimit <limit>\" line.\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d missing limit in \"timelimit <limit>\" "
+                                       "line.\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing limit in \"timelimit <limit>\" line\n",
@@ -689,12 +682,10 @@ read_config( const char *fname )
 
                                if ( rc ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                                  "%s: line %d: unable "
-                                                  "to parse value \"%s\" "
-                                                  "in \"timelimit "
-                                                  "<limit>\" line.\n",
-                                                  fname, lineno, cargv[i] ));
+                                       LDAP_LOG( CONFIG, CRIT, 
+                                                   "%s: line %d: unable to parse value \"%s\" "
+                                                  "in \"timelimit <limit>\" line.\n",
+                                                  fname, lineno, cargv[i] );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                                "%s: line %d: unable "
@@ -710,9 +701,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "limits" ) == 0 ) {
                        if ( be == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_WARNING,
-                                          "%s: line %d \"limits\" allowed only in database environment.\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, WARNING, 
+                                          "%s: line %d \"limits\" allowed only in database "
+                                          "environment.\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
        "%s: line %d \"limits\" allowed only in database environment.\n%s",
@@ -729,9 +720,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "subordinate" ) == 0 ) {
                        if ( be == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: "
+                               LDAP_LOG( CONFIG, INFO, "%s: line %d: "
                                        "subordinate keyword must appear inside a database "
-                                       "definition.\n", fname, lineno ));
+                                       "definition.\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix line "
                                        "must appear inside a database definition.\n",
@@ -751,9 +742,9 @@ read_config( const char *fname )
 
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                        "%s: line %d: missing dn in \"suffix <dn>\" line.\n",
-                                       fname, lineno ));
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "missing dn in \"suffix <dn>\" line\n",
@@ -764,9 +755,9 @@ read_config( const char *fname )
 
                        } else if ( cargc > 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                        "%s: line %d: extra cruft after <dn> in \"suffix %s\""
-                                       " line (ignored).\n", fname, lineno, cargv[1] ));
+                                       " line (ignored).\n", fname, lineno, cargv[1] );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: extra cruft "
                                        "after <dn> in \"suffix %s\" line (ignored)\n",
@@ -776,9 +767,9 @@ read_config( const char *fname )
 
                        if ( be == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                        "%s: line %d: suffix line must appear inside a database "
-                                       "definition.\n", fname, lineno ));
+                                       "definition.\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix line "
                                        "must appear inside a database definition\n",
@@ -790,9 +781,9 @@ read_config( const char *fname )
                        /* "cn=Monitor" is reserved for monitoring slap */
                        } else if ( strcasecmp( cargv[1], SLAPD_MONITOR_DN ) == 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT, "%s: line %d: \""
+                               LDAP_LOG( CONFIG, CRIT, "%s: line %d: \""
                                        SLAPD_MONITOR_DN "\" is reserved for monitoring slapd\n", 
-                                       fname, lineno ));
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: \""
                                        SLAPD_MONITOR_DN "\" is reserved for monitoring slapd\n", 
@@ -810,9 +801,9 @@ read_config( const char *fname )
                        rc = dnPrettyNormal( NULL, &dn, &pdn, &ndn );
                        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                        "%s: line %d: suffix DN is invalid.\n",
-                                       fname, lineno ));
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: suffix DN is invalid\n",
@@ -824,9 +815,9 @@ read_config( const char *fname )
                        tmp_be = select_backend( &ndn, 0, 0 );
                        if ( tmp_be == be ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                        "%s: line %d: suffix already served by this backend "
-                                       "(ignored)\n", fname, lineno ));
+                                       "(ignored)\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix "
                                        "already served by this backend (ignored)\n",
@@ -837,10 +828,10 @@ read_config( const char *fname )
 
                        } else if ( tmp_be  != NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                        "%s: line %d: suffix already served by a preceding "
                                        "backend \"%s\"\n", fname, lineno,
-                                       tmp_be->be_suffix[0].bv_val ));
+                                       tmp_be->be_suffix[0].bv_val );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: suffix "
                                        "already served by a preceeding backend \"%s\"\n",
@@ -852,10 +843,10 @@ read_config( const char *fname )
 
                        } else if( pdn.bv_len == 0 && default_search_nbase.bv_len ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                                       LDAP_LOG( CONFIG, INFO, 
                                                "%s: line %d: suffix DN empty and default search "
                                                "base provided \"%s\" (assuming okay).\n",
-                                               fname, lineno, default_search_base.bv_val ));
+                                               fname, lineno, default_search_base.bv_val );
 #else
                                        Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                                "suffix DN empty and default "
@@ -875,10 +866,10 @@ read_config( const char *fname )
 
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                        "%s: line %d: missing alias and aliased_dn in "
                                        "\"suffixAlias <alias> <aliased_dn>\" line.\n",
-                                       fname, lineno ));
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: missing alias and aliased_dn in "
@@ -889,10 +880,10 @@ read_config( const char *fname )
                                return( 1 );
                        } else if ( cargc < 3 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                        "%s: line %d: missing aliased_dn in "
                                        "\"suffixAlias <alias> <aliased_dn>\" line\n",
-                                       fname, lineno ));
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: missing aliased_dn in "
@@ -903,9 +894,9 @@ read_config( const char *fname )
 
                        } else if ( cargc > 3 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                        "%s: line %d: extra cruft in suffixAlias line (ignored)\n",
-                                       fname, lineno ));
+                                       fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: extra cruft in suffixAlias line (ignored)\n",
@@ -915,9 +906,9 @@ read_config( const char *fname )
 
                        if ( be == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                       "%s: line %d: suffixAlias line must appear inside a "
-                                       "database definition.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, INFO, 
+                                       "%s: line %d: suffix line must appear inside a database "
+                                       "definition.\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: suffixAlias line"
@@ -935,9 +926,8 @@ read_config( const char *fname )
                        rc = dnPrettyNormal( NULL, &alias, &palias, &nalias );
                        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                       "%s: line %d: alias DN is invalid.\n",
-                                       fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: alias DN is invalid.\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: alias DN is invalid\n",
@@ -950,10 +940,10 @@ read_config( const char *fname )
                        free( nalias.bv_val );
                        if ( tmp_be && tmp_be != be ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                        "%s: line %d: suffixAlias served by a preceeding "
-                                       "backend \"%s\"\n",
-                                       fname, lineno, tmp_be->be_suffix[0].bv_val ));
+                                       "backend \"%s\"\n", fname, lineno, 
+                                       tmp_be->be_suffix[0].bv_val );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: suffixAlias served by"
@@ -970,9 +960,8 @@ read_config( const char *fname )
                        rc = dnPrettyNormal( NULL, &aliased, &paliased, &naliased );
                        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                       "%s: line %d: aliased DN is invalid.\n",
-                                       fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: aliased DN is invalid.\n", fname, lineno,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: aliased DN is invalid\n",
@@ -986,10 +975,10 @@ read_config( const char *fname )
                        free( naliased.bv_val );
                        if ( tmp_be && tmp_be != be ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                        "%s: line %d: suffixAlias derefs to a different backend "
                                        "a preceeding backend \"%s\"\n",
-                                       fname, lineno, tmp_be->be_suffix[0].bv_val ));
+                                       fname, lineno, tmp_be->be_suffix[0].bv_val );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: suffixAlias derefs to differnet backend"
@@ -1009,9 +998,9 @@ read_config( const char *fname )
                                        int i;
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                              LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                              LDAP_LOG( CONFIG, CRIT, 
                                          "%s: line %d: missing depth in \"maxDerefDepth <depth>\""
-                                         " line\n", fname, lineno ));
+                                         " line\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                    "%s: line %d: missing depth in \"maxDerefDepth <depth>\" line\n",
@@ -1022,9 +1011,9 @@ read_config( const char *fname )
                        }
                        if ( be == NULL ) {
 #ifdef NEW_LOGGING
-                              LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                              LDAP_LOG( CONFIG, INFO, 
                                          "%s: line %d: depth line must appear inside a database "
-                                         "definition.\n", fname, lineno ));
+                                         "definition.\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: depth line must appear inside a database definition.\n",
@@ -1034,9 +1023,9 @@ read_config( const char *fname )
 
                        } else if ((i = atoi(cargv[1])) < 0) {
 #ifdef NEW_LOGGING
-                              LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                              LDAP_LOG( CONFIG, INFO, 
                                          "%s: line %d: depth must be positive.\n",
-                                         fname, lineno ));
+                                         fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: depth must be positive.\n",
@@ -1054,9 +1043,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "rootdn" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                           "%s: line %d: missing dn in \"rootdn <dn>\" line.\n",
-                                          fname, lineno ));
+                                          fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                    "%s: line %d: missing dn in \"rootdn <dn>\" line\n",
@@ -1068,9 +1057,9 @@ read_config( const char *fname )
 
                        if ( be == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                           "%s: line %d: rootdn line must appear inside a database "
-                                          "definition.\n", fname, lineno ));
+                                          "definition.\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: rootdn line must appear inside a database definition.\n",
@@ -1092,9 +1081,9 @@ read_config( const char *fname )
 
                                if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                               "%s: line %d: rootdn DN is invalid.\n",
-                                               fname, lineno ));
+                                       LDAP_LOG( CONFIG, CRIT, 
+                                               "%s: line %d: rootdn DN is invalid.\n", 
+                                               fname, lineno ,0 );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                                "%s: line %d: rootdn DN is invalid\n",
@@ -1108,9 +1097,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "rootpw" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                        "%s: line %d: missing passwd in \"rootpw <passwd>\""
-                                       " line\n", fname, lineno ));
+                                       " line\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "missing passwd in \"rootpw <passwd>\" line\n",
@@ -1122,9 +1111,9 @@ read_config( const char *fname )
 
                        if ( be == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: "
+                               LDAP_LOG( CONFIG, INFO, "%s: line %d: "
                                        "rootpw line must appear inside a database "
-                                       "definition.\n", fname, lineno ));
+                                       "definition.\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "rootpw line must appear inside a database "
@@ -1138,10 +1127,10 @@ read_config( const char *fname )
 
                                if( tmp_be != be ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                                       LDAP_LOG( CONFIG, INFO,
                                                "%s: line %d: "
-                                               "rootpw can only be set when rootdn is under suffix\n"
-                                               fname, lineno ));
+                                               "rootpw can only be set when rootdn is under suffix\n",
+                                               fname, lineno, "" );
 #else
                                        Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                                "rootpw can only be set when rootdn is under suffix\n",
@@ -1158,9 +1147,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "readonly" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing on|off in \"readonly <on|off>\" line.\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing on|off in \"readonly <on|off>\" "
+                                       "line.\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing on|off in \"readonly <on|off>\" line\n",
@@ -1192,9 +1181,9 @@ read_config( const char *fname )
 
                        if ( be != NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                           "%s: line %d: allow line must appear prior to "
-                                          "database definitions.\n", fname, lineno ));
+                                          "database definitions.\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: allow line must appear prior to database definitions\n",
@@ -1205,9 +1194,9 @@ read_config( const char *fname )
 
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: missing feature(s) in \"allow <features>\""
-                                          " line\n", fname, lineno ));
+                                          " line\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing feature(s) in \"allow <features>\" line\n",
@@ -1231,10 +1220,10 @@ read_config( const char *fname )
 
                                } else if( strcasecmp( cargv[i], "none" ) != 0 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                       LDAP_LOG( CONFIG, CRIT, 
                                                   "%s: line %d: unknown feature %s in "
                                                   "\"allow <features>\" line.\n",
-                                                  fname, lineno, cargv[1] ));
+                                                  fname, lineno, cargv[1] );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                    "%s: line %d: unknown feature %s in \"allow <features>\" line\n",
@@ -1255,9 +1244,9 @@ read_config( const char *fname )
 
                        if ( be != NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONFIG, INFO, 
                                           "%s: line %d: disallow line must appear prior to "
-                                          "database definitions.\n", fname, lineno ));
+                                          "database definitions.\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: disallow line must appear prior to database definitions\n",
@@ -1268,9 +1257,9 @@ read_config( const char *fname )
 
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing feature(s) in \"disallow <features>\""
-                                          " line.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing feature(s) in \"disallow <features>\""
+                                       " line.\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing feature(s) in \"disallow <features>\" line\n",
@@ -1303,10 +1292,10 @@ read_config( const char *fname )
 
                                } else if( strcasecmp( cargv[i], "none" ) != 0 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                       LDAP_LOG( CONFIG, CRIT, 
                                                "%s: line %d: unknown feature %s in "
                                                "\"disallow <features>\" line.\n",
-                                               fname, lineno, cargv[i] ));
+                                               fname, lineno, cargv[i] );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                    "%s: line %d: unknown feature %s in \"disallow <features>\" line\n",
@@ -1327,9 +1316,9 @@ read_config( const char *fname )
 
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: missing feature(s) in "
-                                          "\"require <features>\" line.\n", fname, lineno ));
+                                          "\"require <features>\" line.\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing feature(s) in \"require <features>\" line\n",
@@ -1359,10 +1348,10 @@ read_config( const char *fname )
 
                                } else if( strcasecmp( cargv[i], "none" ) != 0 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                       LDAP_LOG( CONFIG, CRIT, 
                                                   "%s: line %d: unknown feature %s in "
-                                                  "\"require <features>\" line.\n",
-                                                  fname, lineno ));
+                                                  "\"require <features>\" line.\n", 
+                                                  fname, lineno , cargv[i] );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                    "%s: line %d: unknown feature %s in \"require <features>\" line\n",
@@ -1385,9 +1374,9 @@ read_config( const char *fname )
 
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing factor(s) in \"security <factors>\""
-                                          " line.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing factor(s) in \"security <factors>\""
+                                       " line.\n", fname, lineno ,0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing factor(s) in \"security <factors>\" line\n",
@@ -1454,10 +1443,10 @@ read_config( const char *fname )
 
                                } else {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                       LDAP_LOG( CONFIG, CRIT, 
                                                   "%s: line %d: unknown factor %S in "
                                                   "\"security <factors>\" line.\n",
-                                                  fname, lineno, cargv[1] ));
+                                                  fname, lineno, cargv[1] );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                    "%s: line %d: unknown factor %s in \"security <factors>\" line\n",
@@ -1471,9 +1460,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "referral" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing URL in \"referral <URL>\""
-                                          " line.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing URL in \"referral <URL>\""
+                                       " line.\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                    "%s: line %d: missing URL in \"referral <URL>\" line\n",
@@ -1485,9 +1474,9 @@ read_config( const char *fname )
 
                        if( validate_global_referral( cargv[1] ) ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT, "%s: line %d: "
-                                       "invalid URL (%s) in \"referral\" line.\n",
-                                       fname, lineno, cargv[1] ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: invalid URL (%s) in \"referral\" line.\n",
+                                       fname, lineno, cargv[1]  );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "invalid URL (%s) in \"referral\" line.\n",
@@ -1505,9 +1494,9 @@ read_config( const char *fname )
                         FILE *logfile;
                         if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: Error in logfile directive, "
-                                          "\"logfile <filename>\"\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: Error in logfile directive, "
+                                       "\"logfile <filename>\"\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                       "%s: line %d: Error in logfile directive, \"logfile filename\"\n",
@@ -1517,7 +1506,7 @@ read_config( const char *fname )
                                return( 1 );
                         }
                         logfile = fopen( cargv[1], "w" );
-                        if ( logfile != NULL ) lutil_debug_file( logfile );
+                        if ( logfile != NULL ) lutil_debug_file( logfile  );
 
 #endif
                /* start of a new database definition */
@@ -1525,9 +1514,9 @@ read_config( const char *fname )
                         int level;
                        if ( cargc < 3 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: Error in debug directive, "
-                                          "\"debug <subsys> <level>\"\n", fname, lineno ));
+                                          "\"debug <subsys> <level>\"\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: Error in debug directive, \"debug subsys level\"\n",
@@ -1554,9 +1543,9 @@ read_config( const char *fname )
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                          "%s: line %d: old objectclass format not supported\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, INFO, 
+                                       "%s: line %d: old objectclass format not supported\n",
+                                       fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                       "%s: line %d: old objectclass format not supported.\n",
@@ -1576,9 +1565,9 @@ read_config( const char *fname )
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                          "%s: line %d: old attribute type format not supported.\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, INFO, 
+                                       "%s: line %d: old attribute type format not supported.\n",
+                                       fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
     "%s: line %d: old attribute type format not supported.\n",
@@ -1591,10 +1580,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "schemacheck" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing on|off in "
-                                          "\"schemacheck <on|off>\" line.\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing on|off in \"schemacheck <on|off>\""
+                                       " line.\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
     "%s: line %d: missing on|off in \"schemacheck <on|off>\" line\n",
@@ -1605,9 +1593,9 @@ read_config( const char *fname )
                        }
                        if ( strcasecmp( cargv[1], "off" ) == 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                       "%s: line %d: schema checking disabled! your mileage may vary!\n",
-                                       fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: schema checking disabled! your mileage may "
+                                       "vary!\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: schema checking disabled! your mileage may vary!\n",
@@ -1626,9 +1614,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "loglevel" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing level in \"loglevel <level>\""
-                                          " line.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing level in \"loglevel <level>\""
+                                       " line.\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                    "%s: line %d: missing level in \"loglevel <level>\" line\n",
@@ -1648,9 +1636,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "replica" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing host in \"replica "
-                                          " <host[:port]\" line\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing host in \"replica "
+                                       " <host[:port]\" line\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing host in \"replica <host[:port]>\" line\n",
@@ -1661,9 +1649,9 @@ read_config( const char *fname )
                        }
                        if ( be == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                          "%s: line %d: replica line must appear inside "
-                                          "a database definition.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, INFO, 
+                                           "%s: line %d: replica line must appear inside "
+                                           "a database definition.\n", fname, lineno, 0);
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: replica line must appear inside a database definition\n",
@@ -1684,9 +1672,9 @@ read_config( const char *fname )
                                }
                                if ( i == cargc ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                               "%s: line %d: missing host in \"replica\" line\n",
-                                               fname, lineno ));
+                                       LDAP_LOG( CONFIG, INFO, 
+                                               "%s: line %d: missing host in \"replica\" line\n", 
+                                               fname, lineno , 0 );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                    "%s: line %d: missing host in \"replica\" line\n",
@@ -1696,11 +1684,11 @@ read_config( const char *fname )
 
                                } else if ( nr == -1 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_INFO,
+                                       LDAP_LOG( CONFIG, INFO, 
                                                   "%s: line %d: unable to add"
-                                                  " replica \"%s\"\n",
+                                                  " replica \"%s\"\n",
                                                   fname, lineno, 
-                                                  cargv[i] + 5 ));
+                                                  cargv[i] + 5 );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                "%s: line %d: unable to add replica \"%s\"\n",
@@ -1714,9 +1702,10 @@ read_config( const char *fname )
                                                        switch ( add_replica_suffix( be, nr, cargv[i] + 7 ) ) {
                                                        case 1:
 #ifdef NEW_LOGGING
-                                                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                                                               "%s: line %d: suffix \"%s\" in \"replica\" line is not valid for backend (ignored)\n",
-                                                                               fname, lineno, cargv[i] + 7 ));
+                                                               LDAP_LOG( CONFIG, INFO, 
+                                                                       "%s: line %d: suffix \"%s\" in \"replica\""
+                                                                       " line is not valid for backend(ignored)\n",
+                                                                       fname, lineno, cargv[i] + 7 );
 #else
                                                                Debug( LDAP_DEBUG_ANY,
                                                                                "%s: line %d: suffix \"%s\" in \"replica\" line is not valid for backend (ignored)\n",
@@ -1726,9 +1715,10 @@ read_config( const char *fname )
 
                                                        case 2:
 #ifdef NEW_LOGGING
-                                                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                                                                       "%s: line %d: unable to normalize suffix in \"replica\" line (ignored)\n",
-                                                                                       fname, lineno ));
+                                                               LDAP_LOG( CONFIG, INFO, 
+                                                                       "%s: line %d: unable to normalize suffix"
+                                                                       " in \"replica\" line (ignored)\n",
+                                                                       fname, lineno , 0 );
 #else
                                                                Debug( LDAP_DEBUG_ANY,
                                                                                 "%s: line %d: unable to normalize suffix in \"replica\" line (ignored)\n",
@@ -1752,9 +1742,10 @@ read_config( const char *fname )
 
                                                        if ( add_replica_attrs( be, nr, arg + 1, exclude ) ) {
 #ifdef NEW_LOGGING
-                                                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                                                               "%s: line %d: attribute \"%s\" in \"replica\" line is unknown\n",
-                                                                               fname, lineno, arg + 1 ));
+                                                               LDAP_LOG( CONFIG, INFO, 
+                                                                       "%s: line %d: attribute \"%s\" in "
+                                                                       "\"replica\" line is unknown\n",
+                                                                       fname, lineno, arg + 1 ); 
 #else
                                                                Debug( LDAP_DEBUG_ANY,
                                                                                "%s: line %d: attribute \"%s\" in \"replica\" line is unknown\n",
@@ -1771,9 +1762,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "updatedn" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing dn in \"updatedn <dn>\""
-                                          " line.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing dn in \"updatedn <dn>\""
+                                       " line.\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                    "%s: line %d: missing dn in \"updatedn <dn>\" line\n",
@@ -1784,10 +1775,10 @@ read_config( const char *fname )
                        }
                        if ( be == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                          "%s: line %d: updatedn line must appear inside "
-                                          "a database definition\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, INFO, 
+                                       "%s: line %d: updatedn line must appear inside "
+                                       "a database definition\n", 
+                                       fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: updatedn line must appear inside a database definition\n",
@@ -1806,9 +1797,9 @@ read_config( const char *fname )
                                rc = dnNormalize2( NULL, &dn, &be->be_update_ndn );
                                if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                                       LDAP_LOG( CONFIG, CRIT, 
                                                "%s: line %d: updatedn DN is invalid.\n",
-                                               fname, lineno ));
+                                               fname, lineno , 0 );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                                "%s: line %d: updatedn DN is invalid\n",
@@ -1821,9 +1812,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "updateref" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT, "%s: line %d: "
+                               LDAP_LOG( CONFIG, CRIT, "%s: line %d: "
                                        "missing url in \"updateref <ldapurl>\" line.\n",
-                                       fname, lineno ));
+                                       fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "missing url in \"updateref <ldapurl>\" line\n",
@@ -1834,9 +1825,9 @@ read_config( const char *fname )
                        }
                        if ( be == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: updateref"
+                               LDAP_LOG( CONFIG, INFO, "%s: line %d: updateref"
                                        " line must appear inside a database definition\n",
-                                       fname, lineno ));
+                                       fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: updateref"
                                        " line must appear inside a database definition\n",
@@ -1846,9 +1837,9 @@ read_config( const char *fname )
 
                        } else if ( !be->be_update_ndn.bv_len ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO, "%s: line %d: "
+                               LDAP_LOG( CONFIG, INFO, "%s: line %d: "
                                        "updateref line must come after updatedn.\n",
-                                       fname, lineno ));
+                                       fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "updateref line must after updatedn.\n",
@@ -1859,9 +1850,9 @@ read_config( const char *fname )
 
                        if( validate_global_referral( cargv[1] ) ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT, "%s: line %d: "
+                               LDAP_LOG( CONFIG, CRIT, "%s: line %d: "
                                        "invalid URL (%s) in \"updateref\" line.\n",
-                                       fname, lineno, cargv[1] ));
+                                       fname, lineno, cargv[1] );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "invalid URL (%s) in \"updateref\" line.\n",
@@ -1878,9 +1869,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "replogfile" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing filename in \"replogfile <filename>\""
-                                          " line.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing filename in \"replogfile <filename>\""
+                                       " line.\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing filename in \"replogfile <filename>\" line\n",
@@ -1899,9 +1890,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "rootDSE" ) == 0) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT, "%s: line %d: "
+                               LDAP_LOG( CONFIG, CRIT, "%s: line %d: "
                                        "missing filename in \"rootDSE <filename>\" line.\n",
-                                       fname, lineno ));
+                                       fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "missing filename in \"rootDSE <filename>\" line.\n",
@@ -1912,9 +1903,9 @@ read_config( const char *fname )
 
                        if( read_root_dse_file( cargv[1] ) ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT, "%s: line %d: "
+                               LDAP_LOG( CONFIG, CRIT, "%s: line %d: "
                                        "could not read \"rootDSE <filename>\" line.\n",
-                                       fname, lineno ));
+                                       fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "%s: line %d: "
                                        "could not read \"rootDSE <filename>\" line\n",
@@ -1927,9 +1918,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "lastmod" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                           "%s: line %d: missing on|off in \"lastmod <on|off>\""
-                                          " line.\n", fname, lineno ));
+                                          " line.\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing on|off in \"lastmod <on|off>\" line\n",
@@ -1973,9 +1964,9 @@ read_config( const char *fname )
                        int i;
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing timeout value in "
-                                          "\"idletimeout <seconds>\" line.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing timeout value in "
+                                       "\"idletimeout <seconds>\" line.\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing timeout value in \"idletimeout <seconds>\" line\n",
@@ -1989,10 +1980,9 @@ read_config( const char *fname )
 
                        if( i < 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: timeout value (%d) invalid "
-                                          "\"idletimeout <seconds>\" line.\n",
-                                          fname, lineno, i ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: timeout value (%d) invalid "
+                                       "\"idletimeout <seconds>\" line.\n", fname, lineno, i );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: timeout value (%d) invalid \"idletimeout <seconds>\" line\n",
@@ -2008,9 +1998,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "include" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing filename in \"include "
-                                          "<filename>\" line.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing filename in \"include "
+                                       "<filename>\" line.\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
     "%s: line %d: missing filename in \"include <filename>\" line\n",
@@ -2033,9 +2023,9 @@ read_config( const char *fname )
                } else if ( strcasecmp( cargv[0], "srvtab" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                          "%s: line %d: missing filename in \"srvtab "
-                                          "<filename>\" line.\n", fname, lineno ));
+                               LDAP_LOG( CONFIG, CRIT, 
+                                       "%s: line %d: missing filename in \"srvtab "
+                                       "<filename>\" line.\n", fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing filename in \"srvtab <filename>\" line\n",
@@ -2050,9 +2040,9 @@ read_config( const char *fname )
                 } else if (strcasecmp( cargv[0], "moduleload") == 0 ) {
                    if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                          LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                     "%s: line %d: missing filename in \"moduleload "
-                                     "<filename>\" line.\n", fname, lineno ));
+                          LDAP_LOG( CONFIG, INFO, 
+                                  "%s: line %d: missing filename in \"moduleload "
+                                  "<filename>\" line.\n", fname, lineno , 0 );
 #else
                       Debug( LDAP_DEBUG_ANY,
                              "%s: line %d: missing filename in \"moduleload <filename>\" line\n",
@@ -2063,9 +2053,9 @@ read_config( const char *fname )
                    }
                    if (module_load(cargv[1], cargc - 2, (cargc > 2) ? cargv + 2 : NULL)) {
 #ifdef NEW_LOGGING
-                          LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                     "%s: line %d: failed to load or initialize module %s\n",
-                                     fname, lineno, cargv[1] ));
+                          LDAP_LOG( CONFIG, CRIT, 
+                                  "%s: line %d: failed to load or initialize module %s\n",
+                                  fname, lineno, cargv[1] );
 #else
                       Debug( LDAP_DEBUG_ANY,
                              "%s: line %d: failed to load or initialize module %s\n",
@@ -2077,9 +2067,9 @@ read_config( const char *fname )
                 } else if (strcasecmp( cargv[0], "modulepath") == 0 ) {
                    if ( cargc != 2 ) {
 #ifdef NEW_LOGGING
-                          LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                     "%s: line %d: missing path in \"modulepath <path>\""
-                                     " line\n", fname, lineno ));
+                          LDAP_LOG( CONFIG, INFO, 
+                                 "%s: line %d: missing path in \"modulepath <path>\""
+                                 " line\n", fname, lineno , 0 );
 #else
                       Debug( LDAP_DEBUG_ANY,
                              "%s: line %d: missing path in \"modulepath <path>\" line\n",
@@ -2090,9 +2080,9 @@ read_config( const char *fname )
                    }
                    if (module_path( cargv[1] )) {
 #ifdef NEW_LOGGING
-                          LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                                     "%s: line %d: failed to set module search path to %s.\n",
-                                     fname, lineno, cargv[1] ));
+                          LDAP_LOG( CONFIG, CRIT, 
+                                 "%s: line %d: failed to set module search path to %s.\n",
+                                 fname, lineno, cargv[1] );
 #else
                           Debug( LDAP_DEBUG_ANY,
                                  "%s: line %d: failed to set module search path to %s\n",
@@ -2167,10 +2157,9 @@ read_config( const char *fname )
 #ifdef SLAPD_RLOOKUPS
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                          "%s: line %d: reverse-lookup: "
-                                          "missing \"on\" or \"off\"\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, INFO, 
+                                       "%s: line %d: reverse-lookup: missing \"on\" or \"off\"\n",
+                                       fname, lineno , 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: reverse-lookup: missing \"on\" or \"off\"\n",
@@ -2185,11 +2174,9 @@ read_config( const char *fname )
                                use_reverse_lookup = 0;
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                          "%s: line %d: reverse-lookup: "
-                                          "must be \"on\" (default) "
-                                          "or \"off\"\n",
-                                          fname, lineno ));
+                               LDAP_LOG( CONFIG, INFO, 
+                                       "%s: line %d: reverse-lookup: "
+                                       "must be \"on\" (default) or \"off\"\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: reverse-lookup: must be \"on\" (default) or \"off\"\n",
@@ -2200,10 +2187,9 @@ read_config( const char *fname )
 
 #else /* !SLAPD_RLOOKUPS */
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                  "%s: line %d: reverse lookups "
-                                  "are not configured (ignored).\n",
-                                  fname, lineno ));
+                       LDAP_LOG( CONFIG, INFO, 
+                               "%s: line %d: reverse lookups "
+                               "are not configured (ignored).\n", fname, lineno , 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
 "%s: line %d: reverse lookups are not configured (ignored).\n",
@@ -2216,10 +2202,10 @@ read_config( const char *fname )
                        if ( bi != NULL ) {
                                if ( bi->bi_config == 0 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                                  "%s: line %d: unknown directive \"%s\" inside "
-                                                  "backend info definition (ignored).\n",
-                                                  fname, lineno, cargv[0] ));
+                                       LDAP_LOG( CONFIG, INFO, 
+                                               "%s: line %d: unknown directive \"%s\" inside "
+                                               "backend info definition (ignored).\n",
+                                               fname, lineno, cargv[0] );
 #else
                                        Debug( LDAP_DEBUG_ANY,
 "%s: line %d: unknown directive \"%s\" inside backend info definition (ignored)\n",
@@ -2236,10 +2222,10 @@ read_config( const char *fname )
                        } else if ( be != NULL ) {
                                if ( be->be_config == 0 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                                  "%s: line %d: uknown directive \"%s\" inside "
-                                                  "backend database definition (ignored).\n",
-                                                  fname, lineno, cargv[0] ));
+                                       LDAP_LOG( CONFIG, INFO, 
+                                               "%s: line %d: uknown directive \"%s\" inside "
+                                               "backend database definition (ignored).\n",
+                                               fname, lineno, cargv[0] );
 #else
                                        Debug( LDAP_DEBUG_ANY,
 "%s: line %d: unknown directive \"%s\" inside backend database definition (ignored)\n",
@@ -2255,10 +2241,10 @@ read_config( const char *fname )
                                }
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_INFO,
-                                          "%s: line %d: unknown directive \"%s\" outside backend "
-                                          "info and database definitions (ignored).\n",
-                                          fname, lineno, cargv[0] ));
+                               LDAP_LOG( CONFIG, INFO, 
+                                       "%s: line %d: unknown directive \"%s\" outside backend "
+                                       "info and database definitions (ignored).\n",
+                                       fname, lineno, cargv[0] );
 #else
                                Debug( LDAP_DEBUG_ANY,
 "%s: line %d: unknown directive \"%s\" outside backend info and database definitions (ignored)\n",
@@ -2289,23 +2275,29 @@ fp_parse_line(
        token = strtok_quote( line, " \t" );
 
        logline = line;
-       if ( token &&
-            (strcasecmp( token, "rootpw" ) == 0 ||
-             strcasecmp( token, "replica" ) == 0 || /* contains "credentials" */
-             strcasecmp( token, "bindpw" ) == 0 ||       /* used in back-ldap */
-             strcasecmp( token, "pseudorootpw" ) == 0 || /* used in back-meta */
-                 strcasecmp( token, "dbpasswd" ) == 0 ) )    /* used in back-sql */
-               sprintf( logline = logbuf, "%s ***", token );
-       if ( strtok_quote_ptr )
+
+       if ( token && ( strcasecmp( token, "rootpw" ) == 0 ||
+               strcasecmp( token, "replica" ) == 0 ||          /* contains "credentials" */
+               strcasecmp( token, "bindpw" ) == 0 ||           /* used in back-ldap */
+               strcasecmp( token, "pseudorootpw" ) == 0 ||     /* used in back-meta */
+               strcasecmp( token, "dbpasswd" ) == 0 ) )        /* used in back-sql */
+       {
+               snprintf( logline = logbuf, sizeof logbuf, "%s ***", token );
+       }
+
+       if ( strtok_quote_ptr ) {
                *strtok_quote_ptr = ' ';
+       }
+
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "config", LDAP_LEVEL_DETAIL1,
-                  "line %d (%s)\n", lineno, logline ));
+       LDAP_LOG( CONFIG, DETAIL1, "line %d (%s)\n", lineno, logline , 0 );
 #else
        Debug( LDAP_DEBUG_CONFIG, "line %d (%s)\n", lineno, logline, 0 );
 #endif
-       if ( strtok_quote_ptr )
+
+       if ( strtok_quote_ptr ) {
                *strtok_quote_ptr = '\0';
+       }
 
        for ( ; token != NULL; token = strtok_quote( NULL, " \t" ) ) {
                if ( cargc == cargv_size - 1 ) {
@@ -2314,9 +2306,7 @@ fp_parse_line(
                                            sizeof(*cargv) );
                        if ( tmp == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_ERR,
-                                          "line %d: out of memory\n", 
-                                          lineno ));
+                               LDAP_LOG( CONFIG, ERR, "line %d: out of memory\n", lineno, 0,0 );
 #else
                                Debug( LDAP_DEBUG_ANY, 
                                                "line %d: out of memory\n", 
@@ -2390,18 +2380,18 @@ strtok_quote( char *line, char *sep )
 
 static char    buf[BUFSIZ];
 static char    *line;
-static int     lmax, lcur;
-
-#define CATLINE( buf ) \
-       int     len; \
-       len = strlen( buf ); \
-       while ( lcur + len + 1 > lmax ) { \
-               lmax += BUFSIZ; \
-               line = (char *) ch_realloc( line, lmax ); \
-       } \
-       strcpy( line + lcur, buf ); \
-       lcur += len; \
-}
+static size_t lmax, lcur;
+
+#define CATLINE( buf ) \
+       do { \
+               size_t len = strlen( buf ); \
+               while ( lcur + len + 1 > lmax ) { \
+                       lmax += BUFSIZ; \
+                       line = (char *) ch_realloc( line, lmax ); \
+               } \
+               strcpy( line + lcur, buf ); \
+               lcur += len; \
+       } while( 0 )
 
 static char *
 fp_getline( FILE *fp, int *lineno )
@@ -2469,8 +2459,8 @@ load_ucdata( char *path )
        err = ucdata_load( path ? path : SLAPD_DEFAULT_UCDATA, UCDATA_ALL );
        if ( err ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                          "load_ucdata: Error %d loading ucdata.\n", err ));
+               LDAP_LOG( CONFIG, CRIT, 
+                       "load_ucdata: Error %d loading ucdata.\n", err, 0,0 );
 #else
                Debug( LDAP_DEBUG_ANY, "error loading ucdata (error %d)\n",
                       err, 0, 0 );
index 6425e199f2561e28e8e49ebfa1dca01f64d001f4..8570a4a16322c33c1abb63edf8825240c7c97072 100644 (file)
@@ -74,8 +74,8 @@ int connections_init(void)
 
        if( connections != NULL) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "connections_init:  already initialized.\n" ));
+               LDAP_LOG( CONNECTION, INFO,
+                          "connections_init:  already initialized.\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "connections_init: already initialized.\n",
                        0, 0, 0 );
@@ -90,9 +90,9 @@ int connections_init(void)
 
        if( connections == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "connections_init: allocation (%d * %ld) of connection array failed\n",
-                          dtblsize, (long) sizeof(Connection) ));
+               LDAP_LOG( CONNECTION, ERR,
+                          "connections_init: allocation (%d * %ld) of connection "
+                          "array failed\n", dtblsize, (long) sizeof(Connection), 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "connections_init: allocation (%d*%ld) of connection array failed\n",
@@ -123,8 +123,8 @@ int connections_destroy(void)
 
        if( connections == NULL) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "connections_destroy: nothing to destroy.\n"));
+               LDAP_LOG( CONNECTION, INFO,
+                          "connections_destroy: nothing to destroy.\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "connections_destroy: nothing to destroy.\n",
                        0, 0, 0 );
@@ -208,8 +208,7 @@ static Connection* connection_get( ber_socket_t s )
        Connection *c;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_ENTRY,
-                  "connection_get: socket %ld\n", (long)s ));
+       LDAP_LOG( CONNECTION, ENTRY, "connection_get: socket %ld\n", (long)s, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS,
                "connection_get(%ld)\n",
@@ -273,8 +272,8 @@ static Connection* connection_get( ber_socket_t s )
                        assert( sd == AC_SOCKET_INVALID );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_ARGS,
-                                  "connection_get:  connection %d not used\n", s ));
+                       LDAP_LOG( CONNECTION, ARGS, 
+                               "connection_get:  connection %d not used\n", s, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "connection_get(%d): connection not used\n",
@@ -286,8 +285,8 @@ static Connection* connection_get( ber_socket_t s )
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_RESULTS,
-                          "connection_get: get for %d got connid %lu\n", s, c->c_connid ));
+               LDAP_LOG( CONNECTION, RESULTS, 
+                       "connection_get: get for %d got connid %lu\n", s, c->c_connid, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "connection_get(%d): got connid=%lu\n",
@@ -342,8 +341,8 @@ long connection_init(
 
        if( s == AC_SOCKET_INVALID ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "connection_init: init of socket %ld invalid.\n", (long)s ));
+               LDAP_LOG( CONNECTION, INFO, 
+                          "connection_init: init of socket %ld invalid.\n", (long)s, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                       "connection_init(%ld): invalid.\n",
@@ -394,9 +393,9 @@ long connection_init(
 
        if( c == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
+               LDAP_LOG( CONNECTION, INFO, 
                           "connection_init: skt %d      connection table full (%d/%d)\n",
-                          s, i, dtblsize ));
+                          s, i, dtblsize );
 #else
                Debug( LDAP_DEBUG_ANY,
                                "connection_init(%d): connection table full (%d/%d)\n",
@@ -529,9 +528,9 @@ long connection_init(
                c /* non-NULL */ ) < 0 )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
+               LDAP_LOG( CONNECTION, INFO, 
                           "connection_init: conn %lu  set nonblocking failed\n",
-                          c->c_connid ));
+                          c->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "connection_init(%d, %s): set nonblocking failed\n",
@@ -753,9 +752,9 @@ void connection_closing( Connection *c )
 
                ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_GET_FD, &sd );
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CONNECTION, DETAIL1, 
                           "connection_closing: conn %lu readying socket %d for close.\n",
-                          c->c_connid, sd ));
+                          c->c_connid, sd, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "connection_closing: readying conn=%lu sd=%d for close\n",
@@ -790,9 +789,9 @@ static void connection_close( Connection *c )
        ber_sockbuf_ctrl( c->c_sb, LBER_SB_OPT_GET_FD, &sd );
        if( !LDAP_STAILQ_EMPTY(&c->c_ops) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
+               LDAP_LOG( CONNECTION, DETAIL1, 
                           "connection_close: conn %lu  deferring sd %d\n",
-                          c->c_connid, sd ));
+                          c->c_connid, sd, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "connection_close: deferring conn=%lu sd=%d\n",
@@ -802,9 +801,8 @@ static void connection_close( Connection *c )
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_RESULTS,
-                  "connection_close: conn %lu  sd %d\n",
-                  c->c_connid, sd ));
+       LDAP_LOG( CONNECTION, RESULTS, 
+                  "connection_close: conn %lu  sd %d\n", c->c_connid, sd, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "connection_close: conn=%lu sd=%d\n",
                c->c_connid, sd, 0 );
@@ -922,9 +920,9 @@ connection_operation( void *arg_v )
 
        if( conn->c_sasl_bind_in_progress && tag != LDAP_REQ_BIND ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "connection_operation: conn %lu  SASL bind in progress (tag=%ld).\n",
-                          conn->c_connid, (long)tag ));
+               LDAP_LOG( CONNECTION, ERR, 
+                       "connection_operation: conn %lu SASL bind in progress (tag=%ld).\n",
+                       conn->c_connid, (long)tag, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "connection_operation: "
                        "error: SASL bind in progress (tag=%ld).\n",
@@ -989,9 +987,9 @@ connection_operation( void *arg_v )
 
        default:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
+               LDAP_LOG( CONNECTION, INFO, 
                           "connection_operation: conn %lu  unknown LDAP request 0x%lx\n",
-                          conn->c_connid, tag ));
+                          conn->c_connid, tag, 0  );
 #else
                Debug( LDAP_DEBUG_ANY, "unknown LDAP request 0x%lx\n",
                    tag, 0, 0 );
@@ -1087,6 +1085,7 @@ int connection_read(ber_socket_t s)
 {
        int rc = 0;
        Connection *c;
+
        assert( connections != NULL );
 
        ldap_pvt_thread_mutex_lock( &connections_mutex );
@@ -1096,9 +1095,8 @@ int connection_read(ber_socket_t s)
 
        if( c == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "connection_read: sock %ld no connection\n",
-                          (long)s ));
+               LDAP_LOG( CONNECTION, INFO, 
+                       "connection_read: sock %ld no connection\n", (long)s, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "connection_read(%ld): no connection!\n",
@@ -1114,9 +1112,9 @@ int connection_read(ber_socket_t s)
 
        if( c->c_conn_state == SLAP_C_CLOSING ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "connection_read: conn %lu connection closing, ignoring input\n",
-                          c->c_connid));
+               LDAP_LOG( CONNECTION, INFO, 
+                       "connection_read: conn %lu connection closing, ignoring input\n",
+                       c->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "connection_read(%d): closing, ignoring input for id=%lu\n",
@@ -1128,8 +1126,9 @@ int connection_read(ber_socket_t s)
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                  "connection_read: conn %lu  checking for input.\n", c->c_connid ));
+       LDAP_LOG( CONNECTION, DETAIL1, 
+                  "connection_read: conn %lu  checking for input.\n", 
+                  c->c_connid, 0, 0  );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "connection_read(%d): checking for input on id=%lu\n",
@@ -1146,9 +1145,9 @@ int connection_read(ber_socket_t s)
 #endif
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
+                       LDAP_LOG( CONNECTION, ERR, 
                                   "connection_read: conn %lu  TLS accept error, error %d\n",
-                                  c->c_connid, rc ));
+                                  c->c_connid, rc, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "connection_read(%d): TLS accept error "
@@ -1192,9 +1191,9 @@ int connection_read(ber_socket_t s)
                        rc = dnX509peerNormalize( ssl, &authid );
                        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                               "connection_read: conn %lu unable to get TLS client DN, error %d\n",
-                                       c->c_connid, rc));
+                               LDAP_LOG( CONNECTION, INFO, 
+                                       "connection_read: conn %lu unable to get TLS client DN, "
+                                       "error %d\n", c->c_connid, rc, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE,
                                "connection_read(%d): unable to get TLS client DN "
@@ -1225,9 +1224,9 @@ int connection_read(ber_socket_t s)
 
                if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                                  "connection_read: conn %lu SASL install error %d, closing\n",
-                                  c->c_connid, rc ));
+                       LDAP_LOG( CONNECTION, ERR, 
+                               "connection_read: conn %lu SASL install error %d, closing\n",
+                               c->c_connid, rc, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "connection_read(%d): SASL install error "
@@ -1258,9 +1257,9 @@ int connection_read(ber_socket_t s)
 
        if( rc < 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "connection_read: conn %lu  input error %d, closing.\n",
-                          c->c_connid, rc ));
+               LDAP_LOG( CONNECTION, ERR, 
+                       "connection_read: conn %lu  input error %d, closing.\n",
+                       c->c_connid, rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "connection_read(%d): input error=%d id=%lu, closing.\n",
@@ -1305,9 +1304,9 @@ connection_input(
        if ( conn->c_currentber == NULL && (conn->c_currentber = ber_alloc())
            == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "connection_input: conn %lu  ber_alloc failed.\n", 
-                          conn->c_connid ));
+               LDAP_LOG( CONNECTION, ERR, 
+                       "connection_input: conn %lu  ber_alloc failed.\n", 
+                       conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_alloc failed\n", 0, 0, 0 );
 #endif
@@ -1340,9 +1339,9 @@ connection_input(
                ber_sockbuf_ctrl( conn->c_sb, LBER_SB_OPT_GET_FD, &sd );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "connection_input: conn %lu  ber_get_next failed, errno %d (%s).\n",
-                          conn->c_connid, err, sock_errstr(err) ));
+               LDAP_LOG( CONNECTION, ERR, 
+                       "connection_input: conn %lu  ber_get_next failed, errno %d (%s).\n",
+                       conn->c_connid, err, sock_errstr(err) );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "ber_get_next on fd %d failed errno=%d (%s)\n",
@@ -1364,9 +1363,9 @@ connection_input(
        if ( (tag = ber_get_int( ber, &msgid )) != LDAP_TAG_MSGID ) {
                /* log, close and send error */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "connection_input: conn %lu  ber_get_int returns 0x%lx.\n",
-                          conn->c_connid, tag ));
+               LDAP_LOG( CONNECTION, ERR, 
+                       "connection_input: conn %lu  ber_get_int returns 0x%lx.\n",
+                       conn->c_connid, tag, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_get_int returns 0x%lx\n", tag, 0,
                    0 );
@@ -1378,9 +1377,9 @@ connection_input(
        if ( (tag = ber_peek_tag( ber, &len )) == LBER_ERROR ) {
                /* log, close and send error */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
+               LDAP_LOG( CONNECTION, ERR, 
                           "connection_input: conn %lu  ber_peek_tag returns 0x%lx.\n",
-                          conn->c_connid, tag ));
+                          conn->c_connid, tag, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_peek_tag returns 0x%lx\n", tag, 0,
                    0 );
@@ -1398,9 +1397,9 @@ connection_input(
                }
                if (tag != LDAP_REQ_ABANDON && tag != LDAP_REQ_SEARCH) {
 #ifdef NEW_LOGGING
-                   LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
+                   LDAP_LOG( CONNECTION, ERR, 
                               "connection_input: conn %lu  invalid req for UDP 0x%lx.\n",
-                              conn->c_connid, tag ));
+                              conn->c_connid, tag, 0 );
 #else
                    Debug( LDAP_DEBUG_ANY, "invalid req for UDP 0x%lx\n", tag, 0,
                        0 );
@@ -1432,9 +1431,9 @@ connection_input(
                || conn->c_conn_state == SLAP_C_CLOSING )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "connection_input: conn %lu  deferring operation\n",
-                          conn->c_connid ));
+               LDAP_LOG( CONNECTION, INFO, 
+                       "connection_input: conn %lu  deferring operation\n",
+                       conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "deferring operation\n", 0, 0, 0 );
 #endif
@@ -1472,9 +1471,9 @@ connection_resched( Connection *conn )
 
                if( rc ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                                  "connection_resched: conn %lu  reaquiring locks.\n",
-                                  conn->c_connid ));
+                       LDAP_LOG( CONNECTION, DETAIL1, 
+                               "connection_resched: conn %lu  reaquiring locks.\n",
+                               conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "connection_resched: reaquiring locks conn=%lu sd=%d\n",
@@ -1492,9 +1491,9 @@ connection_resched( Connection *conn )
 
                if( conn->c_conn_state != SLAP_C_CLOSING ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                                  "connection_resched: conn %lu  closed by other thread.\n",
-                                  conn->c_connid ));
+                       LDAP_LOG( CONNECTION, INFO, 
+                               "connection_resched: conn %lu  closed by other thread.\n",
+                               conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "connection_resched: "
                                "closed by other thread conn=%lu sd=%d\n",
@@ -1502,9 +1501,9 @@ connection_resched( Connection *conn )
 #endif
                } else {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                                  "connection_resched: conn %lu  attempting closing.\n",
-                                  conn->c_connid ));
+                       LDAP_LOG( CONNECTION, DETAIL1, 
+                               "connection_resched: conn %lu  attempting closing.\n",
+                               conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "connection_resched: "
                                "attempting closing conn=%lu sd=%d\n",
@@ -1577,9 +1576,9 @@ static int connection_op_activate( Connection *conn, Operation *op )
 
        if ( status != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "connection_op_activate: conn %lu     thread pool submit failed.\n",
-                          conn->c_connid ));
+               LDAP_LOG( CONNECTION, ERR, 
+                       "connection_op_activate: conn %lu        thread pool submit failed.\n",
+                       conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                "ldap_pvt_thread_pool_submit failed (%d)\n", status, 0, 0 );
@@ -1593,6 +1592,7 @@ static int connection_op_activate( Connection *conn, Operation *op )
 int connection_write(ber_socket_t s)
 {
        Connection *c;
+
        assert( connections != NULL );
 
        ldap_pvt_thread_mutex_lock( &connections_mutex );
@@ -1603,8 +1603,8 @@ int connection_write(ber_socket_t s)
 
        if( c == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "connection_write: sock %ld  no connection!\n",(long)s));
+               LDAP_LOG( CONNECTION, ERR, 
+                       "connection_write: sock %ld  no connection!\n", (long)s, 0, 0);
 #else
                Debug( LDAP_DEBUG_ANY,
                        "connection_write(%ld): no connection!\n",
@@ -1618,9 +1618,8 @@ int connection_write(ber_socket_t s)
        c->c_n_write++;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                  "connection_write conn %lu  waking output.\n",
-                  c->c_connid ));
+       LDAP_LOG( CONNECTION, DETAIL1, 
+               "connection_write conn %lu  waking output.\n", c->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "connection_write(%d): waking output for id=%lu\n",
index 16ea8cb6ccc87b76c224fdd30728a7a0a3c446a6..535345c2e208468b85830eb698609e2d09877526 100644 (file)
@@ -132,8 +132,7 @@ int get_ctrls(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-               "get_ctrls: conn %lu\n", conn->c_connid ));
+       LDAP_LOG( OPERATION, ENTRY, "get_ctrls: conn %lu\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> get_ctrls\n", 0, 0, 0 );
 #endif
@@ -203,9 +202,8 @@ int get_ctrls(
 
                if( tag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                               "get_ctrls: conn %lu get OID failed.\n",
-                               conn->c_connid ));
+                       LDAP_LOG( OPERATION, INFO, "get_ctrls: conn %lu get OID failed.\n",
+                               conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "=> get_ctrls: get oid failed.\n",
                                0, 0, 0 );
@@ -225,9 +223,9 @@ int get_ctrls(
 
                        if( tag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                                       "get_ctrls: conn %lu get crit failed.\n",
-                                       conn->c_connid ));
+                               LDAP_LOG( OPERATION, INFO, 
+                                       "get_ctrls: conn %lu get crit failed.\n", 
+                                       conn->c_connid, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_TRACE, "=> get_ctrls: get crit failed.\n",
                                        0, 0, 0 );
@@ -248,11 +246,10 @@ int get_ctrls(
 
                        if( tag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "operation", LDAP_LEVEL_INFO, "get_ctrls: conn %lu: "
+                               LDAP_LOG( OPERATION, INFO, "get_ctrls: conn %lu: "
                                        "%s (%scritical): get value failed.\n",
-                                       conn->c_connid,
-                                       c->ldctl_oid ? c->ldctl_oid : "(NULL)",
-                                       c->ldctl_iscritical ? "" : "non" ));
+                                       conn->c_connid, c->ldctl_oid ? c->ldctl_oid : "(NULL)",
+                                       c->ldctl_iscritical ? "" : "non" );
 #else
                                Debug( LDAP_DEBUG_TRACE, "=> get_ctrls: conn %lu: "
                                        "%s (%scritical): get value failed.\n",
@@ -269,11 +266,10 @@ int get_ctrls(
                }
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+               LDAP_LOG( OPERATION, INFO, 
                        "get_ctrls: conn %lu oid=\"%s\" (%scritical)\n",
-                       conn->c_connid,
-                       c->ldctl_oid ? c->ldctl_oid : "(NULL)",
-                       c->ldctl_iscritical ? "" : "non" ));
+                       conn->c_connid, c->ldctl_oid ? c->ldctl_oid : "(NULL)",
+                       c->ldctl_iscritical ? "" : "non" );
 #else
                Debug( LDAP_DEBUG_TRACE, "=> get_ctrls: oid=\"%s\" (%scritical)\n",
                        c->ldctl_oid ? c->ldctl_oid : "(NULL)",
@@ -355,9 +351,8 @@ int get_ctrls(
 
 return_results:
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_RESULTS,
-               "get_ctrls: conn=%lu    n=%d rc=%d err=%s\n",
-               conn->c_connid, nctrls, rc, errmsg ? errmsg : "" ));
+       LDAP_LOG( OPERATION, RESULTS, 
+               "get_ctrls: n=%d rc=%d err=%s\n", nctrls, rc, errmsg ? errmsg : "" );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= get_ctrls: n=%d rc=%d err=%s\n",
                nctrls, rc, errmsg ? errmsg : "");
@@ -576,9 +571,9 @@ int parseValuesReturnFilter (
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-               "parseValuesReturnFilter: conn %d       vrFilter: %s\n", conn->c_connid,
-               fstr.bv_len ? fstr.bv_val : "empty" ));
+       LDAP_LOG( OPERATION, ARGS, 
+               "parseValuesReturnFilter: conn %d       vrFilter: %s\n", 
+               conn->c_connid, fstr.bv_len ? fstr.bv_val : "empty" , 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "       vrFilter: %s\n",
                fstr.bv_len ? fstr.bv_val : "empty", 0, 0 );
index 1a72f5b070348f87c04c9a8c7088d5cb68160901..c732e1afa68c268f3d15aece89b7307a449d21db 100644 (file)
@@ -33,7 +33,11 @@ int deny_severity = LOG_NOTICE;
 #define LDAPI_MOD_URLEXT               "x-mod"
 #endif /* LDAP_PF_LOCAL */
 
+#ifdef LDAP_PF_INET6
 int slap_inet4or6 = AF_UNSPEC;
+#else
+int slap_inet4or6 = AF_INET;
+#endif
 
 /* globals */
 time_t starttime;
@@ -103,7 +107,7 @@ void slapd_slp_init( const char* urls ) {
                                slapd_srvurls[i] = (char *) realloc( slapd_srvurls[i],
                                        strlen( host ) +
                                        sizeof( LDAP_SRVTYPE_PREFIX ) );
-                               strcpy( slap_strcopy(slapd_srvurls[i],
+                               strcpy( lutil_strcopy(slapd_srvurls[i],
                                        LDAP_SRVTYPE_PREFIX ), host );
 
                                ch_free( host );
@@ -115,7 +119,7 @@ void slapd_slp_init( const char* urls ) {
                                slapd_srvurls[i] = (char *) realloc( slapd_srvurls[i],
                                        strlen( host ) +
                                        sizeof( LDAPS_SRVTYPE_PREFIX ) );
-                               strcpy( slap_strcopy(slapd_srvurls[i],
+                               strcpy( lutil_strcopy(slapd_srvurls[i],
                                        LDAPS_SRVTYPE_PREFIX ), host );
 
                                ch_free( host );
@@ -200,11 +204,10 @@ static void slapd_add(ber_socket_t s) {
        FD_SET( s, &slap_daemon.sd_readers );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                  "slapd_add: added %ld%s%s\n",
-                  (long)s,
-                  FD_ISSET(s, &slap_daemon.sd_readers) ? "r" : "",
-                  FD_ISSET(s, &slap_daemon.sd_writers) ? "w" : "" ));
+       LDAP_LOG( CONNECTION, DETAIL1, 
+               "slapd_add: added %ld%s%s\n", (long)s,
+               FD_ISSET(s, &slap_daemon.sd_readers) ? "r" : "",
+               FD_ISSET(s, &slap_daemon.sd_writers) ? "w" : "" );
 #else
        Debug( LDAP_DEBUG_CONNS, "daemon: added %ld%s%s\n",
                (long) s,
@@ -223,11 +226,10 @@ void slapd_remove(ber_socket_t s, int wake) {
        slap_daemon.sd_nactives--;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                  "slapd_remove: removing %ld%s%s\n",
-                  (long) s,
-                  FD_ISSET(s, &slap_daemon.sd_readers) ? "r" : "",
-                  FD_ISSET(s, &slap_daemon.sd_writers) ? "w" : ""  ));
+       LDAP_LOG( CONNECTION, DETAIL1, 
+               "slapd_remove: removing %ld%s%s\n", (long) s,
+               FD_ISSET(s, &slap_daemon.sd_readers) ? "r" : "",
+               FD_ISSET(s, &slap_daemon.sd_writers) ? "w" : ""  );
 #else
        Debug( LDAP_DEBUG_CONNS, "daemon: removing %ld%s%s\n",
                (long) s,
@@ -286,8 +288,7 @@ void slapd_set_read(ber_socket_t s, int wake) {
 
 static void slapd_close(ber_socket_t s) {
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                  "slapd_close: closing %ld\n", (long)s ));
+       LDAP_LOG( CONNECTION, DETAIL1, "slapd_close: closing %ld\n", (long)s, 0, 0);
 #else
        Debug( LDAP_DEBUG_CONNS, "daemon: closing %ld\n",
                (long) s, 0, 0 );
@@ -391,9 +392,9 @@ static int slap_get_listener_addresses(
                if ( strlen(host) >
                     (sizeof(((struct sockaddr_un *)*sap)->sun_path) - 1) ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                                  "slap_get_listener_addresses: domain socket path (%s) too long in URL\n",
-                                  host ));
+                       LDAP_LOG( CONNECTION, INFO, 
+                               "slap_get_listener_addresses: domain socket path (%s) "
+                               "too long in URL\n", host, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                               "daemon: domain socket path (%s) too long in URL",
@@ -421,9 +422,9 @@ static int slap_get_listener_addresses(
 
                if ( (err = getaddrinfo(host, serv, &hints, &res)) ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
+                       LDAP_LOG( CONNECTION, INFO, 
                                   "slap_get_listener_addresses: getaddrinfo failed: %s\n",
-                                  AC_GAI_STRERROR(err) ));
+                                  AC_GAI_STRERROR(err), 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "daemon: getaddrinfo failed: %s\n",
                                AC_GAI_STRERROR(err), 0, 0);
@@ -446,9 +447,9 @@ static int slap_get_listener_addresses(
                for ( sai=res; sai; sai=sai->ai_next ) {
                        if( sai->ai_addr == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONNECTION, INFO,
                                        "slap_get_listener_addresses: "
-                                       "getaddrinfo ai_addr is NULL?\n" ));
+                                       "getaddrinfo ai_addr is NULL?\n", 0, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "slap_get_listener_addresses: "
                                        "getaddrinfo ai_addr is NULL?\n", 0, 0, 0 );
@@ -503,9 +504,8 @@ static int slap_get_listener_addresses(
                        he = gethostbyname( host );
                        if( he == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                                          "slap_get_listener_addresses: invalid host %s\n",
-                                          host ));
+                               LDAP_LOG( CONNECTION, INFO, 
+                                       "slap_get_listener_addresses: invalid host %s\n", host, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                       "daemon: invalid host %s", host, 0, 0);
@@ -560,6 +560,7 @@ static int slap_open_listener(
        int err, addrlen = 0;
        struct sockaddr **sal, **psal;
        int socktype = SOCK_STREAM;     /* default to COTS */
+
 #ifdef LDAP_PF_LOCAL
        mode_t  perms = S_IRWXU;
        int     crit = 1;
@@ -569,9 +570,9 @@ static int slap_open_listener(
 
        if( rc != LDAP_URL_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "slap_open_listener: listen URL \"%s\" parse error %d\n",
-                          url, rc ));
+               LDAP_LOG( CONNECTION, ERR, 
+                       "slap_open_listener: listen URL \"%s\" parse error %d\n",
+                       url, rc , 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "daemon: listen URL \"%s\" parse error=%d\n",
@@ -583,9 +584,8 @@ static int slap_open_listener(
 #ifndef HAVE_TLS
        if( ldap_pvt_url_scheme2tls( lud->lud_scheme ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "slap_open_listener: TLS is not supported (%s)\n",
-                          url ));
+               LDAP_LOG( CONNECTION, INFO, 
+                          "slap_open_listener: TLS is not supported (%s)\n", url, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "daemon: TLS not supported (%s)\n",
@@ -624,9 +624,8 @@ static int slap_open_listener(
 #else
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "slap_open_listener: URL scheme is not supported: %s\n",
-                          url ));
+               LDAP_LOG( CONNECTION, INFO, 
+                       "slap_open_listener: URL scheme is not supported: %s\n", url, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "daemon: URL scheme not supported: %s",
                        url, 0, 0);
@@ -684,9 +683,9 @@ static int slap_open_listener(
                if ( l.sl_sd == AC_SOCKET_INVALID ) {
                        int err = sock_errno();
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                                  "slap_open_listener: socket() failed errno=%d (%s)\n",
-                                  err, sock_errstr(err) ));
+                       LDAP_LOG( CONNECTION, ERR, 
+                               "slap_open_listener: socket() failed errno=%d (%s)\n",
+                               err, sock_errstr(err), 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "daemon: socket() failed errno=%d (%s)\n", err,
@@ -698,9 +697,9 @@ static int slap_open_listener(
 #ifndef HAVE_WINSOCK
                if ( l.sl_sd >= dtblsize ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                                  "slap_open_listener: listener descriptor %ld is too great %ld\n",
-                                  (long)l.sl_sd, (long)dtblsize ));
+                       LDAP_LOG( CONNECTION, ERR, 
+                               "slap_open_listener: listener descriptor %ld is too "
+                               "great %ld\n", (long)l.sl_sd, (long)dtblsize, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                               "daemon: listener descriptor %ld is too great %ld\n",
@@ -725,9 +724,10 @@ static int slap_open_listener(
                        if ( rc == AC_SOCKET_ERROR ) {
                                int err = sock_errno();
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                                          "slap_open_listener: setsockopt( %ld, SO_REUSEADDR ) failed errno %d (%s)\n",
-                                          (long)l.sl_sd, err, sock_errstr(err) ));
+                               LDAP_LOG( CONNECTION, INFO, 
+                                       "slap_open_listener: setsockopt( %ld, SO_REUSEADDR ) "
+                                       "failed errno %d (%s)\n", (long)l.sl_sd, err, 
+                                       sock_errstr(err) );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                       "slapd(%ld): setsockopt(SO_REUSEADDR) failed errno=%d (%s)\n",
@@ -751,9 +751,9 @@ static int slap_open_listener(
                        if ( rc == AC_SOCKET_ERROR ) {
                                int err = sock_errno();
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
+                               LDAP_LOG( CONNECTION, INFO,
                                           "slap_open_listener: setsockopt( %ld, IPV6_V6ONLY ) failed errno %d (%s)\n",
-                                          (long)l.sl_sd, err, sock_errstr(err) ));
+                                          (long)l.sl_sd, err, sock_errstr(err) );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                       "slapd(%ld): setsockopt(IPV6_V6ONLY) failed errno=%d (%s)\n",
@@ -774,9 +774,9 @@ static int slap_open_listener(
                if (bind(l.sl_sd, *sal, addrlen)) {
                        err = sock_errno();
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "slap_open_listener: bind(%ld) failed errno=%d (%s)\n",
-                          (long)l.sl_sd, err, sock_errstr(err) ));
+               LDAP_LOG( CONNECTION, INFO, 
+                       "slap_open_listener: bind(%ld) failed errno=%d (%s)\n",
+                       (long)l.sl_sd, err, sock_errstr(err) );
 #else
                Debug( LDAP_DEBUG_ANY, "daemon: bind(%ld) failed errno=%d (%s)\n",
                       (long) l.sl_sd, err, sock_errstr(err) );
@@ -793,9 +793,9 @@ static int slap_open_listener(
                if ( chmod( addr, perms ) < 0 && crit ) {
                        int err = sock_errno();
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                                  "slap_open_listener: fchmod(%ld) failed errno=%d (%s)\n",
-                                  (long)l.sl_sd, err, sock_errstr(err) ));
+                       LDAP_LOG( CONNECTION, INFO, 
+                               "slap_open_listener: fchmod(%ld) failed errno=%d (%s)\n",
+                               (long)l.sl_sd, err, sock_errstr(err) );
 #else
                        Debug( LDAP_DEBUG_ANY, "daemon: fchmod(%ld) failed errno=%d (%s)",
                               (long) l.sl_sd, err, sock_errstr(err) );
@@ -838,9 +838,9 @@ static int slap_open_listener(
 
        default:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "slap_open_listener: unsupported address family (%d)\n",
-                          (int)(*sal)->sa_family ));
+               LDAP_LOG( CONNECTION, INFO, 
+                       "slap_open_listener: unsupported address family (%d)\n",
+                       (int)(*sal)->sa_family, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "daemon: unsupported address family (%d)\n",
                        (int) (*sal)->sa_family, 0, 0 );
@@ -862,8 +862,8 @@ static int slap_open_listener(
 
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_RESULTS,
-                  "slap_open_listener: daemon initialized %s\n", l.sl_url ));
+       LDAP_LOG( CONNECTION, RESULTS, 
+                       "slap_open_listener: daemon initialzed %s\n", l.sl_url, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "daemon: initialized %s\n",
                l.sl_url, 0, 0 );
@@ -880,9 +880,8 @@ int slapd_daemon_init( const char *urls )
        char **u;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_ARGS,
-                  "slapd_daemon_init: %s\n",
-                  urls ? urls : "<null>" ));
+       LDAP_LOG( CONNECTION, ARGS, 
+               "slapd_daemon_init: %s\n", urls ? urls : "<null>", 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "daemon_init: %s\n",
                urls ? urls : "<null>", 0, 0 );
@@ -912,8 +911,8 @@ int slapd_daemon_init( const char *urls )
         */
        if( (rc = lutil_pair( wake_sds )) < 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "slap_daemon_init: lutil_pair() failed rc=%d\n", rc ));
+               LDAP_LOG( CONNECTION, ERR, 
+                       "slap_daemon_init: lutil_pair() failed rc=%d\n", rc, 0, 0);
 #else
                Debug( LDAP_DEBUG_ANY,
                        "daemon: lutil_pair() failed rc=%d\n", rc, 0, 0 );
@@ -932,8 +931,8 @@ int slapd_daemon_init( const char *urls )
 
        if( u == NULL || u[0] == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                          "slap_daemon_init: no urls (%s) provided.\n", urls ));
+               LDAP_LOG( CONNECTION, ERR, 
+                       "slap_daemon_init: no urls (%s) provided.\n", urls, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "daemon_init: no urls (%s) provided.\n",
                        urls, 0, 0 );
@@ -943,8 +942,8 @@ int slapd_daemon_init( const char *urls )
 
        for( i=0; u[i] != NULL; i++ ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                          "slap_daemon_init: listen on %s\n.", u[i] ));
+               LDAP_LOG( CONNECTION, DETAIL1, 
+                       "slap_daemon_init: listen on %s\n.", u[i], 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "daemon_init: listen on %s\n",
                        u[i], 0, 0 );
@@ -953,8 +952,8 @@ int slapd_daemon_init( const char *urls )
 
        if( i == 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                          "slap_daemon_init: no listeners to open (%s)\n", urls ));
+               LDAP_LOG( CONNECTION, INFO, 
+                        "slap_daemon_init: no listeners to open (%s)\n", urls, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "daemon_init: no listeners to open (%s)\n",
                        urls, 0, 0 );
@@ -964,8 +963,8 @@ int slapd_daemon_init( const char *urls )
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                  "slap_daemon_init: %d listeners to open...\n", i ));
+       LDAP_LOG( CONNECTION, INFO, 
+               "slap_daemon_init: %d listeners to open...\n", i, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "daemon_init: %d listeners to open...\n",
                i, 0, 0 );
@@ -981,8 +980,8 @@ int slapd_daemon_init( const char *urls )
        slap_listeners[j] = NULL;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                  "slap_daemon_init: %d listeners opened\n", i ));
+       LDAP_LOG( CONNECTION, DETAIL1, 
+               "slap_daemon_init: %d listeners opened\n", i, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "daemon_init: %d listeners opened\n",
                i, 0, 0 );
@@ -1096,8 +1095,8 @@ slapd_daemon_task(
                                        if ( i < l ) {
                                                /* We are already listening to in6addr_any */
 #ifdef NEW_LOGGING
-                                               LDAP_LOG(( "connection", LDAP_LEVEL_WARNING,
-                                                          "slapd_daemon_task: Attempt to listen to 0.0.0.0 failed, already listening on ::, assuming IPv4 included\n" ));
+                                               LDAP_LOG(CONNECTION, WARNING,
+                                                          "slapd_daemon_task: Attempt to listen to 0.0.0.0 failed, already listening on ::, assuming IPv4 included\n", 0, 0, 0 );
 #else
                                                Debug( LDAP_DEBUG_CONNS,
                                                       "daemon: Attempt to listen to 0.0.0.0 failed, already listening on ::, assuming IPv4 included\n",
@@ -1111,9 +1110,9 @@ slapd_daemon_task(
                        }
 #endif                         
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                                  "slapd_daemon_task: listen( %s, 5 ) failed errno=%d (%s)\n",
-                                  slap_listeners[l]->sl_url, err, sock_errstr(err) ));
+                       LDAP_LOG( CONNECTION, ERR, 
+                               "slapd_daemon_task: listen( %s, 5 ) failed errno=%d (%s)\n",
+                               slap_listeners[l]->sl_url, err, sock_errstr(err) );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "daemon: listen(%s, 5) failed errno=%d (%s)\n",
@@ -1240,9 +1239,10 @@ slapd_daemon_task(
                                continue;
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                                  "slapd_daemon_task: select: listen=%d active_threads=%d tvp=%s\n",
-                                  slap_listeners[l]->sl_sd, at, tvp == NULL ? "NULL" : "zero" ));
+                       LDAP_LOG( CONNECTION, DETAIL1, 
+                               "slapd_daemon_task: select: listen=%d "
+                               "active_threads=%d tvp=%s\n",
+                               slap_listeners[l]->sl_sd, at, tvp == NULL ? "NULL" : "zero" );
 #else
                        Debug( LDAP_DEBUG_CONNS,
                                "daemon: select: listen=%d active_threads=%d tvp=%s\n",
@@ -1275,9 +1275,9 @@ slapd_daemon_task(
 
                                if( err != EINTR ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                                                  "slapd_daemon_task: select failed (%d): %s\n",
-                                                  err, sock_errstr(err) ));
+                                       LDAP_LOG( CONNECTION, INFO, 
+                                               "slapd_daemon_task: select failed (%d): %s\n",
+                                               err, sock_errstr(err), 0 );
 #else
                                        Debug( LDAP_DEBUG_CONNS,
                                                "daemon: select failed (%d): %s\n",
@@ -1291,8 +1291,8 @@ slapd_daemon_task(
                case 0:         /* timeout - let threads run */
                        ebadf = 0;
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL2,
-                                  "slapd_daemon_task: select timeout - yielding\n" ));
+                       LDAP_LOG( CONNECTION, DETAIL2,
+                                  "slapd_daemon_task: select timeout - yielding\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_CONNS, "daemon: select timeout - yielding\n",
                            0, 0, 0 );
@@ -1305,8 +1305,8 @@ slapd_daemon_task(
 
                        ebadf = 0;
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL2,
-                                  "slapd_daemon_task: activity on %d descriptors\n", ns ));
+                       LDAP_LOG( CONNECTION, DETAIL2, 
+                                  "slapd_daemon_task: activity on %d descriptors\n", ns, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_CONNS, "daemon: activity on %d descriptors\n",
                                ns, 0, 0 );
@@ -1389,9 +1389,10 @@ slapd_daemon_task(
 
                                if( emfile < 3 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
+                                       LDAP_LOG( CONNECTION, ERR, 
                                                "slapd_daemon_task: accept(%ld) failed errno=%d (%s)\n",
-                                               (long)slap_listeners[l]->sl_sd, err, sock_errstr(err) ));
+                                               (long)slap_listeners[l]->sl_sd, 
+                                               err, sock_errstr(err) );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                            "daemon: accept(%ld) failed errno=%d (%s)\n",
@@ -1416,9 +1417,9 @@ slapd_daemon_task(
                        /* make sure descriptor number isn't too great */
                        if ( s >= dtblsize ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
+                               LDAP_LOG( CONNECTION, ERR, 
                                   "slapd_daemon_task: %ld beyond descriptor table size %ld\n",
-                                  (long)s, (long)dtblsize ));
+                                  (long)s, (long)dtblsize, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "daemon: %ld beyond descriptor table size %ld\n",
@@ -1458,9 +1459,10 @@ slapd_daemon_task(
                                if ( rc == AC_SOCKET_ERROR ) {
                                        int err = sock_errno();
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                                                  "slapd_daemon_task: setsockopt( %ld, SO_KEEPALIVE) failed errno=%d (%s)\n",
-                                                  (long)s, err, sock_errstr(err) ));
+                                       LDAP_LOG( CONNECTION, ERR, 
+                                               "slapd_daemon_task: setsockopt( %ld, SO_KEEPALIVE)"
+                                          " failed errno=%d (%s)\n",
+                                               (long)s, err, sock_errstr(err) );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                                "slapd(%ld): setsockopt(SO_KEEPALIVE) failed "
@@ -1476,9 +1478,10 @@ slapd_daemon_task(
                                if ( rc == AC_SOCKET_ERROR ) {
                                        int err = sock_errno();
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                                                  "slapd_daemon_task: setsockopt( %ld, TCP_NODELAY) failed errno=%d (%s)\n",
-                                                  (long)s, err, sock_errstr(err) ));
+                                       LDAP_LOG( CONNECTION, ERR, 
+                                               "slapd_daemon_task: setsockopt( %ld, "
+                                               "TCP_NODELAY) failed errno=%d (%s)\n",
+                                               (long)s, err, sock_errstr(err) );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                                "slapd(%ld): setsockopt(TCP_NODELAY) failed "
@@ -1490,8 +1493,8 @@ slapd_daemon_task(
 #endif
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL1,
-                                  "slapd_daemon_task: new connection on %ld\n", (long)s ));
+                       LDAP_LOG( CONNECTION, DETAIL1, 
+                               "slapd_daemon_task: new connection on %ld\n", (long)s, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_CONNS, "daemon: new connection on %ld\n",
                                (long) s, 0, 0 );
@@ -1599,9 +1602,9 @@ slapd_daemon_task(
 
                        if( id < 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "connection", LDAP_LEVEL_INFO,
-                                          "slapd_daemon_task: connection_init(%ld, %s, %s) failed.\n",
-                                          (long)s, peername, slap_listeners[l]->sl_name ));
+                               LDAP_LOG( CONNECTION, INFO, 
+                                       "slapd_daemon_task: connection_init(%ld, %s, %s) failed.\n",
+                                       (long)s, peername, slap_listeners[l]->sl_name );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "daemon: connection_init(%ld, %s, %s) failed.\n",
@@ -1626,16 +1629,16 @@ slapd_daemon_task(
 
 #ifdef LDAP_DEBUG
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL2,
-                          "slapd_daemon_task: activity on " ));
+               LDAP_LOG( CONNECTION, DETAIL2,
+                          "slapd_daemon_task: activity on ", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_CONNS, "daemon: activity on:", 0, 0, 0 );
 #endif
 #ifdef HAVE_WINSOCK
                for ( i = 0; i < readfds.fd_count; i++ ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL2,
-                                  " %d%s", readfds.fd_array[i], "r", 0 ));
+                       LDAP_LOG( CONNECTION, DETAIL2, 
+                               " %d%s", readfds.fd_array[i], "r", 0, 0 );
 #else
                        Debug( LDAP_DEBUG_CONNS, " %d%s",
                                readfds.fd_array[i], "r", 0 );
@@ -1643,8 +1646,8 @@ slapd_daemon_task(
                }
                for ( i = 0; i < writefds.fd_count; i++ ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL2,
-                                  " %d%s", writefds.fd_array[i], "w" ));
+                       LDAP_LOG( CONNECTION, DETAIL2, 
+                               " %d%s", writefds.fd_array[i], "w" , 0 );
 #else
                        Debug( LDAP_DEBUG_CONNS, " %d%s",
                                writefds.fd_array[i], "w", 0 );
@@ -1676,9 +1679,8 @@ slapd_daemon_task(
                        w = FD_ISSET( i, &writefds );
                        if ( r || w ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL2,
-                                          " %d%s%s", i,
-                                          r ? "r" : "", w ? "w" : "" ));
+                               LDAP_LOG( CONNECTION, DETAIL2, 
+                                       " %d%s%s", i, r ? "r" : "", w ? "w" : "" );
 #else
                                Debug( LDAP_DEBUG_CONNS, " %d%s%s", i,
                                    r ? "r" : "", w ? "w" : "" );
@@ -1687,7 +1689,7 @@ slapd_daemon_task(
                }
 #endif
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL2, "\n" ));
+               LDAP_LOG( CONNECTION, DETAIL2, "\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_CONNS, "\n", 0, 0, 0 );
 #endif
@@ -1726,8 +1728,8 @@ slapd_daemon_task(
                                continue;
                        }
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL2,
-                                  "slapd_daemon_task: write active on %d\n", wd ));
+                       LDAP_LOG( CONNECTION, DETAIL2, 
+                               "slapd_daemon_task: write active on %d\n", wd, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_CONNS,
                                "daemon: write active on %d\n",
@@ -1779,8 +1781,8 @@ slapd_daemon_task(
                        }
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_DETAIL2,
-                                  "slapd_daemon_task: read activity on %d\n", rd ));
+                       LDAP_LOG( CONNECTION, DETAIL2, 
+                               "slapd_daemon_task: read activity on %d\n", rd, 0, 0 );
 #else
                        Debug ( LDAP_DEBUG_CONNS,
                                "daemon: read activity on %d\n", rd, 0, 0 );
@@ -1801,8 +1803,8 @@ slapd_daemon_task(
 
        if( slapd_shutdown == 1 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_CRIT,
-                          "slapd_daemon_task: shutdown requested and initiated.\n"));
+               LDAP_LOG( CONNECTION, CRIT,
+                  "slapd_daemon_task: shutdown requested and initiated.\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "daemon: shutdown requested and initiated.\n",
@@ -1812,8 +1814,9 @@ slapd_daemon_task(
        } else if ( slapd_shutdown == 2 ) {
 #ifdef HAVE_NT_SERVICE_MANAGER
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_CRIT,
-                                  "slapd_daemon_task: shutdown initiated by Service Manager.\n"));
+                       LDAP_LOG( CONNECTION, CRIT,
+                          "slapd_daemon_task: shutdown initiated by Service Manager.\n",
+                          0, 0, 0);
 #else
                        Debug( LDAP_DEBUG_TRACE,
                               "daemon: shutdown initiated by Service Manager.\n",
@@ -1821,8 +1824,9 @@ slapd_daemon_task(
 #endif
 #else /* !HAVE_NT_SERVICE_MANAGER */
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_CRIT,
-                                  "slapd_daemon_task: abnormal condition, shutdown initiated.\n" ));
+                       LDAP_LOG( CONNECTION, CRIT,
+                          "slapd_daemon_task: abnormal condition, "
+                          "shutdown initiated.\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                               "daemon: abnormal condition, shutdown initiated.\n",
@@ -1831,8 +1835,9 @@ slapd_daemon_task(
 #endif /* !HAVE_NT_SERVICE_MANAGER */
        } else {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "connection", LDAP_LEVEL_CRIT,
-                          "slapd_daemon_task: no active streams, shutdown initiated.\n" ));
+               LDAP_LOG( CONNECTION, CRIT,
+                  "slapd_daemon_task: no active streams, shutdown initiated.\n", 
+                  0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                       "daemon: no active streams, shutdown initiated.\n",
@@ -1846,9 +1851,9 @@ slapd_daemon_task(
        slap_listeners = NULL;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_CRIT,
-                  "slapd_daemon_task: shutdown waiting for %d threads to terminate.\n",
-                  ldap_pvt_thread_pool_backload(&connection_pool) ));
+       LDAP_LOG( CONNECTION, CRIT, 
+               "slapd_daemon_task: shutdown waiting for %d threads to terminate.\n",
+               ldap_pvt_thread_pool_backload(&connection_pool), 0, 0 );
 #else
        Debug( LDAP_DEBUG_ANY,
            "slapd shutdown: waiting for %d threads to terminate\n",
@@ -1877,8 +1882,9 @@ int slapd_daemon( void )
 
                if ( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "connection", LDAP_LEVEL_ERR,
-                                  "slapd_daemon: listener ldap_pvt_thread_create failed (%d).\n", rc ));
+                       LDAP_LOG( CONNECTION, ERR, 
+                               "slapd_daemon: listener ldap_pvt_thread_create failed (%d).\n",
+                               rc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                        "listener ldap_pvt_thread_create failed (%d)\n", rc, 0, 0 );
@@ -1951,8 +1957,8 @@ RETSIGTYPE
 slap_sig_shutdown( int sig )
 {
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "connection", LDAP_LEVEL_CRIT,
-                  "slap_sig_shutdown: signal %d\n", sig ));
+       LDAP_LOG( CONNECTION, CRIT, 
+               "slap_sig_shutdown: signal %d\n", sig, 0, 0 );
 #else
        Debug(LDAP_DEBUG_TRACE, "slap_sig_shutdown: signal %d\n", sig, 0, 0);
 #endif
@@ -1966,8 +1972,8 @@ slap_sig_shutdown( int sig )
 #if HAVE_NT_SERVICE_MANAGER && SIGBREAK
        if (is_NT_Service && sig == SIGBREAK)
 #ifdef NEW_LOGGING
-           LDAP_LOG(( "connection", LDAP_LEVEL_CRIT,
-                      "slap_sig_shutdown: SIGBREAK ignored.\n" ));
+           LDAP_LOG( CONNECTION, CRIT,
+                   "slap_sig_shutdown: SIGBREAK ignored.\n", 0, 0, 0 );
 #else
            Debug(LDAP_DEBUG_TRACE, "slap_sig_shutdown: SIGBREAK ignored.\n",
                  0, 0, 0);
index 37a59aa1ea542ccd2390a3a9c5ce4e1c9bda94a3..89e405c43f0ef76a7321b08e369550b93fba2d22 100644 (file)
@@ -40,8 +40,8 @@ do_delete(
        int manageDSAit;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-               "do_delete: conn %d\n", conn->c_connid ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "do_delete: conn %d\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "do_delete\n", 0, 0, 0 );
 #endif
@@ -54,8 +54,8 @@ do_delete(
 
        if ( ber_scanf( op->o_ber, "m", &dn ) == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_delete: conn: %d  ber_scanf failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_delete: conn: %d  ber_scanf failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_scanf failed\n", 0, 0, 0 );
 #endif
@@ -66,8 +66,8 @@ do_delete(
 
        if( ( rc = get_ctrls( conn, op, 1 ) ) != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_delete: conn %d  get_ctrls failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_delete: conn %d  get_ctrls failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_delete: get_ctrls failed\n", 0, 0, 0 );
 #endif
@@ -77,9 +77,9 @@ do_delete(
        rc = dnPrettyNormal( NULL, &dn, &pdn, &ndn );
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+               LDAP_LOG( OPERATION, INFO, 
                        "do_delete: conn %d  invalid dn (%s)\n",
-                       conn->c_connid, dn.bv_val ));
+                       conn->c_connid, dn.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "do_delete: invalid dn (%s)\n", dn.bv_val, 0, 0 );
@@ -91,8 +91,9 @@ do_delete(
 
        if( ndn.bv_len == 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO, "do_delete: conn %d: "
-                       "Attempt to delete root DSE.\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "do_delete: conn %d: Attempt to delete root DSE.\n", 
+                       conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_delete: root dse!\n", 0, 0, 0 );
 #endif
@@ -105,8 +106,8 @@ do_delete(
 
        } else if ( strcasecmp( ndn.bv_val, SLAPD_SCHEMA_DN ) == 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO, "do_delete: conn %d: "
-                       "Attempt to delete subschema subentry.\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, INFO, "do_delete: conn %d: "
+                       "Attempt to delete subschema subentry.\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_delete: subschema subentry!\n", 0, 0, 0 );
 #endif
index 75a349b4333dfecf05e838aad623154e6e47c670..23aa4e78399eac50b14aee2a5505ef497439b452 100644 (file)
@@ -439,7 +439,11 @@ dnPretty2(
        assert( val );
        assert( out );
 
+#ifdef NEW_LOGGING
+       LDAP_LOG( OPERATION, ARGS, ">>> dnPretty: <%s>\n", val->bv_val, 0, 0 );
+#else
        Debug( LDAP_DEBUG_TRACE, ">>> dnPretty: <%s>\n", val->bv_val, 0, 0 );
+#endif
 
        if ( val->bv_len == 0 ) {
                ber_dupbv( out, val );
@@ -496,7 +500,11 @@ dnPrettyNormal(
        struct berval *pretty,
        struct berval *normal)
 {
+#ifdef NEW_LOGGING
+       LDAP_LOG ( OPERATION, ENTRY, ">>> dnPrettyNormal: <%s>\n", val->bv_val, 0, 0 );
+#else
        Debug( LDAP_DEBUG_TRACE, ">>> dnPrettyNormal: <%s>\n", val->bv_val, 0, 0 );
+#endif
 
        assert( val );
        assert( pretty );
@@ -562,8 +570,13 @@ dnPrettyNormal(
                }
        }
 
+#ifdef NEW_LOGGING
+       LDAP_LOG (OPERATION, RESULTS, "<<< dnPrettyNormal: <%s>, <%s>\n",
+               pretty->bv_val, normal->bv_val, 0  );
+#else
        Debug( LDAP_DEBUG_TRACE, "<<< dnPrettyNormal: <%s>, <%s>\n",
                pretty->bv_val, normal->bv_val, 0 );
+#endif
 
        return LDAP_SUCCESS;
 }
@@ -595,9 +608,8 @@ dnMatch(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-               "dnMatch: %d\n    %s\n    %s\n", match,
-               value->bv_val, asserted->bv_val ));
+       LDAP_LOG( CONFIG, ENTRY, "dnMatch: %d\n    %s\n    %s\n", 
+               match, value->bv_val, asserted->bv_val  );
 #else
        Debug( LDAP_DEBUG_ARGS, "dnMatch %d\n\t\"%s\"\n\t\"%s\"\n",
                match, value->bv_val, asserted->bv_val );
@@ -787,7 +799,7 @@ build_new_dn( struct berval * new_dn,
        new_dn->bv_len = parent_dn->bv_len + newrdn->bv_len + 1;
        new_dn->bv_val = (char *) ch_malloc( new_dn->bv_len + 1 );
 
-       ptr = slap_strcopy( new_dn->bv_val, newrdn->bv_val );
+       ptr = lutil_strcopy( new_dn->bv_val, newrdn->bv_val );
        *ptr++ = ',';
        strcpy( ptr, parent_dn->bv_val );
 }
index f5829d395af02a3555138d88234b8df301b6e68e..98f5842f8a45e66f9544ee3430d512900406c6dd 100644 (file)
@@ -63,8 +63,7 @@ str2entry( char *s )
         */
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-               "str2entry: \"%s\"\n", s ? s : "NULL" ));
+       LDAP_LOG( OPERATION, DETAIL1, "str2entry: \"%s\"\n", s ? s : "NULL", 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> str2entry\n",
                s ? s : "NULL", 0, 0 );
@@ -75,8 +74,7 @@ str2entry( char *s )
 
        if( e == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "str2entry: entry allocation failed.\n" ));
+               LDAP_LOG( OPERATION, ERR, "str2entry: entry allocation failed.\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "<= str2entry NULL (entry allocation failed)\n",
@@ -99,8 +97,7 @@ str2entry( char *s )
 
                if ( ldif_parse_line( s, &type, &vals[0].bv_val, &vals[0].bv_len ) != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                                  "str2entry:  NULL (parse_line)\n" ));
+                       LDAP_LOG( OPERATION, DETAIL1, "str2entry:  NULL (parse_line)\n",0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                            "<= str2entry NULL (parse_line)\n", 0, 0, 0 );
@@ -113,10 +110,10 @@ str2entry( char *s )
 
                        if ( e->e_dn != NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1, "str2entry: "
+                               LDAP_LOG( OPERATION, DETAIL1, "str2entry: "
                                        "entry %ld has multiple DNs \"%s\" and \"%s\"\n",
                                        (long) e->e_id, e->e_dn,
-                                       vals[0].bv_val != NULL ? vals[0].bv_val : "" ));
+                                       vals[0].bv_val != NULL ? vals[0].bv_val : ""  );
 #else
                                Debug( LDAP_DEBUG_ANY, "str2entry: "
                                        "entry %ld has multiple DNs \"%s\" and \"%s\"\n",
@@ -131,9 +128,9 @@ str2entry( char *s )
                        rc = dnPrettyNormal( NULL, &vals[0], &e->e_name, &e->e_nname );
                        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1, "str2entry: "
-                                       "entry %ld has invalid DN \"%s\"\n",
-                                       (long) e->e_id, vals[0].bv_val ));
+                               LDAP_LOG( OPERATION, DETAIL1, 
+                                       "str2entry: entry %ld has invalid DN \"%s\"\n",
+                                       (long) e->e_id, vals[0].bv_val, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, "str2entry: "
                                        "entry %ld has invalid DN \"%s\"\n",
@@ -152,8 +149,8 @@ str2entry( char *s )
 
                if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                               "str2entry:  str2ad(%s): %s\n", type, text ));
+                       LDAP_LOG( OPERATION, DETAIL1, 
+                               "str2entry:  str2ad(%s): %s\n", type, text, 0 );
 #else
                        Debug( slapMode & SLAP_TOOL_MODE
                                ? LDAP_DEBUG_ANY : LDAP_DEBUG_TRACE,
@@ -169,8 +166,8 @@ str2entry( char *s )
                        rc = slap_str2undef_ad( type, &ad, &text );
                        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                                       "str2entry:  str2undef_ad(%s): %s\n", type, text ));
+                               LDAP_LOG( OPERATION, DETAIL1, 
+                                       "str2entry: str2undef_ad(%s): %s\n", type, text, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "<= str2entry: str2undef_ad(%s): %s\n",
@@ -202,9 +199,9 @@ str2entry( char *s )
 
                        } else {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+                               LDAP_LOG( OPERATION, INFO, 
                                        "str2entry: no validator for syntax %s\n", 
-                                       ad->ad_type->sat_syntax->ssyn_oid ));
+                                       ad->ad_type->sat_syntax->ssyn_oid, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "str2entry: no validator for syntax %s\n",
@@ -218,9 +215,9 @@ str2entry( char *s )
 
                        if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
+                               LDAP_LOG( OPERATION, ERR, 
                                        "str2entry:  invalid value for syntax %s\n",
-                                       ad->ad_type->sat_syntax->ssyn_oid ));
+                                       ad->ad_type->sat_syntax->ssyn_oid, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "str2entry: invalid value for syntax %s\n",
@@ -241,8 +238,8 @@ str2entry( char *s )
                rc = attr_merge( e, ad, vals );
                if( rc != 0 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                               "str2entry:  NULL (attr_merge)\n" ));
+                       LDAP_LOG( OPERATION, DETAIL1,
+                               "str2entry:  NULL (attr_merge)\n" , 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                            "<= str2entry NULL (attr_merge)\n", 0, 0, 0 );
@@ -260,9 +257,8 @@ str2entry( char *s )
        /* check to make sure there was a dn: line */
        if ( e->e_dn == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                       "str2entry:  entry %ld has no dn.\n",
-                       (long) e->e_id ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "str2entry:  entry %ld has no dn.\n", (long) e->e_id, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "str2entry: entry %ld has no dn\n",
                    (long) e->e_id, 0, 0 );
@@ -272,8 +268,8 @@ str2entry( char *s )
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL2,
-               "str2entry(%s) -> 0x%lx\n", e->e_dn, (unsigned long)e ));
+       LDAP_LOG( OPERATION, DETAIL2,
+               "str2entry(%s) -> 0x%lx\n", e->e_dn, (unsigned long)e, 0 );
 #else
        Debug(LDAP_DEBUG_TRACE, "<= str2entry(%s) -> 0x%lx\n",
                e->e_dn, (unsigned long) e, 0 );
@@ -477,9 +473,8 @@ int entry_encode(Entry *e, struct berval *bv)
        unsigned char *ptr;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-               "entry_encode: id: 0x%08lx  \"%s\"\n",
-               (long) e->e_id, e->e_dn ));
+       LDAP_LOG( OPERATION, DETAIL1, "entry_encode: id: 0x%08lx  \"%s\"\n",
+               (long) e->e_id, e->e_dn, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "=> entry_encode(0x%08lx): %s\n",
                (long) e->e_id, e->e_dn, 0 );
@@ -572,8 +567,7 @@ int entry_decode(struct berval *bv, Entry **e)
        x->e_nname.bv_len = i;
        ptr += i+1;
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL2,
-               "entry_decode: \"%s\"\n", x->e_dn ));
+       LDAP_LOG( OPERATION, DETAIL2, "entry_decode: \"%s\"\n", x->e_dn, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
            "entry_decode: \"%s\"\n",
@@ -601,8 +595,8 @@ int entry_decode(struct berval *bv, Entry **e)
 
                if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                               "entry_decode: str2ad(%s): %s\n", ptr, text ));
+                       LDAP_LOG( OPERATION, INFO, 
+                               "entry_decode: str2ad(%s): %s\n", ptr, text, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "<= entry_decode: str2ad(%s): %s\n", ptr, text, 0 );
@@ -611,8 +605,8 @@ int entry_decode(struct berval *bv, Entry **e)
 
                        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                                       "entry_decode:  str2undef_ad(%s): %s\n", ptr, text));
+                               LDAP_LOG( OPERATION, INFO, 
+                                       "entry_decode:  str2undef_ad(%s): %s\n", ptr, text, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "<= entry_decode: str2undef_ad(%s): %s\n",
@@ -643,8 +637,7 @@ int entry_decode(struct berval *bv, Entry **e)
        if (a)
                a->a_next = NULL;
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-               "entry_decode:  %s\n", x->e_dn ));
+       LDAP_LOG( OPERATION, DETAIL1, "entry_decode:  %s\n", x->e_dn, 0, 0 );
 #else
        Debug(LDAP_DEBUG_TRACE, "<= entry_decode(%s)\n",
                x->e_dn, 0, 0 );
index 63f46bd2b23bc2bc097e3e50ac9b20b92fb34e0a..2d315f36ce1a5b12dbb01bc6952ecf4afb1bed53 100644 (file)
@@ -103,17 +103,15 @@ do_extended(
        LDAPControl **rspctrls;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-               "do_extended: conn %d\n", conn->c_connid ));
+       LDAP_LOG( OPERATION, ENTRY, "do_extended: conn %d\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "do_extended\n", 0, 0, 0 );
 #endif
 
        if( op->o_protocol < LDAP_VERSION3 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_extended: protocol version (%d) too low.\n",
-                       op->o_protocol ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_extended: protocol version (%d) too low.\n", op->o_protocol, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "do_extended: protocol version (%d) too low\n",
@@ -127,8 +125,8 @@ do_extended(
 
        if ( ber_scanf( op->o_ber, "{m" /*}*/, &reqoid ) == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_extended: conn %d  ber_scanf failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, "do_extended: conn %d  ber_scanf failed\n", 
+                       conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_extended: ber_scanf failed\n", 0, 0 ,0 );
 #endif
@@ -140,9 +138,9 @@ do_extended(
 
        if( !(ext = find_extop(supp_ext_list, &reqoid)) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
+               LDAP_LOG( OPERATION, ERR, 
                        "do_extended: conn %d  unsupported operation \"%s\"\n",
-                       conn->c_connid, reqoid.bv_val ));
+                       conn->c_connid, reqoid.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_extended: unsupported operation \"%s\"\n",
                        reqoid.bv_val, 0 ,0 );
@@ -157,8 +155,9 @@ do_extended(
        if( ber_peek_tag( op->o_ber, &len ) == LDAP_TAG_EXOP_REQ_VALUE ) {
                if( ber_scanf( op->o_ber, "m", &reqdata ) == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                               "do_extended: conn %d  ber_scanf failed\n", conn->c_connid ));
+                       LDAP_LOG( OPERATION, ERR, 
+                               "do_extended: conn %d  ber_scanf failed\n", 
+                               conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "do_extended: ber_scanf failed\n", 0, 0 ,0 );
 #endif
@@ -171,8 +170,8 @@ do_extended(
 
        if( (rc = get_ctrls( conn, op, 1 )) != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_extended: conn %d  get_ctrls failed\n", conn->c_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_extended: conn %d  get_ctrls failed\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_extended: get_ctrls failed\n", 0, 0 ,0 );
 #endif
@@ -189,8 +188,8 @@ do_extended(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-               "do_extended: conn %d  oid=%d\n.", conn->c_connid, reqoid.bv_val ));
+       LDAP_LOG( OPERATION, DETAIL1, 
+               "do_extended: conn %d  oid=%d\n.", conn->c_connid, reqoid.bv_val, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "do_extended: oid=%s\n", reqoid.bv_val, 0 ,0 );
 #endif
index e4905493a6b44d6f68c5ba2cc6c2ea8f66b7e1f6..69a26bf34bd30a3fe0fed81e8f50b53c701b903a 100644 (file)
@@ -54,8 +54,7 @@ get_filter(
        Filter          *f;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY, "get_filter: conn %d\n",
-               conn->c_connid ));
+       LDAP_LOG( FILTER, ENTRY, "get_filter: conn %d\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "begin get_filter\n", 0, 0, 0 );
 #endif
@@ -108,8 +107,8 @@ get_filter(
        switch ( f->f_choice ) {
        case LDAP_FILTER_EQUALITY:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL2,
-                       "get_filter: conn %d  EQUALITY\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL2, 
+                       "get_filter: conn %d  EQUALITY\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "EQUALITY\n", 0, 0, 0 );
 #endif
@@ -123,8 +122,8 @@ get_filter(
 
        case LDAP_FILTER_SUBSTRINGS:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_filter: conn %d  SUBSTRINGS\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_filter: conn %d  SUBSTRINGS\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "SUBSTRINGS\n", 0, 0, 0 );
 #endif
@@ -133,8 +132,8 @@ get_filter(
 
        case LDAP_FILTER_GE:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_filter: conn %d  GE\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_filter: conn %d  GE\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "GE\n", 0, 0, 0 );
 #endif
@@ -146,8 +145,8 @@ get_filter(
 
        case LDAP_FILTER_LE:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_filter: conn %d  LE\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_filter: conn %d  LE\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "LE\n", 0, 0, 0 );
 #endif
@@ -161,8 +160,8 @@ get_filter(
                struct berval type;
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_filter: conn %d PRESENT\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_filter: conn %d PRESENT\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "PRESENT\n", 0, 0, 0 );
 #endif
@@ -186,8 +185,8 @@ get_filter(
 
        case LDAP_FILTER_APPROX:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_filter: conn %d  APPROX\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_filter: conn %d  APPROX\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "APPROX\n", 0, 0, 0 );
 #endif
@@ -199,8 +198,8 @@ get_filter(
 
        case LDAP_FILTER_AND:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_filter: conn %d  AND\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_filter: conn %d  AND\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "AND\n", 0, 0, 0 );
 #endif
@@ -212,8 +211,8 @@ get_filter(
 
        case LDAP_FILTER_OR:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_filter: conn %d  OR\n", conn->c_connid  ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_filter: conn %d  OR\n", conn->c_connid, 0, 0  );
 #else
                Debug( LDAP_DEBUG_FILTER, "OR\n", 0, 0, 0 );
 #endif
@@ -225,8 +224,8 @@ get_filter(
 
        case LDAP_FILTER_NOT:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_filter: conn %d  NOT\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_filter: conn %d  NOT\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "NOT\n", 0, 0, 0 );
 #endif
@@ -239,8 +238,8 @@ get_filter(
 
        case LDAP_FILTER_EXT:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_filter: conn %d  EXTENSIBLE\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_filter: conn %d  EXTENSIBLE\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "EXTENSIBLE\n", 0, 0, 0 );
 #endif
@@ -256,9 +255,9 @@ get_filter(
        default:
                (void) ber_scanf( ber, "x" ); /* skip the element */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
+               LDAP_LOG( FILTER, ERR, 
                        "get_filter: conn %d unknown filter type=%lu\n",
-                       conn->c_connid, f->f_choice ));
+                       conn->c_connid, f->f_choice, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "get_filter: unknown filter type=%lu\n",
                        f->f_choice, 0, 0 );
@@ -285,8 +284,8 @@ get_filter(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL2,
-               "get_filter: conn %d exit\n", conn->c_connid ));
+       LDAP_LOG( FILTER, DETAIL2, 
+               "get_filter: conn %d exit\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "end get_filter %d\n", err, 0, 0 );
 #endif
@@ -305,8 +304,8 @@ get_filter_list( Connection *conn, BerElement *ber,
        char            *last;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "get_filter_list: conn %d start\n", conn->c_connid ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "get_filter_list: conn %d start\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "begin get_filter_list\n", 0, 0, 0 );
 #endif
@@ -322,8 +321,8 @@ get_filter_list( Connection *conn, BerElement *ber,
        *new = NULL;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "get_filter_list: conn %d exit\n", conn->c_connid ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "get_filter_list: conn %d exit\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "end get_filter_list\n", 0, 0, 0 );
 #endif
@@ -346,8 +345,8 @@ get_substring_filter(
        *text = "error decoding filter";
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "get_substring_filter: conn %d  begin\n", conn->c_connid ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "get_substring_filter: conn %d  begin\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "begin get_substring_filter\n", 0, 0, 0 );
 #endif
@@ -404,9 +403,9 @@ get_substring_filter(
                        rc = LDAP_PROTOCOL_ERROR;
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
+                       LDAP_LOG( FILTER, ERR,
                                "get_filter_substring: conn %d  unknown substring choice=%ld\n",
-                               conn->c_connid, (long)tag ));
+                               conn->c_connid, (long)tag, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER,
                                "  unknown substring choice=%ld\n",
@@ -435,9 +434,8 @@ get_substring_filter(
                switch ( tag ) {
                case LDAP_SUBSTRING_INITIAL:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                               "get_substring_filter: conn %d  INITIAL\n",
-                               conn->c_connid ));
+                       LDAP_LOG( FILTER, DETAIL1,
+                               "get_substring_filter: conn %d  INITIAL\n", conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "  INITIAL\n", 0, 0, 0 );
 #endif
@@ -455,9 +453,8 @@ get_substring_filter(
 
                case LDAP_SUBSTRING_ANY:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                               "get_substring_filter: conn %d  ANY\n",
-                               conn->c_connid ));
+                       LDAP_LOG( FILTER, DETAIL1,
+                               "get_substring_filter: conn %d  ANY\n", conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "  ANY\n", 0, 0, 0 );
 #endif
@@ -472,9 +469,8 @@ get_substring_filter(
 
                case LDAP_SUBSTRING_FINAL:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                               "get_substring_filter: conn %d  FINAL\n",
-                               conn->c_connid ));
+                       LDAP_LOG( FILTER, DETAIL1, 
+                               "get_substring_filter: conn %d  FINAL\n", conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "  FINAL\n", 0, 0, 0 );
 #endif
@@ -489,9 +485,9 @@ get_substring_filter(
 
                default:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
+                       LDAP_LOG( FILTER, INFO, 
                                "get_substring_filter: conn %d  unknown substring type %ld\n",
-                               conn->c_connid, (long)tag ));
+                               conn->c_connid, (long)tag, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER,
                                "  unknown substring type=%ld\n",
@@ -502,9 +498,9 @@ get_substring_filter(
 
 return_error:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
+                       LDAP_LOG( FILTER, INFO, 
                                "get_substring_filter: conn %d  error %ld\n",
-                               conn->c_connid, (long)rc ));
+                               conn->c_connid, (long)rc, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "  error=%ld\n",
                                (long) rc, 0, 0 );
@@ -518,8 +514,8 @@ return_error:
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "get_substring_filter: conn %d exit\n", conn->c_connid ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "get_substring_filter: conn %d exit\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "end get_substring_filter\n", 0, 0, 0 );
 #endif
@@ -575,8 +571,8 @@ filter_free( Filter *f )
 
        default:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                       "filter_free: unknown filter type %lu\n", f->f_choice ));
+               LDAP_LOG( FILTER, ERR, 
+                       "filter_free: unknown filter type %lu\n", f->f_choice, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "filter_free: unknown filter type=%lu\n",
                        f->f_choice, 0, 0 );
@@ -821,8 +817,8 @@ get_simple_vrFilter(
        ValuesReturnFilter *f;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY, "get_simple_vrFilter: conn %d\n",
-               conn->c_connid ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "get_simple_vrFilter: conn %d\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "begin get_simple_vrFilter\n", 0, 0, 0 );
 #endif
@@ -843,8 +839,8 @@ get_simple_vrFilter(
        switch ( f->f_choice ) {
        case LDAP_FILTER_EQUALITY:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL2,
-                       "get_simple_vrFilter: conn %d  EQUALITY\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL2, 
+                       "get_simple_vrFilter: conn %d  EQUALITY\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "EQUALITY\n", 0, 0, 0 );
 #endif
@@ -858,8 +854,8 @@ get_simple_vrFilter(
 
        case LDAP_FILTER_SUBSTRINGS:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_simple_vrFilter: conn %d  SUBSTRINGS\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_simple_vrFilter: conn %d  SUBSTRINGS\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "SUBSTRINGS\n", 0, 0, 0 );
 #endif
@@ -868,8 +864,8 @@ get_simple_vrFilter(
 
        case LDAP_FILTER_GE:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_simple_vrFilter: conn %d  GE\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_simple_vrFilter: conn %d  GE\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "GE\n", 0, 0, 0 );
 #endif
@@ -881,8 +877,8 @@ get_simple_vrFilter(
 
        case LDAP_FILTER_LE:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_simple_vrFilter: conn %d  LE\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_simple_vrFilter: conn %d  LE\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "LE\n", 0, 0, 0 );
 #endif
@@ -896,8 +892,8 @@ get_simple_vrFilter(
                struct berval type;
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_simple_vrFilter: conn %d PRESENT\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_simple_vrFilter: conn %d PRESENT\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "PRESENT\n", 0, 0, 0 );
 #endif
@@ -921,8 +917,8 @@ get_simple_vrFilter(
 
        case LDAP_FILTER_APPROX:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_simple_vrFilter: conn %d  APPROX\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_simple_vrFilter: conn %d  APPROX\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "APPROX\n", 0, 0, 0 );
 #endif
@@ -934,8 +930,8 @@ get_simple_vrFilter(
 
        case LDAP_FILTER_EXT:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                       "get_simple_vrFilter: conn %d  EXTENSIBLE\n", conn->c_connid ));
+               LDAP_LOG( FILTER, DETAIL1, 
+                       "get_simple_vrFilter: conn %d  EXTENSIBLE\n", conn->c_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "EXTENSIBLE\n", 0, 0, 0 );
 #endif
@@ -951,9 +947,9 @@ get_simple_vrFilter(
        default:
                (void) ber_scanf( ber, "x" ); /* skip the element */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
+               LDAP_LOG( FILTER, ERR, 
                        "get_simple_vrFilter: conn %d unknown filter type=%lu\n",
-                       conn->c_connid, f->f_choice ));
+                       conn->c_connid, f->f_choice, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "get_simple_vrFilter: unknown filter type=%lu\n",
                        f->f_choice, 0, 0 );
@@ -980,8 +976,8 @@ get_simple_vrFilter(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL2,
-               "get_simple_vrFilter: conn %d exit\n", conn->c_connid ));
+       LDAP_LOG( FILTER, DETAIL2, 
+               "get_simple_vrFilter: conn %d exit\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "end get_simple_vrFilter %d\n", err, 0, 0 );
 #endif
@@ -1028,8 +1024,8 @@ get_vrFilter( Connection *conn, BerElement *ber,
        char            *last;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "get_vrFilter: conn %d start\n", conn->c_connid ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "get_vrFilter: conn %d start\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "begin get_vrFilter\n", 0, 0, 0 );
 #endif
@@ -1058,8 +1054,8 @@ get_vrFilter( Connection *conn, BerElement *ber,
        *new = NULL;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "get_vrFilter: conn %d exit\n", conn->c_connid ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "get_vrFilter: conn %d exit\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "end get_vrFilter\n", 0, 0, 0 );
 #endif
@@ -1109,8 +1105,8 @@ vrFilter_free( ValuesReturnFilter *f )
 
                default:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
-                               "filter_free: unknown filter type %lu\n", f->f_choice ));
+                       LDAP_LOG( FILTER, ERR, 
+                               "filter_free: unknown filter type %lu\n", f->f_choice, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "filter_free: unknown filter type=%lu\n",
                                f->f_choice, 0, 0 );
@@ -1340,8 +1336,8 @@ get_substring_vrFilter(
        *text = "error decoding filter";
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "get_substring_filter: conn %d  begin\n", conn->c_connid ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "get_substring_filter: conn %d  begin\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "begin get_substring_filter\n", 0, 0, 0 );
 #endif
@@ -1398,9 +1394,9 @@ get_substring_vrFilter(
                        rc = LDAP_PROTOCOL_ERROR;
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_ERR,
+                       LDAP_LOG( FILTER, ERR, 
                                "get_filter_substring: conn %d  unknown substring choice=%ld\n",
-                               conn->c_connid, (long)tag ));
+                               conn->c_connid, (long)tag, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER,
                                "  unknown substring choice=%ld\n",
@@ -1429,9 +1425,9 @@ get_substring_vrFilter(
                switch ( tag ) {
                case LDAP_SUBSTRING_INITIAL:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                               "get_substring_filter: conn %d  INITIAL\n",
-                               conn->c_connid ));
+                       LDAP_LOG( FILTER, DETAIL1, 
+                               "get_substring_filter: conn %d  INITIAL\n", 
+                               conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "  INITIAL\n", 0, 0, 0 );
 #endif
@@ -1449,9 +1445,8 @@ get_substring_vrFilter(
 
                case LDAP_SUBSTRING_ANY:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                               "get_substring_filter: conn %d  ANY\n",
-                               conn->c_connid ));
+                       LDAP_LOG( FILTER, DETAIL1, 
+                               "get_substring_filter: conn %d  ANY\n", conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "  ANY\n", 0, 0, 0 );
 #endif
@@ -1466,9 +1461,8 @@ get_substring_vrFilter(
 
                case LDAP_SUBSTRING_FINAL:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                               "get_substring_filter: conn %d  FINAL\n",
-                               conn->c_connid ));
+                       LDAP_LOG( FILTER, DETAIL1, 
+                               "get_substring_filter: conn %d  FINAL\n", conn->c_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "  FINAL\n", 0, 0, 0 );
 #endif
@@ -1483,9 +1477,9 @@ get_substring_vrFilter(
 
                default:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
+                       LDAP_LOG( FILTER, INFO, 
                                "get_substring_filter: conn %d  unknown substring type %ld\n",
-                               conn->c_connid, (long)tag ));
+                               conn->c_connid, (long)tag, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER,
                                "  unknown substring type=%ld\n",
@@ -1496,9 +1490,9 @@ get_substring_vrFilter(
 
 return_error:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
+                       LDAP_LOG( FILTER, INFO, 
                                "get_substring_filter: conn %d  error %ld\n",
-                               conn->c_connid, (long)rc ));
+                               conn->c_connid, (long)rc, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "  error=%ld\n",
                                (long) rc, 0, 0 );
@@ -1512,8 +1506,8 @@ return_error:
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "get_substring_filter: conn %d exit\n", conn->c_connid ));
+       LDAP_LOG( FILTER, ENTRY, 
+               "get_substring_filter: conn %d exit\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "end get_substring_filter\n", 0, 0, 0 );
 #endif
index af513e29c565ca7035d0529a0ca3db57d1ab9c12..672915cb8cde4a6ff3db6717e74d401c4d1592bb 100644 (file)
@@ -56,8 +56,7 @@ test_filter(
        int     rc;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "test_filter: begin\n" ));
+       LDAP_LOG( FILTER, ENTRY, "test_filter: begin\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "=> test_filter\n", 0, 0, 0 );
 #endif
@@ -66,13 +65,12 @@ test_filter(
        switch ( f->f_choice ) {
        case SLAPD_FILTER_COMPUTED:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "test_filter:   COMPUTED %s (%d)\n",
-                          f->f_result == LDAP_COMPARE_FALSE ? "false" :
-                          f->f_result == LDAP_COMPARE_TRUE      ? "true"  :
-                          f->f_result == SLAPD_COMPARE_UNDEFINED ? "undefined" :
-                          "error",
-                          f->f_result ));
+               LDAP_LOG( FILTER, DETAIL1,
+                       "test_filter:   COMPUTED %s (%d)\n",
+                       f->f_result == LDAP_COMPARE_FALSE ? "false" :
+                       f->f_result == LDAP_COMPARE_TRUE         ? "true"  :
+                       f->f_result == SLAPD_COMPARE_UNDEFINED ? "undefined" :
+                       "error", f->f_result, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "    COMPUTED %s (%d)\n",
                        f->f_result == LDAP_COMPARE_FALSE ? "false" :
@@ -86,8 +84,7 @@ test_filter(
 
        case LDAP_FILTER_EQUALITY:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "test_filter:   EQUALITY\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "test_filter:   EQUALITY\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "    EQUALITY\n", 0, 0, 0 );
 #endif
@@ -98,8 +95,7 @@ test_filter(
 
        case LDAP_FILTER_SUBSTRINGS:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "test_filter  SUBSTRINGS\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "test_filter  SUBSTRINGS\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "    SUBSTRINGS\n", 0, 0, 0 );
 #endif
@@ -119,8 +115,7 @@ test_filter(
 
        case LDAP_FILTER_PRESENT:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "test_filter:        PRESENT\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "test_filter:        PRESENT\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "    PRESENT\n", 0, 0, 0 );
 #endif
@@ -130,8 +125,7 @@ test_filter(
 
        case LDAP_FILTER_APPROX:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "test_filter: APPROX\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "test_filter: APPROX\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "    APPROX\n", 0, 0, 0 );
 #endif
@@ -141,8 +135,7 @@ test_filter(
 
        case LDAP_FILTER_AND:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "test_filter:  AND\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "test_filter:  AND\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "    AND\n", 0, 0, 0 );
 #endif
@@ -152,8 +145,7 @@ test_filter(
 
        case LDAP_FILTER_OR:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "test_filter:        OR\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "test_filter:        OR\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "    OR\n", 0, 0, 0 );
 #endif
@@ -163,8 +155,7 @@ test_filter(
 
        case LDAP_FILTER_NOT:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "test_filter:        NOT\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "test_filter:        NOT\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "    NOT\n", 0, 0, 0 );
 #endif
@@ -186,8 +177,7 @@ test_filter(
 
        case LDAP_FILTER_EXT:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                          "test_filter:        EXT\n" ));
+               LDAP_LOG( FILTER, DETAIL1, "test_filter:        EXT\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_FILTER, "    EXT\n", 0, 0, 0 );
 #endif
@@ -197,9 +187,8 @@ test_filter(
 
        default:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
-                          "test_filter:  unknown filter type %lu\n", 
-                      f->f_choice ));
+               LDAP_LOG( FILTER, INFO, 
+                       "test_filter:  unknown filter type %lu\n", f->f_choice, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "    unknown filter type %lu\n",
                    f->f_choice, 0, 0 );
@@ -209,8 +198,7 @@ test_filter(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "test_filter:  return=%d\n", rc ));
+       LDAP_LOG( FILTER, RESULTS, "test_filter:  return=%d\n", rc, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "<= test_filter %d\n", rc, 0, 0 );
 #endif
@@ -382,8 +370,7 @@ test_filter_and(
        int rtn = LDAP_COMPARE_TRUE; /* True if empty */
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "test_filter_and: begin\n" ));
+       LDAP_LOG( FILTER, ENTRY, "test_filter_and: begin\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "=> test_filter_and\n", 0, 0, 0 );
 #endif
@@ -405,8 +392,7 @@ test_filter_and(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "test_filter_and:  rc=%d\n", rtn ));
+       LDAP_LOG( FILTER, RESULTS, "test_filter_and:  rc=%d\n", rtn, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "<= test_filter_and %d\n", rtn, 0, 0 );
 #endif
@@ -427,8 +413,7 @@ test_filter_or(
        int rtn = LDAP_COMPARE_FALSE; /* False if empty */
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "test_filter_or: begin\n" ));
+       LDAP_LOG( FILTER, ENTRY, "test_filter_or: begin\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "=> test_filter_or\n", 0, 0, 0 );
 #endif
@@ -450,8 +435,7 @@ test_filter_or(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "test_filter_or: result=%d\n", rtn ));
+       LDAP_LOG( FILTER, ENTRY, "test_filter_or: result=%d\n", rtn, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "<= test_filter_or %d\n", rtn, 0, 0 );
 #endif
@@ -472,8 +456,7 @@ test_substrings_filter(
        Attribute       *a;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "test_substrings_filter: begin\n" ));
+       LDAP_LOG( FILTER, ENTRY, "test_substrings_filter: begin\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "begin test_substrings_filter\n", 0, 0, 0 );
 #endif
@@ -516,8 +499,7 @@ test_substrings_filter(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-                  "test_substrings_filter: return FALSE\n" ));
+       LDAP_LOG( FILTER, ENTRY, "test_substrings_filter: return FALSE\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "end test_substrings_filter 1\n", 0, 0, 0 );
 #endif
index c96040e39238a078aa15826e4bc684b6a4e67ec3..b860b3f673bdce6e7935f3aadc39a00100d44873 100644 (file)
@@ -75,9 +75,9 @@ slap_init( int mode, const char *name )
 
        if( slapMode != SLAP_UNDEFINED_MODE ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
-                          "init: %s init called twice (old=%d, new=%d)\n",
-                          name, slapMode, mode ));
+               LDAP_LOG( OPERATION, CRIT, 
+                       "init: %s init called twice (old=%d, new=%d)\n",
+                       name, slapMode, mode );
 #else
                Debug( LDAP_DEBUG_ANY,
                 "%s init: init called twice (old=%d, new=%d)\n",
@@ -93,9 +93,10 @@ slap_init( int mode, const char *name )
                case SLAP_SERVER_MODE:
                case SLAP_TOOL_MODE:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                                  "init: %s initiation, initiated %s.\n",
-                                  name, (mode & SLAP_MODE) == SLAP_TOOL_MODE ? "tool" : "server" ));
+                       LDAP_LOG( OPERATION, DETAIL1, 
+                               "init: %s initiation, initiated %s.\n",
+                               name, (mode & SLAP_MODE) == SLAP_TOOL_MODE ? 
+                                 "tool" : "server", 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "%s init: initiated %s.\n",     name,
@@ -139,8 +140,8 @@ slap_init( int mode, const char *name )
 
                default:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "init: %s init, undefined mode (%d).\n", name, mode ));
+                       LDAP_LOG( OPERATION, ERR, 
+                               "init: %s init, undefined mode (%d).\n", name, mode, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "%s init: undefined mode (%d).\n", name, mode, 0 );
@@ -158,8 +159,7 @@ int slap_startup( Backend *be )
        int rc;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
-                  "slap_startup: %s started\n", slap_name ));
+       LDAP_LOG( OPERATION, CRIT, "slap_startup: %s started\n", slap_name, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "%s startup: initiated.\n",
@@ -177,8 +177,8 @@ int slap_shutdown( Backend *be )
        int rc;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
-                  "slap_shutdown: %s shutdown initiated.\n", slap_name));
+       LDAP_LOG( OPERATION, CRIT, 
+               "slap_shutdown: %s shutdown initiated.\n", slap_name, 0, 0);
 #else
        Debug( LDAP_DEBUG_TRACE,
                "%s shutdown: initiated\n",
@@ -199,9 +199,8 @@ int slap_destroy(void)
        int rc;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                  "slap_destroy: %s freeing system resources.\n",
-                  slap_name ));
+       LDAP_LOG( OPERATION, INFO, 
+               "slap_destroy: %s freeing system resources.\n", slap_name, 0, 0);
 #else
        Debug( LDAP_DEBUG_TRACE,
                "%s shutdown: freeing system resources.\n",
index c33726e71190b011a143de2f8a8eb210618142a3..c34e84882164cf464ffff65fed2ba270e8f16627 100644 (file)
@@ -223,10 +223,9 @@ parse_limits(
 
        if ( argc < 3 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+               LDAP_LOG( CONFIG, CRIT, 
                        "%s : line %d: missing arg(s) in "
-                       "\"limits <pattern> <limits>\" line.\n",
-                       fname, lineno ));
+                       "\"limits <pattern> <limits>\" line.\n", fname, lineno, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "%s : line %d: missing arg(s) in "
@@ -328,13 +327,11 @@ parse_limits(
                default:
                        if ( pattern[0] != '=' ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT, 
                                        "%s : line %d: missing '=' in "
                                        "\"dn[.{exact|base|one|subtree"
-                                       "|children|regex|anonymous}]"
-                                       "=<pattern>\" in "
-                                       "\"limits <pattern> <limits>\" line.\n",
-                                       fname, lineno ));
+                                       "|children|regex|anonymous}]" "=<pattern>\" in "
+                                       "\"limits <pattern> <limits>\" line.\n", fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s : line %d: missing '=' in "
@@ -369,10 +366,10 @@ parse_limits(
                if ( parse_limit( argv[i], &limit ) ) {
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                       LDAP_LOG( CONFIG, CRIT, 
                                "%s : line %d: unknown limit type \"%s\" in "
                                "\"limits <pattern> <limits>\" line.\n",
-                       fname, lineno, argv[i] ));
+                               fname, lineno, argv[i] );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "%s : line %d: unknown limit type \"%s\" in "
index 305fb5b91ce0d346275ad6faf836fbd13d8d4b97..13fe405b14e1583526f4263c620a1748f4549bf6 100644 (file)
@@ -1,48 +1,59 @@
 /* lock.c - routines to open and apply an advisory lock to a file */
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
 
-#include <stdio.h>
-#include <sys/time.h>
-#include <sys/types.h>
 #include "portable.h"
-#ifdef USE_LOCKF
-#include <unistd.h>
-#endif
+
+#include <stdio.h>
+
+#include <ac/string.h>
+#include <ac/socket.h>
+#include <ac/time.h>
+#include <ac/unistd.h>
+
+#ifdef HAVE_SYS_FILE_H
 #include <sys/file.h>
-#include <sys/param.h>
-#include <sys/socket.h>
+#endif
+
 #include "slap.h"
 
 FILE *
-lock_fopen( char *fname, char *type, FILE **lfp )
+lock_fopen( const char *fname, const char *type, FILE **lfp )
 {
        FILE    *fp;
        char    buf[MAXPATHLEN];
 
        /* open the lock file */
-       strcpy( buf, fname );
-       strcat( buf, ".lock" );
+       strcpy(lutil_strcopy( buf, fname ), ".lock" );
        if ( (*lfp = fopen( buf, "w" )) == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( OPERATION, ERR, 
+                       "lock_fopen: could not open lock file \"%s\".\n", buf, 0, 0);
+#else
                Debug( LDAP_DEBUG_ANY, "could not open \"%s\"\n", buf, 0, 0 );
+#endif
+
                return( NULL );
        }
 
        /* acquire the lock */
-#ifdef USE_LOCKF
-       while ( lockf( fileno( *lfp ), F_LOCK, 0 ) != 0 ) {
-#else
-       while ( flock( fileno( *lfp ), LOCK_EX ) != 0 ) {
-#endif
-               ;       /* NULL */
-       }
+       ldap_lockf( fileno(*lfp) );
 
        /* open the log file */
        if ( (fp = fopen( fname, type )) == NULL ) {
-               Debug( LDAP_DEBUG_ANY, "could not open \"%s\"\n", fname, 0, 0 );
-#ifdef USE_LOCKF
-               lockf( fileno( *lfp ), F_ULOCK, 0 );
+#ifdef NEW_LOGGING
+               LDAP_LOG( OPERATION, ERR, 
+                       "lock_fopen: could not open log file \"%s\".\n", buf, 0, 0);
 #else
-               flock( fileno( *lfp ), LOCK_UN );
+               Debug( LDAP_DEBUG_ANY, "could not open \"%s\"\n", fname, 0, 0 );
 #endif
+
+               ldap_unlockf( fileno(*lfp) );
+               fclose( *lfp );
+               *lfp = NULL;
                return( NULL );
        }
 
@@ -53,11 +64,7 @@ int
 lock_fclose( FILE *fp, FILE *lfp )
 {
        /* unlock */
-#ifdef USE_LOCKF
-       lockf( fileno( lfp ), F_ULOCK, 0 );
-#else
-       flock( fileno( lfp ), LOCK_UN );
-#endif
+       ldap_unlockf( fileno(lfp) );
        fclose( lfp );
 
        return( fclose( fp ) );
index cea889cf7adfc9c38a657b481e40f431b4929b54..de931e49088dd0318cf6b010e6556abb2f6b8520 100644 (file)
@@ -177,8 +177,10 @@ int main( int argc, char **argv )
                {
                        slap_debug = *i;
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                                  "main: new debug level from registry is: %d\n", slap_debug ));
+                       lutil_log_initialize( argc, argv );
+                       LDAP_LOG( SLAPD, INFO, 
+                               "main: new debug level from registry is: %d\n", 
+                               slap_debug, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "new debug level from registry is: %d\n", slap_debug, 0, 0 );
 #endif
@@ -192,8 +194,8 @@ int main( int argc, char **argv )
 
                    urls = ch_strdup(newUrls);
 #ifdef NEW_LOGGING
-                   LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                              "main: new urls from registry: %s\n", urls ));
+                   LDAP_LOG( SLAPD, INFO, 
+                               "main: new urls from registry: %s\n", urls, 0, 0 );
 #else
                    Debug(LDAP_DEBUG_ANY, "new urls from registry: %s\n",
                          urls, 0, 0);
@@ -206,8 +208,8 @@ int main( int argc, char **argv )
                {
                        configfile = newConfigFile;
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                                  "main: new config file from registry is: %s\n", configfile ));
+                       LDAP_LOG( SLAPD, INFO, 
+                               "main: new config file from registry is: %s\n", configfile, 0, 0 );
 #else
                        Debug ( LDAP_DEBUG_ANY, "new config file from registry is: %s\n", configfile, 0, 0 );
 #endif
@@ -310,16 +312,15 @@ int main( int argc, char **argv )
 
 #ifdef NEW_LOGGING
        lutil_log_initialize( argc, argv );
-#endif
-
+#else
        lutil_set_debug_level( "slapd", slap_debug );
        ber_set_option(NULL, LBER_OPT_DEBUG_LEVEL, &slap_debug);
        ldap_set_option(NULL, LDAP_OPT_DEBUG_LEVEL, &slap_debug);
        ldif_debug = slap_debug;
+#endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                  "%s", Versionstr ));
+       LDAP_LOG( SLAPD, INFO, "%s", Versionstr, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "%s", Versionstr, 0, 0 );
 #endif
@@ -384,8 +385,7 @@ int main( int argc, char **argv )
 
        if ( slap_schema_init( ) != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
-                          "main: schema initialization error\n" ));
+               LDAP_LOG( OPERATION, CRIT, "main: schema initialization error\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "schema initialization error\n",
@@ -424,8 +424,7 @@ int main( int argc, char **argv )
 
        if ( glue_sub_init( ) != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
-                          "main: subordinate config error\n"));
+               LDAP_LOG( SLAPD, CRIT, "main: subordinate config error\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "subordinate config error\n",
@@ -436,8 +435,7 @@ int main( int argc, char **argv )
 
        if ( slap_schema_check( ) != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
-                          "main: schema prep error\n"));
+               LDAP_LOG( SLAPD, CRIT, "main: schema prep error\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "schema prep error\n",
@@ -451,8 +449,7 @@ int main( int argc, char **argv )
        rc = ldap_pvt_tls_init();
        if( rc != 0) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
-                          "main: tls init failed: %d\n", rc ));
+               LDAP_LOG( SLAPD, CRIT, "main: tls init failed: %d\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "main: TLS init failed: %d\n",
@@ -466,8 +463,7 @@ int main( int argc, char **argv )
        rc = ldap_pvt_tls_init_def_ctx();
        if( rc != 0) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
-                          "main: tls init def ctx failed: %d\n", rc ));
+               LDAP_LOG( SLAPD, CRIT, "main: tls init def ctx failed: %d\n", rc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                    "main: TLS init def ctx failed: %d\n",
@@ -516,8 +512,7 @@ int main( int argc, char **argv )
                FILE *fp;
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                          "main: slapd starting.\n" ));
+               LDAP_LOG( SLAPD, INFO, "main: slapd starting.\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "slapd starting\n", 0, 0, 0 );
 #endif
@@ -575,8 +570,7 @@ stop:
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_CRIT,
-                  "main: slapd stopped.\n" ));
+       LDAP_LOG( SLAPD, CRIT, "main: slapd stopped.\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ANY, "slapd stopped.\n", 0, 0, 0 );
 #endif
index 56bd29667b491b59dc3e40bd258be1e43a5266a5..483a14956d225e1f988caa2bf4636202ff340a42 100644 (file)
@@ -73,8 +73,7 @@ filter_matched_values(
        int             rc = LDAP_SUCCESS;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "filter_matched_values: begin\n" ));
+       LDAP_LOG( FILTER, ENTRY, "filter_matched_values: begin\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "=> filter_matched_values\n", 0, 0, 0 );
 #endif
@@ -83,13 +82,12 @@ filter_matched_values(
                switch ( f->f_choice ) {
                case SLAPD_FILTER_COMPUTED:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
+                       LDAP_LOG( FILTER, DETAIL1, 
                                "test_vrFilter: COMPUTED %s (%d)\n",
                                f->f_result == LDAP_COMPARE_FALSE ? "false" :
                                f->f_result == LDAP_COMPARE_TRUE         ? "true"  :
                                f->f_result == SLAPD_COMPARE_UNDEFINED ? "undefined" :
-                               "error",
-                               f->f_result ));
+                               "error", f->f_result, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "     COMPUTED %s (%d)\n",
                                f->f_result == LDAP_COMPARE_FALSE ? "false" :
@@ -103,8 +101,7 @@ filter_matched_values(
 
                case LDAP_FILTER_EQUALITY:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                               "test_vrFilter: EQUALITY\n" ));
+                       LDAP_LOG( FILTER, DETAIL1, "test_vrFilter: EQUALITY\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "     EQUALITY\n", 0, 0, 0 );
 #endif
@@ -117,8 +114,7 @@ filter_matched_values(
 
                case LDAP_FILTER_SUBSTRINGS:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                               "test_vrFilter  SUBSTRINGS\n" ));
+                       LDAP_LOG( FILTER, DETAIL1, "test_vrFilter  SUBSTRINGS\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "     SUBSTRINGS\n", 0, 0, 0 );
 #endif
@@ -132,8 +128,7 @@ filter_matched_values(
 
                case LDAP_FILTER_PRESENT:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                               "test_vrFilter: PRESENT\n" ));
+                       LDAP_LOG( FILTER, DETAIL1, "test_vrFilter:      PRESENT\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "     PRESENT\n", 0, 0, 0 );
 #endif
@@ -162,8 +157,7 @@ filter_matched_values(
 
                case LDAP_FILTER_EXT:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_DETAIL1,
-                               "test_vrFilter: EXT\n" ));
+                       LDAP_LOG( FILTER, DETAIL1, "test_vrFilter:      EXT\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_FILTER, "     EXT\n", 0, 0, 0 );
 #endif
@@ -176,9 +170,8 @@ filter_matched_values(
 
                default:
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "filter", LDAP_LEVEL_INFO,
-                               "test_vrFilter:  unknown filter type %lu\n", 
-                               f->f_choice ));
+                       LDAP_LOG( FILTER, INFO, 
+                               "test_vrFilter:  unknown filter type %lu\n", f->f_choice, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "        unknown filter type %lu\n",
                                f->f_choice, 0, 0 );
@@ -188,8 +181,7 @@ filter_matched_values(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "filter_matched_values:  return=%d\n", rc ));
+       LDAP_LOG( FILTER, ENTRY, "filter_matched_values:  return=%d\n", rc, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "<= filter_matched_values %d\n", rc, 0, 0 );
 #endif
index 5e7440973711638a420d3188ecb89ce473cad5e0..30e9cca497134dd57182051704f1f75d38dc080c 100644 (file)
@@ -50,8 +50,7 @@ do_modify(
        int manageDSAit;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-               "do_modify: enter\n" ));
+       LDAP_LOG( OPERATION, ENTRY, "do_modify: enter\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "do_modify\n", 0, 0, 0 );
 #endif
@@ -77,8 +76,7 @@ do_modify(
 
        if ( ber_scanf( op->o_ber, "{m" /*}*/, &dn ) == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_modify: ber_scanf failed\n" ));
+               LDAP_LOG( OPERATION, ERR, "do_modify: ber_scanf failed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_modify: ber_scanf failed\n", 0, 0, 0 );
 #endif
@@ -89,8 +87,7 @@ do_modify(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-                  "do_modify: dn (%s)\n", dn.bv_val ));
+       LDAP_LOG( OPERATION, ARGS, "do_modify: dn (%s)\n", dn.bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "do_modify: dn (%s)\n", dn.bv_val, 0, 0 );
 #endif
@@ -128,9 +125,9 @@ do_modify(
                case LDAP_MOD_ADD:
                        if ( mod->sml_bvalues == NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
+                               LDAP_LOG( OPERATION, ERR, 
                                        "do_modify: modify/add operation (%ld) requires values\n",
-                                       (long)mop ));
+                                       (long)mop, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "do_modify: modify/add operation (%ld) requires values\n",
@@ -152,9 +149,8 @@ do_modify(
 
                default: {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                       "do_modify: invalid modify operation (%ld)\n",
-                                       (long)mop ));
+                               LDAP_LOG( OPERATION, ERR, 
+                                       "do_modify: invalid modify operation (%ld)\n", (long)mop, 0, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "do_modify: invalid modify operation (%ld)\n",
@@ -174,8 +170,7 @@ do_modify(
 
        if( (rc = get_ctrls( conn, op, 1 )) != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_modify: get_ctrls failed\n" ));
+               LDAP_LOG( OPERATION, ERR, "do_modify: get_ctrls failed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_modify: get_ctrls failed\n", 0, 0, 0 );
 #endif
@@ -186,9 +181,8 @@ do_modify(
        rc = dnPrettyNormal( NULL, &dn, &pdn, &ndn );
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                       "do_modify: conn %d  invalid dn (%s)\n",
-                       conn->c_connid, dn.bv_val ));
+               LDAP_LOG( OPERATION, INFO, "do_modify: conn %d  invalid dn (%s)\n",
+                       conn->c_connid, dn.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "do_modify: invalid dn (%s)\n", dn.bv_val, 0, 0 );
@@ -200,8 +194,8 @@ do_modify(
 
        if( ndn.bv_len == 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_modify: attempt to modify root DSE.\n" ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_modify: attempt to modify root DSE.\n",0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_modify: root dse!\n", 0, 0, 0 );
 #endif
@@ -213,8 +207,8 @@ do_modify(
 #if defined( SLAPD_SCHEMA_DN )
        } else if ( strcasecmp( ndn.bv_val, SLAPD_SCHEMA_DN ) == 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_modify: attempt to modify subschema subentry.\n" ));
+               LDAP_LOG( OPERATION, ERR,
+                       "do_modify: attempt to modify subschema subentry.\n" , 0, 0, 0  );
 #else
                Debug( LDAP_DEBUG_ANY, "do_modify: subschema subentry!\n", 0, 0, 0 );
 #endif
@@ -228,31 +222,26 @@ do_modify(
 
 #ifdef LDAP_DEBUG
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-               "do_modify: modifications:\n" ));
+       LDAP_LOG( OPERATION, DETAIL1, "do_modify: modifications:\n", 0, 0, 0  );
 #else
        Debug( LDAP_DEBUG_ARGS, "modifications:\n", 0, 0, 0 );
 #endif
 
        for ( tmp = modlist; tmp != NULL; tmp = tmp->sml_next ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                       "\t%s:  %s\n", tmp->sml_op == LDAP_MOD_ADD ?
-                               "add" : (tmp->sml_op == LDAP_MOD_DELETE ?
-                                       "delete" : "replace"), tmp->sml_type.bv_val ));
+               LDAP_LOG( OPERATION, DETAIL1, "\t%s:  %s\n", 
+                       tmp->sml_op == LDAP_MOD_ADD ?
+                       "add" : (tmp->sml_op == LDAP_MOD_DELETE ?
+                       "delete" : "replace"), tmp->sml_type.bv_val, 0 );
 
                if ( tmp->sml_bvalues == NULL ) {
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                          "\t\tno values" ));
+                       LDAP_LOG( OPERATION, DETAIL1, "\t\tno values", 0, 0, 0 );
                } else if ( tmp->sml_bvalues[0].bv_val == NULL ) {
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                          "\t\tzero values" ));
+                       LDAP_LOG( OPERATION, DETAIL1, "\t\tzero values", 0, 0, 0 );
                } else if ( tmp->sml_bvalues[1].bv_val == NULL ) {
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                          "\t\tone value" ));
+                       LDAP_LOG( OPERATION, DETAIL1, "\t\tone value", 0, 0, 0 );
                } else {
-                       LDAP_LOG(( "operation", LDAP_LEVEL_DETAIL1,
-                          "\t\tmultiple values" ));
+                       LDAP_LOG( OPERATION, DETAIL1, "\t\tmultiple values", 0, 0, 0 );
                }
 
 #else
@@ -574,7 +563,7 @@ int slap_mods_opattrs(
 
                ldap_pvt_thread_mutex_lock( &gmtime_mutex );
                ltm = gmtime( &now );
-               strftime( timebuf, sizeof(timebuf), "%Y%m%d%H%M%SZ", ltm );
+               lutil_gentime( timebuf, sizeof(timebuf), ltm );
 
                csn.bv_len = lutil_csnstr( csnbuf, sizeof( csnbuf ), 0, 0 );
                ldap_pvt_thread_mutex_unlock( &gmtime_mutex );
index eca68cace571f2fd5b35d3499c6d871b367853f2..8cb8a2737de44897807b7ed55f776ce959424073 100644 (file)
@@ -65,8 +65,7 @@ do_modrdn(
        int manageDSAit;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-               "do_modrdn: begin\n" ));
+       LDAP_LOG( OPERATION, ENTRY, "do_modrdn: begin\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "do_modrdn\n", 0, 0, 0 );
 #endif
@@ -87,8 +86,7 @@ do_modrdn(
            == LBER_ERROR )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_modrdn: ber_scanf failed\n" ));
+               LDAP_LOG( OPERATION, ERR, "do_modrdn: ber_scanf failed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_scanf failed\n", 0, 0, 0 );
 #endif
@@ -106,8 +104,8 @@ do_modrdn(
                         * newSuperior is present: report error.
                         */
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                               "do_modrdn: (v2) invalid field newSuperior.\n" ));
+                       LDAP_LOG( OPERATION, ERR,
+                               "do_modrdn: (v2) invalid field newSuperior.\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                            "modrdn(v2): invalid field newSuperior!\n",
@@ -124,8 +122,8 @@ do_modrdn(
                     == LBER_ERROR ) {
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                               "do_modrdn: ber_scanf(\"m\") failed\n" ));
+                       LDAP_LOG( OPERATION, ERR,
+                               "do_modrdn: ber_scanf(\"m\") failed\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "ber_scanf(\"m\") failed\n",
                                0, 0, 0 );
@@ -141,10 +139,10 @@ do_modrdn(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
+       LDAP_LOG( OPERATION, ARGS, 
                "do_modrdn: dn (%s) newrdn (%s) newsuperior(%s)\n",
                dn.bv_val, newrdn.bv_val,
-               newSuperior.bv_len ? newSuperior.bv_val : "" ));
+               newSuperior.bv_len ? newSuperior.bv_val : "" );
 #else
        Debug( LDAP_DEBUG_ARGS,
            "do_modrdn: dn (%s) newrdn (%s) newsuperior (%s)\n",
@@ -154,8 +152,7 @@ do_modrdn(
 
        if ( ber_scanf( op->o_ber, /*{*/ "}") == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_modrdn: ber_scanf failed\n" ));
+               LDAP_LOG( OPERATION, ERR, "do_modrdn: ber_scanf failed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_modrdn: ber_scanf failed\n", 0, 0, 0 );
 #endif
@@ -168,8 +165,7 @@ do_modrdn(
 
        if( (rc = get_ctrls( conn, op, 1 )) != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_modrdn: get_ctrls failed\n" ));
+               LDAP_LOG( OPERATION, ERR, "do_modrdn: get_ctrls failed\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_modrdn: get_ctrls failed\n", 0, 0, 0 );
 #endif
@@ -181,9 +177,9 @@ do_modrdn(
        rc = dnPrettyNormal( NULL, &dn, &pdn, &ndn );
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+               LDAP_LOG( OPERATION, INFO, 
                        "do_modrdn: conn %d  invalid dn (%s)\n",
-                       conn->c_connid, dn.bv_val ));
+                       conn->c_connid, dn.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "do_modrdn: invalid dn (%s)\n", dn.bv_val, 0, 0 );
@@ -195,8 +191,8 @@ do_modrdn(
 
        if( ndn.bv_len == 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "do_modrdn:  attempt to modify root DSE.\n" ));
+               LDAP_LOG( OPERATION, ERR,
+                       "do_modrdn:  attempt to modify root DSE.\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_modrdn: root dse!\n", 0, 0, 0 );
 #endif
@@ -208,8 +204,8 @@ do_modrdn(
 #ifdef SLAPD_SCHEMA_DN
        } else if ( strcasecmp( ndn.bv_val, SLAPD_SCHEMA_DN ) == 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_modrdn: attempt to modify subschema subentry\n" ));
+               LDAP_LOG( OPERATION, ERR,
+                       "do_modrdn: attempt to modify subschema subentry\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_modrdn: subschema subentry!\n", 0, 0, 0 );
 #endif
@@ -225,9 +221,9 @@ do_modrdn(
        rc = dnPrettyNormal( NULL, &newrdn, &pnewrdn, &nnewrdn );
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+               LDAP_LOG( OPERATION, INFO, 
                        "do_modrdn: conn %d  invalid newrdn (%s)\n",
-                       conn->c_connid, newrdn.bv_val ));
+                       conn->c_connid, newrdn.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "do_modrdn: invalid newrdn (%s)\n", newrdn.bv_val, 0, 0 );
@@ -239,8 +235,8 @@ do_modrdn(
 
        if( rdnValidate( &pnewrdn ) != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                       "do_modrdn: invalid rdn (%s).\n", pnewrdn.bv_val ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "do_modrdn: invalid rdn (%s).\n", pnewrdn.bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_modrdn: invalid rdn (%s)\n",
                        pnewrdn.bv_val, 0, 0 );
@@ -256,9 +252,9 @@ do_modrdn(
                        &nnewSuperior );
                if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+                       LDAP_LOG( OPERATION, INFO, 
                                "do_modrdn: conn %d  invalid newSuperior (%s)\n",
-                               conn->c_connid, newSuperior.bv_val ));
+                               conn->c_connid, newSuperior.bv_val, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "do_modrdn: invalid newSuperior (%s)\n",
index 4a58714d5f0a20b385f8f1cdbfe53c88a099f73c..12375773cfae4fcb4a7ca8871a0f8d43b7382f39 100644 (file)
@@ -41,8 +41,8 @@ int module_init (void)
        if (lt_dlinit()) {
                const char *error = lt_dlerror();
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "module", LDAP_LEVEL_CRIT,
-                          "module_init: lt_ldinit failed: %s\n", error ));
+               LDAP_LOG( SLAPD, CRIT, 
+                       "module_init: lt_ldinit failed: %s\n", error, 0, 0 );
 #else
                Debug(LDAP_DEBUG_ANY, "lt_dlinit failed: %s\n", error, 0, 0);
 #endif
@@ -62,8 +62,8 @@ int module_kill (void)
        if (lt_dlexit()) {
                const char *error = lt_dlerror();
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "module", LDAP_LEVEL_CRIT,
-                          "module_kill: lt_dlexit failed: %s\n", error ));
+               LDAP_LOG( SLAPD, CRIT, "module_kill: lt_dlexit failed: %s\n", 
+                       error, 0, 0 );
 #else
                Debug(LDAP_DEBUG_ANY, "lt_dlexit failed: %s\n", error, 0, 0);
 #endif
@@ -83,8 +83,8 @@ int module_load(const char* file_name, int argc, char *argv[])
        module = (module_loaded_t *)ch_calloc(1, sizeof(module_loaded_t));
        if (module == NULL) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "module", LDAP_LEVEL_CRIT,
-                          "module_load:  (%s) out of memory.\n", file_name ));
+               LDAP_LOG( SLAPD, CRIT, 
+                       "module_load:  (%s) out of memory.\n", file_name, 0, 0 );
 #else
                Debug(LDAP_DEBUG_ANY, "module_load failed: (%s) out of memory\n", file_name,
                        0, 0);
@@ -101,9 +101,9 @@ int module_load(const char* file_name, int argc, char *argv[])
        if ((module->lib = lt_dlopen(file_name)) == NULL) {
                error = lt_dlerror();
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "module", LDAP_LEVEL_CRIT,
-                          "module_load: lt_dlopen failed: (%s) %s.\n",
-                          file_name, error ));
+               LDAP_LOG( SLAPD, CRIT, 
+                       "module_load: lt_dlopen failed: (%s) %s.\n", 
+                       file_name, error, 0 );
 #else
                Debug(LDAP_DEBUG_ANY, "lt_dlopen failed: (%s) %s\n", file_name,
                        error, 0);
@@ -114,8 +114,7 @@ int module_load(const char* file_name, int argc, char *argv[])
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "module", LDAP_LEVEL_INFO,
-                  "module_load: loaded module %s\n", file_name ));
+       LDAP_LOG( SLAPD, INFO, "module_load: loaded module %s\n", file_name, 0, 0 );
 #else
        Debug(LDAP_DEBUG_CONFIG, "loaded module %s\n", file_name, 0, 0);
 #endif
@@ -123,9 +122,9 @@ int module_load(const char* file_name, int argc, char *argv[])
    
        if ((initialize = lt_dlsym(module->lib, "init_module")) == NULL) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "module", LDAP_LEVEL_ERR,
-                          "module_load: module %s : no init_module() function found\n",
-                          file_name ));
+               LDAP_LOG( SLAPD, ERR, 
+                       "module_load: module %s : no init_module() function found\n",
+                   file_name, 0, 0 );
 #else
                Debug(LDAP_DEBUG_CONFIG, "module %s: no init_module() function found\n",
                        file_name, 0, 0);
@@ -154,8 +153,8 @@ int module_load(const char* file_name, int argc, char *argv[])
        rc = initialize(argc, argv);
        if (rc == -1) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "module", LDAP_LEVEL_ERR,
-                          "module_load:  module %s init_module() failed\n", file_name));
+               LDAP_LOG( SLAPD, ERR, 
+                       "module_load:  module %s init_module() failed\n", file_name, 0, 0);
 #else
                Debug(LDAP_DEBUG_CONFIG, "module %s: init_module() failed\n",
                        file_name, 0, 0);
@@ -170,8 +169,9 @@ int module_load(const char* file_name, int argc, char *argv[])
                || module_regtable[rc].proc == NULL)
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "module", LDAP_LEVEL_ERR,
-                          "module_load: module %s: unknown registration type (%d).\n", file_name));
+               LDAP_LOG( SLAPD, ERR, 
+                       "module_load: module %s: unknown registration type (%d).\n", 
+                       file_name, 0);
 #else
                Debug(LDAP_DEBUG_CONFIG, "module %s: unknown registration type (%d)\n",
                        file_name, rc, 0);
@@ -184,9 +184,9 @@ int module_load(const char* file_name, int argc, char *argv[])
        rc = (module_regtable[rc].proc)(module, file_name);
        if (rc != 0) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "module", LDAP_LEVEL_ERR,
-                          "module_load: module %s:%s could not be registered.\n",
-                          file_name, module_regtable[rc].type ));
+               LDAP_LOG( SLAPD, ERR, 
+                       "module_load: module %s:%s could not be registered.\n",
+                       file_name, module_regtable[rc].type, 0 );
 #else
                Debug(LDAP_DEBUG_CONFIG, "module %s: %s module could not be registered\n",
                        file_name, module_regtable[rc].type, 0);
@@ -200,9 +200,9 @@ int module_load(const char* file_name, int argc, char *argv[])
        module_list = module;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "module", LDAP_LEVEL_INFO,
-                  "module_load: module %s:%s registered\n", file_name,
-                  module_regtable[rc].type ));
+       LDAP_LOG( SLAPD, INFO, 
+               "module_load: module %s:%s registered\n", file_name,
+               module_regtable[rc].type, 0 );
 #else
        Debug(LDAP_DEBUG_CONFIG, "module %s: %s module registered\n",
                file_name, module_regtable[rc].type, 0);
index f8e788b6e0082d66acd4d2b0676a08588e42c915..dfa34c95d8c34620b6f1b4d194f898bcdf6409a6 100644 (file)
@@ -16,7 +16,6 @@
 #include "slap.h"
 #include "ldap_pvt.h"
 
-
 struct mindexrec {
        struct berval   mir_name;
        MatchingRule    *mir_mr;
@@ -198,8 +197,8 @@ register_matching_rule(
 
        if( usage == SLAP_MR_NONE ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "register_matching_rule: %s not usable\n", desc ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "register_matching_rule: %s not usable\n", desc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "register_matching_rule: not usable %s\n",
                    desc, 0, 0 );
@@ -216,9 +215,9 @@ register_matching_rule(
 
                if( amr == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "register_matching_rule: could not locate associated matching rule %s for %s\n",
-                                  associated, desc ));
+                       LDAP_LOG( OPERATION, ERR,
+                          "register_matching_rule: could not locate associated "
+                          "matching rule %s for %s\n",  associated, desc, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "register_matching_rule: could not locate "
                                "associated matching rule %s for %s\n",
@@ -234,9 +233,9 @@ register_matching_rule(
        mr = ldap_str2matchingrule( desc, &code, &err, LDAP_SCHEMA_ALLOW_ALL);
        if ( !mr ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "register_matching_rule: %s before %s in %s.\n",
-                          ldap_scherr2str(code), err, desc ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "register_matching_rule: %s before %s in %s.\n",
+                       ldap_scherr2str(code), err, desc );
 #else
                Debug( LDAP_DEBUG_ANY, "Error in register_matching_rule: %s before %s in %s\n",
                    ldap_scherr2str(code), err, desc );
@@ -253,9 +252,9 @@ register_matching_rule(
 
        if ( code ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "register_matching_rule: %s for %s in %s.\n",
-                          scherr2str(code), err, desc ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "register_matching_rule: %s for %s in %s.\n",
+                       scherr2str(code), err, desc );
 #else
                Debug( LDAP_DEBUG_ANY, "Error in register_matching_rule: %s for %s in %s\n",
                    scherr2str(code), err, desc );
index 81db86ae7687473872714cc5460984a353f91f45..eca939b02674fd8b17def10f75c736b76a158c53 100644 (file)
@@ -14,7 +14,6 @@
 
 #include "slap.h"
 
-
 void
 mra_free(
        MatchingRuleAssertion *mra,
@@ -53,8 +52,8 @@ get_mra(
 
        if( rtag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "get_mra: ber_scanf (\"{t\") failure\n" ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "get_mra: ber_scanf (\"{t\") failure\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "  get_mra ber_scanf\n", 0, 0, 0 );
 #endif
@@ -68,8 +67,8 @@ get_mra(
                rtag = ber_scanf( ber, "m", &ma->ma_rule_text );
                if ( rtag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "get_mra: ber_scanf(\"o\") failure.\n" ));
+                       LDAP_LOG( OPERATION, ERR,
+                          "get_mra: ber_scanf(\"o\") failure.\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "  get_mra ber_scanf for mr\n", 0, 0, 0 );
 #endif
@@ -82,8 +81,8 @@ get_mra(
                rtag = ber_scanf( ber, "t", &tag );
                if( rtag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "get_mra: ber_scanf (\"t\") failure\n" ));
+                       LDAP_LOG( OPERATION, ERR,
+                          "get_mra: ber_scanf (\"t\") failure\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "  get_mra ber_scanf\n", 0, 0, 0 );
 #endif
@@ -98,8 +97,8 @@ get_mra(
                rtag = ber_scanf( ber, "m", &type );
                if ( rtag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "get_mra: ber_scanf (\"o\") failure.\n" ));
+                       LDAP_LOG( OPERATION, ERR,
+                          "get_mra: ber_scanf (\"o\") failure.\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "  get_mra ber_scanf for ad\n", 0, 0, 0 );
 #endif
@@ -111,8 +110,8 @@ get_mra(
                rtag = ber_scanf( ber, "t", &tag );
                if( rtag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "get_mra: ber_scanf (\"t\") failure.\n" ));
+                       LDAP_LOG( OPERATION, ERR,
+                          "get_mra: ber_scanf (\"t\") failure.\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "  get_mra ber_scanf\n", 0, 0, 0 );
 #endif
@@ -125,8 +124,8 @@ get_mra(
 
        if ( tag != LDAP_FILTER_EXT_VALUE ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "get_mra: ber_scanf missing value\n" ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "get_mra: ber_scanf missing value\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "  get_mra ber_scanf missing value\n", 0, 0, 0 );
 #endif
@@ -140,8 +139,8 @@ get_mra(
 
        if( rtag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "get_mra: ber_scanf (\"o\") failure.\n" ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "get_mra: ber_scanf (\"o\") failure.\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "  get_mra ber_scanf\n", 0, 0, 0 );
 #endif
@@ -161,8 +160,7 @@ get_mra(
 
        if( rtag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "get_mra: ber_scanf failure\n"));
+               LDAP_LOG( OPERATION, ERR, "get_mra: ber_scanf failure\n", 0, 0, 0);
 #else
                Debug( LDAP_DEBUG_ANY, "  get_mra ber_scanf\n", 0, 0, 0 );
 #endif
index 02f6ea402212c9206dff7f9fcbdb6d69477e64fd..2d7c6ce097274af7dd4b5327a207e25eab7ddd23 100644 (file)
@@ -25,8 +25,14 @@ int is_object_subclass(
        if( sub == NULL || sup == NULL ) return 0;
 
 #if 1
+#ifdef NEW_LOGGING
+       LDAP_LOG ( OPERATION, ARGS, 
+               "is_object_subclass(%s,%s) %d\n",
+               sup->soc_oid, sub->soc_oid, sup == sub );
+#else
        Debug( LDAP_DEBUG_TRACE, "is_object_subclass(%s,%s) %d\n",
                sup->soc_oid, sub->soc_oid, sup == sub );
+#endif
 #endif
 
        if( sup == sub ) {
@@ -72,10 +78,10 @@ int is_entry_objectclass(
        if( attr == NULL ) {
                /* no objectClass attribute */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR, "is_entry_objectclass: "
-                       "dn(%s), oid (%s), no objectClass attribute.\n",
-                       e->e_dn == NULL ? "" : e->e_dn,
-                       oc->soc_oclass.oc_oid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "is_entry_objectclass: dn(%s), oid (%s), no objectClass "
+                       "attribute.\n", e->e_dn == NULL ? "" : e->e_dn,
+                       oc->soc_oclass.oc_oid, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "is_entry_objectclass(\"%s\", \"%s\") "
                        "no objectClass attribute\n",
index 06cc1586a87478d2285866f4d7b2badd4b3d0bf0..f45b974272d4bb57a657a29aea2d56f4c2313c0f 100644 (file)
@@ -119,8 +119,8 @@ int slap_passwd_parse( struct berval *reqdata,
        if( tag == LDAP_TAG_EXOP_MODIFY_PASSWD_ID ) {
                if( id == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "slap_passwd_parse: ID not allowed.\n"));
+                       LDAP_LOG( OPERATION, ERR,
+                          "slap_passwd_parse: ID not allowed.\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "slap_passwd_parse: ID not allowed.\n",
                                0, 0, 0 );
@@ -135,8 +135,8 @@ int slap_passwd_parse( struct berval *reqdata,
 
                if( tag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "slap_passwd_parse:  ID parse failed.\n"));
+                       LDAP_LOG( OPERATION, ERR,
+                          "slap_passwd_parse:  ID parse failed.\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "slap_passwd_parse: ID parse failed.\n",
                                0, 0, 0 );
@@ -151,8 +151,8 @@ int slap_passwd_parse( struct berval *reqdata,
        if( tag == LDAP_TAG_EXOP_MODIFY_PASSWD_OLD ) {
                if( oldpass == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "slap_passwd_parse: OLD not allowed.\n" ));
+                       LDAP_LOG( OPERATION, ERR,
+                          "slap_passwd_parse: OLD not allowed.\n" , 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "slap_passwd_parse: OLD not allowed.\n",
                                0, 0, 0 );
@@ -167,8 +167,8 @@ int slap_passwd_parse( struct berval *reqdata,
 
                if( tag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "slap_passwd_parse:  ID parse failed.\n" ));
+                       LDAP_LOG( OPERATION, ERR,
+                          "slap_passwd_parse:  ID parse failed.\n" , 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "slap_passwd_parse: ID parse failed.\n",
                                0, 0, 0 );
@@ -183,8 +183,8 @@ int slap_passwd_parse( struct berval *reqdata,
        if( tag == LDAP_TAG_EXOP_MODIFY_PASSWD_NEW ) {
                if( newpass == NULL ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "slap_passwd_parse:  NEW not allowed.\n" ));
+                       LDAP_LOG( OPERATION, ERR,
+                          "slap_passwd_parse:  NEW not allowed.\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "slap_passwd_parse: NEW not allowed.\n",
                                0, 0, 0 );
@@ -199,8 +199,8 @@ int slap_passwd_parse( struct berval *reqdata,
 
                if( tag == LBER_ERROR ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "slap_passwd_parse:  OLD parse failed.\n"));
+                       LDAP_LOG( OPERATION, ERR,
+                          "slap_passwd_parse:  OLD parse failed.\n", 0, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE, "slap_passwd_parse: OLD parse failed.\n",
                                0, 0, 0 );
@@ -215,8 +215,8 @@ int slap_passwd_parse( struct berval *reqdata,
        if( len != 0 ) {
 decoding_error:
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "slap_passwd_parse: decoding error, len=%ld\n", (long)len ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "slap_passwd_parse: decoding error, len=%ld\n", (long)len, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "slap_passwd_parse: decoding error, len=%ld\n",
@@ -243,8 +243,8 @@ struct berval * slap_passwd_return(
        assert( cred != NULL );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "slap_passwd_return: %ld\n",(long)cred->bv_len ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "slap_passwd_return: %ld\n",(long)cred->bv_len, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "slap_passwd_return: %ld\n",
                (long) cred->bv_len, 0, 0 );
@@ -302,8 +302,7 @@ slap_passwd_generate( struct berval *pass )
 {
        struct berval *tmp;
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "slap_passwd_generate: begin\n" ));
+       LDAP_LOG( OPERATION, ENTRY, "slap_passwd_generate: begin\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "slap_passwd_generate\n", 0, 0, 0 );
 #endif
index 3e75823e0d78d97a1c7cde13915ba00da26370ce..583b09e5b1fbb6af05bbd40df8061fec4988b655 100644 (file)
@@ -267,11 +267,6 @@ LDAP_SLAPD_F (char **) str2charray LDAP_P(( const char *str, const char *brkstr
 LDAP_SLAPD_F (int) charray_strcmp LDAP_P(( const char **a1, const char **a2 ));
 LDAP_SLAPD_F (int) charray_strcasecmp LDAP_P(( const char **a1, const char **a2 ));
 
-LDAP_SLAPD_F (char *) slap_strcopy LDAP_P((
-       char *dst, const char *src ));
-LDAP_SLAPD_F (char *) slap_strncopy LDAP_P((
-       char *dst, const char *src, size_t n ));
-
 /*
  * controls.c
  */
@@ -857,6 +852,7 @@ LDAP_SLAPD_F (void) slap_sasl2dn LDAP_P((
        struct berval *saslname,
        struct berval *dn ));
 LDAP_SLAPD_F (int) slap_sasl_authorized LDAP_P((
+       Connection *conn,
        struct berval *authcid,
        struct berval *authzid ));
 LDAP_SLAPD_F (int) slap_sasl_regexp_config LDAP_P((
index 53edf251fba585d36abccdac5f419b604b499240..a836657fe1bc18ea74429b2ba47401b545e66d9d 100644 (file)
@@ -152,9 +152,9 @@ int validate_global_referral( const char *url )
        default:
                /* other error, bail */
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+               LDAP_LOG( CONFIG, CRIT, 
                        "referral: invalid URL (%s): %s (%d)\n",
-                       url, "" /* ldap_url_error2str(rc) */, rc ));
+                       url, "" /* ldap_url_error2str(rc) */, rc );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "referral: invalid URL (%s): %s (%d)\n",
@@ -167,9 +167,7 @@ int validate_global_referral( const char *url )
 
        if( lurl->lud_dn && *lurl->lud_dn ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                       "referral: URL (%s): contains DN\n",
-                       url ));
+               LDAP_LOG( CONFIG, CRIT, "referral: URL (%s): contains DN\n", url, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "referral: URL (%s): contains DN\n",
@@ -179,9 +177,8 @@ int validate_global_referral( const char *url )
 
        } else if( lurl->lud_attrs ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                       "referral: URL (%s): requests attributes\n",
-                       url ));
+               LDAP_LOG( CONFIG, CRIT, 
+                       "referral: URL (%s): requests attributes\n", url, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "referral: URL (%s): requests attributes\n",
@@ -191,9 +188,8 @@ int validate_global_referral( const char *url )
 
        } else if( lurl->lud_scope != LDAP_SCOPE_DEFAULT ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                       "referral: URL (%s): contains explicit scope\n",
-                       url ));
+               LDAP_LOG( CONFIG, CRIT, 
+                       "referral: URL (%s): contains explicit scope\n", url, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "referral: URL (%s): contains explicit scope\n",
@@ -203,9 +199,8 @@ int validate_global_referral( const char *url )
 
        } else if( lurl->lud_filter ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
-                       "referral: URL (%s): contains explicit filter\n",
-                       url ));
+               LDAP_LOG( CONFIG, CRIT, 
+                       "referral: URL (%s): contains explicit filter\n", url, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "referral: URL (%s): contains explicit filter\n",
index d2def63547477610f7dab2e16c2fcd3d26729537..96a2ef1337cc44fe3b510cb16f7f0d9bd72f9fff 100644 (file)
@@ -133,9 +133,9 @@ static long send_ldap_ber(
                 */
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "send_ldap_ber: conn %lu  ber_flush failed err=%d (%s)\n",
-                          conn ? conn->c_connid : 0, err, sock_errstr(err) ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "send_ldap_ber: conn %lu  ber_flush failed err=%d (%s)\n",
+                       conn ? conn->c_connid : 0, err, sock_errstr(err) );
 #else
                Debug( LDAP_DEBUG_CONNS, "ber_flush failed errno=%d reason=\"%s\"\n",
                    err, sock_errstr(err), 0 );
@@ -197,9 +197,9 @@ send_ldap_response(
        ber_init_w_nullc( ber, LBER_USE_DER );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "send_ldap_response: conn %lu         msgid=%d tag=%lu err=%d\n",
-                  conn ? conn->c_connid : 0, msgid, tag, err ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "send_ldap_response:  msgid=%d tag=%lu err=%d\n",
+               msgid, tag, err );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "send_ldap_response: msgid=%d tag=%lu err=%d\n",
@@ -208,10 +208,10 @@ send_ldap_response(
 
        if( ref ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-                          "send_ldap_response: conn %lu  ref=\"%s\"\n",
-                          conn ? conn->c_connid : 0,
-                          ref[0].bv_val ? ref[0].bv_val : "NULL" ));
+               LDAP_LOG( OPERATION, ARGS, 
+                       "send_ldap_response: conn %lu  ref=\"%s\"\n",
+                       conn ? conn->c_connid : 0, 
+                       ref[0].bv_val ? ref[0].bv_val : "NULL" , 0 );
 #else
                Debug( LDAP_DEBUG_ARGS, "send_ldap_response: ref=\"%s\"\n",
                        ref[0].bv_val ? ref[0].bv_val : "NULL",
@@ -225,9 +225,9 @@ send_ldap_response(
            rc = ber_write(ber, (char *)&op->o_peeraddr, sizeof(struct sockaddr), 0);
            if (rc != sizeof(struct sockaddr)) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "send_ldap_response: conn %lu  ber_write failed\n",
-                          conn ? conn->c_connid : 0 ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "send_ldap_response: conn %lu  ber_write failed\n",
+                       conn ? conn->c_connid : 0 , 0, 0);
 #else
                Debug( LDAP_DEBUG_ANY, "ber_write failed\n", 0, 0, 0 );
 #endif
@@ -285,9 +285,9 @@ send_ldap_response(
 
        if ( rc == -1 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "send_ldap_response: conn %lu  ber_printf failed\n",
-                          conn ? conn->c_connid : 0 ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "send_ldap_response: conn %lu  ber_printf failed\n",
+                       conn ? conn->c_connid : 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
 #endif
@@ -302,9 +302,9 @@ send_ldap_response(
 
        if ( bytes < 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "send_ldap_response: conn %lu ber write failed\n",
-                          conn ? conn->c_connid : 0 ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "send_ldap_response: conn %lu ber write failed\n",
+                       conn ? conn->c_connid : 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "send_ldap_response: ber write failed\n",
@@ -342,9 +342,9 @@ send_ldap_disconnect(
        assert( LDAP_UNSOLICITED_ERROR( err ) );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "send_ldap_disconnect: conn %lu  %d:%s\n",
-                  conn ? conn->c_connid : 0, err, text ? text : "" ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "send_ldap_disconnect: conn %lu  %d:%s\n",
+               conn ? conn->c_connid : 0, err, text ? text : "" );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "send_ldap_disconnect %d:%s\n",
@@ -390,9 +390,9 @@ send_ldap_result(
        assert( !LDAP_API_ERROR( err ) );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "send_ldap_result : conn %lu   op=%lu p=%d\n",
-                  op->o_connid, op->o_opid, op->o_protocol ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "send_ldap_result : conn %lu      op=%lu p=%d\n",
+               op->o_connid, op->o_opid, op->o_protocol );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "send_ldap_result: conn=%lu op=%lu p=%d\n",
@@ -400,9 +400,9 @@ send_ldap_result(
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-                  "send_ldap_result: conn=%lu err=%d matched=\"%s\" text=\"%s\"\n",
-                  op->o_connid, err, matched ? matched : "", text ? text : "" ));
+       LDAP_LOG( OPERATION, ARGS, 
+               "send_ldap_result: err=%d matched=\"%s\" text=\"%s\"\n",
+               err, matched ? matched : "", text ? text : "" );
 #else
        Debug( LDAP_DEBUG_ARGS,
                "send_ldap_result: err=%d matched=\"%s\" text=\"%s\"\n",
@@ -412,9 +412,9 @@ send_ldap_result(
 
        if( ref ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
+               LDAP_LOG( OPERATION, ARGS, 
                        "send_ldap_result: referral=\"%s\"\n",
-                       ref[0].bv_val ? ref[0].bv_val : "NULL" ));
+                       ref[0].bv_val ? ref[0].bv_val : "NULL", 0, 0 );
 #else
                Debug( LDAP_DEBUG_ARGS,
                        "send_ldap_result: referral=\"%s\"\n",
@@ -471,9 +471,9 @@ send_ldap_sasl(
        ber_int_t msgid;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "send_ldap_sasl: conn %lu err=%d len=%lu\n",
-                  op->o_connid, err, cred ? cred->bv_len : -1 ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "send_ldap_sasl: conn %lu err=%d len=%lu\n",
+               op->o_connid, err, cred ? cred->bv_len : -1 );
 #else
        Debug( LDAP_DEBUG_TRACE, "send_ldap_sasl: err=%d len=%ld\n",
                err, cred ? (long) cred->bv_len : -1, NULL );
@@ -505,10 +505,10 @@ send_ldap_extended(
        ber_int_t msgid;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "send_ldap_extended: conn %lu         err=%d oid=%s len=%ld\n",
-                  op->o_connid, err, rspoid ? rspoid : "",
-                  rspdata != NULL ? rspdata->bv_len : 0 ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "send_ldap_extended: err=%d oid=%s len=%ld\n",
+               err, rspoid ? rspoid : "",
+               rspdata != NULL ? rspdata->bv_len : 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "send_ldap_extended err=%d oid=%s len=%ld\n",
@@ -552,11 +552,9 @@ send_search_result(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "send_search_result: conn %lu err=%d "
-                  "matched=\"%s\" text=\"%s\"\n",
-                  op->o_connid, err, matched ? matched : "",
-                  text ? text : "" ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "send_search_result: err=%d matched=\"%s\" text=\"%s\"\n",
+               err, matched ? matched : "", text ? text : "" );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "send_search_result: err=%d matched=\"%s\" text=\"%s\"\n",
@@ -595,7 +593,7 @@ send_search_result(
 
        {
        char nbuf[64];
-       sprintf( nbuf, "%d nentries=%d", err, nentries );
+       snprintf( nbuf, sizeof nbuf, "%d nentries=%d", err, nentries );
 
        Statslog( LDAP_DEBUG_STATS,
            "conn=%lu op=%lu SEARCH RESULT tag=%lu err=%s text=%s\n",
@@ -647,10 +645,9 @@ send_search_entry(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "send_search_entry: conn %lu dn=\"%s\"%s\n",
-                  op->o_connid, e->e_dn,
-                  attrsonly ? " (attrsOnly)" : "" ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "send_search_entry: conn %lu    dn=\"%s\"%s\n",
+               op->o_connid, e->e_dn, attrsonly ? " (attrsOnly)" : "" );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "=> send_search_entry: dn=\"%s\"%s\n",
@@ -661,10 +658,9 @@ send_search_entry(
                ad_entry, NULL, ACL_READ, NULL ) )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_INFO,
-                          "send_search_entry: conn %lu access "
-                          "to entry (%s) not allowed\n",
-                          op->o_connid, e->e_dn ));
+               LDAP_LOG( ACL, INFO, 
+                       "send_search_entry: conn %lu access to entry (%s) not allowed\n", 
+                       op->o_connid, e->e_dn, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "send_search_entry: access to entry not allowed\n",
@@ -683,9 +679,9 @@ send_search_entry(
            rc = ber_write(ber, (char *)&op->o_peeraddr, sizeof(struct sockaddr), 0);
            if (rc != sizeof(struct sockaddr)) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "send_search_entry: conn %lu  ber_printf failed\n",
-                          conn ? conn->c_connid : 0 ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "send_search_entry: conn %lu  ber_printf failed\n",
+                       conn ? conn->c_connid : 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
 #endif
@@ -705,9 +701,9 @@ send_search_entry(
 
        if ( rc == -1 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "send_search_entry: conn %lu  ber_printf failed\n",
-                          op->o_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "send_search_entry: conn %lu  ber_printf failed\n", 
+                       op->o_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
 #endif
@@ -753,10 +749,9 @@ send_search_entry(
            
                if ( rc == -1 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                               "send_search_entry: conn %lu "
-                               "matched values filtering failed\n",
-                               conn ? conn->c_connid : 0 ));
+                       LDAP_LOG( OPERATION, ERR, 
+                               "send_search_entry: conn %lu matched values filtering failed\n",
+                               conn ? conn->c_connid : 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                                "matched values filtering failed\n", 0, 0, 0 );
@@ -805,10 +800,9 @@ send_search_entry(
                        ACL_READ, &acl_state ) )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_INFO, "send_search_entry: "
-                               "conn %lu  access to attribute %s "
-                               "not allowed\n",
-                               op->o_connid, desc->ad_cname.bv_val ));
+                       LDAP_LOG( ACL, INFO, 
+                               "send_search_entry: conn %lu  access to attribute %s not "
+                               "allowed\n", op->o_connid, desc->ad_cname.bv_val, 0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "acl: "
                                "access to attribute %s not allowed\n",
@@ -819,10 +813,9 @@ send_search_entry(
 
                if (( rc = ber_printf( ber, "{O[" /*]}*/ , &desc->ad_cname )) == -1 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                               "send_search_entry: "
-                               "conn %lu  ber_printf failed\n",
-                               op->o_connid ));
+                       LDAP_LOG( OPERATION, ERR, 
+                               "send_search_entry: conn %lu  ber_printf failed\n", 
+                               op->o_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
 #endif
@@ -844,12 +837,10 @@ send_search_entry(
                                        desc, &a->a_vals[i], ACL_READ, &acl_state ) )
                                {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "acl", LDAP_LEVEL_INFO,
+                                       LDAP_LOG( ACL, INFO, 
                                                "send_search_entry: conn %lu "
-                                               "access to attribute %s, "
-                                               "value %d not allowed\n",
-                                               op->o_connid, 
-                                               desc->ad_cname.bv_val, i ));
+                                               "access to attribute %s, value %d not allowed\n",
+                                               op->o_connid, desc->ad_cname.bv_val, i );
 #else
                                        Debug( LDAP_DEBUG_ACL,
                                                "acl: access to attribute %s, "
@@ -866,10 +857,9 @@ send_search_entry(
 
                                if (( rc = ber_printf( ber, "O", &a->a_vals[i] )) == -1 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
+                                       LDAP_LOG( OPERATION, ERR, 
                                                "send_search_entry: conn %lu  "
-                                               "ber_printf failed.\n",
-                                               op->o_connid ));
+                                               "ber_printf failed.\n", op->o_connid, 0, 0 );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                            "ber_printf failed\n", 0, 0, 0 );
@@ -891,10 +881,9 @@ send_search_entry(
 
                if (( rc = ber_printf( ber, /*{[*/ "]N}" )) == -1 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                               "send_search_entry: conn %lu  "
-                               "ber_printf failed\n",
-                               op->o_connid ));
+                       LDAP_LOG( OPERATION, ERR, 
+                               "send_search_entry: conn %lu ber_printf failed\n", 
+                               op->o_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
 #endif
@@ -940,10 +929,10 @@ send_search_entry(
            
                if ( rc == -1 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
+                       LDAP_LOG( OPERATION, ERR, 
                                "send_search_entry: conn %lu "
-                               "matched values filtering failed\n",
-                               conn ? conn->c_connid : 0 ));
+                               "matched values filtering failed\n", 
+                               conn ? conn->c_connid : 0, 0, 0);
 #else
                Debug( LDAP_DEBUG_ANY,
                                "matched values filtering failed\n", 0, 0, 0 );
@@ -992,10 +981,10 @@ send_search_entry(
                        ACL_READ, &acl_state ) )
                {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "acl", LDAP_LEVEL_INFO,
+                       LDAP_LOG( ACL, INFO, 
                                "send_search_entry: conn %lu "
                                "access to attribute %s not allowed\n",
-                               op->o_connid, desc->ad_cname.bv_val ));
+                               op->o_connid, desc->ad_cname.bv_val, 0 );
 #else
                        Debug( LDAP_DEBUG_ACL, "acl: access to attribute %s "
                                        "not allowed\n",
@@ -1008,10 +997,9 @@ send_search_entry(
                rc = ber_printf( ber, "{O[" /*]}*/ , &desc->ad_cname );
                if ( rc == -1 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
+                       LDAP_LOG( OPERATION, ERR, 
                                "send_search_entry: conn %lu  "
-                               "ber_printf failed\n",
-                               op->o_connid ));
+                               "ber_printf failed\n", op->o_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
 #endif
@@ -1035,12 +1023,10 @@ send_search_entry(
                                        desc, &a->a_vals[i], ACL_READ, &acl_state ) )
                                {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "acl", LDAP_LEVEL_INFO,
+                                       LDAP_LOG( ACL, INFO, 
                                                "send_search_entry: conn %lu "
-                                               "access to %s, value %d "
-                                               "not allowed\n",
-                                               op->o_connid, 
-                                               desc->ad_cname.bv_val, i ));
+                                               "access to %s, value %d not allowed\n",
+                                               op->o_connid, desc->ad_cname.bv_val, i );
 #else
                                        Debug( LDAP_DEBUG_ACL,
                                                "acl: access to attribute %s, "
@@ -1057,11 +1043,9 @@ send_search_entry(
 
                                if (( rc = ber_printf( ber, "O", &a->a_vals[i] )) == -1 ) {
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                                  "send_search_entry: "
-                                                  "conn %lu  ber_printf "
-                                                  "failed\n",
-                                                  op->o_connid ));
+                                       LDAP_LOG( OPERATION, ERR, 
+                                               "send_search_entry: conn %lu  ber_printf failed\n", 
+                                               op->o_connid, 0, 0 );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                            "ber_printf failed\n", 0, 0, 0 );
@@ -1085,10 +1069,9 @@ send_search_entry(
 
                if (( rc = ber_printf( ber, /*{[*/ "]N}" )) == -1 ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                                  "send_search_entry: conn %lu  "
-                                  "ber_printf failed\n",
-                                  op->o_connid ));
+                       LDAP_LOG( OPERATION, ERR, 
+                               "send_search_entry: conn %lu  ber_printf failed\n",
+                               op->o_connid, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
 #endif
@@ -1122,9 +1105,9 @@ send_search_entry(
 #endif
        if ( rc == -1 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "send_search_entry: conn %lu ber_printf failed\n",
-                          op->o_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                       "send_search_entry: conn %lu ber_printf failed\n", 
+                       op->o_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "ber_printf failed\n", 0, 0, 0 );
 #endif
@@ -1140,9 +1123,9 @@ send_search_entry(
 
        if ( bytes < 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
-                          "send_search_entry: conn %lu  ber write failed.\n",
-                          op->o_connid ));
+               LDAP_LOG( OPERATION, ERR, 
+                          "send_search_entry: conn %lu  ber write failed.\n", 
+                          op->o_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "send_search_entry: ber write failed\n",
@@ -1162,9 +1145,8 @@ send_search_entry(
            conn->c_connid, op->o_opid, e->e_dn, 0, 0 );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "send_search_entry: conn %lu exit.\n",
-                  op->o_connid ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "send_search_entry: conn %lu exit.\n", op->o_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= send_search_entry\n", 0, 0, 0 );
 #endif
@@ -1195,9 +1177,9 @@ send_search_reference(
        AttributeDescription *ad_entry = slap_schema.si_ad_entry;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-               "send_search_reference: conn %lu  dn=\"%s\"\n",
-               op->o_connid, e->e_dn ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "send_search_reference: conn %lu  dn=\"%s\"\n", 
+               op->o_connid, e->e_dn, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "=> send_search_reference: dn=\"%s\"\n",
@@ -1209,10 +1191,9 @@ send_search_reference(
                ad_entry, NULL, ACL_READ, NULL ) )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_INFO,
+               LDAP_LOG( ACL, INFO, 
                        "send_search_reference: conn %lu        "
-                       "access to entry %s not allowed\n",
-                       op->o_connid, e->e_dn ));
+                       "access to entry %s not allowed\n", op->o_connid, e->e_dn, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "send_search_reference: access to entry not allowed\n",
@@ -1226,10 +1207,9 @@ send_search_reference(
                ad_ref, NULL, ACL_READ, NULL ) )
        {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "acl", LDAP_LEVEL_INFO,
+               LDAP_LOG( ACL, INFO, 
                        "send_search_reference: conn %lu access "
-                       "to reference not allowed.\n",
-                       op->o_connid ));
+                       "to reference not allowed.\n", op->o_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ACL,
                        "send_search_reference: access "
@@ -1242,9 +1222,9 @@ send_search_reference(
 
        if( refs == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
+               LDAP_LOG( OPERATION, ERR, 
                        "send_search_reference: conn %lu null ref in (%s).\n",
-                       op->o_connid, e->e_dn ));
+                       op->o_connid, e->e_dn, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "send_search_reference: null ref in (%s)\n", 
@@ -1269,10 +1249,9 @@ send_search_reference(
 
        if ( rc == -1 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_ERR,
+               LDAP_LOG( OPERATION, ERR, 
                        "send_search_reference: conn %lu        "
-                       "ber_printf failed.\n",
-                       op->o_connid ));
+                       "ber_printf failed.\n", op->o_connid, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "send_search_reference: ber_printf failed\n", 0, 0, 0 );
@@ -1297,8 +1276,8 @@ send_search_reference(
                conn->c_connid, op->o_opid, e->e_dn, 0, 0 );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-               "send_search_reference: conn %lu exit.\n", op->o_connid ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "send_search_reference: conn %lu exit.\n", op->o_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<= send_search_reference\n", 0, 0, 0 );
 #endif
@@ -1324,8 +1303,8 @@ str2result(
 
        if ( strncasecmp( s, "RESULT", 6 ) != 0 ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                          "str2result: (%s), expecting \"RESULT\"\n", s ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "str2result: (%s), expecting \"RESULT\"\n", s, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "str2result (%s) expecting \"RESULT\"\n",
                    s, 0, 0 );
@@ -1358,8 +1337,7 @@ str2result(
                        }
                } else {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                               "str2result: (%s) unknown.\n", s ));
+                       LDAP_LOG( OPERATION, INFO, "str2result: (%s) unknown.\n", s, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "str2result (%s) unknown\n",
                            s, 0, 0 );
index e814c5155d648a5768f3dc2c989f8224f6835483..62c2fc7cf05c673f080062a4b4f25f9ddcb6bb14 100644 (file)
 #include "lber_pvt.h"
 
 static struct berval supportedFeatures[] = {
-       BER_BVC("1.3.6.1.4.1.4203.1.5.1"), /* all Operational Attributes ("+") */
-       BER_BVC("1.3.6.1.4.1.4203.1.5.2"), /* OCs in Attributes List */
-       BER_BVC("1.3.6.1.4.1.4203.1.5.3"), /* (&) and (|) search filters */
-       BER_BVC("1.3.6.1.4.1.4203.1.5.4"), /* Language Tag Options */
-       BER_BVC("1.3.6.1.4.1.4203.1.5.5"), /* Language Range Options */
+       BER_BVC(LDAP_FEATURE_ALL_OPERATIONAL_ATTRS), /* all Operational Attributes ("+") */
+       BER_BVC(LDAP_FEATURE_OBJECTCLASS_ATTRS), /* OCs in Attributes List */
+       BER_BVC(LDAP_FEATURE_ABSOLUTE_FILTERS), /* (&) and (|) search filters */
+       BER_BVC(LDAP_FEATURE_LANGUAGE_TAG_OPTIONS), /* Language Tag Options */
+       BER_BVC(LDAP_FEATURE_LANGUAGE_RANGE_OPTIONS), /* Language Range Options */
        {0,NULL}
 };
 
@@ -36,7 +36,6 @@ root_dse_info(
        Entry **entry,
        const char **text )
 {
-       char buf[BUFSIZ];
        Entry           *e;
        struct berval   vals[2], *bv;
        int             i, j;
@@ -122,13 +121,14 @@ root_dse_info(
 
        /* supportedLDAPVersion */
        for ( i=LDAP_VERSION_MIN; i<=LDAP_VERSION_MAX; i++ ) {
+               char buf[BUFSIZ];
                if (!( global_allows & SLAP_ALLOW_BIND_V2 ) &&
                        ( i < LDAP_VERSION3 ) )
                {
                        /* version 2 and lower are disallowed */
                        continue;
                }
-               sprintf(buf,"%d",i);
+               snprintf(buf, sizeof buf, "%d", i);
                vals[0].bv_val = buf;
                vals[0].bv_len = strlen( vals[0].bv_val );
                attr_merge( e, ad_supportedLDAPVersion, vals );
index 13088088afe0de9f69dfad6fecea924867969f29..be7b1bb51368184bfe5dc8c897e53c0fa3d2ff77 100644 (file)
@@ -51,9 +51,9 @@ int slap_sasl_config( int cargc, char **cargv, char *line,
                if ( strcasecmp( cargv[0], "sasl-authz-policy" ) == 0 ) {
                        if ( cargc != 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT,
                                           "%s: line %d: missing policy in \"sasl-authz-policy <policy>\" line\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing policy in \"sasl-authz-policy <policy>\" line\n",
@@ -64,12 +64,12 @@ int slap_sasl_config( int cargc, char **cargv, char *line,
                        }
                        if ( slap_sasl_setpolicy( cargv[1] ) ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT,
                                           "%s: line %d: unable "
                                           "to parse value \"%s\" "
                                           "in \"sasl-authz-policy "
                                           "<policy>\" line.\n",
-                                          fname, lineno, cargv[1] ));
+                                          fname, lineno, cargv[1] );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: unable "
@@ -86,9 +86,9 @@ int slap_sasl_config( int cargc, char **cargv, char *line,
                } else if ( strcasecmp( cargv[0], "sasl-host" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT,
                                           "%s: line %d: missing host in \"sasl-host <host>\" line\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing host in \"sasl-host <host>\" line\n",
@@ -100,9 +100,9 @@ int slap_sasl_config( int cargc, char **cargv, char *line,
 
                        if ( global_host != NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT,
                                           "%s: line %d: already set sasl-host!\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: already set sasl-host!\n",
@@ -119,9 +119,9 @@ int slap_sasl_config( int cargc, char **cargv, char *line,
                } else if ( strcasecmp( cargv[0], "sasl-realm" ) == 0 ) {
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT,
                                           "%s: line %d: missing realm in \"sasl-realm <realm>\" line.\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing realm in \"sasl-realm <realm>\" line\n",
@@ -133,9 +133,9 @@ int slap_sasl_config( int cargc, char **cargv, char *line,
 
                        if ( global_realm != NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT,
                                           "%s: line %d: already set sasl-realm!\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "%s: line %d: already set sasl-realm!\n",
@@ -154,10 +154,10 @@ int slap_sasl_config( int cargc, char **cargv, char *line,
                        int rc;
                        if ( cargc != 3 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT,
                                           "%s: line %d: need 2 args in "
                                           "\"saslregexp <match> <replace>\"\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY, 
                                "%s: line %d: need 2 args in \"saslregexp <match> <replace>\"\n",
@@ -177,10 +177,10 @@ int slap_sasl_config( int cargc, char **cargv, char *line,
 
                        if ( cargc < 2 ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT,
                                           "%s: line %d: missing flags in "
                                           "\"sasl-secprops <properties>\" line\n",
-                                          fname, lineno ));
+                                          fname, lineno, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: missing flags in \"sasl-secprops <properties>\" line\n",
@@ -193,9 +193,9 @@ int slap_sasl_config( int cargc, char **cargv, char *line,
                        txt = slap_sasl_secprops( cargv[1] );
                        if ( txt != NULL ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "config", LDAP_LEVEL_CRIT,
+                               LDAP_LOG( CONFIG, CRIT,
                                           "%s: line %d sasl-secprops: %s\n",
-                                          fname, lineno, txt ));
+                                          fname, lineno, txt );
 #else
                                Debug( LDAP_DEBUG_ANY,
            "%s: line %d: sasl-secprops: %s\n",
@@ -276,10 +276,8 @@ slap_sasl_log(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-               "SASL [conn=%ld] %s: %s\n",
-               conn ? conn->c_connid : -1,
-               label, message ));
+       LDAP_LOG( TRANSPORT, ENTRY, 
+               "SASL [conn=%ld] %s: %s\n", conn ? conn->c_connid : -1, label, message);
 #else
        Debug( level, "SASL [conn=%ld] %s: %s\n",
                conn ? conn->c_connid: -1,
@@ -315,10 +313,9 @@ int slap_sasl_getdn( Connection *conn, char *id, int len,
        struct berval dn2;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( TRANSPORT, ENTRY, 
                "slap_sasl_getdn: conn %d id=%s\n",
-               conn ? conn->c_connid : -1,
-               id ? (*id ? id : "<empty>") : "NULL" ));
+               conn ? conn->c_connid : -1, id ? (*id ? id : "<empty>") : "NULL", 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "slap_sasl_getdn: id=%s\n", 
       id?(*id?id:"<empty>"):"NULL",0,0 );
@@ -403,29 +400,29 @@ int slap_sasl_getdn( Connection *conn, char *id, int len,
                /* Build the new dn */
                c1 = dn->bv_val;
                dn->bv_val = ch_malloc( len+1 );
-               p = slap_strcopy( dn->bv_val, "uid=" );
-               p = slap_strncopy( p, c1, dn->bv_len );
+               p = lutil_strcopy( dn->bv_val, "uid=" );
+               p = lutil_strncopy( p, c1, dn->bv_len );
 
                if( realm ) {
                        int rlen = dn->bv_len - ( realm - c1 );
-                       p = slap_strcopy( p, ",cn=" );
-                       p = slap_strncopy( p, realm, rlen );
+                       p = lutil_strcopy( p, ",cn=" );
+                       p = lutil_strncopy( p, realm, rlen );
                        realm[-1] = '@';
                } else if( user_realm && *user_realm ) {
-                       p = slap_strcopy( p, ",cn=" );
-                       p = slap_strcopy( p, user_realm );
+                       p = lutil_strcopy( p, ",cn=" );
+                       p = lutil_strcopy( p, user_realm );
                }
 
                if( conn->c_sasl_bind_mech.bv_len ) {
-                       p = slap_strcopy( p, ",cn=" );
-                       p = slap_strcopy( p, conn->c_sasl_bind_mech.bv_val );
+                       p = lutil_strcopy( p, ",cn=" );
+                       p = lutil_strcopy( p, conn->c_sasl_bind_mech.bv_val );
                }
-               p = slap_strcopy( p, ",cn=auth" );
+               p = lutil_strcopy( p, ",cn=auth" );
                dn->bv_len = p - dn->bv_val;
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-                       "slap_sasl_getdn: u:id converted to %s.\n", dn->bv_val ));
+               LDAP_LOG( TRANSPORT, ENTRY, 
+                       "slap_sasl_getdn: u:id converted to %s.\n", dn->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "getdn: u:id converted to %s\n", dn->bv_val,0,0 );
 #endif
@@ -453,8 +450,8 @@ int slap_sasl_getdn( Connection *conn, char *id, int len,
                ch_free( dn->bv_val );
                *dn = dn2;
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-                       "slap_sasl_getdn: dn:id converted to %s.\n", dn->bv_val ));
+               LDAP_LOG( TRANSPORT, ENTRY, 
+                       "slap_sasl_getdn: dn:id converted to %s.\n", dn->bv_val, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "getdn: dn:id converted to %s\n",
                        dn->bv_val, 0, 0 );
@@ -523,8 +520,8 @@ slap_auxprop_lookup(
                rc = slap_str2ad( name, &ad, &text );
                if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "sasl", LDAP_LEVEL_DETAIL1,
-                               "slap_auxprop: str2ad(%s): %s\n", name, text ));
+                       LDAP_LOG( TRANSPORT, DETAIL1, 
+                               "slap_auxprop: str2ad(%s): %s\n",  name, text, 0 );
 #else
                        Debug( LDAP_DEBUG_TRACE,
                                "slap_auxprop: str2ad(%s): %s\n", name, text, 0 );
@@ -664,11 +661,10 @@ slap_sasl_canonicalize(
        *out_len = 0;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( TRANSPORT, ENTRY, 
                "slap_sasl_canonicalize: conn %d %s=\"%s\"\n",
-                       conn ? conn->c_connid : -1,
-                       (flags & SASL_CU_AUTHID) ? "authcid" : "authzid",
-                       in ? in : "<empty>" ));
+               conn ? conn->c_connid : -1,
+               (flags & SASL_CU_AUTHID) ? "authcid" : "authzid", in ? in : "<empty>");
 #else
        Debug( LDAP_DEBUG_ARGS, "SASL Canonicalize [conn=%ld]: "
                "%s=\"%s\"\n",
@@ -723,10 +719,9 @@ slap_sasl_canonicalize(
        prop_set( props, names[0], (char *)&dn, sizeof( dn ) );
                
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( TRANSPORT, ENTRY, 
                "slap_sasl_canonicalize: conn %d %s=\"%s\"\n",
-                       conn ? conn->c_connid : -1,
-                       names[0]+1, dn.bv_val ));
+               conn ? conn->c_connid : -1, names[0]+1, dn.bv_val );
 #else
        Debug( LDAP_DEBUG_ARGS, "SASL Canonicalize [conn=%ld]: "
                "%s=\"%s\"\n",
@@ -759,9 +754,9 @@ slap_sasl_authorize(
        int rc;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( TRANSPORT, ENTRY, 
                "slap_sasl_authorize: conn %d authcid=\"%s\" authzid=\"%s\"\n",
-                       conn ? conn->c_connid : -1, auth_identity, requested_user));
+               conn ? conn->c_connid : -1, auth_identity, requested_user);
 #else
        Debug( LDAP_DEBUG_ARGS, "SASL Authorize [conn=%ld]: "
                "authcid=\"%s\" authzid=\"%s\"\n",
@@ -785,13 +780,13 @@ slap_sasl_authorize(
        
        AC_MEMCPY( &authzDN, auxvals[1].values[0], sizeof(authzDN) );
 
-       rc = slap_sasl_authorized( &authcDN, &authzDN );
+       rc = slap_sasl_authorized( conn, &authcDN, &authzDN );
        ch_free( authcDN.bv_val );
        if ( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_INFO,
-                          "slap_sasl_authorize: conn %ld  authorization disallowed (%d)\n",
-                          (long)(conn ? conn->c_connid : -1), rc ));
+               LDAP_LOG( TRANSPORT, INFO, 
+                       "slap_sasl_authorize: conn %ld  authorization disallowed (%d)\n",
+                       (long)(conn ? conn->c_connid : -1), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "SASL Authorize [conn=%ld]: "
                        " authorization disallowed (%d)\n",
@@ -806,9 +801,9 @@ slap_sasl_authorize(
        conn->c_sasl_dn = authzDN;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-                  "slap_sasl_authorize: conn %d authorization allowed\n",
-                  (long)(conn ? conn->c_connid : -1 ) ));
+       LDAP_LOG( TRANSPORT, ENTRY, 
+               "slap_sasl_authorize: conn %d authorization allowed\n",
+               (long)(conn ? conn->c_connid : -1), 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "SASL Authorize [conn=%ld]: "
                " authorization allowed\n",
@@ -838,11 +833,10 @@ slap_sasl_authorize(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-                  "slap_sasl_authorize: conn %d         authcid=\"%s\" authzid=\"%s\"\n",
-                  conn ? conn->c_connid : -1,
-                  authcid ? authcid : "<empty>",
-                  authzid ? authzid : "<empty>" ));
+       LDAP_LOG( TRANSPORT, ENTRY, 
+               "slap_sasl_authorize: conn %d    authcid=\"%s\" authzid=\"%s\"\n",
+               conn ? conn->c_connid : -1, authcid ? authcid : "<empty>",
+               authzid ? authzid : "<empty>" );
 #else
        Debug( LDAP_DEBUG_ARGS, "SASL Authorize [conn=%ld]: "
                "authcid=\"%s\" authzid=\"%s\"\n",
@@ -855,8 +849,8 @@ slap_sasl_authorize(
        rc = sasl_getprop( conn->c_sasl_context, SASL_REALM, (void **)&realm );
        if( rc != SASL_OK && rc != SASL_NOTDONE ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_ERR,
-                       "slap_sasl_authorize: getprop(REALM) failed.\n" ));
+               LDAP_LOG( TRANSPORT, ERR,
+                       "slap_sasl_authorize: getprop(REALM) failed.\n", 0, 0, 0 );
 #else
                Debug(LDAP_DEBUG_TRACE,
                        "authorize: getprop(REALM) failed!\n", 0,0,0);
@@ -874,9 +868,9 @@ slap_sasl_authorize(
        }
        if( ( authzid == NULL ) || !strcmp( authcid,authzid ) ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-                          "slap_sasl_authorize: conn %d  Using authcDN=%s\n",
-                          conn ? conn->c_connid : -1, authcDN.bv_val ));
+               LDAP_LOG( TRANSPORT, ENTRY, 
+                       "slap_sasl_authorize: conn %d  Using authcDN=%s\n",
+                       conn ? conn->c_connid : -1, authcDN.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "SASL Authorize [conn=%ld]: "
                 "Using authcDN=%s\n", (long) (conn ? conn->c_connid : -1), authcDN.bv_val,0 );
@@ -893,13 +887,13 @@ slap_sasl_authorize(
                return SASL_NOAUTHZ;
        }
 
-       rc = slap_sasl_authorized( &authcDN, &authzDN );
+       rc = slap_sasl_authorized(conn, &authcDN, &authzDN );
        ch_free( authcDN.bv_val );
        if( rc ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_INFO,
-                          "slap_sasl_authorize: conn %ld  authorization disallowed (%d)\n",
-                          (long)(conn ? conn->c_connid : -1), rc ));
+               LDAP_LOG( TRANSPORT, INFO, 
+                       "slap_sasl_authorize: conn %ld  authorization disallowed (%d)\n",
+                       (long)(conn ? conn->c_connid : -1), rc, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "SASL Authorize [conn=%ld]: "
                        " authorization disallowed (%d)\n",
@@ -912,9 +906,9 @@ slap_sasl_authorize(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-                  "slap_sasl_authorize: conn %d authorization allowed\n",
-                  (long)(conn ? conn->c_connid : -1 ) ));
+       LDAP_LOG( TRANSPORT, RESULTS, 
+               "slap_sasl_authorize: conn %d authorization allowed\n",
+          (long)(conn ? conn->c_connid : -1 ), 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "SASL Authorize [conn=%ld]: "
                " authorization allowed\n",
@@ -995,8 +989,7 @@ int slap_sasl_init( void )
 
        if( rc != SASL_OK ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_INFO,
-                          "slap_sasl_init: init failed.\n" ));
+               LDAP_LOG( TRANSPORT, INFO, "slap_sasl_init: init failed.\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "sasl_server_init failed\n",
                        0, 0, 0 );
@@ -1006,8 +999,7 @@ int slap_sasl_init( void )
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_INFO,
-                  "slap_sasl_init: initialized!\n"));
+       LDAP_LOG( TRANSPORT, INFO, "slap_sasl_init: initialized!\n", 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "slap_sasl_init: initialized!\n",
                0, 0, 0 );
@@ -1129,8 +1121,8 @@ int slap_sasl_open( Connection *conn )
 
        if( sc != SASL_OK ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_ERR,
-                          "slap_sasl_open: sasl_server_new failed: %d\n", sc ));
+               LDAP_LOG( TRANSPORT, ERR, 
+                       "slap_sasl_open: sasl_server_new failed: %d\n", sc, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "sasl_server_new failed: %d\n",
                        sc, 0, 0 );
@@ -1147,8 +1139,8 @@ int slap_sasl_open( Connection *conn )
 
                if( sc != SASL_OK ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "sasl", LDAP_LEVEL_ERR,
-                                  "slap_sasl_open: sasl_setprop failed: %d \n", sc ));
+                       LDAP_LOG( TRANSPORT, ERR, 
+                               "slap_sasl_open: sasl_setprop failed: %d \n", sc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "sasl_setprop failed: %d\n",
                                sc, 0, 0 );
@@ -1242,8 +1234,8 @@ char ** slap_sasl_mechs( Connection *conn )
 
                if( sc != SASL_OK ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "sasl", LDAP_LEVEL_ERR,
-                               "slap_sasl_mechs: sasl_listmech failed: %d\n", sc ));
+                       LDAP_LOG( TRANSPORT, ERR, 
+                               "slap_sasl_mechs: sasl_listmech failed: %d\n", sc, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY, "slap_sasl_listmech failed: %d\n",
                                sc, 0, 0 );
@@ -1300,12 +1292,12 @@ int slap_sasl_bind(
        int sc;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-               "sasl_bind: conn %ld dn=\"%s\" mech=%s datalen=%ld\n",
-               conn->c_connid,
+       LDAP_LOG( TRANSPORT, ENTRY, 
+               "sasl_bind: dn=\"%s\" mech=%s datalen=%ld\n",
                dn->bv_len ? dn->bv_val : "",
-               conn->c_sasl_bind_in_progress ? "<continuing>" : conn->c_sasl_bind_mech.bv_val,
-               cred ? cred->bv_len : 0 ));
+               conn->c_sasl_bind_in_progress ? "<continuing>" : 
+               conn->c_sasl_bind_mech.bv_val,
+               cred ? cred->bv_len : 0 );
 #else
        Debug(LDAP_DEBUG_ARGS,
                "==> sasl_bind: dn=\"%s\" mech=%s datalen=%ld\n",
@@ -1389,8 +1381,7 @@ int slap_sasl_bind(
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-               "slap_sasl_bind: rc=%d\n", rc ));
+       LDAP_LOG( TRANSPORT, RESULTS, "slap_sasl_bind: rc=%d\n", rc, 0, 0 );
 #else
        Debug(LDAP_DEBUG_TRACE, "<== slap_sasl_bind: rc=%d\n", rc, 0, 0);
 #endif
@@ -1445,11 +1436,11 @@ slap_sasl_setpass(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "backend", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( BACKEND, ENTRY,
                "slap_sasl_setpass: \"%s\"\n",
-               id.bv_val ? id.bv_val : "" ));
+               id.bv_val ? id.bv_val : "", 0, 0);
 #else
-       Debug( LDAP_DEBUG_ARGS, "==> ldbm_back_exop_passwd: \"%s\"\n",
+       Debug( LDAP_DEBUG_ARGS, "==> slap_sasl_setpass: \"%s\"\n",
                id.bv_val ? id.bv_val : "", 0, 0 );
 #endif
 
@@ -1477,7 +1468,7 @@ slap_sasl_setpass(
                id.bv_val, new.bv_val, new.bv_len, 0, text );
 #else
        rc = sasl_setpass( conn->c_sasl_context, id.bv_val,
-               old.bv_val, old.bv_len, new.bv_val, new.bv_len, 0 );
+               new.bv_val, new.bv_len, old.bv_val, old.bv_len, 0 );
        if( rc != SASL_OK ) {
                *text = sasl_errdetail( conn->c_sasl_context );
        }
index 601d0245c8481102d6792be533e960c3f3d9ca06..22e6894bcf9e2f8e8ac97806cad5233165a46f24 100644 (file)
@@ -1,3 +1,7 @@
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
 /*
  * Copyright (c) 2000, Mark Adamson, Carnegie Mellon.  All rights reserved.
  * This software is not subject to any license of Carnegie Mellon University.
@@ -96,8 +100,8 @@ static int slap_parseURI( struct berval *uri,
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-               "slap_parseURI: parsing %s\n", uri->bv_val ));
+       LDAP_LOG( TRANSPORT, ENTRY, 
+               "slap_parseURI: parsing %s\n", uri->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "slap_parseURI: parsing %s\n", uri->bv_val, 0, 0 );
 #endif
@@ -170,10 +174,9 @@ static int slap_sasl_rx_off(char *rep, int *off)
                if ( *c == '$' ) {
                        if ( n == SASLREGEX_REPLACE ) {
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "sasl", LDAP_LEVEL_ERR,
+                               LDAP_LOG( TRANSPORT, ERR, 
                                        "slap_sasl_regexp_config: \"%s\" has too many $n "
-                                               "placeholders (max %d)\n",
-                                       rep, SASLREGEX_REPLACE ));
+                                       "placeholders (max %d)\n", rep, SASLREGEX_REPLACE, 0  );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "SASL replace pattern %s has too many $n "
@@ -194,11 +197,9 @@ static int slap_sasl_rx_off(char *rep, int *off)
        off[n] = -1;
        return( LDAP_SUCCESS );
 }
-#endif /* HAVE_CYRUS_SASL */
 
 int slap_sasl_regexp_config( const char *match, const char *replace )
 {
-#ifdef HAVE_CYRUS_SASL
        const char *c;
        int rc, n;
        SaslRegexp_t *reg;
@@ -212,9 +213,9 @@ int slap_sasl_regexp_config( const char *match, const char *replace )
        rc = dnNormalize2( NULL, &bv, &nbv );
        if ( rc ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_ERR,
-                          "slap_sasl_regexp_config: \"%s\" could not be normalized.\n",
-                          match ));
+               LDAP_LOG( TRANSPORT, ERR, 
+                       "slap_sasl_regexp_config: \"%s\" could not be normalized.\n",
+                       match, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                "SASL match pattern %s could not be normalized.\n",
@@ -230,9 +231,9 @@ int slap_sasl_regexp_config( const char *match, const char *replace )
        if ( filter ) filter_free( filter );
        if ( rc ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_ERR,
-                          "slap_sasl_regexp_config: \"%s\" could not be parsed.\n",
-                          replace ));
+               LDAP_LOG( TRANSPORT, ERR, 
+                       "slap_sasl_regexp_config: \"%s\" could not be parsed.\n",
+                       replace, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                "SASL replace pattern %s could not be parsed.\n",
@@ -245,9 +246,9 @@ int slap_sasl_regexp_config( const char *match, const char *replace )
        rc = regcomp( &reg->sr_workspace, reg->sr_match, REG_EXTENDED|REG_ICASE );
        if ( rc ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_ERR,
-                          "slap_sasl_regexp_config: \"%s\" could not be compiled.\n",
-                          reg->sr_match ));
+               LDAP_LOG( TRANSPORT, ERR, 
+                       "slap_sasl_regexp_config: \"%s\" could not be compiled.\n",
+                       reg->sr_match, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                "SASL match pattern %s could not be compiled by regexp engine\n",
@@ -266,13 +267,10 @@ int slap_sasl_regexp_config( const char *match, const char *replace )
        }
 
        nSaslRegexp++;
-#endif
        return( LDAP_SUCCESS );
 }
 
 
-#ifdef HAVE_CYRUS_SASL
-
 /* Perform replacement on regexp matches */
 static void slap_sasl_rx_exp( char *rep, int *off, regmatch_t *str,
        char *saslname, struct berval *out )
@@ -334,8 +332,8 @@ static int slap_sasl_regexp( struct berval *in, SaslUri_t *out )
        memset( out, 0, sizeof( *out ) );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-               "slap_sasl_regexp: converting SASL name %s\n", saslname ));
+       LDAP_LOG( TRANSPORT, ENTRY, 
+               "slap_sasl_regexp: converting SASL name %s\n", saslname, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "slap_sasl_regexp: converting SASL name %s\n",
           saslname, 0, 0 );
@@ -369,10 +367,10 @@ static int slap_sasl_regexp( struct berval *in, SaslUri_t *out )
        out->scope = reg->sr_replace.scope;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( TRANSPORT, ENTRY, 
                "slap_sasl_regexp: converted SASL name to ldap:///%s??%s?%s\n",
                out->dn.bv_val, scope[out->scope], out->filter.bv_val ?
-               out->filter.bv_val : "" ));
+               out->filter.bv_val : ""  );
 #else
        Debug( LDAP_DEBUG_TRACE,
           "slap_sasl_regexp: converted SASL name to ldap:///%s??%s?%s\n",
@@ -409,8 +407,8 @@ static int sasl_sc_sasl2dn( BackendDB *be, Connection *conn, Operation *o,
                ndn->bv_val = NULL;
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "sasl", LDAP_LEVEL_DETAIL1,
-                       "slap_sasl2dn: search DN returned more than 1 entry\n" ));
+       LDAP_LOG( TRANSPORT, DETAIL1,
+                   "slap_sasl2dn: search DN returned more than 1 entry\n", 0, 0, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE,
                        "slap_sasl2dn: search DN returned more than 1 entry\n", 0,0,0 );
@@ -441,8 +439,8 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn
        SaslUri_t uri;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-               "slap_sasl2dn: converting SASL name %s to DN.\n", saslname->bv_val ));
+       LDAP_LOG( TRANSPORT, ENTRY, 
+               "slap_sasl2dn: converting SASL name %s to DN.\n", saslname->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "==>slap_sasl2dn: "
                "converting SASL name %s to a DN\n", saslname->bv_val, 0,0 );
@@ -472,9 +470,9 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_DETAIL1,
+       LDAP_LOG( TRANSPORT, DETAIL1, 
                "slap_sasl2dn: performing internal search (base=%s, scope=%d)\n",
-               uri.dn.bv_val, uri.scope ));
+               uri.dn.bv_val, uri.scope, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
           "slap_sasl2dn: performing internal search (base=%s, scope=%d)\n",
@@ -491,24 +489,24 @@ void slap_sasl2dn( Connection *conn, struct berval *saslname, struct berval *dn
        op.o_ndn = *saslname;
        op.o_callback = &cb;
        op.o_time = slap_get_time();
+       op.o_do_not_cache = 1;
 
-       (*be->be_search)( be, NULL, &op, NULL, &uri.dn,
+       (*be->be_search)( be, conn, &op, NULL, &uri.dn,
                uri.scope, LDAP_DEREF_NEVER, 1, 0,
                filter, NULL, NULL, 1 );
        
+FINISHED:
        if( dn->bv_len ) {
                conn->c_authz_backend = be;
        }
-
-FINISHED:
        if( uri.dn.bv_len ) ch_free( uri.dn.bv_val );
        if( uri.filter.bv_len ) ch_free( uri.filter.bv_val );
        if( filter ) filter_free( filter );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( TRANSPORT, ENTRY, 
                "slap_sasl2dn: Converted SASL name to %s\n",
-               dn->bv_len ? dn->bv_val : "<nothing>" ));
+               dn->bv_len ? dn->bv_val : "<nothing>", 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "<==slap_sasl2dn: Converted SASL name to %s\n",
                dn->bv_len ? dn->bv_val : "<nothing>", 0, 0 );
@@ -545,7 +543,7 @@ static int sasl_sc_smatch( BackendDB *be, Connection *conn, Operation *o,
  */
 
 static
-int slap_sasl_match( struct berval *rule, struct berval *assertDN, struct berval *authc )
+int slap_sasl_match(Connection *conn, struct berval *rule, struct berval *assertDN, struct berval *authc )
 {
        struct berval searchbase = {0, NULL};
        int rc, scope;
@@ -557,8 +555,9 @@ int slap_sasl_match( struct berval *rule, struct berval *assertDN, struct berval
        Operation op = {0};
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-               "slap_sasl_match: comparing DN %s to rule %s\n", assertDN->bv_val, rule->bv_val ));
+       LDAP_LOG( TRANSPORT, ENTRY, 
+               "slap_sasl_match: comparing DN %s to rule %s\n", 
+               assertDN->bv_val, rule->bv_val,0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
           "===>slap_sasl_match: comparing DN %s to rule %s\n", assertDN->bv_val, rule->bv_val, 0 );
@@ -586,9 +585,9 @@ int slap_sasl_match( struct berval *rule, struct berval *assertDN, struct berval
        /* Must run an internal search. */
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_DETAIL1,
+       LDAP_LOG( TRANSPORT, DETAIL1, 
                "slap_sasl_match: performing internal search (base=%s, scope=%d)\n",
-               searchbase.bv_val, scope ));
+               searchbase.bv_val, scope,0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
           "slap_sasl_match: performing internal search (base=%s, scope=%d)\n",
@@ -611,8 +610,9 @@ int slap_sasl_match( struct berval *rule, struct berval *assertDN, struct berval
        op.o_ndn = *authc;
        op.o_callback = &cb;
        op.o_time = slap_get_time();
+       op.o_do_not_cache = 1;
 
-       (*be->be_search)( be, /*conn=*/NULL, &op, /*base=*/NULL, &searchbase,
+       (*be->be_search)( be, conn, &op, /*base=*/NULL, &searchbase,
           scope, /*deref=*/1, /*sizelimit=*/0, /*time=*/0, filter, /*fstr=*/NULL,
           /*attrs=*/NULL, /*attrsonly=*/0 );
 
@@ -625,8 +625,8 @@ CONCLUDED:
        if( searchbase.bv_len ) ch_free( searchbase.bv_val );
        if( filter ) filter_free( filter );
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-                  "slap_sasl_match: comparison returned %d\n", rc ));
+       LDAP_LOG( TRANSPORT, ENTRY, 
+               "slap_sasl_match: comparison returned %d\n", rc, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
           "<===slap_sasl_match: comparison returned %d\n", rc, 0, 0);
@@ -645,15 +645,19 @@ CONCLUDED:
  * The DNs should not have the dn: prefix
  */
 static int
-slap_sasl_check_authz(struct berval *searchDN, struct berval *assertDN, AttributeDescription *ad, struct berval *authc)
+slap_sasl_check_authz( Connection *conn,
+       struct berval *searchDN,
+       struct berval *assertDN,
+       AttributeDescription *ad,
+       struct berval *authc )
 {
        int i, rc;
        BerVarray vals=NULL;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
+       LDAP_LOG( TRANSPORT, ENTRY, 
                   "slap_sasl_check_authz: does %s match %s rule in %s?\n",
-                  assertDN->bv_val, ad->ad_cname.bv_val, searchDN->bv_val ));
+              assertDN->bv_val, ad->ad_cname.bv_val, searchDN->bv_val);
 #else
        Debug( LDAP_DEBUG_TRACE,
           "==>slap_sasl_check_authz: does %s match %s rule in %s?\n",
@@ -666,7 +670,7 @@ slap_sasl_check_authz(struct berval *searchDN, struct berval *assertDN, Attribut
 
        /* Check if the *assertDN matches any **vals */
        for( i=0; vals[i].bv_val != NULL; i++ ) {
-               rc = slap_sasl_match( &vals[i], assertDN, authc );
+               rc = slap_sasl_match( conn, &vals[i], assertDN, authc );
                if ( rc == LDAP_SUCCESS )
                        goto COMPLETE;
        }
@@ -676,8 +680,9 @@ COMPLETE:
        if( vals ) ber_bvarray_free( vals );
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-                  "slap_sasl_check_authz: %s check returning %s\n", ad->ad_cname.bv_val, rc ));
+       LDAP_LOG( TRANSPORT, RESULTS, 
+                  "slap_sasl_check_authz: %s check returning %s\n", 
+                  ad->ad_cname.bv_val, rc, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
           "<==slap_sasl_check_authz: %s check returning %d\n", ad->ad_cname.bv_val, rc, 0);
@@ -692,7 +697,8 @@ COMPLETE:
  * The DNs should not have the dn: prefix
  */
 
-int slap_sasl_authorized( struct berval *authcDN, struct berval *authzDN )
+int slap_sasl_authorized( Connection *conn,
+       struct berval *authcDN, struct berval *authzDN )
 {
        int rc = LDAP_INAPPROPRIATE_AUTH;
 
@@ -704,8 +710,9 @@ int slap_sasl_authorized( struct berval *authcDN, struct berval *authzDN )
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-               "slap_sasl_authorized: can %s become %s?\n", authcDN->bv_val, authzDN->bv_val ));
+       LDAP_LOG( TRANSPORT, ENTRY, 
+               "slap_sasl_authorized: can %s become %s?\n", 
+               authcDN->bv_val, authzDN->bv_val, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
           "==>slap_sasl_authorized: can %s become %s?\n", authcDN->bv_val, authzDN->bv_val, 0 );
@@ -719,7 +726,7 @@ int slap_sasl_authorized( struct berval *authcDN, struct berval *authzDN )
 
        /* Check source rules */
        if( authz_policy & SASL_AUTHZ_TO ) {
-               rc = slap_sasl_check_authz( authcDN, authzDN,
+               rc = slap_sasl_check_authz( conn, authcDN, authzDN,
                        slap_schema.si_ad_saslAuthzTo, authcDN );
                if( rc == LDAP_SUCCESS ) {
                        goto DONE;
@@ -728,7 +735,7 @@ int slap_sasl_authorized( struct berval *authcDN, struct berval *authzDN )
 
        /* Check destination rules */
        if( authz_policy & SASL_AUTHZ_FROM ) {
-               rc = slap_sasl_check_authz( authzDN, authcDN,
+               rc = slap_sasl_check_authz( conn, authzDN, authcDN,
                        slap_schema.si_ad_saslAuthzFrom, authcDN );
                if( rc == LDAP_SUCCESS ) {
                        goto DONE;
@@ -741,8 +748,7 @@ DONE:
 #endif
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "sasl", LDAP_LEVEL_ENTRY,
-               "slap_sasl_authorized: return %d\n", rc ));
+       LDAP_LOG( TRANSPORT, RESULTS, "slap_sasl_authorized: return %d\n", rc,0,0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "<== slap_sasl_authorized: return %d\n", rc, 0, 0 );
index ec1def4308b4488ef9c224b2daf2324d157ab94f..a2a3e6455e23f49fc9f963f1cc7aa9b611bde583 100644 (file)
@@ -86,9 +86,8 @@ entry_schema_check(
                                type );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "schema", LDAP_LEVEL_INFO,
-                               "entry_schema_check: dn=\"%s\" %s\n",
-                               e->e_dn, textbuf ));
+                       LDAP_LOG( OPERATION, INFO, 
+                               "entry_schema_check: dn=\"%s\" %s\n", e->e_dn, textbuf, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                            "Entry (%s), %s\n",
@@ -106,9 +105,9 @@ entry_schema_check(
        asc = attr_find( e->e_attrs, ad_structuralObjectClass );
        if ( asc == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "schema", LDAP_LEVEL_INFO, "entry_schema_check: "
-                       "No structuralObjectClass for entry (%s)\n",
-                       e->e_dn ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "entry_schema_check: No structuralObjectClass for entry (%s)\n", 
+                       e->e_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "No structuralObjectClass for entry (%s)\n",
@@ -130,9 +129,8 @@ entry_schema_check(
                        asc->a_vals[0].bv_val );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "schema", LDAP_LEVEL_INFO,
-                       "entry_schema_check: dn (%s), %s\n",
-                       e->e_dn, textbuf ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "entry_schema_check: dn (%s), %s\n", e->e_dn, textbuf, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "entry_check_schema(%s): %s\n",
@@ -148,9 +146,8 @@ entry_schema_check(
                        asc->a_vals[0].bv_val );
 
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "schema", LDAP_LEVEL_INFO,
-                       "entry_schema_check: dn (%s), %s\n",
-                       e->e_dn, textbuf ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "entry_schema_check: dn (%s), %s\n", e->e_dn, textbuf, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "entry_check_schema(%s): %s\n",
@@ -164,9 +161,9 @@ entry_schema_check(
        aoc = attr_find( e->e_attrs, ad_objectClass );
        if ( aoc == NULL ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "schema", LDAP_LEVEL_INFO,
-                       "entry_schema_check: No objectClass for entry (%s).\n",
-                       e->e_dn ));
+               LDAP_LOG( OPERATION, INFO, 
+                       "entry_schema_check: No objectClass for entry (%s).\n", 
+                       e->e_dn, 0, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "No objectClass for entry (%s)\n",
                    e->e_dn, 0, 0 );
@@ -209,9 +206,8 @@ entry_schema_check(
                                aoc->a_vals[i].bv_val );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "schema", LDAP_LEVEL_INFO,
-                               "entry_schema_check: dn (%s), %s\n",
-                               e->e_dn, textbuf ));
+                       LDAP_LOG( OPERATION, INFO, 
+                               "entry_schema_check: dn (%s), %s\n", e->e_dn, textbuf, 0 );
 #else
                        Debug( LDAP_DEBUG_ANY,
                                "entry_check_schema(%s): %s\n",
@@ -245,9 +241,9 @@ entry_schema_check(
                                                                aoc->a_vals[i].bv_val );
 
 #ifdef NEW_LOGGING
-                                                       LDAP_LOG(( "schema", LDAP_LEVEL_INFO,
+                                                       LDAP_LOG( OPERATION, INFO, 
                                                                "entry_schema_check: dn (%s), %s\n",
-                                                               e->e_dn, textbuf ));
+                                                               e->e_dn, textbuf, 0 );
 #else
                                                        Debug( LDAP_DEBUG_ANY,
                                                                "entry_check_schema(%s): %s\n",
@@ -279,9 +275,9 @@ entry_schema_check(
                                                aoc->a_vals[i].bv_val );
 
 #ifdef NEW_LOGGING
-                                       LDAP_LOG(( "schema", LDAP_LEVEL_INFO,
-                                               "entry_schema_check: dn (%s), %s\n",
-                                               e->e_dn, textbuf ));
+                                       LDAP_LOG( OPERATION, INFO, 
+                                               "entry_schema_check: dn (%s), %s\n", 
+                                               e->e_dn, textbuf, 0 );
 #else
                                        Debug( LDAP_DEBUG_ANY,
                                                "entry_check_schema(%s): %s\n",
@@ -301,9 +297,8 @@ entry_schema_check(
                                        aoc->a_vals[i].bv_val, s );
 
 #ifdef NEW_LOGGING
-                               LDAP_LOG(( "schema", LDAP_LEVEL_INFO,
-                                       "entry_schema_check: dn=\"%s\" %s",
-                                       e->e_dn, textbuf ));
+                               LDAP_LOG( OPERATION, INFO, 
+                                       "entry_schema_check: dn=\"%s\" %s", e->e_dn, textbuf, 0 );
 #else
                                Debug( LDAP_DEBUG_ANY,
                                        "Entry (%s): %s\n",
@@ -334,9 +329,8 @@ entry_schema_check(
                                type );
 
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "schema", LDAP_LEVEL_INFO,
-                               "entry_schema_check: dn=\"%s\" %s\n",
-                               e->e_dn, textbuf ));
+                       LDAP_LOG( OPERATION, INFO, 
+                               "entry_schema_check: dn=\"%s\" %s\n", e->e_dn, textbuf, 0);
 #else
                        Debug( LDAP_DEBUG_ANY,
                            "Entry (%s), %s\n",
@@ -361,9 +355,9 @@ oc_check_required(
        Attribute       *a;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-               "oc_check_required: dn (%s), objectClass \"%s\"\n",
-       e->e_dn, ocname->bv_val ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "oc_check_required: dn (%s), objectClass \"%s\"\n", 
+               e->e_dn, ocname->bv_val, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "oc_check_required entry (%s), objectClass \"%s\"\n",
@@ -402,8 +396,8 @@ int oc_check_allowed(
        int             i, j;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-               "oc_check_allowed: type \"%s\"\n", at->sat_cname.bv_val ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "oc_check_allowed: type \"%s\"\n", at->sat_cname.bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE,
                "oc_check_allowed type \"%s\"\n",
index f0ad77cb51a3daab777728a7a8a8e0c6735e00a0..4e8ac815f89ddbca06df111e1f86e83718c8cfd8 100644 (file)
@@ -3367,9 +3367,9 @@ objectIdentifierFirstComponentMatch(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                  "objectIdentifierFirstComponentMatch: %d\n    %s\n    %s\n",
-                  match, value->bv_val, asserted->bv_val ));
+       LDAP_LOG( CONFIG, ENTRY, 
+               "objectIdentifierFirstComponentMatch: %d\n %s\n %s\n",
+               match, value->bv_val, asserted->bv_val );
 #else
        Debug( LDAP_DEBUG_ARGS, "objectIdentifierFirstComponentMatch "
                "%d\n\t\"%s\"\n\t\"%s\"\n",
@@ -3516,9 +3516,9 @@ certificateExactConvert(
        xcert = d2i_X509(NULL, &p, in->bv_len);
        if ( !xcert ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                          "certificateExactConvert: error parsing cert: %s\n",
-                          ERR_error_string(ERR_get_error(),NULL)));
+               LDAP_LOG( CONFIG, ENTRY, 
+                       "certificateExactConvert: error parsing cert: %s\n",
+                       ERR_error_string(ERR_get_error(),NULL), 0, 0 );
 #else
                Debug( LDAP_DEBUG_ARGS, "certificateExactConvert: "
                       "error parsing cert: %s\n",
@@ -3551,9 +3551,8 @@ certificateExactConvert(
        *p++ = '\0';
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                  "certificateExactConvert: \n %s\n",
-                  out->bv_val));
+       LDAP_LOG( CONFIG, ARGS, 
+               "certificateExactConvert: \n    %s\n", out->bv_val, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "certificateExactConvert "
                "\n\t\"%s\"\n",
@@ -3633,9 +3632,9 @@ certificateExactMatch(
        xcert = d2i_X509(NULL, &p, value->bv_len);
        if ( !xcert ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                          "certificateExactMatch: error parsing cert: %s\n",
-                          ERR_error_string(ERR_get_error(),NULL)));
+               LDAP_LOG( CONFIG, ENTRY, 
+                       "certificateExactMatch: error parsing cert: %s\n",
+                       ERR_error_string(ERR_get_error(),NULL), 0, 0 );
 #else
                Debug( LDAP_DEBUG_ARGS, "certificateExactMatch: "
                       "error parsing cert: %s\n",
@@ -3674,10 +3673,12 @@ certificateExactMatch(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                  "certificateExactMatch: %d\n  %s $ %s\n       %s $   %s\n",
-                  *matchp, serial.bv_val, issuer_dn.bv_val,
-                  asserted_serial.bv_val, asserted_issuer_dn.bv_val));
+       LDAP_LOG( CONFIG, ARGS, "certificateExactMatch "
+               "%d\n\t\"%s $ %s\"\n",
+               *matchp, serial.bv_val, issuer_dn.bv_val );
+       LDAP_LOG( CONFIG, ARGS, "\t\"%s $ %s\"\n",
+               asserted_serial.bv_val, asserted_issuer_dn.bv_val,
+               0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "certificateExactMatch "
                "%d\n\t\"%s $ %s\"\n",
@@ -3729,9 +3730,9 @@ static int certificateExactIndexer(
                xcert = d2i_X509(NULL, &p, values[i].bv_len);
                if ( !xcert ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                           "certificateExactIndexer: error parsing cert: %s\n",
-                               ERR_error_string(ERR_get_error(),NULL)));
+                       LDAP_LOG( CONFIG, ENTRY, 
+                               "certificateExactIndexer: error parsing cert: %s\n",
+                               ERR_error_string(ERR_get_error(),NULL), 0, 0);
 #else
                        Debug( LDAP_DEBUG_ARGS, "certificateExactIndexer: "
                               "error parsing cert: %s\n",
@@ -3749,9 +3750,8 @@ static int certificateExactIndexer(
                                  &keys[i] );
                ber_memfree(serial.bv_val);
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                          "certificateExactIndexer: returning: %s\n",
-                          keys[i].bv_val));
+               LDAP_LOG( CONFIG, ENTRY, 
+                       "certificateExactIndexer: returning: %s\n", keys[i].bv_val, 0, 0);
 #else
                Debug( LDAP_DEBUG_ARGS, "certificateExactIndexer: "
                       "returning: %s\n",
@@ -4060,7 +4060,7 @@ nisNetgroupTripleValidate(
                                return LDAP_INVALID_SYNTAX;
                        }
 
-               } else if ( !ATTR_CHAR( *p ) ) {
+               } else if ( !AD_CHAR( *p ) ) {
                        return LDAP_INVALID_SYNTAX;
                }
        }
@@ -4094,7 +4094,7 @@ bootParameterValidate(
 
        /* key */
        for (; ( p < e ) && ( *p != '=' ); p++ ) {
-               if ( !ATTR_CHAR( *p ) ) {
+               if ( !AD_CHAR( *p ) ) {
                        return LDAP_INVALID_SYNTAX;
                }
        }
@@ -4105,7 +4105,7 @@ bootParameterValidate(
 
        /* server */
        for ( p++; ( p < e ) && ( *p != ':' ); p++ ) {
-               if ( !ATTR_CHAR( *p ) ) {
+               if ( !AD_CHAR( *p ) ) {
                        return LDAP_INVALID_SYNTAX;
                }
        }
@@ -4116,7 +4116,7 @@ bootParameterValidate(
 
        /* path */
        for ( p++; p < e; p++ ) {
-               if ( !ATTR_CHAR( *p ) ) {
+               if ( !SLAP_PRINTABLE( *p ) ) {
                        return LDAP_INVALID_SYNTAX;
                }
        }
@@ -4627,7 +4627,7 @@ int
 slap_schema_init( void )
 {
        int             res;
-       int             i;
+       int             i = 0;
 
        /* we should only be called once (from main) */
        assert( schema_init_done == 0 );
index 28dca9ccb0a8e0fee88bbcc9b6385d2bd014fd57..15bf1e3c8f5d894b9623ec51e454d28ce129f2f8 100644 (file)
@@ -36,9 +36,8 @@ objectClassMatch(
 
 #if 1
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                  "> objectClassMatch(%s, %s)\n",
-                  value->bv_val, a->bv_val ));
+       LDAP_LOG( CONFIG, ENTRY, 
+               "> objectClassMatch(%s, %s)\n", value->bv_val, a->bv_val, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "> objectClassMatch(%s,%s)\n",
                value->bv_val, a->bv_val, 0 );
@@ -69,9 +68,9 @@ objectClassMatch(
 
 #if 1
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                  "< objectClassMatch(%s, %s) = %d\n",
-                  value->bv_val, a->bv_val, *matchp ));
+       LDAP_LOG( CONFIG, ENTRY, 
+               "< objectClassMatch(%s, %s) = %d\n",
+               value->bv_val, a->bv_val, *matchp );
 #else
        Debug( LDAP_DEBUG_TRACE, "< objectClassMatch(%s,%s) = %d\n",
                value->bv_val, a->bv_val, *matchp );
@@ -99,9 +98,8 @@ structuralObjectClassMatch(
 
 #if 1
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                  "> structuralObjectClassMatch(%s, %s)\n",
-                  value->bv_val, a->bv_val ));
+       LDAP_LOG( CONFIG, ENTRY, 
+               "> structuralObjectClassMatch(%s, %s)\n", value->bv_val, a->bv_val, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "> structuralObjectClassMatch(%s,%s)\n",
                value->bv_val, a->bv_val, 0 );
@@ -128,9 +126,9 @@ structuralObjectClassMatch(
 
 #if 1
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
-                  "< structuralObjectClassMatch( %s, %s ) = %d\n",
-                  value->bv_val, a->bv_val, *matchp ));
+       LDAP_LOG( CONFIG, ENTRY, 
+               "< structuralObjectClassMatch( %s, %s ) = %d\n",
+               value->bv_val, a->bv_val, *matchp );
 #else
        Debug( LDAP_DEBUG_TRACE, "< structuralObjectClassMatch(%s,%s) = %d\n",
                value->bv_val, a->bv_val, *matchp );
index 1f9138753b38459864de403b687d815e669c37f7..ffbf47dc22d3f2d2ff26c5c1c7e8d4f9da4eb03c 100644 (file)
@@ -25,8 +25,8 @@ static char *const err2text[] = {
        "Success",
        "Out of memory",
        "ObjectClass not found",
-       "ObjectClass inappropriate SUPerior",
-       "ObjectClass operational",
+       "user-defined ObjectClass has inappropriate SUPerior",
+       "user-defined ObjectClass includes operational attributes",
        "Duplicate objectClass",
        "AttributeType not found",
        "AttributeType inappropriate USAGE",
index c4db3e52e664bb210845a9949a740ca3bc33b156..7e36a3d7483b3b0ddf990689eca751577ac6d692 100644 (file)
@@ -45,8 +45,7 @@ do_search(
        int                     manageDSAit;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-               "do_search: conn %d\n", conn->c_connid ));
+       LDAP_LOG( OPERATION, ENTRY, "do_search: conn %d\n", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "do_search\n", 0, 0, 0 );
 #endif
@@ -112,9 +111,9 @@ do_search(
        rc = dnPrettyNormal( NULL, &base, &pbase, &nbase );
        if( rc != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+               LDAP_LOG( OPERATION, ERR, 
                        "do_search: conn %d  invalid dn (%s)\n",
-                       conn->c_connid, base.bv_val ));
+                       conn->c_connid, base.bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_ANY,
                        "do_search: invalid dn (%s)\n", base.bv_val, 0, 0 );
@@ -125,9 +124,10 @@ do_search(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-               "do_search \"%s\" %d %d %d %d %d\n", base.bv_val, scope,
-               deref, sizelimit, timelimit, attrsonly ));
+       LDAP_LOG( OPERATION, ARGS, "SRCH \"%s\" %d %d",
+               base.bv_val, scope, deref );
+       LDAP_LOG( OPERATION, ARGS, "    %d %d %d\n",
+               sizelimit, timelimit, attrsonly);
 #else
        Debug( LDAP_DEBUG_ARGS, "SRCH \"%s\" %d %d",
                base.bv_val, scope, deref );
@@ -152,9 +152,9 @@ do_search(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-               "do_search: conn %d     filter: %s\n", conn->c_connid,
-               fstr.bv_len ? fstr.bv_val : "empty" ));
+       LDAP_LOG( OPERATION, ARGS, 
+               "do_search: conn %d     filter: %s\n", 
+               conn->c_connid, fstr.bv_len ? fstr.bv_val : "empty", 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "    filter: %s\n",
                fstr.bv_len ? fstr.bv_val : "empty", 0, 0 );
@@ -177,9 +177,9 @@ do_search(
 
        if( (rc = get_ctrls( conn, op, 1 )) != LDAP_SUCCESS ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
+               LDAP_LOG( OPERATION, INFO, 
                        "do_search: conn %d  get_ctrls failed (%d)\n",
-                       conn->c_connid, rc ));
+                       conn->c_connid, rc, 0 );
 #else
                Debug( LDAP_DEBUG_ANY, "do_search: get_ctrls failed\n", 0, 0, 0 );
 #endif
@@ -188,8 +188,8 @@ do_search(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-               "do_search: conn %d     attrs:", conn->c_connid ));
+       LDAP_LOG( OPERATION, ARGS, 
+               "do_search: conn %d     attrs:", conn->c_connid, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "    attrs:", 0, 0, 0 );
 #endif
@@ -197,8 +197,8 @@ do_search(
        if ( siz != 0 ) {
                for ( i = 0; i<siz; i++ ) {
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS,
-                               "do_search:        %s", an[i].an_name.bv_val ));
+                       LDAP_LOG( OPERATION, ARGS, 
+                               "do_search: %s", an[i].an_name.bv_val, 0, 0 );
 #else
                        Debug( LDAP_DEBUG_ARGS, " %s", an[i].an_name.bv_val, 0, 0 );
 #endif
@@ -206,7 +206,7 @@ do_search(
        }
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ARGS, "\n" ));
+       LDAP_LOG( OPERATION, ARGS, "\n" , 0, 0, 0 );
 #else
        Debug( LDAP_DEBUG_ARGS, "\n", 0, 0, 0 );
 #endif
index 4284b9dfdd0dd8ef05193a7b874d302f955825c2..188e6104228d88dd97f9dfab92662082f5e0a084 100644 (file)
@@ -1482,6 +1482,8 @@ typedef struct slap_op {
 
        volatile sig_atomic_t o_abandon;        /* abandon flag */
 
+       char o_do_not_cache;    /* don't cache from this op */
+
 #define SLAP_NO_CONTROL 0
 #define SLAP_NONCRITICAL_CONTROL 1
 #define SLAP_CRITICAL_CONTROL 2
index 45a42ad60034e5c883520f39f5a859ed9bc6d6bb..ff7cd450adfc7eea72d5e479af5fd74831697131 100644 (file)
@@ -33,8 +33,7 @@ str2filter( const char *str )
        const char *text = NULL;
 
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "filter", LDAP_LEVEL_ENTRY,
-               "str2filter: \"%s\"\n", str ));
+       LDAP_LOG( FILTER, ENTRY,  "str2filter: \"%s\"\n", str, 0, 0 );
 #else
        Debug( LDAP_DEBUG_FILTER, "str2filter \"%s\"\n", str, 0, 0 );
 #endif
index faf68b95b4ce3ffecc4a170bbfcf4d8802cf491e..78a1a18cb32816087284a2fa68608227d7bc4107 100644 (file)
@@ -65,9 +65,9 @@ void suffix_alias(
                        strncpy( dn->bv_val, oldDN, diff );
                        strcpy( &dn->bv_val[diff], be->be_suffixAlias[i+1].bv_val );
 #ifdef NEW_LOGGING
-                       LDAP_LOG(( "operation", LDAP_LEVEL_INFO,
-                                  "suffix_alias: converted \"%s\" to \"%s\"\n",
-                                  oldDN, dn->bv_val ));
+                       LDAP_LOG( OPERATION, INFO, 
+                               "suffix_alias: converted \"%s\" to \"%s\"\n",
+                               oldDN, dn->bv_val, 0 );
 #else
                        Debug( LDAP_DEBUG_ARGS,
                                "suffix_alias: converted \"%s\" to \"%s\"\n",
index eea2e1b1108ce59c5aa59244bf7d030fb6e7142d..98f53d433bfc5f8de8c7dcd8c13436246b74d3db 100644 (file)
@@ -16,7 +16,6 @@
 #include "slap.h"
 #include "ldap_pvt.h"
 
-
 struct sindexrec {
        char            *sir_name;
        Syntax          *sir_syn;
@@ -164,9 +163,9 @@ register_syntax(
        syn = ldap_str2syntax( desc, &code, &err, LDAP_SCHEMA_ALLOW_ALL);
        if ( !syn ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "schema", LDAP_LEVEL_ERR,
-                          "register_syntax: Error - %s before %s in %s.\n",
-                          ldap_scherr2str(code), err, desc ));
+               LDAP_LOG( CONFIG, ERR, 
+                       "register_syntax: Error - %s before %s in %s.\n",
+                       ldap_scherr2str(code), err, desc );
 #else
                Debug( LDAP_DEBUG_ANY, "Error in register_syntax: %s before %s in %s\n",
                    ldap_scherr2str(code), err, desc );
@@ -181,9 +180,9 @@ register_syntax(
 
        if ( code ) {
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "schema", LDAP_LEVEL_ERR,
-                          "register_syntax: Error - %s %s in %s\n",
-                          scherr2str(code), err, desc ));
+               LDAP_LOG( CONFIG, ERR, 
+                       "register_syntax: Error - %s %s in %s\n", 
+                       scherr2str(code), err, desc );
 #else
                Debug( LDAP_DEBUG_ANY, "Error in register_syntax: %s %s in %s\n",
                    scherr2str(code), err, desc );
@@ -222,9 +221,9 @@ syn_schema_info( Entry *e )
                }
 #if 0
 #ifdef NEW_LOGGING
-               LDAP_LOG(( "schema", LDAP_LEVEL_ENTRY,
+               LDAP_LOG( config, ENTRY,
                           "syn_schema_info: Merging syn [%ld] %s\n",
-                          (long)vals[0].bv_len, vals[0].bv_val ));
+                          (long)vals[0].bv_len, vals[0].bv_val, 0 );
 #else
                Debug( LDAP_DEBUG_TRACE, "Merging syn [%ld] %s\n",
               (long) vals[0].bv_len, vals[0].bv_val, 0 );
index 40457cfe9ace176af24e749075d2b23bba5f3eb4..c4c4f18542368b2dd8a69e9da4827b9c4e21db87 100644 (file)
@@ -26,7 +26,6 @@
 
 #include "slap.h"
 
-
 int
 do_unbind(
     Connection *conn,
@@ -34,8 +33,8 @@ do_unbind(
 )
 {
 #ifdef NEW_LOGGING
-       LDAP_LOG(( "operation", LDAP_LEVEL_ENTRY,
-                  "do_unbind: conn %d\n", conn ? conn->c_connid : -1 ));
+       LDAP_LOG( OPERATION, ENTRY, 
+               "do_unbind: conn %d\n", conn ? conn->c_connid : -1, 0, 0 );
 #else
        Debug( LDAP_DEBUG_TRACE, "do_unbind\n", 0, 0, 0 );
 #endif
diff --git a/servers/slapd/user.c b/servers/slapd/user.c
new file mode 100644 (file)
index 0000000..8df425b
--- /dev/null
@@ -0,0 +1,198 @@
+/* $OpenLDAP$ */
+/*
+ * Copyright 1998-2002 The OpenLDAP Foundation, All Rights Reserved.
+ * COPYING RESTRICTIONS APPLY, see COPYRIGHT file
+ */
+/* user.c - set user id, group id and group access list
+ *
+ * Copyright 1999 by PM Lashley.
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms are permitted only
+ * as authorized by the OpenLDAP Public License.  A copy of this
+ * license is available at http://www.OpenLDAP.org/license.html or
+ * in file LICENSE in the top-level directory of the distribution.
+*/
+
+#include "portable.h"
+
+#if defined(HAVE_SETUID) && defined(HAVE_SETGID)
+
+#include <stdio.h>
+
+#include <ac/stdlib.h>
+
+#ifdef HAVE_PWD_H
+#include <pwd.h>
+#endif
+#ifdef HAVE_GRP_H
+#include <grp.h>
+#endif
+
+#include <ac/ctype.h>
+#include <ac/unistd.h>
+
+#include "slap.h"
+
+/*
+ * Set real and effective user id and group id, and group access list
+ * The user and group arguments are freed.
+ */
+
+void
+slap_init_user( char *user, char *group )
+{
+    uid_t      uid = 0;
+    gid_t      gid = 0;
+    int                got_uid = 0, got_gid = 0;
+
+    if ( user ) {
+       struct passwd *pwd;
+       if ( isdigit( (unsigned char) *user )) {
+           got_uid = 1;
+           uid = atoi( user );
+#ifdef HAVE_GETPWUID
+           pwd = getpwuid( uid );
+           goto did_getpw;
+#else
+           free( user );
+           user = NULL;
+#endif
+       } else {
+           pwd = getpwnam( user );
+       did_getpw:
+           if ( pwd == NULL ) {
+#ifdef NEW_LOGGING
+                   LDAP_LOG( OPERATION, INFO, 
+                               "slap_init_user: No passwd entry for user %s\n", user, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "No passwd entry for user %s\n",
+                      user, 0, 0 );
+#endif
+
+               exit( EXIT_FAILURE );
+           }
+           if ( got_uid ) {
+               free( user );
+               user = (pwd != NULL ? ch_strdup( pwd->pw_name ) : NULL);
+           } else {
+               got_uid = 1;
+               uid = pwd->pw_uid;
+           }
+           got_gid = 1;
+           gid = pwd->pw_gid;
+#ifdef HAVE_ENDPWENT
+           endpwent();
+#endif
+       }
+    }
+
+    if ( group ) {
+       struct group *grp;
+       if ( isdigit( (unsigned char) *group )) {
+           gid = atoi( group );
+#ifdef HAVE_GETGRGID
+           grp = getgrgid( gid );
+           goto did_group;
+#endif
+       } else {
+           grp = getgrnam( group );
+           if ( grp != NULL )
+               gid = grp->gr_gid;
+       did_group:
+           if ( grp == NULL ) {
+#ifdef NEW_LOGGING
+               LDAP_LOG( OPERATION, INFO, 
+                       "slap_init_user: No group entry for group %s\n", group, 0, 0 );
+#else
+               Debug( LDAP_DEBUG_ANY, "No group entry for group %s\n",
+                      group, 0, 0 );
+#endif
+
+               exit( EXIT_FAILURE );
+           }
+       }
+       free( group );
+       got_gid = 1;
+    }
+
+    if ( user ) {
+       if ( getuid() == 0 && initgroups( user, gid ) != 0 ) {
+#ifdef NEW_LOGGING
+           LDAP_LOG( OPERATION, INFO,
+                       "slap_init_user: Could not set the group access (gid) list.\n", 
+                       0, 0, 0 );
+#else
+           Debug( LDAP_DEBUG_ANY,
+                  "Could not set the group access (gid) list\n", 0, 0, 0 );
+#endif
+
+           exit( EXIT_FAILURE );
+       }
+       free( user );
+    }
+
+#ifdef HAVE_ENDGRENT
+    endgrent();
+#endif
+
+    if ( got_gid ) {
+       if ( setgid( gid ) != 0 ) {
+#ifdef NEW_LOGGING
+           LDAP_LOG( OPERATION, INFO, 
+                       "slap_init_user: could not set real group id to %d\n", 
+                       (int)gid, 0, 0);
+#else
+           Debug( LDAP_DEBUG_ANY, "Could not set real group id to %d\n",
+                      (int) gid, 0, 0 );
+#endif
+
+           exit( EXIT_FAILURE );
+       }
+#ifdef HAVE_SETEGID
+       if ( setegid( gid ) != 0 ) {
+#ifdef NEW_LOGGING
+           LDAP_LOG( OPERATION, INFO, 
+                  "slap_init_user: Could not set effective group id to %d\n",
+                  (int)gid, 0, 0);
+#else
+           Debug( LDAP_DEBUG_ANY, "Could not set effective group id to %d\n",
+                      (int) gid, 0, 0 );
+#endif
+
+           exit( EXIT_FAILURE );
+       }
+#endif
+    }
+
+    if ( got_uid ) {
+       if ( setuid( uid ) != 0 ) {
+#ifdef NEW_LOGGING
+           LDAP_LOG( OPERATION, INFO, 
+                       "slap_init_user: Could not set real user id to %d\n", 
+                       (int)uid, 0, 0 );
+#else
+           Debug( LDAP_DEBUG_ANY, "Could not set real user id to %d\n",
+                      (int) uid, 0, 0 );
+#endif
+
+           exit( EXIT_FAILURE );
+       }
+#ifdef HAVE_SETEUID
+       if ( seteuid( uid ) != 0 ) {
+#ifdef NEW_LOGGING
+           LDAP_LOG( OPERATION, INFO, 
+                       "slap_init_user: Could not set effective user id to %d\n", 
+                       (int)uid, 0, 0 );
+#else
+           Debug( LDAP_DEBUG_ANY, "Could not set effective user id to %d\n",
+                      (int) uid, 0, 0 );
+#endif
+
+           exit( EXIT_FAILURE );
+       }
+#endif
+    }
+}
+
+#endif /* HAVE_PWD_H && HAVE_GRP_H */