]> git.sur5r.net Git - openldap/commitdiff
Add o_no_schema_check to operation structure
authorLuke Howard <lukeh@openldap.org>
Mon, 1 Aug 2005 15:26:13 +0000 (15:26 +0000)
committerLuke Howard <lukeh@openldap.org>
Mon, 1 Aug 2005 15:26:13 +0000 (15:26 +0000)
entry_schema_check() nows takes Operation instead of Backend as first
argument, allows it to check o_no_schema_check

14 files changed:
servers/slapd/back-bdb/add.c
servers/slapd/back-bdb/modify.c
servers/slapd/back-ldbm/add.c
servers/slapd/back-ldbm/modify.c
servers/slapd/back-monitor/log.c
servers/slapd/back-sql/add.c
servers/slapd/back-sql/modify.c
servers/slapd/back-sql/modrdn.c
servers/slapd/bconfig.c
servers/slapd/proto-slap.h
servers/slapd/schema_check.c
servers/slapd/slap.h
servers/slapd/slapadd.c
servers/slapd/slapi/proto-slapi.h

index 4ef340e92b82156c1dd319b8f307efd88359fae5..227652077e1258978d857763b6d58426693c4226 100644 (file)
@@ -52,7 +52,7 @@ bdb_add(Operation *op, SlapReply *rs )
        ctrls[num_ctrls] = 0;
 
        /* check entry's schema */
