The branch, v3-2-test has been updated via e4b52133d6109ae6cc0378285e2d46f7077812f1 (commit) via 348af272f7c0dc0cb316cc06780339dd13eafd0f (commit) via fd878d7923618904cd54b88aa31d59a7bca5a9f9 (commit) via 01c73aa9676137349590a9f0a6281b6efe8343a7 (commit) via 3bb9ec441ae9702007a5442c52bb9476f928810f (commit) from e13b9325d251777cd9030f34fa98e22766c0bcfe (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test - Log ----------------------------------------------------------------- commit e4b52133d6109ae6cc0378285e2d46f7077812f1 Author: Günther Deschner <[EMAIL PROTECTED]> Date: Mon Mar 10 17:14:11 2008 +0100 Remove rpccli_srvsvc_net_file_enum() and cli_srvsvc.c with it. Guenther commit 348af272f7c0dc0cb316cc06780339dd13eafd0f Author: Günther Deschner <[EMAIL PROTECTED]> Date: Mon Mar 10 17:08:55 2008 +0100 Use rpccli_srvsvc_NetFileEnum in net and rpcclient. Guenther commit fd878d7923618904cd54b88aa31d59a7bca5a9f9 Author: Günther Deschner <[EMAIL PROTECTED]> Date: Mon Mar 10 17:07:37 2008 +0100 Re-run make idl. Guenther commit 01c73aa9676137349590a9f0a6281b6efe8343a7 Author: Günther Deschner <[EMAIL PROTECTED]> Date: Mon Mar 10 17:07:05 2008 +0100 Fix IDL for srvsvc_NetFileEnum. Guenther commit 3bb9ec441ae9702007a5442c52bb9476f928810f Author: Günther Deschner <[EMAIL PROTECTED]> Date: Mon Mar 10 16:50:27 2008 +0100 Remove unused marshalling for SRV_NET_SESS_DEL. Guenther ----------------------------------------------------------------------- Summary of changes: source/Makefile.in | 2 +- source/include/rpc_srvsvc.h | 21 ------ source/librpc/gen_ndr/cli_srvsvc.c | 9 +-- source/librpc/gen_ndr/cli_srvsvc.h | 3 +- source/librpc/gen_ndr/ndr_srvsvc.c | 119 ++++++++++++++++++------------------ source/librpc/gen_ndr/ndr_srvsvc.h | 1 + source/librpc/gen_ndr/srv_srvsvc.c | 3 +- source/librpc/gen_ndr/srvsvc.h | 11 ++- source/librpc/idl/srvsvc.idl | 8 ++- source/rpc_client/cli_srvsvc.c | 112 --------------------------------- source/rpc_parse/parse_srv.c | 73 ---------------------- source/rpcclient/cmd_srvsvc.c | 30 ++++++--- source/utils/net_rpc.c | 46 ++++++++------ 13 files changed, 127 insertions(+), 311 deletions(-) delete mode 100644 source/rpc_client/cli_srvsvc.c Changeset truncated at 500 lines: diff --git a/source/Makefile.in b/source/Makefile.in index 376d24c..4fa44aa 100644 --- a/source/Makefile.in +++ b/source/Makefile.in @@ -422,7 +422,7 @@ LIBSMB_OBJ = libsmb/clientgen.o libsmb/cliconnect.o libsmb/clifile.o \ libsmb/smb_seal.o $(DOSERR_OBJ) libsmb/async_smb.o \ $(RPC_PARSE_OBJ1) $(LIBSAMBA_OBJ) $(LIBNMB_OBJ) -RPC_CLIENT_OBJ1 = rpc_client/cli_netlogon.o rpc_client/cli_srvsvc.o +RPC_CLIENT_OBJ1 = rpc_client/cli_netlogon.o LIBMSRPC_OBJ = rpc_client/cli_lsarpc.o rpc_client/cli_samr.o \ $(RPC_CLIENT_OBJ1) rpc_client/cli_reg.o $(RPC_CLIENT_OBJ) \ diff --git a/source/include/rpc_srvsvc.h b/source/include/rpc_srvsvc.h index a8e145a..bc246f2 100644 --- a/source/include/rpc_srvsvc.h +++ b/source/include/rpc_srvsvc.h @@ -137,27 +137,6 @@ typedef struct { /***************************/ -/* SRV_Q_NET_SESS_DEL */ -typedef struct q_net_sess_del -{ - uint32 ptr_srv_name; /* pointer (to server name?) */ - UNISTR2 uni_srv_name; /* server name */ - - uint32 ptr_cli_name; /* pointer (to qualifier name) */ - UNISTR2 uni_cli_name; /* qualifier name "\\qualifier" */ - - uint32 ptr_user_name; /* pointer (to user name */ - UNISTR2 uni_user_name; /* user name */ - -} SRV_Q_NET_SESS_DEL; - -/* SRV_R_NET_SESS_DEL */ -typedef struct r_net_sess_del -{ - WERROR status; /* return status */ - -} SRV_R_NET_SESS_DEL; - /* CONN_INFO_0 (pointers to level 0 connection info strings) */ typedef struct ptr_conn_info0 { diff --git a/source/librpc/gen_ndr/cli_srvsvc.c b/source/librpc/gen_ndr/cli_srvsvc.c index 18bec1f..386b25c 100644 --- a/source/librpc/gen_ndr/cli_srvsvc.c +++ b/source/librpc/gen_ndr/cli_srvsvc.c @@ -491,8 +491,7 @@ NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, const char *server_unc, const char *path, const char *user, - uint32_t *level, - union srvsvc_NetFileCtr *ctr, + struct srvsvc_NetFileInfoCtr *info_ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle, @@ -505,8 +504,7 @@ NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, r.in.server_unc = server_unc; r.in.path = path; r.in.user = user; - r.in.level = level; - r.in.ctr = ctr; + r.in.info_ctr = info_ctr; r.in.max_buffer = max_buffer; r.in.resume_handle = resume_handle; @@ -534,8 +532,7 @@ NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, } /* Return variables */ - *level = *r.out.level; - *ctr = *r.out.ctr; + *info_ctr = *r.out.info_ctr; *totalentries = *r.out.totalentries; if (resume_handle && r.out.resume_handle) { *resume_handle = *r.out.resume_handle; diff --git a/source/librpc/gen_ndr/cli_srvsvc.h b/source/librpc/gen_ndr/cli_srvsvc.h index bccf95e..9b5da3b 100644 --- a/source/librpc/gen_ndr/cli_srvsvc.h +++ b/source/librpc/gen_ndr/cli_srvsvc.h @@ -75,8 +75,7 @@ NTSTATUS rpccli_srvsvc_NetFileEnum(struct rpc_pipe_client *cli, const char *server_unc, const char *path, const char *user, - uint32_t *level, - union srvsvc_NetFileCtr *ctr, + struct srvsvc_NetFileInfoCtr *info_ctr, uint32_t max_buffer, uint32_t *totalentries, uint32_t *resume_handle, diff --git a/source/librpc/gen_ndr/ndr_srvsvc.c b/source/librpc/gen_ndr/ndr_srvsvc.c index bfb4ced..5645e36 100644 --- a/source/librpc/gen_ndr/ndr_srvsvc.c +++ b/source/librpc/gen_ndr/ndr_srvsvc.c @@ -2238,6 +2238,44 @@ _PUBLIC_ void ndr_print_srvsvc_NetFileCtr(struct ndr_print *ndr, const char *nam } } +static enum ndr_err_code ndr_push_srvsvc_NetFileInfoCtr(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetFileInfoCtr *r) +{ + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_push_align(ndr, 4)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->level)); + NDR_CHECK(ndr_push_set_switch_value(ndr, &r->ctr, r->level)); + NDR_CHECK(ndr_push_srvsvc_NetFileCtr(ndr, NDR_SCALARS, &r->ctr)); + } + if (ndr_flags & NDR_BUFFERS) { + NDR_CHECK(ndr_push_srvsvc_NetFileCtr(ndr, NDR_BUFFERS, &r->ctr)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_srvsvc_NetFileInfoCtr(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetFileInfoCtr *r) +{ + if (ndr_flags & NDR_SCALARS) { + NDR_CHECK(ndr_pull_align(ndr, 4)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->level)); + NDR_CHECK(ndr_pull_set_switch_value(ndr, &r->ctr, r->level)); + NDR_CHECK(ndr_pull_srvsvc_NetFileCtr(ndr, NDR_SCALARS, &r->ctr)); + } + if (ndr_flags & NDR_BUFFERS) { + NDR_CHECK(ndr_pull_srvsvc_NetFileCtr(ndr, NDR_BUFFERS, &r->ctr)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_srvsvc_NetFileInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileInfoCtr *r) +{ + ndr_print_struct(ndr, name, "srvsvc_NetFileInfoCtr"); + ndr->depth++; + ndr_print_uint32(ndr, "level", r->level); + ndr_print_set_switch_value(ndr, &r->ctr, r->level); + ndr_print_srvsvc_NetFileCtr(ndr, "ctr", &r->ctr); + ndr->depth--; +} + static enum ndr_err_code ndr_push_srvsvc_NetSessInfo0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessInfo0 *r) { if (ndr_flags & NDR_SCALARS) { @@ -14401,15 +14439,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetFileEnum(struct ndr_push *ndr, int f NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.user, CH_UTF16))); NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.user, ndr_charset_length(r->in.user, CH_UTF16), sizeof(uint16_t), CH_UTF16)); } - if (r->in.level == NULL) { - return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); - } - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->in.level)); - if (r->in.ctr == NULL) { + if (r->in.info_ctr == NULL) { return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); } - NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.ctr, *r->in.level)); - NDR_CHECK(ndr_push_srvsvc_NetFileCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr)); + NDR_CHECK(ndr_push_srvsvc_NetFileInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.max_buffer)); NDR_CHECK(ndr_push_unique_ptr(ndr, r->in.resume_handle)); if (r->in.resume_handle) { @@ -14417,15 +14450,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetFileEnum(struct ndr_push *ndr, int f } } if (flags & NDR_OUT) { - if (r->out.level == NULL) { - return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); - } - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, *r->out.level)); - if (r->out.ctr == NULL) { + if (r->out.info_ctr == NULL) { return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); } - NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.ctr, *r->out.level)); - NDR_CHECK(ndr_push_srvsvc_NetFileCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr)); + NDR_CHECK(ndr_push_srvsvc_NetFileInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info_ctr)); if (r->out.totalentries == NULL) { return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); } @@ -14448,8 +14476,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetFileEnum(struct ndr_pull *ndr, int f TALLOC_CTX *_mem_save_server_unc_0; TALLOC_CTX *_mem_save_path_0; TALLOC_CTX *_mem_save_user_0; - TALLOC_CTX *_mem_save_level_0; - TALLOC_CTX *_mem_save_ctr_0; + TALLOC_CTX *_mem_save_info_ctr_0; TALLOC_CTX *_mem_save_totalentries_0; TALLOC_CTX *_mem_save_resume_handle_0; if (flags & NDR_IN) { @@ -14510,20 +14537,12 @@ static enum ndr_err_code ndr_pull_srvsvc_NetFileEnum(struct ndr_pull *ndr, int f NDR_PULL_SET_MEM_CTX(ndr, _mem_save_user_0, 0); } if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { - NDR_PULL_ALLOC(ndr, r->in.level); - } - _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr); - NDR_PULL_SET_MEM_CTX(ndr, r->in.level, LIBNDR_FLAG_REF_ALLOC); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.level)); - NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC); - if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { - NDR_PULL_ALLOC(ndr, r->in.ctr); + NDR_PULL_ALLOC(ndr, r->in.info_ctr); } - _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr); - NDR_PULL_SET_MEM_CTX(ndr, r->in.ctr, LIBNDR_FLAG_REF_ALLOC); - NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.ctr, *r->in.level)); - NDR_CHECK(ndr_pull_srvsvc_NetFileCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr)); - NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC); + _mem_save_info_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.info_ctr, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_srvsvc_NetFileInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info_ctr)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_ctr_0, LIBNDR_FLAG_REF_ALLOC); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.max_buffer)); NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_resume_handle)); if (_ptr_resume_handle) { @@ -14537,29 +14556,19 @@ static enum ndr_err_code ndr_pull_srvsvc_NetFileEnum(struct ndr_pull *ndr, int f NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->in.resume_handle)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_resume_handle_0, 0); } - NDR_PULL_ALLOC(ndr, r->out.level); - *r->out.level = *r->in.level; - NDR_PULL_ALLOC(ndr, r->out.ctr); - *r->out.ctr = *r->in.ctr; + NDR_PULL_ALLOC(ndr, r->out.info_ctr); + *r->out.info_ctr = *r->in.info_ctr; NDR_PULL_ALLOC(ndr, r->out.totalentries); ZERO_STRUCTP(r->out.totalentries); } if (flags & NDR_OUT) { if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { - NDR_PULL_ALLOC(ndr, r->out.level); - } - _mem_save_level_0 = NDR_PULL_GET_MEM_CTX(ndr); - NDR_PULL_SET_MEM_CTX(ndr, r->out.level, LIBNDR_FLAG_REF_ALLOC); - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, r->out.level)); - NDR_PULL_SET_MEM_CTX(ndr, _mem_save_level_0, LIBNDR_FLAG_REF_ALLOC); - if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { - NDR_PULL_ALLOC(ndr, r->out.ctr); + NDR_PULL_ALLOC(ndr, r->out.info_ctr); } - _mem_save_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr); - NDR_PULL_SET_MEM_CTX(ndr, r->out.ctr, LIBNDR_FLAG_REF_ALLOC); - NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.ctr, *r->out.level)); - NDR_CHECK(ndr_pull_srvsvc_NetFileCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr)); - NDR_PULL_SET_MEM_CTX(ndr, _mem_save_ctr_0, LIBNDR_FLAG_REF_ALLOC); + _mem_save_info_ctr_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->out.info_ctr, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_srvsvc_NetFileInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info_ctr)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info_ctr_0, LIBNDR_FLAG_REF_ALLOC); if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { NDR_PULL_ALLOC(ndr, r->out.totalentries); } @@ -14612,14 +14621,9 @@ _PUBLIC_ void ndr_print_srvsvc_NetFileEnum(struct ndr_print *ndr, const char *na ndr_print_string(ndr, "user", r->in.user); } ndr->depth--; - ndr_print_ptr(ndr, "level", r->in.level); - ndr->depth++; - ndr_print_uint32(ndr, "level", *r->in.level); - ndr->depth--; - ndr_print_ptr(ndr, "ctr", r->in.ctr); + ndr_print_ptr(ndr, "info_ctr", r->in.info_ctr); ndr->depth++; - ndr_print_set_switch_value(ndr, r->in.ctr, *r->in.level); - ndr_print_srvsvc_NetFileCtr(ndr, "ctr", r->in.ctr); + ndr_print_srvsvc_NetFileInfoCtr(ndr, "info_ctr", r->in.info_ctr); ndr->depth--; ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer); ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle); @@ -14633,14 +14637,9 @@ _PUBLIC_ void ndr_print_srvsvc_NetFileEnum(struct ndr_print *ndr, const char *na if (flags & NDR_OUT) { ndr_print_struct(ndr, "out", "srvsvc_NetFileEnum"); ndr->depth++; - ndr_print_ptr(ndr, "level", r->out.level); - ndr->depth++; - ndr_print_uint32(ndr, "level", *r->out.level); - ndr->depth--; - ndr_print_ptr(ndr, "ctr", r->out.ctr); + ndr_print_ptr(ndr, "info_ctr", r->out.info_ctr); ndr->depth++; - ndr_print_set_switch_value(ndr, r->out.ctr, *r->out.level); - ndr_print_srvsvc_NetFileCtr(ndr, "ctr", r->out.ctr); + ndr_print_srvsvc_NetFileInfoCtr(ndr, "info_ctr", r->out.info_ctr); ndr->depth--; ndr_print_ptr(ndr, "totalentries", r->out.totalentries); ndr->depth++; diff --git a/source/librpc/gen_ndr/ndr_srvsvc.h b/source/librpc/gen_ndr/ndr_srvsvc.h index 0469040..cd341fa 100644 --- a/source/librpc/gen_ndr/ndr_srvsvc.h +++ b/source/librpc/gen_ndr/ndr_srvsvc.h @@ -143,6 +143,7 @@ void ndr_print_srvsvc_NetFileInfo3(struct ndr_print *ndr, const char *name, cons void ndr_print_srvsvc_NetFileCtr3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileCtr3 *r); void ndr_print_srvsvc_NetFileInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetFileInfo *r); void ndr_print_srvsvc_NetFileCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetFileCtr *r); +void ndr_print_srvsvc_NetFileInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetFileInfoCtr *r); void ndr_print_srvsvc_NetSessInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo0 *r); void ndr_print_srvsvc_NetSessCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr0 *r); void ndr_print_srvsvc_NetSessInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo1 *r); diff --git a/source/librpc/gen_ndr/srv_srvsvc.c b/source/librpc/gen_ndr/srv_srvsvc.c index 2817542..100f2ca 100644 --- a/source/librpc/gen_ndr/srv_srvsvc.c +++ b/source/librpc/gen_ndr/srv_srvsvc.c @@ -748,8 +748,7 @@ static bool api_srvsvc_NetFileEnum(pipes_struct *p) } ZERO_STRUCT(r->out); - r->out.level = r->in.level; - r->out.ctr = r->in.ctr; + r->out.info_ctr = r->in.info_ctr; r->out.totalentries = talloc_zero(r, uint32_t); if (r->out.totalentries == NULL) { talloc_free(r); diff --git a/source/librpc/gen_ndr/srvsvc.h b/source/librpc/gen_ndr/srvsvc.h index 31a9ba6..6a74904 100644 --- a/source/librpc/gen_ndr/srvsvc.h +++ b/source/librpc/gen_ndr/srvsvc.h @@ -135,6 +135,11 @@ union srvsvc_NetFileCtr { struct srvsvc_NetFileCtr3 *ctr3;/* [unique,case(3)] */ }; +struct srvsvc_NetFileInfoCtr { + uint32_t level; + union srvsvc_NetFileCtr ctr;/* [switch_is(level)] */ +}; + struct srvsvc_NetSessInfo0 { const char *client;/* [unique,charset(UTF16)] */ }; @@ -1173,15 +1178,13 @@ struct srvsvc_NetFileEnum { const char *path;/* [unique,charset(UTF16)] */ const char *user;/* [unique,charset(UTF16)] */ uint32_t max_buffer; - uint32_t *level;/* [ref] */ - union srvsvc_NetFileCtr *ctr;/* [ref,switch_is(*level)] */ + struct srvsvc_NetFileInfoCtr *info_ctr;/* [ref] */ uint32_t *resume_handle;/* [unique] */ } in; struct { uint32_t *totalentries;/* [ref] */ - uint32_t *level;/* [ref] */ - union srvsvc_NetFileCtr *ctr;/* [ref,switch_is(*level)] */ + struct srvsvc_NetFileInfoCtr *info_ctr;/* [ref] */ uint32_t *resume_handle;/* [unique] */ WERROR result; } out; diff --git a/source/librpc/idl/srvsvc.idl b/source/librpc/idl/srvsvc.idl index 4076aac..d1ff0c5 100644 --- a/source/librpc/idl/srvsvc.idl +++ b/source/librpc/idl/srvsvc.idl @@ -246,14 +246,18 @@ import "security.idl", "svcctl.idl"; [default] ; } srvsvc_NetFileCtr; + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetFileCtr ctr; + } srvsvc_NetFileInfoCtr; + /******************/ /* Function: 0x09 */ WERROR srvsvc_NetFileEnum( [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in,unique] [string,charset(UTF16)] uint16 *path, [in,unique] [string,charset(UTF16)] uint16 *user, - [in,out,ref] uint32 *level, - [in,out,switch_is(*level),ref] srvsvc_NetFileCtr *ctr, + [in,out,ref] srvsvc_NetFileInfoCtr *info_ctr, [in] uint32 max_buffer, [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle diff --git a/source/rpc_client/cli_srvsvc.c b/source/rpc_client/cli_srvsvc.c deleted file mode 100644 index 068108c..0000000 --- a/source/rpc_client/cli_srvsvc.c +++ /dev/null @@ -1,112 +0,0 @@ -/* - Unix SMB/CIFS implementation. - NT Domain Authentication SMB / MSRPC client - Copyright (C) Andrew Tridgell 1994-2000 - Copyright (C) Tim Potter 2001 - Copyright (C) Jim McDonough <[EMAIL PROTECTED]> 2002 - Copyright (C) Jeremy Allison 2005. - Copyright (C) Gerald (Jerry) Carter 2006. - - - This program is free software; you can redistribute it and/or modify - it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 3 of the License, or - (at your option) any later version. - - This program is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - GNU General Public License for more details. - - You should have received a copy of the GNU General Public License - along with this program. If not, see <http://www.gnu.org/licenses/>. -*/ - -#include "includes.h" - -WERROR rpccli_srvsvc_net_file_enum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, - uint32 file_level, const char *user_name, - SRV_FILE_INFO_CTR *ctr, int preferred_len, - ENUM_HND *hnd) -{ - prs_struct qbuf, rbuf; - SRV_Q_NET_FILE_ENUM q; - SRV_R_NET_FILE_ENUM r; - WERROR result = W_ERROR(ERRgeneral); - fstring server; - int i; - - ZERO_STRUCT(q); - ZERO_STRUCT(r); - - /* Initialise input parameters */ - - slprintf(server, sizeof(fstring)-1, "\\\\%s", cli->cli->desthost); - strupper_m(server); - - init_srv_q_net_file_enum(&q, server, NULL, user_name, - file_level, ctr, preferred_len, hnd); - - /* Marshall data and send request */ - - CLI_DO_RPC_WERR(cli, mem_ctx, PI_SRVSVC, SRV_NET_FILE_ENUM, - q, r, - qbuf, rbuf, - srv_io_q_net_file_enum, - srv_io_r_net_file_enum, - WERR_GENERAL_FAILURE); - - result = r.status; - - if (!W_ERROR_IS_OK(result)) - goto done; - - /* copy the data over to the ctr */ - - ZERO_STRUCTP(ctr); - - ctr->level = file_level; - - ctr->num_entries = ctr->num_entries2 = r.ctr.num_entries; - - switch(file_level) { - case 3: - if (ctr->num_entries) { - if ( (ctr->file.info3 = TALLOC_ARRAY(mem_ctx, FILE_INFO_3, ctr->num_entries)) == NULL ) { - return WERR_NOMEM; - } - - memset(ctr->file.info3, 0, sizeof(FILE_INFO_3) * ctr->num_entries); - } else { - ctr->file.info3 = NULL; - } - - for (i = 0; i < r.ctr.num_entries; i++) { - FILE_INFO_3 *info3 = &ctr->file.info3[i]; - char *s; - - /* Copy pointer crap */ - - memcpy(info3, &r.ctr.file.info3[i], sizeof(FILE_INFO_3)); - - /* Duplicate strings */ - - if ( (s = unistr2_to_ascii_talloc(mem_ctx, r.ctr.file.info3[i].path)) != NULL ) { - info3->path = TALLOC_P( mem_ctx, UNISTR2 ); - init_unistr2(info3->path, s, UNI_STR_TERMINATE); - } - - if ( (s = unistr2_to_ascii_talloc(mem_ctx, r.ctr.file.info3[i].user)) != NULL ) { - info3->user = TALLOC_P( mem_ctx, UNISTR2 ); - init_unistr2(info3->user, s, UNI_STR_TERMINATE); - } - - } - - break; - } - - done: - return result; -} - diff --git a/source/rpc_parse/parse_srv.c b/source/rpc_parse/parse_srv.c index 30b3539..ec214d3 100644 --- a/source/rpc_parse/parse_srv.c +++ b/source/rpc_parse/parse_srv.c @@ -335,79 +335,6 @@ bool srv_io_r_net_sess_enum(const char *desc, SRV_R_NET_SESS_ENUM *r_n, prs_stru } /******************************************************************* - Inits a SRV_Q_NET_SESS_DEL structure. -********************************************************************/ - -void init_srv_q_net_sess_del(SRV_Q_NET_SESS_DEL *q_n, const char *srv_name, -- Samba Shared Repository