summaryrefslogtreecommitdiff
path: root/source3/rpcclient/cmd_srvsvc.c
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2006-09-21 23:57:32 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:00:59 -0500
commit7ba2554d88a187ca1f4f40014363fdf9de2223a0 (patch)
treeb2c64360d1f0dcd5ba593b666b89bd44d8581b86 /source3/rpcclient/cmd_srvsvc.c
parent8ffe6c8a8d0c3315393506feabbbba5d503666e8 (diff)
downloadsamba-7ba2554d88a187ca1f4f40014363fdf9de2223a0.tar.gz
r18802: Use the pidl-generated code for the srvsvc interface, both client and server code.
This has had some basic testing. I'll do more during the next couple of days and hopefully also make RPC-SRVSVC from Samba4 pass against it. (This used to be commit ef10672399c4b82700dc431b4d93431ffdd42d98)
Diffstat (limited to 'source3/rpcclient/cmd_srvsvc.c')
-rw-r--r--source3/rpcclient/cmd_srvsvc.c172
1 files changed, 70 insertions, 102 deletions
diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c
index 53ee7300da3..d6e01eee85e 100644
--- a/source3/rpcclient/cmd_srvsvc.c
+++ b/source3/rpcclient/cmd_srvsvc.c
@@ -131,51 +131,38 @@ static char *get_server_type_str(uint32 type)
return typestr;
}
-static void display_server(char *sname, uint32 type, const char *comment)
+static void display_server(const char *sname, uint32 type, const char *comment)
{
printf("\t%-15.15s%-20s %s\n", sname, get_server_type_str(type),
comment);
}
-static void display_srv_info_101(SRV_INFO_101 *sv101)
+static void display_srv_info_101(struct srvsvc_NetSrvInfo101 *sv101)
{
- fstring name;
- fstring comment;
-
- unistr2_to_ascii(name, &sv101->uni_name, sizeof(name) - 1);
- unistr2_to_ascii(comment, &sv101->uni_comment, sizeof(comment) - 1);
-
- display_server(name, sv101->srv_type, comment);
+ display_server(sv101->server_name, sv101->server_type, sv101->comment);
printf("\tplatform_id :\t%d\n", sv101->platform_id);
- printf("\tos version :\t%d.%d\n", sv101->ver_major,
- sv101->ver_minor);
+ printf("\tos version :\t%d.%d\n", sv101->version_major,
+ sv101->version_minor);
- printf("\tserver type :\t0x%x\n", sv101->srv_type);
+ printf("\tserver type :\t0x%x\n", sv101->server_type);
}
-static void display_srv_info_102(SRV_INFO_102 *sv102)
+static void display_srv_info_102(struct srvsvc_NetSrvInfo102 *sv102)
{
- fstring name;
- fstring comment;
- fstring usr_path;
-
- unistr2_to_ascii(name, &sv102->uni_name, sizeof(name) - 1);
- unistr2_to_ascii(comment, &sv102->uni_comment, sizeof(comment) - 1);
- unistr2_to_ascii(usr_path, &sv102->uni_usr_path, sizeof(usr_path) - 1);
-
- display_server(name, sv102->srv_type, comment);
+ display_server(sv102->server_name, sv102->server_type,
+ sv102->comment);
printf("\tplatform_id :\t%d\n", sv102->platform_id);
- printf("\tos version :\t%d.%d\n", sv102->ver_major,
- sv102->ver_minor);
+ printf("\tos version :\t%d.%d\n", sv102->version_major,
+ sv102->version_minor);
printf("\tusers :\t%x\n", sv102->users);
printf("\tdisc, hidden :\t%x, %x\n", sv102->disc, sv102->hidden);
printf("\tannounce, delta :\t%d, %d\n", sv102->announce,
- sv102->ann_delta);
+ sv102->anndelta);
printf("\tlicenses :\t%d\n", sv102->licenses);
- printf("\tuser path :\t%s\n", usr_path);
+ printf("\tuser path :\t%s\n", sv102->userpath);
}
/* Server query info */
@@ -184,7 +171,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli,
int argc, const char **argv)
{
uint32 info_level = 101;
- SRV_INFO_CTR ctr;
+ union srvsvc_NetSrvInfo ctr;
WERROR result;
if (argc > 2) {
@@ -195,7 +182,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli,
if (argc == 2)
info_level = atoi(argv[1]);
- result = rpccli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level,
+ result = rpccli_srvsvc_NetSrvGetInfo(cli, mem_ctx, NULL, info_level,
&ctr);
if (!W_ERROR_IS_OK(result)) {
@@ -206,10 +193,10 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli,
switch (info_level) {
case 101:
- display_srv_info_101(&ctr.srv.sv101);
+ display_srv_info_101(ctr.info101);
break;
case 102:
- display_srv_info_102(&ctr.srv.sv102);
+ display_srv_info_102(ctr.info102);
break;
default:
printf("unsupported info level %d\n", info_level);
@@ -220,53 +207,34 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli,
return result;
}
-static void display_share_info_1(SRV_SHARE_INFO_1 *info1)
+static void display_share_info_1(struct srvsvc_NetShareInfo1 *info1)
{
- fstring netname = "", remark = "";
-
- rpcstr_pull_unistr2_fstring(netname, &info1->info_1_str.uni_netname);
- rpcstr_pull_unistr2_fstring(remark, &info1->info_1_str.uni_remark);
-
- printf("netname: %s\n", netname);
- printf("\tremark:\t%s\n", remark);
+ printf("netname: %s\n", info1->name);
+ printf("\tremark:\t%s\n", info1->comment);
}
-static void display_share_info_2(SRV_SHARE_INFO_2 *info2)
+static void display_share_info_2(struct srvsvc_NetShareInfo2 *info2)
{
- fstring netname = "", remark = "", path = "", passwd = "";
-
- rpcstr_pull_unistr2_fstring(netname, &info2->info_2_str.uni_netname);
- rpcstr_pull_unistr2_fstring(remark, &info2->info_2_str.uni_remark);
- rpcstr_pull_unistr2_fstring(path, &info2->info_2_str.uni_path);
- rpcstr_pull_unistr2_fstring(passwd, &info2->info_2_str.uni_passwd);
-
- printf("netname: %s\n", netname);
- printf("\tremark:\t%s\n", remark);
- printf("\tpath:\t%s\n", path);
- printf("\tpassword:\t%s\n", passwd);
+ printf("netname: %s\n", info2->name);
+ printf("\tremark:\t%s\n", info2->comment);
+ printf("\tpath:\t%s\n", info2->path);
+ printf("\tpassword:\t%s\n", info2->password);
}
-static void display_share_info_502(SRV_SHARE_INFO_502 *info502)
+static void display_share_info_502(struct srvsvc_NetShareInfo502 *info502)
{
- fstring netname = "", remark = "", path = "", passwd = "";
-
- rpcstr_pull_unistr2_fstring(netname, &info502->info_502_str.uni_netname);
- rpcstr_pull_unistr2_fstring(remark, &info502->info_502_str.uni_remark);
- rpcstr_pull_unistr2_fstring(path, &info502->info_502_str.uni_path);
- rpcstr_pull_unistr2_fstring(passwd, &info502->info_502_str.uni_passwd);
-
- printf("netname: %s\n", netname);
- printf("\tremark:\t%s\n", remark);
- printf("\tpath:\t%s\n", path);
- printf("\tpassword:\t%s\n", passwd);
-
- printf("\ttype:\t0x%x\n", info502->info_502.type);
- printf("\tperms:\t%d\n", info502->info_502.perms);
- printf("\tmax_uses:\t%d\n", info502->info_502.max_uses);
- printf("\tnum_uses:\t%d\n", info502->info_502.num_uses);
+ printf("netname: %s\n", info502->name);
+ printf("\tremark:\t%s\n", info502->comment);
+ printf("\tpath:\t%s\n", info502->path);
+ printf("\tpassword:\t%s\n", info502->password);
+
+ printf("\ttype:\t0x%x\n", info502->type);
+ printf("\tperms:\t%d\n", info502->permissions);
+ printf("\tmax_uses:\t%d\n", info502->max_users);
+ printf("\tnum_uses:\t%d\n", info502->current_users);
- if (info502->info_502_str.sd)
- display_sec_desc(info502->info_502_str.sd);
+ if (info502->sd)
+ display_sec_desc(info502->sd);
}
@@ -275,10 +243,11 @@ static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli,
int argc, const char **argv)
{
uint32 info_level = 2;
- SRV_SHARE_INFO_CTR ctr;
+ union srvsvc_NetShareCtr ctr;
WERROR result;
- ENUM_HND hnd;
+ uint32 hnd;
uint32 preferred_len = 0xffffffff, i;
+ uint32 numentries;
if (argc > 2) {
printf("Usage: %s [infolevel]\n", argv[0]);
@@ -288,28 +257,29 @@ static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli,
if (argc == 2)
info_level = atoi(argv[1]);
- init_enum_hnd(&hnd, 0);
+ hnd = 0;
- result = rpccli_srvsvc_net_share_enum(
- cli, mem_ctx, info_level, &ctr, preferred_len, &hnd);
+ result = rpccli_srvsvc_NetShareEnum(
+ cli, mem_ctx, NULL, &info_level, &ctr, preferred_len, &numentries,
+ &hnd);
- if (!W_ERROR_IS_OK(result) || !ctr.num_entries)
+ if (!W_ERROR_IS_OK(result) || !numentries)
goto done;
/* Display results */
switch (info_level) {
case 1:
- for (i = 0; i < ctr.num_entries; i++)
- display_share_info_1(&ctr.share.info1[i]);
+ for (i = 0; i < numentries; i++)
+ display_share_info_1(&ctr.ctr1->array[i]);
break;
case 2:
- for (i = 0; i < ctr.num_entries; i++)
- display_share_info_2(&ctr.share.info2[i]);
+ for (i = 0; i < numentries; i++)
+ display_share_info_2(&ctr.ctr2->array[i]);
break;
case 502:
- for (i = 0; i < ctr.num_entries; i++)
- display_share_info_502(&ctr.share.info502[i]);
+ for (i = 0; i < numentries; i++)
+ display_share_info_502(&ctr.ctr502->array[i]);
break;
default:
printf("unsupported info level %d\n", info_level);
@@ -325,7 +295,7 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
int argc, const char **argv)
{
uint32 info_level = 502;
- SRV_SHARE_INFO info;
+ union srvsvc_NetShareInfo info;
WERROR result;
if (argc > 3) {
@@ -336,7 +306,7 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
if (argc == 3)
info_level = atoi(argv[2]);
- result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info);
+ result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info);
if (!W_ERROR_IS_OK(result))
goto done;
@@ -345,13 +315,13 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli,
switch (info_level) {
case 1:
- display_share_info_1(&info.share.info1);
+ display_share_info_1(info.info1);
break;
case 2:
- display_share_info_2(&info.share.info2);
+ display_share_info_2(info.info2);
break;
case 502:
- display_share_info_502(&info.share.info502);
+ display_share_info_502(info.info502);
break;
default:
printf("unsupported info level %d\n", info_level);
@@ -367,8 +337,9 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli,
int argc, const char **argv)
{
uint32 info_level = 502;
- SRV_SHARE_INFO info_get;
+ union srvsvc_NetShareInfo info_get;
WERROR result;
+ uint32 parm_error;
if (argc > 3) {
printf("Usage: %s [sharename] [comment]\n", argv[0]);
@@ -376,26 +347,22 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli,
}
/* retrieve share info */
- result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get);
+ result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, 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 = rpccli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get);
+ result = rpccli_srvsvc_NetShareSetInfo(cli, mem_ctx, NULL, argv[1], info_level, info_get, &parm_error);
if (!W_ERROR_IS_OK(result))
goto done;
/* re-retrieve share info and display */
- result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get);
+ result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get);
if (!W_ERROR_IS_OK(result))
goto done;
- display_share_info_502(&info_get.share.info502);
+ display_share_info_502(info_get.info502);
done:
return result;
@@ -405,9 +372,9 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli,
TALLOC_CTX *mem_ctx,
int argc, const char **argv)
{
- TIME_OF_DAY_INFO tod;
fstring srv_name_slash;
WERROR result;
+ struct srvsvc_NetRemoteTODInfo tod;
if (argc > 1) {
printf("Usage: %s\n", argv[0]);
@@ -415,7 +382,7 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli,
}
fstr_sprintf(srv_name_slash, "\\\\%s", cli->cli->desthost);
- result = rpccli_srvsvc_net_remote_tod(
+ result = rpccli_srvsvc_NetRemoteTOD(
cli, mem_ctx, srv_name_slash, &tod);
if (!W_ERROR_IS_OK(result))
@@ -430,10 +397,11 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli,
int argc, const char **argv)
{
uint32 info_level = 3;
- SRV_FILE_INFO_CTR ctr;
+ union srvsvc_NetFileCtr ctr;
WERROR result;
- ENUM_HND hnd;
+ uint32 hnd;
uint32 preferred_len = 0xffff;
+ uint32 numentries;
if (argc > 2) {
printf("Usage: %s [infolevel]\n", argv[0]);
@@ -443,12 +411,12 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli,
if (argc == 2)
info_level = atoi(argv[1]);
- init_enum_hnd(&hnd, 0);
+ hnd = 0;
ZERO_STRUCT(ctr);
- result = rpccli_srvsvc_net_file_enum(
- cli, mem_ctx, info_level, NULL, &ctr, preferred_len, &hnd);
+ result = rpccli_srvsvc_NetFileEnum(
+ cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &hnd);
if (!W_ERROR_IS_OK(result))
goto done;