diff options
Diffstat (limited to 'source4')
-rw-r--r-- | source4/librpc/idl/wkssvc.idl | 159 | ||||
-rw-r--r-- | source4/librpc/ndr/ndr_wkssvc.c | 1300 | ||||
-rw-r--r-- | source4/librpc/ndr/ndr_wkssvc.h | 367 | ||||
-rw-r--r-- | source4/librpc/rpc/rpc_wkssvc.c | 601 | ||||
-rw-r--r-- | source4/torture/rpc/wkssvc.c | 44 |
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; |