]> git.sur5r.net Git - openldap/blobdiff - servers/slapd/aci.c
address ITS#4332; might remove dynamicObject counting
[openldap] / servers / slapd / aci.c
index 50bef60b754bf31c3d0458643b6c229601ca6794..28b99388ea2381f791e423411a116c095f774b8f 100644 (file)
@@ -2,7 +2,7 @@
 /* $OpenLDAP$ */
 /* This work is part of OpenLDAP Software <http://www.openldap.org/>.
  *
- * Copyright 1998-2005 The OpenLDAP Foundation.
+ * Copyright 1998-2006 The OpenLDAP Foundation.
  * All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
 #include "lber_pvt.h"
 #include "lutil.h"
 
-#define ACI_BUF_SIZE   1024    /* use most appropriate size */
+/* use most appropriate size */
+#define ACI_BUF_SIZE                   1024
+
+/* move to "stable" when no longer experimental */
+#define SLAPD_ACI_SYNTAX               "1.3.6.1.4.1.4203.666.2.1"
+
+/* change this to "OpenLDAPset" */
+#define SLAPD_ACI_SET_ATTR             "template"
+
+typedef enum slap_aci_scope_t {
+       SLAP_ACI_SCOPE_ENTRY            = 0x1,
+       SLAP_ACI_SCOPE_CHILDREN         = 0x2,
+       SLAP_ACI_SCOPE_SUBTREE          = ( SLAP_ACI_SCOPE_ENTRY | SLAP_ACI_SCOPE_CHILDREN )
+} slap_aci_scope_t;
 
 enum {
        ACI_BV_ENTRY,
@@ -111,10 +124,7 @@ static const struct berval aci_bv[] = {
        BER_BVNULL
 };
 
-#ifdef SLAP_DYNACL
-static
-#endif /* SLAP_DYNACL */
-AttributeDescription *slap_ad_aci;
+static AttributeDescription    *slap_ad_aci;
 
 static int
 OpenLDAPaciValidate(
@@ -390,7 +400,7 @@ done:
        return rc;
 }
 
-int
+static int
 aci_mask(
        Operation               *op,
        Entry                   *e,
@@ -640,7 +650,7 @@ aci_mask(
        return 0;
 }
 
-int
+static int
 aci_init( void )
 {
        /* OpenLDAP eXperimental Syntax */
@@ -696,7 +706,7 @@ aci_init( void )
                &rc, &text, LDAP_SCHEMA_ALLOW_ALL );
        if ( !at ) {
                Debug( LDAP_DEBUG_ANY,
-                       "%s AttributeType load failed: %s %s\n",
+                       "aci_init: AttributeType \"%s\" parse failed: %s %s\n",
                        aci_at.name, ldap_scherr2str( rc ), text );
                return rc;
        }
@@ -704,9 +714,9 @@ aci_init( void )
        rc = at_add( at, 0, &sat, &text );
        if ( rc != LDAP_SUCCESS ) {
                ldap_attributetype_free( at );
-               fprintf( stderr, "iMUX_monitor_schema_init: "
-                       "AttributeType load failed: %s %s\n",
-                       scherr2str( rc ), text );
+               Debug( LDAP_DEBUG_ANY,
+                       "aci_init: AttributeType \"%s\" load failed: %s %s\n",
+                       aci_at.name, scherr2str( rc ), text );
                return rc;
        }
        ldap_memfree( at );
@@ -715,7 +725,7 @@ aci_init( void )
                        aci_at.ad, &text );
        if ( rc != LDAP_SUCCESS ) {
                Debug( LDAP_DEBUG_ANY,
-                       "unable to find AttributeDescription "
+                       "aci_init: unable to find AttributeDescription "
                        "\"%s\": %d (%s)\n",
                        aci_at.name, rc, text );
                return 1;
@@ -727,7 +737,6 @@ aci_init( void )
        return rc;
 }
 
-#ifdef SLAP_DYNACL
 static int
 dynacl_aci_parse(
        const char *fname,
@@ -970,7 +979,6 @@ dynacl_aci_init( void )
        return rc;
 }
 
-#endif /* SLAP_DYNACL */
 
 /* ACI syntax validation */
 
@@ -1694,7 +1702,7 @@ OpenLDAPaciNormalize(
 int
 init_module( int argc, char *argv[] )
 {
-       return slap_dynacl_register();
+       return dynacl_aci_init();
 }
 #endif /* SLAPD_ACI_ENABLED == SLAPD_MOD_DYNAMIC */