The branch, master has been updated
       via  cc9d4d5... s4-drs: use -r to ldbdel in unvampire devel script
       via  ff984cd... s4-ldb: fixed ldbdel with -r (recursive deletion)
      from  b2d8e11... s4:build Bump ldb and tdb required versions.

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=master


- Log -----------------------------------------------------------------
commit cc9d4d51814054d91afeb17e62ded3087bc864ff
Author: Andrew Tridgell <tri...@samba.org>
Date:   Tue Dec 8 14:42:08 2009 +1100

    s4-drs: use -r to ldbdel in unvampire devel script
    
    This ensures we delete any nTDSConnection objects

commit ff984cdfac3638e75fdc764d45899fbabb17d291
Author: Andrew Tridgell <tri...@samba.org>
Date:   Tue Dec 8 14:40:20 2009 +1100

    s4-ldb: fixed ldbdel with -r (recursive deletion)
    
    We need to delete the deepest DNs first

-----------------------------------------------------------------------

Summary of changes:
 source4/lib/ldb/tools/ldbdel.c              |   15 +++++++++++++++
 source4/scripting/devel/drs/unvampire_ad.sh |    7 +++----
 2 files changed, 18 insertions(+), 4 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source4/lib/ldb/tools/ldbdel.c b/source4/lib/ldb/tools/ldbdel.c
index ddf168d..5740f22 100644
--- a/source4/lib/ldb/tools/ldbdel.c
+++ b/source4/lib/ldb/tools/ldbdel.c
@@ -34,6 +34,14 @@
 #include "ldb.h"
 #include "tools/cmdline.h"
 
+static int dn_cmp(const void *p1, const void *p2)
+{
+       const struct ldb_message *msg1, *msg2;
+       msg1 = *(const struct ldb_message * const *)p1;
+       msg2 = *(const struct ldb_message * const *)p2;
+       return ldb_dn_compare(msg1->dn, msg2->dn);
+}
+
 static int ldb_delete_recursive(struct ldb_context *ldb, struct ldb_dn *dn)
 {
        int ret, i, total=0;
@@ -43,9 +51,16 @@ static int ldb_delete_recursive(struct ldb_context *ldb, 
struct ldb_dn *dn)
        ret = ldb_search(ldb, ldb, &res, dn, LDB_SCOPE_SUBTREE, attrs, 
"distinguishedName=*");
        if (ret != LDB_SUCCESS) return -1;
 
+       /* sort the DNs, deepest first */
+       qsort(res->msgs, res->count, sizeof(res->msgs[0]), dn_cmp);
+
        for (i = 0; i < res->count; i++) {
                if (ldb_delete(ldb, res->msgs[i]->dn) == 0) {
                        total++;
+               } else {
+                       printf("Failed to delete '%s' - %s\n",
+                              ldb_dn_get_linearized(res->msgs[i]->dn),
+                              ldb_errstring(ldb));
                }
        }
 
diff --git a/source4/scripting/devel/drs/unvampire_ad.sh 
b/source4/scripting/devel/drs/unvampire_ad.sh
index e4b9dcc..7f9763e 100755
--- a/source4/scripting/devel/drs/unvampire_ad.sh
+++ b/source4/scripting/devel/drs/unvampire_ad.sh
@@ -5,8 +5,7 @@ set -x
 . `dirname $0`/vars
 
 
-bin/ldbdel -H ldap://$server.$DNSDOMAIN -U$workgroup/administrator%$pass 
"CN=$machine,CN=Computers,$dn"
-bin/ldbdel -H ldap://$server.$DNSDOMAIN -U$workgroup/administrator%$pass 
"CN=$machine,OU=Domain Controllers,$dn"
-bin/ldbdel -H ldap://$server.$DNSDOMAIN -U$workgroup/administrator%$pass 
"CN=NTDS 
Settings,CN=$machine,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,$dn"
-bin/ldbdel -H ldap://$server.$DNSDOMAIN -U$workgroup/administrator%$pass 
"CN=$machine,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,$dn"
+bin/ldbdel -r -H ldap://$server.$DNSDOMAIN -U$workgroup/administrator%$pass 
"CN=$machine,CN=Computers,$dn"
+bin/ldbdel -r -H ldap://$server.$DNSDOMAIN -U$workgroup/administrator%$pass 
"CN=$machine,OU=Domain Controllers,$dn"
+bin/ldbdel -r -H ldap://$server.$DNSDOMAIN -U$workgroup/administrator%$pass 
"CN=$machine,CN=Servers,CN=Default-First-Site-Name,CN=Sites,CN=Configuration,$dn"
 rm -f $PREFIX/private/*.ldb


-- 
Samba Shared Repository

Reply via email to