diff options
author | Andrew Tridgell <tridge@samba.org> | 2003-11-19 22:10:20 +0000 |
---|---|---|
committer | Andrew Tridgell <tridge@samba.org> | 2003-11-19 22:10:20 +0000 |
commit | 10ee36bede1337d73feec575cc840957090b30b2 (patch) | |
tree | 8d292361ad5e6bb1291fc3dbca191d1c44bd453b /source4/librpc/idl | |
parent | 5a51af068533357fbf0ae4ddfd169fb752ddd2b5 (diff) | |
download | samba-10ee36bede1337d73feec575cc840957090b30b2.tar.gz samba-10ee36bede1337d73feec575cc840957090b30b2.tar.bz2 samba-10ee36bede1337d73feec575cc840957090b30b2.zip |
switched to a new way of handling unions, so that we can handle
alignment correctly for unions that have non-uint16 discriminants
fixed the union handling in srvsvc.idl. (metze, please take a look at
the changes, your IDL did match what was one the wire in most cases,
but isn't the way IDL is usually coded)
(This used to be commit 7b5d0287298e8505e0ec7b22d75d9f9a8a610031)
Diffstat (limited to 'source4/librpc/idl')
-rw-r--r-- | source4/librpc/idl/echo.idl | 6 | ||||
-rw-r--r-- | source4/librpc/idl/srvsvc.idl | 65 |
2 files changed, 25 insertions, 46 deletions
diff --git a/source4/librpc/idl/echo.idl b/source4/librpc/idl/echo.idl index 2ef7026826..304ba4c66a 100644 --- a/source4/librpc/idl/echo.idl +++ b/source4/librpc/idl/echo.idl @@ -60,6 +60,10 @@ interface rpcecho echo_info1 info1; } echo_info6; + typedef union { + [case(1)] echo_info1 info1; + } echo_XXX; + typedef struct { uint8 v1; echo_info4 info4; @@ -76,7 +80,7 @@ interface rpcecho } echo_Info; NTSTATUS TestCall2 ( - [in] uint16 level, + [in] uint32 level, [out,switch_is(level)] echo_Info *info ); } diff --git a/source4/librpc/idl/srvsvc.idl b/source4/librpc/idl/srvsvc.idl index 02055dccb6..40cb905e73 100644 --- a/source4/librpc/idl/srvsvc.idl +++ b/source4/librpc/idl/srvsvc.idl @@ -77,22 +77,17 @@ typedef struct { } srvsvc_NetConnCtrDefault; - typedef [nodiscriminant,public] union { + typedef union { case(0) srvsvc_NetConnCtr0 *ctr0; case(1) srvsvc_NetConnCtr1 *ctr1; default srvsvc_NetConnCtrDefault ctrDefault; - } srvsvc_NetConnSubCtr; - - typedef struct { - uint32 level; - uint32 level2; - [switch_is(level)] srvsvc_NetConnSubCtr subctr; } srvsvc_NetConnCtr; WERROR srvsvc_NetConnEnum( [in] unistr *server_unc, [in] unistr *path, - [in,out] srvsvc_NetConnCtr ctr, + [in,out] uint32 level, + [in,out,switch_is(level)] srvsvc_NetConnCtr ctr, [in] uint32 preferred_len, [out] uint32 total, [in,out] uint32 *resume_handle @@ -126,23 +121,18 @@ typedef struct { } srvsvc_NetFileCtrDefault; - typedef [nodiscriminant,public] union { + typedef union { case(2) srvsvc_NetFileCtr2 *ctr2; case(3) srvsvc_NetFileCtr3 *ctr3; default srvsvc_NetFileCtrDefault ctrDefault; - } srvsvc_NetFileSubCtr; - - typedef struct { - uint32 level; - uint32 level2; - [switch_is(level)] srvsvc_NetFileSubCtr subctr; } srvsvc_NetFileCtr; WERROR srvsvc_NetFileEnum( [in] unistr *server_unc, [in] unistr *path, [in] unistr *user, - [in,out] srvsvc_NetFileCtr ctr, + [in,out] uint32 level, + [in,out,switch_is(level)] srvsvc_NetFileCtr ctr, [in] uint32 preferred_len, [out] uint32 total, [in,out] uint32 *resume_handle @@ -230,26 +220,21 @@ typedef struct { } srvsvc_NetSessCtrDefault; - typedef [nodiscriminant,public] union { + typedef union { case(0) srvsvc_NetSessCtr0 *ctr0; case(1) srvsvc_NetSessCtr1 *ctr1; case(2) srvsvc_NetSessCtr2 *ctr2; case(10) srvsvc_NetSessCtr10 *ctr10; case(502) srvsvc_NetSessCtr502 *ctr502; default srvsvc_NetSessCtrDefault ctrDefault; - } srvsvc_NetSessSubCtr; - - typedef struct { - uint32 level; - uint32 level2; - [switch_is(level)] srvsvc_NetSessSubCtr subctr; } srvsvc_NetSessCtr; WERROR srvsvc_NetSessEnum( [in] unistr *server_unc, [in] unistr *client, [in] unistr *user, - [in,out] srvsvc_NetSessCtr ctr, + [in,out] uint32 level, + [in,out,switch_is(level)] srvsvc_NetSessCtr ctr, [in] uint32 preferred_len, [out] uint32 total, [in,out] uint32 *resume_handle @@ -337,24 +322,19 @@ typedef struct { } srvsvc_NetShareCtrDefault; - typedef [nodiscriminant,public] union { + typedef union { case(0) srvsvc_NetShareCtr0 *ctr0; case(1) srvsvc_NetShareCtr1 *ctr1; case(2) srvsvc_NetShareCtr2 *ctr2; case(501) srvsvc_NetShareCtr501 *ctr501; case(502) srvsvc_NetShareCtr502 *ctr502; default srvsvc_NetShareCtrDefault ctrDefault; - } srvsvc_NetShareSubCtr; - - typedef struct { - uint32 level; - [switch_is(level)] srvsvc_NetShareSubCtr subctr; } srvsvc_NetShareCtr; - + WERROR srvsvc_NetShareEnumAll( [in] unistr *server_unc, - [in] uint32 level, - [in,out] srvsvc_NetShareCtr ctr, + [in,out] uint32 level, + [in,out,switch_is(level)] srvsvc_NetShareCtr ctr, [in] uint32 preferred_len, [out] uint32 totalentries, [in,out] uint32 *resume_handle @@ -441,7 +421,7 @@ typedef struct { } srvsvc_NetDiskCtrDefault; - typedef [nodiscriminant,public] union { + typedef union { case(0) srvsvc_NetDiskCtr0 ctr0; case(1) srvsvc_NetDiskCtr1 ctr1; case(2) srvsvc_NetDiskCtr2 ctr2; @@ -522,22 +502,17 @@ typedef struct { } srvsvc_NetTransportCtrDefault; - typedef [nodiscriminant,public] union { + typedef union { case(0) srvsvc_NetTransportCtr0 *ctr0; case(1) srvsvc_NetTransportCtr1 *ctr1; case(2) srvsvc_NetTransportCtr2 *ctr2; default srvsvc_NetTransportCtrDefault ctrDefault; - } srvsvc_NetTransportSubCtr; - - typedef struct { - uint32 level; - uint32 level2; - [switch_is(level)] srvsvc_NetTransportSubCtr subctr; } srvsvc_NetTransportCtr; - + WERROR srvsvc_NetTransportEnum( [in] unistr *server_unc, - [in,out] srvsvc_NetTransportCtr ctr, + [in,out] uint32 level, + [in,out,switch_is(level)] srvsvc_NetTransportCtr ctr, [in] uint32 preferred_len, [out] uint32 total, [in,out] uint32 *resume_handle @@ -594,8 +569,8 @@ total entries ... */ WERROR srvsvc_NetShareEnum( [in] unistr *server_unc, - [in] uint32 level, - [in,out] srvsvc_NetShareCtr ctr, + [in,out] uint32 level, + [in,out,switch_is(level)] srvsvc_NetShareCtr ctr, [in] uint32 preferred_len, [out] uint32 totalentries, [in,out] uint32 *resume_handle |