6 uuid("ccd8c074-d0e5-4a40-92b4-d074faa6ba28"),
8 pointer_default(unique),
9 helpstring("SMB Witness Service"),
10 helper
("../librpc/ndr/ndr_witness.h"),
11 endpoint("ncacn_ip_tcp:"),
16 typedef [flag
(NDR_PAHEX
),v1_enum,public] enum {
17 WITNESS_V1
= 0x00010001,
18 WITNESS_V2
= 0x00020000,
19 WITNESS_UNSPECIFIED_VERSION
= 0xFFFFFFFF
25 typedef [flag
(NDR_PAHEX
),enum16bit
] enum {
26 WITNESS_STATE_UNKNOWN
= 0x00,
27 WITNESS_STATE_AVAILABLE
= 0x01,
28 WITNESS_STATE_UNAVAILABLE
= 0xff
29 } witness_interfaceInfo_state
;
31 typedef [bitmap32bit
] bitmap
{
32 WITNESS_INFO_IPv4_VALID
= 0x01,
33 WITNESS_INFO_IPv6_VALID
= 0x02,
34 WITNESS_INFO_WITNESS_IF
= 0x04
35 } witness_interfaceInfo_flags
;
38 [charset
(UTF16
),to_null
] uint16 group_name
[260];
39 witness_version
version;
40 witness_interfaceInfo_state state
;
41 [flag
(NDR_BIG_ENDIAN
)] ipv4address ipv4
;
42 [flag
(NDR_BIG_ENDIAN
)] ipv6address ipv6
;
43 witness_interfaceInfo_flags flags
;
44 } witness_interfaceInfo
;
46 typedef [public] struct {
47 uint32 num_interfaces
;
48 [size_is(num_interfaces
)] witness_interfaceInfo
*interfaces
;
49 } witness_interfaceList
;
51 [public] WERROR witness_GetInterfaceList
(
52 [out] witness_interfaceList
**interface_list
58 [public] WERROR witness_Register
(
59 [out,ref] policy_handle
*context_handle,
60 [in] witness_version
version,
61 [in,unique,string,charset
(UTF16
)] uint16
*net_name
,
62 [in,unique,string,charset
(UTF16
)] uint16
*ip_address
,
63 [in,unique,string,charset
(UTF16
)] uint16
*client_computer_name
69 [public] WERROR witness_UnRegister
(
70 [in] policy_handle
context_handle
76 typedef [v1_enum,public] enum {
77 WITNESS_NOTIFY_RESOURCE_CHANGE
= 1,
78 WITNESS_NOTIFY_CLIENT_MOVE
= 2,
79 WITNESS_NOTIFY_SHARE_MOVE
= 3,
80 WITNESS_NOTIFY_IP_CHANGE
= 4
81 } witness_notifyResponse_type
;
83 typedef [flag
(NDR_PAHEX
),v1_enum] enum {
84 WITNESS_RESOURCE_STATE_UNKNOWN
= 0x00,
85 WITNESS_RESOURCE_STATE_AVAILABLE
= 0x01,
86 WITNESS_RESOURCE_STATE_UNAVAILABLE
= 0xff
87 } witness_ResourceChange_type
;
89 typedef [flag
(NDR_NOALIGN|NDR_LITTLE_ENDIAN
),gensize
,public] struct {
90 [value
(ndr_size_witness_ResourceChange
(r
,ndr
->flags
))] uint32 length
;
91 witness_ResourceChange_type type
;
93 } witness_ResourceChange
;
95 typedef [bitmap32bit
] bitmap
{
96 WITNESS_IPADDR_V4
= 0x01,
97 WITNESS_IPADDR_V6
= 0x02,
98 WITNESS_IPADDR_ONLINE
= 0x08,
99 WITNESS_IPADDR_OFFLINE
= 0x10
100 } witness_IPaddrInfo_flags
;
102 typedef [flag
(NDR_NOALIGN|NDR_LITTLE_ENDIAN
)] struct {
103 witness_IPaddrInfo_flags flags
;
104 [flag
(NDR_BIG_ENDIAN
)] ipv4address ipv4
;
105 [flag
(NDR_BIG_ENDIAN
)] ipv6address ipv6
;
106 } witness_IPaddrInfo
;
108 typedef [public,flag
(NDR_NOALIGN|NDR_LITTLE_ENDIAN
),gensize
] struct {
109 [value
(ndr_size_witness_IPaddrInfoList
(r
, ndr
->flags
))] uint32 length
;
110 [value
(0)] uint32 reserved
;
112 witness_IPaddrInfo addr
[num
];
113 } witness_IPaddrInfoList
;
115 typedef [public,switch_type(witness_notifyResponse_type
),nodiscriminant
, flag
(NDR_NOALIGN|NDR_LITTLE_ENDIAN
)] union {
116 [case(WITNESS_NOTIFY_RESOURCE_CHANGE
)] witness_ResourceChange resource_change
;
117 [case(WITNESS_NOTIFY_CLIENT_MOVE
)] witness_IPaddrInfoList client_move
;
118 [case(WITNESS_NOTIFY_SHARE_MOVE
)] witness_IPaddrInfoList share_move
;
119 [case(WITNESS_NOTIFY_IP_CHANGE
)] witness_IPaddrInfoList ip_change
;
120 [default,flag
(NDR_REMAINING
)] DATA_BLOB data
;
121 } witness_notifyResponse_message
;
123 typedef [flag
(NDR_PAHEX
),gensize
,public,nopush
,nopull
] struct {
124 witness_notifyResponse_type type
;
125 [value
(ndr_size_witness_notifyResponse
(r
, ndr
->flags
)-20)] uint32 length
;
127 [subcontext
(4), subcontext_size
(length
), flag
(NDR_REMAINING
), switch_is(type
), size_is(num
)] witness_notifyResponse_message
*messages
;
128 } witness_notifyResponse
;
130 [public] WERROR witness_AsyncNotify
(
131 [in] policy_handle
context_handle,
132 [out] witness_notifyResponse
**response
138 typedef [bitmap32bit
,public] bitmap
{
139 WITNESS_REGISTER_NONE
= 0x00,
140 WITNESS_REGISTER_IP_NOTIFICATION
= 0x01
141 } witness_RegisterEx_flags
;
143 WERROR witness_RegisterEx
(
144 [out,ref] policy_handle
*context_handle,
145 [in] witness_version
version,
146 [in,unique,string,charset
(UTF16
)] uint16
*net_name
,
147 [in,unique,string,charset
(UTF16
)] uint16
*share_name
,
148 [in,unique,string,charset
(UTF16
)] uint16
*ip_address
,
149 [in,unique,string,charset
(UTF16
)] uint16
*client_computer_name
,
150 [in] witness_RegisterEx_flags flags
,