r12085: wkssvc.idl updated based on work by Ronnie Sahlberg to bring the
authorAndrew Tridgell <tridge@samba.org>
Tue, 6 Dec 2005 03:53:51 +0000 (03:53 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 18:47:07 +0000 (13:47 -0500)
Samba4 and ethereal IDL into line, so ethereal doesn't lose any
existing strucutres when switching to idl
(This used to be commit afccf73ecf6cf85e72c04e28724096aa6da96a80)

source4/librpc/idl/srvsvc.idl
source4/librpc/idl/wkssvc.idl
source4/rpc_server/wkssvc/dcesrv_wkssvc.c
source4/torture/rpc/wkssvc.c

index 05406c3f7696a9b1260293607f581beb67b2f4ff..e13c7160f83e56d2fa3322028ea33ebd9a6574de 100644 (file)
 /* srvsvc_NetSrv          */
 /**************************/
        typedef [public] enum {
-               PLATFORM_ID_NT  = 500
+               PLATFORM_ID_DOS = 300,
+               PLATFORM_ID_OS2 = 400,
+               PLATFORM_ID_NT  = 500,
+               PLATFORM_ID_OSF = 600,
+               PLATFORM_ID_VMS = 700
        } srvsvc_PlatformId;
 
        typedef struct {
index 71fd74297edc5979dafda89691c14d89cf664afa..b765e896ffbe9678bb163c776412d1e859aca75f 100644 (file)
                BOOL use_512_byte_max_transfer;
        } wkssvc_NetWkstaInfo502;
 
+       typedef struct {
+               uint32 char_wait;
+       } wkssvc_NetWkstaInfo1010;
+
+       typedef struct {
+               uint32 collection_time;
+       } wkssvc_NetWkstaInfo1011;
+
+       typedef struct {
+               uint32 maximum_collection_count;
+       } wkssvc_NetWkstaInfo1012;
+
+       typedef struct {
+               uint32 keep_connection;
+       } wkssvc_NetWkstaInfo1013;
+
+       typedef struct {
+               uint32 session_timeout;
+       } wkssvc_NetWkstaInfo1018;
+
+       typedef struct {
+               uint32 size_char_buf;
+       } wkssvc_NetWkstaInfo1023;
+
+       typedef struct {
+               uint32 errorlog_sz;
+       } wkssvc_NetWkstaInfo1027;
+
+       typedef struct {
+               uint32 max_threads;
+       } wkssvc_NetWkstaInfo1033;
+
        typedef union {
                [case(100)] wkssvc_NetWkstaInfo100 *info100;
                [case(101)] wkssvc_NetWkstaInfo101 *info101;
                [case(102)] wkssvc_NetWkstaInfo102 *info102;
                [case(502)] wkssvc_NetWkstaInfo502 *info502;
+               [case(1010)] wkssvc_NetWkstaInfo1010 *info1010;
+               [case(1011)] wkssvc_NetWkstaInfo1011 *info1011;
+               [case(1012)] wkssvc_NetWkstaInfo1012 *info1012;
+               [case(1013)] wkssvc_NetWkstaInfo1013 *info1013;
+               [case(1018)] wkssvc_NetWkstaInfo1018 *info1018;
+               [case(1023)] wkssvc_NetWkstaInfo1023 *info1023;
+               [case(1027)] wkssvc_NetWkstaInfo1027 *info1027;
+               [case(1033)] wkssvc_NetWkstaInfo1033 *info1033;
                [default] ;
        } wkssvc_NetWkstaInfo;
 
        WERROR wkssvc_NetWkstaGetInfo(
                [in]   [string,charset(UTF16)] uint16 *server_name,
                [in]   uint32 level,
-               [out,switch_is(level)]  wkssvc_NetWkstaInfo info
+               [out,switch_is(level),ref]  wkssvc_NetWkstaInfo *info
                );
 
 
        WERROR wkssvc_NetWkstaSetInfo(
                [in]   [string,charset(UTF16)] uint16 *server_name,
                [in]   uint32 level,
-               [in,switch_is(level)]  wkssvc_NetWkstaInfo info,
-               [in,out]   uint32 *parm_error
+               [in,switch_is(level),ref]  wkssvc_NetWkstaInfo *info,
+               [in,out,ref]   uint32 *parm_error
                );
 
+
        /*****************************/
        /* Function        0x02      */
-       WERROR WKSSVC_NETRWKSTAUSERENUM ();
+       typedef struct {
+               [string,charset(UTF16)] uint16 *user;
+       } USER_INFO_0;
+
+       typedef struct {
+               uint32 entries_read;
+               [size_is(entries_read)] USER_INFO_0 *user0;
+       } USER_INFO_0_CONTAINER;
+
+       typedef struct {
+               [string,charset(UTF16)] uint16 *user_name;
+               [string,charset(UTF16)] uint16 *logon_domain;
+               [string,charset(UTF16)] uint16 *other_domains;
+               [string,charset(UTF16)] uint16 *logon_server;
+       } USER_INFO_1;
+
+       typedef struct {
+               uint32 entries_read;
+               [size_is(entries_read)] USER_INFO_1 *user1;
+       } USER_INFO_1_CONTAINER;
+
+       typedef [switch_type(uint32)] union {
+               [case(0)] USER_INFO_0_CONTAINER *user0;
+               [case(1)] USER_INFO_1_CONTAINER *user1;
+       } WKS_USER_ENUM_UNION;
+
+       WERROR wkssvc_NetWkstaEnumUsers(
+               [in] [string,charset(UTF16)] uint16 *server_name,
+               [in] uint32 level,
+               [in] [out] [ref] WKS_USER_ENUM_UNION *users,
+               [in] uint32 prefmaxlen,
+               [out] uint32 *entriesread,
+               [out] uint32 *totalentries,
+               [in] [out] [ref] uint32 *resumehandle
+               );
 
        /*****************************/
        /* Function        0x03      */
        WERROR wkssvc_NetWkstaTransportEnum (
                [in]         [string,charset(UTF16)] uint16 *server_name,
                [in,out]     uint32 level,
-               [in,out,switch_is(level)] wkssvc_NetWkstaTransportCtr ctr,
+               [in,out,switch_is(level),ref] wkssvc_NetWkstaTransportCtr *ctr,
                [in]         uint32 max_buffer,
+               [out]        uint32 *entriesread,
                [out]        uint32 totalentries,
                [in,out]     uint32 *resume_handle
                );
        /* Function        0x15      */
        WERROR WKSSVC_NETRGETJOINABLEOUS ();
 
+       typedef struct {
+               uint8 blob[524];
+       } wkssvc_PasswordBuffer;
+
+       typedef [bitmap32bit] bitmap {
+               /* TRUE: defer setting the SPN and dNSHostName until a rename operation */
+               WKSSVC_JOIN_FLAGS_DEFER_SPN             = 0x00000100,
+
+               /* TRUE: set the machine password to the provided one after the join completes */
+               WKSSVC_JOIN_FLAGS_MACHINE_PWD_PASSED    = 0x00000080,
+
+               /* TRUE: perform an unsecured join */
+               WKSSVC_JOIN_FLAGS_JOIN_UNSECURE         = 0x00000040,
+
+               /* TRUE: allow the join to complete even if the account already exists */
+               WKSSVC_JOIN_FLAGS_DOMAIN_JOIN_IF_JOINED = 0x00000020,
+       
+               /* TRUE: this join is part of a w9x upgrade */
+               WKSSVC_JOIN_FLAGS_WIN9X_UPGRADE         = 0x00000010,
+
+               /* TRUE: delete the account when the domain is left */
+               WKSSVC_JOIN_FLAGS_ACCOUNT_DELETE        = 0x00000004,
+
+               /* TRUE: create the account in the domain */
+               WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE        = 0x00000002,
+
+               /* TRUE: join domain    FALSE: join workgroup */
+               WKSSVC_JOIN_FLAGS_JOIN_TYPE             = 0x00000001
+               
+       } wkssvc_joinflags;
+
        /*****************************/
        /* Function        0x16      */
-       WERROR WKSSVC_NETRJOINDOMAIN2 ();
+       WERROR wkssvc_NetrJoinDomain2 (
+               [in]         [string,charset(UTF16)] uint16 *server_name,
+               [in]         [string,charset(UTF16),ref] uint16 *domain_name,
+               [in]         [string,charset(UTF16)] uint16 *account_name,
+               [in]         [string,charset(UTF16)] uint16 *admin_account,
+               [in]         wkssvc_PasswordBuffer *type_30,
+               [in]         wkssvc_joinflags join_flags
+               );
 
        /*****************************/
        /* Function        0x17      */
-       WERROR WKSSVC_NETRUNJOINDOMAIN2 ();
+       WERROR wkssvc_NetrUnjoinDomain2 (
+               [in] [unique] [string,charset(UTF16)] uint16 *server_name,
+               [in] [unique] [string,charset(UTF16)] uint16 *account,
+               [in] [unique] wkssvc_PasswordBuffer *Encrypted_password,
+               [in] wkssvc_joinflags unjoin_flags
+               );
+
+       typedef [bitmap32bit] bitmap {
+               /* TRUE: create the account in the domain */
+               WKSSVC_JOIN_FLAGS_ACCOUNT_CREATE        = 0x00000002
+       } wkssvc_renameflags;
 
        /*****************************/
        /* Function        0x18      */
-       WERROR WKSSVC_NETRRENAMEMACHINEINDOMAIN2 ();
+       WERROR wkssvc_NetrRenameMachineInDomain2(
+               [in] [unique] [string,charset(UTF16)] uint16 *server_name,
+               [in] [unique] [string,charset(UTF16)] uint16 *NewMachineName,
+               [in] [unique] [string,charset(UTF16)] uint16 *Account,
+               [in] [unique] wkssvc_PasswordBuffer *EncryptedPassword,
+               [in] wkssvc_renameflags RenameOptions
+               );
 
        /*****************************/
        /* Function        0x19      */
 
        /*****************************/
        /* Function        0x1b      */
-       WERROR WKSSVC_NETRADDALTERNATECOMPUTERNAME ();
+       WERROR wkssvc_NetrAddAlternateComputerName(
+               [in] [unique] [string,charset(UTF16)] uint16 *server_name,
+               [in] [unique] [string,charset(UTF16)] uint16 *NewAlternateMachineName,
+               [in] [unique] [string,charset(UTF16)] uint16 *Account,
+               [in] [unique] wkssvc_PasswordBuffer *EncryptedPassword,
+               [in] uint32 Reserved
+               );
 
        /*****************************/
        /* Function        0x1c      */
-       WERROR WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME ();
+       WERROR wkssvc_NetrRemoveAlternateComputerName(
+               [in] [unique] [string,charset(UTF16)] uint16 *server_name,
+               [in] [unique] [string,charset(UTF16)] uint16 *AlternateMachineNameToRemove,
+               [in] [unique] [string,charset(UTF16)] uint16 *Account,
+               [in] [unique] wkssvc_PasswordBuffer *EncryptedPassword,
+               [in] uint32 Reserved
+               );
 
        /*****************************/
        /* Function        0x1d      */
index 793b86d9dce09b780f773a96d94d7c85d27083b9..fb1a046fa81d06dc05e68f842d4462bb72966406 100644 (file)
@@ -34,6 +34,8 @@ static WERROR wkssvc_NetWkstaGetInfo(struct dcesrv_call_state *dce_call, TALLOC_
        struct dcesrv_context *dce_ctx = dce_call->conn->dce_ctx;
 
        ZERO_STRUCT(r->out);
+       r->out.info = talloc_zero(mem_ctx, union wkssvc_NetWkstaInfo);
+       W_ERROR_HAVE_NO_MEMORY(r->out.info);
 
        /* NOTE: win2k3 ignores r->in.server_name completly so we do --metze */
 
@@ -53,7 +55,7 @@ static WERROR wkssvc_NetWkstaGetInfo(struct dcesrv_call_state *dce_call, TALLOC_
                info100->version_major  = dcesrv_common_get_version_major(mem_ctx, dce_ctx);
                info100->version_minor  = dcesrv_common_get_version_minor(mem_ctx, dce_ctx);
 
-               r->out.info.info100 = info100;
+               r->out.info->info100 = info100;
                return WERR_OK;
        }
        case 101:
@@ -72,7 +74,7 @@ static WERROR wkssvc_NetWkstaGetInfo(struct dcesrv_call_state *dce_call, TALLOC_
                info101->version_minor  = dcesrv_common_get_version_minor(mem_ctx, dce_ctx);
                info101->lan_root       = dcesrv_common_get_lan_root(mem_ctx, dce_ctx);
 
-               r->out.info.info101 = info101;
+               r->out.info->info101 = info101;
                return WERR_OK;
        }
        case 102:
@@ -102,10 +104,10 @@ static WERROR wkssvc_NetWkstaSetInfo(struct dcesrv_call_state *dce_call, TALLOC_
 
 
 /* 
-  WKSSVC_NETRWKSTAUSERENUM 
+  wkssvc_NetWkstaEnumUsers
 */
-static WERROR WKSSVC_NETRWKSTAUSERENUM(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-                      struct WKSSVC_NETRWKSTAUSERENUM *r)
+static WERROR wkssvc_NetWkstaEnumUsers(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+                                      struct wkssvc_NetWkstaEnumUsers *r)
 {
        DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }
@@ -143,11 +145,13 @@ static WERROR wkssvc_NetWkstaTransportEnum(struct dcesrv_call_state *dce_call, T
 
        switch (r->in.level) {
        case 0:
-               r->out.ctr.ctr0 = talloc(mem_ctx, struct wkssvc_NetWkstaTransportCtr0);
-               W_ERROR_HAVE_NO_MEMORY(r->out.ctr.ctr0);
+               r->out.ctr = talloc(mem_ctx, union wkssvc_NetWkstaTransportCtr);
+               W_ERROR_HAVE_NO_MEMORY(r->out.ctr);
+               r->out.ctr->ctr0 = talloc(mem_ctx, struct wkssvc_NetWkstaTransportCtr0);
+               W_ERROR_HAVE_NO_MEMORY(r->out.ctr->ctr0);
 
-               r->out.ctr.ctr0->count = 0;
-               r->out.ctr.ctr0->array = NULL;
+               r->out.ctr->ctr0->count = 0;
+               r->out.ctr->ctr0->array = NULL;
 
                return WERR_NOT_SUPPORTED;
 
@@ -322,8 +326,8 @@ static WERROR WKSSVC_NETRGETJOINABLEOUS(struct dcesrv_call_state *dce_call, TALL
 /* 
   WKSSVC_NETRJOINDOMAIN2 
 */
-static WERROR WKSSVC_NETRJOINDOMAIN2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-                      struct WKSSVC_NETRJOINDOMAIN2 *r)
+static WERROR wkssvc_NetrJoinDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+                      struct wkssvc_NetrJoinDomain2 *r)
 {
        DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }
@@ -332,8 +336,8 @@ static WERROR WKSSVC_NETRJOINDOMAIN2(struct dcesrv_call_state *dce_call, TALLOC_
 /* 
   WKSSVC_NETRUNJOINDOMAIN2 
 */
-static WERROR WKSSVC_NETRUNJOINDOMAIN2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-                      struct WKSSVC_NETRUNJOINDOMAIN2 *r)
+static WERROR wkssvc_NetrUnjoinDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+                      struct wkssvc_NetrUnjoinDomain2 *r)
 {
        DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }
@@ -342,8 +346,8 @@ static WERROR WKSSVC_NETRUNJOINDOMAIN2(struct dcesrv_call_state *dce_call, TALLO
 /* 
   WKSSVC_NETRRENAMEMACHINEINDOMAIN2 
 */
-static WERROR WKSSVC_NETRRENAMEMACHINEINDOMAIN2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-                      struct WKSSVC_NETRRENAMEMACHINEINDOMAIN2 *r)
+static WERROR wkssvc_NetrRenameMachineInDomain2(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+                      struct wkssvc_NetrRenameMachineInDomain2 *r)
 {
        DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }
@@ -372,8 +376,8 @@ static WERROR WKSSVC_NETRGETJOINABLEOUS2(struct dcesrv_call_state *dce_call, TAL
 /* 
   WKSSVC_NETRADDALTERNATECOMPUTERNAME 
 */
-static WERROR WKSSVC_NETRADDALTERNATECOMPUTERNAME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-                      struct WKSSVC_NETRADDALTERNATECOMPUTERNAME *r)
+static WERROR wkssvc_NetrAddAlternateComputerName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+                      struct wkssvc_NetrAddAlternateComputerName *r)
 {
        DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }
@@ -382,8 +386,8 @@ static WERROR WKSSVC_NETRADDALTERNATECOMPUTERNAME(struct dcesrv_call_state *dce_
 /* 
   WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME 
 */
-static WERROR WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
-                      struct WKSSVC_NETRREMOVEALTERNATECOMPUTERNAME *r)
+static WERROR wkssvc_NetrRemoveAlternateComputerName(struct dcesrv_call_state *dce_call, TALLOC_CTX *mem_ctx,
+                      struct wkssvc_NetrRemoveAlternateComputerName *r)
 {
        DCESRV_FAULT(DCERPC_FAULT_OP_RNG_ERROR);
 }
index 47e893ae2e854f78d926216fc51658ecf39732c8..7b8388b125e781572bcb4beba7cedd6d622f7674 100644 (file)
@@ -58,13 +58,15 @@ static BOOL test_NetWkstaTransportEnum(struct dcerpc_pipe *p,
        struct wkssvc_NetWkstaTransportEnum r;
        BOOL ret = True;
        uint32_t resume_handle = 0;
+       union wkssvc_NetWkstaTransportCtr ctr;
        struct wkssvc_NetWkstaTransportCtr0 ctr0;
 
        ZERO_STRUCT(ctr0);
+       ctr.ctr0 = &ctr0;
 
        r.in.server_name = dcerpc_server_name(p);
        r.in.level = 0;
-       r.in.ctr.ctr0 = &ctr0;
+       r.in.ctr = &ctr;
        r.in.max_buffer = (uint32_t)-1;
        r.in.resume_handle = &resume_handle;
        r.out.resume_handle = &resume_handle;