mirror of
https://github.com/samba-team/samba.git
synced 2025-01-11 05:18:09 +03:00
c6774989e0
See [MS-SWN] for the details. Pair-Programmed-With: Gregor Beck <gbeck@sernet.de> Signed-off-by: Gregor Beck <gbeck@sernet.de> Signed-off-by: Stefan Metzmacher <metze@samba.org> Reviewed-by: Guenther Deschner <gd@samba.org>
111 lines
2.7 KiB
Plaintext
111 lines
2.7 KiB
Plaintext
#include "idl_types.h"
|
|
|
|
import "misc.idl";
|
|
|
|
[
|
|
uuid("ccd8c074-d0e5-4a40-92b4-d074faa6ba28"),
|
|
version(1.1),
|
|
pointer_default(unique),
|
|
helpstring("SMB Witness Service"),
|
|
endpoint("ncacn_ip_tcp:")
|
|
]
|
|
interface witness
|
|
{
|
|
typedef [v1_enum] enum {
|
|
WITNESS_V1 = 0x00010001,
|
|
WITNESS_V2 = 0x00020000
|
|
} witness_version;
|
|
|
|
/*****************/
|
|
/* Function 0x00 */
|
|
|
|
typedef [enum16bit] enum {
|
|
WITNESS_STATE_UNKNOWN = 0x00,
|
|
WITNESS_STATE_AVAILABLE = 0x01,
|
|
WITNESS_STATE_UNAVAILABLE = 0xff
|
|
} witness_interfaceInfo_state;
|
|
|
|
typedef [bitmap32bit] bitmap {
|
|
WITNESS_INFO_IPv4_VALID = 0x01,
|
|
WITNESS_INFO_IPv6_VALID = 0x02,
|
|
WITNESS_INFO_WITNESS_IF = 0x04
|
|
} witness_interfaceInfo_flags;
|
|
|
|
typedef struct {
|
|
[charset(UTF16),to_null] uint16 group_name[260];
|
|
witness_version version;
|
|
witness_interfaceInfo_state state;
|
|
[flag(NDR_BIG_ENDIAN)] ipv4address ipv4;
|
|
[flag(NDR_BIG_ENDIAN)] ipv6address ipv6;
|
|
witness_interfaceInfo_flags flags;
|
|
} witness_interfaceInfo;
|
|
|
|
typedef struct {
|
|
uint32 num_interfaces;
|
|
[size_is(num_interfaces)] witness_interfaceInfo *interfaces;
|
|
} witness_interfaceList;
|
|
|
|
WERROR witness_GetInterfaceList(
|
|
[out] witness_interfaceList **interface_list
|
|
);
|
|
|
|
/*****************/
|
|
/* Function 0x01 */
|
|
|
|
WERROR witness_Register(
|
|
[out,ref] policy_handle *context_handle,
|
|
[in] witness_version version,
|
|
[in,unique,string,charset(UTF16)] uint16 *net_name,
|
|
[in,unique,string,charset(UTF16)] uint16 *ip_address,
|
|
[in,unique,string,charset(UTF16)] uint16 *client_computer_name
|
|
);
|
|
|
|
/*****************/
|
|
/* Function 0x02 */
|
|
|
|
WERROR witness_UnRegister(
|
|
[in] policy_handle context_handle
|
|
);
|
|
|
|
/*****************/
|
|
/* Function 0x03 */
|
|
|
|
typedef [v1_enum] enum {
|
|
WITNESS_NOTIFY_RESOURCE_CHANGE = 1,
|
|
WITNESS_NOTIFY_CLIENT_MOVE = 2,
|
|
WITNESS_NOTIFY_SHARE_MOVE = 3,
|
|
WITNESS_NOTIFY_IP_CHANGE = 4
|
|
} witness_notifyResponse_type;
|
|
|
|
typedef struct {
|
|
witness_notifyResponse_type message_type;
|
|
uint32 length;
|
|
uint32 num_messages;
|
|
[size_is(length)] uint8 *message_buffer;
|
|
} witness_notifyResponse;
|
|
|
|
WERROR witness_AsyncNotify(
|
|
[in] policy_handle context_handle,
|
|
[out] witness_notifyResponse **response
|
|
);
|
|
|
|
/*****************/
|
|
/* Function 0x04 */
|
|
|
|
typedef [bitmap32bit] bitmap {
|
|
WITNESS_REGISTER_NONE = 0x00,
|
|
WITNESS_REGISTER_IP_NOTIFICATION = 0x01
|
|
} witness_RegisterEx_flags;
|
|
|
|
WERROR witness_RegisterEx(
|
|
[out,ref] policy_handle *context_handle,
|
|
[in] witness_version version,
|
|
[in,unique,string,charset(UTF16)] uint16 *net_name,
|
|
[in,unique,string,charset(UTF16)] uint16 *share_name,
|
|
[in,unique,string,charset(UTF16)] uint16 *ip_address,
|
|
[in,unique,string,charset(UTF16)] uint16 *client_computer_name,
|
|
[in] witness_RegisterEx_flags flags,
|
|
[in] uint32 timeout
|
|
);
|
|
}
|