[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-unstable-1051-g5bbceac

Günther Deschner gd at samba.org
Thu Jan 3 17:18:39 GMT 2008


The branch, v3-2-test has been updated
       via  5bbceac88159ef6ff83d9cc62c77c7af2116967d (commit)
       via  65537eae842065a1dd68d8e532e61502b61e1dbe (commit)
       via  4deef80bed374af5032c0f3081d2ee3c70be99df (commit)
       via  62e7d467ab1b2f98327960eec3a3a925b2f04bda (commit)
      from  77713e776405800ac54c692a77cd4efd153042cb (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit 5bbceac88159ef6ff83d9cc62c77c7af2116967d
Author: Günther Deschner <gd at samba.org>
Date:   Thu Jan 3 17:28:09 2008 +0100

    Add ads_get_joinable_ous().
    
    Guenther

commit 65537eae842065a1dd68d8e532e61502b61e1dbe
Author: Günther Deschner <gd at samba.org>
Date:   Thu Jan 3 16:46:26 2008 +0100

    Use different error code for libnet_conf initialization failure.
    
    Guenther

commit 4deef80bed374af5032c0f3081d2ee3c70be99df
Author: Günther Deschner <gd at samba.org>
Date:   Thu Jan 3 16:41:38 2008 +0100

    Minor libnetapi join cosmetic cleanup.
    
    Guenther

commit 62e7d467ab1b2f98327960eec3a3a925b2f04bda
Author: Günther Deschner <gd at samba.org>
Date:   Thu Jan 3 16:40:04 2008 +0100

    Add some more join related werror codes.
    
    Guenther

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

Summary of changes:
 source/include/ads_protos.h    |    4 ++
 source/include/doserr.h        |    2 +
 source/lib/netapi/joindomain.c |    6 ++--
 source/libads/ldap.c           |   60 ++++++++++++++++++++++++++++++++++++++++
 source/libnet/libnet_conf.c    |    3 +-
 source/libsmb/doserr.c         |    3 ++
 6 files changed, 73 insertions(+), 5 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/include/ads_protos.h b/source/include/ads_protos.h
index 0292d91..738df3e 100644
--- a/source/include/ads_protos.h
+++ b/source/include/ads_protos.h
@@ -114,3 +114,7 @@ ADS_STATUS ads_get_tokensids(ADS_STRUCT *ads,
 			      DOM_SID *primary_group_sid,
 			      DOM_SID **sids,
 			      size_t *num_sids);
+ADS_STATUS ads_get_joinable_ous(ADS_STRUCT *ads,
+				TALLOC_CTX *mem_ctx,
+				char ***ous,
+				size_t *num_ous);
diff --git a/source/include/doserr.h b/source/include/doserr.h
index 079a566..08f5b3e 100644
--- a/source/include/doserr.h
+++ b/source/include/doserr.h
@@ -216,12 +216,14 @@
 #define WERR_BUF_TOO_SMALL W_ERROR(2123)
 #define WERR_JOB_NOT_FOUND W_ERROR(2151)
 #define WERR_DEST_NOT_FOUND W_ERROR(2152)
+#define WERR_USER_EXISTS W_ERROR(2224)
 #define WERR_NOT_LOCAL_DOMAIN W_ERROR(2320)
 #define WERR_DOMAIN_CONTROLLER_NOT_FOUND W_ERROR(2453)
 
 #define WERR_SETUP_ALREADY_JOINED W_ERROR(2691)
 #define WERR_SETUP_NOT_JOINED W_ERROR(2692)
 #define WERR_SETUP_DOMAIN_CONTROLLER W_ERROR(2693)
+#define WERR_DEFAULT_JOIN_REQUIRED W_ERROR(2694)
 
 #define WERR_DEVICE_NOT_AVAILABLE W_ERROR(4319)
 #define WERR_STATUS_MORE_ENTRIES   W_ERROR(0x0105)
diff --git a/source/lib/netapi/joindomain.c b/source/lib/netapi/joindomain.c
index 60f48a7..d200c9b 100644
--- a/source/lib/netapi/joindomain.c
+++ b/source/lib/netapi/joindomain.c
@@ -114,7 +114,7 @@ static WERROR NetJoinDomainRemote(struct libnetapi_ctx *ctx,
 	if (!pipe_cli) {
 		werr = ntstatus_to_werror(status);
 		goto done;
-	};
+	}
 
 	if (password) {
 		encode_wkssvc_join_password_buffer(ctx,
@@ -300,7 +300,7 @@ static WERROR NetUnjoinDomainRemote(struct libnetapi_ctx *ctx,
 	if (!pipe_cli) {
 		werr = ntstatus_to_werror(status);
 		goto done;
-	};
+	}
 
 	if (password) {
 		encode_wkssvc_join_password_buffer(ctx,
@@ -407,7 +407,7 @@ static WERROR NetGetJoinInformationRemote(struct libnetapi_ctx *ctx,
 	if (!pipe_cli) {
 		werr = ntstatus_to_werror(status);
 		goto done;
-	};
+	}
 
 	status = rpccli_wkssvc_NetrGetJoinInformation(pipe_cli, ctx,
 						      server_name,
diff --git a/source/libads/ldap.c b/source/libads/ldap.c
index 953693c..843d579 100644
--- a/source/libads/ldap.c
+++ b/source/libads/ldap.c
@@ -2791,6 +2791,66 @@ ADS_STATUS ads_upn_suffixes(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, char ***suffix
 }
 
 /**
+ * get the joinable ous for a domain
+ * @param ads connection to ads server
+ * @param mem_ctx Pointer to talloc context
+ * @param ous Pointer to an array of ous
+ * @param num_ous Pointer to the number of ous
+ * @return status of search
+ **/
+ADS_STATUS ads_get_joinable_ous(ADS_STRUCT *ads,
+				TALLOC_CTX *mem_ctx,
+				char ***ous,
+				size_t *num_ous)
+{
+	ADS_STATUS status;
+	LDAPMessage *res = NULL;
+	LDAPMessage *msg = NULL;
+	const char *attrs[] = { "dn", NULL };
+	int count = 0;
+
+	status = ads_search(ads, &res,
+			    "(|(objectClass=domain)(objectclass=organizationalUnit))",
+			    attrs);
+	if (!ADS_ERR_OK(status)) {
+		return status;
+	}
+
+	count = ads_count_replies(ads, res);
+	if (count < 1) {
+		ads_msgfree(ads, res);
+		return ADS_ERROR(LDAP_NO_RESULTS_RETURNED);
+	}
+
+	for (msg = ads_first_entry(ads, res); msg;
+	     msg = ads_next_entry(ads, msg)) {
+
+		char *dn = NULL;
+
+		dn = ads_get_dn(ads, msg);
+		if (!dn) {
+			ads_msgfree(ads, res);
+			return ADS_ERROR(LDAP_NO_MEMORY);
+		}
+
+		if (!add_string_to_array(mem_ctx, dn,
+					 (const char ***)ous,
+					 (int *)num_ous)) {
+			ads_memfree(ads, dn);
+			ads_msgfree(ads, res);
+			return ADS_ERROR(LDAP_NO_MEMORY);
+		}
+
+		ads_memfree(ads, dn);
+	}
+
+	ads_msgfree(ads, res);
+
+	return status;
+}
+
+
+/**
  * pull a DOM_SID from an extended dn string
  * @param mem_ctx TALLOC_CTX 
  * @param extended_dn string
diff --git a/source/libnet/libnet_conf.c b/source/libnet/libnet_conf.c
index 6652617..c8e55a7 100644
--- a/source/libnet/libnet_conf.c
+++ b/source/libnet/libnet_conf.c
@@ -68,8 +68,7 @@ static WERROR libnet_conf_reg_initialize(void)
 	}
 
 	if (!registry_init_regdb()) {
-		/* proper error code? */
-		werr = WERR_GENERAL_FAILURE;
+		werr = WERR_REG_IO_FAILURE;
 		goto done;
 	}
 
diff --git a/source/libsmb/doserr.c b/source/libsmb/doserr.c
index dd556bb..ba68b5a 100644
--- a/source/libsmb/doserr.c
+++ b/source/libsmb/doserr.c
@@ -63,6 +63,7 @@ werror_code_struct dos_errs[] =
 	{ "WERR_JOB_NOT_FOUND", WERR_JOB_NOT_FOUND },
 	{ "WERR_DEST_NOT_FOUND", WERR_DEST_NOT_FOUND },
 	{ "WERR_NOT_LOCAL_DOMAIN", WERR_NOT_LOCAL_DOMAIN },
+	{ "WERR_USER_EXISTS", WERR_USER_EXISTS },
 	{ "WERR_NO_LOGON_SERVERS", WERR_NO_LOGON_SERVERS },
 	{ "WERR_NO_SUCH_LOGON_SESSION", WERR_NO_SUCH_LOGON_SESSION },
 	{ "WERR_PRINTER_DRIVER_IN_USE", WERR_PRINTER_DRIVER_IN_USE },
@@ -77,6 +78,7 @@ werror_code_struct dos_errs[] =
 	{ "WERR_SETUP_NOT_JOINED", WERR_SETUP_NOT_JOINED },
 	{ "WERR_SETUP_ALREADY_JOINED", WERR_SETUP_ALREADY_JOINED },
 	{ "WERR_SETUP_DOMAIN_CONTROLLER", WERR_SETUP_DOMAIN_CONTROLLER },
+	{ "WERR_DEFAULT_JOIN_REQUIRED", WERR_DEFAULT_JOIN_REQUIRED },
 	{ "WERR_DEVICE_NOT_AVAILABLE", WERR_DEVICE_NOT_AVAILABLE },
 	{ "WERR_LOGON_FAILURE", WERR_LOGON_FAILURE },
 	{ "WERR_NO_SUCH_DOMAIN", WERR_NO_SUCH_DOMAIN },
@@ -110,6 +112,7 @@ werror_str_struct dos_err_strs[] = {
 	{ WERR_SETUP_ALREADY_JOINED, "Machine is already joined" },
 	{ WERR_SETUP_DOMAIN_CONTROLLER, "Machine is a Domain Controller" },
 	{ WERR_LOGON_FAILURE, "Invalid logon credentials" },
+	{ WERR_USER_EXISTS, "User account already exists" },
 };
 
 /*****************************************************************************


-- 
Samba Shared Repository


More information about the samba-cvs mailing list