svn commit: samba r12196 - branches/SAMBA_3_0/source/libads trunk/source/libads

jerry at samba.org jerry at samba.org
Mon Dec 12 18:55:55 GMT 2005


Author: jerry
Date: 2005-12-12 18:55:54 +0000 (Mon, 12 Dec 2005)
New Revision: 12196

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=12196

Log:
patch from Krishna Ganugapati <krishnag at centeris.com>

Use the subtree delete ldap control when running 'net ads leave'
to ensure that the machine account is actually deleted.


Modified:
   branches/SAMBA_3_0/source/libads/ldap.c
   trunk/source/libads/ldap.c


Changeset:
Modified: branches/SAMBA_3_0/source/libads/ldap.c
===================================================================
--- branches/SAMBA_3_0/source/libads/ldap.c	2005-12-12 18:22:02 UTC (rev 12195)
+++ branches/SAMBA_3_0/source/libads/ldap.c	2005-12-12 18:55:54 UTC (rev 12196)
@@ -37,6 +37,9 @@
  * codepoints in UTF-8).  This may have to change at some point
  **/
 
+
+#define LDAP_SERVER_TREE_DELETE_OID	"1.2.840.113556.1.4.805"
+
 static SIG_ATOMIC_T gotalarm;
                                                                                                                    
 /***************************************************************
@@ -1796,7 +1799,12 @@
 	void *res, *msg;
 	char *hostnameDN, *host; 
 	int rc;
+	LDAPControl ldap_control;
+	LDAPControl  * pldap_control[] = {&ldap_control, 0};
 
+	memset(&ldap_control, 0, sizeof(LDAPControl));
+	ldap_control.ldctl_oid = (char *)LDAP_SERVER_TREE_DELETE_OID;
+
 	/* hostname must be lowercase */
 	host = SMB_STRDUP(hostname);
 	strlower_m(host);
@@ -1813,7 +1821,15 @@
 	}
 
 	hostnameDN = ads_get_dn(ads, (LDAPMessage *)msg);
-	rc = ldap_delete_s(ads->ld, hostnameDN);
+
+
+	rc = ldap_delete_ext_s(ads->ld, hostnameDN, pldap_control, NULL);
+	if (rc) {
+		DEBUG(3,("ldap_delete_ext_s failed with error code %d\n", rc));
+	}else {
+		DEBUG(3,("ldap_delete_ext_s succeeded with error code %d\n", rc));
+	}
+
 	ads_memfree(ads, hostnameDN);
 	if (rc != LDAP_SUCCESS) {
 		return ADS_ERROR(rc);

Modified: trunk/source/libads/ldap.c
===================================================================
--- trunk/source/libads/ldap.c	2005-12-12 18:22:02 UTC (rev 12195)
+++ trunk/source/libads/ldap.c	2005-12-12 18:55:54 UTC (rev 12196)
@@ -37,6 +37,9 @@
  * codepoints in UTF-8).  This may have to change at some point
  **/
 
+
+#define LDAP_SERVER_TREE_DELETE_OID	"1.2.840.113556.1.4.805"
+
 static SIG_ATOMIC_T gotalarm;
                                                                                                                    
 /***************************************************************
@@ -1796,7 +1799,12 @@
 	void *res, *msg;
 	char *hostnameDN, *host; 
 	int rc;
+	LDAPControl ldap_control;
+	LDAPControl  * pldap_control[] = {&ldap_control, 0};
 
+	memset(&ldap_control, 0, sizeof(LDAPControl));
+	ldap_control.ldctl_oid = (char *)LDAP_SERVER_TREE_DELETE_OID;
+
 	/* hostname must be lowercase */
 	host = SMB_STRDUP(hostname);
 	strlower_m(host);
@@ -1813,7 +1821,15 @@
 	}
 
 	hostnameDN = ads_get_dn(ads, (LDAPMessage *)msg);
-	rc = ldap_delete_s(ads->ld, hostnameDN);
+
+
+	rc = ldap_delete_ext_s(ads->ld, hostnameDN, pldap_control, NULL);
+	if (rc) {
+		DEBUG(3,("ldap_delete_ext_s failed with error code %d\n", rc));
+	}else {
+		DEBUG(3,("ldap_delete_ext_s succeeded with error code %d\n", rc));
+	}
+
 	ads_memfree(ads, hostnameDN);
 	if (rc != LDAP_SUCCESS) {
 		return ADS_ERROR(rc);



More information about the samba-cvs mailing list