From 5c946b1b286e922db86e64d42ec5db985b9086d8 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 30 Oct 2008 23:50:35 +0100 Subject: mksyms.sh: Fix typo in comment. --- source3/script/mksyms.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source3/script/mksyms.sh b/source3/script/mksyms.sh index 51d3fbd999..714d55abae 100755 --- a/source3/script/mksyms.sh +++ b/source3/script/mksyms.sh @@ -6,7 +6,7 @@ # Extract symbols to export from C-header files. # output in version-script format for linking shared libraries. # -# This is the shell warpper for the mksyms.awk core script. +# This is the shell wrapper for the mksyms.awk core script. # # Copyright (C) 2008 Micheal Adam # -- cgit From ca4cd04bed7b45c9ed00f23b1af4259eb7a4afd9 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 11:07:24 +0100 Subject: s3-srvsvc-idl: merge STR_LEN4 removal from s4. Guenther --- source3/librpc/idl/srvsvc.idl | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/source3/librpc/idl/srvsvc.idl b/source3/librpc/idl/srvsvc.idl index 39d72b73da..021b0e8d87 100644 --- a/source3/librpc/idl/srvsvc.idl +++ b/source3/librpc/idl/srvsvc.idl @@ -1142,7 +1142,16 @@ import "security.idl", "svcctl.idl"; /* srvsvc_NetDisk */ /**************************/ typedef struct { - [flag(STR_LEN4)] string disk; + /* + * In theory this should be: + * [charset(UTF16),string] uint16 annotation[3] + * But midl treats this as: + * [charset(UTF16),string] uint16 annotation[] + * and pidl doesn't support this yet + */ + [value(0)] uint32 __disk_offset; + [value(strlen(disk)+1)] uint32 __disk_length; + [charset(UTF16)] uint16 disk[__disk_length]; } srvsvc_NetDiskInfo0; typedef struct { -- cgit From 622650597c2bb37125f5abb03ff9b42db480fbea Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 16:14:07 +0100 Subject: s3-srvsvc-idl: add missing field to srvsvc_SrvInfo402/403. Guenther --- source3/librpc/idl/srvsvc.idl | 2 ++ 1 file changed, 2 insertions(+) diff --git a/source3/librpc/idl/srvsvc.idl b/source3/librpc/idl/srvsvc.idl index 021b0e8d87..ef70729e8a 100644 --- a/source3/librpc/idl/srvsvc.idl +++ b/source3/librpc/idl/srvsvc.idl @@ -680,6 +680,7 @@ import "security.idl", "svcctl.idl"; uint32 sessreqs; uint32 opensearch; uint32 activelocks; + uint32 numreqbufs; uint32 sizereqbufs; uint32 numbigbufs; uint32 numfiletasks; @@ -713,6 +714,7 @@ import "security.idl", "svcctl.idl"; uint32 sessreqs; uint32 opensearch; uint32 activelocks; + uint32 numreqbufs; uint32 sizereqbufs; uint32 numbigbufs; uint32 numfiletasks; -- cgit From 7cd5f7331478a5f5ef34931d0adbb9977e0925e3 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 16:20:51 +0100 Subject: s3-srvsvc-idl: fix srvsvc_NetCharDevEnum. Guenther --- source3/librpc/idl/srvsvc.idl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source3/librpc/idl/srvsvc.idl b/source3/librpc/idl/srvsvc.idl index ef70729e8a..bdc6d50de3 100644 --- a/source3/librpc/idl/srvsvc.idl +++ b/source3/librpc/idl/srvsvc.idl @@ -51,12 +51,16 @@ import "security.idl", "svcctl.idl"; [default] ; } srvsvc_NetCharDevCtr; + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetCharDevCtr ctr; + } srvsvc_NetCharDevInfoCtr; + /******************/ /* Function: 0x00 */ WERROR srvsvc_NetCharDevEnum( [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out,ref] uint32 *level, - [in,out,ref,switch_is(*level)] srvsvc_NetCharDevCtr *ctr, + [in,out,ref] srvsvc_NetCharDevInfoCtr *info_ctr, [in] uint32 max_buffer, [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle -- cgit From bb4894d48b4bd917b516e6b424b7942050a879ad Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 16:48:26 +0100 Subject: s3-srvsvc-idl: fix srvsvc_NetCharDevQEnum. Guenther --- source3/librpc/idl/srvsvc.idl | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/source3/librpc/idl/srvsvc.idl b/source3/librpc/idl/srvsvc.idl index bdc6d50de3..c60b4a4ce5 100644 --- a/source3/librpc/idl/srvsvc.idl +++ b/source3/librpc/idl/srvsvc.idl @@ -120,13 +120,17 @@ import "security.idl", "svcctl.idl"; [default] ; } srvsvc_NetCharDevQCtr; + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetCharDevQCtr ctr; + } srvsvc_NetCharDevQInfoCtr; + /******************/ /* Function: 0x03 */ WERROR srvsvc_NetCharDevQEnum( [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in,unique] [string,charset(UTF16)] uint16 *user, - [in,out,ref] uint32 *level, - [in,out,switch_is(*level),ref] srvsvc_NetCharDevQCtr *ctr, + [in,out,ref] srvsvc_NetCharDevQInfoCtr *info_ctr, [in] uint32 max_buffer, [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle -- cgit From d0b02f970862cd0f494f3fe7ba8e13f65f29f76d Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 19:06:58 +0100 Subject: s4-srvsvc-idl: use maxuses as uint32 consistently. Guenther --- source4/librpc/idl/srvsvc.idl | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 2d6242e6d1..00f5e55d4c 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -465,7 +465,7 @@ import "security.idl", "svcctl.idl"; srvsvc_ShareType type; [string,charset(UTF16)] uint16 *comment; uint32 permissions; - int32 max_users; + uint32 max_users; uint32 current_users; [string,charset(UTF16)] uint16 *path; [string,charset(UTF16)] uint16 *password; @@ -506,7 +506,7 @@ import "security.idl", "svcctl.idl"; } srvsvc_NetShareCtr1005; typedef struct { - int32 max_users; + uint32 max_users; } srvsvc_NetShareInfo1006; typedef struct { -- cgit From 4b8606f616cdd2fe885729a044d6139fc0001780 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 19:03:02 +0100 Subject: s4-srvsvc-idl: pure cosmetic merge from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 00f5e55d4c..b8cf89ce3b 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -141,7 +141,7 @@ import "security.idl", "svcctl.idl"; /******************/ /* Function: 0x05 */ WERROR srvsvc_NetCharDevQSetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] [string,charset(UTF16)] uint16 queue_name[], [in] uint32 level, [in,switch_is(level)] srvsvc_NetCharDevQInfo info, -- cgit From 0b95cb251ce0043e393139a22a0f3ac6121406c5 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 21:04:31 +0100 Subject: s4-srvsvc: merge srvsvc_NetShareInfo502 from s3. Apparently both s3 and s4 are not entirely correct one this. metze is looking into hand-marshalling security descriptors so this will fix this finally. For now, just keep the two in sync. Guenther --- source4/librpc/idl/srvsvc.idl | 4 +--- source4/rpc_server/common/share_info.c | 6 ------ source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 5 ++--- source4/torture/libnet/libnet_share.c | 4 ++-- source4/torture/rpc/samba3rpc.c | 2 +- source4/torture/rpc/srvsvc.c | 5 +++-- 6 files changed, 9 insertions(+), 17 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index b8cf89ce3b..d0e52e255b 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -469,9 +469,7 @@ import "security.idl", "svcctl.idl"; uint32 current_users; [string,charset(UTF16)] uint16 *path; [string,charset(UTF16)] uint16 *password; - /* maybe here is a struct sec_desc_buf following */ - uint32 unknown; - [subcontext(4)] security_descriptor *sd; + sec_desc_buf sd_buf; } srvsvc_NetShareInfo502; typedef struct { diff --git a/source4/rpc_server/common/share_info.c b/source4/rpc_server/common/share_info.c index 130babd175..48870e602f 100644 --- a/source4/rpc_server/common/share_info.c +++ b/source4/rpc_server/common/share_info.c @@ -106,12 +106,6 @@ uint32_t dcesrv_common_get_share_dfs_flags(TALLOC_CTX *mem_ctx, struct dcesrv_co return 0; } -/* This hardcoded value should go into a ldb database! */ -uint32_t dcesrv_common_get_share_unknown(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, struct share_config *scfg) -{ - return 0; -} - /* This hardcoded value should go into a ldb database! */ struct security_descriptor *dcesrv_common_get_security_descriptor(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, struct share_config *scfg) { diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index 58eed57f0f..70911e92fe 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -697,8 +697,7 @@ static WERROR dcesrv_srvsvc_fiel_ShareInfo(struct dcesrv_call_state *dce_call, T info->info502->path = dcesrv_common_get_share_path(mem_ctx, dce_ctx, scfg); W_ERROR_HAVE_NO_MEMORY(info->info502->path); info->info502->password = talloc_strdup(mem_ctx, share_string_option(scfg, SHARE_PASSWORD, NULL)); - info->info502->unknown = dcesrv_common_get_share_unknown(mem_ctx, dce_ctx, scfg); - info->info502->sd = dcesrv_common_get_security_descriptor(mem_ctx, dce_ctx, scfg); + info->info502->sd_buf.sd = dcesrv_common_get_security_descriptor(mem_ctx, dce_ctx, scfg); return WERR_OK; } @@ -1323,7 +1322,7 @@ static WERROR dcesrv_srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, r->in.info.info502->type, r->in.info.info502->max_users, 0, - r->in.info.info502->sd); + r->in.info.info502->sd_buf.sd); if (W_ERROR_EQUAL(status, WERR_OK)) { return status; } diff --git a/source4/torture/libnet/libnet_share.c b/source4/torture/libnet/libnet_share.c index 6bc5be40a6..76a29851e1 100644 --- a/source4/torture/libnet/libnet_share.c +++ b/source4/torture/libnet/libnet_share.c @@ -102,11 +102,11 @@ static void test_displayshares(struct libnet_ListShares s) for (j = 0; j < ARRAY_SIZE(share_types); j++) { if (share_types[j].type == info->type) break; } - d_printf("\t[%d] %s\t%s\n\t %s\n\t [perms=0x%08x, max_usr=%d, cur_usr=%d, path=%s, pass=%s, unknown=0x%08x]\n", + d_printf("\t[%d] %s\t%s\n\t %s\n\t [perms=0x%08x, max_usr=%d, cur_usr=%d, path=%s, pass=%s]\n", i, info->name, share_types[j].desc, info->comment, info->permissions, info->max_users, info->current_users, info->path, - info->password, info->unknown); + info->password); } break; } diff --git a/source4/torture/rpc/samba3rpc.c b/source4/torture/rpc/samba3rpc.c index c53c4b72c7..5aff213533 100644 --- a/source4/torture/rpc/samba3rpc.c +++ b/source4/torture/rpc/samba3rpc.c @@ -2153,7 +2153,7 @@ static struct security_descriptor *get_sharesec(TALLOC_CTX *mem_ctx, return NULL; } - result = talloc_steal(mem_ctx, r.out.info.info502->sd); + result = talloc_steal(mem_ctx, r.out.info.info502->sd_buf.sd); talloc_free(tmp_ctx); return result; } diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index 1fe1221b0d..9b475ab826 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -444,6 +444,7 @@ static bool test_NetShareAddSetDel(struct torture_context *tctx, struct srvsvc_NetShareSetInfo r; struct srvsvc_NetShareGetInfo q; struct srvsvc_NetShareDel d; + struct sec_desc_buf sd_buf; struct { uint32_t level; WERROR expected; @@ -524,6 +525,7 @@ static bool test_NetShareAddSetDel(struct torture_context *tctx, r.in.info.info501->csc_policy = 0; break; case 502: + ZERO_STRUCT(sd_buf); r.in.info.info502 = talloc(tctx, struct srvsvc_NetShareInfo502); r.in.info.info502->name = r.in.share_name; r.in.info.info502->type = STYPE_DISKTREE; @@ -533,8 +535,7 @@ static bool test_NetShareAddSetDel(struct torture_context *tctx, r.in.info.info502->current_users = 1; r.in.info.info502->path = talloc_strdup(tctx, "C:\\"); r.in.info.info502->password = NULL; - r.in.info.info502->unknown = 0; - r.in.info.info502->sd = NULL; + r.in.info.info502->sd_buf = sd_buf; break; case 1004: r.in.info.info1004 = talloc(tctx, struct srvsvc_NetShareInfo1004); -- cgit From 95e438d9b350b97b950d2b47f927c6892b583e1e Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 13:50:17 +0100 Subject: s4-srvsvc: merge srvsvc_NetSetFileSecurity from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index d0e52e255b..22c709b8b1 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1450,7 +1450,7 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *share, [in] [string,charset(UTF16)] uint16 file[], [in] security_secinfo securityinformation, - [in] sec_desc_buf sd_buf + [in,ref] sec_desc_buf *sd_buf ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index 70911e92fe..fb42d7952b 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -2144,7 +2144,7 @@ static WERROR dcesrv_srvsvc_NetSetFileSecurity(struct dcesrv_call_state *dce_cal io->set_secdesc.level = RAW_FILEINFO_SEC_DESC; io->set_secdesc.in.file.path = r->in.file; io->set_secdesc.in.secinfo_flags = r->in.securityinformation; - io->set_secdesc.in.sd = r->in.sd_buf.sd; + io->set_secdesc.in.sd = r->in.sd_buf->sd; nt_status = ntvfs_setpathinfo(ntvfs_req, io); if (!NT_STATUS_IS_OK(nt_status)) return ntstatus_to_werror(nt_status); -- cgit From f61ce2fe41eebef20d3bba471e625d835555d5d8 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 13:52:23 +0100 Subject: s4-srvsvc: merge srvsvc_NetSetFileSecurity from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 22c709b8b1..2afc6f9ec6 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1440,7 +1440,7 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *share, [in] [string,charset(UTF16)] uint16 file[], [in] security_secinfo securityinformation, - [out,unique] sec_desc_buf *sd_buf + [out,ref] sec_desc_buf **sd_buf ); /******************/ diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index fb42d7952b..90fba297e3 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -2112,7 +2112,7 @@ static WERROR dcesrv_srvsvc_NetGetFileSecurity(struct dcesrv_call_state *dce_cal sd_buf->sd = io->query_secdesc.out.sd; - r->out.sd_buf = sd_buf; + *r->out.sd_buf = sd_buf; return WERR_OK; } -- cgit From 9fd82703d17b4dc524d2c7689438b92738c63d23 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 14:01:04 +0100 Subject: s4-srvsvc: merge srvsvc_NetRemoteTOD from s3 idl. Guenther --- source4/libnet/libnet_time.c | 16 +++++++------ source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 37 +++++++++++++++++-------------- source4/torture/rpc/srvsvc.c | 3 ++- 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/source4/libnet/libnet_time.c b/source4/libnet/libnet_time.c index e1e53fb947..61a451d3fd 100644 --- a/source4/libnet/libnet_time.c +++ b/source4/libnet/libnet_time.c @@ -30,6 +30,7 @@ static NTSTATUS libnet_RemoteTOD_srvsvc(struct libnet_context *ctx, TALLOC_CTX * NTSTATUS status; struct libnet_RpcConnect c; struct srvsvc_NetRemoteTOD tod; + struct srvsvc_NetRemoteTODInfo *info = NULL; struct tm tm; /* prepare connect to the SRVSVC pipe of a timeserver */ @@ -48,6 +49,7 @@ static NTSTATUS libnet_RemoteTOD_srvsvc(struct libnet_context *ctx, TALLOC_CTX * /* prepare srvsvc_NetrRemoteTOD */ tod.in.server_unc = talloc_asprintf(mem_ctx, "\\%s", c.in.name); + tod.out.info = &info; /* 2. try srvsvc_NetRemoteTOD */ status = dcerpc_srvsvc_NetRemoteTOD(c.out.dcerpc_pipe, mem_ctx, &tod); @@ -68,18 +70,18 @@ static NTSTATUS libnet_RemoteTOD_srvsvc(struct libnet_context *ctx, TALLOC_CTX * } /* need to set the out parameters */ - tm.tm_sec = (int)tod.out.info->secs; - tm.tm_min = (int)tod.out.info->mins; - tm.tm_hour = (int)tod.out.info->hours; - tm.tm_mday = (int)tod.out.info->day; - tm.tm_mon = (int)tod.out.info->month -1; - tm.tm_year = (int)tod.out.info->year - 1900; + tm.tm_sec = (int)info->secs; + tm.tm_min = (int)info->mins; + tm.tm_hour = (int)info->hours; + tm.tm_mday = (int)info->day; + tm.tm_mon = (int)info->month -1; + tm.tm_year = (int)info->year - 1900; tm.tm_wday = -1; tm.tm_yday = -1; tm.tm_isdst = -1; r->srvsvc.out.time = timegm(&tm); - r->srvsvc.out.time_zone = tod.out.info->timezone * 60; + r->srvsvc.out.time_zone = info->timezone * 60; goto disconnect; diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 2afc6f9ec6..22e2a23073 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1326,7 +1326,7 @@ import "security.idl", "svcctl.idl"; /* Function: 0x1c */ WERROR srvsvc_NetRemoteTOD( [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [out,unique] srvsvc_NetRemoteTODInfo *info + [out,ref] srvsvc_NetRemoteTODInfo **info ); /**************************/ diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index 90fba297e3..8a5f6708c3 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -1688,31 +1688,34 @@ static WERROR dcesrv_srvsvc_NetRemoteTOD(struct dcesrv_call_state *dce_call, TAL struct timeval tval; time_t t; struct tm tm; + struct srvsvc_NetRemoteTODInfo *info; - r->out.info = talloc(mem_ctx, struct srvsvc_NetRemoteTODInfo); - W_ERROR_HAVE_NO_MEMORY(r->out.info); + info = talloc(mem_ctx, struct srvsvc_NetRemoteTODInfo); + W_ERROR_HAVE_NO_MEMORY(info); GetTimeOfDay(&tval); t = tval.tv_sec; gmtime_r(&t, &tm); - r->out.info->elapsed = t; + info->elapsed = t; /* TODO: fake the uptime: just return the milliseconds till 0:00:00 today */ - r->out.info->msecs = (tm.tm_hour*60*60*1000) - + (tm.tm_min*60*1000) - + (tm.tm_sec*1000) - + (tval.tv_usec/1000); - r->out.info->hours = tm.tm_hour; - r->out.info->mins = tm.tm_min; - r->out.info->secs = tm.tm_sec; - r->out.info->hunds = tval.tv_usec/10000; - r->out.info->timezone = get_time_zone(t)/60; - r->out.info->tinterval = 310; /* just return the same as windows */ - r->out.info->day = tm.tm_mday; - r->out.info->month = tm.tm_mon + 1; - r->out.info->year = tm.tm_year + 1900; - r->out.info->weekday = tm.tm_wday; + info->msecs = (tm.tm_hour*60*60*1000) + + (tm.tm_min*60*1000) + + (tm.tm_sec*1000) + + (tval.tv_usec/1000); + info->hours = tm.tm_hour; + info->mins = tm.tm_min; + info->secs = tm.tm_sec; + info->hunds = tval.tv_usec/10000; + info->timezone = get_time_zone(t)/60; + info->tinterval = 310; /* just return the same as windows */ + info->day = tm.tm_mday; + info->month = tm.tm_mon + 1; + info->year = tm.tm_year + 1900; + info->weekday = tm.tm_wday; + + *r->out.info = info; return WERR_OK; } diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index 9b475ab826..4ddab75883 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -851,10 +851,11 @@ static bool test_NetRemoteTOD(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetRemoteTOD r; + struct srvsvc_NetRemoteTODInfo *info = NULL; r.in.server_unc = talloc_asprintf(tctx,"\\\\%s",dcerpc_server_name(p)); + r.out.info = &info; - ZERO_STRUCT(r.out); torture_comment(tctx, "testing NetRemoteTOD\n"); status = dcerpc_srvsvc_NetRemoteTOD(p, tctx, &r); torture_assert_ntstatus_ok(tctx, status, "NetRemoteTOD failed"); -- cgit From 0688173c27793fc6c1125a2c8ffd6b391d2a3733 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 14:03:09 +0100 Subject: s4-srvsvc: merge srvsvc_NetPathCanonicalize from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 22e2a23073..e890ce8773 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1361,7 +1361,7 @@ import "security.idl", "svcctl.idl"; [out] [size_is(maxbuf)] uint8 can_path[], [in] uint32 maxbuf, [in] [string,charset(UTF16)] uint16 prefix[], - [in,out] uint32 pathtype, + [in,out,ref] uint32 *pathtype, [in] uint32 pathflags ); -- cgit From f151246e53859b03c6de1d352aa872ebef3e4103 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 14:04:28 +0100 Subject: s4-srvsvc: merge srvsvc_NetPathType from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index e890ce8773..a3faaad1fd 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1350,7 +1350,7 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] [string,charset(UTF16)] uint16 path[], [in] uint32 pathflags, - [out] uint32 pathtype + [out,ref] uint32 *pathtype ); /******************/ -- cgit From 31b067a6dd8bd702801779755f24cc20ce0541f7 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 14:19:14 +0100 Subject: s4-srvsvc: merge srvsvc_NetShareCheck from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 10 +++++----- source4/torture/rpc/srvsvc.c | 2 ++ 3 files changed, 8 insertions(+), 6 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index a3faaad1fd..f925fe9258 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -620,7 +620,7 @@ import "security.idl", "svcctl.idl"; WERROR srvsvc_NetShareCheck( [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] [string,charset(UTF16)] uint16 device_name[], - [out] srvsvc_ShareType type + [out,ref] srvsvc_ShareType *type ); /**************************/ diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index 8a5f6708c3..edb48cee29 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -1395,13 +1395,13 @@ static WERROR dcesrv_srvsvc_NetShareCheck(struct dcesrv_call_state *dce_call, TA const char **names; int count, i; - ZERO_STRUCT(r->out); + *r->out.type = 0; /* TODO: - access check */ if (strcmp("", r->in.device_name) == 0) { - r->out.type = STYPE_IPC; + *r->out.type = STYPE_IPC; return WERR_OK; } @@ -1440,17 +1440,17 @@ static WERROR dcesrv_srvsvc_NetShareCheck(struct dcesrv_call_state *dce_call, TA if (!type) continue; if (strcmp(type, "DISK") == 0) { - r->out.type = STYPE_DISKTREE; + *r->out.type = STYPE_DISKTREE; return WERR_OK; } if (strcmp(type, "IPC") == 0) { - r->out.type = STYPE_IPC; + *r->out.type = STYPE_IPC; return WERR_OK; } if (strcmp(type, "PRINTER") == 0) { - r->out.type = STYPE_PRINTQ; + *r->out.type = STYPE_PRINTQ; return WERR_OK; } } diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index 4ddab75883..55352278e7 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -362,9 +362,11 @@ static bool test_NetShareCheck(struct dcerpc_pipe *p, struct torture_context *tc { NTSTATUS status; struct srvsvc_NetShareCheck r; + enum srvsvc_ShareType type; r.in.server_unc = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p)); r.in.device_name = device_name; + r.out.type = &type; torture_comment(tctx, "testing NetShareCheck on device '%s'\n", r.in.device_name); -- cgit From 70c9cb4d9bb9e211f2e3474df47e001bd959b056 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 14:24:18 +0100 Subject: s4-srvsvc: merge srvsvc_NetServerStatisticsGet from s3 idl. Guenther --- source3/librpc/idl/srvsvc.idl | 2 +- source4/librpc/idl/srvsvc.idl | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source3/librpc/idl/srvsvc.idl b/source3/librpc/idl/srvsvc.idl index c60b4a4ce5..bd43bb7cc6 100644 --- a/source3/librpc/idl/srvsvc.idl +++ b/source3/librpc/idl/srvsvc.idl @@ -1210,7 +1210,7 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *service, [in] uint32 level, [in] uint32 options, - [out,ref] srvsvc_Statistics *stats + [out,ref] srvsvc_Statistics **stats ); /**************************/ diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index f925fe9258..c5d1debc0a 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1204,7 +1204,7 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *service, [in] uint32 level, [in] uint32 options, - [out] srvsvc_Statistics stat + [out,ref] srvsvc_Statistics **stats ); /**************************/ -- cgit From 3206f3552791f1806eec3a6d4bdc55857da4b264 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 14:52:49 +0100 Subject: s4-srvsvc: merge srvsvc_NetShareAdd from s3 idl. Guenther --- source4/libnet/libnet_share.c | 5 +++- source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 44 +++++++++++++++---------------- source4/torture/libnet/libnet_share.c | 5 +++- source4/torture/rpc/srvsvc.c | 22 +++++++++------- 5 files changed, 43 insertions(+), 35 deletions(-) diff --git a/source4/libnet/libnet_share.c b/source4/libnet/libnet_share.c index e24ba8161a..5affb27ead 100644 --- a/source4/libnet/libnet_share.c +++ b/source4/libnet/libnet_share.c @@ -115,6 +115,7 @@ NTSTATUS libnet_AddShare(struct libnet_context *ctx, NTSTATUS status; struct libnet_RpcConnect c; struct srvsvc_NetShareAdd s; + union srvsvc_NetShareInfo info; c.level = LIBNET_RPC_CONNECT_SERVER; c.in.name = r->in.server_name; @@ -129,8 +130,10 @@ NTSTATUS libnet_AddShare(struct libnet_context *ctx, return status; } + info.info2 = &r->in.share; + s.in.level = 2; - s.in.info.info2 = &r->in.share; + s.in.info = &info; s.in.server_unc = talloc_asprintf(mem_ctx, "\\\\%s", r->in.server_name); status = dcerpc_srvsvc_NetShareAdd(c.out.dcerpc_pipe, mem_ctx, &s); diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index c5d1debc0a..f74bf1205a 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -565,7 +565,7 @@ import "security.idl", "svcctl.idl"; WERROR srvsvc_NetShareAdd( [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] uint32 level, - [in,switch_is(level)] srvsvc_NetShareInfo info, + [in,ref,switch_is(level)] srvsvc_NetShareInfo *info, [in,out,unique] uint32 *parm_error ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index edb48cee29..b58efbd61a 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -458,7 +458,7 @@ static WERROR dcesrv_srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALL info[i].name = SHARE_TYPE; info[i].type = SHARE_INFO_STRING; - switch (r->in.info.info2->type) { + switch (r->in.info->info2->type) { case 0x00: info[i].value = talloc_strdup(info, "DISK"); break; @@ -474,16 +474,16 @@ static WERROR dcesrv_srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALL W_ERROR_HAVE_NO_MEMORY(info[i].value); i++; - if (r->in.info.info2->path && r->in.info.info2->path[0]) { + if (r->in.info->info2->path && r->in.info->info2->path[0]) { info[i].name = SHARE_PATH; info[i].type = SHARE_INFO_STRING; /* Windows will send a path in a form of C:\example\path */ - if (r->in.info.info2->path[1] == ':') { - info[i].value = talloc_strdup(info, &r->in.info.info2->path[2]); + if (r->in.info->info2->path[1] == ':') { + info[i].value = talloc_strdup(info, &r->in.info->info2->path[2]); } else { /* very strange let's try to set as is */ - info[i].value = talloc_strdup(info, r->in.info.info2->path); + info[i].value = talloc_strdup(info, r->in.info->info2->path); } W_ERROR_HAVE_NO_MEMORY(info[i].value); all_string_sub((char *)info[i].value, "\\", "/", 0); @@ -491,19 +491,19 @@ static WERROR dcesrv_srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALL i++; } - if (r->in.info.info2->comment && r->in.info.info2->comment[0]) { + if (r->in.info->info2->comment && r->in.info->info2->comment[0]) { info[i].name = SHARE_COMMENT; info[i].type = SHARE_INFO_STRING; - info[i].value = talloc_strdup(info, r->in.info.info2->comment); + info[i].value = talloc_strdup(info, r->in.info->info2->comment); W_ERROR_HAVE_NO_MEMORY(info[i].value); i++; } - if (r->in.info.info2->password && r->in.info.info2->password[0]) { + if (r->in.info->info2->password && r->in.info->info2->password[0]) { info[i].name = SHARE_PASSWORD; info[i].type = SHARE_INFO_STRING; - info[i].value = talloc_strdup(info, r->in.info.info2->password); + info[i].value = talloc_strdup(info, r->in.info->info2->password); W_ERROR_HAVE_NO_MEMORY(info[i].value); i++; @@ -512,12 +512,12 @@ static WERROR dcesrv_srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALL info[i].name = SHARE_MAX_CONNECTIONS; info[i].type = SHARE_INFO_INT; info[i].value = talloc(info, int); - *((int *)info[i].value) = r->in.info.info2->max_users; + *((int *)info[i].value) = r->in.info->info2->max_users; i++; /* TODO: security descriptor */ - nterr = share_create(sctx, r->in.info.info2->name, info, i); + nterr = share_create(sctx, r->in.info->info2->name, info, i); if (!NT_STATUS_IS_OK(nterr)) { return ntstatus_to_werror(nterr); } @@ -556,7 +556,7 @@ static WERROR dcesrv_srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALL info[i].name = SHARE_TYPE; info[i].type = SHARE_INFO_STRING; - switch (r->in.info.info502->type) { + switch (r->in.info->info502->type) { case 0x00: info[i].value = talloc_strdup(info, "DISK"); break; @@ -572,16 +572,16 @@ static WERROR dcesrv_srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALL W_ERROR_HAVE_NO_MEMORY(info[i].value); i++; - if (r->in.info.info502->path && r->in.info.info502->path[0]) { + if (r->in.info->info502->path && r->in.info->info502->path[0]) { info[i].name = SHARE_PATH; info[i].type = SHARE_INFO_STRING; /* Windows will send a path in a form of C:\example\path */ - if (r->in.info.info502->path[1] == ':') { - info[i].value = talloc_strdup(info, &r->in.info.info502->path[2]); + if (r->in.info->info502->path[1] == ':') { + info[i].value = talloc_strdup(info, &r->in.info->info502->path[2]); } else { /* very strange let's try to set as is */ - info[i].value = talloc_strdup(info, r->in.info.info502->path); + info[i].value = talloc_strdup(info, r->in.info->info502->path); } W_ERROR_HAVE_NO_MEMORY(info[i].value); all_string_sub((char *)info[i].value, "\\", "/", 0); @@ -589,19 +589,19 @@ static WERROR dcesrv_srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALL i++; } - if (r->in.info.info502->comment && r->in.info.info502->comment[0]) { + if (r->in.info->info502->comment && r->in.info->info502->comment[0]) { info[i].name = SHARE_COMMENT; info[i].type = SHARE_INFO_STRING; - info[i].value = talloc_strdup(info, r->in.info.info502->comment); + info[i].value = talloc_strdup(info, r->in.info->info502->comment); W_ERROR_HAVE_NO_MEMORY(info[i].value); i++; } - if (r->in.info.info502->password && r->in.info.info502->password[0]) { + if (r->in.info->info502->password && r->in.info->info502->password[0]) { info[i].name = SHARE_PASSWORD; info[i].type = SHARE_INFO_STRING; - info[i].value = talloc_strdup(info, r->in.info.info502->password); + info[i].value = talloc_strdup(info, r->in.info->info502->password); W_ERROR_HAVE_NO_MEMORY(info[i].value); i++; @@ -610,12 +610,12 @@ static WERROR dcesrv_srvsvc_NetShareAdd(struct dcesrv_call_state *dce_call, TALL info[i].name = SHARE_MAX_CONNECTIONS; info[i].type = SHARE_INFO_INT; info[i].value = talloc(info, int); - *((int *)info[i].value) = r->in.info.info502->max_users; + *((int *)info[i].value) = r->in.info->info502->max_users; i++; /* TODO: security descriptor */ - nterr = share_create(sctx, r->in.info.info502->name, info, i); + nterr = share_create(sctx, r->in.info->info502->name, info, i); if (!NT_STATUS_IS_OK(nterr)) { return ntstatus_to_werror(nterr); } diff --git a/source4/torture/libnet/libnet_share.c b/source4/torture/libnet/libnet_share.c index 76a29851e1..e49461357a 100644 --- a/source4/torture/libnet/libnet_share.c +++ b/source4/torture/libnet/libnet_share.c @@ -170,6 +170,7 @@ static bool test_addshare(struct dcerpc_pipe *svc_pipe, TALLOC_CTX *mem_ctx, con { NTSTATUS status; struct srvsvc_NetShareAdd add; + union srvsvc_NetShareInfo info; struct srvsvc_NetShareInfo2 i; i.name = share; @@ -180,9 +181,11 @@ static bool test_addshare(struct dcerpc_pipe *svc_pipe, TALLOC_CTX *mem_ctx, con i.password = NULL; i.permissions = 0x0; + info.info2 = &i; + add.in.server_unc = host; add.in.level = 2; - add.in.info.info2 = &i; + add.in.info = &info; add.in.parm_error = NULL; status = dcerpc_srvsvc_NetShareAdd(svc_pipe, mem_ctx, &add); diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index 55352278e7..b890f11ab8 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -447,6 +447,7 @@ static bool test_NetShareAddSetDel(struct torture_context *tctx, struct srvsvc_NetShareGetInfo q; struct srvsvc_NetShareDel d; struct sec_desc_buf sd_buf; + union srvsvc_NetShareInfo info; struct { uint32_t level; WERROR expected; @@ -468,17 +469,18 @@ static bool test_NetShareAddSetDel(struct torture_context *tctx, talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p)); r.in.share_name = talloc_strdup(tctx, "testshare"); + info.info2 = talloc(tctx, struct srvsvc_NetShareInfo2); + info.info2->name = r.in.share_name; + info.info2->type = STYPE_DISKTREE; + info.info2->comment = talloc_strdup(tctx, "test comment"); + info.info2->permissions = 123434566; + info.info2->max_users = -1; + info.info2->current_users = 0; + info.info2->path = talloc_strdup(tctx, "C:\\"); + info.info2->password = NULL; + + a.in.info = &info; a.in.level = 2; - a.in.info.info2 = talloc(tctx, struct srvsvc_NetShareInfo2); - a.in.info.info2->name = r.in.share_name; - a.in.info.info2->type = STYPE_DISKTREE; - a.in.info.info2->comment = talloc_strdup(tctx, "test comment"); - a.in.info.info2->permissions = 123434566; - a.in.info.info2->max_users = -1; - a.in.info.info2->current_users = 0; - a.in.info.info2->path = talloc_strdup(tctx, "C:\\"); - a.in.info.info2->password = NULL; - a.in.parm_error = NULL; status = dcerpc_srvsvc_NetShareAdd(p, tctx, &a); -- cgit From 523732ed2d33f61d35774aa3f771a890cb663035 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 15:11:27 +0100 Subject: s4-srvsvc: merge srvsvc_NetShareSetInfo from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 44 +++++++-------- source4/torture/rpc/samba3rpc.c | 4 +- source4/torture/rpc/srvsvc.c | 94 ++++++++++++++++--------------- 4 files changed, 74 insertions(+), 70 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index f74bf1205a..77224ee188 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -595,7 +595,7 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] [string,charset(UTF16)] uint16 share_name[], [in] uint32 level, - [in,switch_is(level)] srvsvc_NetShareInfo info, + [in,ref,switch_is(level)] srvsvc_NetShareInfo *info, [in,out,unique] uint32 *parm_error ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index b58efbd61a..ced2fb5137 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -1247,7 +1247,7 @@ static WERROR dcesrv_srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, { status = dcesrv_srvsvc_fill_share_info(info, &count, r->in.share_name, r->in.level, - r->in.info.info0->name, + r->in.info->info0->name, NULL, NULL, NULL, @@ -1264,11 +1264,11 @@ static WERROR dcesrv_srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, { status = dcesrv_srvsvc_fill_share_info(info, &count, r->in.share_name, r->in.level, - r->in.info.info1->name, + r->in.info->info1->name, NULL, - r->in.info.info1->comment, + r->in.info->info1->comment, NULL, - r->in.info.info1->type, + r->in.info->info1->type, 0, 0, NULL); @@ -1281,12 +1281,12 @@ static WERROR dcesrv_srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, { status = dcesrv_srvsvc_fill_share_info(info, &count, r->in.share_name, r->in.level, - r->in.info.info2->name, - r->in.info.info2->path, - r->in.info.info2->comment, - r->in.info.info2->password, - r->in.info.info2->type, - r->in.info.info2->max_users, + r->in.info->info2->name, + r->in.info->info2->path, + r->in.info->info2->comment, + r->in.info->info2->password, + r->in.info->info2->type, + r->in.info->info2->max_users, 0, NULL); if (W_ERROR_EQUAL(status, WERR_OK)) { @@ -1298,13 +1298,13 @@ static WERROR dcesrv_srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, { status = dcesrv_srvsvc_fill_share_info(info, &count, r->in.share_name, r->in.level, - r->in.info.info501->name, + r->in.info->info501->name, NULL, - r->in.info.info501->comment, + r->in.info->info501->comment, NULL, - r->in.info.info501->type, + r->in.info->info501->type, 0, - r->in.info.info501->csc_policy, + r->in.info->info501->csc_policy, NULL); if (W_ERROR_EQUAL(status, WERR_OK)) { return status; @@ -1315,14 +1315,14 @@ static WERROR dcesrv_srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, { status = dcesrv_srvsvc_fill_share_info(info, &count, r->in.share_name, r->in.level, - r->in.info.info502->name, - r->in.info.info502->path, - r->in.info.info502->comment, - r->in.info.info502->password, - r->in.info.info502->type, - r->in.info.info502->max_users, + r->in.info->info502->name, + r->in.info->info502->path, + r->in.info->info502->comment, + r->in.info->info502->password, + r->in.info->info502->type, + r->in.info->info502->max_users, 0, - r->in.info.info502->sd_buf.sd); + r->in.info->info502->sd_buf.sd); if (W_ERROR_EQUAL(status, WERR_OK)) { return status; } @@ -1334,7 +1334,7 @@ static WERROR dcesrv_srvsvc_NetShareSetInfo(struct dcesrv_call_state *dce_call, r->in.share_name, r->in.level, NULL, NULL, - r->in.info.info1004->comment, + r->in.info->info1004->comment, NULL, 0, 0, diff --git a/source4/torture/rpc/samba3rpc.c b/source4/torture/rpc/samba3rpc.c index 5aff213533..e04400ef05 100644 --- a/source4/torture/rpc/samba3rpc.c +++ b/source4/torture/rpc/samba3rpc.c @@ -2170,6 +2170,7 @@ static NTSTATUS set_sharesec(TALLOC_CTX *mem_ctx, NTSTATUS status; struct sec_desc_buf i; struct srvsvc_NetShareSetInfo r; + union srvsvc_NetShareInfo info; uint32_t error = 0; if (!(tmp_ctx = talloc_new(mem_ctx))) { @@ -2201,7 +2202,8 @@ static NTSTATUS set_sharesec(TALLOC_CTX *mem_ctx, r.in.share_name = sharename; r.in.level = 1501; i.sd = sd; - r.in.info.info1501 = &i; + info.info1501 = &i; + r.in.info = &info; r.in.parm_error = &error; status = dcerpc_srvsvc_NetShareSetInfo(p, tmp_ctx, &r); diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index b890f11ab8..4a61ba5acd 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -501,69 +501,71 @@ static bool test_NetShareAddSetDel(struct torture_context *tctx, switch (levels[i].level) { case 0: - r.in.info.info0 = talloc(tctx, struct srvsvc_NetShareInfo0); - r.in.info.info0->name = r.in.share_name; + info.info0 = talloc(tctx, struct srvsvc_NetShareInfo0); + info.info0->name = r.in.share_name; break; case 1: - r.in.info.info1 = talloc(tctx, struct srvsvc_NetShareInfo1); - r.in.info.info1->name = r.in.share_name; - r.in.info.info1->type = STYPE_DISKTREE; - r.in.info.info1->comment = talloc_strdup(tctx, "test comment 1"); + info.info1 = talloc(tctx, struct srvsvc_NetShareInfo1); + info.info1->name = r.in.share_name; + info.info1->type = STYPE_DISKTREE; + info.info1->comment = talloc_strdup(tctx, "test comment 1"); break; case 2: - r.in.info.info2 = talloc(tctx, struct srvsvc_NetShareInfo2); - r.in.info.info2->name = r.in.share_name; - r.in.info.info2->type = STYPE_DISKTREE; - r.in.info.info2->comment = talloc_strdup(tctx, "test comment 2"); - r.in.info.info2->permissions = 0; - r.in.info.info2->max_users = 2; - r.in.info.info2->current_users = 1; - r.in.info.info2->path = talloc_strdup(tctx, "::BLaH::"); /* "C:\\"); */ - r.in.info.info2->password = NULL; + info.info2 = talloc(tctx, struct srvsvc_NetShareInfo2); + info.info2->name = r.in.share_name; + info.info2->type = STYPE_DISKTREE; + info.info2->comment = talloc_strdup(tctx, "test comment 2"); + info.info2->permissions = 0; + info.info2->max_users = 2; + info.info2->current_users = 1; + info.info2->path = talloc_strdup(tctx, "::BLaH::"); /* "C:\\"); */ + info.info2->password = NULL; break; case 501: - r.in.info.info501 = talloc(tctx, struct srvsvc_NetShareInfo501); - r.in.info.info501->name = r.in.share_name; - r.in.info.info501->type = STYPE_DISKTREE; - r.in.info.info501->comment = talloc_strdup(tctx, "test comment 501"); - r.in.info.info501->csc_policy = 0; + info.info501 = talloc(tctx, struct srvsvc_NetShareInfo501); + info.info501->name = r.in.share_name; + info.info501->type = STYPE_DISKTREE; + info.info501->comment = talloc_strdup(tctx, "test comment 501"); + info.info501->csc_policy = 0; break; case 502: ZERO_STRUCT(sd_buf); - r.in.info.info502 = talloc(tctx, struct srvsvc_NetShareInfo502); - r.in.info.info502->name = r.in.share_name; - r.in.info.info502->type = STYPE_DISKTREE; - r.in.info.info502->comment = talloc_strdup(tctx, "test comment 502"); - r.in.info.info502->permissions = 0; - r.in.info.info502->max_users = 502; - r.in.info.info502->current_users = 1; - r.in.info.info502->path = talloc_strdup(tctx, "C:\\"); - r.in.info.info502->password = NULL; - r.in.info.info502->sd_buf = sd_buf; + info.info502 = talloc(tctx, struct srvsvc_NetShareInfo502); + info.info502->name = r.in.share_name; + info.info502->type = STYPE_DISKTREE; + info.info502->comment = talloc_strdup(tctx, "test comment 502"); + info.info502->permissions = 0; + info.info502->max_users = 502; + info.info502->current_users = 1; + info.info502->path = talloc_strdup(tctx, "C:\\"); + info.info502->password = NULL; + info.info502->sd_buf = sd_buf; break; case 1004: - r.in.info.info1004 = talloc(tctx, struct srvsvc_NetShareInfo1004); - r.in.info.info1004->comment = talloc_strdup(tctx, "test comment 1004"); + info.info1004 = talloc(tctx, struct srvsvc_NetShareInfo1004); + info.info1004->comment = talloc_strdup(tctx, "test comment 1004"); break; case 1005: - r.in.info.info1005 = talloc(tctx, struct srvsvc_NetShareInfo1005); - r.in.info.info1005->dfs_flags = 0; + info.info1005 = talloc(tctx, struct srvsvc_NetShareInfo1005); + info.info1005->dfs_flags = 0; break; case 1006: - r.in.info.info1006 = talloc(tctx, struct srvsvc_NetShareInfo1006); - r.in.info.info1006->max_users = 1006; + info.info1006 = talloc(tctx, struct srvsvc_NetShareInfo1006); + info.info1006->max_users = 1006; break; /* case 1007: - r.in.info.info1007 = talloc(tctx, struct srvsvc_NetShareInfo1007); - r.in.info.info1007->flags = 0; - r.in.info.info1007->alternate_directory_name = talloc_strdup(tctx, "test"); + info.info1007 = talloc(tctx, struct srvsvc_NetShareInfo1007); + info.info1007->flags = 0; + info.info1007->alternate_directory_name = talloc_strdup(tctx, "test"); break; */ case 1501: - r.in.info.info1501 = talloc_zero(tctx, struct sec_desc_buf); + info.info1501 = talloc_zero(tctx, struct sec_desc_buf); break; } - + + r.in.info = &info; + status = dcerpc_srvsvc_NetShareSetInfo(p, tctx, &r); torture_assert_ntstatus_ok(tctx, status, "NetShareGetInfo failed"); torture_assert_werr_equal(tctx, r.out.result, levels[i].expected, "NetShareSetInfo failed"); @@ -584,7 +586,7 @@ static bool test_NetShareAddSetDel(struct torture_context *tctx, torture_assert_str_equal(tctx, q.out.info.info502->comment, "test comment 1", "comment"); break; case 2: - torture_assert_str_equal(tctx, q.out.info.info502->comment, "test comment 2", "comment"); + torture_assert_str_equal(tctx, q.out.info.info2->comment, "test comment 2", "comment"); torture_assert_int_equal(tctx, q.out.info.info2->max_users, 2, "max users"); torture_assert_str_equal(tctx, q.out.info.info2->path, "C:\\", "path"); break; @@ -593,17 +595,17 @@ static bool test_NetShareAddSetDel(struct torture_context *tctx, break; case 502: torture_assert_str_equal(tctx, q.out.info.info502->comment, "test comment 502", "comment"); - torture_assert_int_equal(tctx, q.out.info.info2->max_users, 502, "max users"); - torture_assert_str_equal(tctx, q.out.info.info2->path, "C:\\", "path"); + torture_assert_int_equal(tctx, q.out.info.info502->max_users, 502, "max users"); + torture_assert_str_equal(tctx, q.out.info.info502->path, "C:\\", "path"); break; case 1004: - torture_assert_str_equal(tctx, q.out.info.info502->comment, "test comment 1004", + torture_assert_str_equal(tctx, q.out.info.info1004->comment, "test comment 1004", "comment"); break; case 1005: break; case 1006: - torture_assert_int_equal(tctx, q.out.info.info2->max_users, 1006, "Max users"); + torture_assert_int_equal(tctx, q.out.info.info1006->max_users, 1006, "Max users"); break; /* case 1007: break; -- cgit From 227c6ed8ea366f6dc0559cd6bb21254e42d2b22c Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 15:38:18 +0100 Subject: s4-srvsvc: merge srvsvc_NetShareGetInfo from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 14 +++++++------- source4/torture/rpc/samba3rpc.c | 18 +++++++++++------- source4/torture/rpc/srvsvc.c | 30 ++++++++++++++++-------------- 4 files changed, 35 insertions(+), 29 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 77224ee188..e40cc205f9 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -586,7 +586,7 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] [string,charset(UTF16)] uint16 share_name[], [in] uint32 level, - [out,switch_is(level)] srvsvc_NetShareInfo info + [out,ref,switch_is(level)] srvsvc_NetShareInfo *info ); /******************/ diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index ced2fb5137..19051c9c3e 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -974,7 +974,7 @@ static WERROR dcesrv_srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, struct share_context *sctx = NULL; struct share_config *scfg = NULL; - ZERO_STRUCT(r->out); + ZERO_STRUCTP(r->out.info); /* TODO: - access check */ @@ -1007,7 +1007,7 @@ static WERROR dcesrv_srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, return status; } - r->out.info.info0 = info.info0; + r->out.info->info0 = info.info0; return WERR_OK; } case 1: @@ -1023,7 +1023,7 @@ static WERROR dcesrv_srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, return status; } - r->out.info.info1 = info.info1; + r->out.info->info1 = info.info1; return WERR_OK; } case 2: @@ -1041,7 +1041,7 @@ static WERROR dcesrv_srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, return status; } - r->out.info.info2 = info.info2; + r->out.info->info2 = info.info2; return WERR_OK; } case 501: @@ -1057,7 +1057,7 @@ static WERROR dcesrv_srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, return status; } - r->out.info.info501 = info.info501; + r->out.info->info501 = info.info501; return WERR_OK; } case 502: @@ -1075,7 +1075,7 @@ static WERROR dcesrv_srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, return status; } - r->out.info.info502 = info.info502; + r->out.info->info502 = info.info502; return WERR_OK; } case 1005: @@ -1091,7 +1091,7 @@ static WERROR dcesrv_srvsvc_NetShareGetInfo(struct dcesrv_call_state *dce_call, return status; } - r->out.info.info1005 = info.info1005; + r->out.info->info1005 = info.info1005; return WERR_OK; } default: diff --git a/source4/torture/rpc/samba3rpc.c b/source4/torture/rpc/samba3rpc.c index e04400ef05..bd23327e70 100644 --- a/source4/torture/rpc/samba3rpc.c +++ b/source4/torture/rpc/samba3rpc.c @@ -1866,6 +1866,7 @@ static bool test_NetShareGetInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, { NTSTATUS status; struct srvsvc_NetShareGetInfo r; + union srvsvc_NetShareInfo info; uint32_t levels[] = { 0, 1, 2, 501, 502, 1004, 1005, 1006, 1007, 1501 }; int i; bool ret = true; @@ -1873,12 +1874,11 @@ static bool test_NetShareGetInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, r.in.server_unc = talloc_asprintf(mem_ctx, "\\\\%s", dcerpc_server_name(p)); r.in.share_name = sharename; + r.out.info = &info; for (i=0;isd_buf.sd); + result = talloc_steal(mem_ctx, info.info502->sd_buf.sd); talloc_free(tmp_ctx); return result; } @@ -2208,7 +2210,7 @@ static NTSTATUS set_sharesec(TALLOC_CTX *mem_ctx, status = dcerpc_srvsvc_NetShareSetInfo(p, tmp_ctx, &r); if (!NT_STATUS_IS_OK(status)) { - d_printf("srvsvc_NetShareGetInfo failed: %s\n", + d_printf("srvsvc_NetShareSetInfo failed: %s\n", nt_errstr(status)); } @@ -3105,11 +3107,12 @@ static NTSTATUS get_shareinfo(TALLOC_CTX *mem_ctx, struct loadparm_context *lp_ctx, struct smbcli_state *cli, const char *share, - struct srvsvc_NetShareInfo502 **info) + struct srvsvc_NetShareInfo502 **info502) { struct smbcli_tree *ipc; struct dcerpc_pipe *p; struct srvsvc_NetShareGetInfo r; + union srvsvc_NetShareInfo info; NTSTATUS status; if (!(p = dcerpc_pipe_init(cli, @@ -3142,15 +3145,16 @@ static NTSTATUS get_shareinfo(TALLOC_CTX *mem_ctx, dcerpc_server_name(p)); r.in.share_name = share; r.in.level = 502; + r.out.info = &info; status = dcerpc_srvsvc_NetShareGetInfo(p, p, &r); if (!NT_STATUS_IS_OK(status) || !W_ERROR_IS_OK(r.out.result)) { - d_printf("(%s) OpenHKLM failed: %s, %s\n", __location__, + d_printf("(%s) srvsvc_NetShareGetInfo failed: %s, %s\n", __location__, nt_errstr(status), win_errstr(r.out.result)); goto fail; } - *info = talloc_move(mem_ctx, &r.out.info.info502); + *info502 = talloc_move(mem_ctx, &info.info502); return NT_STATUS_OK; fail: diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index 4a61ba5acd..3e584aaba5 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -384,6 +384,7 @@ static bool test_NetShareGetInfo(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetShareGetInfo r; + union srvsvc_NetShareInfo info; struct { uint32_t level; WERROR anon_status; @@ -400,6 +401,7 @@ static bool test_NetShareGetInfo(struct torture_context *tctx, r.in.server_unc = talloc_asprintf(tctx, "\\\\%s", dcerpc_server_name(p)); r.in.share_name = sharename; + r.out.info = &info; for (i=0;ipath) continue; - if (!test_NetShareCheck(p, tctx, r.out.info.info2->path)) { + if (!r.out.info->info2 || !r.out.info->info2->path) continue; + if (!test_NetShareCheck(p, tctx, r.out.info->info2->path)) { return false; } } @@ -571,41 +572,42 @@ static bool test_NetShareAddSetDel(struct torture_context *tctx, torture_assert_werr_equal(tctx, r.out.result, levels[i].expected, "NetShareSetInfo failed"); q.in.share_name = r.in.share_name; + q.out.info = &info; status = dcerpc_srvsvc_NetShareGetInfo(p, tctx, &q); torture_assert_ntstatus_ok(tctx, status, "NetShareGetInfo failed"); torture_assert_werr_ok(tctx, q.out.result, "NetShareGetInfo failed"); - torture_assert_str_equal(tctx, q.out.info.info502->name, r.in.share_name, + torture_assert_str_equal(tctx, q.out.info->info502->name, r.in.share_name, "share name invalid"); switch (levels[i].level) { case 0: break; case 1: - torture_assert_str_equal(tctx, q.out.info.info502->comment, "test comment 1", "comment"); + torture_assert_str_equal(tctx, q.out.info->info502->comment, "test comment 1", "comment"); break; case 2: - torture_assert_str_equal(tctx, q.out.info.info2->comment, "test comment 2", "comment"); - torture_assert_int_equal(tctx, q.out.info.info2->max_users, 2, "max users"); - torture_assert_str_equal(tctx, q.out.info.info2->path, "C:\\", "path"); + torture_assert_str_equal(tctx, q.out.info->info2->comment, "test comment 2", "comment"); + torture_assert_int_equal(tctx, q.out.info->info2->max_users, 2, "max users"); + torture_assert_str_equal(tctx, q.out.info->info2->path, "C:\\", "path"); break; case 501: - torture_assert_str_equal(tctx, q.out.info.info501->comment, "test comment 501", "comment"); + torture_assert_str_equal(tctx, q.out.info->info501->comment, "test comment 501", "comment"); break; case 502: - torture_assert_str_equal(tctx, q.out.info.info502->comment, "test comment 502", "comment"); - torture_assert_int_equal(tctx, q.out.info.info502->max_users, 502, "max users"); - torture_assert_str_equal(tctx, q.out.info.info502->path, "C:\\", "path"); + torture_assert_str_equal(tctx, q.out.info->info502->comment, "test comment 502", "comment"); + torture_assert_int_equal(tctx, q.out.info->info502->max_users, 502, "max users"); + torture_assert_str_equal(tctx, q.out.info->info502->path, "C:\\", "path"); break; case 1004: - torture_assert_str_equal(tctx, q.out.info.info1004->comment, "test comment 1004", + torture_assert_str_equal(tctx, q.out.info->info1004->comment, "test comment 1004", "comment"); break; case 1005: break; case 1006: - torture_assert_int_equal(tctx, q.out.info.info1006->max_users, 1006, "Max users"); + torture_assert_int_equal(tctx, q.out.info->info1006->max_users, 1006, "Max users"); break; /* case 1007: break; -- cgit From 8859e9a9042d94e73257137ae57b55ef418590cb Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 15:53:27 +0100 Subject: s4-srvsvc: merge srvsvc_NetTransportDel from s3 idl. Guenther --- source3/librpc/idl/srvsvc.idl | 4 ++-- source4/librpc/idl/srvsvc.idl | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/source3/librpc/idl/srvsvc.idl b/source3/librpc/idl/srvsvc.idl index bd43bb7cc6..f917065b09 100644 --- a/source3/librpc/idl/srvsvc.idl +++ b/source3/librpc/idl/srvsvc.idl @@ -1306,8 +1306,8 @@ import "security.idl", "svcctl.idl"; /* Function: 0x1b */ WERROR srvsvc_NetTransportDel( [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 unknown, - [in] srvsvc_NetTransportInfo0 transport + [in] uint32 level, + [in] srvsvc_NetTransportInfo0 *info0 ); /**************************/ diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index e40cc205f9..1784fd9383 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1301,7 +1301,7 @@ import "security.idl", "svcctl.idl"; WERROR srvsvc_NetTransportDel( [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] uint32 level, - [in,switch_is(level)] srvsvc_NetTransportInfo info + [in] srvsvc_NetTransportInfo0 *info0 ); /**************************/ -- cgit From d2cc4e63c570633c387f72cb977e3adcfc3a7ce8 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 16:33:47 +0100 Subject: s4-srvsvc: merge srvsvc_NetTransportEnum from s3 idl. Guenther --- source3/librpc/idl/srvsvc.idl | 8 ++++-- source4/librpc/idl/srvsvc.idl | 10 +++++--- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 42 ++++++++++++++++--------------- source4/torture/rpc/srvsvc.c | 29 +++++++++++++++------ 4 files changed, 57 insertions(+), 32 deletions(-) diff --git a/source3/librpc/idl/srvsvc.idl b/source3/librpc/idl/srvsvc.idl index f917065b09..4304dbed96 100644 --- a/source3/librpc/idl/srvsvc.idl +++ b/source3/librpc/idl/srvsvc.idl @@ -1291,12 +1291,16 @@ import "security.idl", "svcctl.idl"; [default]; } srvsvc_NetTransportCtr; + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetTransportCtr ctr; + } srvsvc_NetTransportInfoCtr; + /******************/ /* Function: 0x1a */ WERROR srvsvc_NetTransportEnum( [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out,ref] uint32 *level, - [in,out,ref,switch_is(*level)] srvsvc_NetTransportCtr *transports, + [in,out,ref] srvsvc_NetTransportInfoCtr *transports, [in] uint32 max_buffer, [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 1784fd9383..d636cdcea3 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1285,14 +1285,18 @@ import "security.idl", "svcctl.idl"; [default]; } srvsvc_NetTransportCtr; + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetTransportCtr ctr; + } srvsvc_NetTransportInfoCtr; + /******************/ /* Function: 0x1a */ WERROR srvsvc_NetTransportEnum( [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out] uint32 level, - [in,out,switch_is(level)] srvsvc_NetTransportCtr transports, + [in,out,ref] srvsvc_NetTransportInfoCtr *transports, [in] uint32 max_buffer, - [out] uint32 totalentries, + [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index 19051c9c3e..f0da2b099d 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -1617,48 +1617,50 @@ static WERROR dcesrv_srvsvc_NetTransportAdd(struct dcesrv_call_state *dce_call, static WERROR dcesrv_srvsvc_NetTransportEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct srvsvc_NetTransportEnum *r) { - r->out.level = r->in.level; - r->out.totalentries = 0; - r->out.resume_handle = NULL; + r->out.transports->level = r->in.transports->level; + *r->out.totalentries = 0; + if (r->out.resume_handle) { + *r->out.resume_handle = 0; + } - switch (r->in.level) { + switch (r->in.transports->level) { case 0: { - r->out.transports.ctr0 = talloc(mem_ctx, struct srvsvc_NetTransportCtr0); - W_ERROR_HAVE_NO_MEMORY(r->out.transports.ctr0); + r->out.transports->ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetTransportCtr0); + W_ERROR_HAVE_NO_MEMORY(r->out.transports->ctr.ctr0); - r->out.transports.ctr0->count = 0; - r->out.transports.ctr0->array = NULL; + r->out.transports->ctr.ctr0->count = 0; + r->out.transports->ctr.ctr0->array = NULL; return WERR_NOT_SUPPORTED; } case 1: { - r->out.transports.ctr1 = talloc(mem_ctx, struct srvsvc_NetTransportCtr1); - W_ERROR_HAVE_NO_MEMORY(r->out.transports.ctr1); + r->out.transports->ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetTransportCtr1); + W_ERROR_HAVE_NO_MEMORY(r->out.transports->ctr.ctr1); - r->out.transports.ctr1->count = 0; - r->out.transports.ctr1->array = NULL; + r->out.transports->ctr.ctr1->count = 0; + r->out.transports->ctr.ctr1->array = NULL; return WERR_NOT_SUPPORTED; } case 2: { - r->out.transports.ctr2 = talloc(mem_ctx, struct srvsvc_NetTransportCtr2); - W_ERROR_HAVE_NO_MEMORY(r->out.transports.ctr2); + r->out.transports->ctr.ctr2 = talloc(mem_ctx, struct srvsvc_NetTransportCtr2); + W_ERROR_HAVE_NO_MEMORY(r->out.transports->ctr.ctr2); - r->out.transports.ctr2->count = 0; - r->out.transports.ctr2->array = NULL; + r->out.transports->ctr.ctr2->count = 0; + r->out.transports->ctr.ctr2->array = NULL; return WERR_NOT_SUPPORTED; } case 3: { - r->out.transports.ctr3 = talloc(mem_ctx, struct srvsvc_NetTransportCtr3); - W_ERROR_HAVE_NO_MEMORY(r->out.transports.ctr3); + r->out.transports->ctr.ctr3 = talloc(mem_ctx, struct srvsvc_NetTransportCtr3); + W_ERROR_HAVE_NO_MEMORY(r->out.transports->ctr.ctr3); - r->out.transports.ctr3->count = 0; - r->out.transports.ctr3->array = NULL; + r->out.transports->ctr.ctr3->count = 0; + r->out.transports->ctr.ctr3->array = NULL; return WERR_NOT_SUPPORTED; } diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index 3e584aaba5..a6536faec7 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -826,21 +826,36 @@ static bool test_NetTransportEnum(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetTransportEnum r; - struct srvsvc_NetTransportCtr0 c0; + struct srvsvc_NetTransportInfoCtr transports; + struct srvsvc_NetTransportCtr0 ctr0; + struct srvsvc_NetTransportCtr1 ctr1; + + uint32_t totalentries = 0; uint32_t levels[] = {0, 1}; int i; + ZERO_STRUCT(transports); + r.in.server_unc = talloc_asprintf(tctx,"\\\\%s", dcerpc_server_name(p)); - r.in.transports.ctr0 = &c0; - r.in.transports.ctr0->count = 0; - r.in.transports.ctr0->array = NULL; + r.in.transports = &transports; r.in.max_buffer = (uint32_t)-1; r.in.resume_handle = NULL; + r.out.totalentries = &totalentries; + r.out.transports = &transports; for (i=0;i Date: Wed, 29 Oct 2008 19:28:11 +0100 Subject: s4-srvsvc: merge srvsvc_NetSrvSetInfo from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index d636cdcea3..1d5a678bbe 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1138,7 +1138,7 @@ import "security.idl", "svcctl.idl"; WERROR srvsvc_NetSrvSetInfo( [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] uint32 level, - [in,switch_is(level)] srvsvc_NetSrvInfo info, + [in,ref,switch_is(level)] srvsvc_NetSrvInfo *info, [in,out,unique] uint32 *parm_error ); -- cgit From c982b369308aba34d772159435fee28ab708fbda Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Wed, 29 Oct 2008 20:39:57 +0100 Subject: s4-srvsvc: merge srvsvc_NetSrvGetInfo from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 8 ++++---- source4/torture/rpc/srvsvc.c | 8 ++------ 3 files changed, 7 insertions(+), 11 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 1d5a678bbe..918c8ba0ca 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1130,7 +1130,7 @@ import "security.idl", "svcctl.idl"; WERROR srvsvc_NetSrvGetInfo( [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] uint32 level, - [out,switch_is(level)] srvsvc_NetSrvInfo info + [out,ref,switch_is(level)] srvsvc_NetSrvInfo *info ); /******************/ diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index f0da2b099d..d14d80b806 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -1468,7 +1468,7 @@ static WERROR dcesrv_srvsvc_NetSrvGetInfo(struct dcesrv_call_state *dce_call, TA { struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx; - ZERO_STRUCT(r->out); + ZERO_STRUCTP(r->out.info); switch (r->in.level) { case 100: @@ -1482,7 +1482,7 @@ static WERROR dcesrv_srvsvc_NetSrvGetInfo(struct dcesrv_call_state *dce_call, TA info100->server_name = dcesrv_common_get_server_name(mem_ctx, dce_ctx, r->in.server_unc); W_ERROR_HAVE_NO_MEMORY(info100->server_name); - r->out.info.info100 = info100; + r->out.info->info100 = info100; return WERR_OK; } case 101: @@ -1502,7 +1502,7 @@ static WERROR dcesrv_srvsvc_NetSrvGetInfo(struct dcesrv_call_state *dce_call, TA info101->comment = talloc_strdup(mem_ctx, lp_serverstring(dce_ctx->lp_ctx)); W_ERROR_HAVE_NO_MEMORY(info101->comment); - r->out.info.info101 = info101; + r->out.info->info101 = info101; return WERR_OK; } case 102: @@ -1531,7 +1531,7 @@ static WERROR dcesrv_srvsvc_NetSrvGetInfo(struct dcesrv_call_state *dce_call, TA info102->userpath = dcesrv_common_get_userpath(mem_ctx, dce_ctx); W_ERROR_HAVE_NO_MEMORY(info102->userpath); - r->out.info.info102 = info102; + r->out.info->info102 = info102; return WERR_OK; } default: diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index a6536faec7..8ce2321369 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -766,19 +766,15 @@ static bool test_NetSrvGetInfo(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetSrvGetInfo r; - struct srvsvc_NetSrvInfo503 i503; + union srvsvc_NetSrvInfo info; uint32_t levels[] = {100, 101, 102, 502, 503}; int i; - uint32_t resume_handle; - - ZERO_STRUCT(i503); r.in.server_unc = talloc_asprintf(tctx,"\\\\%s",dcerpc_server_name(p)); for (i=0;i Date: Wed, 29 Oct 2008 20:44:04 +0100 Subject: s4-srvsvc: merge srvsvc_NetCharDevGetInfo from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 2 +- source4/torture/rpc/srvsvc.c | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 918c8ba0ca..ae59365741 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -68,7 +68,7 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] [string,charset(UTF16)] uint16 device_name[], [in] uint32 level, - [out,switch_is(level)] srvsvc_NetCharDevInfo info + [out,ref,switch_is(level)] srvsvc_NetCharDevInfo *info ); /******************/ diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index d14d80b806..b5c0756a2b 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -82,7 +82,7 @@ static WERROR dcesrv_srvsvc_NetCharDevEnum(struct dcesrv_call_state *dce_call, T static WERROR dcesrv_srvsvc_NetCharDevGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct srvsvc_NetCharDevGetInfo *r) { - ZERO_STRUCT(r->out); + ZERO_STRUCTP(r->out.info); switch (r->in.level) { case 0: diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index 8ce2321369..0b53e3b066 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -32,14 +32,15 @@ static bool test_NetCharDevGetInfo(struct dcerpc_pipe *p, struct torture_context { NTSTATUS status; struct srvsvc_NetCharDevGetInfo r; + union srvsvc_NetCharDevInfo info; uint32_t levels[] = {0, 1}; int i; r.in.server_unc = talloc_asprintf(tctx,"\\\\%s",dcerpc_server_name(p)); r.in.device_name = devname; + r.out.info = &info; for (i=0;i Date: Wed, 29 Oct 2008 20:50:15 +0100 Subject: s4-srvsvc: merge srvsvc_NetCharDevQGetInfo from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 2 +- source4/torture/rpc/srvsvc.c | 3 ++- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index ae59365741..84d025ab29 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -135,7 +135,7 @@ import "security.idl", "svcctl.idl"; [in] [string,charset(UTF16)] uint16 queue_name[], [in] [string,charset(UTF16)] uint16 user[], [in] uint32 level, - [out,switch_is(level)] srvsvc_NetCharDevQInfo info + [out,switch_is(level),ref] srvsvc_NetCharDevQInfo *info ); /******************/ diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index b5c0756a2b..c08a7d3626 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -156,7 +156,7 @@ static WERROR dcesrv_srvsvc_NetCharDevQEnum(struct dcesrv_call_state *dce_call, static WERROR dcesrv_srvsvc_NetCharDevQGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct srvsvc_NetCharDevQGetInfo *r) { - ZERO_STRUCT(r->out); + ZERO_STRUCTP(r->out.info); switch (r->in.level) { case 0: diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index 0b53e3b066..2e78f8edf2 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -131,15 +131,16 @@ static bool test_NetCharDevQGetInfo(struct dcerpc_pipe *p, struct torture_contex { NTSTATUS status; struct srvsvc_NetCharDevQGetInfo r; + union srvsvc_NetCharDevQInfo info; uint32_t levels[] = {0, 1}; int i; r.in.server_unc = talloc_asprintf(tctx,"\\\\%s",dcerpc_server_name(p)); r.in.queue_name = devicequeue; r.in.user = talloc_asprintf(tctx,"Administrator"); + r.out.info = &info; for (i=0;i Date: Wed, 29 Oct 2008 20:53:28 +0100 Subject: s4-srvsvc: merge srvsvc_NetFileGetInfo from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 2 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 84d025ab29..bb186e1a94 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -274,7 +274,7 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] uint32 fid, [in] uint32 level, - [out,switch_is(level)] srvsvc_NetFileInfo info + [out,switch_is(level),ref] srvsvc_NetFileInfo *info ); /******************/ diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index c08a7d3626..9e43317ae8 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -308,7 +308,7 @@ static WERROR dcesrv_srvsvc_NetFileEnum(struct dcesrv_call_state *dce_call, TALL static WERROR dcesrv_srvsvc_NetFileGetInfo(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct srvsvc_NetFileGetInfo *r) { - ZERO_STRUCT(r->out); + ZERO_STRUCTP(r->out.info); switch (r->in.level) { case 2: -- cgit From 439f197a68e794a95e29f8c37b7d960bd7da420e Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 11:21:52 +0100 Subject: s4-srvsvc: merge srvsvc_NetDiskEnum from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 4 ++-- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 23 +++++++++++------------ source4/torture/rpc/srvsvc.c | 11 +++++++++-- 3 files changed, 22 insertions(+), 16 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index bb186e1a94..755339ecfe 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1168,9 +1168,9 @@ import "security.idl", "svcctl.idl"; WERROR srvsvc_NetDiskEnum( [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in] uint32 level, - [in,out] srvsvc_NetDiskInfo info, + [in,out,ref] srvsvc_NetDiskInfo *info, [in] uint32 maxlen, - [out] uint32 totalentries, + [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index 9e43317ae8..dc115547cf 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -1558,27 +1558,26 @@ static WERROR dcesrv_srvsvc_NetSrvSetInfo(struct dcesrv_call_state *dce_call, TA static WERROR dcesrv_srvsvc_NetDiskEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct srvsvc_NetDiskEnum *r) { - r->out.info.disks = NULL; - r->out.info.count = 0; - r->out.totalentries = 0; - r->out.resume_handle = NULL; + r->out.info->disks = NULL; + r->out.info->count = 0; + *r->out.totalentries = 0; switch (r->in.level) { case 0: { /* we can safely hardcode the reply and report we have only one disk (C:) */ /* for some reason Windows wants 2 entries with the second being empty */ - r->out.info.disks = talloc_array(mem_ctx, struct srvsvc_NetDiskInfo0, 2); - W_ERROR_HAVE_NO_MEMORY(r->out.info.disks); - r->out.info.count = 2; + r->out.info->disks = talloc_array(mem_ctx, struct srvsvc_NetDiskInfo0, 2); + W_ERROR_HAVE_NO_MEMORY(r->out.info->disks); + r->out.info->count = 2; - r->out.info.disks[0].disk = talloc_strdup(mem_ctx, "C:"); - W_ERROR_HAVE_NO_MEMORY(r->out.info.disks[0].disk); + r->out.info->disks[0].disk = talloc_strdup(mem_ctx, "C:"); + W_ERROR_HAVE_NO_MEMORY(r->out.info->disks[0].disk); - r->out.info.disks[1].disk = talloc_strdup(mem_ctx, ""); - W_ERROR_HAVE_NO_MEMORY(r->out.info.disks[1].disk); + r->out.info->disks[1].disk = talloc_strdup(mem_ctx, ""); + W_ERROR_HAVE_NO_MEMORY(r->out.info->disks[1].disk); - r->out.totalentries = 1; + *r->out.totalentries = 1; r->out.resume_handle = r->in.resume_handle; return WERR_OK; diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index 2e78f8edf2..b513ccc973 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -796,16 +796,23 @@ static bool test_NetDiskEnum(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetDiskEnum r; + struct srvsvc_NetDiskInfo info; + uint32_t totalentries = 0; uint32_t levels[] = {0}; int i; uint32_t resume_handle=0; - ZERO_STRUCT(r.in); + ZERO_STRUCT(info); + r.in.server_unc = NULL; r.in.resume_handle = &resume_handle; + r.in.info = &info; + r.out.info = &info; + r.out.totalentries = &totalentries; + r.out.resume_handle = &resume_handle; for (i=0;i Date: Thu, 30 Oct 2008 16:34:28 +0100 Subject: s4-srvsvc: merge srvsvc_NetCharDevEnum from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 12 ++++++++--- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 22 +++++++++----------- source4/torture/rpc/srvsvc.c | 34 +++++++++++++++++++++++-------- 3 files changed, 44 insertions(+), 24 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 755339ecfe..43f2004c23 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -51,14 +51,18 @@ import "security.idl", "svcctl.idl"; [default] ; } srvsvc_NetCharDevCtr; + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetCharDevCtr ctr; + } srvsvc_NetCharDevInfoCtr; + /******************/ /* Function: 0x00 */ WERROR srvsvc_NetCharDevEnum( [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out] uint32 level, - [in,out,switch_is(level)] srvsvc_NetCharDevCtr ctr, + [in,out,ref] srvsvc_NetCharDevInfoCtr *info_ctr, [in] uint32 max_buffer, - [out] uint32 totalentries, + [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle ); @@ -684,6 +688,7 @@ import "security.idl", "svcctl.idl"; uint32 sessreqs; uint32 opensearch; uint32 activelocks; + uint32 numreqbufs; uint32 sizereqbufs; uint32 numbigbufs; uint32 numfiletasks; @@ -717,6 +722,7 @@ import "security.idl", "svcctl.idl"; uint32 sessreqs; uint32 opensearch; uint32 activelocks; + uint32 numreqbufs; uint32 sizereqbufs; uint32 numbigbufs; uint32 numfiletasks; diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index dc115547cf..ce6172b2e7 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -45,26 +45,24 @@ static WERROR dcesrv_srvsvc_NetCharDevEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct srvsvc_NetCharDevEnum *r) { - r->out.level = r->in.level; - r->out.totalentries = 0; - r->out.resume_handle = NULL; + *r->out.totalentries = 0; - switch (r->in.level) { + switch (r->in.info_ctr->level) { case 0: - r->out.ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetCharDevCtr0); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr0); + r->out.info_ctr->ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetCharDevCtr0); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr0); - r->out.ctr.ctr0->count = 0; - r->out.ctr.ctr0->array = NULL; + r->out.info_ctr->ctr.ctr0->count = 0; + r->out.info_ctr->ctr.ctr0->array = NULL; return WERR_NOT_SUPPORTED; case 1: - r->out.ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetCharDevCtr1); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr1); + r->out.info_ctr->ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetCharDevCtr1); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr1); - r->out.ctr.ctr1->count = 0; - r->out.ctr.ctr1->array = NULL; + r->out.info_ctr->ctr.ctr1->count = 0; + r->out.info_ctr->ctr.ctr1->array = NULL; return WERR_NOT_SUPPORTED; diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index b513ccc973..aa10955a37 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -81,23 +81,39 @@ static bool test_NetCharDevEnum(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetCharDevEnum r; + struct srvsvc_NetCharDevInfoCtr info_ctr; struct srvsvc_NetCharDevCtr0 c0; + struct srvsvc_NetCharDevCtr0 c1; + uint32_t totalentries = 0; uint32_t levels[] = {0, 1}; int i; + ZERO_STRUCT(info_ctr); + r.in.server_unc = talloc_asprintf(tctx,"\\\\%s",dcerpc_server_name(p)); - r.in.ctr.ctr0 = &c0; - r.in.ctr.ctr0->count = 0; - r.in.ctr.ctr0->array = NULL; + r.in.info_ctr = &info_ctr; r.in.max_buffer = (uint32_t)-1; r.in.resume_handle = NULL; + r.out.info_ctr = &info_ctr; + r.out.totalentries = &totalentries; for (i=0;icount;j++) { + if (info_ctr.level == 1) { + for (j=0;jctr.ctr1->count;j++) { const char *device; - device = r.out.ctr.ctr1->array[j].device; + device = r.out.info_ctr->ctr.ctr1->array[j].device; if (!test_NetCharDevGetInfo(p, tctx, device)) { return false; } -- cgit From d1340df8b80c4dbe9f37dffa315a26396ed4f93f Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 16:49:21 +0100 Subject: s4-srvsvc: merge srvsvc_NetCharDevQEnum from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 10 +++++++--- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 22 ++++++++++----------- source4/torture/rpc/srvsvc.c | 33 ++++++++++++++++++++++--------- 3 files changed, 41 insertions(+), 24 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 43f2004c23..e3b1833e92 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -120,15 +120,19 @@ import "security.idl", "svcctl.idl"; [default] ; } srvsvc_NetCharDevQCtr; + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetCharDevQCtr ctr; + } srvsvc_NetCharDevQInfoCtr; + /******************/ /* Function: 0x03 */ WERROR srvsvc_NetCharDevQEnum( [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in,unique] [string,charset(UTF16)] uint16 *user, - [in,out] uint32 level, - [in,out,switch_is(level)] srvsvc_NetCharDevQCtr ctr, + [in,out,ref] srvsvc_NetCharDevQInfoCtr *info_ctr, [in] uint32 max_buffer, - [out] uint32 totalentries, + [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index ce6172b2e7..5acddbc8ba 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -115,28 +115,26 @@ static WERROR dcesrv_srvsvc_NetCharDevControl(struct dcesrv_call_state *dce_call static WERROR dcesrv_srvsvc_NetCharDevQEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct srvsvc_NetCharDevQEnum *r) { - r->out.level = r->in.level; - r->out.totalentries = 0; - r->out.resume_handle = NULL; + *r->out.totalentries = 0; - switch (r->in.level) { + switch (r->in.info_ctr->level) { case 0: { - r->out.ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetCharDevQCtr0); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr0); + r->out.info_ctr->ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetCharDevQCtr0); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr0); - r->out.ctr.ctr0->count = 0; - r->out.ctr.ctr0->array = NULL; + r->out.info_ctr->ctr.ctr0->count = 0; + r->out.info_ctr->ctr.ctr0->array = NULL; return WERR_NOT_SUPPORTED; } case 1: { - r->out.ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetCharDevQCtr1); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr1); + r->out.info_ctr->ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetCharDevQCtr1); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr1); - r->out.ctr.ctr1->count = 0; - r->out.ctr.ctr1->array = NULL; + r->out.info_ctr->ctr.ctr1->count = 0; + r->out.info_ctr->ctr.ctr1->array = NULL; return WERR_NOT_SUPPORTED; } diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index aa10955a37..cda2d44e71 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -228,24 +228,39 @@ static bool test_NetCharDevQEnum(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetCharDevQEnum r; + struct srvsvc_NetCharDevQInfoCtr info_ctr; struct srvsvc_NetCharDevQCtr0 c0; + struct srvsvc_NetCharDevQCtr1 c1; + uint32_t totalentries = 0; uint32_t levels[] = {0, 1}; int i; + ZERO_STRUCT(info_ctr); + r.in.server_unc = talloc_asprintf(tctx,"\\\\%s",dcerpc_server_name(p)); r.in.user = talloc_asprintf(tctx,"%s","Administrator"); - r.in.ctr.ctr0 = &c0; - r.in.ctr.ctr0->count = 0; - r.in.ctr.ctr0->array = NULL; + r.in.info_ctr = &info_ctr; r.in.max_buffer = (uint32_t)-1; r.in.resume_handle = NULL; + r.out.totalentries = &totalentries; + r.out.info_ctr = &info_ctr; for (i=0;icount;j++) { + if (info_ctr.level == 1) { + for (j=0;jctr.ctr1->count;j++) { const char *device; - device = r.out.ctr.ctr1->array[j].device; + device = r.out.info_ctr->ctr.ctr1->array[j].device; if (!test_NetCharDevQGetInfo(p, tctx, device)) { return false; } -- cgit From 8f99170ab94173670900677810def6893fd95024 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 16:59:03 +0100 Subject: s4-srvsvc: merge srvsvc_NetConnEnum from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 5 ++--- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 22 ++++++++++------------ source4/torture/rpc/srvsvc.c | 28 ++++++++++++++++++++++------ 3 files changed, 34 insertions(+), 21 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index e3b1833e92..b8808325bc 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -214,10 +214,9 @@ import "security.idl", "svcctl.idl"; WERROR srvsvc_NetConnEnum( [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in,unique] [string,charset(UTF16)] uint16 *path, - [in,out] uint32 level, - [in,out,switch_is(level)] srvsvc_NetConnCtr ctr, + [in,out,ref] srvsvc_NetConnInfoCtr *info_ctr, [in] uint32 max_buffer, - [out] uint32 totalentries, + [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index 5acddbc8ba..103efa5f23 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -226,28 +226,26 @@ static WERROR dcesrv_srvsvc_NetCharDevQPurgeSelf(struct dcesrv_call_state *dce_c static WERROR dcesrv_srvsvc_NetConnEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct srvsvc_NetConnEnum *r) { - r->out.level = r->in.level; - r->out.totalentries = 0; - r->out.resume_handle = NULL; + *r->out.totalentries = 0; - switch (r->in.level) { + switch (r->in.info_ctr->level) { case 0: { - r->out.ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetConnCtr0); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr0); + r->out.info_ctr->ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetConnCtr0); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr0); - r->out.ctr.ctr0->count = 0; - r->out.ctr.ctr0->array = NULL; + r->out.info_ctr->ctr.ctr0->count = 0; + r->out.info_ctr->ctr.ctr0->array = NULL; return WERR_NOT_SUPPORTED; } case 1: { - r->out.ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetConnCtr1); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr1); + r->out.info_ctr->ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetConnCtr1); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr1); - r->out.ctr.ctr1->count = 0; - r->out.ctr.ctr1->array = NULL; + r->out.info_ctr->ctr.ctr1->count = 0; + r->out.info_ctr->ctr.ctr1->array = NULL; return WERR_NOT_SUPPORTED; } diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index cda2d44e71..b6f2f8a49e 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -291,22 +291,38 @@ static bool test_NetConnEnum(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetConnEnum r; + struct srvsvc_NetConnInfoCtr info_ctr; struct srvsvc_NetConnCtr0 c0; + struct srvsvc_NetConnCtr1 c1; + uint32_t totalentries = 0; uint32_t levels[] = {0, 1}; int i; + ZERO_STRUCT(info_ctr); + r.in.server_unc = talloc_asprintf(tctx,"\\\\%s",dcerpc_server_name(p)); r.in.path = talloc_asprintf(tctx,"%s","ADMIN$"); - r.in.ctr.ctr0 = &c0; - r.in.ctr.ctr0->count = 0; - r.in.ctr.ctr0->array = NULL; + r.in.info_ctr = &info_ctr; r.in.max_buffer = (uint32_t)-1; r.in.resume_handle = NULL; + r.out.totalentries = &totalentries; + r.out.info_ctr = &info_ctr; for (i=0;i Date: Thu, 30 Oct 2008 17:05:11 +0100 Subject: s4-srvsvc: merge srvsvc_NetFileEnum from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 5 ++--- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 22 ++++++++++------------ source4/torture/rpc/srvsvc.c | 27 +++++++++++++++++++++------ 3 files changed, 33 insertions(+), 21 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index b8808325bc..a3b46c218a 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -268,10 +268,9 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in,unique] [string,charset(UTF16)] uint16 *path, [in,unique] [string,charset(UTF16)] uint16 *user, - [in,out] uint32 level, - [in,out,switch_is(level)] srvsvc_NetFileCtr ctr, + [in,out,ref] srvsvc_NetFileInfoCtr *info_ctr, [in] uint32 max_buffer, - [out] uint32 totalentries, + [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index 103efa5f23..5827193a3f 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -263,28 +263,26 @@ static WERROR dcesrv_srvsvc_NetConnEnum(struct dcesrv_call_state *dce_call, TALL static WERROR dcesrv_srvsvc_NetFileEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct srvsvc_NetFileEnum *r) { - r->out.level = r->in.level; - r->out.totalentries = 0; - r->out.resume_handle = NULL; + *r->out.totalentries = 0; - switch (r->in.level) { + switch (r->in.info_ctr->level) { case 2: { - r->out.ctr.ctr2 = talloc(mem_ctx, struct srvsvc_NetFileCtr2); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr2); + r->out.info_ctr->ctr.ctr2 = talloc(mem_ctx, struct srvsvc_NetFileCtr2); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr2); - r->out.ctr.ctr2->count = 0; - r->out.ctr.ctr2->array = NULL; + r->out.info_ctr->ctr.ctr2->count = 0; + r->out.info_ctr->ctr.ctr2->array = NULL; return WERR_NOT_SUPPORTED; } case 3: { - r->out.ctr.ctr3 = talloc(mem_ctx, struct srvsvc_NetFileCtr3); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr3); + r->out.info_ctr->ctr.ctr3 = talloc(mem_ctx, struct srvsvc_NetFileCtr3); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr3); - r->out.ctr.ctr3->count = 0; - r->out.ctr.ctr3->array = NULL; + r->out.info_ctr->ctr.ctr3->count = 0; + r->out.info_ctr->ctr.ctr3->array = NULL; return WERR_NOT_SUPPORTED; } diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index b6f2f8a49e..c3dd5b0e6f 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -341,23 +341,38 @@ static bool test_NetFileEnum(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetFileEnum r; + struct srvsvc_NetFileInfoCtr info_ctr; + struct srvsvc_NetFileCtr2 c2; struct srvsvc_NetFileCtr3 c3; + uint32_t totalentries = 0; uint32_t levels[] = {2, 3}; int i; + ZERO_STRUCT(info_ctr); + r.in.server_unc = talloc_asprintf(tctx,"\\\\%s",dcerpc_server_name(p)); r.in.path = NULL; r.in.user = NULL; - r.in.ctr.ctr3 = &c3; - r.in.ctr.ctr3->count = 0; - r.in.ctr.ctr3->array = NULL; + r.in.info_ctr = &info_ctr; r.in.max_buffer = (uint32_t)4096; r.in.resume_handle = NULL; + r.out.totalentries = &totalentries; + r.out.info_ctr = &info_ctr; for (i=0;i Date: Thu, 30 Oct 2008 17:21:31 +0100 Subject: s4-srvsvc: merge srvsvc_NetSessEnum from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 5 ++-- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 46 +++++++++++++++---------------- source4/torture/rpc/srvsvc.c | 43 +++++++++++++++++++++++++---- 3 files changed, 61 insertions(+), 33 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index a3b46c218a..bbabd8e2dc 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -380,10 +380,9 @@ import "security.idl", "svcctl.idl"; [in,unique] [string,charset(UTF16)] uint16 *server_unc, [in,unique] [string,charset(UTF16)] uint16 *client, [in,unique] [string,charset(UTF16)] uint16 *user, - [in,out] uint32 level, - [in,out,switch_is(level)] srvsvc_NetSessCtr ctr, + [in,out,ref] srvsvc_NetSessInfoCtr *info_ctr, [in] uint32 max_buffer, - [out] uint32 totalentries, + [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index 5827193a3f..bdb617a72a 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -335,58 +335,56 @@ static WERROR dcesrv_srvsvc_NetFileClose(struct dcesrv_call_state *dce_call, TAL static WERROR dcesrv_srvsvc_NetSessEnum(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx, struct srvsvc_NetSessEnum *r) { - r->out.level = r->in.level; - r->out.totalentries = 0; - r->out.resume_handle = NULL; + *r->out.totalentries = 0; - switch (r->in.level) { + switch (r->in.info_ctr->level) { case 0: { - r->out.ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetSessCtr0); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr0); + r->out.info_ctr->ctr.ctr0 = talloc(mem_ctx, struct srvsvc_NetSessCtr0); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr0); - r->out.ctr.ctr0->count = 0; - r->out.ctr.ctr0->array = NULL; + r->out.info_ctr->ctr.ctr0->count = 0; + r->out.info_ctr->ctr.ctr0->array = NULL; return WERR_NOT_SUPPORTED; } case 1: { - r->out.ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetSessCtr1); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr1); + r->out.info_ctr->ctr.ctr1 = talloc(mem_ctx, struct srvsvc_NetSessCtr1); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr1); - r->out.ctr.ctr1->count = 0; - r->out.ctr.ctr1->array = NULL; + r->out.info_ctr->ctr.ctr1->count = 0; + r->out.info_ctr->ctr.ctr1->array = NULL; return WERR_NOT_SUPPORTED; } case 2: { - r->out.ctr.ctr2 = talloc(mem_ctx, struct srvsvc_NetSessCtr2); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr2); + r->out.info_ctr->ctr.ctr2 = talloc(mem_ctx, struct srvsvc_NetSessCtr2); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr2); - r->out.ctr.ctr2->count = 0; - r->out.ctr.ctr2->array = NULL; + r->out.info_ctr->ctr.ctr2->count = 0; + r->out.info_ctr->ctr.ctr2->array = NULL; return WERR_NOT_SUPPORTED; } case 10: { - r->out.ctr.ctr10 = talloc(mem_ctx, struct srvsvc_NetSessCtr10); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr10); + r->out.info_ctr->ctr.ctr10 = talloc(mem_ctx, struct srvsvc_NetSessCtr10); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr10); - r->out.ctr.ctr2->count = 0; - r->out.ctr.ctr2->array = NULL; + r->out.info_ctr->ctr.ctr10->count = 0; + r->out.info_ctr->ctr.ctr10->array = NULL; return WERR_NOT_SUPPORTED; } case 502: { - r->out.ctr.ctr502 = talloc(mem_ctx, struct srvsvc_NetSessCtr502); - W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr502); + r->out.info_ctr->ctr.ctr502 = talloc(mem_ctx, struct srvsvc_NetSessCtr502); + W_ERROR_HAVE_NO_MEMORY(r->out.info_ctr->ctr.ctr502); - r->out.ctr.ctr2->count = 0; - r->out.ctr.ctr2->array = NULL; + r->out.info_ctr->ctr.ctr502->count = 0; + r->out.info_ctr->ctr.ctr502->array = NULL; return WERR_NOT_SUPPORTED; } diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index c3dd5b0e6f..783dfd328b 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -391,23 +391,54 @@ static bool test_NetSessEnum(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetSessEnum r; + struct srvsvc_NetSessInfoCtr info_ctr; struct srvsvc_NetSessCtr0 c0; + struct srvsvc_NetSessCtr1 c1; + struct srvsvc_NetSessCtr2 c2; + struct srvsvc_NetSessCtr10 c10; + struct srvsvc_NetSessCtr502 c502; + uint32_t totalentries = 0; uint32_t levels[] = {0, 1, 2, 10, 502}; int i; + ZERO_STRUCT(info_ctr); + r.in.server_unc = talloc_asprintf(tctx,"\\\\%s",dcerpc_server_name(p)); r.in.client = NULL; r.in.user = NULL; - r.in.ctr.ctr0 = &c0; - r.in.ctr.ctr0->count = 0; - r.in.ctr.ctr0->array = NULL; + r.in.info_ctr = &info_ctr; r.in.max_buffer = (uint32_t)-1; r.in.resume_handle = NULL; + r.out.totalentries = &totalentries; + r.out.info_ctr = &info_ctr; for (i=0;i Date: Thu, 30 Oct 2008 18:02:40 +0100 Subject: s4-srvsvc: merge srvsvc_NetShareEnumAll from s3 idl. Guenther --- source4/client/client.c | 17 ++++++++--- source4/libnet/libnet_share.c | 24 +++++++++------ source4/librpc/idl/srvsvc.idl | 5 ++- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 51 ++++++++++++++++--------------- source4/torture/rpc/bench.c | 43 ++++++++++++++++++++++---- source4/torture/rpc/srvsvc.c | 48 ++++++++++++++++++++++++----- 6 files changed, 131 insertions(+), 57 deletions(-) diff --git a/source4/client/client.c b/source4/client/client.c index 56b923974b..7eb14a2ce1 100644 --- a/source4/client/client.c +++ b/source4/client/client.c @@ -2563,9 +2563,11 @@ static bool browse_host(struct loadparm_context *lp_ctx, char *binding; NTSTATUS status; struct srvsvc_NetShareEnumAll r; + struct srvsvc_NetShareInfoCtr info_ctr; uint32_t resume_handle = 0; TALLOC_CTX *mem_ctx = talloc_init("browse_host"); struct srvsvc_NetShareCtr1 ctr1; + uint32_t totalentries = 0; binding = talloc_asprintf(mem_ctx, "ncacn_np:%s", query_host); @@ -2580,11 +2582,16 @@ static bool browse_host(struct loadparm_context *lp_ctx, return false; } + info_ctr.level = 1; + info_ctr.ctr.ctr1 = &ctr1; + r.in.server_unc = talloc_asprintf(mem_ctx,"\\\\%s",dcerpc_server_name(p)); - r.in.level = 1; - r.in.ctr.ctr1 = &ctr1; + r.in.info_ctr = &info_ctr; r.in.max_buffer = ~0; r.in.resume_handle = &resume_handle; + r.out.resume_handle = &resume_handle; + r.out.totalentries = &totalentries; + r.out.info_ctr = &info_ctr; d_printf("\n\tSharename Type Comment\n"); d_printf("\t--------- ---- -------\n"); @@ -2596,9 +2603,9 @@ static bool browse_host(struct loadparm_context *lp_ctx, if (NT_STATUS_IS_OK(status) && (W_ERROR_EQUAL(r.out.result, WERR_MORE_DATA) || W_ERROR_IS_OK(r.out.result)) && - r.out.ctr.ctr1) { - display_share_result(r.out.ctr.ctr1); - resume_handle += r.out.ctr.ctr1->count; + r.out.info_ctr->ctr.ctr1) { + display_share_result(r.out.info_ctr->ctr.ctr1); + resume_handle += r.out.info_ctr->ctr.ctr1->count; } } while (NT_STATUS_IS_OK(status) && W_ERROR_EQUAL(r.out.result, WERR_MORE_DATA)); diff --git a/source4/libnet/libnet_share.c b/source4/libnet/libnet_share.c index 5affb27ead..0bf6749a9c 100644 --- a/source4/libnet/libnet_share.c +++ b/source4/libnet/libnet_share.c @@ -28,7 +28,9 @@ NTSTATUS libnet_ListShares(struct libnet_context *ctx, NTSTATUS status; struct libnet_RpcConnect c; struct srvsvc_NetShareEnumAll s; + struct srvsvc_NetShareInfoCtr info_ctr; uint32_t resume_handle = 0; + uint32_t totalentries = 0; struct srvsvc_NetShareCtr0 ctr0; struct srvsvc_NetShareCtr1 ctr1; struct srvsvc_NetShareCtr2 ctr2; @@ -51,37 +53,39 @@ NTSTATUS libnet_ListShares(struct libnet_context *ctx, return status; } - s.in.level = r->in.level; - switch (s.in.level) { + info_ctr.level = r->in.level; + switch (info_ctr.level) { case 0: - s.in.ctr.ctr0 = &ctr0; + info_ctr.ctr.ctr0 = &ctr0; ZERO_STRUCT(ctr0); break; case 1: - s.in.ctr.ctr1 = &ctr1; + info_ctr.ctr.ctr1 = &ctr1; ZERO_STRUCT(ctr1); break; case 2: - s.in.ctr.ctr2 = &ctr2; + info_ctr.ctr.ctr2 = &ctr2; ZERO_STRUCT(ctr2); break; case 501: - s.in.ctr.ctr501 = &ctr501; + info_ctr.ctr.ctr501 = &ctr501; ZERO_STRUCT(ctr501); break; case 502: - s.in.ctr.ctr502 = &ctr502; + info_ctr.ctr.ctr502 = &ctr502; ZERO_STRUCT(ctr502); break; default: r->out.error_string = talloc_asprintf(mem_ctx, "libnet_ListShares: Invalid info level requested: %d", - s.in.level); + info_ctr.level); return NT_STATUS_INVALID_PARAMETER; } s.in.max_buffer = ~0; s.in.resume_handle = &resume_handle; - + s.in.info_ctr = &info_ctr; + s.out.info_ctr = &info_ctr; + s.out.totalentries = &totalentries; status = dcerpc_srvsvc_NetShareEnumAll(c.out.dcerpc_pipe, mem_ctx, &s); @@ -100,7 +104,7 @@ NTSTATUS libnet_ListShares(struct libnet_context *ctx, goto disconnect; } - r->out.ctr = s.out.ctr; + r->out.ctr = s.out.info_ctr->ctr; disconnect: talloc_free(c.out.dcerpc_pipe); diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index bbabd8e2dc..93a523f1de 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -578,10 +578,9 @@ import "security.idl", "svcctl.idl"; /* Function: 0x0f */ WERROR srvsvc_NetShareEnumAll ( [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out] uint32 level, - [in,out,switch_is(level)] srvsvc_NetShareCtr ctr, + [in,out,ref] srvsvc_NetShareInfoCtr *info_ctr, [in] uint32 max_buffer, - [out] uint32 totalentries, + [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index bdb617a72a..a3e7fd293c 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -716,10 +716,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, struct share_context *sctx; struct share_config *scfg; - r->out.level = r->in.level; - ZERO_STRUCT(r->out.ctr); - r->out.totalentries = 0; - r->out.resume_handle = NULL; + *r->out.totalentries = 0; /* TODO: - paging of results */ @@ -734,7 +731,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, return ntstatus_to_werror(nterr); } - switch (r->in.level) { + switch (r->in.info_ctr->level) { case 0: { int i; @@ -747,7 +744,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, ctr0->array = NULL; if (ctr0->count == 0) { - r->out.ctr.ctr0 = ctr0; + r->out.info_ctr->ctr.ctr0 = ctr0; return WERR_OK; } @@ -764,7 +761,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, return WERR_GENERAL_FAILURE; } info.info0 = &ctr0->array[i]; - status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.level, &info); + status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.info_ctr->level, &info); if (!W_ERROR_IS_OK(status)) { return status; } @@ -772,8 +769,8 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, } talloc_free(snames); - r->out.ctr.ctr0 = ctr0; - r->out.totalentries = r->out.ctr.ctr0->count; + r->out.info_ctr->ctr.ctr0 = ctr0; + *r->out.totalentries = r->out.info_ctr->ctr.ctr0->count; return WERR_OK; } case 1: @@ -788,7 +785,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, ctr1->array = NULL; if (ctr1->count == 0) { - r->out.ctr.ctr1 = ctr1; + r->out.info_ctr->ctr.ctr1 = ctr1; return WERR_OK; } @@ -805,7 +802,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, return WERR_GENERAL_FAILURE; } info.info1 = &ctr1->array[i]; - status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.level, &info); + status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.info_ctr->level, &info); if (!W_ERROR_IS_OK(status)) { return status; } @@ -813,8 +810,9 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, } talloc_free(snames); - r->out.ctr.ctr1 = ctr1; - r->out.totalentries = r->out.ctr.ctr1->count; + r->out.info_ctr->ctr.ctr1 = ctr1; + *r->out.totalentries = r->out.info_ctr->ctr.ctr1->count; + return WERR_OK; } case 2: @@ -831,7 +829,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, ctr2->array = NULL; if (ctr2->count == 0) { - r->out.ctr.ctr2 = ctr2; + r->out.info_ctr->ctr.ctr2 = ctr2; return WERR_OK; } @@ -848,7 +846,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, return WERR_GENERAL_FAILURE; } info.info2 = &ctr2->array[i]; - status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.level, &info); + status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.info_ctr->level, &info); if (!W_ERROR_IS_OK(status)) { return status; } @@ -856,8 +854,9 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, } talloc_free(snames); - r->out.ctr.ctr2 = ctr2; - r->out.totalentries = r->out.ctr.ctr2->count; + r->out.info_ctr->ctr.ctr2 = ctr2; + *r->out.totalentries = r->out.info_ctr->ctr.ctr2->count; + return WERR_OK; } case 501: @@ -874,7 +873,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, ctr501->array = NULL; if (ctr501->count == 0) { - r->out.ctr.ctr501 = ctr501; + r->out.info_ctr->ctr.ctr501 = ctr501; return WERR_OK; } @@ -891,7 +890,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, return WERR_GENERAL_FAILURE; } info.info501 = &ctr501->array[i]; - status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.level, &info); + status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.info_ctr->level, &info); if (!W_ERROR_IS_OK(status)) { return status; } @@ -899,8 +898,9 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, } talloc_free(snames); - r->out.ctr.ctr501 = ctr501; - r->out.totalentries = r->out.ctr.ctr501->count; + r->out.info_ctr->ctr.ctr501 = ctr501; + *r->out.totalentries = r->out.info_ctr->ctr.ctr501->count; + return WERR_OK; } case 502: @@ -917,7 +917,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, ctr502->array = NULL; if (ctr502->count == 0) { - r->out.ctr.ctr502 = ctr502; + r->out.info_ctr->ctr.ctr502 = ctr502; return WERR_OK; } @@ -934,7 +934,7 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, return WERR_GENERAL_FAILURE; } info.info502 = &ctr502->array[i]; - status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.level, &info); + status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.info_ctr->level, &info); if (!W_ERROR_IS_OK(status)) { return status; } @@ -942,8 +942,9 @@ static WERROR dcesrv_srvsvc_NetShareEnumAll(struct dcesrv_call_state *dce_call, } talloc_free(snames); - r->out.ctr.ctr502 = ctr502; - r->out.totalentries = r->out.ctr.ctr502->count; + r->out.info_ctr->ctr.ctr502 = ctr502; + *r->out.totalentries = r->out.info_ctr->ctr.ctr502->count; + return WERR_OK; } default: diff --git a/source4/torture/rpc/bench.c b/source4/torture/rpc/bench.c index cacc1d3baa..6fa3815516 100644 --- a/source4/torture/rpc/bench.c +++ b/source4/torture/rpc/bench.c @@ -31,32 +31,63 @@ static bool test_NetShareEnumAll(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx) { NTSTATUS status; struct srvsvc_NetShareEnumAll r; + struct srvsvc_NetShareInfoCtr info_ctr; struct srvsvc_NetShareCtr0 c0; + struct srvsvc_NetShareCtr1 c1; + struct srvsvc_NetShareCtr2 c2; + struct srvsvc_NetShareCtr501 c501; + struct srvsvc_NetShareCtr502 c502; + uint32_t totalentries = 0; uint32_t levels[] = {0, 1, 2, 501, 502}; int i; bool ret = true; uint32_t resume_handle; - ZERO_STRUCT(c0); + ZERO_STRUCT(info_ctr); r.in.server_unc = talloc_asprintf(mem_ctx,"\\\\%s",dcerpc_server_name(p)); - r.in.ctr.ctr0 = &c0; + r.in.info_ctr = &info_ctr; r.in.max_buffer = (uint32_t)-1; r.in.resume_handle = &resume_handle; r.out.resume_handle = &resume_handle; + r.out.totalentries = &totalentries; + r.out.info_ctr = &info_ctr; for (i=0;icount;j++) { + if (info_ctr.level == 2 && r.out.info_ctr->ctr.ctr2) { + for (j=0;jctr.ctr2->count;j++) { const char *name; - name = r.out.ctr.ctr2->array[j].name; + name = r.out.info_ctr->ctr.ctr2->array[j].name; if (!test_NetShareGetInfo(tctx, p, name, admin)) { return false; } -- cgit From f25b645ab1946ea8d36ce2adf26fd4b6590d476c Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 18:21:49 +0100 Subject: s4-srvsvc: merge srvsvc_NetShareEnum from s3 idl. Guenther --- source4/librpc/idl/srvsvc.idl | 5 +- source4/rpc_server/srvsvc/dcesrv_srvsvc.c | 43 +++++++-------- source4/torture/rpc/samba3rpc.c | 87 +++++++++++++++++++++++++------ source4/torture/rpc/srvsvc.c | 42 ++++++++++++--- 4 files changed, 130 insertions(+), 47 deletions(-) diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 93a523f1de..4304dbed96 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -1421,10 +1421,9 @@ import "security.idl", "svcctl.idl"; total entries ... */ WERROR srvsvc_NetShareEnum( [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out] uint32 level, - [in,out,switch_is(level)] srvsvc_NetShareCtr ctr, + [in,out,ref] srvsvc_NetShareInfoCtr *info_ctr, [in] uint32 max_buffer, - [out] uint32 totalentries, + [out,ref] uint32 *totalentries, [in,out,unique] uint32 *resume_handle ); diff --git a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c index a3e7fd293c..b4e08896e5 100644 --- a/source4/rpc_server/srvsvc/dcesrv_srvsvc.c +++ b/source4/rpc_server/srvsvc/dcesrv_srvsvc.c @@ -1815,10 +1815,7 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL struct share_config *scfg; struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx; - r->out.level = r->in.level; - ZERO_STRUCT(r->out.ctr); - r->out.totalentries = 0; - r->out.resume_handle = NULL; + *r->out.totalentries = 0; /* TODO: - paging of results */ @@ -1833,7 +1830,7 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL return ntstatus_to_werror(nterr); } - switch (r->in.level) { + switch (r->in.info_ctr->level) { case 0: { int i, y = 0; @@ -1848,7 +1845,7 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL ctr0->array = NULL; if (ctr0->count == 0) { - r->out.ctr.ctr0 = ctr0; + r->out.info_ctr->ctr.ctr0 = ctr0; return WERR_OK; } @@ -1874,15 +1871,16 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL } info.info0 = &ctr0->array[y]; - status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.level, &info); + status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.info_ctr->level, &info); W_ERROR_NOT_OK_RETURN(status); talloc_free(scfg); y++; } talloc_free(snames); - r->out.ctr.ctr0 = ctr0; - r->out.totalentries = r->out.ctr.ctr0->count; + r->out.info_ctr->ctr.ctr0 = ctr0; + *r->out.totalentries = r->out.info_ctr->ctr.ctr0->count; + return WERR_OK; } case 1: @@ -1899,7 +1897,7 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL ctr1->array = NULL; if (ctr1->count == 0) { - r->out.ctr.ctr1 = ctr1; + r->out.info_ctr->ctr.ctr1 = ctr1; return WERR_OK; } @@ -1925,15 +1923,16 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL } info.info1 = &ctr1->array[y]; - status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.level, &info); + status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.info_ctr->level, &info); W_ERROR_NOT_OK_RETURN(status); talloc_free(scfg); y++; } talloc_free(snames); - r->out.ctr.ctr1 = ctr1; - r->out.totalentries = r->out.ctr.ctr1->count; + r->out.info_ctr->ctr.ctr1 = ctr1; + *r->out.totalentries = r->out.info_ctr->ctr.ctr1->count; + return WERR_OK; } case 2: @@ -1952,7 +1951,7 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL ctr2->array = NULL; if (ctr2->count == 0) { - r->out.ctr.ctr2 = ctr2; + r->out.info_ctr->ctr.ctr2 = ctr2; return WERR_OK; } @@ -1978,15 +1977,16 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL } info.info2 = &ctr2->array[y]; - status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.level, &info); + status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.info_ctr->level, &info); W_ERROR_NOT_OK_RETURN(status); talloc_free(scfg); y++; } talloc_free(snames); - r->out.ctr.ctr2 = ctr2; - r->out.totalentries = r->out.ctr.ctr2->count; + r->out.info_ctr->ctr.ctr2 = ctr2; + *r->out.totalentries = r->out.info_ctr->ctr.ctr2->count; + return WERR_OK; } case 502: @@ -2005,7 +2005,7 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL ctr502->array = NULL; if (ctr502->count == 0) { - r->out.ctr.ctr502 = ctr502; + r->out.info_ctr->ctr.ctr502 = ctr502; return WERR_OK; } @@ -2031,15 +2031,16 @@ static WERROR dcesrv_srvsvc_NetShareEnum(struct dcesrv_call_state *dce_call, TAL } info.info502 = &ctr502->array[y]; - status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.level, &info); + status = dcesrv_srvsvc_fiel_ShareInfo(dce_call, mem_ctx, scfg, r->in.info_ctr->level, &info); W_ERROR_NOT_OK_RETURN(status); talloc_free(scfg); y++; } talloc_free(snames); - r->out.ctr.ctr502 = ctr502; - r->out.totalentries = r->out.ctr.ctr502->count; + r->out.info_ctr->ctr.ctr502 = ctr502; + *r->out.totalentries = r->out.info_ctr->ctr.ctr502->count; + return WERR_OK; } default: diff --git a/source4/torture/rpc/samba3rpc.c b/source4/torture/rpc/samba3rpc.c index bd23327e70..93bcb3a1ea 100644 --- a/source4/torture/rpc/samba3rpc.c +++ b/source4/torture/rpc/samba3rpc.c @@ -1907,38 +1907,87 @@ static bool test_NetShareEnum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, { NTSTATUS status; struct srvsvc_NetShareEnum r; + struct srvsvc_NetShareInfoCtr info_ctr; struct srvsvc_NetShareCtr0 c0; + struct srvsvc_NetShareCtr1 c1; + struct srvsvc_NetShareCtr2 c2; + struct srvsvc_NetShareCtr501 c501; + struct srvsvc_NetShareCtr502 c502; + struct srvsvc_NetShareCtr1004 c1004; + struct srvsvc_NetShareCtr1005 c1005; + struct srvsvc_NetShareCtr1006 c1006; + struct srvsvc_NetShareCtr1007 c1007; + uint32_t totalentries = 0; uint32_t levels[] = { 0, 1, 2, 501, 502, 1004, 1005, 1006, 1007 }; int i; bool ret = true; + ZERO_STRUCT(info_ctr); + r.in.server_unc = talloc_asprintf(mem_ctx,"\\\\%s",dcerpc_server_name(p)); - r.in.ctr.ctr0 = &c0; - r.in.ctr.ctr0->count = 0; - r.in.ctr.ctr0->array = NULL; + r.in.info_ctr = &info_ctr; r.in.max_buffer = (uint32_t)-1; r.in.resume_handle = NULL; + r.out.totalentries = &totalentries; + r.out.info_ctr = &info_ctr; for (i=0;ictr.ctr0; if (ctr->count > 0) { *one_sharename = ctr->array[0].name; } @@ -2471,8 +2520,10 @@ static NTSTATUS find_printers(TALLOC_CTX *ctx, struct loadparm_context *lp_ctx, NTSTATUS status; struct dcerpc_pipe *p; struct srvsvc_NetShareEnum r; + struct srvsvc_NetShareInfoCtr info_ctr; struct srvsvc_NetShareCtr1 c1_in; struct srvsvc_NetShareCtr1 *c1; + uint32_t totalentries = 0; int i; mem_ctx = talloc_new(ctx); @@ -2489,25 +2540,29 @@ static NTSTATUS find_printers(TALLOC_CTX *ctx, struct loadparm_context *lp_ctx, return status; } + ZERO_STRUCT(c1_in); + info_ctr.level = 1; + info_ctr.ctr.ctr1 = &c1_in; + r.in.server_unc = talloc_asprintf( mem_ctx, "\\\\%s", dcerpc_server_name(p)); - r.in.level = 1; - ZERO_STRUCT(c1_in); - r.in.ctr.ctr1 = &c1_in; + r.in.info_ctr = &info_ctr; r.in.max_buffer = (uint32_t)-1; r.in.resume_handle = NULL; + r.out.totalentries = &totalentries; + r.out.info_ctr = &info_ctr; status = dcerpc_srvsvc_NetShareEnum(p, mem_ctx, &r); if (!NT_STATUS_IS_OK(status)) { d_printf("NetShareEnum level %u failed - %s\n", - r.in.level, nt_errstr(status)); + info_ctr.level, nt_errstr(status)); talloc_free(mem_ctx); return status; } *printers = NULL; *num_printers = 0; - c1 = r.out.ctr.ctr1; + c1 = r.out.info_ctr->ctr.ctr1; for (i=0; icount; i++) { if (c1->array[i].type != STYPE_PRINTQ) { continue; diff --git a/source4/torture/rpc/srvsvc.c b/source4/torture/rpc/srvsvc.c index 13563d809c..82a8a67854 100644 --- a/source4/torture/rpc/srvsvc.c +++ b/source4/torture/rpc/srvsvc.c @@ -834,7 +834,13 @@ static bool test_NetShareEnum(struct torture_context *tctx, { NTSTATUS status; struct srvsvc_NetShareEnum r; + struct srvsvc_NetShareInfoCtr info_ctr; struct srvsvc_NetShareCtr0 c0; + struct srvsvc_NetShareCtr1 c1; + struct srvsvc_NetShareCtr2 c2; + struct srvsvc_NetShareCtr501 c501; + struct srvsvc_NetShareCtr502 c502; + uint32_t totalentries = 0; struct { uint32_t level; WERROR anon_status; @@ -849,22 +855,44 @@ static bool test_NetShareEnum(struct torture_context *tctx, int i; r.in.server_unc = talloc_asprintf(tctx,"\\\\%s",dcerpc_server_name(p)); - r.in.ctr.ctr0 = &c0; - r.in.ctr.ctr0->count = 0; - r.in.ctr.ctr0->array = NULL; + r.in.info_ctr = &info_ctr; r.in.max_buffer = (uint32_t)-1; r.in.resume_handle = NULL; + r.out.totalentries = &totalentries; + r.out.info_ctr = &info_ctr; for (i=0;i Date: Thu, 30 Oct 2008 18:22:43 +0100 Subject: srvsvc: share srvsvc idl between s3 and s4. Guenther --- librpc/idl/srvsvc.idl | 1547 +++++++++++++++++++++++++++++++++++++++++ source3/Makefile.in | 2 +- source3/librpc/idl/srvsvc.idl | 1547 ----------------------------------------- 3 files changed, 1548 insertions(+), 1548 deletions(-) create mode 100644 librpc/idl/srvsvc.idl delete mode 100644 source3/librpc/idl/srvsvc.idl diff --git a/librpc/idl/srvsvc.idl b/librpc/idl/srvsvc.idl new file mode 100644 index 0000000000..dcdd1ac546 --- /dev/null +++ b/librpc/idl/srvsvc.idl @@ -0,0 +1,1547 @@ +#include "idl_types.h" + +/* + srvsvc interface definitions +*/ +import "security.idl", "svcctl.idl"; + +[ uuid("4b324fc8-1670-01d3-1278-5a47bf6ee188"), + version(3.0), + endpoint("ncacn_np:[\\pipe\\srvsvc]", "ncacn_ip_tcp:", "ncalrpc:"), + pointer_default(unique), + helpstring("Server Service") +] interface srvsvc +{ + typedef bitmap svcctl_ServerType svcctl_ServerType; + typedef bitmap security_secinfo security_secinfo; + +/**************************/ +/* srvsvc_NetCharDev */ +/**************************/ + typedef struct { + [string,charset(UTF16)] uint16 *device; + } srvsvc_NetCharDevInfo0; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetCharDevInfo0 *array; + } srvsvc_NetCharDevCtr0; + + typedef struct { + [string,charset(UTF16)] uint16 *device; + uint32 status; + [string,charset(UTF16)] uint16 *user; + uint32 time; + } srvsvc_NetCharDevInfo1; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetCharDevInfo1 *array; + } srvsvc_NetCharDevCtr1; + + typedef union { + [case(0)] srvsvc_NetCharDevInfo0 *info0; + [case(1)] srvsvc_NetCharDevInfo1 *info1; + [default] ; + } srvsvc_NetCharDevInfo; + + typedef union { + [case(0)] srvsvc_NetCharDevCtr0 *ctr0; + [case(1)] srvsvc_NetCharDevCtr1 *ctr1; + [default] ; + } srvsvc_NetCharDevCtr; + + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetCharDevCtr ctr; + } srvsvc_NetCharDevInfoCtr; + + /******************/ + /* Function: 0x00 */ + WERROR srvsvc_NetCharDevEnum( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,out,ref] srvsvc_NetCharDevInfoCtr *info_ctr, + [in] uint32 max_buffer, + [out,ref] uint32 *totalentries, + [in,out,unique] uint32 *resume_handle + ); + + /******************/ + /* Function: 0x01 */ + WERROR srvsvc_NetCharDevGetInfo( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 device_name[], + [in] uint32 level, + [out,ref,switch_is(level)] srvsvc_NetCharDevInfo *info + ); + + /******************/ + /* Function: 0x02 */ + WERROR srvsvc_NetCharDevControl( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 device_name[], + [in] uint32 opcode + ); + +/**************************/ +/* srvsvc_NetCharDevQ */ +/**************************/ + typedef struct { + [string,charset(UTF16)] uint16 *device; + } srvsvc_NetCharDevQInfo0; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetCharDevQInfo0 *array; + } srvsvc_NetCharDevQCtr0; + + typedef struct { + [string,charset(UTF16)] uint16 *device; + uint32 priority; + [string,charset(UTF16)] uint16 *devices; + uint32 users; + uint32 num_ahead; + } srvsvc_NetCharDevQInfo1; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetCharDevQInfo1 *array; + } srvsvc_NetCharDevQCtr1; + + typedef union { + [case(0)] srvsvc_NetCharDevQInfo0 *info0; + [case(1)] srvsvc_NetCharDevQInfo1 *info1; + [default] ; + } srvsvc_NetCharDevQInfo; + + typedef union { + [case(0)] srvsvc_NetCharDevQCtr0 *ctr0; + [case(1)] srvsvc_NetCharDevQCtr1 *ctr1; + [default] ; + } srvsvc_NetCharDevQCtr; + + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetCharDevQCtr ctr; + } srvsvc_NetCharDevQInfoCtr; + + /******************/ + /* Function: 0x03 */ + WERROR srvsvc_NetCharDevQEnum( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,unique] [string,charset(UTF16)] uint16 *user, + [in,out,ref] srvsvc_NetCharDevQInfoCtr *info_ctr, + [in] uint32 max_buffer, + [out,ref] uint32 *totalentries, + [in,out,unique] uint32 *resume_handle + ); + + /******************/ + /* Function: 0x04 */ + WERROR srvsvc_NetCharDevQGetInfo( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 queue_name[], + [in] [string,charset(UTF16)] uint16 user[], + [in] uint32 level, + [out,switch_is(level),ref] srvsvc_NetCharDevQInfo *info + ); + + /******************/ + /* Function: 0x05 */ + WERROR srvsvc_NetCharDevQSetInfo( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 queue_name[], + [in] uint32 level, + [in,switch_is(level)] srvsvc_NetCharDevQInfo info, + [in,out,unique] uint32 *parm_error + ); + + /******************/ + /* Function: 0x06 */ + WERROR srvsvc_NetCharDevQPurge( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 queue_name[] + ); + + /******************/ + /* Function: 0x07 */ + WERROR srvsvc_NetCharDevQPurgeSelf( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 queue_name[], + [in] [string,charset(UTF16)] uint16 computer_name[] + ); + +/**************************/ +/* srvsvc_NetConn */ +/**************************/ + typedef struct { + uint32 conn_id; + } srvsvc_NetConnInfo0; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetConnInfo0 *array; + } srvsvc_NetConnCtr0; + + typedef struct { + uint32 conn_id; + uint32 conn_type; + uint32 num_open; + uint32 num_users; + uint32 conn_time; + [string,charset(UTF16)] uint16 *user; + [string,charset(UTF16)] uint16 *share; + } srvsvc_NetConnInfo1; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetConnInfo1 *array; + } srvsvc_NetConnCtr1; + + typedef union { + [case(0)] srvsvc_NetConnCtr0 *ctr0; + [case(1)] srvsvc_NetConnCtr1 *ctr1; + [default] ; + } srvsvc_NetConnCtr; + + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetConnCtr ctr; + } srvsvc_NetConnInfoCtr; + + /******************/ + /* Function: 0x08 */ + WERROR srvsvc_NetConnEnum( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,unique] [string,charset(UTF16)] uint16 *path, + [in,out,ref] srvsvc_NetConnInfoCtr *info_ctr, + [in] uint32 max_buffer, + [out,ref] uint32 *totalentries, + [in,out,unique] uint32 *resume_handle + ); + +/**************************/ +/* srvsvc_NetFile */ +/**************************/ + typedef struct { + uint32 fid; + } srvsvc_NetFileInfo2; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetFileInfo2 *array; + } srvsvc_NetFileCtr2; + + typedef struct { + uint32 fid; + uint32 permissions; + uint32 num_locks; + [string,charset(UTF16)] uint16 *path; + [string,charset(UTF16)] uint16 *user; + } srvsvc_NetFileInfo3; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetFileInfo3 *array; + } srvsvc_NetFileCtr3; + + typedef union { + [case(2)] srvsvc_NetFileInfo2 *info2; + [case(3)] srvsvc_NetFileInfo3 *info3; + [default] ; + } srvsvc_NetFileInfo; + + typedef union { + [case(2)] srvsvc_NetFileCtr2 *ctr2; + [case(3)] srvsvc_NetFileCtr3 *ctr3; + [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] srvsvc_NetFileInfoCtr *info_ctr, + [in] uint32 max_buffer, + [out,ref] uint32 *totalentries, + [in,out,unique] uint32 *resume_handle + ); + + /******************/ + /* Function: 0x0a */ + WERROR srvsvc_NetFileGetInfo( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] uint32 fid, + [in] uint32 level, + [out,switch_is(level),ref] srvsvc_NetFileInfo *info + ); + + /******************/ + /* Function: 0x0b */ + WERROR srvsvc_NetFileClose( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] uint32 fid + ); + +/**************************/ +/* srvsvc_NetSess */ +/**************************/ + typedef struct { + [string,charset(UTF16)] uint16 *client; + } srvsvc_NetSessInfo0; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetSessInfo0 *array; + } srvsvc_NetSessCtr0; + + typedef struct { + [string,charset(UTF16)] uint16 *client; + [string,charset(UTF16)] uint16 *user; + uint32 num_open; + uint32 time; + uint32 idle_time; + uint32 user_flags; + } srvsvc_NetSessInfo1; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetSessInfo1 *array; + } srvsvc_NetSessCtr1; + + typedef struct { + [string,charset(UTF16)] uint16 *client; + [string,charset(UTF16)] uint16 *user; + uint32 num_open; + uint32 time; + uint32 idle_time; + uint32 user_flags; + [string,charset(UTF16)] uint16 *client_type; + } srvsvc_NetSessInfo2; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetSessInfo2 *array; + } srvsvc_NetSessCtr2; + + typedef struct { + [string,charset(UTF16)] uint16 *client; + [string,charset(UTF16)] uint16 *user; + uint32 time; + uint32 idle_time; + } srvsvc_NetSessInfo10; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetSessInfo10 *array; + } srvsvc_NetSessCtr10; + + typedef struct { + [string,charset(UTF16)] uint16 *client; + [string,charset(UTF16)] uint16 *user; + uint32 num_open; + uint32 time; + uint32 idle_time; + uint32 user_flags; + [string,charset(UTF16)] uint16 *client_type; + [string,charset(UTF16)] uint16 *transport; + } srvsvc_NetSessInfo502; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetSessInfo502 *array; + } srvsvc_NetSessCtr502; + + typedef union { + [case(0)] srvsvc_NetSessCtr0 *ctr0; + [case(1)] srvsvc_NetSessCtr1 *ctr1; + [case(2)] srvsvc_NetSessCtr2 *ctr2; + [case(10)] srvsvc_NetSessCtr10 *ctr10; + [case(502)] srvsvc_NetSessCtr502 *ctr502; + [default] ; + } srvsvc_NetSessCtr; + + /******************/ + /* 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] srvsvc_NetSessInfoCtr *info_ctr, + [in] uint32 max_buffer, + [out,ref] uint32 *totalentries, + [in,out,unique] uint32 *resume_handle + ); + + /******************/ + /* Function: 0x0d */ + WERROR srvsvc_NetSessDel( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,unique] [string,charset(UTF16)] uint16 *client, + [in,unique] [string,charset(UTF16)] uint16 *user + ); + +/**************************/ +/* srvsvc_NetShare */ +/**************************/ + + /* share types */ + const uint32 STYPE_TEMPORARY = 0x40000000; /* share is a temporary one */ + const uint32 STYPE_HIDDEN = 0x80000000; /* share is a hidden one */ + + typedef [v1_enum, flag(NDR_PAHEX)] enum { + STYPE_DISKTREE = 0, + STYPE_DISKTREE_TEMPORARY = STYPE_DISKTREE|STYPE_TEMPORARY, + STYPE_DISKTREE_HIDDEN = STYPE_DISKTREE|STYPE_HIDDEN, + STYPE_PRINTQ = 1, + STYPE_PRINTQ_TEMPORARY = STYPE_PRINTQ|STYPE_TEMPORARY, + STYPE_PRINTQ_HIDDEN = STYPE_PRINTQ|STYPE_HIDDEN, + STYPE_DEVICE = 2, /* Serial device */ + STYPE_DEVICE_TEMPORARY = STYPE_DEVICE|STYPE_TEMPORARY, + STYPE_DEVICE_HIDDEN = STYPE_DEVICE|STYPE_HIDDEN, + STYPE_IPC = 3, /* Interprocess communication (IPC) */ + STYPE_IPC_TEMPORARY = STYPE_IPC|STYPE_TEMPORARY, + STYPE_IPC_HIDDEN = STYPE_IPC|STYPE_HIDDEN + } srvsvc_ShareType; + + typedef struct { + [string,charset(UTF16)] uint16 *name; + } srvsvc_NetShareInfo0; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetShareInfo0 *array; + } srvsvc_NetShareCtr0; + + typedef struct { + [string,charset(UTF16)] uint16 *name; + srvsvc_ShareType type; + [string,charset(UTF16)] uint16 *comment; + } srvsvc_NetShareInfo1; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetShareInfo1 *array; + } srvsvc_NetShareCtr1; + + typedef struct { + [string,charset(UTF16)] uint16 *name; + srvsvc_ShareType type; + [string,charset(UTF16)] uint16 *comment; + uint32 permissions; + uint32 max_users; + uint32 current_users; + [string,charset(UTF16)] uint16 *path; + [string,charset(UTF16)] uint16 *password; + } srvsvc_NetShareInfo2; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetShareInfo2 *array; + } srvsvc_NetShareCtr2; + + typedef struct { + [string,charset(UTF16)] uint16 *name; + srvsvc_ShareType type; + [string,charset(UTF16)] uint16 *comment; + uint32 csc_policy; + } srvsvc_NetShareInfo501; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetShareInfo501 *array; + } srvsvc_NetShareCtr501; + + typedef struct { + [string,charset(UTF16)] uint16 *name; + srvsvc_ShareType type; + [string,charset(UTF16)] uint16 *comment; + uint32 permissions; + uint32 max_users; + uint32 current_users; + [string,charset(UTF16)] uint16 *path; + [string,charset(UTF16)] uint16 *password; + sec_desc_buf sd_buf; + } srvsvc_NetShareInfo502; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetShareInfo502 *array; + } srvsvc_NetShareCtr502; + + typedef struct { + [string,charset(UTF16)] uint16 *comment; + } srvsvc_NetShareInfo1004; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetShareInfo1004 *array; + } srvsvc_NetShareCtr1004; + + typedef bitmap { + SHARE_1005_IN_DFS = 0x00000001, + SHARE_1005_DFS_ROOT = 0x00000002 + } NetShareInfo1005Flags; + + const uint32 SHARE_1005_CSC_POLICY_MASK = 0x00000030; + const uint32 SHARE_1005_CSC_POLICY_SHIFT = 4; + + typedef struct { + NetShareInfo1005Flags dfs_flags; + } srvsvc_NetShareInfo1005; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetShareInfo1005 *array; + } srvsvc_NetShareCtr1005; + + typedef struct { + uint32 max_users; + } srvsvc_NetShareInfo1006; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetShareInfo1006 *array; + } srvsvc_NetShareCtr1006; + + typedef struct { + uint32 flags; + [string,charset(UTF16)] uint16 *alternate_directory_name; + } srvsvc_NetShareInfo1007; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetShareInfo1007 *array; + } srvsvc_NetShareCtr1007; + + typedef struct { + uint32 count; + [size_is(count)] sec_desc_buf *array; + } srvsvc_NetShareCtr1501; + + typedef union { + [case(0)] srvsvc_NetShareInfo0 *info0; + [case(1)] srvsvc_NetShareInfo1 *info1; + [case(2)] srvsvc_NetShareInfo2 *info2; + [case(501)] srvsvc_NetShareInfo501 *info501; + [case(502)] srvsvc_NetShareInfo502 *info502; + [case(1004)] srvsvc_NetShareInfo1004 *info1004; + [case(1005)] srvsvc_NetShareInfo1005 *info1005; + [case(1006)] srvsvc_NetShareInfo1006 *info1006; + [case(1007)] srvsvc_NetShareInfo1007 *info1007; + [case(1501)] sec_desc_buf *info1501; + [default] ; + } srvsvc_NetShareInfo; + + typedef union { + [case(0)] srvsvc_NetShareCtr0 *ctr0; + [case(1)] srvsvc_NetShareCtr1 *ctr1; + [case(2)] srvsvc_NetShareCtr2 *ctr2; + [case(501)] srvsvc_NetShareCtr501 *ctr501; + [case(502)] srvsvc_NetShareCtr502 *ctr502; + [case(1004)] srvsvc_NetShareCtr1004 *ctr1004; + [case(1005)] srvsvc_NetShareCtr1005 *ctr1005; + [case(1006)] srvsvc_NetShareCtr1006 *ctr1006; + [case(1007)] srvsvc_NetShareCtr1007 *ctr1007; + [case(1501)] srvsvc_NetShareCtr1501 *ctr1501; + [default] ; + } srvsvc_NetShareCtr; + + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetShareCtr ctr; + } srvsvc_NetShareInfoCtr; + + /******************/ + /* Function: 0x0e */ + WERROR srvsvc_NetShareAdd( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] uint32 level, + [in,ref,switch_is(level)] srvsvc_NetShareInfo *info, + [in,out,unique] uint32 *parm_error + ); + + /******************/ + /* Function: 0x0f */ + WERROR srvsvc_NetShareEnumAll ( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,out,ref] srvsvc_NetShareInfoCtr *info_ctr, + [in] uint32 max_buffer, + [out,ref] uint32 *totalentries, + [in,out,unique] uint32 *resume_handle + ); + + /******************/ + /* Function: 0x10 */ + WERROR srvsvc_NetShareGetInfo( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 share_name[], + [in] uint32 level, + [out,ref,switch_is(level)] srvsvc_NetShareInfo *info + ); + + /******************/ + /* Function: 0x11 */ + WERROR srvsvc_NetShareSetInfo( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 share_name[], + [in] uint32 level, + [in,ref,switch_is(level)] srvsvc_NetShareInfo *info, + [in,out,unique] uint32 *parm_error + ); + + /******************/ + /* Function: 0x12 */ + WERROR srvsvc_NetShareDel( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 share_name[], + [in] uint32 reserved + ); + + /******************/ + /* Function: 0x13 */ + WERROR srvsvc_NetShareDelSticky( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 share_name[], + [in] uint32 reserved + ); + + /******************/ + /* Function: 0x14 */ + WERROR srvsvc_NetShareCheck( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 device_name[], + [out,ref] srvsvc_ShareType *type + ); + +/**************************/ +/* srvsvc_NetSrv */ +/**************************/ + typedef [public,v1_enum] enum { + PLATFORM_ID_DOS = 300, + PLATFORM_ID_OS2 = 400, + PLATFORM_ID_NT = 500, + PLATFORM_ID_OSF = 600, + PLATFORM_ID_VMS = 700 + } srvsvc_PlatformId; + + typedef struct { + srvsvc_PlatformId platform_id; + [string,charset(UTF16)] uint16 *server_name; + } srvsvc_NetSrvInfo100; + + typedef struct { + srvsvc_PlatformId platform_id; + [string,charset(UTF16)] uint16 *server_name; + uint32 version_major; + uint32 version_minor; + svcctl_ServerType server_type; + [string,charset(UTF16)] uint16 *comment; + } srvsvc_NetSrvInfo101; + + typedef struct { + srvsvc_PlatformId platform_id; + [string,charset(UTF16)] uint16 *server_name; + uint32 version_major; + uint32 version_minor; + svcctl_ServerType server_type; + [string,charset(UTF16)] uint16 *comment; + uint32 users; + uint32 disc; + uint32 hidden; + uint32 announce; + uint32 anndelta; + uint32 licenses; + [string,charset(UTF16)] uint16 *userpath; + } srvsvc_NetSrvInfo102; + + typedef struct { + uint32 ulist_mtime; + uint32 glist_mtime; + uint32 alist_mtime; + [string,charset(UTF16)] uint16 *alerts; + uint32 security; + uint32 numadmin; + uint32 lanmask; + [string,charset(UTF16)] uint16 *guestaccount; + uint32 chdevs; + uint32 chdevqs; + uint32 chdevjobs; + uint32 connections; + uint32 shares; + uint32 openfiles; + uint32 sessopen; + uint32 sesssvc; + uint32 sessreqs; + uint32 opensearch; + uint32 activelocks; + uint32 numreqbufs; + uint32 sizereqbufs; + uint32 numbigbufs; + uint32 numfiletasks; + uint32 alertsched; + uint32 erroralert; + uint32 logonalert; + uint32 accessalert; + uint32 diskalert; + uint32 netioalert; + uint32 maxaudits; + [string,charset(UTF16)] uint16 *srvheuristics; + } srvsvc_NetSrvInfo402; + + typedef struct { + uint32 ulist_mtime; + uint32 glist_mtime; + uint32 alist_mtime; + [string,charset(UTF16)] uint16 *alerts; + uint32 security; + uint32 numadmin; + uint32 lanmask; + [string,charset(UTF16)] uint16 *guestaccount; + uint32 chdevs; + uint32 chdevqs; + uint32 chdevjobs; + uint32 connections; + uint32 shares; + uint32 openfiles; + uint32 sessopen; + uint32 sesssvc; + uint32 sessreqs; + uint32 opensearch; + uint32 activelocks; + uint32 numreqbufs; + uint32 sizereqbufs; + uint32 numbigbufs; + uint32 numfiletasks; + uint32 alertsched; + uint32 eroralert; + uint32 logonalert; + uint32 accessalert; + uint32 diskalert; + uint32 netioalert; + uint32 maxaudits; + [string,charset(UTF16)] uint16 *srvheuristics; + uint32 auditedevents; + uint32 auditprofile; + [string,charset(UTF16)] uint16 *autopath; + } srvsvc_NetSrvInfo403; + + typedef struct { + uint32 sessopen; + uint32 sesssvc; + uint32 opensearch; + uint32 sizereqbufs; + uint32 initworkitems; + uint32 maxworkitems; + uint32 rawworkitems; + uint32 irpstacksize; + uint32 maxrawbuflen; + uint32 sessusers; + uint32 sessconns; + uint32 maxpagedmemoryusage; + uint32 maxnonpagedmemoryusage; + uint32 enablesoftcompat; + uint32 enableforcedlogoff; + uint32 timesource; + uint32 acceptdownlevelapis; + uint32 lmannounce; + } srvsvc_NetSrvInfo502; + + typedef struct{ + uint32 sessopen; + uint32 sesssvc; + uint32 opensearch; + uint32 sizereqbufs; + uint32 initworkitems; + uint32 maxworkitems; + uint32 rawworkitems; + uint32 irpstacksize; + uint32 maxrawbuflen; + uint32 sessusers; + uint32 sessconns; + uint32 maxpagedmemoryusage; + uint32 maxnonpagedmemoryusage; + uint32 enablesoftcompat; + uint32 enableforcedlogoff; + uint32 timesource; + uint32 acceptdownlevelapis; + uint32 lmannounce; + [string,charset(UTF16)] uint16 *domain; + uint32 maxcopyreadlen; + uint32 maxcopywritelen; + uint32 minkeepsearch; + uint32 maxkeepsearch; + uint32 minkeepcomplsearch; + uint32 maxkeepcomplsearch; + uint32 threadcountadd; + uint32 numlockthreads; + uint32 scavtimeout; + uint32 minrcvqueue; + uint32 minfreeworkitems; + uint32 xactmemsize; + uint32 threadpriority; + uint32 maxmpxct; + uint32 oplockbreakwait; + uint32 oplockbreakresponsewait; + uint32 enableoplocks; + uint32 enableoplockforceclose; + uint32 enablefcbopens; + uint32 enableraw; + uint32 enablesharednetdrives; + uint32 minfreeconnections; + uint32 maxfreeconnections; + } srvsvc_NetSrvInfo503; + + typedef struct{ + uint32 sessopen; + uint32 sesssvc; + uint32 opensearch; + uint32 sizereqbufs; + uint32 initworkitems; + uint32 maxworkitems; + uint32 rawworkitems; + uint32 irpstacksize; + uint32 maxrawbuflen; + uint32 sessusers; + uint32 sessconns; + uint32 maxpagedmemoryusage; + uint32 maxnonpagedmemoryusage; + uint32 enablesoftcompat; + uint32 enableforcedlogoff; + uint32 timesource; + uint32 acceptdownlevelapis; + uint32 lmannounce; + [string,charset(UTF16)] uint16 *domain; + uint32 maxcopyreadlen; + uint32 maxcopywritelen; + uint32 minkeepsearch; + uint32 minkeepcomplsearch; + uint32 maxkeepcomplsearch; + uint32 threadcountadd; + uint32 numlockthreads; + uint32 scavtimeout; + uint32 minrcvqueue; + uint32 minfreeworkitems; + uint32 xactmemsize; + uint32 threadpriority; + uint32 maxmpxct; + uint32 oplockbreakwait; + uint32 oplockbreakresponsewait; + uint32 enableoplocks; + uint32 enableoplockforceclose; + uint32 enablefcbopens; + uint32 enableraw; + uint32 enablesharednetdrives; + uint32 minfreeconnections; + uint32 maxfreeconnections; + uint32 initsesstable; + uint32 initconntable; + uint32 initfiletable; + uint32 initsearchtable; + uint32 alertsched; + uint32 errortreshold; + uint32 networkerrortreshold; + uint32 diskspacetreshold; + uint32 reserved; + uint32 maxlinkdelay; + uint32 minlinkthroughput; + uint32 linkinfovalidtime; + uint32 scavqosinfoupdatetime; + uint32 maxworkitemidletime; + } srvsvc_NetSrvInfo599; + + typedef struct{ + [string,charset(UTF16)] uint16 *comment; + } srvsvc_NetSrvInfo1005; + + typedef struct{ + uint32 disc; + } srvsvc_NetSrvInfo1010; + + typedef struct{ + uint32 hidden; + } srvsvc_NetSrvInfo1016; + + typedef struct{ + uint32 announce; + } srvsvc_NetSrvInfo1017; + + typedef struct{ + uint32 anndelta; + } srvsvc_NetSrvInfo1018; + + typedef struct{ + uint32 users; + } srvsvc_NetSrvInfo1107; + + typedef struct{ + uint32 sessopens; + } srvsvc_NetSrvInfo1501; + + typedef struct{ + uint32 sessvcs; + } srvsvc_NetSrvInfo1502; + + typedef struct{ + uint32 opensearch; + } srvsvc_NetSrvInfo1503; + + typedef struct{ + uint32 maxworkitems; + } srvsvc_NetSrvInfo1506; + + typedef struct{ + uint32 maxrawbuflen; + } srvsvc_NetSrvInfo1509; + + typedef struct{ + uint32 sessusers; + } srvsvc_NetSrvInfo1510; + + typedef struct{ + uint32 sesscons; + } srvsvc_NetSrvInfo1511; + + typedef struct{ + uint32 maxnonpagedmemoryusage; + } srvsvc_NetSrvInfo1512; + + typedef struct{ + uint32 maxpagedmemoryusage; + } srvsvc_NetSrvInfo1513; + + typedef struct{ + uint32 enablesoftcompat; + } srvsvc_NetSrvInfo1514; + + typedef struct{ + uint32 enableforcedlogoff; + } srvsvc_NetSrvInfo1515; + + typedef struct{ + uint32 timesource; + } srvsvc_NetSrvInfo1516; + + typedef struct{ + uint32 lmannounce; + } srvsvc_NetSrvInfo1518; + + typedef struct{ + uint32 maxcopyreadlen; + } srvsvc_NetSrvInfo1520; + + typedef struct{ + uint32 maxcopywritelen; + } srvsvc_NetSrvInfo1521; + + typedef struct{ + uint32 minkeepsearch; + } srvsvc_NetSrvInfo1522; + + typedef struct{ + uint32 maxkeepsearch; + } srvsvc_NetSrvInfo1523; + + typedef struct{ + uint32 minkeepcomplsearch; + } srvsvc_NetSrvInfo1524; + + typedef struct{ + uint32 maxkeepcomplsearch; + } srvsvc_NetSrvInfo1525; + + typedef struct{ + uint32 scavtimeout; + } srvsvc_NetSrvInfo1528; + + typedef struct{ + uint32 minrcvqueue; + } srvsvc_NetSrvInfo1529; + + typedef struct{ + uint32 minfreeworkitems; + } srvsvc_NetSrvInfo1530; + + typedef struct{ + uint32 maxmpxct; + } srvsvc_NetSrvInfo1533; + + typedef struct{ + uint32 oplockbreakwait; + } srvsvc_NetSrvInfo1534; + + typedef struct{ + uint32 oplockbreakresponsewait; + } srvsvc_NetSrvInfo1535; + + typedef struct{ + uint32 enableoplocks; + } srvsvc_NetSrvInfo1536; + + typedef struct{ + uint32 enableoplockforceclose; + } srvsvc_NetSrvInfo1537; + + typedef struct{ + uint32 enablefcbopens; + } srvsvc_NetSrvInfo1538; + + typedef struct{ + uint32 enableraw; + } srvsvc_NetSrvInfo1539; + + typedef struct{ + uint32 enablesharednetdrives; + } srvsvc_NetSrvInfo1540; + + typedef struct{ + uint32 minfreeconnections; + } srvsvc_NetSrvInfo1541; + + typedef struct{ + uint32 maxfreeconnections; + } srvsvc_NetSrvInfo1542; + + typedef struct{ + uint32 initsesstable; + } srvsvc_NetSrvInfo1543; + + typedef struct{ + uint32 initconntable; + } srvsvc_NetSrvInfo1544; + + typedef struct{ + uint32 initfiletable; + } srvsvc_NetSrvInfo1545; + + typedef struct{ + uint32 initsearchtable; + } srvsvc_NetSrvInfo1546; + + typedef struct{ + uint32 alertsched; + } srvsvc_NetSrvInfo1547; + + typedef struct{ + uint32 errortreshold; + } srvsvc_NetSrvInfo1548; + + typedef struct{ + uint32 networkerrortreshold; + } srvsvc_NetSrvInfo1549; + + typedef struct{ + uint32 diskspacetreshold; + } srvsvc_NetSrvInfo1550; + + typedef struct{ + uint32 maxlinkdelay; + } srvsvc_NetSrvInfo1552; + + typedef struct{ + uint32 minlinkthroughput; + } srvsvc_NetSrvInfo1553; + + typedef struct{ + uint32 linkinfovalidtime; + } srvsvc_NetSrvInfo1554; + + typedef struct{ + uint32 scavqosinfoupdatetime; + } srvsvc_NetSrvInfo1555; + + typedef struct{ + uint32 maxworkitemidletime; + } srvsvc_NetSrvInfo1556; + + + typedef union{ + [case(100)] srvsvc_NetSrvInfo100 *info100; + [case(101)] srvsvc_NetSrvInfo101 *info101; + [case(102)] srvsvc_NetSrvInfo102 *info102; + [case(402)] srvsvc_NetSrvInfo402 *info402; + [case(403)] srvsvc_NetSrvInfo403 *info403; + [case(502)] srvsvc_NetSrvInfo502 *info502; + [case(503)] srvsvc_NetSrvInfo503 *info503; + [case(599)] srvsvc_NetSrvInfo599 *info599; + [case(1005)] srvsvc_NetSrvInfo1005 *info1005; + [case(1010)] srvsvc_NetSrvInfo1010 *info1010; + [case(1016)] srvsvc_NetSrvInfo1016 *info1016; + [case(1017)] srvsvc_NetSrvInfo1017 *info1017; + [case(1018)] srvsvc_NetSrvInfo1018 *info1018; + [case(1107)] srvsvc_NetSrvInfo1107 *info1107; + [case(1501)] srvsvc_NetSrvInfo1501 *info1501; + [case(1502)] srvsvc_NetSrvInfo1502 *info1502; + [case(1503)] srvsvc_NetSrvInfo1503 *info1503; + [case(1506)] srvsvc_NetSrvInfo1506 *info1506; + [case(1509)] srvsvc_NetSrvInfo1509 *info1509; + [case(1510)] srvsvc_NetSrvInfo1510 *info1510; + [case(1511)] srvsvc_NetSrvInfo1511 *info1511; + [case(1512)] srvsvc_NetSrvInfo1512 *info1512; + [case(1513)] srvsvc_NetSrvInfo1513 *info1513; + [case(1514)] srvsvc_NetSrvInfo1514 *info1514; + [case(1515)] srvsvc_NetSrvInfo1515 *info1515; + [case(1516)] srvsvc_NetSrvInfo1516 *info1516; + [case(1518)] srvsvc_NetSrvInfo1518 *info1518; + [case(1520)] srvsvc_NetSrvInfo1520 *info1520; + [case(1521)] srvsvc_NetSrvInfo1521 *info1521; + [case(1522)] srvsvc_NetSrvInfo1522 *info1522; + [case(1523)] srvsvc_NetSrvInfo1523 *info1523; + [case(1524)] srvsvc_NetSrvInfo1524 *info1524; + [case(1525)] srvsvc_NetSrvInfo1525 *info1525; + [case(1528)] srvsvc_NetSrvInfo1528 *info1528; + [case(1529)] srvsvc_NetSrvInfo1529 *info1529; + [case(1530)] srvsvc_NetSrvInfo1530 *info1530; + [case(1533)] srvsvc_NetSrvInfo1533 *info1533; + [case(1534)] srvsvc_NetSrvInfo1534 *info1534; + [case(1535)] srvsvc_NetSrvInfo1535 *info1535; + [case(1536)] srvsvc_NetSrvInfo1536 *info1536; + [case(1537)] srvsvc_NetSrvInfo1537 *info1537; + [case(1538)] srvsvc_NetSrvInfo1538 *info1538; + [case(1539)] srvsvc_NetSrvInfo1539 *info1539; + [case(1540)] srvsvc_NetSrvInfo1540 *info1540; + [case(1541)] srvsvc_NetSrvInfo1541 *info1541; + [case(1542)] srvsvc_NetSrvInfo1542 *info1542; + [case(1543)] srvsvc_NetSrvInfo1543 *info1543; + [case(1544)] srvsvc_NetSrvInfo1544 *info1544; + [case(1545)] srvsvc_NetSrvInfo1545 *info1545; + [case(1546)] srvsvc_NetSrvInfo1546 *info1546; + [case(1547)] srvsvc_NetSrvInfo1547 *info1547; + [case(1548)] srvsvc_NetSrvInfo1548 *info1548; + [case(1549)] srvsvc_NetSrvInfo1549 *info1549; + [case(1550)] srvsvc_NetSrvInfo1550 *info1550; + [case(1552)] srvsvc_NetSrvInfo1552 *info1552; + [case(1553)] srvsvc_NetSrvInfo1553 *info1553; + [case(1554)] srvsvc_NetSrvInfo1554 *info1554; + [case(1555)] srvsvc_NetSrvInfo1555 *info1555; + [case(1556)] srvsvc_NetSrvInfo1556 *info1556; + [default]; + } srvsvc_NetSrvInfo; + + /******************/ + /* Function: 0x15 */ + WERROR srvsvc_NetSrvGetInfo( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] uint32 level, + [out,ref,switch_is(level)] srvsvc_NetSrvInfo *info + ); + + /******************/ + /* Function: 0x16 */ + WERROR srvsvc_NetSrvSetInfo( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] uint32 level, + [in,ref,switch_is(level)] srvsvc_NetSrvInfo *info, + [in,out,unique] uint32 *parm_error + ); + +/**************************/ +/* srvsvc_NetDisk */ +/**************************/ + typedef struct { + /* + * In theory this should be: + * [charset(UTF16),string] uint16 annotation[3] + * But midl treats this as: + * [charset(UTF16),string] uint16 annotation[] + * and pidl doesn't support this yet + */ + [value(0)] uint32 __disk_offset; + [value(strlen(disk)+1)] uint32 __disk_length; + [charset(UTF16)] uint16 disk[__disk_length]; + } srvsvc_NetDiskInfo0; + + typedef struct { + uint32 count; + [size_is(count), length_is(count)] srvsvc_NetDiskInfo0 *disks; + } srvsvc_NetDiskInfo; + + /******************/ + /* Function: 0x17 */ + WERROR srvsvc_NetDiskEnum( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] uint32 level, + [in,out,ref] srvsvc_NetDiskInfo *info, + [in] uint32 maxlen, + [out,ref] uint32 *totalentries, + [in,out,unique] uint32 *resume_handle + ); + +/**************************/ +/* srvsvc_NetStatistics */ +/**************************/ + typedef struct { + uint32 start; + uint32 fopens; + uint32 devopens; + uint32 jobsqueued; + uint32 sopens; + uint32 stimeouts; + uint32 serrorout; + uint32 pwerrors; + uint32 permerrors; + uint32 syserrors; + uint32 bytessent_low; + uint32 bytessent_high; + uint32 bytesrcvd_low; + uint32 bytesrcvd_high; + uint32 avresponse; + uint32 reqbufneed; + uint32 bigbufneed; + } srvsvc_Statistics; + + /******************/ + /* Function: 0x18 */ + WERROR srvsvc_NetServerStatisticsGet( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,unique] [string,charset(UTF16)] uint16 *service, + [in] uint32 level, + [in] uint32 options, + [out,ref] srvsvc_Statistics **stats + ); + +/**************************/ +/* srvsvc_NetTransport */ +/**************************/ + typedef struct { + uint32 vcs; + [string,charset(UTF16)] uint16 *name; + [size_is(addr_len)] uint8 *addr; + uint32 addr_len; + [string,charset(UTF16)] uint16 *net_addr; + } srvsvc_NetTransportInfo0; + + /******************/ + /* Function: 0x19 */ + WERROR srvsvc_NetTransportAdd( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] uint32 level, + [in,switch_is(level)] srvsvc_NetTransportInfo info + ); + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetTransportInfo0 *array; + } srvsvc_NetTransportCtr0; + + typedef struct { + uint32 vcs; + [string,charset(UTF16)] uint16 *name; + [size_is(addr_len)] uint8 *addr; + uint32 addr_len; + [string,charset(UTF16)] uint16 *net_addr; + [string,charset(UTF16)] uint16 *domain; + } srvsvc_NetTransportInfo1; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetTransportInfo1 *array; + } srvsvc_NetTransportCtr1; + + typedef struct { + uint32 vcs; + [string,charset(UTF16)] uint16 *name; + [size_is(addr_len)] uint8 *addr; + uint32 addr_len; + [string,charset(UTF16)] uint16 *net_addr; + [string,charset(UTF16)] uint16 *domain; + uint32 unknown; + } srvsvc_NetTransportInfo2; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetTransportInfo2 *array; + } srvsvc_NetTransportCtr2; + + typedef struct { + uint32 vcs; + [string,charset(UTF16)] uint16 *name; + [size_is(addr_len)] uint8 *addr; + uint32 addr_len; + [string,charset(UTF16)] uint16 *net_addr; + [string,charset(UTF16)] uint16 *domain; + uint32 unknown1; + uint32 unknown2; + uint8 unknown3[256]; + } srvsvc_NetTransportInfo3; + + typedef struct { + uint32 count; + [size_is(count)] srvsvc_NetTransportInfo3 *array; + } srvsvc_NetTransportCtr3; + + typedef union { + [case(0)] srvsvc_NetTransportCtr0 *ctr0; + [case(1)] srvsvc_NetTransportCtr1 *ctr1; + [case(2)] srvsvc_NetTransportCtr2 *ctr2; + [case(3)] srvsvc_NetTransportCtr3 *ctr3; + [default]; + } srvsvc_NetTransportCtr; + + typedef struct { + uint32 level; + [switch_is(level)] srvsvc_NetTransportCtr ctr; + } srvsvc_NetTransportInfoCtr; + + /******************/ + /* Function: 0x1a */ + WERROR srvsvc_NetTransportEnum( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,out,ref] srvsvc_NetTransportInfoCtr *transports, + [in] uint32 max_buffer, + [out,ref] uint32 *totalentries, + [in,out,unique] uint32 *resume_handle + ); + + /******************/ + /* Function: 0x1b */ + WERROR srvsvc_NetTransportDel( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] uint32 level, + [in] srvsvc_NetTransportInfo0 *info0 + ); + +/**************************/ +/* srvsvc_NetRemoteTOD */ +/**************************/ + typedef struct { + uint32 elapsed; /* time(NULL) */ + uint32 msecs; /* milliseconds till system reboot (uptime) */ + uint32 hours; + uint32 mins; + uint32 secs; + uint32 hunds; + int32 timezone; /* in minutes */ + uint32 tinterval; /* clock tick interval in 0.0001 second units; 310 on windows */ + uint32 day; + uint32 month; + uint32 year; + uint32 weekday; + } srvsvc_NetRemoteTODInfo; + + /******************/ + /* Function: 0x1c */ + WERROR srvsvc_NetRemoteTOD( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [out,ref] srvsvc_NetRemoteTODInfo **info + ); + +/**************************/ +/* srvsvc_NetServiceBits */ +/**************************/ + /******************/ + /* Function: 0x1d */ + WERROR srvsvc_NetSetServiceBits( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,unique] [string,charset(UTF16)] uint16 *transport, + [in] uint32 servicebits, + [in] uint32 updateimmediately + ); + +/**************************/ +/* srvsvc_NetPath */ +/**************************/ + /******************/ + /* Function: 0x1e */ + WERROR srvsvc_NetPathType( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 path[], + [in] uint32 pathflags, + [out,ref] uint32 *pathtype + ); + + /******************/ + /* Function: 0x1f */ + WERROR srvsvc_NetPathCanonicalize( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 path[], + [out] [size_is(maxbuf)] uint8 can_path[], + [in] uint32 maxbuf, + [in] [string,charset(UTF16)] uint16 prefix[], + [in,out,ref] uint32 *pathtype, + [in] uint32 pathflags + ); + + /******************/ + /* Function: 0x20 */ + WERROR srvsvc_NetPathCompare( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 path1[], + [in] [string,charset(UTF16)] uint16 path2[], + [in] uint32 pathtype, + [in] uint32 pathflags + ); + +/**************************/ +/* srvsvc_NetName */ +/**************************/ + /******************/ + /* Function: 0x21 */ + WERROR srvsvc_NetNameValidate( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 name[], + [in] uint32 name_type, + [in] uint32 flags + ); + + /******************/ + /* Function: 0x22 */ + [todo] WERROR srvsvc_NETRPRNAMECANONICALIZE( + ); + + /******************/ + /* Function: 0x23 */ + WERROR srvsvc_NetPRNameCompare( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 name1[], + [in] [string,charset(UTF16)] uint16 name2[], + [in] uint32 name_type, + [in] uint32 flags + ); + +/**************************/ +/* srvsvc_NetShare ... */ +/**************************/ + /******************/ + /* Function: 0x24 */ + /* Note, there must be some way to return entries read vs + total entries ... */ + WERROR srvsvc_NetShareEnum( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,out,ref] srvsvc_NetShareInfoCtr *info_ctr, + [in] uint32 max_buffer, + [out,ref] uint32 *totalentries, + [in,out,unique] uint32 *resume_handle + ); + + /******************/ + /* Function: 0x25 */ + WERROR srvsvc_NetShareDelStart( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] [string,charset(UTF16)] uint16 share[], + [in] uint32 reserved, + [out,unique] policy_handle *hnd + ); + + /******************/ + /* Function: 0x26 */ + WERROR srvsvc_NetShareDelCommit( + [in, out,unique] policy_handle *hnd + ); + + /******************/ + /* Function: 0x27 */ + WERROR srvsvc_NetGetFileSecurity( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,unique] [string,charset(UTF16)] uint16 *share, + [in] [string,charset(UTF16)] uint16 file[], + [in] security_secinfo securityinformation, + [out,ref] sec_desc_buf **sd_buf + ); + + /******************/ + /* Function: 0x28 */ + WERROR srvsvc_NetSetFileSecurity( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,unique] [string,charset(UTF16)] uint16 *share, + [in] [string,charset(UTF16)] uint16 file[], + [in] security_secinfo securityinformation, + [in,ref] sec_desc_buf *sd_buf + ); + + + + typedef [switch_type(uint32)] union { + [case(0)] srvsvc_NetTransportInfo0 info0; + [case(1)] srvsvc_NetTransportInfo1 info1; + [case(2)] srvsvc_NetTransportInfo2 info2; + [case(3)] srvsvc_NetTransportInfo3 info3; + } srvsvc_NetTransportInfo; + + /******************/ + /* Function: 0x29 */ + WERROR srvsvc_NetServerTransportAddEx( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in] uint32 level, + [in,switch_is(level)] srvsvc_NetTransportInfo info + ); + + /******************/ + /* Function: 0x2a */ + WERROR srvsvc_NetServerSetServiceBitsEx( + [in,unique] [string,charset(UTF16)] uint16 *server_unc, + [in,unique] [string,charset(UTF16)] uint16 *emulated_server_unc, + [in,unique] [string,charset(UTF16)] uint16 *transport, + [in] uint32 servicebitsofinterest, + [in] uint32 servicebits, + [in] uint32 updateimmediately + ); + + /******************/ + /* Function: 0x2b */ + [todo] WERROR srvsvc_NETRDFSGETVERSION( + ); + + /******************/ + /* Function: 0x2c */ + [todo] WERROR srvsvc_NETRDFSCREATELOCALPARTITION( + ); + + /******************/ + /* Function: 0x2d */ + [todo] WERROR srvsvc_NETRDFSDELETELOCALPARTITION( + ); + + /******************/ + /* Function: 0x2e */ + [todo] WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE( + ); + + /******************/ + /* Function: 0x2f */ + [todo] WERROR srvsvc_NETRDFSSETSERVERINFO( + ); + + /******************/ + /* Function: 0x30 */ + [todo] WERROR srvsvc_NETRDFSCREATEEXITPOINT( + ); + + /******************/ + /* Function: 0x31 */ + [todo] WERROR srvsvc_NETRDFSDELETEEXITPOINT( + ); + + /******************/ + /* Function: 0x32 */ + [todo] WERROR srvsvc_NETRDFSMODIFYPREFIX( + ); + + /******************/ + /* Function: 0x33 */ + [todo] WERROR srvsvc_NETRDFSFIXLOCALVOLUME( + ); + + /******************/ + /* Function: 0x34 */ + [todo] WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO( + ); + + /******************/ + /* Function: 0x35 */ + [todo] WERROR srvsvc_NETRSERVERTRANSPORTDELEX( + ); +} diff --git a/source3/Makefile.in b/source3/Makefile.in index 6bd72f8f0a..eae7dad7a6 100644 --- a/source3/Makefile.in +++ b/source3/Makefile.in @@ -1216,7 +1216,7 @@ samba3-idl:: @PIDL_ARGS="$(PIDL_ARGS)" CPP="$(CPP)" PIDL="../pidl/pidl" \ srcdir="$(srcdir)" $(srcdir)/script/build_idl.sh ../librpc/idl/lsa.idl \ ../librpc/idl/dfs.idl ../librpc/idl/echo.idl ../librpc/idl/winreg.idl \ - ../librpc/idl/initshutdown.idl librpc/idl/srvsvc.idl ../librpc/idl/svcctl.idl \ + ../librpc/idl/initshutdown.idl ../librpc/idl/srvsvc.idl ../librpc/idl/svcctl.idl \ ../librpc/idl/eventlog.idl ../librpc/idl/wkssvc.idl ../librpc/idl/netlogon.idl \ ../librpc/idl/notify.idl ../librpc/idl/epmapper.idl librpc/idl/messaging.idl \ ../librpc/idl/xattr.idl ../librpc/idl/misc.idl librpc/idl/samr.idl \ diff --git a/source3/librpc/idl/srvsvc.idl b/source3/librpc/idl/srvsvc.idl deleted file mode 100644 index 4304dbed96..0000000000 --- a/source3/librpc/idl/srvsvc.idl +++ /dev/null @@ -1,1547 +0,0 @@ -#include "idl_types.h" - -/* - srvsvc interface definitions -*/ -import "security.idl", "svcctl.idl"; - -[ uuid("4b324fc8-1670-01d3-1278-5a47bf6ee188"), - version(3.0), - endpoint("ncacn_np:[\\pipe\\srvsvc]", "ncacn_ip_tcp:", "ncalrpc:"), - pointer_default(unique), - helpstring("Server Service") -] interface srvsvc -{ - typedef bitmap svcctl_ServerType svcctl_ServerType; - typedef bitmap security_secinfo security_secinfo; - -/**************************/ -/* srvsvc_NetCharDev */ -/**************************/ - typedef struct { - [string,charset(UTF16)] uint16 *device; - } srvsvc_NetCharDevInfo0; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetCharDevInfo0 *array; - } srvsvc_NetCharDevCtr0; - - typedef struct { - [string,charset(UTF16)] uint16 *device; - uint32 status; - [string,charset(UTF16)] uint16 *user; - uint32 time; - } srvsvc_NetCharDevInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetCharDevInfo1 *array; - } srvsvc_NetCharDevCtr1; - - typedef union { - [case(0)] srvsvc_NetCharDevInfo0 *info0; - [case(1)] srvsvc_NetCharDevInfo1 *info1; - [default] ; - } srvsvc_NetCharDevInfo; - - typedef union { - [case(0)] srvsvc_NetCharDevCtr0 *ctr0; - [case(1)] srvsvc_NetCharDevCtr1 *ctr1; - [default] ; - } srvsvc_NetCharDevCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetCharDevCtr ctr; - } srvsvc_NetCharDevInfoCtr; - - /******************/ - /* Function: 0x00 */ - WERROR srvsvc_NetCharDevEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out,ref] srvsvc_NetCharDevInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x01 */ - WERROR srvsvc_NetCharDevGetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 device_name[], - [in] uint32 level, - [out,ref,switch_is(level)] srvsvc_NetCharDevInfo *info - ); - - /******************/ - /* Function: 0x02 */ - WERROR srvsvc_NetCharDevControl( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 device_name[], - [in] uint32 opcode - ); - -/**************************/ -/* srvsvc_NetCharDevQ */ -/**************************/ - typedef struct { - [string,charset(UTF16)] uint16 *device; - } srvsvc_NetCharDevQInfo0; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetCharDevQInfo0 *array; - } srvsvc_NetCharDevQCtr0; - - typedef struct { - [string,charset(UTF16)] uint16 *device; - uint32 priority; - [string,charset(UTF16)] uint16 *devices; - uint32 users; - uint32 num_ahead; - } srvsvc_NetCharDevQInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetCharDevQInfo1 *array; - } srvsvc_NetCharDevQCtr1; - - typedef union { - [case(0)] srvsvc_NetCharDevQInfo0 *info0; - [case(1)] srvsvc_NetCharDevQInfo1 *info1; - [default] ; - } srvsvc_NetCharDevQInfo; - - typedef union { - [case(0)] srvsvc_NetCharDevQCtr0 *ctr0; - [case(1)] srvsvc_NetCharDevQCtr1 *ctr1; - [default] ; - } srvsvc_NetCharDevQCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetCharDevQCtr ctr; - } srvsvc_NetCharDevQInfoCtr; - - /******************/ - /* Function: 0x03 */ - WERROR srvsvc_NetCharDevQEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *user, - [in,out,ref] srvsvc_NetCharDevQInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x04 */ - WERROR srvsvc_NetCharDevQGetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 queue_name[], - [in] [string,charset(UTF16)] uint16 user[], - [in] uint32 level, - [out,switch_is(level),ref] srvsvc_NetCharDevQInfo *info - ); - - /******************/ - /* Function: 0x05 */ - WERROR srvsvc_NetCharDevQSetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 queue_name[], - [in] uint32 level, - [in,switch_is(level)] srvsvc_NetCharDevQInfo info, - [in,out,unique] uint32 *parm_error - ); - - /******************/ - /* Function: 0x06 */ - WERROR srvsvc_NetCharDevQPurge( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 queue_name[] - ); - - /******************/ - /* Function: 0x07 */ - WERROR srvsvc_NetCharDevQPurgeSelf( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 queue_name[], - [in] [string,charset(UTF16)] uint16 computer_name[] - ); - -/**************************/ -/* srvsvc_NetConn */ -/**************************/ - typedef struct { - uint32 conn_id; - } srvsvc_NetConnInfo0; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetConnInfo0 *array; - } srvsvc_NetConnCtr0; - - typedef struct { - uint32 conn_id; - uint32 conn_type; - uint32 num_open; - uint32 num_users; - uint32 conn_time; - [string,charset(UTF16)] uint16 *user; - [string,charset(UTF16)] uint16 *share; - } srvsvc_NetConnInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetConnInfo1 *array; - } srvsvc_NetConnCtr1; - - typedef union { - [case(0)] srvsvc_NetConnCtr0 *ctr0; - [case(1)] srvsvc_NetConnCtr1 *ctr1; - [default] ; - } srvsvc_NetConnCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetConnCtr ctr; - } srvsvc_NetConnInfoCtr; - - /******************/ - /* Function: 0x08 */ - WERROR srvsvc_NetConnEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *path, - [in,out,ref] srvsvc_NetConnInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - -/**************************/ -/* srvsvc_NetFile */ -/**************************/ - typedef struct { - uint32 fid; - } srvsvc_NetFileInfo2; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetFileInfo2 *array; - } srvsvc_NetFileCtr2; - - typedef struct { - uint32 fid; - uint32 permissions; - uint32 num_locks; - [string,charset(UTF16)] uint16 *path; - [string,charset(UTF16)] uint16 *user; - } srvsvc_NetFileInfo3; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetFileInfo3 *array; - } srvsvc_NetFileCtr3; - - typedef union { - [case(2)] srvsvc_NetFileInfo2 *info2; - [case(3)] srvsvc_NetFileInfo3 *info3; - [default] ; - } srvsvc_NetFileInfo; - - typedef union { - [case(2)] srvsvc_NetFileCtr2 *ctr2; - [case(3)] srvsvc_NetFileCtr3 *ctr3; - [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] srvsvc_NetFileInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x0a */ - WERROR srvsvc_NetFileGetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 fid, - [in] uint32 level, - [out,switch_is(level),ref] srvsvc_NetFileInfo *info - ); - - /******************/ - /* Function: 0x0b */ - WERROR srvsvc_NetFileClose( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 fid - ); - -/**************************/ -/* srvsvc_NetSess */ -/**************************/ - typedef struct { - [string,charset(UTF16)] uint16 *client; - } srvsvc_NetSessInfo0; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetSessInfo0 *array; - } srvsvc_NetSessCtr0; - - typedef struct { - [string,charset(UTF16)] uint16 *client; - [string,charset(UTF16)] uint16 *user; - uint32 num_open; - uint32 time; - uint32 idle_time; - uint32 user_flags; - } srvsvc_NetSessInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetSessInfo1 *array; - } srvsvc_NetSessCtr1; - - typedef struct { - [string,charset(UTF16)] uint16 *client; - [string,charset(UTF16)] uint16 *user; - uint32 num_open; - uint32 time; - uint32 idle_time; - uint32 user_flags; - [string,charset(UTF16)] uint16 *client_type; - } srvsvc_NetSessInfo2; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetSessInfo2 *array; - } srvsvc_NetSessCtr2; - - typedef struct { - [string,charset(UTF16)] uint16 *client; - [string,charset(UTF16)] uint16 *user; - uint32 time; - uint32 idle_time; - } srvsvc_NetSessInfo10; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetSessInfo10 *array; - } srvsvc_NetSessCtr10; - - typedef struct { - [string,charset(UTF16)] uint16 *client; - [string,charset(UTF16)] uint16 *user; - uint32 num_open; - uint32 time; - uint32 idle_time; - uint32 user_flags; - [string,charset(UTF16)] uint16 *client_type; - [string,charset(UTF16)] uint16 *transport; - } srvsvc_NetSessInfo502; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetSessInfo502 *array; - } srvsvc_NetSessCtr502; - - typedef union { - [case(0)] srvsvc_NetSessCtr0 *ctr0; - [case(1)] srvsvc_NetSessCtr1 *ctr1; - [case(2)] srvsvc_NetSessCtr2 *ctr2; - [case(10)] srvsvc_NetSessCtr10 *ctr10; - [case(502)] srvsvc_NetSessCtr502 *ctr502; - [default] ; - } srvsvc_NetSessCtr; - - /******************/ - /* 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] srvsvc_NetSessInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x0d */ - WERROR srvsvc_NetSessDel( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *client, - [in,unique] [string,charset(UTF16)] uint16 *user - ); - -/**************************/ -/* srvsvc_NetShare */ -/**************************/ - - /* share types */ - const uint32 STYPE_TEMPORARY = 0x40000000; /* share is a temporary one */ - const uint32 STYPE_HIDDEN = 0x80000000; /* share is a hidden one */ - - typedef [v1_enum, flag(NDR_PAHEX)] enum { - STYPE_DISKTREE = 0, - STYPE_DISKTREE_TEMPORARY = STYPE_DISKTREE|STYPE_TEMPORARY, - STYPE_DISKTREE_HIDDEN = STYPE_DISKTREE|STYPE_HIDDEN, - STYPE_PRINTQ = 1, - STYPE_PRINTQ_TEMPORARY = STYPE_PRINTQ|STYPE_TEMPORARY, - STYPE_PRINTQ_HIDDEN = STYPE_PRINTQ|STYPE_HIDDEN, - STYPE_DEVICE = 2, /* Serial device */ - STYPE_DEVICE_TEMPORARY = STYPE_DEVICE|STYPE_TEMPORARY, - STYPE_DEVICE_HIDDEN = STYPE_DEVICE|STYPE_HIDDEN, - STYPE_IPC = 3, /* Interprocess communication (IPC) */ - STYPE_IPC_TEMPORARY = STYPE_IPC|STYPE_TEMPORARY, - STYPE_IPC_HIDDEN = STYPE_IPC|STYPE_HIDDEN - } srvsvc_ShareType; - - typedef struct { - [string,charset(UTF16)] uint16 *name; - } srvsvc_NetShareInfo0; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo0 *array; - } srvsvc_NetShareCtr0; - - typedef struct { - [string,charset(UTF16)] uint16 *name; - srvsvc_ShareType type; - [string,charset(UTF16)] uint16 *comment; - } srvsvc_NetShareInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo1 *array; - } srvsvc_NetShareCtr1; - - typedef struct { - [string,charset(UTF16)] uint16 *name; - srvsvc_ShareType type; - [string,charset(UTF16)] uint16 *comment; - uint32 permissions; - uint32 max_users; - uint32 current_users; - [string,charset(UTF16)] uint16 *path; - [string,charset(UTF16)] uint16 *password; - } srvsvc_NetShareInfo2; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo2 *array; - } srvsvc_NetShareCtr2; - - typedef struct { - [string,charset(UTF16)] uint16 *name; - srvsvc_ShareType type; - [string,charset(UTF16)] uint16 *comment; - uint32 csc_policy; - } srvsvc_NetShareInfo501; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo501 *array; - } srvsvc_NetShareCtr501; - - typedef struct { - [string,charset(UTF16)] uint16 *name; - srvsvc_ShareType type; - [string,charset(UTF16)] uint16 *comment; - uint32 permissions; - uint32 max_users; - uint32 current_users; - [string,charset(UTF16)] uint16 *path; - [string,charset(UTF16)] uint16 *password; - sec_desc_buf sd_buf; - } srvsvc_NetShareInfo502; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo502 *array; - } srvsvc_NetShareCtr502; - - typedef struct { - [string,charset(UTF16)] uint16 *comment; - } srvsvc_NetShareInfo1004; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo1004 *array; - } srvsvc_NetShareCtr1004; - - typedef bitmap { - SHARE_1005_IN_DFS = 0x00000001, - SHARE_1005_DFS_ROOT = 0x00000002 - } NetShareInfo1005Flags; - - const uint32 SHARE_1005_CSC_POLICY_MASK = 0x00000030; - const uint32 SHARE_1005_CSC_POLICY_SHIFT = 4; - - typedef struct { - NetShareInfo1005Flags dfs_flags; - } srvsvc_NetShareInfo1005; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo1005 *array; - } srvsvc_NetShareCtr1005; - - typedef struct { - uint32 max_users; - } srvsvc_NetShareInfo1006; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo1006 *array; - } srvsvc_NetShareCtr1006; - - typedef struct { - uint32 flags; - [string,charset(UTF16)] uint16 *alternate_directory_name; - } srvsvc_NetShareInfo1007; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo1007 *array; - } srvsvc_NetShareCtr1007; - - typedef struct { - uint32 count; - [size_is(count)] sec_desc_buf *array; - } srvsvc_NetShareCtr1501; - - typedef union { - [case(0)] srvsvc_NetShareInfo0 *info0; - [case(1)] srvsvc_NetShareInfo1 *info1; - [case(2)] srvsvc_NetShareInfo2 *info2; - [case(501)] srvsvc_NetShareInfo501 *info501; - [case(502)] srvsvc_NetShareInfo502 *info502; - [case(1004)] srvsvc_NetShareInfo1004 *info1004; - [case(1005)] srvsvc_NetShareInfo1005 *info1005; - [case(1006)] srvsvc_NetShareInfo1006 *info1006; - [case(1007)] srvsvc_NetShareInfo1007 *info1007; - [case(1501)] sec_desc_buf *info1501; - [default] ; - } srvsvc_NetShareInfo; - - typedef union { - [case(0)] srvsvc_NetShareCtr0 *ctr0; - [case(1)] srvsvc_NetShareCtr1 *ctr1; - [case(2)] srvsvc_NetShareCtr2 *ctr2; - [case(501)] srvsvc_NetShareCtr501 *ctr501; - [case(502)] srvsvc_NetShareCtr502 *ctr502; - [case(1004)] srvsvc_NetShareCtr1004 *ctr1004; - [case(1005)] srvsvc_NetShareCtr1005 *ctr1005; - [case(1006)] srvsvc_NetShareCtr1006 *ctr1006; - [case(1007)] srvsvc_NetShareCtr1007 *ctr1007; - [case(1501)] srvsvc_NetShareCtr1501 *ctr1501; - [default] ; - } srvsvc_NetShareCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetShareCtr ctr; - } srvsvc_NetShareInfoCtr; - - /******************/ - /* Function: 0x0e */ - WERROR srvsvc_NetShareAdd( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in,ref,switch_is(level)] srvsvc_NetShareInfo *info, - [in,out,unique] uint32 *parm_error - ); - - /******************/ - /* Function: 0x0f */ - WERROR srvsvc_NetShareEnumAll ( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out,ref] srvsvc_NetShareInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x10 */ - WERROR srvsvc_NetShareGetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 share_name[], - [in] uint32 level, - [out,ref,switch_is(level)] srvsvc_NetShareInfo *info - ); - - /******************/ - /* Function: 0x11 */ - WERROR srvsvc_NetShareSetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 share_name[], - [in] uint32 level, - [in,ref,switch_is(level)] srvsvc_NetShareInfo *info, - [in,out,unique] uint32 *parm_error - ); - - /******************/ - /* Function: 0x12 */ - WERROR srvsvc_NetShareDel( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 share_name[], - [in] uint32 reserved - ); - - /******************/ - /* Function: 0x13 */ - WERROR srvsvc_NetShareDelSticky( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 share_name[], - [in] uint32 reserved - ); - - /******************/ - /* Function: 0x14 */ - WERROR srvsvc_NetShareCheck( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 device_name[], - [out,ref] srvsvc_ShareType *type - ); - -/**************************/ -/* srvsvc_NetSrv */ -/**************************/ - typedef [public,v1_enum] enum { - PLATFORM_ID_DOS = 300, - PLATFORM_ID_OS2 = 400, - PLATFORM_ID_NT = 500, - PLATFORM_ID_OSF = 600, - PLATFORM_ID_VMS = 700 - } srvsvc_PlatformId; - - typedef struct { - srvsvc_PlatformId platform_id; - [string,charset(UTF16)] uint16 *server_name; - } srvsvc_NetSrvInfo100; - - typedef struct { - srvsvc_PlatformId platform_id; - [string,charset(UTF16)] uint16 *server_name; - uint32 version_major; - uint32 version_minor; - svcctl_ServerType server_type; - [string,charset(UTF16)] uint16 *comment; - } srvsvc_NetSrvInfo101; - - typedef struct { - srvsvc_PlatformId platform_id; - [string,charset(UTF16)] uint16 *server_name; - uint32 version_major; - uint32 version_minor; - svcctl_ServerType server_type; - [string,charset(UTF16)] uint16 *comment; - uint32 users; - uint32 disc; - uint32 hidden; - uint32 announce; - uint32 anndelta; - uint32 licenses; - [string,charset(UTF16)] uint16 *userpath; - } srvsvc_NetSrvInfo102; - - typedef struct { - uint32 ulist_mtime; - uint32 glist_mtime; - uint32 alist_mtime; - [string,charset(UTF16)] uint16 *alerts; - uint32 security; - uint32 numadmin; - uint32 lanmask; - [string,charset(UTF16)] uint16 *guestaccount; - uint32 chdevs; - uint32 chdevqs; - uint32 chdevjobs; - uint32 connections; - uint32 shares; - uint32 openfiles; - uint32 sessopen; - uint32 sesssvc; - uint32 sessreqs; - uint32 opensearch; - uint32 activelocks; - uint32 numreqbufs; - uint32 sizereqbufs; - uint32 numbigbufs; - uint32 numfiletasks; - uint32 alertsched; - uint32 erroralert; - uint32 logonalert; - uint32 accessalert; - uint32 diskalert; - uint32 netioalert; - uint32 maxaudits; - [string,charset(UTF16)] uint16 *srvheuristics; - } srvsvc_NetSrvInfo402; - - typedef struct { - uint32 ulist_mtime; - uint32 glist_mtime; - uint32 alist_mtime; - [string,charset(UTF16)] uint16 *alerts; - uint32 security; - uint32 numadmin; - uint32 lanmask; - [string,charset(UTF16)] uint16 *guestaccount; - uint32 chdevs; - uint32 chdevqs; - uint32 chdevjobs; - uint32 connections; - uint32 shares; - uint32 openfiles; - uint32 sessopen; - uint32 sesssvc; - uint32 sessreqs; - uint32 opensearch; - uint32 activelocks; - uint32 numreqbufs; - uint32 sizereqbufs; - uint32 numbigbufs; - uint32 numfiletasks; - uint32 alertsched; - uint32 eroralert; - uint32 logonalert; - uint32 accessalert; - uint32 diskalert; - uint32 netioalert; - uint32 maxaudits; - [string,charset(UTF16)] uint16 *srvheuristics; - uint32 auditedevents; - uint32 auditprofile; - [string,charset(UTF16)] uint16 *autopath; - } srvsvc_NetSrvInfo403; - - typedef struct { - uint32 sessopen; - uint32 sesssvc; - uint32 opensearch; - uint32 sizereqbufs; - uint32 initworkitems; - uint32 maxworkitems; - uint32 rawworkitems; - uint32 irpstacksize; - uint32 maxrawbuflen; - uint32 sessusers; - uint32 sessconns; - uint32 maxpagedmemoryusage; - uint32 maxnonpagedmemoryusage; - uint32 enablesoftcompat; - uint32 enableforcedlogoff; - uint32 timesource; - uint32 acceptdownlevelapis; - uint32 lmannounce; - } srvsvc_NetSrvInfo502; - - typedef struct{ - uint32 sessopen; - uint32 sesssvc; - uint32 opensearch; - uint32 sizereqbufs; - uint32 initworkitems; - uint32 maxworkitems; - uint32 rawworkitems; - uint32 irpstacksize; - uint32 maxrawbuflen; - uint32 sessusers; - uint32 sessconns; - uint32 maxpagedmemoryusage; - uint32 maxnonpagedmemoryusage; - uint32 enablesoftcompat; - uint32 enableforcedlogoff; - uint32 timesource; - uint32 acceptdownlevelapis; - uint32 lmannounce; - [string,charset(UTF16)] uint16 *domain; - uint32 maxcopyreadlen; - uint32 maxcopywritelen; - uint32 minkeepsearch; - uint32 maxkeepsearch; - uint32 minkeepcomplsearch; - uint32 maxkeepcomplsearch; - uint32 threadcountadd; - uint32 numlockthreads; - uint32 scavtimeout; - uint32 minrcvqueue; - uint32 minfreeworkitems; - uint32 xactmemsize; - uint32 threadpriority; - uint32 maxmpxct; - uint32 oplockbreakwait; - uint32 oplockbreakresponsewait; - uint32 enableoplocks; - uint32 enableoplockforceclose; - uint32 enablefcbopens; - uint32 enableraw; - uint32 enablesharednetdrives; - uint32 minfreeconnections; - uint32 maxfreeconnections; - } srvsvc_NetSrvInfo503; - - typedef struct{ - uint32 sessopen; - uint32 sesssvc; - uint32 opensearch; - uint32 sizereqbufs; - uint32 initworkitems; - uint32 maxworkitems; - uint32 rawworkitems; - uint32 irpstacksize; - uint32 maxrawbuflen; - uint32 sessusers; - uint32 sessconns; - uint32 maxpagedmemoryusage; - uint32 maxnonpagedmemoryusage; - uint32 enablesoftcompat; - uint32 enableforcedlogoff; - uint32 timesource; - uint32 acceptdownlevelapis; - uint32 lmannounce; - [string,charset(UTF16)] uint16 *domain; - uint32 maxcopyreadlen; - uint32 maxcopywritelen; - uint32 minkeepsearch; - uint32 minkeepcomplsearch; - uint32 maxkeepcomplsearch; - uint32 threadcountadd; - uint32 numlockthreads; - uint32 scavtimeout; - uint32 minrcvqueue; - uint32 minfreeworkitems; - uint32 xactmemsize; - uint32 threadpriority; - uint32 maxmpxct; - uint32 oplockbreakwait; - uint32 oplockbreakresponsewait; - uint32 enableoplocks; - uint32 enableoplockforceclose; - uint32 enablefcbopens; - uint32 enableraw; - uint32 enablesharednetdrives; - uint32 minfreeconnections; - uint32 maxfreeconnections; - uint32 initsesstable; - uint32 initconntable; - uint32 initfiletable; - uint32 initsearchtable; - uint32 alertsched; - uint32 errortreshold; - uint32 networkerrortreshold; - uint32 diskspacetreshold; - uint32 reserved; - uint32 maxlinkdelay; - uint32 minlinkthroughput; - uint32 linkinfovalidtime; - uint32 scavqosinfoupdatetime; - uint32 maxworkitemidletime; - } srvsvc_NetSrvInfo599; - - typedef struct{ - [string,charset(UTF16)] uint16 *comment; - } srvsvc_NetSrvInfo1005; - - typedef struct{ - uint32 disc; - } srvsvc_NetSrvInfo1010; - - typedef struct{ - uint32 hidden; - } srvsvc_NetSrvInfo1016; - - typedef struct{ - uint32 announce; - } srvsvc_NetSrvInfo1017; - - typedef struct{ - uint32 anndelta; - } srvsvc_NetSrvInfo1018; - - typedef struct{ - uint32 users; - } srvsvc_NetSrvInfo1107; - - typedef struct{ - uint32 sessopens; - } srvsvc_NetSrvInfo1501; - - typedef struct{ - uint32 sessvcs; - } srvsvc_NetSrvInfo1502; - - typedef struct{ - uint32 opensearch; - } srvsvc_NetSrvInfo1503; - - typedef struct{ - uint32 maxworkitems; - } srvsvc_NetSrvInfo1506; - - typedef struct{ - uint32 maxrawbuflen; - } srvsvc_NetSrvInfo1509; - - typedef struct{ - uint32 sessusers; - } srvsvc_NetSrvInfo1510; - - typedef struct{ - uint32 sesscons; - } srvsvc_NetSrvInfo1511; - - typedef struct{ - uint32 maxnonpagedmemoryusage; - } srvsvc_NetSrvInfo1512; - - typedef struct{ - uint32 maxpagedmemoryusage; - } srvsvc_NetSrvInfo1513; - - typedef struct{ - uint32 enablesoftcompat; - } srvsvc_NetSrvInfo1514; - - typedef struct{ - uint32 enableforcedlogoff; - } srvsvc_NetSrvInfo1515; - - typedef struct{ - uint32 timesource; - } srvsvc_NetSrvInfo1516; - - typedef struct{ - uint32 lmannounce; - } srvsvc_NetSrvInfo1518; - - typedef struct{ - uint32 maxcopyreadlen; - } srvsvc_NetSrvInfo1520; - - typedef struct{ - uint32 maxcopywritelen; - } srvsvc_NetSrvInfo1521; - - typedef struct{ - uint32 minkeepsearch; - } srvsvc_NetSrvInfo1522; - - typedef struct{ - uint32 maxkeepsearch; - } srvsvc_NetSrvInfo1523; - - typedef struct{ - uint32 minkeepcomplsearch; - } srvsvc_NetSrvInfo1524; - - typedef struct{ - uint32 maxkeepcomplsearch; - } srvsvc_NetSrvInfo1525; - - typedef struct{ - uint32 scavtimeout; - } srvsvc_NetSrvInfo1528; - - typedef struct{ - uint32 minrcvqueue; - } srvsvc_NetSrvInfo1529; - - typedef struct{ - uint32 minfreeworkitems; - } srvsvc_NetSrvInfo1530; - - typedef struct{ - uint32 maxmpxct; - } srvsvc_NetSrvInfo1533; - - typedef struct{ - uint32 oplockbreakwait; - } srvsvc_NetSrvInfo1534; - - typedef struct{ - uint32 oplockbreakresponsewait; - } srvsvc_NetSrvInfo1535; - - typedef struct{ - uint32 enableoplocks; - } srvsvc_NetSrvInfo1536; - - typedef struct{ - uint32 enableoplockforceclose; - } srvsvc_NetSrvInfo1537; - - typedef struct{ - uint32 enablefcbopens; - } srvsvc_NetSrvInfo1538; - - typedef struct{ - uint32 enableraw; - } srvsvc_NetSrvInfo1539; - - typedef struct{ - uint32 enablesharednetdrives; - } srvsvc_NetSrvInfo1540; - - typedef struct{ - uint32 minfreeconnections; - } srvsvc_NetSrvInfo1541; - - typedef struct{ - uint32 maxfreeconnections; - } srvsvc_NetSrvInfo1542; - - typedef struct{ - uint32 initsesstable; - } srvsvc_NetSrvInfo1543; - - typedef struct{ - uint32 initconntable; - } srvsvc_NetSrvInfo1544; - - typedef struct{ - uint32 initfiletable; - } srvsvc_NetSrvInfo1545; - - typedef struct{ - uint32 initsearchtable; - } srvsvc_NetSrvInfo1546; - - typedef struct{ - uint32 alertsched; - } srvsvc_NetSrvInfo1547; - - typedef struct{ - uint32 errortreshold; - } srvsvc_NetSrvInfo1548; - - typedef struct{ - uint32 networkerrortreshold; - } srvsvc_NetSrvInfo1549; - - typedef struct{ - uint32 diskspacetreshold; - } srvsvc_NetSrvInfo1550; - - typedef struct{ - uint32 maxlinkdelay; - } srvsvc_NetSrvInfo1552; - - typedef struct{ - uint32 minlinkthroughput; - } srvsvc_NetSrvInfo1553; - - typedef struct{ - uint32 linkinfovalidtime; - } srvsvc_NetSrvInfo1554; - - typedef struct{ - uint32 scavqosinfoupdatetime; - } srvsvc_NetSrvInfo1555; - - typedef struct{ - uint32 maxworkitemidletime; - } srvsvc_NetSrvInfo1556; - - - typedef union{ - [case(100)] srvsvc_NetSrvInfo100 *info100; - [case(101)] srvsvc_NetSrvInfo101 *info101; - [case(102)] srvsvc_NetSrvInfo102 *info102; - [case(402)] srvsvc_NetSrvInfo402 *info402; - [case(403)] srvsvc_NetSrvInfo403 *info403; - [case(502)] srvsvc_NetSrvInfo502 *info502; - [case(503)] srvsvc_NetSrvInfo503 *info503; - [case(599)] srvsvc_NetSrvInfo599 *info599; - [case(1005)] srvsvc_NetSrvInfo1005 *info1005; - [case(1010)] srvsvc_NetSrvInfo1010 *info1010; - [case(1016)] srvsvc_NetSrvInfo1016 *info1016; - [case(1017)] srvsvc_NetSrvInfo1017 *info1017; - [case(1018)] srvsvc_NetSrvInfo1018 *info1018; - [case(1107)] srvsvc_NetSrvInfo1107 *info1107; - [case(1501)] srvsvc_NetSrvInfo1501 *info1501; - [case(1502)] srvsvc_NetSrvInfo1502 *info1502; - [case(1503)] srvsvc_NetSrvInfo1503 *info1503; - [case(1506)] srvsvc_NetSrvInfo1506 *info1506; - [case(1509)] srvsvc_NetSrvInfo1509 *info1509; - [case(1510)] srvsvc_NetSrvInfo1510 *info1510; - [case(1511)] srvsvc_NetSrvInfo1511 *info1511; - [case(1512)] srvsvc_NetSrvInfo1512 *info1512; - [case(1513)] srvsvc_NetSrvInfo1513 *info1513; - [case(1514)] srvsvc_NetSrvInfo1514 *info1514; - [case(1515)] srvsvc_NetSrvInfo1515 *info1515; - [case(1516)] srvsvc_NetSrvInfo1516 *info1516; - [case(1518)] srvsvc_NetSrvInfo1518 *info1518; - [case(1520)] srvsvc_NetSrvInfo1520 *info1520; - [case(1521)] srvsvc_NetSrvInfo1521 *info1521; - [case(1522)] srvsvc_NetSrvInfo1522 *info1522; - [case(1523)] srvsvc_NetSrvInfo1523 *info1523; - [case(1524)] srvsvc_NetSrvInfo1524 *info1524; - [case(1525)] srvsvc_NetSrvInfo1525 *info1525; - [case(1528)] srvsvc_NetSrvInfo1528 *info1528; - [case(1529)] srvsvc_NetSrvInfo1529 *info1529; - [case(1530)] srvsvc_NetSrvInfo1530 *info1530; - [case(1533)] srvsvc_NetSrvInfo1533 *info1533; - [case(1534)] srvsvc_NetSrvInfo1534 *info1534; - [case(1535)] srvsvc_NetSrvInfo1535 *info1535; - [case(1536)] srvsvc_NetSrvInfo1536 *info1536; - [case(1537)] srvsvc_NetSrvInfo1537 *info1537; - [case(1538)] srvsvc_NetSrvInfo1538 *info1538; - [case(1539)] srvsvc_NetSrvInfo1539 *info1539; - [case(1540)] srvsvc_NetSrvInfo1540 *info1540; - [case(1541)] srvsvc_NetSrvInfo1541 *info1541; - [case(1542)] srvsvc_NetSrvInfo1542 *info1542; - [case(1543)] srvsvc_NetSrvInfo1543 *info1543; - [case(1544)] srvsvc_NetSrvInfo1544 *info1544; - [case(1545)] srvsvc_NetSrvInfo1545 *info1545; - [case(1546)] srvsvc_NetSrvInfo1546 *info1546; - [case(1547)] srvsvc_NetSrvInfo1547 *info1547; - [case(1548)] srvsvc_NetSrvInfo1548 *info1548; - [case(1549)] srvsvc_NetSrvInfo1549 *info1549; - [case(1550)] srvsvc_NetSrvInfo1550 *info1550; - [case(1552)] srvsvc_NetSrvInfo1552 *info1552; - [case(1553)] srvsvc_NetSrvInfo1553 *info1553; - [case(1554)] srvsvc_NetSrvInfo1554 *info1554; - [case(1555)] srvsvc_NetSrvInfo1555 *info1555; - [case(1556)] srvsvc_NetSrvInfo1556 *info1556; - [default]; - } srvsvc_NetSrvInfo; - - /******************/ - /* Function: 0x15 */ - WERROR srvsvc_NetSrvGetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [out,ref,switch_is(level)] srvsvc_NetSrvInfo *info - ); - - /******************/ - /* Function: 0x16 */ - WERROR srvsvc_NetSrvSetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in,ref,switch_is(level)] srvsvc_NetSrvInfo *info, - [in,out,unique] uint32 *parm_error - ); - -/**************************/ -/* srvsvc_NetDisk */ -/**************************/ - typedef struct { - /* - * In theory this should be: - * [charset(UTF16),string] uint16 annotation[3] - * But midl treats this as: - * [charset(UTF16),string] uint16 annotation[] - * and pidl doesn't support this yet - */ - [value(0)] uint32 __disk_offset; - [value(strlen(disk)+1)] uint32 __disk_length; - [charset(UTF16)] uint16 disk[__disk_length]; - } srvsvc_NetDiskInfo0; - - typedef struct { - uint32 count; - [size_is(count), length_is(count)] srvsvc_NetDiskInfo0 *disks; - } srvsvc_NetDiskInfo; - - /******************/ - /* Function: 0x17 */ - WERROR srvsvc_NetDiskEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in,out,ref] srvsvc_NetDiskInfo *info, - [in] uint32 maxlen, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - -/**************************/ -/* srvsvc_NetStatistics */ -/**************************/ - typedef struct { - uint32 start; - uint32 fopens; - uint32 devopens; - uint32 jobsqueued; - uint32 sopens; - uint32 stimeouts; - uint32 serrorout; - uint32 pwerrors; - uint32 permerrors; - uint32 syserrors; - uint32 bytessent_low; - uint32 bytessent_high; - uint32 bytesrcvd_low; - uint32 bytesrcvd_high; - uint32 avresponse; - uint32 reqbufneed; - uint32 bigbufneed; - } srvsvc_Statistics; - - /******************/ - /* Function: 0x18 */ - WERROR srvsvc_NetServerStatisticsGet( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *service, - [in] uint32 level, - [in] uint32 options, - [out,ref] srvsvc_Statistics **stats - ); - -/**************************/ -/* srvsvc_NetTransport */ -/**************************/ - typedef struct { - uint32 vcs; - [string,charset(UTF16)] uint16 *name; - [size_is(addr_len)] uint8 *addr; - uint32 addr_len; - [string,charset(UTF16)] uint16 *net_addr; - } srvsvc_NetTransportInfo0; - - /******************/ - /* Function: 0x19 */ - WERROR srvsvc_NetTransportAdd( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in,switch_is(level)] srvsvc_NetTransportInfo info - ); - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetTransportInfo0 *array; - } srvsvc_NetTransportCtr0; - - typedef struct { - uint32 vcs; - [string,charset(UTF16)] uint16 *name; - [size_is(addr_len)] uint8 *addr; - uint32 addr_len; - [string,charset(UTF16)] uint16 *net_addr; - [string,charset(UTF16)] uint16 *domain; - } srvsvc_NetTransportInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetTransportInfo1 *array; - } srvsvc_NetTransportCtr1; - - typedef struct { - uint32 vcs; - [string,charset(UTF16)] uint16 *name; - [size_is(addr_len)] uint8 *addr; - uint32 addr_len; - [string,charset(UTF16)] uint16 *net_addr; - [string,charset(UTF16)] uint16 *domain; - uint32 unknown; - } srvsvc_NetTransportInfo2; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetTransportInfo2 *array; - } srvsvc_NetTransportCtr2; - - typedef struct { - uint32 vcs; - [string,charset(UTF16)] uint16 *name; - [size_is(addr_len)] uint8 *addr; - uint32 addr_len; - [string,charset(UTF16)] uint16 *net_addr; - [string,charset(UTF16)] uint16 *domain; - uint32 unknown1; - uint32 unknown2; - uint8 unknown3[256]; - } srvsvc_NetTransportInfo3; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetTransportInfo3 *array; - } srvsvc_NetTransportCtr3; - - typedef union { - [case(0)] srvsvc_NetTransportCtr0 *ctr0; - [case(1)] srvsvc_NetTransportCtr1 *ctr1; - [case(2)] srvsvc_NetTransportCtr2 *ctr2; - [case(3)] srvsvc_NetTransportCtr3 *ctr3; - [default]; - } srvsvc_NetTransportCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetTransportCtr ctr; - } srvsvc_NetTransportInfoCtr; - - /******************/ - /* Function: 0x1a */ - WERROR srvsvc_NetTransportEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out,ref] srvsvc_NetTransportInfoCtr *transports, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x1b */ - WERROR srvsvc_NetTransportDel( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in] srvsvc_NetTransportInfo0 *info0 - ); - -/**************************/ -/* srvsvc_NetRemoteTOD */ -/**************************/ - typedef struct { - uint32 elapsed; /* time(NULL) */ - uint32 msecs; /* milliseconds till system reboot (uptime) */ - uint32 hours; - uint32 mins; - uint32 secs; - uint32 hunds; - int32 timezone; /* in minutes */ - uint32 tinterval; /* clock tick interval in 0.0001 second units; 310 on windows */ - uint32 day; - uint32 month; - uint32 year; - uint32 weekday; - } srvsvc_NetRemoteTODInfo; - - /******************/ - /* Function: 0x1c */ - WERROR srvsvc_NetRemoteTOD( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [out,ref] srvsvc_NetRemoteTODInfo **info - ); - -/**************************/ -/* srvsvc_NetServiceBits */ -/**************************/ - /******************/ - /* Function: 0x1d */ - WERROR srvsvc_NetSetServiceBits( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *transport, - [in] uint32 servicebits, - [in] uint32 updateimmediately - ); - -/**************************/ -/* srvsvc_NetPath */ -/**************************/ - /******************/ - /* Function: 0x1e */ - WERROR srvsvc_NetPathType( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 path[], - [in] uint32 pathflags, - [out,ref] uint32 *pathtype - ); - - /******************/ - /* Function: 0x1f */ - WERROR srvsvc_NetPathCanonicalize( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 path[], - [out] [size_is(maxbuf)] uint8 can_path[], - [in] uint32 maxbuf, - [in] [string,charset(UTF16)] uint16 prefix[], - [in,out,ref] uint32 *pathtype, - [in] uint32 pathflags - ); - - /******************/ - /* Function: 0x20 */ - WERROR srvsvc_NetPathCompare( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 path1[], - [in] [string,charset(UTF16)] uint16 path2[], - [in] uint32 pathtype, - [in] uint32 pathflags - ); - -/**************************/ -/* srvsvc_NetName */ -/**************************/ - /******************/ - /* Function: 0x21 */ - WERROR srvsvc_NetNameValidate( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 name[], - [in] uint32 name_type, - [in] uint32 flags - ); - - /******************/ - /* Function: 0x22 */ - [todo] WERROR srvsvc_NETRPRNAMECANONICALIZE( - ); - - /******************/ - /* Function: 0x23 */ - WERROR srvsvc_NetPRNameCompare( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 name1[], - [in] [string,charset(UTF16)] uint16 name2[], - [in] uint32 name_type, - [in] uint32 flags - ); - -/**************************/ -/* srvsvc_NetShare ... */ -/**************************/ - /******************/ - /* Function: 0x24 */ - /* Note, there must be some way to return entries read vs - total entries ... */ - WERROR srvsvc_NetShareEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out,ref] srvsvc_NetShareInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x25 */ - WERROR srvsvc_NetShareDelStart( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 share[], - [in] uint32 reserved, - [out,unique] policy_handle *hnd - ); - - /******************/ - /* Function: 0x26 */ - WERROR srvsvc_NetShareDelCommit( - [in, out,unique] policy_handle *hnd - ); - - /******************/ - /* Function: 0x27 */ - WERROR srvsvc_NetGetFileSecurity( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *share, - [in] [string,charset(UTF16)] uint16 file[], - [in] security_secinfo securityinformation, - [out,ref] sec_desc_buf **sd_buf - ); - - /******************/ - /* Function: 0x28 */ - WERROR srvsvc_NetSetFileSecurity( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *share, - [in] [string,charset(UTF16)] uint16 file[], - [in] security_secinfo securityinformation, - [in,ref] sec_desc_buf *sd_buf - ); - - - - typedef [switch_type(uint32)] union { - [case(0)] srvsvc_NetTransportInfo0 info0; - [case(1)] srvsvc_NetTransportInfo1 info1; - [case(2)] srvsvc_NetTransportInfo2 info2; - [case(3)] srvsvc_NetTransportInfo3 info3; - } srvsvc_NetTransportInfo; - - /******************/ - /* Function: 0x29 */ - WERROR srvsvc_NetServerTransportAddEx( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in,switch_is(level)] srvsvc_NetTransportInfo info - ); - - /******************/ - /* Function: 0x2a */ - WERROR srvsvc_NetServerSetServiceBitsEx( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *emulated_server_unc, - [in,unique] [string,charset(UTF16)] uint16 *transport, - [in] uint32 servicebitsofinterest, - [in] uint32 servicebits, - [in] uint32 updateimmediately - ); - - /******************/ - /* Function: 0x2b */ - [todo] WERROR srvsvc_NETRDFSGETVERSION( - ); - - /******************/ - /* Function: 0x2c */ - [todo] WERROR srvsvc_NETRDFSCREATELOCALPARTITION( - ); - - /******************/ - /* Function: 0x2d */ - [todo] WERROR srvsvc_NETRDFSDELETELOCALPARTITION( - ); - - /******************/ - /* Function: 0x2e */ - [todo] WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE( - ); - - /******************/ - /* Function: 0x2f */ - [todo] WERROR srvsvc_NETRDFSSETSERVERINFO( - ); - - /******************/ - /* Function: 0x30 */ - [todo] WERROR srvsvc_NETRDFSCREATEEXITPOINT( - ); - - /******************/ - /* Function: 0x31 */ - [todo] WERROR srvsvc_NETRDFSDELETEEXITPOINT( - ); - - /******************/ - /* Function: 0x32 */ - [todo] WERROR srvsvc_NETRDFSMODIFYPREFIX( - ); - - /******************/ - /* Function: 0x33 */ - [todo] WERROR srvsvc_NETRDFSFIXLOCALVOLUME( - ); - - /******************/ - /* Function: 0x34 */ - [todo] WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO( - ); - - /******************/ - /* Function: 0x35 */ - [todo] WERROR srvsvc_NETRSERVERTRANSPORTDELEX( - ); -} -- cgit From 569fda3173219384ee3cfd30cbc49d5bee1138c6 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Thu, 30 Oct 2008 18:23:13 +0100 Subject: s3-build: re-run make samba3-idl. Guenther --- source3/librpc/gen_ndr/cli_srvsvc.c | 33 ++- source3/librpc/gen_ndr/cli_srvsvc.h | 15 +- source3/librpc/gen_ndr/ndr_srvsvc.c | 405 +++++++++++++++++++----------------- source3/librpc/gen_ndr/ndr_srvsvc.h | 3 + source3/librpc/gen_ndr/srv_srvsvc.c | 9 +- source3/librpc/gen_ndr/srvsvc.h | 45 ++-- 6 files changed, 272 insertions(+), 238 deletions(-) diff --git a/source3/librpc/gen_ndr/cli_srvsvc.c b/source3/librpc/gen_ndr/cli_srvsvc.c index fbf981365c..eb81652a1d 100644 --- a/source3/librpc/gen_ndr/cli_srvsvc.c +++ b/source3/librpc/gen_ndr/cli_srvsvc.c @@ -9,8 +9,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t *level /* [in,out] [ref] */, - union srvsvc_NetCharDevCtr *ctr /* [in,out] [ref,switch_is(*level)] */, + struct srvsvc_NetCharDevInfoCtr *info_ctr /* [in,out] [ref] */, uint32_t max_buffer /* [in] */, uint32_t *totalentries /* [out] [ref] */, uint32_t *resume_handle /* [in,out] [unique] */, @@ -21,8 +20,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, /* In parameters */ r.in.server_unc = server_unc; - 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; @@ -49,8 +47,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevEnum(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; @@ -164,8 +161,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, const char *user /* [in] [unique,charset(UTF16)] */, - uint32_t *level /* [in,out] [ref] */, - union srvsvc_NetCharDevQCtr *ctr /* [in,out] [ref,switch_is(*level)] */, + struct srvsvc_NetCharDevQInfoCtr *info_ctr /* [in,out] [ref] */, uint32_t max_buffer /* [in] */, uint32_t *totalentries /* [out] [ref] */, uint32_t *resume_handle /* [in,out] [unique] */, @@ -177,8 +173,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, /* In parameters */ r.in.server_unc = server_unc; 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; @@ -205,8 +200,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQEnum(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; @@ -1246,7 +1240,7 @@ NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, const char *service /* [in] [unique,charset(UTF16)] */, uint32_t level /* [in] */, uint32_t options /* [in] */, - struct srvsvc_Statistics *stats /* [out] [ref] */, + struct srvsvc_Statistics **stats /* [out] [ref] */, WERROR *werror) { struct srvsvc_NetServerStatisticsGet r; @@ -1341,8 +1335,7 @@ NTSTATUS rpccli_srvsvc_NetTransportAdd(struct rpc_pipe_client *cli, NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t *level /* [in,out] [ref] */, - union srvsvc_NetTransportCtr *transports /* [in,out] [ref,switch_is(*level)] */, + struct srvsvc_NetTransportInfoCtr *transports /* [in,out] [ref] */, uint32_t max_buffer /* [in] */, uint32_t *totalentries /* [out] [ref] */, uint32_t *resume_handle /* [in,out] [unique] */, @@ -1353,7 +1346,6 @@ NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, /* In parameters */ r.in.server_unc = server_unc; - r.in.level = level; r.in.transports = transports; r.in.max_buffer = max_buffer; r.in.resume_handle = resume_handle; @@ -1381,7 +1373,6 @@ NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, } /* Return variables */ - *level = *r.out.level; *transports = *r.out.transports; *totalentries = *r.out.totalentries; if (resume_handle && r.out.resume_handle) { @@ -1399,8 +1390,8 @@ NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, NTSTATUS rpccli_srvsvc_NetTransportDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t unknown /* [in] */, - struct srvsvc_NetTransportInfo0 transport /* [in] */, + uint32_t level /* [in] */, + struct srvsvc_NetTransportInfo0 *info0 /* [in] [ref] */, WERROR *werror) { struct srvsvc_NetTransportDel r; @@ -1408,8 +1399,8 @@ NTSTATUS rpccli_srvsvc_NetTransportDel(struct rpc_pipe_client *cli, /* In parameters */ r.in.server_unc = server_unc; - r.in.unknown = unknown; - r.in.transport = transport; + r.in.level = level; + r.in.info0 = info0; if (DEBUGLEVEL >= 10) { NDR_PRINT_IN_DEBUG(srvsvc_NetTransportDel, &r); diff --git a/source3/librpc/gen_ndr/cli_srvsvc.h b/source3/librpc/gen_ndr/cli_srvsvc.h index 4ab4734de5..44b50e7d19 100644 --- a/source3/librpc/gen_ndr/cli_srvsvc.h +++ b/source3/librpc/gen_ndr/cli_srvsvc.h @@ -4,8 +4,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t *level /* [in,out] [ref] */, - union srvsvc_NetCharDevCtr *ctr /* [in,out] [ref,switch_is(*level)] */, + struct srvsvc_NetCharDevInfoCtr *info_ctr /* [in,out] [ref] */, uint32_t max_buffer /* [in] */, uint32_t *totalentries /* [out] [ref] */, uint32_t *resume_handle /* [in,out] [unique] */, @@ -27,8 +26,7 @@ NTSTATUS rpccli_srvsvc_NetCharDevQEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, const char *user /* [in] [unique,charset(UTF16)] */, - uint32_t *level /* [in,out] [ref] */, - union srvsvc_NetCharDevQCtr *ctr /* [in,out] [ref,switch_is(*level)] */, + struct srvsvc_NetCharDevQInfoCtr *info_ctr /* [in,out] [ref] */, uint32_t max_buffer /* [in] */, uint32_t *totalentries /* [out] [ref] */, uint32_t *resume_handle /* [in,out] [unique] */, @@ -183,7 +181,7 @@ NTSTATUS rpccli_srvsvc_NetServerStatisticsGet(struct rpc_pipe_client *cli, const char *service /* [in] [unique,charset(UTF16)] */, uint32_t level /* [in] */, uint32_t options /* [in] */, - struct srvsvc_Statistics *stats /* [out] [ref] */, + struct srvsvc_Statistics **stats /* [out] [ref] */, WERROR *werror); NTSTATUS rpccli_srvsvc_NetTransportAdd(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, @@ -194,8 +192,7 @@ NTSTATUS rpccli_srvsvc_NetTransportAdd(struct rpc_pipe_client *cli, NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t *level /* [in,out] [ref] */, - union srvsvc_NetTransportCtr *transports /* [in,out] [ref,switch_is(*level)] */, + struct srvsvc_NetTransportInfoCtr *transports /* [in,out] [ref] */, uint32_t max_buffer /* [in] */, uint32_t *totalentries /* [out] [ref] */, uint32_t *resume_handle /* [in,out] [unique] */, @@ -203,8 +200,8 @@ NTSTATUS rpccli_srvsvc_NetTransportEnum(struct rpc_pipe_client *cli, NTSTATUS rpccli_srvsvc_NetTransportDel(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, const char *server_unc /* [in] [unique,charset(UTF16)] */, - uint32_t unknown /* [in] */, - struct srvsvc_NetTransportInfo0 transport /* [in] */, + uint32_t level /* [in] */, + struct srvsvc_NetTransportInfo0 *info0 /* [in] [ref] */, WERROR *werror); NTSTATUS rpccli_srvsvc_NetRemoteTOD(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, diff --git a/source3/librpc/gen_ndr/ndr_srvsvc.c b/source3/librpc/gen_ndr/ndr_srvsvc.c index 36c3dbe256..6017202133 100644 --- a/source3/librpc/gen_ndr/ndr_srvsvc.c +++ b/source3/librpc/gen_ndr/ndr_srvsvc.c @@ -612,6 +612,44 @@ _PUBLIC_ void ndr_print_srvsvc_NetCharDevCtr(struct ndr_print *ndr, const char * } } +static enum ndr_err_code ndr_push_srvsvc_NetCharDevInfoCtr(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevInfoCtr *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_NetCharDevCtr(ndr, NDR_SCALARS, &r->ctr)); + } + if (ndr_flags & NDR_BUFFERS) { + NDR_CHECK(ndr_push_srvsvc_NetCharDevCtr(ndr, NDR_BUFFERS, &r->ctr)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_srvsvc_NetCharDevInfoCtr(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetCharDevInfoCtr *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_NetCharDevCtr(ndr, NDR_SCALARS, &r->ctr)); + } + if (ndr_flags & NDR_BUFFERS) { + NDR_CHECK(ndr_pull_srvsvc_NetCharDevCtr(ndr, NDR_BUFFERS, &r->ctr)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_srvsvc_NetCharDevInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevInfoCtr *r) +{ + ndr_print_struct(ndr, name, "srvsvc_NetCharDevInfoCtr"); + ndr->depth++; + ndr_print_uint32(ndr, "level", r->level); + ndr_print_set_switch_value(ndr, &r->ctr, r->level); + ndr_print_srvsvc_NetCharDevCtr(ndr, "ctr", &r->ctr); + ndr->depth--; +} + static enum ndr_err_code ndr_push_srvsvc_NetCharDevQInfo0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevQInfo0 *r) { if (ndr_flags & NDR_SCALARS) { @@ -1222,6 +1260,44 @@ _PUBLIC_ void ndr_print_srvsvc_NetCharDevQCtr(struct ndr_print *ndr, const char } } +static enum ndr_err_code ndr_push_srvsvc_NetCharDevQInfoCtr(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetCharDevQInfoCtr *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_NetCharDevQCtr(ndr, NDR_SCALARS, &r->ctr)); + } + if (ndr_flags & NDR_BUFFERS) { + NDR_CHECK(ndr_push_srvsvc_NetCharDevQCtr(ndr, NDR_BUFFERS, &r->ctr)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_srvsvc_NetCharDevQInfoCtr(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetCharDevQInfoCtr *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_NetCharDevQCtr(ndr, NDR_SCALARS, &r->ctr)); + } + if (ndr_flags & NDR_BUFFERS) { + NDR_CHECK(ndr_pull_srvsvc_NetCharDevQCtr(ndr, NDR_BUFFERS, &r->ctr)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_srvsvc_NetCharDevQInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQInfoCtr *r) +{ + ndr_print_struct(ndr, name, "srvsvc_NetCharDevQInfoCtr"); + ndr->depth++; + ndr_print_uint32(ndr, "level", r->level); + ndr_print_set_switch_value(ndr, &r->ctr, r->level); + ndr_print_srvsvc_NetCharDevQCtr(ndr, "ctr", &r->ctr); + ndr->depth--; +} + static enum ndr_err_code ndr_push_srvsvc_NetConnInfo0(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetConnInfo0 *r) { if (ndr_flags & NDR_SCALARS) { @@ -6629,6 +6705,7 @@ static enum ndr_err_code ndr_push_srvsvc_NetSrvInfo402(struct ndr_push *ndr, int NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessreqs)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->opensearch)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->activelocks)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numreqbufs)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sizereqbufs)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numbigbufs)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numfiletasks)); @@ -6703,6 +6780,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetSrvInfo402(struct ndr_pull *ndr, int NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessreqs)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->opensearch)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->activelocks)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numreqbufs)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sizereqbufs)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numbigbufs)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numfiletasks)); @@ -6794,6 +6872,7 @@ _PUBLIC_ void ndr_print_srvsvc_NetSrvInfo402(struct ndr_print *ndr, const char * ndr_print_uint32(ndr, "sessreqs", r->sessreqs); ndr_print_uint32(ndr, "opensearch", r->opensearch); ndr_print_uint32(ndr, "activelocks", r->activelocks); + ndr_print_uint32(ndr, "numreqbufs", r->numreqbufs); ndr_print_uint32(ndr, "sizereqbufs", r->sizereqbufs); ndr_print_uint32(ndr, "numbigbufs", r->numbigbufs); ndr_print_uint32(ndr, "numfiletasks", r->numfiletasks); @@ -6836,6 +6915,7 @@ static enum ndr_err_code ndr_push_srvsvc_NetSrvInfo403(struct ndr_push *ndr, int NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sessreqs)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->opensearch)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->activelocks)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numreqbufs)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->sizereqbufs)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numbigbufs)); NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->numfiletasks)); @@ -6921,6 +7001,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetSrvInfo403(struct ndr_pull *ndr, int NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sessreqs)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->opensearch)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->activelocks)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numreqbufs)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->sizereqbufs)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numbigbufs)); NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->numfiletasks)); @@ -7032,6 +7113,7 @@ _PUBLIC_ void ndr_print_srvsvc_NetSrvInfo403(struct ndr_print *ndr, const char * ndr_print_uint32(ndr, "sessreqs", r->sessreqs); ndr_print_uint32(ndr, "opensearch", r->opensearch); ndr_print_uint32(ndr, "activelocks", r->activelocks); + ndr_print_uint32(ndr, "numreqbufs", r->numreqbufs); ndr_print_uint32(ndr, "sizereqbufs", r->sizereqbufs); ndr_print_uint32(ndr, "numbigbufs", r->numbigbufs); ndr_print_uint32(ndr, "numfiletasks", r->numfiletasks); @@ -11470,12 +11552,9 @@ static enum ndr_err_code ndr_push_srvsvc_NetDiskInfo0(struct ndr_push *ndr, int { if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_push_align(ndr, 4)); - { - uint32_t _flags_save_string = ndr->flags; - ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_LEN4); - NDR_CHECK(ndr_push_string(ndr, NDR_SCALARS, r->disk)); - ndr->flags = _flags_save_string; - } + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, 0)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, strlen(r->disk) + 1)); + NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->disk, strlen(r->disk) + 1, sizeof(uint16_t), CH_UTF16)); } if (ndr_flags & NDR_BUFFERS) { } @@ -11486,12 +11565,9 @@ static enum ndr_err_code ndr_pull_srvsvc_NetDiskInfo0(struct ndr_pull *ndr, int { if (ndr_flags & NDR_SCALARS) { NDR_CHECK(ndr_pull_align(ndr, 4)); - { - uint32_t _flags_save_string = ndr->flags; - ndr_set_flags(&ndr->flags, LIBNDR_FLAG_STR_LEN4); - NDR_CHECK(ndr_pull_string(ndr, NDR_SCALARS, &r->disk)); - ndr->flags = _flags_save_string; - } + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__disk_offset)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->__disk_length)); + NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->disk, r->__disk_length, sizeof(uint16_t), CH_UTF16)); } if (ndr_flags & NDR_BUFFERS) { } @@ -11502,6 +11578,8 @@ _PUBLIC_ void ndr_print_srvsvc_NetDiskInfo0(struct ndr_print *ndr, const char *n { ndr_print_struct(ndr, name, "srvsvc_NetDiskInfo0"); ndr->depth++; + ndr_print_uint32(ndr, "__disk_offset", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?0:r->__disk_offset); + ndr_print_uint32(ndr, "__disk_length", (ndr->flags & LIBNDR_PRINT_SET_VALUES)?strlen(r->disk) + 1:r->__disk_length); ndr_print_string(ndr, "disk", r->disk); ndr->depth--; } @@ -12860,6 +12938,44 @@ _PUBLIC_ void ndr_print_srvsvc_NetTransportCtr(struct ndr_print *ndr, const char } } +static enum ndr_err_code ndr_push_srvsvc_NetTransportInfoCtr(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetTransportInfoCtr *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_NetTransportCtr(ndr, NDR_SCALARS, &r->ctr)); + } + if (ndr_flags & NDR_BUFFERS) { + NDR_CHECK(ndr_push_srvsvc_NetTransportCtr(ndr, NDR_BUFFERS, &r->ctr)); + } + return NDR_ERR_SUCCESS; +} + +static enum ndr_err_code ndr_pull_srvsvc_NetTransportInfoCtr(struct ndr_pull *ndr, int ndr_flags, struct srvsvc_NetTransportInfoCtr *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_NetTransportCtr(ndr, NDR_SCALARS, &r->ctr)); + } + if (ndr_flags & NDR_BUFFERS) { + NDR_CHECK(ndr_pull_srvsvc_NetTransportCtr(ndr, NDR_BUFFERS, &r->ctr)); + } + return NDR_ERR_SUCCESS; +} + +_PUBLIC_ void ndr_print_srvsvc_NetTransportInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfoCtr *r) +{ + ndr_print_struct(ndr, name, "srvsvc_NetTransportInfoCtr"); + ndr->depth++; + ndr_print_uint32(ndr, "level", r->level); + ndr_print_set_switch_value(ndr, &r->ctr, r->level); + ndr_print_srvsvc_NetTransportCtr(ndr, "ctr", &r->ctr); + ndr->depth--; +} + static enum ndr_err_code ndr_push_srvsvc_NetRemoteTODInfo(struct ndr_push *ndr, int ndr_flags, const struct srvsvc_NetRemoteTODInfo *r) { if (ndr_flags & NDR_SCALARS) { @@ -13068,15 +13184,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetCharDevEnum(struct ndr_push *ndr, in NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16))); NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, 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_NetCharDevCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr)); + NDR_CHECK(ndr_push_srvsvc_NetCharDevInfoCtr(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) { @@ -13084,15 +13195,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetCharDevEnum(struct ndr_push *ndr, in } } 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_NetCharDevCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr)); + NDR_CHECK(ndr_push_srvsvc_NetCharDevInfoCtr(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"); } @@ -13111,8 +13217,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetCharDevEnum(struct ndr_pull *ndr, in uint32_t _ptr_server_unc; uint32_t _ptr_resume_handle; TALLOC_CTX *_mem_save_server_unc_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) { @@ -13137,20 +13242,12 @@ static enum ndr_err_code ndr_pull_srvsvc_NetCharDevEnum(struct ndr_pull *ndr, in NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_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_NetCharDevCtr(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_NetCharDevInfoCtr(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) { @@ -13164,29 +13261,19 @@ static enum ndr_err_code ndr_pull_srvsvc_NetCharDevEnum(struct ndr_pull *ndr, in 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_NetCharDevCtr(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_NetCharDevInfoCtr(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); } @@ -13227,14 +13314,9 @@ _PUBLIC_ void ndr_print_srvsvc_NetCharDevEnum(struct ndr_print *ndr, const char ndr_print_string(ndr, "server_unc", r->in.server_unc); } 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_NetCharDevCtr(ndr, "ctr", r->in.ctr); + ndr_print_srvsvc_NetCharDevInfoCtr(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); @@ -13248,14 +13330,9 @@ _PUBLIC_ void ndr_print_srvsvc_NetCharDevEnum(struct ndr_print *ndr, const char if (flags & NDR_OUT) { ndr_print_struct(ndr, "out", "srvsvc_NetCharDevEnum"); 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_NetCharDevCtr(ndr, "ctr", r->out.ctr); + ndr_print_srvsvc_NetCharDevInfoCtr(ndr, "info_ctr", r->out.info_ctr); ndr->depth--; ndr_print_ptr(ndr, "totalentries", r->out.totalentries); ndr->depth++; @@ -13491,15 +13568,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetCharDevQEnum(struct ndr_push *ndr, i 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_NetCharDevQCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.ctr)); + NDR_CHECK(ndr_push_srvsvc_NetCharDevQInfoCtr(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) { @@ -13507,15 +13579,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetCharDevQEnum(struct ndr_push *ndr, i } } 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_NetCharDevQCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.ctr)); + NDR_CHECK(ndr_push_srvsvc_NetCharDevQInfoCtr(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"); } @@ -13536,8 +13603,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetCharDevQEnum(struct ndr_pull *ndr, i uint32_t _ptr_resume_handle; TALLOC_CTX *_mem_save_server_unc_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) { @@ -13580,20 +13646,12 @@ static enum ndr_err_code ndr_pull_srvsvc_NetCharDevQEnum(struct ndr_pull *ndr, i 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_NetCharDevQCtr(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_NetCharDevQInfoCtr(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) { @@ -13607,29 +13665,19 @@ static enum ndr_err_code ndr_pull_srvsvc_NetCharDevQEnum(struct ndr_pull *ndr, i 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_NetCharDevQCtr(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_NetCharDevQInfoCtr(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); } @@ -13676,14 +13724,9 @@ _PUBLIC_ void ndr_print_srvsvc_NetCharDevQEnum(struct ndr_print *ndr, const char 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_NetCharDevQCtr(ndr, "ctr", r->in.ctr); + ndr_print_srvsvc_NetCharDevQInfoCtr(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); @@ -13697,14 +13740,9 @@ _PUBLIC_ void ndr_print_srvsvc_NetCharDevQEnum(struct ndr_print *ndr, const char if (flags & NDR_OUT) { ndr_print_struct(ndr, "out", "srvsvc_NetCharDevQEnum"); 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_NetCharDevQCtr(ndr, "ctr", r->out.ctr); + ndr_print_srvsvc_NetCharDevQInfoCtr(ndr, "info_ctr", r->out.info_ctr); ndr->depth--; ndr_print_ptr(ndr, "totalentries", r->out.totalentries); ndr->depth++; @@ -16505,7 +16543,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetServerStatisticsGet(struct ndr_push if (r->out.stats == NULL) { return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); } - NDR_CHECK(ndr_push_srvsvc_Statistics(ndr, NDR_SCALARS, r->out.stats)); + NDR_CHECK(ndr_push_unique_ptr(ndr, *r->out.stats)); + if (*r->out.stats) { + NDR_CHECK(ndr_push_srvsvc_Statistics(ndr, NDR_SCALARS, *r->out.stats)); + } NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); } return NDR_ERR_SUCCESS; @@ -16515,9 +16556,11 @@ static enum ndr_err_code ndr_pull_srvsvc_NetServerStatisticsGet(struct ndr_pull { uint32_t _ptr_server_unc; uint32_t _ptr_service; + uint32_t _ptr_stats; TALLOC_CTX *_mem_save_server_unc_0; TALLOC_CTX *_mem_save_service_0; TALLOC_CTX *_mem_save_stats_0; + TALLOC_CTX *_mem_save_stats_1; if (flags & NDR_IN) { ZERO_STRUCT(r->out); @@ -16568,7 +16611,18 @@ static enum ndr_err_code ndr_pull_srvsvc_NetServerStatisticsGet(struct ndr_pull } _mem_save_stats_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->out.stats, LIBNDR_FLAG_REF_ALLOC); - NDR_CHECK(ndr_pull_srvsvc_Statistics(ndr, NDR_SCALARS, r->out.stats)); + NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_stats)); + if (_ptr_stats) { + NDR_PULL_ALLOC(ndr, *r->out.stats); + } else { + *r->out.stats = NULL; + } + if (*r->out.stats) { + _mem_save_stats_1 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, *r->out.stats, 0); + NDR_CHECK(ndr_pull_srvsvc_Statistics(ndr, NDR_SCALARS, *r->out.stats)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_stats_1, 0); + } NDR_PULL_SET_MEM_CTX(ndr, _mem_save_stats_0, LIBNDR_FLAG_REF_ALLOC); NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); } @@ -16606,7 +16660,12 @@ _PUBLIC_ void ndr_print_srvsvc_NetServerStatisticsGet(struct ndr_print *ndr, con ndr->depth++; ndr_print_ptr(ndr, "stats", r->out.stats); ndr->depth++; - ndr_print_srvsvc_Statistics(ndr, "stats", r->out.stats); + ndr_print_ptr(ndr, "stats", *r->out.stats); + ndr->depth++; + if (*r->out.stats) { + ndr_print_srvsvc_Statistics(ndr, "stats", *r->out.stats); + } + ndr->depth--; ndr->depth--; ndr_print_WERROR(ndr, "result", r->out.result); ndr->depth--; @@ -16707,15 +16766,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetTransportEnum(struct ndr_push *ndr, NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16))); NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, 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.transports == NULL) { return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); } - NDR_CHECK(ndr_push_set_switch_value(ndr, r->in.transports, *r->in.level)); - NDR_CHECK(ndr_push_srvsvc_NetTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.transports)); + NDR_CHECK(ndr_push_srvsvc_NetTransportInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.transports)); 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) { @@ -16723,15 +16777,10 @@ static enum ndr_err_code ndr_push_srvsvc_NetTransportEnum(struct ndr_push *ndr, } } 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.transports == NULL) { return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); } - NDR_CHECK(ndr_push_set_switch_value(ndr, r->out.transports, *r->out.level)); - NDR_CHECK(ndr_push_srvsvc_NetTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.transports)); + NDR_CHECK(ndr_push_srvsvc_NetTransportInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.transports)); if (r->out.totalentries == NULL) { return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); } @@ -16750,7 +16799,6 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportEnum(struct ndr_pull *ndr, uint32_t _ptr_server_unc; uint32_t _ptr_resume_handle; TALLOC_CTX *_mem_save_server_unc_0; - TALLOC_CTX *_mem_save_level_0; TALLOC_CTX *_mem_save_transports_0; TALLOC_CTX *_mem_save_totalentries_0; TALLOC_CTX *_mem_save_resume_handle_0; @@ -16775,20 +16823,12 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportEnum(struct ndr_pull *ndr, NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_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.transports); } _mem_save_transports_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->in.transports, LIBNDR_FLAG_REF_ALLOC); - NDR_CHECK(ndr_pull_set_switch_value(ndr, r->in.transports, *r->in.level)); - NDR_CHECK(ndr_pull_srvsvc_NetTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.transports)); + NDR_CHECK(ndr_pull_srvsvc_NetTransportInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.transports)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_transports_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)); @@ -16803,28 +16843,18 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportEnum(struct ndr_pull *ndr, 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.transports); *r->out.transports = *r->in.transports; 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.transports); } _mem_save_transports_0 = NDR_PULL_GET_MEM_CTX(ndr); NDR_PULL_SET_MEM_CTX(ndr, r->out.transports, LIBNDR_FLAG_REF_ALLOC); - NDR_CHECK(ndr_pull_set_switch_value(ndr, r->out.transports, *r->out.level)); - NDR_CHECK(ndr_pull_srvsvc_NetTransportCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.transports)); + NDR_CHECK(ndr_pull_srvsvc_NetTransportInfoCtr(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.transports)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_transports_0, LIBNDR_FLAG_REF_ALLOC); if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { NDR_PULL_ALLOC(ndr, r->out.totalentries); @@ -16866,14 +16896,9 @@ _PUBLIC_ void ndr_print_srvsvc_NetTransportEnum(struct ndr_print *ndr, const cha ndr_print_string(ndr, "server_unc", r->in.server_unc); } 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, "transports", r->in.transports); ndr->depth++; - ndr_print_set_switch_value(ndr, r->in.transports, *r->in.level); - ndr_print_srvsvc_NetTransportCtr(ndr, "transports", r->in.transports); + ndr_print_srvsvc_NetTransportInfoCtr(ndr, "transports", r->in.transports); ndr->depth--; ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer); ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle); @@ -16887,14 +16912,9 @@ _PUBLIC_ void ndr_print_srvsvc_NetTransportEnum(struct ndr_print *ndr, const cha if (flags & NDR_OUT) { ndr_print_struct(ndr, "out", "srvsvc_NetTransportEnum"); 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, "transports", r->out.transports); ndr->depth++; - ndr_print_set_switch_value(ndr, r->out.transports, *r->out.level); - ndr_print_srvsvc_NetTransportCtr(ndr, "transports", r->out.transports); + ndr_print_srvsvc_NetTransportInfoCtr(ndr, "transports", r->out.transports); ndr->depth--; ndr_print_ptr(ndr, "totalentries", r->out.totalentries); ndr->depth++; @@ -16922,8 +16942,11 @@ static enum ndr_err_code ndr_push_srvsvc_NetTransportDel(struct ndr_push *ndr, i NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, ndr_charset_length(r->in.server_unc, CH_UTF16))); NDR_CHECK(ndr_push_charset(ndr, NDR_SCALARS, r->in.server_unc, ndr_charset_length(r->in.server_unc, CH_UTF16), sizeof(uint16_t), CH_UTF16)); } - NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.unknown)); - NDR_CHECK(ndr_push_srvsvc_NetTransportInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.transport)); + NDR_CHECK(ndr_push_uint32(ndr, NDR_SCALARS, r->in.level)); + if (r->in.info0 == NULL) { + return ndr_push_error(ndr, NDR_ERR_INVALID_POINTER, "NULL [ref] pointer"); + } + NDR_CHECK(ndr_push_srvsvc_NetTransportInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info0)); } if (flags & NDR_OUT) { NDR_CHECK(ndr_push_WERROR(ndr, NDR_SCALARS, r->out.result)); @@ -16935,6 +16958,7 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportDel(struct ndr_pull *ndr, i { uint32_t _ptr_server_unc; TALLOC_CTX *_mem_save_server_unc_0; + TALLOC_CTX *_mem_save_info0_0; if (flags & NDR_IN) { NDR_CHECK(ndr_pull_generic_ptr(ndr, &_ptr_server_unc)); if (_ptr_server_unc) { @@ -16954,8 +16978,14 @@ static enum ndr_err_code ndr_pull_srvsvc_NetTransportDel(struct ndr_pull *ndr, i NDR_CHECK(ndr_pull_charset(ndr, NDR_SCALARS, &r->in.server_unc, ndr_get_array_length(ndr, &r->in.server_unc), sizeof(uint16_t), CH_UTF16)); NDR_PULL_SET_MEM_CTX(ndr, _mem_save_server_unc_0, 0); } - NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.unknown)); - NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, &r->in.transport)); + NDR_CHECK(ndr_pull_uint32(ndr, NDR_SCALARS, &r->in.level)); + if (ndr->flags & LIBNDR_FLAG_REF_ALLOC) { + NDR_PULL_ALLOC(ndr, r->in.info0); + } + _mem_save_info0_0 = NDR_PULL_GET_MEM_CTX(ndr); + NDR_PULL_SET_MEM_CTX(ndr, r->in.info0, LIBNDR_FLAG_REF_ALLOC); + NDR_CHECK(ndr_pull_srvsvc_NetTransportInfo0(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info0)); + NDR_PULL_SET_MEM_CTX(ndr, _mem_save_info0_0, LIBNDR_FLAG_REF_ALLOC); } if (flags & NDR_OUT) { NDR_CHECK(ndr_pull_WERROR(ndr, NDR_SCALARS, &r->out.result)); @@ -16979,8 +17009,11 @@ _PUBLIC_ void ndr_print_srvsvc_NetTransportDel(struct ndr_print *ndr, const char ndr_print_string(ndr, "server_unc", r->in.server_unc); } ndr->depth--; - ndr_print_uint32(ndr, "unknown", r->in.unknown); - ndr_print_srvsvc_NetTransportInfo0(ndr, "transport", &r->in.transport); + ndr_print_uint32(ndr, "level", r->in.level); + ndr_print_ptr(ndr, "info0", r->in.info0); + ndr->depth++; + ndr_print_srvsvc_NetTransportInfo0(ndr, "info0", r->in.info0); + ndr->depth--; ndr->depth--; } if (flags & NDR_OUT) { diff --git a/source3/librpc/gen_ndr/ndr_srvsvc.h b/source3/librpc/gen_ndr/ndr_srvsvc.h index 8a29469ec5..33569d1870 100644 --- a/source3/librpc/gen_ndr/ndr_srvsvc.h +++ b/source3/librpc/gen_ndr/ndr_srvsvc.h @@ -126,12 +126,14 @@ void ndr_print_srvsvc_NetCharDevInfo1(struct ndr_print *ndr, const char *name, c void ndr_print_srvsvc_NetCharDevCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevCtr1 *r); void ndr_print_srvsvc_NetCharDevInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevInfo *r); void ndr_print_srvsvc_NetCharDevCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevCtr *r); +void ndr_print_srvsvc_NetCharDevInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevInfoCtr *r); void ndr_print_srvsvc_NetCharDevQInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQInfo0 *r); void ndr_print_srvsvc_NetCharDevQCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQCtr0 *r); void ndr_print_srvsvc_NetCharDevQInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQInfo1 *r); void ndr_print_srvsvc_NetCharDevQCtr1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQCtr1 *r); void ndr_print_srvsvc_NetCharDevQInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevQInfo *r); void ndr_print_srvsvc_NetCharDevQCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetCharDevQCtr *r); +void ndr_print_srvsvc_NetCharDevQInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetCharDevQInfoCtr *r); void ndr_print_srvsvc_NetConnInfo0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnInfo0 *r); void ndr_print_srvsvc_NetConnCtr0(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnCtr0 *r); void ndr_print_srvsvc_NetConnInfo1(struct ndr_print *ndr, const char *name, const struct srvsvc_NetConnInfo1 *r); @@ -256,6 +258,7 @@ void ndr_print_srvsvc_NetTransportCtr2(struct ndr_print *ndr, const char *name, void ndr_print_srvsvc_NetTransportInfo3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfo3 *r); void ndr_print_srvsvc_NetTransportCtr3(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportCtr3 *r); void ndr_print_srvsvc_NetTransportCtr(struct ndr_print *ndr, const char *name, const union srvsvc_NetTransportCtr *r); +void ndr_print_srvsvc_NetTransportInfoCtr(struct ndr_print *ndr, const char *name, const struct srvsvc_NetTransportInfoCtr *r); void ndr_print_srvsvc_NetRemoteTODInfo(struct ndr_print *ndr, const char *name, const struct srvsvc_NetRemoteTODInfo *r); void ndr_print_srvsvc_NetTransportInfo(struct ndr_print *ndr, const char *name, const union srvsvc_NetTransportInfo *r); void ndr_print_srvsvc_NetCharDevEnum(struct ndr_print *ndr, const char *name, int flags, const struct srvsvc_NetCharDevEnum *r); diff --git a/source3/librpc/gen_ndr/srv_srvsvc.c b/source3/librpc/gen_ndr/srv_srvsvc.c index 57d5239971..f995930b89 100644 --- a/source3/librpc/gen_ndr/srv_srvsvc.c +++ b/source3/librpc/gen_ndr/srv_srvsvc.c @@ -45,8 +45,7 @@ static bool api_srvsvc_NetCharDevEnum(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); @@ -281,8 +280,7 @@ static bool api_srvsvc_NetCharDevQEnum(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); @@ -1912,7 +1910,7 @@ static bool api_srvsvc_NetServerStatisticsGet(pipes_struct *p) } ZERO_STRUCT(r->out); - r->out.stats = talloc_zero(r, struct srvsvc_Statistics); + r->out.stats = talloc_zero(r, struct srvsvc_Statistics *); if (r->out.stats == NULL) { talloc_free(r); return false; @@ -2065,7 +2063,6 @@ static bool api_srvsvc_NetTransportEnum(pipes_struct *p) } ZERO_STRUCT(r->out); - r->out.level = r->in.level; r->out.transports = r->in.transports; r->out.totalentries = talloc_zero(r, uint32_t); if (r->out.totalentries == NULL) { diff --git a/source3/librpc/gen_ndr/srvsvc.h b/source3/librpc/gen_ndr/srvsvc.h index 8a2bbfb0a7..9125d0ae70 100644 --- a/source3/librpc/gen_ndr/srvsvc.h +++ b/source3/librpc/gen_ndr/srvsvc.h @@ -42,6 +42,11 @@ union srvsvc_NetCharDevCtr { struct srvsvc_NetCharDevCtr1 *ctr1;/* [unique,case] */ }; +struct srvsvc_NetCharDevInfoCtr { + uint32_t level; + union srvsvc_NetCharDevCtr ctr;/* [switch_is(level)] */ +}; + struct srvsvc_NetCharDevQInfo0 { const char *device;/* [unique,charset(UTF16)] */ }; @@ -74,6 +79,11 @@ union srvsvc_NetCharDevQCtr { struct srvsvc_NetCharDevQCtr1 *ctr1;/* [unique,case] */ }; +struct srvsvc_NetCharDevQInfoCtr { + uint32_t level; + union srvsvc_NetCharDevQCtr ctr;/* [switch_is(level)] */ +}; + struct srvsvc_NetConnInfo0 { uint32_t conn_id; }; @@ -468,6 +478,7 @@ struct srvsvc_NetSrvInfo402 { uint32_t sessreqs; uint32_t opensearch; uint32_t activelocks; + uint32_t numreqbufs; uint32_t sizereqbufs; uint32_t numbigbufs; uint32_t numfiletasks; @@ -501,6 +512,7 @@ struct srvsvc_NetSrvInfo403 { uint32_t sessreqs; uint32_t opensearch; uint32_t activelocks; + uint32_t numreqbufs; uint32_t sizereqbufs; uint32_t numbigbufs; uint32_t numfiletasks; @@ -908,7 +920,9 @@ union srvsvc_NetSrvInfo { }; struct srvsvc_NetDiskInfo0 { - const char * disk;/* [flag(LIBNDR_FLAG_STR_LEN4)] */ + uint32_t __disk_offset;/* [value(0)] */ + uint32_t __disk_length;/* [value(strlen(disk)+1)] */ + const char *disk;/* [charset(UTF16)] */ }; struct srvsvc_NetDiskInfo { @@ -1002,6 +1016,11 @@ union srvsvc_NetTransportCtr { struct srvsvc_NetTransportCtr3 *ctr3;/* [unique,case(3)] */ }; +struct srvsvc_NetTransportInfoCtr { + uint32_t level; + union srvsvc_NetTransportCtr ctr;/* [switch_is(level)] */ +}; + struct srvsvc_NetRemoteTODInfo { uint32_t elapsed; uint32_t msecs; @@ -1029,15 +1048,13 @@ struct srvsvc_NetCharDevEnum { struct { const char *server_unc;/* [unique,charset(UTF16)] */ uint32_t max_buffer; - uint32_t *level;/* [ref] */ - union srvsvc_NetCharDevCtr *ctr;/* [ref,switch_is(*level)] */ + struct srvsvc_NetCharDevInfoCtr *info_ctr;/* [ref] */ uint32_t *resume_handle;/* [unique] */ } in; struct { uint32_t *totalentries;/* [ref] */ - uint32_t *level;/* [ref] */ - union srvsvc_NetCharDevCtr *ctr;/* [ref,switch_is(*level)] */ + struct srvsvc_NetCharDevInfoCtr *info_ctr;/* [ref] */ uint32_t *resume_handle;/* [unique] */ WERROR result; } out; @@ -1079,15 +1096,13 @@ struct srvsvc_NetCharDevQEnum { const char *server_unc;/* [unique,charset(UTF16)] */ const char *user;/* [unique,charset(UTF16)] */ uint32_t max_buffer; - uint32_t *level;/* [ref] */ - union srvsvc_NetCharDevQCtr *ctr;/* [ref,switch_is(*level)] */ + struct srvsvc_NetCharDevQInfoCtr *info_ctr;/* [ref] */ uint32_t *resume_handle;/* [unique] */ } in; struct { uint32_t *totalentries;/* [ref] */ - uint32_t *level;/* [ref] */ - union srvsvc_NetCharDevQCtr *ctr;/* [ref,switch_is(*level)] */ + struct srvsvc_NetCharDevQInfoCtr *info_ctr;/* [ref] */ uint32_t *resume_handle;/* [unique] */ WERROR result; } out; @@ -1422,7 +1437,7 @@ struct srvsvc_NetServerStatisticsGet { } in; struct { - struct srvsvc_Statistics *stats;/* [ref] */ + struct srvsvc_Statistics **stats;/* [ref] */ WERROR result; } out; @@ -1447,15 +1462,13 @@ struct srvsvc_NetTransportEnum { struct { const char *server_unc;/* [unique,charset(UTF16)] */ uint32_t max_buffer; - uint32_t *level;/* [ref] */ - union srvsvc_NetTransportCtr *transports;/* [ref,switch_is(*level)] */ + struct srvsvc_NetTransportInfoCtr *transports;/* [ref] */ uint32_t *resume_handle;/* [unique] */ } in; struct { uint32_t *totalentries;/* [ref] */ - uint32_t *level;/* [ref] */ - union srvsvc_NetTransportCtr *transports;/* [ref,switch_is(*level)] */ + struct srvsvc_NetTransportInfoCtr *transports;/* [ref] */ uint32_t *resume_handle;/* [unique] */ WERROR result; } out; @@ -1466,8 +1479,8 @@ struct srvsvc_NetTransportEnum { struct srvsvc_NetTransportDel { struct { const char *server_unc;/* [unique,charset(UTF16)] */ - uint32_t unknown; - struct srvsvc_NetTransportInfo0 transport; + uint32_t level; + struct srvsvc_NetTransportInfo0 *info0;/* [ref] */ } in; struct { -- cgit From 6066e1a44d041d7a5cafcb4c0276f5ff323226d9 Mon Sep 17 00:00:00 2001 From: Günther Deschner Date: Fri, 31 Oct 2008 03:07:28 +0100 Subject: srvsvc: re-move idl file to main directory. Guenther --- source4/librpc/idl/srvsvc.idl | 1547 ----------------------------------------- 1 file changed, 1547 deletions(-) delete mode 100644 source4/librpc/idl/srvsvc.idl diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl deleted file mode 100644 index 4304dbed96..0000000000 --- a/source4/librpc/idl/srvsvc.idl +++ /dev/null @@ -1,1547 +0,0 @@ -#include "idl_types.h" - -/* - srvsvc interface definitions -*/ -import "security.idl", "svcctl.idl"; - -[ uuid("4b324fc8-1670-01d3-1278-5a47bf6ee188"), - version(3.0), - endpoint("ncacn_np:[\\pipe\\srvsvc]", "ncacn_ip_tcp:", "ncalrpc:"), - pointer_default(unique), - helpstring("Server Service") -] interface srvsvc -{ - typedef bitmap svcctl_ServerType svcctl_ServerType; - typedef bitmap security_secinfo security_secinfo; - -/**************************/ -/* srvsvc_NetCharDev */ -/**************************/ - typedef struct { - [string,charset(UTF16)] uint16 *device; - } srvsvc_NetCharDevInfo0; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetCharDevInfo0 *array; - } srvsvc_NetCharDevCtr0; - - typedef struct { - [string,charset(UTF16)] uint16 *device; - uint32 status; - [string,charset(UTF16)] uint16 *user; - uint32 time; - } srvsvc_NetCharDevInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetCharDevInfo1 *array; - } srvsvc_NetCharDevCtr1; - - typedef union { - [case(0)] srvsvc_NetCharDevInfo0 *info0; - [case(1)] srvsvc_NetCharDevInfo1 *info1; - [default] ; - } srvsvc_NetCharDevInfo; - - typedef union { - [case(0)] srvsvc_NetCharDevCtr0 *ctr0; - [case(1)] srvsvc_NetCharDevCtr1 *ctr1; - [default] ; - } srvsvc_NetCharDevCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetCharDevCtr ctr; - } srvsvc_NetCharDevInfoCtr; - - /******************/ - /* Function: 0x00 */ - WERROR srvsvc_NetCharDevEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out,ref] srvsvc_NetCharDevInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x01 */ - WERROR srvsvc_NetCharDevGetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 device_name[], - [in] uint32 level, - [out,ref,switch_is(level)] srvsvc_NetCharDevInfo *info - ); - - /******************/ - /* Function: 0x02 */ - WERROR srvsvc_NetCharDevControl( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 device_name[], - [in] uint32 opcode - ); - -/**************************/ -/* srvsvc_NetCharDevQ */ -/**************************/ - typedef struct { - [string,charset(UTF16)] uint16 *device; - } srvsvc_NetCharDevQInfo0; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetCharDevQInfo0 *array; - } srvsvc_NetCharDevQCtr0; - - typedef struct { - [string,charset(UTF16)] uint16 *device; - uint32 priority; - [string,charset(UTF16)] uint16 *devices; - uint32 users; - uint32 num_ahead; - } srvsvc_NetCharDevQInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetCharDevQInfo1 *array; - } srvsvc_NetCharDevQCtr1; - - typedef union { - [case(0)] srvsvc_NetCharDevQInfo0 *info0; - [case(1)] srvsvc_NetCharDevQInfo1 *info1; - [default] ; - } srvsvc_NetCharDevQInfo; - - typedef union { - [case(0)] srvsvc_NetCharDevQCtr0 *ctr0; - [case(1)] srvsvc_NetCharDevQCtr1 *ctr1; - [default] ; - } srvsvc_NetCharDevQCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetCharDevQCtr ctr; - } srvsvc_NetCharDevQInfoCtr; - - /******************/ - /* Function: 0x03 */ - WERROR srvsvc_NetCharDevQEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *user, - [in,out,ref] srvsvc_NetCharDevQInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x04 */ - WERROR srvsvc_NetCharDevQGetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 queue_name[], - [in] [string,charset(UTF16)] uint16 user[], - [in] uint32 level, - [out,switch_is(level),ref] srvsvc_NetCharDevQInfo *info - ); - - /******************/ - /* Function: 0x05 */ - WERROR srvsvc_NetCharDevQSetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 queue_name[], - [in] uint32 level, - [in,switch_is(level)] srvsvc_NetCharDevQInfo info, - [in,out,unique] uint32 *parm_error - ); - - /******************/ - /* Function: 0x06 */ - WERROR srvsvc_NetCharDevQPurge( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 queue_name[] - ); - - /******************/ - /* Function: 0x07 */ - WERROR srvsvc_NetCharDevQPurgeSelf( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 queue_name[], - [in] [string,charset(UTF16)] uint16 computer_name[] - ); - -/**************************/ -/* srvsvc_NetConn */ -/**************************/ - typedef struct { - uint32 conn_id; - } srvsvc_NetConnInfo0; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetConnInfo0 *array; - } srvsvc_NetConnCtr0; - - typedef struct { - uint32 conn_id; - uint32 conn_type; - uint32 num_open; - uint32 num_users; - uint32 conn_time; - [string,charset(UTF16)] uint16 *user; - [string,charset(UTF16)] uint16 *share; - } srvsvc_NetConnInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetConnInfo1 *array; - } srvsvc_NetConnCtr1; - - typedef union { - [case(0)] srvsvc_NetConnCtr0 *ctr0; - [case(1)] srvsvc_NetConnCtr1 *ctr1; - [default] ; - } srvsvc_NetConnCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetConnCtr ctr; - } srvsvc_NetConnInfoCtr; - - /******************/ - /* Function: 0x08 */ - WERROR srvsvc_NetConnEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *path, - [in,out,ref] srvsvc_NetConnInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - -/**************************/ -/* srvsvc_NetFile */ -/**************************/ - typedef struct { - uint32 fid; - } srvsvc_NetFileInfo2; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetFileInfo2 *array; - } srvsvc_NetFileCtr2; - - typedef struct { - uint32 fid; - uint32 permissions; - uint32 num_locks; - [string,charset(UTF16)] uint16 *path; - [string,charset(UTF16)] uint16 *user; - } srvsvc_NetFileInfo3; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetFileInfo3 *array; - } srvsvc_NetFileCtr3; - - typedef union { - [case(2)] srvsvc_NetFileInfo2 *info2; - [case(3)] srvsvc_NetFileInfo3 *info3; - [default] ; - } srvsvc_NetFileInfo; - - typedef union { - [case(2)] srvsvc_NetFileCtr2 *ctr2; - [case(3)] srvsvc_NetFileCtr3 *ctr3; - [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] srvsvc_NetFileInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x0a */ - WERROR srvsvc_NetFileGetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 fid, - [in] uint32 level, - [out,switch_is(level),ref] srvsvc_NetFileInfo *info - ); - - /******************/ - /* Function: 0x0b */ - WERROR srvsvc_NetFileClose( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 fid - ); - -/**************************/ -/* srvsvc_NetSess */ -/**************************/ - typedef struct { - [string,charset(UTF16)] uint16 *client; - } srvsvc_NetSessInfo0; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetSessInfo0 *array; - } srvsvc_NetSessCtr0; - - typedef struct { - [string,charset(UTF16)] uint16 *client; - [string,charset(UTF16)] uint16 *user; - uint32 num_open; - uint32 time; - uint32 idle_time; - uint32 user_flags; - } srvsvc_NetSessInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetSessInfo1 *array; - } srvsvc_NetSessCtr1; - - typedef struct { - [string,charset(UTF16)] uint16 *client; - [string,charset(UTF16)] uint16 *user; - uint32 num_open; - uint32 time; - uint32 idle_time; - uint32 user_flags; - [string,charset(UTF16)] uint16 *client_type; - } srvsvc_NetSessInfo2; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetSessInfo2 *array; - } srvsvc_NetSessCtr2; - - typedef struct { - [string,charset(UTF16)] uint16 *client; - [string,charset(UTF16)] uint16 *user; - uint32 time; - uint32 idle_time; - } srvsvc_NetSessInfo10; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetSessInfo10 *array; - } srvsvc_NetSessCtr10; - - typedef struct { - [string,charset(UTF16)] uint16 *client; - [string,charset(UTF16)] uint16 *user; - uint32 num_open; - uint32 time; - uint32 idle_time; - uint32 user_flags; - [string,charset(UTF16)] uint16 *client_type; - [string,charset(UTF16)] uint16 *transport; - } srvsvc_NetSessInfo502; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetSessInfo502 *array; - } srvsvc_NetSessCtr502; - - typedef union { - [case(0)] srvsvc_NetSessCtr0 *ctr0; - [case(1)] srvsvc_NetSessCtr1 *ctr1; - [case(2)] srvsvc_NetSessCtr2 *ctr2; - [case(10)] srvsvc_NetSessCtr10 *ctr10; - [case(502)] srvsvc_NetSessCtr502 *ctr502; - [default] ; - } srvsvc_NetSessCtr; - - /******************/ - /* 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] srvsvc_NetSessInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x0d */ - WERROR srvsvc_NetSessDel( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *client, - [in,unique] [string,charset(UTF16)] uint16 *user - ); - -/**************************/ -/* srvsvc_NetShare */ -/**************************/ - - /* share types */ - const uint32 STYPE_TEMPORARY = 0x40000000; /* share is a temporary one */ - const uint32 STYPE_HIDDEN = 0x80000000; /* share is a hidden one */ - - typedef [v1_enum, flag(NDR_PAHEX)] enum { - STYPE_DISKTREE = 0, - STYPE_DISKTREE_TEMPORARY = STYPE_DISKTREE|STYPE_TEMPORARY, - STYPE_DISKTREE_HIDDEN = STYPE_DISKTREE|STYPE_HIDDEN, - STYPE_PRINTQ = 1, - STYPE_PRINTQ_TEMPORARY = STYPE_PRINTQ|STYPE_TEMPORARY, - STYPE_PRINTQ_HIDDEN = STYPE_PRINTQ|STYPE_HIDDEN, - STYPE_DEVICE = 2, /* Serial device */ - STYPE_DEVICE_TEMPORARY = STYPE_DEVICE|STYPE_TEMPORARY, - STYPE_DEVICE_HIDDEN = STYPE_DEVICE|STYPE_HIDDEN, - STYPE_IPC = 3, /* Interprocess communication (IPC) */ - STYPE_IPC_TEMPORARY = STYPE_IPC|STYPE_TEMPORARY, - STYPE_IPC_HIDDEN = STYPE_IPC|STYPE_HIDDEN - } srvsvc_ShareType; - - typedef struct { - [string,charset(UTF16)] uint16 *name; - } srvsvc_NetShareInfo0; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo0 *array; - } srvsvc_NetShareCtr0; - - typedef struct { - [string,charset(UTF16)] uint16 *name; - srvsvc_ShareType type; - [string,charset(UTF16)] uint16 *comment; - } srvsvc_NetShareInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo1 *array; - } srvsvc_NetShareCtr1; - - typedef struct { - [string,charset(UTF16)] uint16 *name; - srvsvc_ShareType type; - [string,charset(UTF16)] uint16 *comment; - uint32 permissions; - uint32 max_users; - uint32 current_users; - [string,charset(UTF16)] uint16 *path; - [string,charset(UTF16)] uint16 *password; - } srvsvc_NetShareInfo2; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo2 *array; - } srvsvc_NetShareCtr2; - - typedef struct { - [string,charset(UTF16)] uint16 *name; - srvsvc_ShareType type; - [string,charset(UTF16)] uint16 *comment; - uint32 csc_policy; - } srvsvc_NetShareInfo501; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo501 *array; - } srvsvc_NetShareCtr501; - - typedef struct { - [string,charset(UTF16)] uint16 *name; - srvsvc_ShareType type; - [string,charset(UTF16)] uint16 *comment; - uint32 permissions; - uint32 max_users; - uint32 current_users; - [string,charset(UTF16)] uint16 *path; - [string,charset(UTF16)] uint16 *password; - sec_desc_buf sd_buf; - } srvsvc_NetShareInfo502; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo502 *array; - } srvsvc_NetShareCtr502; - - typedef struct { - [string,charset(UTF16)] uint16 *comment; - } srvsvc_NetShareInfo1004; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo1004 *array; - } srvsvc_NetShareCtr1004; - - typedef bitmap { - SHARE_1005_IN_DFS = 0x00000001, - SHARE_1005_DFS_ROOT = 0x00000002 - } NetShareInfo1005Flags; - - const uint32 SHARE_1005_CSC_POLICY_MASK = 0x00000030; - const uint32 SHARE_1005_CSC_POLICY_SHIFT = 4; - - typedef struct { - NetShareInfo1005Flags dfs_flags; - } srvsvc_NetShareInfo1005; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo1005 *array; - } srvsvc_NetShareCtr1005; - - typedef struct { - uint32 max_users; - } srvsvc_NetShareInfo1006; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo1006 *array; - } srvsvc_NetShareCtr1006; - - typedef struct { - uint32 flags; - [string,charset(UTF16)] uint16 *alternate_directory_name; - } srvsvc_NetShareInfo1007; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetShareInfo1007 *array; - } srvsvc_NetShareCtr1007; - - typedef struct { - uint32 count; - [size_is(count)] sec_desc_buf *array; - } srvsvc_NetShareCtr1501; - - typedef union { - [case(0)] srvsvc_NetShareInfo0 *info0; - [case(1)] srvsvc_NetShareInfo1 *info1; - [case(2)] srvsvc_NetShareInfo2 *info2; - [case(501)] srvsvc_NetShareInfo501 *info501; - [case(502)] srvsvc_NetShareInfo502 *info502; - [case(1004)] srvsvc_NetShareInfo1004 *info1004; - [case(1005)] srvsvc_NetShareInfo1005 *info1005; - [case(1006)] srvsvc_NetShareInfo1006 *info1006; - [case(1007)] srvsvc_NetShareInfo1007 *info1007; - [case(1501)] sec_desc_buf *info1501; - [default] ; - } srvsvc_NetShareInfo; - - typedef union { - [case(0)] srvsvc_NetShareCtr0 *ctr0; - [case(1)] srvsvc_NetShareCtr1 *ctr1; - [case(2)] srvsvc_NetShareCtr2 *ctr2; - [case(501)] srvsvc_NetShareCtr501 *ctr501; - [case(502)] srvsvc_NetShareCtr502 *ctr502; - [case(1004)] srvsvc_NetShareCtr1004 *ctr1004; - [case(1005)] srvsvc_NetShareCtr1005 *ctr1005; - [case(1006)] srvsvc_NetShareCtr1006 *ctr1006; - [case(1007)] srvsvc_NetShareCtr1007 *ctr1007; - [case(1501)] srvsvc_NetShareCtr1501 *ctr1501; - [default] ; - } srvsvc_NetShareCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetShareCtr ctr; - } srvsvc_NetShareInfoCtr; - - /******************/ - /* Function: 0x0e */ - WERROR srvsvc_NetShareAdd( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in,ref,switch_is(level)] srvsvc_NetShareInfo *info, - [in,out,unique] uint32 *parm_error - ); - - /******************/ - /* Function: 0x0f */ - WERROR srvsvc_NetShareEnumAll ( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out,ref] srvsvc_NetShareInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x10 */ - WERROR srvsvc_NetShareGetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 share_name[], - [in] uint32 level, - [out,ref,switch_is(level)] srvsvc_NetShareInfo *info - ); - - /******************/ - /* Function: 0x11 */ - WERROR srvsvc_NetShareSetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 share_name[], - [in] uint32 level, - [in,ref,switch_is(level)] srvsvc_NetShareInfo *info, - [in,out,unique] uint32 *parm_error - ); - - /******************/ - /* Function: 0x12 */ - WERROR srvsvc_NetShareDel( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 share_name[], - [in] uint32 reserved - ); - - /******************/ - /* Function: 0x13 */ - WERROR srvsvc_NetShareDelSticky( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 share_name[], - [in] uint32 reserved - ); - - /******************/ - /* Function: 0x14 */ - WERROR srvsvc_NetShareCheck( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 device_name[], - [out,ref] srvsvc_ShareType *type - ); - -/**************************/ -/* srvsvc_NetSrv */ -/**************************/ - typedef [public,v1_enum] enum { - PLATFORM_ID_DOS = 300, - PLATFORM_ID_OS2 = 400, - PLATFORM_ID_NT = 500, - PLATFORM_ID_OSF = 600, - PLATFORM_ID_VMS = 700 - } srvsvc_PlatformId; - - typedef struct { - srvsvc_PlatformId platform_id; - [string,charset(UTF16)] uint16 *server_name; - } srvsvc_NetSrvInfo100; - - typedef struct { - srvsvc_PlatformId platform_id; - [string,charset(UTF16)] uint16 *server_name; - uint32 version_major; - uint32 version_minor; - svcctl_ServerType server_type; - [string,charset(UTF16)] uint16 *comment; - } srvsvc_NetSrvInfo101; - - typedef struct { - srvsvc_PlatformId platform_id; - [string,charset(UTF16)] uint16 *server_name; - uint32 version_major; - uint32 version_minor; - svcctl_ServerType server_type; - [string,charset(UTF16)] uint16 *comment; - uint32 users; - uint32 disc; - uint32 hidden; - uint32 announce; - uint32 anndelta; - uint32 licenses; - [string,charset(UTF16)] uint16 *userpath; - } srvsvc_NetSrvInfo102; - - typedef struct { - uint32 ulist_mtime; - uint32 glist_mtime; - uint32 alist_mtime; - [string,charset(UTF16)] uint16 *alerts; - uint32 security; - uint32 numadmin; - uint32 lanmask; - [string,charset(UTF16)] uint16 *guestaccount; - uint32 chdevs; - uint32 chdevqs; - uint32 chdevjobs; - uint32 connections; - uint32 shares; - uint32 openfiles; - uint32 sessopen; - uint32 sesssvc; - uint32 sessreqs; - uint32 opensearch; - uint32 activelocks; - uint32 numreqbufs; - uint32 sizereqbufs; - uint32 numbigbufs; - uint32 numfiletasks; - uint32 alertsched; - uint32 erroralert; - uint32 logonalert; - uint32 accessalert; - uint32 diskalert; - uint32 netioalert; - uint32 maxaudits; - [string,charset(UTF16)] uint16 *srvheuristics; - } srvsvc_NetSrvInfo402; - - typedef struct { - uint32 ulist_mtime; - uint32 glist_mtime; - uint32 alist_mtime; - [string,charset(UTF16)] uint16 *alerts; - uint32 security; - uint32 numadmin; - uint32 lanmask; - [string,charset(UTF16)] uint16 *guestaccount; - uint32 chdevs; - uint32 chdevqs; - uint32 chdevjobs; - uint32 connections; - uint32 shares; - uint32 openfiles; - uint32 sessopen; - uint32 sesssvc; - uint32 sessreqs; - uint32 opensearch; - uint32 activelocks; - uint32 numreqbufs; - uint32 sizereqbufs; - uint32 numbigbufs; - uint32 numfiletasks; - uint32 alertsched; - uint32 eroralert; - uint32 logonalert; - uint32 accessalert; - uint32 diskalert; - uint32 netioalert; - uint32 maxaudits; - [string,charset(UTF16)] uint16 *srvheuristics; - uint32 auditedevents; - uint32 auditprofile; - [string,charset(UTF16)] uint16 *autopath; - } srvsvc_NetSrvInfo403; - - typedef struct { - uint32 sessopen; - uint32 sesssvc; - uint32 opensearch; - uint32 sizereqbufs; - uint32 initworkitems; - uint32 maxworkitems; - uint32 rawworkitems; - uint32 irpstacksize; - uint32 maxrawbuflen; - uint32 sessusers; - uint32 sessconns; - uint32 maxpagedmemoryusage; - uint32 maxnonpagedmemoryusage; - uint32 enablesoftcompat; - uint32 enableforcedlogoff; - uint32 timesource; - uint32 acceptdownlevelapis; - uint32 lmannounce; - } srvsvc_NetSrvInfo502; - - typedef struct{ - uint32 sessopen; - uint32 sesssvc; - uint32 opensearch; - uint32 sizereqbufs; - uint32 initworkitems; - uint32 maxworkitems; - uint32 rawworkitems; - uint32 irpstacksize; - uint32 maxrawbuflen; - uint32 sessusers; - uint32 sessconns; - uint32 maxpagedmemoryusage; - uint32 maxnonpagedmemoryusage; - uint32 enablesoftcompat; - uint32 enableforcedlogoff; - uint32 timesource; - uint32 acceptdownlevelapis; - uint32 lmannounce; - [string,charset(UTF16)] uint16 *domain; - uint32 maxcopyreadlen; - uint32 maxcopywritelen; - uint32 minkeepsearch; - uint32 maxkeepsearch; - uint32 minkeepcomplsearch; - uint32 maxkeepcomplsearch; - uint32 threadcountadd; - uint32 numlockthreads; - uint32 scavtimeout; - uint32 minrcvqueue; - uint32 minfreeworkitems; - uint32 xactmemsize; - uint32 threadpriority; - uint32 maxmpxct; - uint32 oplockbreakwait; - uint32 oplockbreakresponsewait; - uint32 enableoplocks; - uint32 enableoplockforceclose; - uint32 enablefcbopens; - uint32 enableraw; - uint32 enablesharednetdrives; - uint32 minfreeconnections; - uint32 maxfreeconnections; - } srvsvc_NetSrvInfo503; - - typedef struct{ - uint32 sessopen; - uint32 sesssvc; - uint32 opensearch; - uint32 sizereqbufs; - uint32 initworkitems; - uint32 maxworkitems; - uint32 rawworkitems; - uint32 irpstacksize; - uint32 maxrawbuflen; - uint32 sessusers; - uint32 sessconns; - uint32 maxpagedmemoryusage; - uint32 maxnonpagedmemoryusage; - uint32 enablesoftcompat; - uint32 enableforcedlogoff; - uint32 timesource; - uint32 acceptdownlevelapis; - uint32 lmannounce; - [string,charset(UTF16)] uint16 *domain; - uint32 maxcopyreadlen; - uint32 maxcopywritelen; - uint32 minkeepsearch; - uint32 minkeepcomplsearch; - uint32 maxkeepcomplsearch; - uint32 threadcountadd; - uint32 numlockthreads; - uint32 scavtimeout; - uint32 minrcvqueue; - uint32 minfreeworkitems; - uint32 xactmemsize; - uint32 threadpriority; - uint32 maxmpxct; - uint32 oplockbreakwait; - uint32 oplockbreakresponsewait; - uint32 enableoplocks; - uint32 enableoplockforceclose; - uint32 enablefcbopens; - uint32 enableraw; - uint32 enablesharednetdrives; - uint32 minfreeconnections; - uint32 maxfreeconnections; - uint32 initsesstable; - uint32 initconntable; - uint32 initfiletable; - uint32 initsearchtable; - uint32 alertsched; - uint32 errortreshold; - uint32 networkerrortreshold; - uint32 diskspacetreshold; - uint32 reserved; - uint32 maxlinkdelay; - uint32 minlinkthroughput; - uint32 linkinfovalidtime; - uint32 scavqosinfoupdatetime; - uint32 maxworkitemidletime; - } srvsvc_NetSrvInfo599; - - typedef struct{ - [string,charset(UTF16)] uint16 *comment; - } srvsvc_NetSrvInfo1005; - - typedef struct{ - uint32 disc; - } srvsvc_NetSrvInfo1010; - - typedef struct{ - uint32 hidden; - } srvsvc_NetSrvInfo1016; - - typedef struct{ - uint32 announce; - } srvsvc_NetSrvInfo1017; - - typedef struct{ - uint32 anndelta; - } srvsvc_NetSrvInfo1018; - - typedef struct{ - uint32 users; - } srvsvc_NetSrvInfo1107; - - typedef struct{ - uint32 sessopens; - } srvsvc_NetSrvInfo1501; - - typedef struct{ - uint32 sessvcs; - } srvsvc_NetSrvInfo1502; - - typedef struct{ - uint32 opensearch; - } srvsvc_NetSrvInfo1503; - - typedef struct{ - uint32 maxworkitems; - } srvsvc_NetSrvInfo1506; - - typedef struct{ - uint32 maxrawbuflen; - } srvsvc_NetSrvInfo1509; - - typedef struct{ - uint32 sessusers; - } srvsvc_NetSrvInfo1510; - - typedef struct{ - uint32 sesscons; - } srvsvc_NetSrvInfo1511; - - typedef struct{ - uint32 maxnonpagedmemoryusage; - } srvsvc_NetSrvInfo1512; - - typedef struct{ - uint32 maxpagedmemoryusage; - } srvsvc_NetSrvInfo1513; - - typedef struct{ - uint32 enablesoftcompat; - } srvsvc_NetSrvInfo1514; - - typedef struct{ - uint32 enableforcedlogoff; - } srvsvc_NetSrvInfo1515; - - typedef struct{ - uint32 timesource; - } srvsvc_NetSrvInfo1516; - - typedef struct{ - uint32 lmannounce; - } srvsvc_NetSrvInfo1518; - - typedef struct{ - uint32 maxcopyreadlen; - } srvsvc_NetSrvInfo1520; - - typedef struct{ - uint32 maxcopywritelen; - } srvsvc_NetSrvInfo1521; - - typedef struct{ - uint32 minkeepsearch; - } srvsvc_NetSrvInfo1522; - - typedef struct{ - uint32 maxkeepsearch; - } srvsvc_NetSrvInfo1523; - - typedef struct{ - uint32 minkeepcomplsearch; - } srvsvc_NetSrvInfo1524; - - typedef struct{ - uint32 maxkeepcomplsearch; - } srvsvc_NetSrvInfo1525; - - typedef struct{ - uint32 scavtimeout; - } srvsvc_NetSrvInfo1528; - - typedef struct{ - uint32 minrcvqueue; - } srvsvc_NetSrvInfo1529; - - typedef struct{ - uint32 minfreeworkitems; - } srvsvc_NetSrvInfo1530; - - typedef struct{ - uint32 maxmpxct; - } srvsvc_NetSrvInfo1533; - - typedef struct{ - uint32 oplockbreakwait; - } srvsvc_NetSrvInfo1534; - - typedef struct{ - uint32 oplockbreakresponsewait; - } srvsvc_NetSrvInfo1535; - - typedef struct{ - uint32 enableoplocks; - } srvsvc_NetSrvInfo1536; - - typedef struct{ - uint32 enableoplockforceclose; - } srvsvc_NetSrvInfo1537; - - typedef struct{ - uint32 enablefcbopens; - } srvsvc_NetSrvInfo1538; - - typedef struct{ - uint32 enableraw; - } srvsvc_NetSrvInfo1539; - - typedef struct{ - uint32 enablesharednetdrives; - } srvsvc_NetSrvInfo1540; - - typedef struct{ - uint32 minfreeconnections; - } srvsvc_NetSrvInfo1541; - - typedef struct{ - uint32 maxfreeconnections; - } srvsvc_NetSrvInfo1542; - - typedef struct{ - uint32 initsesstable; - } srvsvc_NetSrvInfo1543; - - typedef struct{ - uint32 initconntable; - } srvsvc_NetSrvInfo1544; - - typedef struct{ - uint32 initfiletable; - } srvsvc_NetSrvInfo1545; - - typedef struct{ - uint32 initsearchtable; - } srvsvc_NetSrvInfo1546; - - typedef struct{ - uint32 alertsched; - } srvsvc_NetSrvInfo1547; - - typedef struct{ - uint32 errortreshold; - } srvsvc_NetSrvInfo1548; - - typedef struct{ - uint32 networkerrortreshold; - } srvsvc_NetSrvInfo1549; - - typedef struct{ - uint32 diskspacetreshold; - } srvsvc_NetSrvInfo1550; - - typedef struct{ - uint32 maxlinkdelay; - } srvsvc_NetSrvInfo1552; - - typedef struct{ - uint32 minlinkthroughput; - } srvsvc_NetSrvInfo1553; - - typedef struct{ - uint32 linkinfovalidtime; - } srvsvc_NetSrvInfo1554; - - typedef struct{ - uint32 scavqosinfoupdatetime; - } srvsvc_NetSrvInfo1555; - - typedef struct{ - uint32 maxworkitemidletime; - } srvsvc_NetSrvInfo1556; - - - typedef union{ - [case(100)] srvsvc_NetSrvInfo100 *info100; - [case(101)] srvsvc_NetSrvInfo101 *info101; - [case(102)] srvsvc_NetSrvInfo102 *info102; - [case(402)] srvsvc_NetSrvInfo402 *info402; - [case(403)] srvsvc_NetSrvInfo403 *info403; - [case(502)] srvsvc_NetSrvInfo502 *info502; - [case(503)] srvsvc_NetSrvInfo503 *info503; - [case(599)] srvsvc_NetSrvInfo599 *info599; - [case(1005)] srvsvc_NetSrvInfo1005 *info1005; - [case(1010)] srvsvc_NetSrvInfo1010 *info1010; - [case(1016)] srvsvc_NetSrvInfo1016 *info1016; - [case(1017)] srvsvc_NetSrvInfo1017 *info1017; - [case(1018)] srvsvc_NetSrvInfo1018 *info1018; - [case(1107)] srvsvc_NetSrvInfo1107 *info1107; - [case(1501)] srvsvc_NetSrvInfo1501 *info1501; - [case(1502)] srvsvc_NetSrvInfo1502 *info1502; - [case(1503)] srvsvc_NetSrvInfo1503 *info1503; - [case(1506)] srvsvc_NetSrvInfo1506 *info1506; - [case(1509)] srvsvc_NetSrvInfo1509 *info1509; - [case(1510)] srvsvc_NetSrvInfo1510 *info1510; - [case(1511)] srvsvc_NetSrvInfo1511 *info1511; - [case(1512)] srvsvc_NetSrvInfo1512 *info1512; - [case(1513)] srvsvc_NetSrvInfo1513 *info1513; - [case(1514)] srvsvc_NetSrvInfo1514 *info1514; - [case(1515)] srvsvc_NetSrvInfo1515 *info1515; - [case(1516)] srvsvc_NetSrvInfo1516 *info1516; - [case(1518)] srvsvc_NetSrvInfo1518 *info1518; - [case(1520)] srvsvc_NetSrvInfo1520 *info1520; - [case(1521)] srvsvc_NetSrvInfo1521 *info1521; - [case(1522)] srvsvc_NetSrvInfo1522 *info1522; - [case(1523)] srvsvc_NetSrvInfo1523 *info1523; - [case(1524)] srvsvc_NetSrvInfo1524 *info1524; - [case(1525)] srvsvc_NetSrvInfo1525 *info1525; - [case(1528)] srvsvc_NetSrvInfo1528 *info1528; - [case(1529)] srvsvc_NetSrvInfo1529 *info1529; - [case(1530)] srvsvc_NetSrvInfo1530 *info1530; - [case(1533)] srvsvc_NetSrvInfo1533 *info1533; - [case(1534)] srvsvc_NetSrvInfo1534 *info1534; - [case(1535)] srvsvc_NetSrvInfo1535 *info1535; - [case(1536)] srvsvc_NetSrvInfo1536 *info1536; - [case(1537)] srvsvc_NetSrvInfo1537 *info1537; - [case(1538)] srvsvc_NetSrvInfo1538 *info1538; - [case(1539)] srvsvc_NetSrvInfo1539 *info1539; - [case(1540)] srvsvc_NetSrvInfo1540 *info1540; - [case(1541)] srvsvc_NetSrvInfo1541 *info1541; - [case(1542)] srvsvc_NetSrvInfo1542 *info1542; - [case(1543)] srvsvc_NetSrvInfo1543 *info1543; - [case(1544)] srvsvc_NetSrvInfo1544 *info1544; - [case(1545)] srvsvc_NetSrvInfo1545 *info1545; - [case(1546)] srvsvc_NetSrvInfo1546 *info1546; - [case(1547)] srvsvc_NetSrvInfo1547 *info1547; - [case(1548)] srvsvc_NetSrvInfo1548 *info1548; - [case(1549)] srvsvc_NetSrvInfo1549 *info1549; - [case(1550)] srvsvc_NetSrvInfo1550 *info1550; - [case(1552)] srvsvc_NetSrvInfo1552 *info1552; - [case(1553)] srvsvc_NetSrvInfo1553 *info1553; - [case(1554)] srvsvc_NetSrvInfo1554 *info1554; - [case(1555)] srvsvc_NetSrvInfo1555 *info1555; - [case(1556)] srvsvc_NetSrvInfo1556 *info1556; - [default]; - } srvsvc_NetSrvInfo; - - /******************/ - /* Function: 0x15 */ - WERROR srvsvc_NetSrvGetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [out,ref,switch_is(level)] srvsvc_NetSrvInfo *info - ); - - /******************/ - /* Function: 0x16 */ - WERROR srvsvc_NetSrvSetInfo( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in,ref,switch_is(level)] srvsvc_NetSrvInfo *info, - [in,out,unique] uint32 *parm_error - ); - -/**************************/ -/* srvsvc_NetDisk */ -/**************************/ - typedef struct { - /* - * In theory this should be: - * [charset(UTF16),string] uint16 annotation[3] - * But midl treats this as: - * [charset(UTF16),string] uint16 annotation[] - * and pidl doesn't support this yet - */ - [value(0)] uint32 __disk_offset; - [value(strlen(disk)+1)] uint32 __disk_length; - [charset(UTF16)] uint16 disk[__disk_length]; - } srvsvc_NetDiskInfo0; - - typedef struct { - uint32 count; - [size_is(count), length_is(count)] srvsvc_NetDiskInfo0 *disks; - } srvsvc_NetDiskInfo; - - /******************/ - /* Function: 0x17 */ - WERROR srvsvc_NetDiskEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in,out,ref] srvsvc_NetDiskInfo *info, - [in] uint32 maxlen, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - -/**************************/ -/* srvsvc_NetStatistics */ -/**************************/ - typedef struct { - uint32 start; - uint32 fopens; - uint32 devopens; - uint32 jobsqueued; - uint32 sopens; - uint32 stimeouts; - uint32 serrorout; - uint32 pwerrors; - uint32 permerrors; - uint32 syserrors; - uint32 bytessent_low; - uint32 bytessent_high; - uint32 bytesrcvd_low; - uint32 bytesrcvd_high; - uint32 avresponse; - uint32 reqbufneed; - uint32 bigbufneed; - } srvsvc_Statistics; - - /******************/ - /* Function: 0x18 */ - WERROR srvsvc_NetServerStatisticsGet( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *service, - [in] uint32 level, - [in] uint32 options, - [out,ref] srvsvc_Statistics **stats - ); - -/**************************/ -/* srvsvc_NetTransport */ -/**************************/ - typedef struct { - uint32 vcs; - [string,charset(UTF16)] uint16 *name; - [size_is(addr_len)] uint8 *addr; - uint32 addr_len; - [string,charset(UTF16)] uint16 *net_addr; - } srvsvc_NetTransportInfo0; - - /******************/ - /* Function: 0x19 */ - WERROR srvsvc_NetTransportAdd( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in,switch_is(level)] srvsvc_NetTransportInfo info - ); - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetTransportInfo0 *array; - } srvsvc_NetTransportCtr0; - - typedef struct { - uint32 vcs; - [string,charset(UTF16)] uint16 *name; - [size_is(addr_len)] uint8 *addr; - uint32 addr_len; - [string,charset(UTF16)] uint16 *net_addr; - [string,charset(UTF16)] uint16 *domain; - } srvsvc_NetTransportInfo1; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetTransportInfo1 *array; - } srvsvc_NetTransportCtr1; - - typedef struct { - uint32 vcs; - [string,charset(UTF16)] uint16 *name; - [size_is(addr_len)] uint8 *addr; - uint32 addr_len; - [string,charset(UTF16)] uint16 *net_addr; - [string,charset(UTF16)] uint16 *domain; - uint32 unknown; - } srvsvc_NetTransportInfo2; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetTransportInfo2 *array; - } srvsvc_NetTransportCtr2; - - typedef struct { - uint32 vcs; - [string,charset(UTF16)] uint16 *name; - [size_is(addr_len)] uint8 *addr; - uint32 addr_len; - [string,charset(UTF16)] uint16 *net_addr; - [string,charset(UTF16)] uint16 *domain; - uint32 unknown1; - uint32 unknown2; - uint8 unknown3[256]; - } srvsvc_NetTransportInfo3; - - typedef struct { - uint32 count; - [size_is(count)] srvsvc_NetTransportInfo3 *array; - } srvsvc_NetTransportCtr3; - - typedef union { - [case(0)] srvsvc_NetTransportCtr0 *ctr0; - [case(1)] srvsvc_NetTransportCtr1 *ctr1; - [case(2)] srvsvc_NetTransportCtr2 *ctr2; - [case(3)] srvsvc_NetTransportCtr3 *ctr3; - [default]; - } srvsvc_NetTransportCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetTransportCtr ctr; - } srvsvc_NetTransportInfoCtr; - - /******************/ - /* Function: 0x1a */ - WERROR srvsvc_NetTransportEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out,ref] srvsvc_NetTransportInfoCtr *transports, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x1b */ - WERROR srvsvc_NetTransportDel( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in] srvsvc_NetTransportInfo0 *info0 - ); - -/**************************/ -/* srvsvc_NetRemoteTOD */ -/**************************/ - typedef struct { - uint32 elapsed; /* time(NULL) */ - uint32 msecs; /* milliseconds till system reboot (uptime) */ - uint32 hours; - uint32 mins; - uint32 secs; - uint32 hunds; - int32 timezone; /* in minutes */ - uint32 tinterval; /* clock tick interval in 0.0001 second units; 310 on windows */ - uint32 day; - uint32 month; - uint32 year; - uint32 weekday; - } srvsvc_NetRemoteTODInfo; - - /******************/ - /* Function: 0x1c */ - WERROR srvsvc_NetRemoteTOD( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [out,ref] srvsvc_NetRemoteTODInfo **info - ); - -/**************************/ -/* srvsvc_NetServiceBits */ -/**************************/ - /******************/ - /* Function: 0x1d */ - WERROR srvsvc_NetSetServiceBits( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *transport, - [in] uint32 servicebits, - [in] uint32 updateimmediately - ); - -/**************************/ -/* srvsvc_NetPath */ -/**************************/ - /******************/ - /* Function: 0x1e */ - WERROR srvsvc_NetPathType( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 path[], - [in] uint32 pathflags, - [out,ref] uint32 *pathtype - ); - - /******************/ - /* Function: 0x1f */ - WERROR srvsvc_NetPathCanonicalize( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 path[], - [out] [size_is(maxbuf)] uint8 can_path[], - [in] uint32 maxbuf, - [in] [string,charset(UTF16)] uint16 prefix[], - [in,out,ref] uint32 *pathtype, - [in] uint32 pathflags - ); - - /******************/ - /* Function: 0x20 */ - WERROR srvsvc_NetPathCompare( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 path1[], - [in] [string,charset(UTF16)] uint16 path2[], - [in] uint32 pathtype, - [in] uint32 pathflags - ); - -/**************************/ -/* srvsvc_NetName */ -/**************************/ - /******************/ - /* Function: 0x21 */ - WERROR srvsvc_NetNameValidate( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 name[], - [in] uint32 name_type, - [in] uint32 flags - ); - - /******************/ - /* Function: 0x22 */ - [todo] WERROR srvsvc_NETRPRNAMECANONICALIZE( - ); - - /******************/ - /* Function: 0x23 */ - WERROR srvsvc_NetPRNameCompare( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 name1[], - [in] [string,charset(UTF16)] uint16 name2[], - [in] uint32 name_type, - [in] uint32 flags - ); - -/**************************/ -/* srvsvc_NetShare ... */ -/**************************/ - /******************/ - /* Function: 0x24 */ - /* Note, there must be some way to return entries read vs - total entries ... */ - WERROR srvsvc_NetShareEnum( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,out,ref] srvsvc_NetShareInfoCtr *info_ctr, - [in] uint32 max_buffer, - [out,ref] uint32 *totalentries, - [in,out,unique] uint32 *resume_handle - ); - - /******************/ - /* Function: 0x25 */ - WERROR srvsvc_NetShareDelStart( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] [string,charset(UTF16)] uint16 share[], - [in] uint32 reserved, - [out,unique] policy_handle *hnd - ); - - /******************/ - /* Function: 0x26 */ - WERROR srvsvc_NetShareDelCommit( - [in, out,unique] policy_handle *hnd - ); - - /******************/ - /* Function: 0x27 */ - WERROR srvsvc_NetGetFileSecurity( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *share, - [in] [string,charset(UTF16)] uint16 file[], - [in] security_secinfo securityinformation, - [out,ref] sec_desc_buf **sd_buf - ); - - /******************/ - /* Function: 0x28 */ - WERROR srvsvc_NetSetFileSecurity( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *share, - [in] [string,charset(UTF16)] uint16 file[], - [in] security_secinfo securityinformation, - [in,ref] sec_desc_buf *sd_buf - ); - - - - typedef [switch_type(uint32)] union { - [case(0)] srvsvc_NetTransportInfo0 info0; - [case(1)] srvsvc_NetTransportInfo1 info1; - [case(2)] srvsvc_NetTransportInfo2 info2; - [case(3)] srvsvc_NetTransportInfo3 info3; - } srvsvc_NetTransportInfo; - - /******************/ - /* Function: 0x29 */ - WERROR srvsvc_NetServerTransportAddEx( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in] uint32 level, - [in,switch_is(level)] srvsvc_NetTransportInfo info - ); - - /******************/ - /* Function: 0x2a */ - WERROR srvsvc_NetServerSetServiceBitsEx( - [in,unique] [string,charset(UTF16)] uint16 *server_unc, - [in,unique] [string,charset(UTF16)] uint16 *emulated_server_unc, - [in,unique] [string,charset(UTF16)] uint16 *transport, - [in] uint32 servicebitsofinterest, - [in] uint32 servicebits, - [in] uint32 updateimmediately - ); - - /******************/ - /* Function: 0x2b */ - [todo] WERROR srvsvc_NETRDFSGETVERSION( - ); - - /******************/ - /* Function: 0x2c */ - [todo] WERROR srvsvc_NETRDFSCREATELOCALPARTITION( - ); - - /******************/ - /* Function: 0x2d */ - [todo] WERROR srvsvc_NETRDFSDELETELOCALPARTITION( - ); - - /******************/ - /* Function: 0x2e */ - [todo] WERROR srvsvc_NETRDFSSETLOCALVOLUMESTATE( - ); - - /******************/ - /* Function: 0x2f */ - [todo] WERROR srvsvc_NETRDFSSETSERVERINFO( - ); - - /******************/ - /* Function: 0x30 */ - [todo] WERROR srvsvc_NETRDFSCREATEEXITPOINT( - ); - - /******************/ - /* Function: 0x31 */ - [todo] WERROR srvsvc_NETRDFSDELETEEXITPOINT( - ); - - /******************/ - /* Function: 0x32 */ - [todo] WERROR srvsvc_NETRDFSMODIFYPREFIX( - ); - - /******************/ - /* Function: 0x33 */ - [todo] WERROR srvsvc_NETRDFSFIXLOCALVOLUME( - ); - - /******************/ - /* Function: 0x34 */ - [todo] WERROR srvsvc_NETRDFSMANAGERREPORTSITEINFO( - ); - - /******************/ - /* Function: 0x35 */ - [todo] WERROR srvsvc_NETRSERVERTRANSPORTDELEX( - ); -} -- cgit