fill in skeletons for the rest of the function calls in wkssvc (based
authorAndrew Tridgell <tridge@samba.org>
Tue, 18 Nov 2003 03:28:01 +0000 (03:28 +0000)
committerAndrew Tridgell <tridge@samba.org>
Tue, 18 Nov 2003 03:28:01 +0000 (03:28 +0000)
on function names in ethereal)

implement TransportEnum - quite a cute call, you can ask for the
workstations list of network transports, including its ethernet
address.
(This used to be commit 62d7e9819c95c906d1094f711bc60cf58def30f6)

source4/librpc/idl/wkssvc.idl
source4/librpc/ndr/ndr_wkssvc.c
source4/librpc/ndr/ndr_wkssvc.h
source4/librpc/rpc/rpc_wkssvc.c
source4/torture/rpc/wkssvc.c

index 10412c8f3dc47811018b8857334623843a598555..1e82d3c7676306dd7c34b522670078dcadd82a05 100644 (file)
@@ -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 {
                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 ();
 }
index 5f12faef0ffd084aee4c1be4e634352a6d2478eb..40d3f0ad2bce35e6b25afb9ed88529467794c2b3 100644 (file)
@@ -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,147 +489,1123 @@ 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;
 }
 
-void ndr_print_wks_Info100(struct ndr_print *ndr, const char *name, struct wks_Info100 *r)
+NTSTATUS ndr_pull_wks_SetInfo(struct ndr_pull *ndr, struct wks_SetInfo *r)
 {
-       ndr_print_struct(ndr, name, "wks_Info100");
-       ndr->depth++;
-       ndr_print_uint32(ndr, "platform_id", r->platform_id);
-       ndr_print_ptr(ndr, "server", r->server);
-       ndr->depth++;
-       if (r->server) {
-               ndr_print_unistr(ndr, "server", r->server);
-       }
-       ndr->depth--;
-       ndr_print_ptr(ndr, "domain", r->domain);
-       ndr->depth++;
-       if (r->domain) {
-               ndr_print_unistr(ndr, "domain", r->domain);
-       }
-       ndr->depth--;
-       ndr_print_uint32(ndr, "ver_major", r->ver_major);
-       ndr_print_uint32(ndr, "ver_minor", r->ver_minor);
-       ndr->depth--;
+       NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+       return NT_STATUS_OK;
 }
 
-void ndr_print_wks_Info101(struct ndr_print *ndr, const char *name, struct wks_Info101 *r)
+NTSTATUS ndr_pull_WKS_NETRWKSTAUSERENUM(struct ndr_pull *ndr, struct WKS_NETRWKSTAUSERENUM *r)
 {
-       ndr_print_struct(ndr, name, "wks_Info101");
-       ndr->depth++;
-       ndr_print_uint32(ndr, "platform_id", r->platform_id);
-       ndr_print_ptr(ndr, "server", r->server);
-       ndr->depth++;
-       if (r->server) {
-               ndr_print_unistr(ndr, "server", r->server);
-       }
-       ndr->depth--;
-       ndr_print_ptr(ndr, "domain", r->domain);
-       ndr->depth++;
-       if (r->domain) {
-               ndr_print_unistr(ndr, "domain", r->domain);
-       }
-       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->depth++;
-       if (r->unknown) {
-               ndr_print_unistr(ndr, "unknown", r->unknown);
-       }
-       ndr->depth--;
-       ndr->depth--;
+       NDR_CHECK(ndr_pull_WERROR(ndr, &r->out.result));
+
+       return NT_STATUS_OK;
 }
 