-       rs->sr_err = entry_schema_check( op->o_bd, op->oq_add.rs_e, NULL,
+       rs->sr_err = entry_schema_check( op, op->oq_add.rs_e, NULL,
                get_manageDIT(op), &rs->sr_text, textbuf, textlen );
        if ( rs->sr_err != LDAP_SUCCESS ) {
                Debug( LDAP_DEBUG_TRACE,
index 7e85e8b322d9954fe9adf47adb9c47e562c97d41..d342febff2787200199ec3a5b7bae75198757f7c 100644 (file)
@@ -196,7 +196,7 @@ int bdb_modify_internal(
        }
 
        /* check that the entry still obeys the schema */
-       rc = entry_schema_check( op->o_bd, e, save_attrs, get_manageDIT(op),
+       rc = entry_schema_check( op, e, save_attrs, get_manageDIT(op),
                text, textbuf, textlen );
        if ( rc != LDAP_SUCCESS || op->o_noop ) {
                attrs_free( e->e_attrs );
index 39b03af185049c18647e2d3224afd6a9a163c0d7..413d292508e2145487552d3eba4d500217761a01 100644 (file)
@@ -45,7 +45,7 @@ ldbm_back_add(
        Debug(LDAP_DEBUG_ARGS, "==> ldbm_back_add: %s\n",
                op->o_req_dn.bv_val, 0, 0);
        
-       rs->sr_err = entry_schema_check( op->o_bd, op->oq_add.rs_e, NULL,
+       rs->sr_err = entry_schema_check( op, op->oq_add.rs_e, NULL,
                get_manageDIT(op), &rs->sr_text, textbuf, textlen );
 
        if ( rs->sr_err != LDAP_SUCCESS ) {
index 51d10c269197ab37358f2242a8df3fde6d3a36ae..2dd696919fbde91b3d885c344ca7d74151f6e7b6 100644 (file)
@@ -164,7 +164,7 @@ int ldbm_modify_internal(
        }
 
        /* check that the entry still obeys the schema */
-       rc = entry_schema_check( op->o_bd, e, save_attrs, get_manageDIT(op),
+       rc = entry_schema_check( op, e, save_attrs, get_manageDIT(op),
                text, textbuf, textlen );
        if ( rc != LDAP_SUCCESS ) {
                Debug( LDAP_DEBUG_ANY, "entry failed schema check: %s\n",
index d54b572ee78d818261023f3132121538d4e9b1ee..5be1d2074199f0f3e8cc37c32e3a222d0c61a187 100644 (file)
@@ -197,7 +197,7 @@ monitor_subsys_log_modify(
                }
 
                /* check that the entry still obeys the schema */
-               rc = entry_schema_check( be_monitor, e, save_attrs, 0,
+               rc = entry_schema_check( op, e, save_attrs, 0,
                        &text, textbuf, sizeof( textbuf ) );
                if ( rc != LDAP_SUCCESS ) {
                        rs->sr_err = rc;
index d48076c784bb808a08c79ce5684339c5139b4479..9a6e6a56f9ff51be5879b2250d788e1dfd12e97d 100644 (file)
@@ -956,7 +956,7 @@ backsql_add( Operation *op, SlapReply *rs )
        if ( BACKSQL_CHECK_SCHEMA( bi ) ) {
                char            textbuf[ SLAP_TEXT_BUFLEN ] = { '\0' };
 
-               rs->sr_err = entry_schema_check( op->o_bd, op->ora_e, NULL, 0,
+               rs->sr_err = entry_schema_check( op, op->ora_e, NULL, 0,
                        &rs->sr_text, textbuf, sizeof( textbuf ) );
                if ( rs->sr_err != LDAP_SUCCESS ) {
                        Debug( LDAP_DEBUG_TRACE, "   backsql_add(\"%s\"): "
index fa2d1e9d4ba80625cc7019bf28d0c5528f5c4e4a..79644cb969b2339883a26129e88d65ee6863a6f5 100644 (file)
@@ -151,7 +151,7 @@ backsql_modify( Operation *op, SlapReply *rs )
                        goto do_transact;
                }
 
-               rs->sr_err = entry_schema_check( op->o_bd, &m, NULL, 0,
+               rs->sr_err = entry_schema_check( op, &m, NULL, 0,
                        &rs->sr_text, textbuf, sizeof( textbuf ) );
                if ( rs->sr_err != LDAP_SUCCESS ) {
                        Debug( LDAP_DEBUG_TRACE, "   backsql_add(\"%s\"): "
index 4ad518e3bdceff8264a0d9ff9d95b2618d65d4d6..242a1110c2b4c3680c2a24fea8dbb0b7612480fe 100644 (file)
@@ -495,7 +495,7 @@ backsql_modrdn( Operation *op, SlapReply *rs )
 
                e_id = bsi.bsi_base_id;
 
-               rs->sr_err = entry_schema_check( op->o_bd, &r, NULL, 0,
+               rs->sr_err = entry_schema_check( op, &r, NULL, 0,
                        &rs->sr_text, textbuf, sizeof( textbuf ) );
                if ( rs->sr_err != LDAP_SUCCESS ) {
                        Debug( LDAP_DEBUG_TRACE, "   backsql_add(\"%s\"): "
index ad55a887daec969c4c30c19ab05481988729fd11..0e150188f3ab55959f6013146914b9ba391e2970 100644 (file)
@@ -3500,7 +3500,7 @@ config_modify_internal( CfEntryInfo *ce, Operation *op, SlapReply *rs,
        
        if(rc == LDAP_SUCCESS) {
                /* check that the entry still obeys the schema */
-               rc = entry_schema_check(op->o_bd, e, NULL, 0,
+               rc = entry_schema_check(op, e, NULL, 0,
                        &rs->sr_text, ca->msg, sizeof(ca->msg) );
        }
        if ( rc == LDAP_SUCCESS ) {
index 660dbdcd51438fcebd15576234520609c3fdda12..ce907de38b251ecc52b1ea8dce48841938537515 100644 (file)
@@ -1357,7 +1357,7 @@ LDAP_SLAPD_F( int ) structural_class(
        char *textbuf, size_t textlen );
 
 LDAP_SLAPD_F( int ) entry_schema_check(
-       Backend *be,
+       Operation *op,
        Entry *e,
        Attribute *attrs,
        int manage,
index 02a3f012cdbaeab5b359d89efc4536a7226a96b4..7a8ace4e48e7445a1e5618614291850db60196bc 100644 (file)
@@ -43,7 +43,7 @@ static int entry_naming_check(
 
 int
 entry_schema_check( 
-       Backend *be,
+       Operation *op,
        Entry *e,
        Attribute *oldattrs,
        int manage,
@@ -64,7 +64,11 @@ entry_schema_check(
        int subentry = is_entry_subentry( e );
        int collectiveSubentry = 0;
 
-       if ( SLAP_NO_SCHEMA_CHECK( be )) {
+       if ( SLAP_NO_SCHEMA_CHECK( op->o_bd )) {
+               return LDAP_SUCCESS;
+       }
+
+       if ( get_no_schema_check( op ) ) {
                return LDAP_SUCCESS;
        }
 
@@ -84,7 +88,7 @@ entry_schema_check(
 
                if( a->a_desc->ad_type->sat_check ) {
                        int rc = (a->a_desc->ad_type->sat_check)(
-                               be, e, a, text, textbuf, textlen );
+                               op->o_bd, e, a, text, textbuf, textlen );
                        if( rc != LDAP_SUCCESS ) {
                                return rc;
                        }
@@ -308,7 +312,7 @@ entry_schema_check(
                }
 
                if ( oc->soc_check ) {
-                       int rc = (oc->soc_check)( be, e, oc,
+                       int rc = (oc->soc_check)( op->o_bd, e, oc,
                                text, textbuf, textlen );
                        if( rc != LDAP_SUCCESS ) {
                                return rc;
index 49ff60dbe27195196398ddf2c27cd932add92202..7d97375c36aa1e999a182aadd055c61e12ea2380 100644 (file)
@@ -2395,6 +2395,8 @@ typedef struct slap_op {
 
        char o_nocaching;
        char o_delete_glue_parent;
+       char o_no_schema_check;
+#define get_no_schema_check(op)                        ((op)->o_no_schema_check)
 
 #define SLAP_CONTROL_NONE      0
 #define SLAP_CONTROL_IGNORED   1
index 6785c3e8ff3ad240040834201b698ce2986078c6..e4190eac3b40f5e9809c91e6b2e358d767ad159e 100644 (file)
@@ -64,8 +64,14 @@ slapadd( int argc, char **argv )
        int ret;
        struct berval bvtext;
        int checkvals;
+       char opbuf[OPERATION_BUFFER_SIZE];
+       Operation *op;
+
        slap_tool_init( progname, SLAPADD, argc, argv );
 
+       memset( opbuf, 0, sizeof(opbuf) );
+       op = (Operation *)opbuf;
+
        if( !be->be_entry_open ||
                !be->be_entry_close ||
                !be->be_entry_put )
@@ -181,7 +187,9 @@ slapadd( int argc, char **argv )
                        }
 
                        /* check schema */
-                       rc = entry_schema_check( be, e, NULL, manage,
+                       op->o_bd = be;
+
+                       rc = entry_schema_check( op, e, NULL, manage,
                                &text, textbuf, textlen );
 
                        if( rc != LDAP_SUCCESS ) {
index b39873745dfa45e48ebdc3a713b013e6506a318f..9a32b0abd8ccf1317254efd72fa477ecfeb3cb5c 100644 (file)
@@ -27,7 +27,7 @@ LDAP_BEGIN_DECL
 
 /* slapi_utils.c */
 LDAP_SLAPI_F (LDAPMod **) slapi_int_modifications2ldapmods LDAP_P(( Modifications **, void *ctx ));
-LDAP_SLAPI_F (Modifications *) slapi_int_ldapmods2modifications LDAP_P(( LDAPMod **, int dup, void *ctx ));
+LDAP_SLAPI_F (Modifications *) slapi_int_ldapmods2modifications LDAP_P(( LDAPMod **, void *ctx ));
 LDAP_SLAPI_F (void) slapi_int_free_ldapmods LDAP_P(( LDAPMod ** ));
 LDAP_SLAPI_F (int) slapi_int_count_controls LDAP_P(( LDAPControl **ctrls ));
 LDAP_SLAPI_F (char **) slapi_get_supported_extended_ops LDAP_P((void));
@@ -41,7 +41,6 @@ LDAP_SLAPI_F (void) slapi_int_connection_done_pb LDAP_P(( Slapi_PBlock *pb ));
 /* slapi_pblock.c */
 LDAP_SLAPI_F (int) slapi_pblock_delete_param LDAP_P(( Slapi_PBlock *p, int param ));
 LDAP_SLAPI_F (void) slapi_pblock_clear LDAP_P(( Slapi_PBlock *pb ));
-LDAP_SLAPI_F (void) slapi_int_mods_free( Modifications *ml );
 
 LDAP_SLAPI_F (int) slapi_int_pblock_get_first LDAP_P(( Backend *be, Slapi_PBlock **pb ));
 LDAP_SLAPI_F (int) slapi_int_pblock_get_next LDAP_P(( Slapi_PBlock **pb ));
@@ -84,7 +83,8 @@ LDAP_SLAPI_F (int) slapi_int_create_object_extensions LDAP_P((int objecttype, vo
 LDAP_SLAPI_F (int) slapi_int_clear_object_extensions LDAP_P((int objecttype, void *object));
 
 /* slapi_overlay.c */
-LDAP_SLAPI_F (int) slapi_int_overlay_init LDAP_P((void));
+LDAP_SLAPI_F (int) slapi_over_is_inst LDAP_P((BackendDB *));
+LDAP_SLAPI_F (int) slapi_over_config LDAP_P((BackendDB *));
 
 LDAP_END_DECL