objectclass AS_SYSTEM
authorStefan Metzmacher <metze@samba.org>
Mon, 19 Nov 2012 05:59:33 +0000 (06:59 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 19 Nov 2012 11:02:10 +0000 (12:02 +0100)
source4/dsdb/samdb/ldb_modules/objectclass.c

index 074360086f9295dcf34196f18f3e59392114c2d5..51b7b4c42398eaf275117d3f89b5f67f3966e60a 100644 (file)
@@ -351,6 +351,14 @@ static int objectclass_add(struct ldb_module *module, struct ldb_request *req)
                return ret;
        }
 
+       ret = dsdb_request_add_controls(search_req,
+                                       DSDB_FLAG_AS_SYSTEM|
+                                       DSDB_SEARCH_SHOW_DELETED|
+                                       DSDB_SEARCH_SHOW_RECYCLED);
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
        ac->step_fn = objectclass_do_add;
 
        return ldb_next_request(ac->module, search_req);
@@ -797,6 +805,14 @@ static int oc_modify_callback(struct ldb_request *req, struct ldb_reply *ares)
                return ldb_module_done(ac->req, NULL, NULL, ret);
        }
 
+       ret = dsdb_request_add_controls(search_req,
+                                       DSDB_FLAG_AS_SYSTEM|
+                                       DSDB_SEARCH_SHOW_DELETED|
+                                       DSDB_SEARCH_SHOW_RECYCLED);
+       if (ret != LDB_SUCCESS) {
+               return ldb_module_done(ac->req, NULL, NULL, ret);
+       }
+
        ac->step_fn = objectclass_do_mod;
 
        ret = ldb_next_request(ac->module, search_req);
@@ -1021,9 +1037,10 @@ static int objectclass_rename(struct ldb_module *module, struct ldb_request *req
        /* we have to add the show recycled control, as otherwise DRS
           deletes will be refused as we will think the target parent
           does not exist */
-       ret = ldb_request_add_control(search_req, LDB_CONTROL_SHOW_RECYCLED_OID,
-                                     false, NULL);
-
+       ret = dsdb_request_add_controls(search_req,
+                                       DSDB_FLAG_AS_SYSTEM|
+                                       DSDB_SEARCH_SHOW_DELETED|
+                                       DSDB_SEARCH_SHOW_RECYCLED);
        if (ret != LDB_SUCCESS) {
                return ret;
        }
@@ -1071,6 +1088,14 @@ static int objectclass_do_rename(struct oc_context *ac)
                return ret;
        }
 
+       ret = dsdb_request_add_controls(search_req,
+                                       DSDB_FLAG_AS_SYSTEM|
+                                       DSDB_SEARCH_SHOW_DELETED|
+                                       DSDB_SEARCH_SHOW_RECYCLED);
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
        ac->step_fn = objectclass_do_rename2;
 
        return ldb_next_request(ac->module, search_req);
@@ -1251,6 +1276,14 @@ static int objectclass_delete(struct ldb_module *module, struct ldb_request *req
                return ret;
        }
 
+       ret = dsdb_request_add_controls(search_req,
+                                       DSDB_FLAG_AS_SYSTEM|
+                                       DSDB_SEARCH_SHOW_DELETED|
+                                       DSDB_SEARCH_SHOW_RECYCLED);
+       if (ret != LDB_SUCCESS) {
+               return ret;
+       }
+
        ac->step_fn = objectclass_do_delete;
 
        return ldb_next_request(ac->module, search_req);