summaryrefslogtreecommitdiff
path: root/source4/librpc/idl
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2003-11-19 22:10:20 +0000
committerAndrew Tridgell <tridge@samba.org>2003-11-19 22:10:20 +0000
commit10ee36bede1337d73feec575cc840957090b30b2 (patch)
tree8d292361ad5e6bb1291fc3dbca191d1c44bd453b /source4/librpc/idl
parent5a51af068533357fbf0ae4ddfd169fb752ddd2b5 (diff)
downloadsamba-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.idl6
-rw-r--r--source4/librpc/idl/srvsvc.idl65
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