summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source4/librpc/idl/wkssvc.idl159
-rw-r--r--source4/librpc/ndr/ndr_wkssvc.c1300
-rw-r--r--source4/librpc/ndr/ndr_wkssvc.h367
-rw-r--r--source4/librpc/rpc/rpc_wkssvc.c601
-rw-r--r--source4/torture/rpc/wkssvc.c44
5 files changed, 2436 insertions, 35 deletions
diff --git a/source4/librpc/idl/wkssvc.idl b/source4/librpc/idl/wkssvc.idl
index 10412c8f3d..1e82d3c767 100644
--- a/source4/librpc/idl/wkssvc.idl
+++ b/source4/librpc/idl/wkssvc.idl
@@ -23,7 +23,7 @@
unistr *domain;
uint32 ver_major;
uint32 ver_minor;
- unistr *unknown;
+ unistr *lan_root;
} wks_Info101;
typedef struct {
@@ -32,8 +32,8 @@
unistr *domain;
uint32 ver_major;
uint32 ver_minor;
- unistr *unknown;
- uint32 unknown2;
+ unistr *lan_root;
+ uint32 logged_on_users;
} wks_Info102;
typedef union {
@@ -42,10 +42,161 @@
case (102) wks_Info102 *info102;
} wks_Info;
- NTSTATUS wks_QueryInfo(
+ WERROR wks_QueryInfo(
[in] unistr *server_name,
[in] uint32 level,
[out,switch_is(level)] wks_Info info
);
+
+ /******************/
+ /* Function: 0x01 */
+ WERROR wks_SetInfo();
+
+ /*****************************/
+ /* Function 0x02 */
+ WERROR WKS_NETRWKSTAUSERENUM ();
+
+ /*****************************/
+ /* Function 0x03 */
+ WERROR WKS_NETRWKSTAUSERGETINFO ();
+
+ /*****************************/
+ /* Function 0x04 */
+ WERROR WKS_NETRWKSTAUSERSETINFO ();
+
+
+ /*****************************/
+ /* Function 0x05 */
+
+ typedef struct {
+ uint32 quality_of_service;
+ uint32 vc_count;
+ unistr *name;
+ unistr *address;
+ uint32 wan_link;
+ } wks_TransportInfo0;
+
+ typedef struct {
+ uint32 count;
+ [size_is(count)] wks_TransportInfo0 *transports;
+ } wks_TransportInfoArray;
+
+ typedef union {
+ case(0) wks_TransportInfoArray *array;
+ } wks_TransportUnion;
+
+ typedef struct {
+ uint32 level;
+ [switch_is(level)] wks_TransportUnion u;
+ } wks_TransportInfo;
+
+ WERROR wks_TransportEnum (
+ [in] unistr *server_name,
+ [in,out,ref] wks_TransportInfo *info,
+ [in] uint32 max_buffer,
+ [out] uint32 unknown,
+ [in,out] uint32 *resume_handle
+ );
+
+
+ /*****************************/
+ /* Function 0x06 */
+ WERROR WKS_NETRWKSTATRANSPORTADD ();
+
+ /*****************************/
+ /* Function 0x07 */
+ WERROR WKS_NETRWKSTATRANSPORTDEL ();
+
+ /*****************************/
+ /* Function 0x08 */
+ WERROR WKS_NETRUSEADD ();
+
+ /*****************************/
+ /* Function 0x09 */
+ WERROR WKS_NETRUSEGETINFO ();
+
+ /*****************************/
+ /* Function 0x0a */
+ WERROR WKS_NETRUSEDEL ();
+
+ /*****************************/
+ /* Function 0x0b */
+ WERROR WKS_NETRUSEENUM ();
+
+ /*****************************/
+ /* Function 0x0c */
+ WERROR WKS_NETRMESSAGEBUFFERSEND ();
+
+ /*****************************/
+ /* Function 0x0d */
+ WERROR WKS_NETRWORKSTATIONSTATISTICSGET ();
+
+ /*****************************/
+ /* Function 0x0e */
+ WERROR WKS_NETRLOGONDOMAINNAMEADD ();
+
+ /*****************************/
+ /* Function 0x0f */
+ WERROR WKS_NETRLOGONDOMAINNAMEDEL ();
+
+ /*****************************/
+ /* Function 0x10 */
+ WERROR WKS_NETRJOINDOMAIN ();
+
+ /*****************************/
+ /* Function 0x11 */
+ WERROR WKS_NETRUNJOINDOMAIN ();
+
+ /*****************************/
+ /* Function 0x12 */
+ WERROR WKS_NETRRENAMEMACHINEINDOMAIN ();
+
+ /*****************************/
+ /* Function 0x13 */
+ WERROR WKS_NETRVALIDATENAME ();
+
+ /*****************************/
+ /* Function 0x14 */
+ WERROR WKS_NETRGETJOININFORMATION ();
+
+ /*****************************/
+ /* Function 0x15 */
+ WERROR WKS_NETRGETJOINABLEOUS ();
+
+ /*****************************/
+ /* Function 0x16 */
+ WERROR WKS_NETRJOINDOMAIN2 ();
+
+ /*****************************/
+ /* Function 0x17 */
+ WERROR WKS_NETRUNJOINDOMAIN2 ();
+
+ /*****************************/
+ /* Function 0x18 */
+ WERROR WKS_NETRRENAMEMACHINEINDOMAIN2 ();
+
+ /*****************************/
+ /* Function 0x19 */
+ WERROR WKS_NETRVALIDATENAME2 ();
+
+ /*****************************/
+ /* Function 0x1a */
+ WERROR WKS_NETRGETJOINABLEOUS2 ();
+
+ /*****************************/
+ /* Function 0x1b */
+ WERROR WKS_NETRADDALTERNATECOMPUTERNAME ();
+
+ /*****************************/
+ /* Function 0x1c */
+ WERROR WKS_NETRREMOVEALTERNATECOMPUTERNAME ();
+
+ /*****************************/
+ /* Function 0x1d */
+ WERROR WKS_NETRSETPRIMARYCOMPUTERNAME ();
+
+ /*****************************/
+ /* Function 0x1e */
+ WERROR WKS_NETRENUMERATECOMPUTERNAMES ();
}
diff --git a/source4/librpc/ndr/ndr_wkssvc.c b/source4/librpc/ndr/ndr_wkssvc.c
index 5f12faef0f..40d3f0ad2b 100644
--- a/source4/librpc/ndr/ndr_wkssvc.c
+++ b/source4/librpc/ndr/ndr_wkssvc.c
@@ -13,6 +13,282 @@ NTSTATUS ndr_push_wks_QueryInfo(struct ndr_push *ndr, struct wks_QueryInfo *r)
return NT_STATUS_OK;
}
+NTSTATUS ndr_push_wks_SetInfo(struct ndr_push *ndr, struct wks_SetInfo *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRWKSTAUSERENUM(struct ndr_push *ndr, struct WKS_NETRWKSTAUSERENUM *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRWKSTAUSERGETINFO(struct ndr_push *ndr, struct WKS_NETRWKSTAUSERGETINFO *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRWKSTAUSERSETINFO(struct ndr_push *ndr, struct WKS_NETRWKSTAUSERSETINFO *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_wks_TransportInfo0(struct ndr_push *ndr, int ndr_flags, struct wks_TransportInfo0 *r)
+{
+ if (!(ndr_flags & NDR_SCALARS)) goto buffers;
+ NDR_CHECK(ndr_push_struct_start(ndr));
+ NDR_CHECK(ndr_push_align(ndr, 4));
+ NDR_CHECK(ndr_push_uint32(ndr, r->quality_of_service));
+ NDR_CHECK(ndr_push_uint32(ndr, r->vc_count));
+ NDR_CHECK(ndr_push_ptr(ndr, r->name));
+ NDR_CHECK(ndr_push_ptr(ndr, r->address));
+ NDR_CHECK(ndr_push_uint32(ndr, r->wan_link));
+ ndr_push_struct_end(ndr);
+buffers:
+ if (!(ndr_flags & NDR_BUFFERS)) goto done;
+ if (r->name) {
+ NDR_CHECK(ndr_push_unistr(ndr, r->name));
+ }
+ if (r->address) {
+ NDR_CHECK(ndr_push_unistr(ndr, r->address));
+ }
+done:
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_wks_TransportInfoArray(struct ndr_push *ndr, int ndr_flags, struct wks_TransportInfoArray *r)
+{
+ if (!(ndr_flags & NDR_SCALARS)) goto buffers;
+ NDR_CHECK(ndr_push_struct_start(ndr));
+ NDR_CHECK(ndr_push_align(ndr, 4));
+ NDR_CHECK(ndr_push_uint32(ndr, r->count));
+ NDR_CHECK(ndr_push_ptr(ndr, r->transports));
+ ndr_push_struct_end(ndr);
+buffers:
+ if (!(ndr_flags & NDR_BUFFERS)) goto done;
+ if (r->transports) {
+ NDR_CHECK(ndr_push_uint32(ndr, r->count));
+ NDR_CHECK(ndr_push_array(ndr, NDR_SCALARS|NDR_BUFFERS, r->transports, sizeof(r->transports[0]), r->count, (ndr_push_flags_fn_t)ndr_push_wks_TransportInfo0));
+ }
+done:
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_wks_TransportUnion(struct ndr_push *ndr, int ndr_flags, uint16 level, union wks_TransportUnion *r)
+{
+ if (!(ndr_flags & NDR_SCALARS)) goto buffers;
+ NDR_CHECK(ndr_push_struct_start(ndr));
+ NDR_CHECK(ndr_push_uint16(ndr, level));
+ switch (level) {
+ case 0:
+ NDR_CHECK(ndr_push_ptr(ndr, r->array));
+ break;
+
+ default:
+ return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
+ }
+ ndr_push_struct_end(ndr);
+buffers:
+ if (!(ndr_flags & NDR_BUFFERS)) goto done;
+ switch (level) {
+ case 0:
+ if (r->array) {
+ NDR_CHECK(ndr_push_wks_TransportInfoArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->array));
+ }
+ break;
+
+ default:
+ return ndr_push_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", level);
+ }
+done:
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_wks_TransportInfo(struct ndr_push *ndr, int ndr_flags, struct wks_TransportInfo *r)
+{
+ if (!(ndr_flags & NDR_SCALARS)) goto buffers;
+ NDR_CHECK(ndr_push_struct_start(ndr));
+ NDR_CHECK(ndr_push_align(ndr, 4));
+ NDR_CHECK(ndr_push_uint32(ndr, r->level));
+ NDR_CHECK(ndr_push_wks_TransportUnion(ndr, NDR_SCALARS, r->level, &r->u));
+ ndr_push_struct_end(ndr);
+buffers:
+ if (!(ndr_flags & NDR_BUFFERS)) goto done;
+ NDR_CHECK(ndr_push_wks_TransportUnion(ndr, NDR_BUFFERS, r->level, &r->u));
+done:
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_wks_TransportEnum(struct ndr_push *ndr, struct wks_TransportEnum *r)
+{
+ NDR_CHECK(ndr_push_ptr(ndr, r->in.server_name));
+ if (r->in.server_name) {
+ NDR_CHECK(ndr_push_unistr(ndr, r->in.server_name));
+ }
+ NDR_CHECK(ndr_push_wks_TransportInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->in.info));
+ NDR_CHECK(ndr_push_uint32(ndr, r->in.max_buffer));
+ NDR_CHECK(ndr_push_ptr(ndr, r->in.resume_handle));
+ if (r->in.resume_handle) {
+ NDR_CHECK(ndr_push_uint32(ndr, *r->in.resume_handle));
+ }
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRWKSTATRANSPORTADD(struct ndr_push *ndr, struct WKS_NETRWKSTATRANSPORTADD *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRWKSTATRANSPORTDEL(struct ndr_push *ndr, struct WKS_NETRWKSTATRANSPORTDEL *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRUSEADD(struct ndr_push *ndr, struct WKS_NETRUSEADD *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRUSEGETINFO(struct ndr_push *ndr, struct WKS_NETRUSEGETINFO *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRUSEDEL(struct ndr_push *ndr, struct WKS_NETRUSEDEL *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRUSEENUM(struct ndr_push *ndr, struct WKS_NETRUSEENUM *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRMESSAGEBUFFERSEND(struct ndr_push *ndr, struct WKS_NETRMESSAGEBUFFERSEND *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRWORKSTATIONSTATISTICSGET(struct ndr_push *ndr, struct WKS_NETRWORKSTATIONSTATISTICSGET *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRLOGONDOMAINNAMEADD(struct ndr_push *ndr, struct WKS_NETRLOGONDOMAINNAMEADD *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRLOGONDOMAINNAMEDEL(struct ndr_push *ndr, struct WKS_NETRLOGONDOMAINNAMEDEL *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRJOINDOMAIN(struct ndr_push *ndr, struct WKS_NETRJOINDOMAIN *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRUNJOINDOMAIN(struct ndr_push *ndr, struct WKS_NETRUNJOINDOMAIN *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRRENAMEMACHINEINDOMAIN(struct ndr_push *ndr, struct WKS_NETRRENAMEMACHINEINDOMAIN *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRVALIDATENAME(struct ndr_push *ndr, struct WKS_NETRVALIDATENAME *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRGETJOININFORMATION(struct ndr_push *ndr, struct WKS_NETRGETJOININFORMATION *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRGETJOINABLEOUS(struct ndr_push *ndr, struct WKS_NETRGETJOINABLEOUS *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRJOINDOMAIN2(struct ndr_push *ndr, struct WKS_NETRJOINDOMAIN2 *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRUNJOINDOMAIN2(struct ndr_push *ndr, struct WKS_NETRUNJOINDOMAIN2 *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRRENAMEMACHINEINDOMAIN2(struct ndr_push *ndr, struct WKS_NETRRENAMEMACHINEINDOMAIN2 *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRVALIDATENAME2(struct ndr_push *ndr, struct WKS_NETRVALIDATENAME2 *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRGETJOINABLEOUS2(struct ndr_push *ndr, struct WKS_NETRGETJOINABLEOUS2 *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRADDALTERNATECOMPUTERNAME(struct ndr_push *ndr, struct WKS_NETRADDALTERNATECOMPUTERNAME *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRREMOVEALTERNATECOMPUTERNAME(struct ndr_push *ndr, struct WKS_NETRREMOVEALTERNATECOMPUTERNAME *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRSETPRIMARYCOMPUTERNAME(struct ndr_push *ndr, struct WKS_NETRSETPRIMARYCOMPUTERNAME *r)
+{
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_push_WKS_NETRENUMERATECOMPUTERNAMES(struct ndr_push *ndr, struct WKS_NETRENUMERATECOMPUTERNAMES *r)
+{
+
+ return NT_STATUS_OK;
+}
+
NTSTATUS ndr_pull_wks_Info100(struct ndr_pull *ndr, int ndr_flags, struct wks_Info100 *r)
{
uint32 _ptr_server;
@@ -52,7 +328,7 @@ NTSTATUS ndr_pull_wks_Info101(struct ndr_pull *ndr, int ndr_flags, struct wks_In
{
uint32 _ptr_server;
uint32 _ptr_domain;
- uint32 _ptr_unknown;
+ uint32 _ptr_lan_root;
NDR_CHECK(ndr_pull_struct_start(ndr));
if (!(ndr_flags & NDR_SCALARS)) goto buffers;
NDR_CHECK(ndr_pull_align(ndr, 4));
@@ -71,11 +347,11 @@ NTSTATUS ndr_pull_wks_Info101(struct ndr_pull *ndr, int ndr_flags, struct wks_In
}
NDR_CHECK(ndr_pull_uint32(ndr, &r->ver_major));
NDR_CHECK(ndr_pull_uint32(ndr, &r->ver_minor));
- NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_unknown));
- if (_ptr_unknown) {
- NDR_ALLOC(ndr, r->unknown);
+ NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_lan_root));
+ if (_ptr_lan_root) {
+ NDR_ALLOC(ndr, r->lan_root);
} else {
- r->unknown = NULL;
+ r->lan_root = NULL;
}
ndr_pull_struct_end(ndr);
buffers:
@@ -86,8 +362,8 @@ buffers:
if (r->domain) {
NDR_CHECK(ndr_pull_unistr(ndr, &r->domain));
}
- if (r->unknown) {
- NDR_CHECK(ndr_pull_unistr(ndr, &r->unknown));
+ if (r->lan_root) {
+ NDR_CHECK(ndr_pull_unistr(ndr, &r->lan_root));
}
done:
return NT_STATUS_OK;
@@ -97,7 +373,7 @@ NTSTATUS ndr_pull_wks_Info102(struct ndr_pull *ndr, int ndr_flags, struct wks_In
{
uint32 _ptr_server;
uint32 _ptr_domain;
- uint32 _ptr_unknown;
+ uint32 _ptr_lan_root;
NDR_CHECK(ndr_pull_struct_start(ndr));
if (!(ndr_flags & NDR_SCALARS)) goto buffers;
NDR_CHECK(ndr_pull_align(ndr, 4));
@@ -116,13 +392,13 @@ NTSTATUS ndr_pull_wks_Info102(struct ndr_pull *ndr, int ndr_flags, struct wks_In
}
NDR_CHECK(ndr_pull_uint32(ndr, &r->ver_major));
NDR_CHECK(ndr_pull_uint32(ndr, &r->ver_minor));
- NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_unknown));
- if (_ptr_unknown) {
- NDR_ALLOC(ndr, r->unknown);
+ NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_lan_root));
+ if (_ptr_lan_root) {
+ NDR_ALLOC(ndr, r->lan_root);
} else {
- r->unknown = NULL;
+ r->lan_root = NULL;
}
- NDR_CHECK(ndr_pull_uint32(ndr, &r->unknown2));
+ NDR_CHECK(ndr_pull_uint32(ndr, &r->logged_on_users));
ndr_pull_struct_end(ndr);
buffers:
if (!(ndr_flags & NDR_BUFFERS)) goto done;
@@ -132,8 +408,8 @@ buffers:
if (r->domain) {
NDR_CHECK(ndr_pull_unistr(ndr, &r->domain));
}
- if (r->unknown) {
- NDR_CHECK(ndr_pull_unistr(ndr, &r->unknown));
+ if (r->lan_root) {
+ NDR_CHECK(ndr_pull_unistr(ndr, &r->lan_root));
}
done:
return NT_STATUS_OK;
@@ -213,7 +489,352 @@ NTSTATUS ndr_pull_wks_QueryInfo(struct ndr_pull *ndr, struct wks_QueryInfo *r)
NDR_CHECK(ndr_pull_wks_Info(ndr, NDR_SCALARS|NDR_BUFFERS, &_level, &r->out.info));
if (((NDR_SCALARS|NDR_BUFFERS) & NDR_SCALARS) && (_level != r->in.level)) return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u in info");
}
- NDR_CHECK(ndr_pull_NTSTATUS(ndr, &r->out.result));
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_wks_SetInfo(struct ndr_pull *ndr, struct wks_SetInfo *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRWKSTAUSERENUM(struct ndr_pull *ndr, struct WKS_NETRWKSTAUSERENUM *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRWKSTAUSERGETINFO(struct ndr_pull *ndr, struct WKS_NETRWKSTAUSERGETINFO *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRWKSTAUSERSETINFO(struct ndr_pull *ndr, struct WKS_NETRWKSTAUSERSETINFO *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_wks_TransportInfo0(struct ndr_pull *ndr, int ndr_flags, struct wks_TransportInfo0 *r)
+{
+ uint32 _ptr_name;
+ uint32 _ptr_address;
+ NDR_CHECK(ndr_pull_struct_start(ndr));
+ if (!(ndr_flags & NDR_SCALARS)) goto buffers;
+ NDR_CHECK(ndr_pull_align(ndr, 4));
+ NDR_CHECK(ndr_pull_uint32(ndr, &r->quality_of_service));
+ NDR_CHECK(ndr_pull_uint32(ndr, &r->vc_count));
+ NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_name));
+ if (_ptr_name) {
+ NDR_ALLOC(ndr, r->name);
+ } else {
+ r->name = NULL;
+ }
+ NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_address));
+ if (_ptr_address) {
+ NDR_ALLOC(ndr, r->address);
+ } else {
+ r->address = NULL;
+ }
+ NDR_CHECK(ndr_pull_uint32(ndr, &r->wan_link));
+ ndr_pull_struct_end(ndr);
+buffers:
+ if (!(ndr_flags & NDR_BUFFERS)) goto done;
+ if (r->name) {
+ NDR_CHECK(ndr_pull_unistr(ndr, &r->name));
+ }
+ if (r->address) {
+ NDR_CHECK(ndr_pull_unistr(ndr, &r->address));
+ }
+done:
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_wks_TransportInfoArray(struct ndr_pull *ndr, int ndr_flags, struct wks_TransportInfoArray *r)
+{
+ uint32 _ptr_transports;
+ NDR_CHECK(ndr_pull_struct_start(ndr));
+ if (!(ndr_flags & NDR_SCALARS)) goto buffers;
+ NDR_CHECK(ndr_pull_align(ndr, 4));
+ NDR_CHECK(ndr_pull_uint32(ndr, &r->count));
+ NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_transports));
+ if (_ptr_transports) {
+ NDR_ALLOC(ndr, r->transports);
+ } else {
+ r->transports = NULL;
+ }
+ ndr_pull_struct_end(ndr);
+buffers:
+ if (!(ndr_flags & NDR_BUFFERS)) goto done;
+ if (r->transports) {
+ {
+ uint32 _array_size;
+ NDR_CHECK(ndr_pull_uint32(ndr, &_array_size));
+ if (r->count > _array_size) {
+ return ndr_pull_error(ndr, NDR_ERR_ARRAY_SIZE, "Bad array size %u should be %u", _array_size, r->count);
+ }
+ }
+ NDR_ALLOC_N_SIZE(ndr, r->transports, r->count, sizeof(r->transports[0]));
+ NDR_CHECK(ndr_pull_array(ndr, NDR_SCALARS|NDR_BUFFERS, (void **)r->transports, sizeof(r->transports[0]), r->count, (ndr_pull_flags_fn_t)ndr_pull_wks_TransportInfo0));
+ }
+done:
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_wks_TransportUnion(struct ndr_pull *ndr, int ndr_flags, uint16 *level, union wks_TransportUnion *r)
+{
+ if (!(ndr_flags & NDR_SCALARS)) goto buffers;
+ NDR_CHECK(ndr_pull_struct_start(ndr));
+ NDR_CHECK(ndr_pull_uint16(ndr, level));
+ switch (*level) {
+ case 0: {
+ uint32 _ptr_array;
+ NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_array));
+ if (_ptr_array) {
+ NDR_ALLOC(ndr, r->array);
+ } else {
+ r->array = NULL;
+ }
+ break; }
+
+ default:
+ return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", *level);
+ }
+ ndr_pull_struct_end(ndr);
+buffers:
+ if (!(ndr_flags & NDR_BUFFERS)) goto done;
+ switch (*level) {
+ case 0:
+ if (r->array) {
+ NDR_CHECK(ndr_pull_wks_TransportInfoArray(ndr, NDR_SCALARS|NDR_BUFFERS, r->array));
+ }
+ break;
+
+ default:
+ return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u", *level);
+ }
+done:
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_wks_TransportInfo(struct ndr_pull *ndr, int ndr_flags, struct wks_TransportInfo *r)
+{
+ NDR_CHECK(ndr_pull_struct_start(ndr));
+ if (!(ndr_flags & NDR_SCALARS)) goto buffers;
+ NDR_CHECK(ndr_pull_align(ndr, 4));
+ NDR_CHECK(ndr_pull_uint32(ndr, &r->level));
+ { uint16 _level = r->level;
+ NDR_CHECK(ndr_pull_wks_TransportUnion(ndr, NDR_SCALARS, &_level, &r->u));
+ if (((NDR_SCALARS) & NDR_SCALARS) && (_level != r->level)) return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u in u");
+ }
+ ndr_pull_struct_end(ndr);
+buffers:
+ if (!(ndr_flags & NDR_BUFFERS)) goto done;
+ { uint16 _level = r->level;
+ NDR_CHECK(ndr_pull_wks_TransportUnion(ndr, NDR_BUFFERS, &_level, &r->u));
+ if (((NDR_BUFFERS) & NDR_SCALARS) && (_level != r->level)) return ndr_pull_error(ndr, NDR_ERR_BAD_SWITCH, "Bad switch value %u in u");
+ }
+done:
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_wks_TransportEnum(struct ndr_pull *ndr, struct wks_TransportEnum *r)
+{
+ uint32 _ptr_resume_handle;
+ NDR_CHECK(ndr_pull_wks_TransportInfo(ndr, NDR_SCALARS|NDR_BUFFERS, r->out.info));
+ NDR_CHECK(ndr_pull_uint32(ndr, &r->out.unknown));
+ NDR_CHECK(ndr_pull_uint32(ndr, &_ptr_resume_handle));
+ if (_ptr_resume_handle) {
+ NDR_ALLOC(ndr, r->out.resume_handle);
+ } else {
+ r->out.resume_handle = NULL;
+ }
+ if (r->out.resume_handle) {
+ NDR_CHECK(ndr_pull_uint32(ndr, r->out.resume_handle));
+ }
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRWKSTATRANSPORTADD(struct ndr_pull *ndr, struct WKS_NETRWKSTATRANSPORTADD *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRWKSTATRANSPORTDEL(struct ndr_pull *ndr, struct WKS_NETRWKSTATRANSPORTDEL *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRUSEADD(struct ndr_pull *ndr, struct WKS_NETRUSEADD *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRUSEGETINFO(struct ndr_pull *ndr, struct WKS_NETRUSEGETINFO *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRUSEDEL(struct ndr_pull *ndr, struct WKS_NETRUSEDEL *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRUSEENUM(struct ndr_pull *ndr, struct WKS_NETRUSEENUM *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRMESSAGEBUFFERSEND(struct ndr_pull *ndr, struct WKS_NETRMESSAGEBUFFERSEND *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRWORKSTATIONSTATISTICSGET(struct ndr_pull *ndr, struct WKS_NETRWORKSTATIONSTATISTICSGET *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRLOGONDOMAINNAMEADD(struct ndr_pull *ndr, struct WKS_NETRLOGONDOMAINNAMEADD *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRLOGONDOMAINNAMEDEL(struct ndr_pull *ndr, struct WKS_NETRLOGONDOMAINNAMEDEL *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRJOINDOMAIN(struct ndr_pull *ndr, struct WKS_NETRJOINDOMAIN *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRUNJOINDOMAIN(struct ndr_pull *ndr, struct WKS_NETRUNJOINDOMAIN *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRRENAMEMACHINEINDOMAIN(struct ndr_pull *ndr, struct WKS_NETRRENAMEMACHINEINDOMAIN *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRVALIDATENAME(struct ndr_pull *ndr, struct WKS_NETRVALIDATENAME *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRGETJOININFORMATION(struct ndr_pull *ndr, struct WKS_NETRGETJOININFORMATION *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRGETJOINABLEOUS(struct ndr_pull *ndr, struct WKS_NETRGETJOINABLEOUS *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRJOINDOMAIN2(struct ndr_pull *ndr, struct WKS_NETRJOINDOMAIN2 *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRUNJOINDOMAIN2(struct ndr_pull *ndr, struct WKS_NETRUNJOINDOMAIN2 *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRRENAMEMACHINEINDOMAIN2(struct ndr_pull *ndr, struct WKS_NETRRENAMEMACHINEINDOMAIN2 *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRVALIDATENAME2(struct ndr_pull *ndr, struct WKS_NETRVALIDATENAME2 *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRGETJOINABLEOUS2(struct ndr_pull *ndr, struct WKS_NETRGETJOINABLEOUS2 *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRADDALTERNATECOMPUTERNAME(struct ndr_pull *ndr, struct WKS_NETRADDALTERNATECOMPUTERNAME *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRREMOVEALTERNATECOMPUTERNAME(struct ndr_pull *ndr, struct WKS_NETRREMOVEALTERNATECOMPUTERNAME *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRSETPRIMARYCOMPUTERNAME(struct ndr_pull *ndr, struct WKS_NETRSETPRIMARYCOMPUTERNAME *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+ return NT_STATUS_OK;
+}
+
+NTSTATUS ndr_pull_WKS_NETRENUMERATECOMPUTERNAMES(struct ndr_pull *ndr, struct WKS_NETRENUMERATECOMPUTERNAMES *r)
+{
+ NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
return NT_STATUS_OK;
}
@@ -259,10 +880,10 @@ void ndr_print_wks_Info101(struct ndr_print *ndr, const char *name, struct wks_I
ndr->depth--;
ndr_print_uint32(ndr, "ver_major", r->ver_major);
ndr_print_uint32(ndr, "ver_minor", r->ver_minor);
- ndr_print_ptr(ndr, "unknown", r->unknown);
+ ndr_print_ptr(ndr, "lan_root", r->lan_root);
ndr->depth++;
- if (r->unknown) {
- ndr_print_unistr(ndr, "unknown", r->unknown);
+ if (r->lan_root) {
+ ndr_print_unistr(ndr, "lan_root", r->lan_root);
}
ndr->depth--;
ndr->depth--;
@@ -287,13 +908,13 @@ void ndr_print_wks_Info102(struct ndr_print *ndr, const char *name, struct wks_I
ndr->depth--;
ndr_print_uint32(ndr, "ver_major", r->ver_major);
ndr_print_uint32(ndr, "ver_minor", r->ver_minor);
- ndr_print_ptr(ndr, "unknown", r->unknown);
+ ndr_print_ptr(ndr, "lan_root", r->lan_root);
ndr->depth++;
- if (r->unknown) {
- ndr_print_unistr(ndr, "unknown", r->unknown);
+ if (r->lan_root) {
+ ndr_print_unistr(ndr, "lan_root", r->lan_root);
}
ndr->depth--;
- ndr_print_uint32(ndr, "unknown2", r->unknown2);
+ ndr_print_uint32(ndr, "logged_on_users", r->logged_on_users);
ndr->depth--;
}
@@ -353,7 +974,638 @@ void ndr_print_wks_QueryInfo(struct ndr_print *ndr, const char *name, int flags,
ndr_print_struct(ndr, "out", "wks_QueryInfo");
ndr->depth++;
ndr_print_wks_Info(ndr, "info", r->in.level, &r->out.info);
- ndr_print_NTSTATUS(ndr, "result", &r->out.result);
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_wks_SetInfo(struct ndr_print *ndr, const char *name, int flags, struct wks_SetInfo *r)
+{
+ ndr_print_struct(ndr, name, "wks_SetInfo");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "wks_SetInfo");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "wks_SetInfo");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRWKSTAUSERENUM(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRWKSTAUSERENUM *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRWKSTAUSERENUM");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRWKSTAUSERENUM");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRWKSTAUSERENUM");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRWKSTAUSERGETINFO(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRWKSTAUSERGETINFO *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRWKSTAUSERGETINFO");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRWKSTAUSERGETINFO");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRWKSTAUSERGETINFO");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRWKSTAUSERSETINFO(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRWKSTAUSERSETINFO *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRWKSTAUSERSETINFO");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRWKSTAUSERSETINFO");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRWKSTAUSERSETINFO");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_wks_TransportInfo0(struct ndr_print *ndr, const char *name, struct wks_TransportInfo0 *r)
+{
+ ndr_print_struct(ndr, name, "wks_TransportInfo0");
+ ndr->depth++;
+ ndr_print_uint32(ndr, "quality_of_service", r->quality_of_service);
+ ndr_print_uint32(ndr, "vc_count", r->vc_count);
+ ndr_print_ptr(ndr, "name", r->name);
+ ndr->depth++;
+ if (r->name) {
+ ndr_print_unistr(ndr, "name", r->name);
+ }
+ ndr->depth--;
+ ndr_print_ptr(ndr, "address", r->address);
+ ndr->depth++;
+ if (r->address) {
+ ndr_print_unistr(ndr, "address", r->address);
+ }
+ ndr->depth--;
+ ndr_print_uint32(ndr, "wan_link", r->wan_link);
+ ndr->depth--;
+}
+
+void ndr_print_wks_TransportInfoArray(struct ndr_print *ndr, const char *name, struct wks_TransportInfoArray *r)
+{
+ ndr_print_struct(ndr, name, "wks_TransportInfoArray");
+ ndr->depth++;
+ ndr_print_uint32(ndr, "count", r->count);
+ ndr_print_ptr(ndr, "transports", r->transports);
+ ndr->depth++;
+ if (r->transports) {
+ ndr_print_array(ndr, "transports", r->transports, sizeof(r->transports[0]), r->count, (ndr_print_fn_t)ndr_print_wks_TransportInfo0);
+ }
+ ndr->depth--;
+ ndr->depth--;
+}
+
+void ndr_print_wks_TransportUnion(struct ndr_print *ndr, const char *name, uint16 level, union wks_TransportUnion *r)
+{
+ ndr_print_union(ndr, name, level, "wks_TransportUnion");
+ switch (level) {
+ case 0:
+ ndr_print_ptr(ndr, "array", r->array);
+ ndr->depth++;
+ if (r->array) {
+ ndr_print_wks_TransportInfoArray(ndr, "array", r->array);
+ }
+ ndr->depth--;
+ break;
+
+ default:
+ ndr_print_bad_level(ndr, name, level);
+ }
+}
+
+void ndr_print_wks_TransportInfo(struct ndr_print *ndr, const char *name, struct wks_TransportInfo *r)
+{
+ ndr_print_struct(ndr, name, "wks_TransportInfo");
+ ndr->depth++;
+ ndr_print_uint32(ndr, "level", r->level);
+ ndr_print_wks_TransportUnion(ndr, "u", r->level, &r->u);
+ ndr->depth--;
+}
+
+void ndr_print_wks_TransportEnum(struct ndr_print *ndr, const char *name, int flags, struct wks_TransportEnum *r)
+{
+ ndr_print_struct(ndr, name, "wks_TransportEnum");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "wks_TransportEnum");
+ ndr->depth++;
+ ndr_print_ptr(ndr, "server_name", r->in.server_name);
+ ndr->depth++;
+ if (r->in.server_name) {
+ ndr_print_unistr(ndr, "server_name", r->in.server_name);
+ }
+ ndr->depth--;
+ ndr_print_ptr(ndr, "info", r->in.info);
+ ndr->depth++;
+ ndr_print_wks_TransportInfo(ndr, "info", r->in.info);
+ ndr->depth--;
+ ndr_print_uint32(ndr, "max_buffer", r->in.max_buffer);
+ ndr_print_ptr(ndr, "resume_handle", r->in.resume_handle);
+ ndr->depth++;
+ if (r->in.resume_handle) {
+ ndr_print_uint32(ndr, "resume_handle", *r->in.resume_handle);
+ }
+ ndr->depth--;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "wks_TransportEnum");
+ ndr->depth++;
+ ndr_print_ptr(ndr, "info", r->out.info);
+ ndr->depth++;
+ ndr_print_wks_TransportInfo(ndr, "info", r->out.info);
+ ndr->depth--;
+ ndr_print_uint32(ndr, "unknown", r->out.unknown);
+ ndr_print_ptr(ndr, "resume_handle", r->out.resume_handle);
+ ndr->depth++;
+ if (r->out.resume_handle) {
+ ndr_print_uint32(ndr, "resume_handle", *r->out.resume_handle);
+ }
+ ndr->depth--;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRWKSTATRANSPORTADD(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRWKSTATRANSPORTADD *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRWKSTATRANSPORTADD");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRWKSTATRANSPORTADD");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRWKSTATRANSPORTADD");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRWKSTATRANSPORTDEL(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRWKSTATRANSPORTDEL *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRWKSTATRANSPORTDEL");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRWKSTATRANSPORTDEL");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRWKSTATRANSPORTDEL");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRUSEADD(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRUSEADD *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRUSEADD");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRUSEADD");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRUSEADD");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRUSEGETINFO(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRUSEGETINFO *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRUSEGETINFO");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRUSEGETINFO");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRUSEGETINFO");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRUSEDEL(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRUSEDEL *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRUSEDEL");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRUSEDEL");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRUSEDEL");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRUSEENUM(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRUSEENUM *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRUSEENUM");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRUSEENUM");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRUSEENUM");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRMESSAGEBUFFERSEND(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRMESSAGEBUFFERSEND *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRMESSAGEBUFFERSEND");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRMESSAGEBUFFERSEND");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRMESSAGEBUFFERSEND");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRWORKSTATIONSTATISTICSGET(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRWORKSTATIONSTATISTICSGET *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRWORKSTATIONSTATISTICSGET");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRWORKSTATIONSTATISTICSGET");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRWORKSTATIONSTATISTICSGET");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRLOGONDOMAINNAMEADD(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRLOGONDOMAINNAMEADD *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRLOGONDOMAINNAMEADD");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRLOGONDOMAINNAMEADD");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRLOGONDOMAINNAMEADD");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRLOGONDOMAINNAMEDEL(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRLOGONDOMAINNAMEDEL *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRLOGONDOMAINNAMEDEL");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRLOGONDOMAINNAMEDEL");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRLOGONDOMAINNAMEDEL");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRJOINDOMAIN(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRJOINDOMAIN *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRJOINDOMAIN");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRJOINDOMAIN");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRJOINDOMAIN");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRUNJOINDOMAIN(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRUNJOINDOMAIN *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRUNJOINDOMAIN");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRUNJOINDOMAIN");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRUNJOINDOMAIN");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRRENAMEMACHINEINDOMAIN(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRRENAMEMACHINEINDOMAIN *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRRENAMEMACHINEINDOMAIN");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRRENAMEMACHINEINDOMAIN");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRRENAMEMACHINEINDOMAIN");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRVALIDATENAME(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRVALIDATENAME *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRVALIDATENAME");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRVALIDATENAME");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRVALIDATENAME");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRGETJOININFORMATION(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRGETJOININFORMATION *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRGETJOININFORMATION");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRGETJOININFORMATION");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRGETJOININFORMATION");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRGETJOINABLEOUS(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRGETJOINABLEOUS *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRGETJOINABLEOUS");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRGETJOINABLEOUS");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRGETJOINABLEOUS");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRJOINDOMAIN2(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRJOINDOMAIN2 *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRJOINDOMAIN2");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRJOINDOMAIN2");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRJOINDOMAIN2");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRUNJOINDOMAIN2(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRUNJOINDOMAIN2 *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRUNJOINDOMAIN2");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRUNJOINDOMAIN2");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRUNJOINDOMAIN2");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRRENAMEMACHINEINDOMAIN2(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRRENAMEMACHINEINDOMAIN2 *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRRENAMEMACHINEINDOMAIN2");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRRENAMEMACHINEINDOMAIN2");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRRENAMEMACHINEINDOMAIN2");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRVALIDATENAME2(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRVALIDATENAME2 *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRVALIDATENAME2");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRVALIDATENAME2");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRVALIDATENAME2");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRGETJOINABLEOUS2(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRGETJOINABLEOUS2 *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRGETJOINABLEOUS2");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRGETJOINABLEOUS2");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRGETJOINABLEOUS2");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRADDALTERNATECOMPUTERNAME(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRADDALTERNATECOMPUTERNAME *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRADDALTERNATECOMPUTERNAME");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRADDALTERNATECOMPUTERNAME");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRADDALTERNATECOMPUTERNAME");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRREMOVEALTERNATECOMPUTERNAME(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRREMOVEALTERNATECOMPUTERNAME *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRREMOVEALTERNATECOMPUTERNAME");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRREMOVEALTERNATECOMPUTERNAME");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRREMOVEALTERNATECOMPUTERNAME");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRSETPRIMARYCOMPUTERNAME(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRSETPRIMARYCOMPUTERNAME *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRSETPRIMARYCOMPUTERNAME");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRSETPRIMARYCOMPUTERNAME");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRSETPRIMARYCOMPUTERNAME");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
+void ndr_print_WKS_NETRENUMERATECOMPUTERNAMES(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRENUMERATECOMPUTERNAMES *r)
+{
+ ndr_print_struct(ndr, name, "WKS_NETRENUMERATECOMPUTERNAMES");
+ ndr->depth++;
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "WKS_NETRENUMERATECOMPUTERNAMES");
+ ndr->depth++;
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "WKS_NETRENUMERATECOMPUTERNAMES");
+ ndr->depth++;
+ ndr_print_WERROR(ndr, "result", &r->out.result);
ndr->depth--;
}
ndr->depth--;
diff --git a/source4/librpc/ndr/ndr_wkssvc.h b/source4/librpc/ndr/ndr_wkssvc.h
index f18ff11a83..2337f84e7a 100644
--- a/source4/librpc/ndr/ndr_wkssvc.h
+++ b/source4/librpc/ndr/ndr_wkssvc.h
@@ -14,7 +14,7 @@ struct wks_Info101 {
const char *domain;
uint32 ver_major;
uint32 ver_minor;
- const char *unknown;
+ const char *lan_root;
};
struct wks_Info102 {
@@ -23,8 +23,8 @@ struct wks_Info102 {
const char *domain;
uint32 ver_major;
uint32 ver_minor;
- const char *unknown;
- uint32 unknown2;
+ const char *lan_root;
+ uint32 logged_on_users;
};
union wks_Info {
@@ -41,9 +41,368 @@ struct wks_QueryInfo {
struct {
union wks_Info info;
- NTSTATUS result;
+ WERROR result;
+ } out;
+
+};
+
+struct wks_SetInfo {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRWKSTAUSERENUM {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRWKSTAUSERGETINFO {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRWKSTAUSERSETINFO {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct wks_TransportInfo0 {
+ uint32 quality_of_service;
+ uint32 vc_count;
+ const char *name;
+ const char *address;
+ uint32 wan_link;
+};
+
+struct wks_TransportInfoArray {
+ uint32 count;
+ struct wks_TransportInfo0 *transports;
+};
+
+union wks_TransportUnion {
+/* [case(0)] */ struct wks_TransportInfoArray *array;
+};
+
+struct wks_TransportInfo {
+ uint32 level;
+ union wks_TransportUnion u;
+};
+
+struct wks_TransportEnum {
+ struct {
+ const char *server_name;
+ struct wks_TransportInfo *info;
+ uint32 max_buffer;
+ uint32 *resume_handle;
+ } in;
+
+ struct {
+ struct wks_TransportInfo *info;
+ uint32 unknown;
+ uint32 *resume_handle;
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRWKSTATRANSPORTADD {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRWKSTATRANSPORTDEL {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRUSEADD {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRUSEGETINFO {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRUSEDEL {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRUSEENUM {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRMESSAGEBUFFERSEND {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRWORKSTATIONSTATISTICSGET {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRLOGONDOMAINNAMEADD {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRLOGONDOMAINNAMEDEL {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRJOINDOMAIN {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRUNJOINDOMAIN {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRRENAMEMACHINEINDOMAIN {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRVALIDATENAME {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRGETJOININFORMATION {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRGETJOINABLEOUS {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRJOINDOMAIN2 {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRUNJOINDOMAIN2 {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRRENAMEMACHINEINDOMAIN2 {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRVALIDATENAME2 {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRGETJOINABLEOUS2 {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRADDALTERNATECOMPUTERNAME {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRREMOVEALTERNATECOMPUTERNAME {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRSETPRIMARYCOMPUTERNAME {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
+ } out;
+
+};
+
+struct WKS_NETRENUMERATECOMPUTERNAMES {
+ struct {
+ } in;
+
+ struct {
+ WERROR result;
} out;
};
#define DCERPC_WKS_QUERYINFO 0
+#define DCERPC_WKS_SETINFO 1
+#define DCERPC_WKS_NETRWKSTAUSERENUM 2
+#define DCERPC_WKS_NETRWKSTAUSERGETINFO 3
+#define DCERPC_WKS_NETRWKSTAUSERSETINFO 4
+#define DCERPC_WKS_TRANSPORTENUM 5
+#define DCERPC_WKS_NETRWKSTATRANSPORTADD 6
+#define DCERPC_WKS_NETRWKSTATRANSPORTDEL 7
+#define DCERPC_WKS_NETRUSEADD 8
+#define DCERPC_WKS_NETRUSEGETINFO 9
+#define DCERPC_WKS_NETRUSEDEL 10
+#define DCERPC_WKS_NETRUSEENUM 11
+#define DCERPC_WKS_NETRMESSAGEBUFFERSEND 12
+#define DCERPC_WKS_NETRWORKSTATIONSTATISTICSGET 13
+#define DCERPC_WKS_NETRLOGONDOMAINNAMEADD 14
+#define DCERPC_WKS_NETRLOGONDOMAINNAMEDEL 15
+#define DCERPC_WKS_NETRJOINDOMAIN 16
+#define DCERPC_WKS_NETRUNJOINDOMAIN 17
+#define DCERPC_WKS_NETRRENAMEMACHINEINDOMAIN 18
+#define DCERPC_WKS_NETRVALIDATENAME 19
+#define DCERPC_WKS_NETRGETJOININFORMATION 20
+#define DCERPC_WKS_NETRGETJOINABLEOUS 21
+#define DCERPC_WKS_NETRJOINDOMAIN2 22
+#define DCERPC_WKS_NETRUNJOINDOMAIN2 23
+#define DCERPC_WKS_NETRRENAMEMACHINEINDOMAIN2 24
+#define DCERPC_WKS_NETRVALIDATENAME2 25
+#define DCERPC_WKS_NETRGETJOINABLEOUS2 26
+#define DCERPC_WKS_NETRADDALTERNATECOMPUTERNAME 27
+#define DCERPC_WKS_NETRREMOVEALTERNATECOMPUTERNAME 28
+#define DCERPC_WKS_NETRSETPRIMARYCOMPUTERNAME 29
+#define DCERPC_WKS_NETRENUMERATECOMPUTERNAMES 30
diff --git a/source4/librpc/rpc/rpc_wkssvc.c b/source4/librpc/rpc/rpc_wkssvc.c
index 1a4b154842..3a591c52ad 100644
--- a/source4/librpc/rpc/rpc_wkssvc.c
+++ b/source4/librpc/rpc/rpc_wkssvc.c
@@ -19,7 +19,606 @@ NTSTATUS dcerpc_wks_QueryInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct
if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
NDR_PRINT_OUT_DEBUG(wks_QueryInfo, r);
}
- if (NT_STATUS_IS_OK(status)) status = r->out.result;
+
+ return status;
+}
+
+NTSTATUS dcerpc_wks_SetInfo(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct wks_SetInfo *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(wks_SetInfo, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_SETINFO, mem_ctx,
+ (ndr_push_fn_t) ndr_push_wks_SetInfo,
+ (ndr_pull_fn_t) ndr_pull_wks_SetInfo,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(wks_SetInfo, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRWKSTAUSERENUM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRWKSTAUSERENUM *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRWKSTAUSERENUM, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRWKSTAUSERENUM, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRWKSTAUSERENUM,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRWKSTAUSERENUM,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRWKSTAUSERENUM, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRWKSTAUSERGETINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRWKSTAUSERGETINFO *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRWKSTAUSERGETINFO, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRWKSTAUSERGETINFO, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRWKSTAUSERGETINFO,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRWKSTAUSERGETINFO,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRWKSTAUSERGETINFO, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRWKSTAUSERSETINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRWKSTAUSERSETINFO *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRWKSTAUSERSETINFO, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRWKSTAUSERSETINFO, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRWKSTAUSERSETINFO,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRWKSTAUSERSETINFO,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRWKSTAUSERSETINFO, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_wks_TransportEnum(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct wks_TransportEnum *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(wks_TransportEnum, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_TRANSPORTENUM, mem_ctx,
+ (ndr_push_fn_t) ndr_push_wks_TransportEnum,
+ (ndr_pull_fn_t) ndr_pull_wks_TransportEnum,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(wks_TransportEnum, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRWKSTATRANSPORTADD(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRWKSTATRANSPORTADD *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRWKSTATRANSPORTADD, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRWKSTATRANSPORTADD, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRWKSTATRANSPORTADD,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRWKSTATRANSPORTADD,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRWKSTATRANSPORTADD, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRWKSTATRANSPORTDEL(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRWKSTATRANSPORTDEL *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRWKSTATRANSPORTDEL, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRWKSTATRANSPORTDEL, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRWKSTATRANSPORTDEL,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRWKSTATRANSPORTDEL,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRWKSTATRANSPORTDEL, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRUSEADD(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRUSEADD *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRUSEADD, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRUSEADD, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRUSEADD,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRUSEADD,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRUSEADD, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRUSEGETINFO(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRUSEGETINFO *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRUSEGETINFO, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRUSEGETINFO, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRUSEGETINFO,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRUSEGETINFO,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRUSEGETINFO, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRUSEDEL(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRUSEDEL *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRUSEDEL, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRUSEDEL, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRUSEDEL,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRUSEDEL,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRUSEDEL, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRUSEENUM(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRUSEENUM *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRUSEENUM, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRUSEENUM, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRUSEENUM,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRUSEENUM,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRUSEENUM, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRMESSAGEBUFFERSEND(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRMESSAGEBUFFERSEND *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRMESSAGEBUFFERSEND, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRMESSAGEBUFFERSEND, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRMESSAGEBUFFERSEND,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRMESSAGEBUFFERSEND,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRMESSAGEBUFFERSEND, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRWORKSTATIONSTATISTICSGET(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRWORKSTATIONSTATISTICSGET *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRWORKSTATIONSTATISTICSGET, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRWORKSTATIONSTATISTICSGET, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRWORKSTATIONSTATISTICSGET,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRWORKSTATIONSTATISTICSGET,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRWORKSTATIONSTATISTICSGET, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRLOGONDOMAINNAMEADD(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRLOGONDOMAINNAMEADD *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRLOGONDOMAINNAMEADD, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRLOGONDOMAINNAMEADD, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRLOGONDOMAINNAMEADD,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRLOGONDOMAINNAMEADD,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRLOGONDOMAINNAMEADD, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRLOGONDOMAINNAMEDEL(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRLOGONDOMAINNAMEDEL *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRLOGONDOMAINNAMEDEL, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRLOGONDOMAINNAMEDEL, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRLOGONDOMAINNAMEDEL,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRLOGONDOMAINNAMEDEL,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRLOGONDOMAINNAMEDEL, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRJOINDOMAIN(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRJOINDOMAIN *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRJOINDOMAIN, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRJOINDOMAIN, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRJOINDOMAIN,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRJOINDOMAIN,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRJOINDOMAIN, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRUNJOINDOMAIN(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRUNJOINDOMAIN *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRUNJOINDOMAIN, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRUNJOINDOMAIN, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRUNJOINDOMAIN,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRUNJOINDOMAIN,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRUNJOINDOMAIN, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRRENAMEMACHINEINDOMAIN(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRRENAMEMACHINEINDOMAIN *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRRENAMEMACHINEINDOMAIN, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRRENAMEMACHINEINDOMAIN, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRRENAMEMACHINEINDOMAIN,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRRENAMEMACHINEINDOMAIN,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRRENAMEMACHINEINDOMAIN, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRVALIDATENAME(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRVALIDATENAME *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRVALIDATENAME, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRVALIDATENAME, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRVALIDATENAME,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRVALIDATENAME,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRVALIDATENAME, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRGETJOININFORMATION(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRGETJOININFORMATION *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRGETJOININFORMATION, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRGETJOININFORMATION, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRGETJOININFORMATION,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRGETJOININFORMATION,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRGETJOININFORMATION, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRGETJOINABLEOUS(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRGETJOINABLEOUS *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRGETJOINABLEOUS, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRGETJOINABLEOUS, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRGETJOINABLEOUS,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRGETJOINABLEOUS,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRGETJOINABLEOUS, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRJOINDOMAIN2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRJOINDOMAIN2 *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRJOINDOMAIN2, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRJOINDOMAIN2, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRJOINDOMAIN2,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRJOINDOMAIN2,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRJOINDOMAIN2, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRUNJOINDOMAIN2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRUNJOINDOMAIN2 *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRUNJOINDOMAIN2, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRUNJOINDOMAIN2, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRUNJOINDOMAIN2,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRUNJOINDOMAIN2,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRUNJOINDOMAIN2, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRRENAMEMACHINEINDOMAIN2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRRENAMEMACHINEINDOMAIN2 *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRRENAMEMACHINEINDOMAIN2, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRRENAMEMACHINEINDOMAIN2, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRRENAMEMACHINEINDOMAIN2,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRRENAMEMACHINEINDOMAIN2,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRRENAMEMACHINEINDOMAIN2, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRVALIDATENAME2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRVALIDATENAME2 *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRVALIDATENAME2, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRVALIDATENAME2, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRVALIDATENAME2,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRVALIDATENAME2,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRVALIDATENAME2, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRGETJOINABLEOUS2(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRGETJOINABLEOUS2 *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRGETJOINABLEOUS2, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRGETJOINABLEOUS2, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRGETJOINABLEOUS2,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRGETJOINABLEOUS2,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRGETJOINABLEOUS2, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRADDALTERNATECOMPUTERNAME(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRADDALTERNATECOMPUTERNAME *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRADDALTERNATECOMPUTERNAME, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRADDALTERNATECOMPUTERNAME, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRADDALTERNATECOMPUTERNAME,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRADDALTERNATECOMPUTERNAME,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRADDALTERNATECOMPUTERNAME, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRREMOVEALTERNATECOMPUTERNAME(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRREMOVEALTERNATECOMPUTERNAME *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRREMOVEALTERNATECOMPUTERNAME, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRREMOVEALTERNATECOMPUTERNAME, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRREMOVEALTERNATECOMPUTERNAME,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRREMOVEALTERNATECOMPUTERNAME,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRREMOVEALTERNATECOMPUTERNAME, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRSETPRIMARYCOMPUTERNAME(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRSETPRIMARYCOMPUTERNAME *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRSETPRIMARYCOMPUTERNAME, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRSETPRIMARYCOMPUTERNAME, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRSETPRIMARYCOMPUTERNAME,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRSETPRIMARYCOMPUTERNAME,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRSETPRIMARYCOMPUTERNAME, r);
+ }
+
+ return status;
+}
+
+NTSTATUS dcerpc_WKS_NETRENUMERATECOMPUTERNAMES(struct dcerpc_pipe *p, TALLOC_CTX *mem_ctx, struct WKS_NETRENUMERATECOMPUTERNAMES *r)
+{
+ NTSTATUS status;
+
+ if (p->flags & DCERPC_DEBUG_PRINT_IN) {
+ NDR_PRINT_IN_DEBUG(WKS_NETRENUMERATECOMPUTERNAMES, r);
+ }
+
+ status = dcerpc_ndr_request(p, DCERPC_WKS_NETRENUMERATECOMPUTERNAMES, mem_ctx,
+ (ndr_push_fn_t) ndr_push_WKS_NETRENUMERATECOMPUTERNAMES,
+ (ndr_pull_fn_t) ndr_pull_WKS_NETRENUMERATECOMPUTERNAMES,
+ r);
+
+ if (NT_STATUS_IS_OK(status) && (p->flags & DCERPC_DEBUG_PRINT_OUT)) {
+ NDR_PRINT_OUT_DEBUG(WKS_NETRENUMERATECOMPUTERNAMES, r);
+ }
return status;
}
diff --git a/source4/torture/rpc/wkssvc.c b/source4/torture/rpc/wkssvc.c
index 73b3f5c527..9d4b38d40f 100644
--- a/source4/torture/rpc/wkssvc.c
+++ b/source4/torture/rpc/wkssvc.c
@@ -29,6 +29,7 @@ static BOOL test_QueryInfo(struct dcerpc_pipe *p,
struct wks_QueryInfo r;
uint16 levels[] = {100, 101, 102};
int i;
+ BOOL ret = True;
r.in.server_name = dcerpc_server_name(p);
@@ -38,13 +39,48 @@ static BOOL test_QueryInfo(struct dcerpc_pipe *p,
status = dcerpc_wks_QueryInfo(p, mem_ctx, &r);
if (!NT_STATUS_IS_OK(status)) {
printf("QueryInfo level %u failed - %s\n", r.in.level, nt_errstr(status));
- return False;
+ ret = False;
}
}
- return True;
+ return ret;
}
+
+static BOOL test_TransportEnum(struct dcerpc_pipe *p,
+ TALLOC_CTX *mem_ctx)
+{
+ NTSTATUS status;
+ struct wks_TransportEnum r;
+ BOOL ret = True;
+ struct wks_TransportInfo info;
+ uint32 resume_handle = 0;
+ struct wks_TransportInfoArray info_array;
+
+ ZERO_STRUCT(info);
+ ZERO_STRUCT(info_array);
+
+ info.u.array = &info_array;
+
+ r.in.server_name = dcerpc_server_name(p);
+ r.in.info = &info;
+ r.out.info = &info;
+ r.in.max_buffer = (uint32)-1;
+ r.in.resume_handle = &resume_handle;
+ r.out.resume_handle = &resume_handle;
+
+ printf("testing TransportEnum\n");
+ status = dcerpc_wks_TransportEnum(p, mem_ctx, &r);
+ if (!NT_STATUS_IS_OK(status)) {
+ printf("TransportEnum failed - %s\n", nt_errstr(status));
+ ret = False;
+ }
+
+ return ret;
+}
+
+
+
BOOL torture_rpc_wkssvc(int dummy)
{
NTSTATUS status;
@@ -65,6 +101,10 @@ BOOL torture_rpc_wkssvc(int dummy)
ret = False;
}
+ if (!test_TransportEnum(p, mem_ctx)) {
+ ret = False;
+ }
+
torture_rpc_close(p);
return ret;