WIP: witness.idl
authorGregor Beck <gbeck@sernet.de>
Mon, 10 Feb 2014 08:29:14 +0000 (09:29 +0100)
committerStefan Metzmacher <metze@samba.org>
Mon, 19 Jan 2015 23:33:17 +0000 (00:33 +0100)
librpc/idl/witness.idl

index 645782a2e199586ca52688dd6736ca3a7a824462..3227a8d17f631452e21d441660de1d1737cc499a 100644 (file)
@@ -83,11 +83,10 @@ interface witness
                WITNESS_RESOURCE_STATE_UNAVAILABLE = 0xff
        } witness_ResourceChange_type;
 
-
-       typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] struct {
-               uint32 length;
+       typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN),gensize,public] struct {
+               [value(ndr_size_witness_ResourceChange(r,ndr->flags))] uint32 length;
                witness_ResourceChange_type type;
-               [charset(UTF16)] nstring name;
+               nstring name;
        } witness_ResourceChange;
 
        typedef [bitmap32bit] bitmap {
@@ -97,21 +96,22 @@ interface witness
                WITNESS_IPADDR_OFFLINE = 0x10
        } witness_IPaddrInfo_flags;
 
-       typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] struct {
+       typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN),gensize] struct {
                witness_IPaddrInfo_flags flags;
                ipv4address ipv4;
                ipv6address ipv6;
        } witness_IPaddrInfo;
 
        typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] struct {
-               //??? [value(sizeof(witness_notify_IPaddrList))]
-               uint32 length;
+               [value(r->num*ndr_size_witness_IPaddrInfo(r->addr, ndr->flags))] uint32 length;
                [value(0)] uint32 reserved;
                uint32 num;
                witness_IPaddrInfo addr[num];
        } witness_IPaddrInfoList;
 
-       typedef [switch_type(witness_notifyResponse_type),nodiscriminant] union {
+       typedef [switch_type(witness_notifyResponse_type),nodiscriminant,
+                 flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)]
+       union {
                [case(WITNESS_NOTIFY_RESOURCE_CHANGE)] witness_ResourceChange resource_change;
                [case(WITNESS_NOTIFY_CLIENT_MOVE)]     witness_IPaddrInfoList client_move;
                [case(WITNESS_NOTIFY_SHARE_MOVE)]      witness_IPaddrInfoList share_move;
@@ -124,7 +124,7 @@ interface witness
                // ???[value(ndr_size_witness_notifyResponse(messages,ndr->flags))]
                uint32 length;
                uint32 num;
-               [switch_is(type), size_is(num)] witness_notifyResponse_message messages[*];
+               [switch_is(type), size_is(num)] witness_notifyResponse_message *messages;
        } witness_notifyResponse;
 
        WERROR witness_AsyncNotify(