Wireshark  2.9.0-477-g68ec514b
The Wireshark network protocol analyzer
witness.idl
1 #include "idl_types.h"
2 
3 import "misc/misc.idl";
4 
5 [
6  uuid("ccd8c074-d0e5-4a40-92b4-d074faa6ba28"),
7  version(1.1),
8  pointer_default(unique),
9  helpstring("SMB Witness Service"),
10  helper("../librpc/ndr/ndr_witness.h"),
11  endpoint("ncacn_ip_tcp:")
12 ]
13 interface witness
14 {
15  typedef [v1_enum] enum {
16  WITNESS_V1 = 0x00010001,
17  WITNESS_V2 = 0x00020000,
18  WITNESS_UNSPECIFIED_VERSION = 0xFFFFFFFF
19  } witness_version;
20 
21  /*****************/
22  /* Function 0x00 */
23 
24  typedef [enum16bit] enum {
25  WITNESS_STATE_UNKNOWN = 0x00,
26  WITNESS_STATE_AVAILABLE = 0x01,
27  WITNESS_STATE_UNAVAILABLE = 0xff
28  } witness_interfaceInfo_state;
29 
30  typedef [bitmap32bit] bitmap {
31  WITNESS_INFO_IPv4_VALID = 0x01,
32  WITNESS_INFO_IPv6_VALID = 0x02,
33  WITNESS_INFO_WITNESS_IF = 0x04
34  } witness_interfaceInfo_flags;
35 
36  typedef struct {
37  [charset(UTF16),to_null] uint16 group_name[260];
38  witness_version version;
39  witness_interfaceInfo_state state;
40  [flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
41  [flag(NDR_BIG_ENDIAN)] ipv6address ipv6;
42  witness_interfaceInfo_flags flags;
44 
45  typedef struct {
46  uint32 num_interfaces;
47  [size_is(num_interfaces)] witness_interfaceInfo *interfaces;
49 
50  [public] WERROR witness_GetInterfaceList(
51  [out] witness_interfaceList **interface_list
52  );
53 
54  /*****************/
55  /* Function 0x01 */
56 
57  [public] WERROR witness_Register(
58  [out,ref] policy_handle *context_handle,
59  [in] witness_version version,
60  [in,unique,string,charset(UTF16)] uint16 *net_name,
61  [in,unique,string,charset(UTF16)] uint16 *ip_address,
62  [in,unique,string,charset(UTF16)] uint16 *client_computer_name
63  );
64 
65  /*****************/
66  /* Function 0x02 */
67 
68  [public] WERROR witness_UnRegister(
69  [in] policy_handle context_handle
70  );
71 
72  /*****************/
73  /* Function 0x03 */
74 
75  typedef [v1_enum,public] enum {
76  WITNESS_NOTIFY_RESOURCE_CHANGE = 1,
77  WITNESS_NOTIFY_CLIENT_MOVE = 2,
78  WITNESS_NOTIFY_SHARE_MOVE = 3,
79  WITNESS_NOTIFY_IP_CHANGE = 4
80  } witness_notifyResponse_type;
81 
82  typedef [v1_enum] enum {
83  WITNESS_RESOURCE_STATE_UNKNOWN = 0x00,
84  WITNESS_RESOURCE_STATE_AVAILABLE = 0x01,
85  WITNESS_RESOURCE_STATE_UNAVAILABLE = 0xff
86  } witness_ResourceChange_type;
87 
88  typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN),gensize,public] struct {
89  [value(ndr_size_witness_ResourceChange(r,ndr->flags))] uint32 length;
90  witness_ResourceChange_type type;
91  nstring name;
92  } witness_ResourceChange;
93 
94  typedef [bitmap32bit] bitmap {
95  WITNESS_IPADDR_V4 = 0x01,
96  WITNESS_IPADDR_V6 = 0x02,
97  WITNESS_IPADDR_ONLINE = 0x08,
98  WITNESS_IPADDR_OFFLINE = 0x10
99  } witness_IPaddrInfo_flags;
100 
101  typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN),gensize] struct {
102  witness_IPaddrInfo_flags flags;
103  ipv4address ipv4;
104  ipv6address ipv6;
105  } witness_IPaddrInfo;
106 
107  typedef [flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] struct {
108  [value(r->num*ndr_size_witness_IPaddrInfo(r->addr, ndr->flags))] uint32 length;
109  [value(0)] uint32 reserved;
110  uint32 num;
111  witness_IPaddrInfo addr[num];
112  } witness_IPaddrInfoList;
113 
114  typedef [public,switch_type(witness_notifyResponse_type),nodiscriminant, flag(NDR_NOALIGN|NDR_LITTLE_ENDIAN)] union {
115  [case(WITNESS_NOTIFY_RESOURCE_CHANGE)] witness_ResourceChange resource_change;
116  [case(WITNESS_NOTIFY_CLIENT_MOVE)] witness_IPaddrInfoList client_move;
117  [case(WITNESS_NOTIFY_SHARE_MOVE)] witness_IPaddrInfoList share_move;
118  [case(WITNESS_NOTIFY_IP_CHANGE)] witness_IPaddrInfoList ip_change;
119  [default,flag(NDR_REMAINING)] DATA_BLOB data;
120  } witness_notifyResponse_message;
121 
122  typedef [flag(NDR_PAHEX),gensize,public,nopush,nopull] struct {
123  witness_notifyResponse_type type;
124  [value(ndr_size_witness_notifyResponse(r, ndr->flags)-20)] uint32 length;
125  uint32 num;
126  [subcontext(4), subcontext_size(length), flag(NDR_REMAINING), switch_is(type)] witness_notifyResponse_message messages[num];
127  } witness_notifyResponse;
128 
129  [public] WERROR witness_AsyncNotify(
130  [in] policy_handle context_handle,
131  [out] witness_notifyResponse **response
132  );
133 
134  /*****************/
135  /* Function 0x04 */
136 
137  typedef [bitmap32bit] bitmap {
138  WITNESS_REGISTER_NONE = 0x00,
139  WITNESS_REGISTER_IP_NOTIFICATION = 0x01
140  } witness_RegisterEx_flags;
141 
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
151  );
152 }
Definition: netmon.c:127
Definition: witness.idl:45
Definition: conversation.c:27
Definition: witness.idl:13
Definition: witness.idl:36