[SCM] Samba Shared Repository - branch master updated

Andrew Tridgell tridge at samba.org
Mon Dec 7 20:44:44 MST 2009


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 <tridge at 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 <tridge at 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


More information about the samba-cvs mailing list