[SCM] Samba Shared Repository - branch v3-devel updated - release-3-2-0pre2-4098-gf4cb75b

Günther Deschner gd at samba.org
Thu Sep 11 12:23:08 GMT 2008


The branch, v3-devel has been updated
       via  f4cb75b1e2b030055b9c566f941277286095b8a7 (commit)
       via  0637ad872e5d30f71b6ea1ec2d243ec8e8836c31 (commit)
      from  e0312728a5ac5abd64622600f47967861a4e0183 (commit)

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


- Log -----------------------------------------------------------------
commit f4cb75b1e2b030055b9c566f941277286095b8a7
Author: Günther Deschner <gd at samba.org>
Date:   Wed Sep 10 10:53:46 2008 +0200

    net: use netapi for NetShareEnum.
    
    Guenther

commit 0637ad872e5d30f71b6ea1ec2d243ec8e8836c31
Author: Günther Deschner <gd at samba.org>
Date:   Wed Sep 10 13:26:54 2008 +0200

    netapi: fix NetShareEnum_r which in fact enumerates all shares.
    
    Guenther

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

Summary of changes:
 source/lib/netapi/share.c |   14 +++---
 source/utils/net_rpc.c    |  102 ++++++++++++++++-----------------------------
 2 files changed, 43 insertions(+), 73 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/lib/netapi/share.c b/source/lib/netapi/share.c
index c6af548..2752895 100644
--- a/source/lib/netapi/share.c
+++ b/source/lib/netapi/share.c
@@ -347,13 +347,13 @@ WERROR NetShareEnum_r(struct libnetapi_ctx *ctx,
 			break;
 	}
 
-	status = rpccli_srvsvc_NetShareEnum(pipe_cli, ctx,
-					    r->in.server_name,
-					    &info_ctr,
-					    r->in.prefmaxlen,
-					    r->out.total_entries,
-					    r->out.resume_handle,
-					    &werr);
+	status = rpccli_srvsvc_NetShareEnumAll(pipe_cli, ctx,
+					       r->in.server_name,
+					       &info_ctr,
+					       r->in.prefmaxlen,
+					       r->out.total_entries,
+					       r->out.resume_handle,
+					       &werr);
 	if (NT_STATUS_IS_ERR(status)) {
 		goto done;
 	}
diff --git a/source/utils/net_rpc.c b/source/utils/net_rpc.c
index 7ebd749..37e0e2a 100644
--- a/source/utils/net_rpc.c
+++ b/source/utils/net_rpc.c
@@ -2867,19 +2867,19 @@ static int rpc_share_delete(struct net_context *c, int argc, const char **argv)
 /**
  * Formatted print of share info
  *
- * @param info1  pointer to SRV_SHARE_INFO_1 to format
+ * @param r  pointer to SHARE_INFO_1 to format
  **/
 
 static void display_share_info_1(struct net_context *c,
-				 struct srvsvc_NetShareInfo1 *r)
+				 struct SHARE_INFO_1 *r)
 {
 	if (c->opt_long_list_entries) {
 		d_printf("%-12s %-8.8s %-50s\n",
-			 r->name,
-			 share_type[r->type & ~(STYPE_TEMPORARY|STYPE_HIDDEN)],
-			 r->comment);
+			 r->shi1_netname,
+			 share_type[r->shi1_type & ~(STYPE_TEMPORARY|STYPE_HIDDEN)],
+			 r->shi1_remark);
 	} else {
-		d_printf("%s\n", r->name);
+		d_printf("%s\n", r->shi1_netname);
 	}
 }
 
@@ -2973,46 +2973,38 @@ done:
 	return result;
 }
 
-/**
- * List shares on a remote RPC server.
- *
- * All parameters are provided by the run_rpc_command function, except for
- * argc, argv which are passed through.
- *
- * @param domain_sid The domain sid acquired from the remote server.
- * @param cli A cli_state connected to the server.
- * @param mem_ctx Talloc context, destroyed on completion of the function.
+/***
+ * 'net rpc share list' entrypoint.
  * @param argc  Standard main() style argc.
  * @param argv  Standard main() style argv. Initial components are already
  *              stripped.
- *
- * @return Normal NTSTATUS return.
  **/