-void ndr_print_wks_Info102(struct ndr_print *ndr, const char *name, struct wks_Info102 *r)
+NTSTATUS ndr_pull_WKS_NETRWKSTAUSERGETINFO(struct ndr_pull *ndr, struct WKS_NETRWKSTAUSERGETINFO *r)
 {
-       ndr_print_struct(ndr, name, "wks_Info102");
-       ndr->depth++;
-       ndr_print_uint32(ndr, "platform_id", r->platform_id);
-       ndr_print_ptr(ndr, "server", r->server);
-       ndr->depth++;
-       if (r->server) {
-               ndr_print_unistr(ndr, "server", r->server);
-       }
-       ndr->depth--;
+       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;
+}
+
+void ndr_print_wks_Info100(struct ndr_print *ndr, const char *name, struct wks_Info100 *r)
+{
+       ndr_print_struct(ndr, name, "wks_Info100");
+       ndr->depth++;
+       ndr_print_uint32(ndr, "platform_id", r->platform_id);
+       ndr_print_ptr(ndr, "server", r->server);
+       ndr->depth++;
+       if (r->server) {
+               ndr_print_unistr(ndr, "server", r->server);
+       }
+       ndr->depth--;
+       ndr_print_ptr(ndr, "domain", r->domain);
+       ndr->depth++;
+       if (r->domain) {
+               ndr_print_unistr(ndr, "domain", r->domain);
+       }
+       ndr->depth--;
+       ndr_print_uint32(ndr, "ver_major", r->ver_major);
+       ndr_print_uint32(ndr, "ver_minor", r->ver_minor);
+       ndr->depth--;
+}
+
+void ndr_print_wks_Info101(struct ndr_print *ndr, const char *name, struct wks_Info101 *r)
+{
+       ndr_print_struct(ndr, name, "wks_Info101");
+       ndr->depth++;
+       ndr_print_uint32(ndr, "platform_id", r->platform_id);
+       ndr_print_ptr(ndr, "server", r->server);
+       ndr->depth++;
+       if (r->server) {
+               ndr_print_unistr(ndr, "server", r->server);
+       }
+       ndr->depth--;
+       ndr_print_ptr(ndr, "domain", r->domain);
+       ndr->depth++;
+       if (r->domain) {
+               ndr_print_unistr(ndr, "domain", r->domain);
+       }
+       ndr->depth--;
+       ndr_print_uint32(ndr, "ver_major", r->ver_major);
+       ndr_print_uint32(ndr, "ver_minor", r->ver_minor);
+       ndr_print_ptr(ndr, "lan_root", r->lan_root);
+       ndr->depth++;
+       if (r->lan_root) {
+               ndr_print_unistr(ndr, "lan_root", r->lan_root);
+       }
+       ndr->depth--;
+       ndr->depth--;
+}
+
+void ndr_print_wks_Info102(struct ndr_print *ndr, const char *name, struct wks_Info102 *r)
+{
+       ndr_print_struct(ndr, name, "wks_Info102");
+       ndr->depth++;
+       ndr_print_uint32(ndr, "platform_id", r->platform_id);
+       ndr_print_ptr(ndr, "server", r->server);
+       ndr->depth++;
+       if (r->server) {
+               ndr_print_unistr(ndr, "server", r->server);
+       }
+       ndr->depth--;
        ndr_print_ptr(ndr, "domain", r->domain);
        ndr->depth++;
-       if (r->domain) {
-               ndr_print_unistr(ndr, "domain", r->domain);
+       if (r->domain) {
+               ndr_print_unistr(ndr, "domain", r->domain);
+       }
+       ndr->depth--;
+       ndr_print_uint32(ndr, "ver_major", r->ver_major);
+       ndr_print_uint32(ndr, "ver_minor", r->ver_minor);
+       ndr_print_ptr(ndr, "lan_root", r->lan_root);
+       ndr->depth++;
+       if (r->lan_root) {
+               ndr_print_unistr(ndr, "lan_root", r->lan_root);
+       }
+       ndr->depth--;
+       ndr_print_uint32(ndr, "logged_on_users", r->logged_on_users);
+       ndr->depth--;
+}
+
+void ndr_print_wks_Info(struct ndr_print *ndr, const char *name, uint16 level, union wks_Info *r)
+{
+       ndr_print_union(ndr, name, level, "wks_Info");
+       switch (level) {
+       case 100:
+       ndr_print_ptr(ndr, "info100", r->info100);
+       ndr->depth++;
+       if (r->info100) {
+               ndr_print_wks_Info100(ndr, "info100", r->info100);
+       }
+       ndr->depth--;
+       break;
+
+       case 101:
+       ndr_print_ptr(ndr, "info101", r->info101);
+       ndr->depth++;
+       if (r->info101) {
+               ndr_print_wks_Info101(ndr, "info101", r->info101);
+       }
+       ndr->depth--;
+       break;
+
+       case 102:
+       ndr_print_ptr(ndr, "info102", r->info102);
+       ndr->depth++;
+       if (r->info102) {
+               ndr_print_wks_Info102(ndr, "info102", r->info102);
+       }
+       ndr->depth--;
+       break;
+
+       default:
+               ndr_print_bad_level(ndr, name, level);
+       }
+}
+
+void ndr_print_wks_QueryInfo(struct ndr_print *ndr, const char *name, int flags, struct wks_QueryInfo *r)
+{
+       ndr_print_struct(ndr, name, "wks_QueryInfo");
+       ndr->depth++;
+       if (flags & NDR_IN) {
+               ndr_print_struct(ndr, "in", "wks_QueryInfo");
+       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_uint32(ndr, "level", r->in.level);
+       ndr->depth--;
+       }
+       if (flags & NDR_OUT) {
+               ndr_print_struct(ndr, "out", "wks_QueryInfo");
+       ndr->depth++;
+       ndr_print_wks_Info(ndr, "info", r->in.level, &r->out.info);
+       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--;
-       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);
+}
+
+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++;
-       if (r->unknown) {
-               ndr_print_unistr(ndr, "unknown", r->unknown);
+       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_print_uint32(ndr, "unknown2", r->unknown2);
+       }
        ndr->depth--;
 }
 
