svn commit: samba r7535 - in trunk/source: rpc_client rpcclient

gd at samba.org gd at samba.org
Mon Jun 13 13:18:15 GMT 2005


Author: gd
Date: 2005-06-13 13:18:14 +0000 (Mon, 13 Jun 2005)
New Revision: 7535

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

Log:
merge from 3_0.

Guenther

Modified:
   trunk/source/rpc_client/cli_srvsvc.c
   trunk/source/rpcclient/cmd_srvsvc.c


Changeset:
Modified: trunk/source/rpc_client/cli_srvsvc.c
===================================================================
--- trunk/source/rpc_client/cli_srvsvc.c	2005-06-13 13:16:55 UTC (rev 7534)
+++ trunk/source/rpc_client/cli_srvsvc.c	2005-06-13 13:18:14 UTC (rev 7535)
@@ -301,6 +301,9 @@
 		info502_str->sd = dup_sec_desc(mem_ctx, info502_str->sd);
 		break;
 	}
+	default:
+		DEBUG(0,("unimplemented info-level: %d\n", info_level));
+		break;
 	}
 
  done:
@@ -310,6 +313,53 @@
 	return result;
 }
 
+WERROR cli_srvsvc_net_share_set_info(struct cli_state *cli,
+				     TALLOC_CTX *mem_ctx,
+				     const char *sharename,
+				     uint32 info_level,
+				     SRV_SHARE_INFO *info)
+{
+	prs_struct qbuf, rbuf;
+	SRV_Q_NET_SHARE_SET_INFO q;
+	SRV_R_NET_SHARE_SET_INFO r;
+	WERROR result = W_ERROR(ERRgeneral);
+
+	ZERO_STRUCT(q);
+	ZERO_STRUCT(r);
+
+	/* Initialise parse structures */
+
+	prs_init(&qbuf, MAX_PDU_FRAG_LEN, mem_ctx, MARSHALL);
+	prs_init(&rbuf, 0, mem_ctx, UNMARSHALL);
+
+	/* Initialise input parameters */
+
+	init_srv_q_net_share_set_info(&q, cli->srv_name_slash, sharename,
+				      info_level, info);
+
+	/* Marshall data and send request */
+
+	if (!srv_io_q_net_share_set_info("", &q, &qbuf, 0) ||
+	    !rpc_api_pipe_req(cli, PI_SRVSVC, SRV_NET_SHARE_SET_INFO, &qbuf, &rbuf))
+		goto done;
+
+	/* Unmarshall response */
+
+	if (!srv_io_r_net_share_set_info("", &r, &rbuf, 0))
+		goto done;
+
+	result = r.status;
+
+	if (!W_ERROR_IS_OK(result))
+		goto done;
+
+ done:
+	prs_mem_free(&qbuf);
+	prs_mem_free(&rbuf);
+
+	return result;
+}
+
 WERROR cli_srvsvc_net_share_del(struct cli_state *cli, TALLOC_CTX *mem_ctx,
 				const char *sharename)
 {

Modified: trunk/source/rpcclient/cmd_srvsvc.c
===================================================================
--- trunk/source/rpcclient/cmd_srvsvc.c	2005-06-13 13:16:55 UTC (rev 7534)
+++ trunk/source/rpcclient/cmd_srvsvc.c	2005-06-13 13:18:14 UTC (rev 7535)
@@ -315,6 +315,87 @@
 	return result;
 }
 
+static WERROR cmd_srvsvc_net_share_get_info(struct cli_state *cli, 
+					    TALLOC_CTX *mem_ctx,
+					    int argc, const char **argv)
+{
+	uint32 info_level = 502;
+	SRV_SHARE_INFO info;
+	WERROR result;
+
+	if (argc > 3) {
+		printf("Usage: %s [sharename] [infolevel]\n", argv[0]);
+		return WERR_OK;
+	}
+
+	if (argc == 3)
+		info_level = atoi(argv[2]);
+
+	result = cli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info);
+
+	if (!W_ERROR_IS_OK(result))
+		goto done;
+
+	/* Display results */
+
+	switch (info_level) {
+	case 1:
+		display_share_info_1(&info.share.info1);
+		break;
+	case 2:
+		display_share_info_2(&info.share.info2);
+		break;
+	case 502:
+		display_share_info_502(&info.share.info502);
+		break;
+	default:
+		printf("unsupported info level %d\n", info_level);
+		break;
+	}
+
+ done:
+	return result;
+}
+
+static WERROR cmd_srvsvc_net_share_set_info(struct cli_state *cli, 
+					    TALLOC_CTX *mem_ctx,
+					    int argc, const char **argv)
+{
+	uint32 info_level = 502;
+	SRV_SHARE_INFO info_get;
+	WERROR result;
+
+	if (argc > 3) {
+		printf("Usage: %s [sharename] [comment]\n", argv[0]);
+		return WERR_OK;
+	}
+
+	/* retrieve share info */
+	result = cli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get);
+	if (!W_ERROR_IS_OK(result))
+		goto done;
+
+	info_get.switch_value = info_level;
+	info_get.ptr_share_ctr = 1;
+	init_unistr2(&(info_get.share.info502.info_502_str.uni_remark), argv[2], UNI_STR_TERMINATE);
+	
+	/* set share info */
+	result = cli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get);
+
+	if (!W_ERROR_IS_OK(result))
+		goto done;
+
+	/* re-retrieve share info and display */
+	result = cli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get);
+	if (!W_ERROR_IS_OK(result))
+		goto done;
+
+	display_share_info_502(&info_get.share.info502);
+	
+ done:
+	return result;
+}
+
 static WERROR cmd_srvsvc_net_remote_tod(struct cli_state *cli, 
                                           TALLOC_CTX *mem_ctx,
                                           int argc, const char **argv)
@@ -377,6 +458,8 @@
 
 	{ "srvinfo",     RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, "Server query info", "" },
 	{ "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, "Enumerate shares", "" },
+	{ "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, "Get Share Info", "" },
+	{ "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, "Set Share Info", "" },
 	{ "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum,  PI_SRVSVC, "Enumerate open files", "" },
 	{ "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, "Fetch remote time of day", "" },
 



More information about the samba-cvs mailing list