-
-static NTSTATUS rpc_share_list_internals(struct net_context *c,
-					const DOM_SID *domain_sid,
-					const char *domain_name,
-					struct cli_state *cli,
-					struct rpc_pipe_client *pipe_hnd,
-					TALLOC_CTX *mem_ctx,
-					int argc,
-					const char **argv)
+static int rpc_share_list(struct net_context *c, int argc, const char **argv)
 {
-	struct srvsvc_NetShareInfoCtr info_ctr;
-	struct srvsvc_NetShareCtr1 ctr1;
-	WERROR result;
-	uint32 i, level = 1;
-
-	ZERO_STRUCT(info_ctr);
-	ZERO_STRUCT(ctr1);
+	NET_API_STATUS status;
+	struct SHARE_INFO_1 *i1 = NULL;
+	uint32_t entries_read = 0;
+	uint32_t total_entries = 0;
+	uint32_t resume_handle = 0;
+	uint32_t i, level = 1;
 
-	info_ctr.level = 1;
-	info_ctr.ctr.ctr1 = &ctr1;
+	if (c->display_usage) {
+		d_printf("Usage\n"
+			 "net rpc share list\n"
+			 "    List shares on remote server\n");
+		return 0;
+	}
 
-	result = get_share_info(c, pipe_hnd, mem_ctx, level, argc, argv,
-				&info_ctr);
-	if (!W_ERROR_IS_OK(result))
+	status = NetShareEnum(c->opt_host,
+			      level,
+			      (uint8_t **)&i1,
+			      (uint32_t)-1,
+			      &entries_read,
+			      &total_entries,
+			      &resume_handle);
+	if (status != 0) {
 		goto done;
+	}
 
 	/* Display results */
 
@@ -3022,29 +3014,10 @@ static NTSTATUS rpc_share_list_internals(struct net_context *c,
 	"\nShare name   Type     Description\n"
 	"----------   ----     -----------\n");
 	}
-	for (i = 0; i < info_ctr.ctr.ctr1->count; i++)
-		display_share_info_1(c, &info_ctr.ctr.ctr1->array[i]);
+	for (i = 0; i < entries_read; i++)
+		display_share_info_1(c, &i1[i]);
  done:
-	return W_ERROR_IS_OK(result) ? NT_STATUS_OK : NT_STATUS_UNSUCCESSFUL;
-}
-
-/***
- * 'net rpc share list' entrypoint.
- * @param argc  Standard main() style argc.
- * @param argv  Standard main() style argv. Initial components are already
- *              stripped.
- **/
-static int rpc_share_list(struct net_context *c, int argc, const char **argv)
-{
-	if (c->display_usage) {
-		d_printf("Usage\n"
-			 "net rpc share list\n"
-			 "    List shares on remote server\n");
-		return 0;
-	}
-
-	return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
-			       rpc_share_list_internals, argc, argv);
+	return status;
 }
 
 static bool check_share_availability(struct cli_state *cli, const char *netname)
@@ -4619,9 +4592,7 @@ int net_rpc_share(struct net_context *c, int argc, const char **argv)
 			return 0;
 		}
 
-		return run_rpc_command(c, NULL, &ndr_table_srvsvc.syntax_id, 0,
-				       rpc_share_list_internals,
-				       argc, argv);
+		return rpc_share_list(c, argc, argv);
 	}
 
 	return net_run_function(c, argc, argv, "net rpc share", func);
@@ -4633,9 +4604,8 @@ static NTSTATUS rpc_sh_share_list(struct net_context *c,
 				  struct rpc_pipe_client *pipe_hnd,
 				  int argc, const char **argv)
 {
-	return rpc_share_list_internals(c, ctx->domain_sid, ctx->domain_name,
-					ctx->cli, pipe_hnd, mem_ctx,
-					argc, argv);
+
+	return werror_to_ntstatus(W_ERROR(rpc_share_list(c, argc, argv)));
 }
 
 static NTSTATUS rpc_sh_share_add(struct net_context *c,


-- 
Samba Shared Repository


More information about the samba-cvs mailing list