-void ndr_print_wks_Info(struct ndr_print *ndr, const char *name, uint16 level, union wks_Info *r)
+void ndr_print_WKS_NETRWORKSTATIONSTATISTICSGET(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRWORKSTATIONSTATISTICSGET *r)
 {
-       ndr_print_union(ndr, name, level, "wks_Info");
-       switch (level) {
-       case 100:
-       ndr_print_ptr(ndr, "info100", r->info100);
+       ndr_print_struct(ndr, name, "WKS_NETRWORKSTATIONSTATISTICSGET");
        ndr->depth++;
-       if (r->info100) {
-               ndr_print_wks_Info100(ndr, "info100", r->info100);
+       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--;
-       break;
+}
 
-       case 101:
-       ndr_print_ptr(ndr, "info101", r->info101);
+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 (r->info101) {
-               ndr_print_wks_Info101(ndr, "info101", r->info101);
+       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--;
-       break;
+       }
+       ndr->depth--;
+}
 
-       case 102:
-       ndr_print_ptr(ndr, "info102", r->info102);
+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 (r->info102) {
-               ndr_print_wks_Info102(ndr, "info102", r->info102);
+       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--;
-       break;
+}
 
-       default:
-               ndr_print_bad_level(ndr, name, level);
+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_QueryInfo(struct ndr_print *ndr, const char *name, int flags, struct wks_QueryInfo *r)
+void ndr_print_WKS_NETRUNJOINDOMAIN(struct ndr_print *ndr, const char *name, int flags, struct WKS_NETRUNJOINDOMAIN *r)
 {
-       ndr_print_struct(ndr, name, "wks_QueryInfo");
+       ndr_print_struct(ndr, name, "WKS_NETRUNJOINDOMAIN");
        ndr->depth++;
        if (flags & NDR_IN) {
-               ndr_print_struct(ndr, "in", "wks_QueryInfo");
+               ndr_print_struct(ndr, "in", "WKS_NETRUNJOINDOMAIN");
        ndr->depth++;
-       ndr_print_ptr(ndr, "server_name", r->in.server_name);
+       ndr->depth--;
+       }
+       if (flags & NDR_OUT) {
+               ndr_print_struct(ndr, "out", "WKS_NETRUNJOINDOMAIN");
        ndr->depth++;
-       if (r->in.server_name) {
-               ndr_print_unistr(ndr, "server_name", r->in.server_name);
+       ndr_print_WERROR(ndr, "result", &r->out.result);
+       ndr->depth--;
        }
        ndr->depth--;
-       ndr_print_uint32(ndr, "level", r->in.level);
+}
+
+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_QueryInfo");
+               ndr_print_struct(ndr, "out", "WKS_NETRRENAMEMACHINEINDOMAIN");
        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_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--;
index f18ff11a83949dba3bae7c471b4cca657325b95a..2337f84e7a99f3ae1dfbfbfb944236a4aff5072e 100644 (file)
@@ -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
index 1a4b154842c65a94bd11b8429075d641faf99572..3a591c52ad3e1e6210d3ba2c66fbb24f6f2c05af 100644 (file)
@@ -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;
 }
index 73b3f5c527a31195e01822736a41ba06c37a98cf..9d4b38d40f87b4727416a6e11f85bfb3d2878d09 100644 (file)
@@ -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;