[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-2119-gcac740d

Günther Deschner gd at samba.org
Tue Feb 12 20:36:36 GMT 2008


The branch, v3-2-test has been updated
       via  cac740d87f729c1b48654ef4f51f37a81e8a0d54 (commit)
       via  f776840dca093b43d0e2762f234b4002ba29adac (commit)
      from  e7192818f79725060d2b12d44186ba8c5bae2fb8 (commit)

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


- Log -----------------------------------------------------------------
commit cac740d87f729c1b48654ef4f51f37a81e8a0d54
Author: Günther Deschner <gd at samba.org>
Date:   Tue Feb 12 16:39:02 2008 +0100

    Re-add support for samr_QueryDisplayInfo2/samr_QueryDisplayInfo3.

commit f776840dca093b43d0e2762f234b4002ba29adac
Author: Günther Deschner <gd at samba.org>
Date:   Tue Feb 12 21:34:39 2008 +0100

    Add querydispinfo2 and querydispinfo3 to rpcclient.
    
    Guenther

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

Summary of changes:
 source/rpc_server/srv_samr_nt.c |   64 +++++++++++++++++++---------
 source/rpcclient/cmd_samr.c     |   90 ++++++++++++++++++++++++++++++++------
 2 files changed, 119 insertions(+), 35 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c
index ac10754..3e88f24 100644
--- a/source/rpc_server/srv_samr_nt.c
+++ b/source/rpc_server/srv_samr_nt.c
@@ -1586,6 +1586,50 @@ NTSTATUS _samr_QueryDisplayInfo(pipes_struct *p,
 	return status;
 }
 
+/****************************************************************
+ _samr_QueryDisplayInfo2
+****************************************************************/
+
+NTSTATUS _samr_QueryDisplayInfo2(pipes_struct *p,
+				 struct samr_QueryDisplayInfo2 *r)
+{
+	struct samr_QueryDisplayInfo q;
+
+	q.in.domain_handle	= r->in.domain_handle;
+	q.in.level		= r->in.level;
+	q.in.start_idx		= r->in.start_idx;
+	q.in.max_entries	= r->in.max_entries;
+	q.in.buf_size		= r->in.buf_size;
+
+	q.out.total_size	= r->out.total_size;
+	q.out.returned_size	= r->out.returned_size;
+	q.out.info		= r->out.info;
+
+	return _samr_QueryDisplayInfo(p, &q);
+}
+
+/****************************************************************
+ _samr_QueryDisplayInfo3
+****************************************************************/
+
+NTSTATUS _samr_QueryDisplayInfo3(pipes_struct *p,
+				 struct samr_QueryDisplayInfo3 *r)
+{
+	struct samr_QueryDisplayInfo q;
+
+	q.in.domain_handle	= r->in.domain_handle;
+	q.in.level		= r->in.level;
+	q.in.start_idx		= r->in.start_idx;
+	q.in.max_entries	= r->in.max_entries;
+	q.in.buf_size		= r->in.buf_size;
+
+	q.out.total_size	= r->out.total_size;
+	q.out.returned_size	= r->out.returned_size;
+	q.out.info		= r->out.info;
+
+	return _samr_QueryDisplayInfo(p, &q);
+}
+
 /*******************************************************************
  _samr_QueryAliasInfo
  ********************************************************************/
@@ -5608,16 +5652,6 @@ NTSTATUS _samr_QueryUserInfo2(pipes_struct *p,
 /****************************************************************
 ****************************************************************/
 
-NTSTATUS _samr_QueryDisplayInfo2(pipes_struct *p,
-				 struct samr_QueryDisplayInfo2 *r)
-{
-	p->rng_fault_state = true;
-	return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-/****************************************************************
-****************************************************************/
-
 NTSTATUS _samr_GetDisplayEnumerationIndex2(pipes_struct *p,
 					   struct samr_GetDisplayEnumerationIndex2 *r)
 {
@@ -5628,16 +5662,6 @@ NTSTATUS _samr_GetDisplayEnumerationIndex2(pipes_struct *p,
 /****************************************************************
 ****************************************************************/
 
-NTSTATUS _samr_QueryDisplayInfo3(pipes_struct *p,
-				 struct samr_QueryDisplayInfo3 *r)
-{
-	p->rng_fault_state = true;
-	return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-/****************************************************************
-****************************************************************/
-
 NTSTATUS _samr_AddMultipleMembersToAlias(pipes_struct *p,
 					 struct samr_AddMultipleMembersToAlias *r)
 {
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index 57f0758..4fa5387 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -1377,9 +1377,10 @@ static NTSTATUS cmd_samr_delete_alias(struct rpc_pipe_client *cli,
 
 /* Query display info */
 
-static NTSTATUS cmd_samr_query_dispinfo(struct rpc_pipe_client *cli,
-                                        TALLOC_CTX *mem_ctx,
-                                        int argc, const char **argv)
+static NTSTATUS cmd_samr_query_dispinfo_internal(struct rpc_pipe_client *cli,
+						 TALLOC_CTX *mem_ctx,
+						 int argc, const char **argv,
+						 uint32_t opcode)
 {
 	POLICY_HND connect_pol, domain_pol;
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
@@ -1442,15 +1443,51 @@ static NTSTATUS cmd_samr_query_dispinfo(struct rpc_pipe_client *cli,
 			get_query_dispinfo_params(
 				loop_count, &max_entries, &max_size);
 
-		result = rpccli_samr_QueryDisplayInfo(cli, mem_ctx,
-						      &domain_pol,
-						      info_level,
-						      start_idx,
-						      max_entries,
-						      max_size,
-						      &total_size,
-						      &returned_size,
-						      &info);
+		switch (opcode) {
+		case NDR_SAMR_QUERYDISPLAYINFO:
+			result = rpccli_samr_QueryDisplayInfo(cli, mem_ctx,
+							      &domain_pol,
+							      info_level,
+							      start_idx,
+							      max_entries,
+							      max_size,
+							      &total_size,
+							      &returned_size,
+							      &info);
+			break;
+		case NDR_SAMR_QUERYDISPLAYINFO2:
+			result = rpccli_samr_QueryDisplayInfo2(cli, mem_ctx,
+							       &domain_pol,
+							       info_level,
+							       start_idx,
+							       max_entries,
+							       max_size,
+							       &total_size,
+							       &returned_size,
+							       &info);
+
+			break;
+		case NDR_SAMR_QUERYDISPLAYINFO3:
+			result = rpccli_samr_QueryDisplayInfo3(cli, mem_ctx,
+							       &domain_pol,
+							       info_level,
+							       start_idx,
+							       max_entries,
+							       max_size,
+							       &total_size,
+							       &returned_size,
+							       &info);
+
+			break;
+		default:
+			return NT_STATUS_INVALID_PARAMETER;
+		}
+
+		if (!NT_STATUS_IS_OK(result) &&
+		    !NT_STATUS_EQUAL(result, NT_STATUS_NO_MORE_ENTRIES) &&
+		    !NT_STATUS_EQUAL(result, STATUS_MORE_ENTRIES)) {
+			break;
+		}
 
 		loop_count++;
 
@@ -1476,9 +1513,6 @@ static NTSTATUS cmd_samr_query_dispinfo(struct rpc_pipe_client *cli,
 
 		start_idx += num_entries;
 
-		if (NT_STATUS_IS_ERR(result))
-			break;
-
 		if (num_entries == 0)
 			break;
 
@@ -1509,6 +1543,30 @@ static NTSTATUS cmd_samr_query_dispinfo(struct rpc_pipe_client *cli,
 	return result;
 }
 
+static NTSTATUS cmd_samr_query_dispinfo(struct rpc_pipe_client *cli,
+					TALLOC_CTX *mem_ctx,
+					int argc, const char **argv)
+{
+	return cmd_samr_query_dispinfo_internal(cli, mem_ctx, argc, argv,
+						NDR_SAMR_QUERYDISPLAYINFO);
+}
+
+static NTSTATUS cmd_samr_query_dispinfo2(struct rpc_pipe_client *cli,
+					 TALLOC_CTX *mem_ctx,
+					 int argc, const char **argv)
+{
+	return cmd_samr_query_dispinfo_internal(cli, mem_ctx, argc, argv,
+						NDR_SAMR_QUERYDISPLAYINFO2);
+}
+
+static NTSTATUS cmd_samr_query_dispinfo3(struct rpc_pipe_client *cli,
+					 TALLOC_CTX *mem_ctx,
+					 int argc, const char **argv)
+{
+	return cmd_samr_query_dispinfo_internal(cli, mem_ctx, argc, argv,
+						NDR_SAMR_QUERYDISPLAYINFO3);
+}
+
 /* Query domain info */
 
 static NTSTATUS cmd_samr_query_dominfo(struct rpc_pipe_client *cli,
@@ -2532,6 +2590,8 @@ struct cmd_set samr_commands[] = {
 	{ "queryaliasinfo", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_aliasinfo, 	NULL, PI_SAMR, NULL,	"Query alias info",       "" },
 	{ "deletealias", 	RPC_RTYPE_NTSTATUS, cmd_samr_delete_alias, 	NULL, PI_SAMR, NULL,	"Delete an alias",  "" },
 	{ "querydispinfo", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo, 	NULL, PI_SAMR, NULL,	"Query display info",      "" },
+	{ "querydispinfo2", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo2, 	NULL, PI_SAMR, NULL,	"Query display info",      "" },
+	{ "querydispinfo3", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo3, 	NULL, PI_SAMR, NULL,	"Query display info",      "" },
 	{ "querydominfo", 	RPC_RTYPE_NTSTATUS, cmd_samr_query_dominfo, 	NULL, PI_SAMR, NULL,	"Query domain info",       "" },
 	{ "enumdomusers",       RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_users,       NULL, PI_SAMR, NULL,	"Enumerate domain users", "" },
 	{ "enumdomgroups",      RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_groups,       NULL, PI_SAMR, NULL,	"Enumerate domain groups", "" },


-- 
Samba Shared Repository


More information about the samba-cvs mailing list