[SCM] Samba Shared Repository - branch v3-2-test updated -
release-3-2-0pre2-174-g8168fd5
Günther Deschner
gd at samba.org
Mon Mar 10 02:45:39 GMT 2008
The branch, v3-2-test has been updated
via 8168fd583cfc2ad64e5c1aa67047d8c3c607993a (commit)
via f90306bd24bc243c8f30a16c0414031d69d05c03 (commit)
via 692626c1ef46cd27c0df34e2c206d21c929587f4 (commit)
via 35089b53b81d8a8aa117d6c1972ccb938170a2b3 (commit)
via 5e112ff3d7984c278949833a00349a9f523d4b23 (commit)
via 8a10bc13aee7c34f466fa69773694be97f0e7d85 (commit)
from 98b643366044f471ad69c9e5aac06022f30742d9 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test
- Log -----------------------------------------------------------------
commit 8168fd583cfc2ad64e5c1aa67047d8c3c607993a
Author: Günther Deschner <gd at samba.org>
Date: Sun Mar 9 21:28:53 2008 +0100
Add some srvsvc_NetSessInfo init functions.
Guenther
commit f90306bd24bc243c8f30a16c0414031d69d05c03
Author: Günther Deschner <gd at samba.org>
Date: Sun Mar 9 20:55:19 2008 +0100
Add netsessenum command to rpcclient.
Guenther
commit 692626c1ef46cd27c0df34e2c206d21c929587f4
Author: Günther Deschner <gd at samba.org>
Date: Sun Mar 9 20:11:07 2008 +0100
Re-run make idl.
Guenther
commit 35089b53b81d8a8aa117d6c1972ccb938170a2b3
Author: Günther Deschner <gd at samba.org>
Date: Sun Mar 9 20:10:22 2008 +0100
Fix IDL for srvsvc_NetSessEnum().
Guenther
commit 5e112ff3d7984c278949833a00349a9f523d4b23
Author: Günther Deschner <gd at samba.org>
Date: Sun Mar 9 20:04:35 2008 +0100
Add netsessdel command to rpcclient.
Guenther
commit 8a10bc13aee7c34f466fa69773694be97f0e7d85
Author: Günther Deschner <gd at samba.org>
Date: Sun Mar 9 18:01:52 2008 +0100
Use pidl for _srvsvc_NetSessDel().
Guenther
-----------------------------------------------------------------------
Summary of changes:
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 | 9 ++-
source/rpc_client/init_srvsvc.c | 91 +++++++++++++++++++++++++++
source/rpc_server/srv_srvsvc.c | 21 +------
source/rpc_server/srv_srvsvc_nt.c | 35 +++++------
source/rpcclient/cmd_srvsvc.c | 112 +++++++++++++++++++++++++++++++++
11 files changed, 298 insertions(+), 116 deletions(-)
Changeset truncated at 500 lines:
diff --git a/source/librpc/gen_ndr/cli_srvsvc.c b/source/librpc/gen_ndr/cli_srvsvc.c
index 2b61fb8..18bec1f 100644
--- a/source/librpc/gen_ndr/cli_srvsvc.c
+++ b/source/librpc/gen_ndr/cli_srvsvc.c
@@ -650,8 +650,7 @@ NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli,
const char *server_unc,
const char *client,
const char *user,
- uint32_t *level,
- union srvsvc_NetSessCtr *ctr,
+ struct srvsvc_NetSessInfoCtr *info_ctr,
uint32_t max_buffer,
uint32_t *totalentries,
uint32_t *resume_handle,
@@ -664,8 +663,7 @@ NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli,
r.in.server_unc = server_unc;
r.in.client = client;
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;
@@ -693,8 +691,7 @@ NTSTATUS rpccli_srvsvc_NetSessEnum(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 b8171a3..bccf95e 100644
--- a/source/librpc/gen_ndr/cli_srvsvc.h
+++ b/source/librpc/gen_ndr/cli_srvsvc.h
@@ -98,8 +98,7 @@ NTSTATUS rpccli_srvsvc_NetSessEnum(struct rpc_pipe_client *cli,
const char *server_unc,
const char *client,
const char *user,
- uint32_t *level,
- union srvsvc_NetSessCtr *ctr,
+ struct srvsvc_NetSessInfoCtr *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 8f577c6..bfb4ced 100644
--- a/source/librpc/gen_ndr/ndr_srvsvc.c
+++ b/source/librpc/gen_ndr/ndr_srvsvc.c
@@ -3496,6 +3496,44 @@ _PUBLIC_ void ndr_print_srvsvc_NetSessCtr(struct ndr_print *ndr, const char *nam
}
}
+static enum ndr_err_code ndr_push_srvsvc_NetSessInfoCtr(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetSessInfoCtr *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_NetSessCtr(ndr, NDR_SCALARS, &r->ctr));
+ }
+ if (ndr_flags & NDR_BUFFERS) {
+ NDR_CHECK(ndr_push_srvsvc_NetSessCtr(ndr, NDR_BUFFERS, &r->ctr));
+ }
+ return NDR_ERR_SUCCESS;
+}
+
+static enum ndr_err_code ndr_pull_srvsvc_NetSessInfoCtr(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetSessInfoCtr *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_NetSessCtr(ndr, NDR_SCALARS, &r->ctr));
+ }
+ if (ndr_flags & NDR_BUFFERS) {
+ NDR_CHECK(ndr_pull_srvsvc_NetSessCtr(ndr, NDR_BUFFERS, &r->ctr));
+ }
+ return NDR_ERR_SUCCESS;
+}
+
+_PUBLIC_ void ndr_print_srvsvc_NetSessInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfoCtr *r)
+{
+ ndr_print_struct(ndr, name, "srvsvc_NetSessInfoCtr");
+ ndr->depth++;
+ ndr_print_uint32(ndr, "level", r->level);
+ ndr_print_set_switch_value(ndr, &r->ctr, r->level);
+ ndr_print_srvsvc_NetSessCtr(ndr, "ctr", &r->ctr);
+ ndr->depth--;
+}
+
static enum ndr_err_code ndr_push_srvsvc_ShareType(struct ndr_push *ndr, int ndr_flags, enum srvsvc_ShareType r)
{
{
@@ -14824,15 +14862,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetSessEnum(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_NetSessCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr));
+ NDR_CHECK(ndr_push_srvsvc_NetSessInfoCtr(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) {
@@ -14840,15 +14873,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetSessEnum(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_NetSessCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr));
+ NDR_CHECK(ndr_push_srvsvc_NetSessInfoCtr(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");
}
@@ -14871,8 +14899,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetSessEnum(struct ndr_pull *ndr, int f
TALLOC_CTX *_mem_save_server_unc_0;
TALLOC_CTX *_mem_save_client_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) {
@@ -14933,20 +14960,12 @@ static enum ndr_err_code ndr_pull_srvsvc_NetSessEnum(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_NetSessCtr(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_NetSessInfoCtr(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) {
@@ -14960,29 +14979,19 @@ static enum ndr_err_code ndr_pull_srvsvc_NetSessEnum(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_NetSessCtr(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_NetSessInfoCtr(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);
}
@@ -15035,14 +15044,9 @@ _PUBLIC_ void ndr_print_srvsvc_NetSessEnum(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_NetSessCtr(ndr, "ctr", r->in.ctr);
+ ndr_print_srvsvc_NetSessInfoCtr(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);
@@ -15056,14 +15060,9 @@ _PUBLIC_ void ndr_print_srvsvc_NetSessEnum(struct ndr_print *ndr, const char *na
if (flags & NDR_OUT) {
ndr_print_struct(ndr, "out", "srvsvc_NetSessEnum");
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_NetSessCtr(ndr, "ctr", r->out.ctr);
+ ndr_print_srvsvc_NetSessInfoCtr(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 fb96d4b..0469040 100644
--- a/source/librpc/gen_ndr/ndr_srvsvc.h
+++ b/source/librpc/gen_ndr/ndr_srvsvc.h
@@ -154,6 +154,7 @@ void ndr_print_srvsvc_NetSessCtr10(struct ndr_print *ndr, const char *name, cons
void ndr_print_srvsvc_NetSessInfo502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfo502 *r);
void ndr_print_srvsvc_NetSessCtr502(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessCtr502 *r);
void ndr_print_srvsvc_NetSessCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetSessCtr *r);
+void ndr_print_srvsvc_NetSessInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetSessInfoCtr *r);
void ndr_print_srvsvc_ShareType(struct ndr_print *ndr, const char *name, enum srvsvc_ShareType r);
void ndr_print_srvsvc_NetShareInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareInfo0 *r);
void ndr_print_srvsvc_NetShareCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetShareCtr0 *r);
diff --git a/source/librpc/gen_ndr/srv_srvsvc.c b/source/librpc/gen_ndr/srv_srvsvc.c
index 1bbf679..2817542 100644
--- a/source/librpc/gen_ndr/srv_srvsvc.c
+++ b/source/librpc/gen_ndr/srv_srvsvc.c
@@ -984,8 +984,7 @@ static bool api_srvsvc_NetSessEnum(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 cf3f237..31a9ba6 100644
--- a/source/librpc/gen_ndr/srvsvc.h
+++ b/source/librpc/gen_ndr/srvsvc.h
@@ -209,6 +209,11 @@ union srvsvc_NetSessCtr {
struct srvsvc_NetSessCtr502 *ctr502;/* [unique,case(502)] */
};
+struct srvsvc_NetSessInfoCtr {
+ uint32_t level;
+ union srvsvc_NetSessCtr ctr;/* [switch_is(level)] */
+};
+
enum srvsvc_ShareType
#ifndef USE_UINT_ENUMS
{
@@ -1218,15 +1223,13 @@ struct srvsvc_NetSessEnum {
const char *client;/* [unique,charset(UTF16)] */
const char *user;/* [unique,charset(UTF16)] */
uint32_t max_buffer;
- uint32_t *level;/* [ref] */
- union srvsvc_NetSessCtr *ctr;/* [ref,switch_is(*level)] */
+ struct srvsvc_NetSessInfoCtr *info_ctr;/* [ref] */
uint32_t *resume_handle;/* [unique] */
} in;
struct {
uint32_t *totalentries;/* [ref] */
- uint32_t *level;/* [ref] */
- union srvsvc_NetSessCtr *ctr;/* [ref,switch_is(*level)] */
+ struct srvsvc_NetSessInfoCtr *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 3154940..4076aac 100644
--- a/source/librpc/idl/srvsvc.idl
+++ b/source/librpc/idl/srvsvc.idl
@@ -355,12 +355,17 @@ import "security.idl", "svcctl.idl";
/******************/
/* Function: 0x0c */
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] srvsvc_NetSessCtr ctr;
+ } srvsvc_NetSessInfoCtr;
+
WERROR srvsvc_NetSessEnum(
[in,unique] [string,charset(UTF16)] uint16 *server_unc,
[in,unique] [string,charset(UTF16)] uint16 *client,
[in,unique] [string,charset(UTF16)] uint16 *user,
- [in,out,ref] uint32 *level,
- [in,out,switch_is(*level),ref] srvsvc_NetSessCtr *ctr,
+ [in,out,ref] srvsvc_NetSessInfoCtr *info_ctr,
[in] uint32 max_buffer,
[out,ref] uint32 *totalentries,
[in,out,unique] uint32 *resume_handle
diff --git a/source/rpc_client/init_srvsvc.c b/source/rpc_client/init_srvsvc.c
index 579756c..0d4d616 100644
--- a/source/rpc_client/init_srvsvc.c
+++ b/source/rpc_client/init_srvsvc.c
@@ -251,3 +251,94 @@ void init_srvsvc_NetRemoteTODInfo(struct srvsvc_NetRemoteTODInfo *r,
r->weekday = weekday;
}
+/*******************************************************************
+ inits a srvsvc_NetSessInfo0 structure
+ ********************************************************************/
+
+void init_srvsvc_NetSessInfo0(struct srvsvc_NetSessInfo0 *r,
+ const char *client)
+{
+ r->client = client;
+}
+
+/*******************************************************************
+ inits a srvsvc_NetSessInfo1 structure
+ ********************************************************************/
+
+void init_srvsvc_NetSessInfo1(struct srvsvc_NetSessInfo1 *r,
+ const char *client,
+ const char *user,
+ uint32_t num_open,
+ uint32_t _time,
+ uint32_t idle_time,
+ uint32_t user_flags)
+{
+ r->client = client;
+ r->user = user;
+ r->num_open = num_open;
+ r->time = _time;
+ r->idle_time = idle_time;
+ r->user_flags = user_flags;
+}
+
+/*******************************************************************
+ inits a srvsvc_NetSessInfo2 structure
+ ********************************************************************/
+
+void init_srvsvc_NetSessInfo2(struct srvsvc_NetSessInfo2 *r,
+ const char *client,
+ const char *user,
+ uint32_t num_open,
+ uint32_t _time,
+ uint32_t idle_time,
+ uint32_t user_flags,
+ const char *client_type)
+{
+ r->client = client;
+ r->user = user;
+ r->num_open = num_open;
+ r->time = _time;
+ r->idle_time = idle_time;
+ r->user_flags = user_flags;
+ r->client_type = client_type;
+}
+
+/*******************************************************************
+ inits a srvsvc_NetSessInfo10 structure
+ ********************************************************************/
+
+void init_srvsvc_NetSessInfo10(struct srvsvc_NetSessInfo10 *r,
+ const char *client,
+ const char *user,
+ uint32_t _time,
+ uint32_t idle_time)
+{
+ r->client = client;
+ r->user = user;
+ r->time = _time;
+ r->idle_time = idle_time;
+}
+
+/*******************************************************************
+ inits a srvsvc_NetSessInfo502 structure
+ ********************************************************************/
+
+void init_srvsvc_NetSessInfo502(struct srvsvc_NetSessInfo502 *r,
+ const char *client,
+ const char *user,
+ uint32_t num_open,
+ uint32_t _time,
+ uint32_t idle_time,
+ uint32_t user_flags,
+ const char *client_type,
+ const char *transport)
+{
+ r->client = client;
+ r->user = user;
+ r->num_open = num_open;
+ r->time = _time;
+ r->idle_time = idle_time;
+ r->user_flags = user_flags;
+ r->client_type = client_type;
+ r->transport = transport;
+}
diff --git a/source/rpc_server/srv_srvsvc.c b/source/rpc_server/srv_srvsvc.c
index 5351f93..7579e10 100644
--- a/source/rpc_server/srv_srvsvc.c
+++ b/source/rpc_server/srv_srvsvc.c
@@ -152,26 +152,7 @@ static bool api_srv_net_sess_enum(pipes_struct *p)
static bool api_srv_net_sess_del(pipes_struct *p)
{
- SRV_Q_NET_SESS_DEL q_u;
- SRV_R_NET_SESS_DEL r_u;
- prs_struct *data = &p->in_data.data;
- prs_struct *rdata = &p->out_data.rdata;
-
- ZERO_STRUCT(q_u);
- ZERO_STRUCT(r_u);
-
- /* grab the net server get enum */
- if (!srv_io_q_net_sess_del("", &q_u, data, 0))
- return False;
-
- /* construct reply. always indicate success */
- r_u.status = _srv_net_sess_del(p, &q_u, &r_u);
-
- /* store the response in the SMB stream */
- if (!srv_io_r_net_sess_del("", &r_u, rdata, 0))
- return False;
-
- return True;
+ return proxy_srvsvc_call(p, NDR_SRVSVC_NETSESSDEL);
}
/*******************************************************************
diff --git a/source/rpc_server/srv_srvsvc_nt.c b/source/rpc_server/srv_srvsvc_nt.c
index 0d4addd..7c2efc9 100644
--- a/source/rpc_server/srv_srvsvc_nt.c
+++ b/source/rpc_server/srv_srvsvc_nt.c
@@ -1274,31 +1274,33 @@ WERROR _srv_net_sess_enum(pipes_struct *p, SRV_Q_NET_SESS_ENUM *q_u, SRV_R_NET_S
}
/*******************************************************************
-net sess del
+ _srvsvc_NetSessDel
********************************************************************/
-WERROR _srv_net_sess_del(pipes_struct *p, SRV_Q_NET_SESS_DEL *q_u, SRV_R_NET_SESS_DEL *r_u)
+WERROR _srvsvc_NetSessDel(pipes_struct *p,
+ struct srvsvc_NetSessDel *r)
{
struct sessionid *session_list;
struct current_user user;
int num_sessions, snum;
- fstring username;
- fstring machine;
+ const char *username;
+ const char *machine;
bool not_root = False;
+ WERROR werr;
- rpcstr_pull_unistr2_fstring(username, &q_u->uni_user_name);
- rpcstr_pull_unistr2_fstring(machine, &q_u->uni_cli_name);
+ username = r->in.user;
+ machine = r->in.client;
/* strip leading backslashes if any */
- while (machine[0] == '\\') {
- memmove(machine, &machine[1], strlen(machine));
+ if (machine && machine[0] == '\\' && machine[1] == '\\') {
+ machine += 2;
}
num_sessions = list_sessions(p->mem_ctx, &session_list);
- DEBUG(5,("_srv_net_sess_del: %d\n", __LINE__));
+ DEBUG(5,("_srvsvc_NetSessDel: %d\n", __LINE__));
- r_u->status = WERR_ACCESS_DENIED;
+ werr = WERR_ACCESS_DENIED;
--
Samba Shared Repository
More information about the samba-cvs
mailing list