util_sd: Make server conncection optional
[Samba.git] / librpc / idl / witness.idl
blob8f5f9bf17e9484497f4a1998ee0d53ed71d1d601
1 #include "idl_types.h"
3 import "misc.idl";
6 uuid("ccd8c074-d0e5-4a40-92b4-d074faa6ba28"),
7 version(1.1),
8 pointer_default(unique),
9 helpstring("SMB Witness Service"),
10 endpoint("ncacn_ip_tcp:")
12 interface witness
14 typedef [v1_enum] enum {
15 WITNESS_V1 = 0x00010001,
16 WITNESS_V2 = 0x00020000,
17 WITNESS_UNSPECIFIED_VERSION = 0xFFFFFFFF
18 } witness_version;
20 /*****************/
21 /* Function 0x00 */
23 typedef [enum16bit] enum {
24 WITNESS_STATE_UNKNOWN = 0x00,
25 WITNESS_STATE_AVAILABLE = 0x01,
26 WITNESS_STATE_UNAVAILABLE = 0xff
27 } witness_interfaceInfo_state;
29 typedef [bitmap32bit] bitmap {
30 WITNESS_INFO_IPv4_VALID = 0x01,
31 WITNESS_INFO_IPv6_VALID = 0x02,
32 WITNESS_INFO_WITNESS_IF = 0x04
33 } witness_interfaceInfo_flags;
35 typedef struct {
36 [charset(UTF16),to_null] uint16 group_name[260];
37 witness_version version;
38 witness_interfaceInfo_state state;
39 [flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
40 [flag(NDR_BIG_ENDIAN)] ipv6address ipv6;
41 witness_interfaceInfo_flags flags;
42 } witness_interfaceInfo;
44 typedef struct {
45 uint32 num_interfaces;
46 [size_is(num_interfaces)] witness_interfaceInfo *interfaces;
47 } witness_interfaceList;
49 [public] WERROR witness_GetInterfaceList(
50 [out] witness_interfaceList **interface_list
53 /*****************/
54 /* Function 0x01 */
56 [public] WERROR witness_Register(
57 [out,ref] policy_handle *context_handle,
58 [in] witness_version version,
59 [in,unique,string,charset(UTF16)] uint16 *net_name,
60 [in,unique,string,charset(UTF16)] uint16 *ip_address,
61 [in,unique,string,charset(UTF16)] uint16 *client_computer_name
64 /*****************/
65 /* Function 0x02 */
67 [public] WERROR witness_UnRegister(
68 [in] policy_handle context_handle
71 /*****************/
72 /* Function 0x03 */
74 typedef [v1_enum] enum {
75 WITNESS_NOTIFY_RESOURCE_CHANGE = 1,
76 WITNESS_NOTIFY_CLIENT_MOVE = 2,
77 WITNESS_NOTIFY_SHARE_MOVE = 3,
78 WITNESS_NOTIFY_IP_CHANGE = 4
79 } witness_notifyResponse_type;
81 typedef [v1_enum] enum {
82 WITNESS_RESOURCE_STATE_UNKNOWN = 0x00,
83 WITNESS_RESOURCE_STATE_AVAILABLE = 0x01,
84 WITNESS_RESOURCE_STATE_UNAVAILABLE = 0xff
85 } witness_ResourceChange_type;
87 typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN),gensize,public] struct {
88 [value(ndr_size_witness_ResourceChange(r,ndr->flags))] uint32 length;
89 witness_ResourceChange_type type;
90 nstring name;
91 } witness_ResourceChange;
93 typedef [bitmap32bit] bitmap {
94 WITNESS_IPADDR_V4 = 0x01,
95 WITNESS_IPADDR_V6 = 0x02,
96 WITNESS_IPADDR_ONLINE = 0x08,
97 WITNESS_IPADDR_OFFLINE = 0x10
98 } witness_IPaddrInfo_flags;
100 typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN),gensize] struct {
101 witness_IPaddrInfo_flags flags;
102 ipv4address ipv4;
103 ipv6address ipv6;
104 } witness_IPaddrInfo;
106 typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] struct {
107 [value(r->num*ndr_size_witness_IPaddrInfo(r->addr, ndr->flags))] uint32 length;
108 [value(0)] uint32 reserved;
109 uint32 num;
110 witness_IPaddrInfo addr[num];
111 } witness_IPaddrInfoList;
113 typedef [public,switch_type(witness_notifyResponse_type),nodiscriminant, flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] union {
114 [case(WITNESS_NOTIFY_RESOURCE_CHANGE)] witness_ResourceChange resource_change;
115 [case(WITNESS_NOTIFY_CLIENT_MOVE)] witness_IPaddrInfoList client_move;
116 [case(WITNESS_NOTIFY_SHARE_MOVE)] witness_IPaddrInfoList share_move;
117 [case(WITNESS_NOTIFY_IP_CHANGE)] witness_IPaddrInfoList ip_change;
118 } witness_notifyResponse_message;
120 typedef [flag(NDR_PAHEX)] struct {
121 witness_notifyResponse_type type;
122 [value(messages->length)] uint32 length;
123 uint32 num;
124 /* [switch_is(type), size_is(num)] witness_notifyResponse_message *messages; */
125 /* [size_is(length)] uint8 *messages; */
126 [subcontext(4), subcontext_size(length), flag(NDR_REMAINING)] DATA_BLOB *messages;
127 } witness_notifyResponse;
129 [public] WERROR witness_AsyncNotify(
130 [in] policy_handle context_handle,
131 [out] witness_notifyResponse **response
134 /*****************/
135 /* Function 0x04 */
137 typedef [bitmap32bit] bitmap {
138 WITNESS_REGISTER_NONE = 0x00,
139 WITNESS_REGISTER_IP_NOTIFICATION = 0x01
140 } witness_RegisterEx_flags;
142 WERROR witness_RegisterEx(
143 [out,ref] policy_handle *context_handle,
144 [in] witness_version version,
145 [in,unique,string,charset(UTF16)] uint16 *net_name,
146 [in,unique,string,charset(UTF16)] uint16 *share_name,
147 [in,unique,string,charset(UTF16)] uint16 *ip_address,
148 [in,unique,string,charset(UTF16)] uint16 *client_computer_name,
149 [in] witness_RegisterEx_flags flags,
150 [in] uint32 timeout