[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