diff options
Diffstat (limited to '')
-rw-r--r-- | source4/librpc/idl/winsif.idl | 342 |
1 files changed, 342 insertions, 0 deletions
diff --git a/source4/librpc/idl/winsif.idl b/source4/librpc/idl/winsif.idl new file mode 100644 index 0000000..1ca028a --- /dev/null +++ b/source4/librpc/idl/winsif.idl @@ -0,0 +1,342 @@ +#include "idl_types.h" + +import "nbt.idl"; + +[ + uuid("45f52c28-7f9f-101a-b52b-08002b2efabe"), + version(1.0), + helpstring("WINS Administration Interface1"), + helper("../libcli/nbt/libnbt.h"), + pointer_default(unique) +] interface winsif +{ + /*****************/ + /* Function 0x00 */ + typedef struct { + uint8 type; + uint32 length; + ipv4address addr; + } winsif_Address; + + typedef enum { + WINSIF_ACTION_INSERT = 0x0000, + WINSIF_ACTION_DELETE = 0x0001, + WINSIF_ACTION_RELEASE = 0x0002, + WINSIF_ACTION_MODIFY = 0x0003, + WINSIF_ACTION_QUERY = 0x0004 + } winsif_Action; + + typedef enum { + WINSIF_RECORD_UNIQUE_NAME = 0x0000, + WINSIF_RECORD_GROUP_NAME = 0x0001, + WINSIF_RECORD_SGROUP_NAME = 0x0002, + WINSIF_RECORD_MHOMED_NAME = 0x0003 + } winsif_RecordType; + + typedef [enum8bit] enum { + WINSIF_NODE_B = 0x00, + WINSIF_NODE_P = 0x01, + WINSIF_NODE_H = 0x03 + } winsif_NodeType; + + typedef [v1_enum] enum { + WINSIF_RECORD_ACTIVE = 0x00000000, + WINSIF_RECORD_RELEASED = 0x00000001, + WINSIF_RECORD_TOMBSTONE = 0x00000002, + WINSIF_RECORD_DELETED = 0x00000003 + } winsif_RecordState; + + typedef struct { + winsif_Action cmd; + wrepl_nbt_name *name; + [value(name?16:0)] uint32 name_len; + winsif_RecordType record_type; + uint32 num_of_addresses; + [size_is(num_of_addresses)] winsif_Address *addresses; + winsif_Address address; + hyper version_number; + winsif_NodeType node_type; + ipv4address owner_address; + winsif_RecordState record_state; + boolean32 is_static; + time_t expire_time; + } winsif_RecordAction; + + WERROR winsif_WinsRecordAction( + [in,out,ref] winsif_RecordAction **record_action + ); + + /*****************/ + /* Function 0x01 */ + typedef struct { + winsif_Address address; + hyper version_number; + } winsif_AddressVersionMap; + + typedef enum { + WINSIF_PRIORITY_NORMAL = 0x0000, + WINSIF_PRIORITY_HIGH = 0x0001 + } winsif_PriorityClass; + + typedef struct { + winsif_Address address; + uint32 num_replications; + uint32 num_communication_failures; + } winsif_ReplCounter; + + typedef struct { + uint32 num_unique_registrations; + uint32 num_group_registrations; + uint32 num_queries; + uint32 num_successful_queries; + uint32 num_failed_queries; + uint32 num_unique_refreshes; + uint32 num_group_refreshes; + uint32 num_releases; + uint32 num_successful_releases; + uint32 num_failed_releases; + uint32 num_unique_conflicts; + uint32 num_group_conflicts; + } winsif_StatCounters; + + typedef struct { + time_t wins_start_time; + time_t last_periodic_scavenging; + time_t last_triggered_scavenging; + time_t last_tombstone_scavenging; + time_t last_verification_scavenging; + time_t last_periodic_pull_replication; + time_t last_triggered_pull_replication; + time_t ignore_last_ntrepl; + time_t ignore_last_actrepl; + time_t last_init_db; + time_t counter_reset; + } winsif_StatTimeStamps; + + typedef struct { + winsif_StatCounters counters; + winsif_StatTimeStamps time_stamps; + uint32 num_partners; + [size_is(num_partners)] winsif_ReplCounter *partners; + } winsif_Stat; + + typedef struct { + uint32 num_owners; + winsif_AddressVersionMap address_version_maps[25]; + hyper my_max_version_number; + uint32 refresh_interval; + uint32 tombstone_interval; + uint32 tombstone_timeout; + uint32 verify_interval; + winsif_PriorityClass prioritiy_class; + uint32 num_worker_threads; + winsif_Stat wstat; + } winsif_Results; + + typedef enum { + WINSIF_STATUS_CMD_ADDRESS_VERSION_MAP = 0x0000, + WINSIF_STATUS_CMD_CONFIG = 0x0001, + WINSIF_STATUS_CMD_STAT = 0x0002, + WINSIF_STATUS_CMD_ALL_MAPS = 0x0003 + } winsif_StatusCmd; + + WERROR winsif_WinsStatus( + [in] winsif_StatusCmd cmd, + [in,out,ref] winsif_Results *results + ); + + /*****************/ + /* Function 0x02 */ + typedef enum { + WINSIF_TRIGGER_PULL = 0x0000, + WINSIF_TRIGGER_PUSH = 0x0001, + WINSIF_TRIGGER_PUSH_PROP= 0x0002 + } winsif_TriggerType; + + WERROR winsif_WinsTrigger( + [in,ref] winsif_Address *owner_address, + [in] winsif_TriggerType trigger_type + ); + + /*****************/ + /* Function 0x03 */ + WERROR winsif_WinsDoStaticInit( + [in,unique,string,charset(UTF16)] uint16 *data_file_path, + [in] boolean32 delete_file + ); + + /*****************/ + /* Function 0x04 */ + WERROR winsif_WinsDoScavenging(); + + /*****************/ + /* Function 0x05 */ + typedef struct { + uint32 buffer_size; + [size_is(num_records)] winsif_RecordAction *row; + uint32 num_records; + uint32 total_num_records; + } winsif_Records; + + WERROR winsif_WinsGetDbRecs( + [in,unique] winsif_Address *owner_address, + [in] hyper min_version_number, + [in] hyper max_version_number, + [out,ref] winsif_Records *records + ); + + /*****************/ + /* Function 0x06 */ + WERROR winsif_WinsTerm( + [in] uint16 abrupt_termination + ); + + /*****************/ + /* Function 0x07 */ + WERROR winsif_WinsBackup( + [in,ref,string,charset(DOS)] uint8 *backup_path, + [in] uint16 incremental + ); + + /*****************/ + /* Function 0x08 */ + WERROR winsif_WinsDelDbRecs( + [in,ref] winsif_Address *owner_address, + [in] hyper min_version_number, + [in] hyper max_version_number + ); + + /*****************/ + /* Function 0x09 */ + WERROR winsif_WinsPullRange( + [in,ref] winsif_Address *server_address, + [in,ref] winsif_Address *owner_address, + [in] hyper min_version_number, + [in] hyper max_version_number + ); + + /*****************/ + /* Function 0x0A */ + WERROR winsif_WinsSetPriorityClass( + [in] winsif_PriorityClass prioritiy_class + ); + + /*****************/ + /* Function 0x0B */ + WERROR winsif_WinsResetCounters(); + + /*****************/ + /* Function 0x0C */ + WERROR winsif_WinsWorkerThreadUpdate( + [in] uint32 num_of_threads + ); + + /*****************/ + /* Function 0x0D */ + WERROR winsif_WinsGetNameAndAdd( + [out,ref] winsif_Address *server_address, + /* + * TODO: fix pidl to handles this completly correct... + * currently it gives a warning about a missing pointer. + */ + [out,ref,string,charset(DOS),size_is(80)] uint8 *unc_name + ); + + /*****************/ + /* Function 0x0E */ + typedef struct { + uint32 name_len; + [string,charset(DOS)] uint8 *name; + } winsif_BrowserInfo; + + typedef struct { + uint32 num_entries; + [size_is(num_entries)] winsif_BrowserInfo *info; + } winsif_BrowserNames; + + WERROR winsif_WinsGetBrowserNames_Old( + [out,ref] winsif_BrowserNames *names + ); + + /*****************/ + /* Function 0x0F */ + WERROR winsif_WinsDeleteWins( + [in,ref] winsif_Address *owner_address + ); + + /*****************/ + /* Function 0x10 */ + WERROR winsif_WinsSetFlags( + [in] uint32 flags + ); + + /*****************/ + /* Function 0x11 */ + typedef struct { + boolean32 tcp_ip; + [string,charset(DOS)] uint8 *server_address; + [string,charset(DOS)] uint8 *pipe_name; + } winsif_BindData; + + WERROR winsif_WinsGetBrowserNames( + [in,ref] winsif_BindData *server_handle, + [out,ref] winsif_BrowserNames *names + ); + + /*****************/ + /* Function 0x12 */ + WERROR winsif_WinsGetDbRecsByName( + [in,unique] winsif_Address *owner_address, + [in] boolean32 search_backward, + [in,unique] wrepl_nbt_name *name, + [in,value(name?16:0),range(0,16)] uint32 name_len, + [in] uint32 num_records_desired, + [in] boolean32 only_statics, + [out,ref] winsif_Records *records + ); + + /*****************/ + /* Function 0x13 */ + typedef struct { + uint32 num_owners; + [size_is(num_owners)] winsif_AddressVersionMap *address_version_maps; + hyper my_max_version_number; + uint32 refresh_interval; + uint32 tombstone_interval; + uint32 tombstone_timeout; + uint32 verify_interval; + winsif_PriorityClass prioritiy_class; + uint32 num_worker_threads; + winsif_Stat wstat; + } winsif_ResultsNew; + + WERROR winsif_WinsStatusNew( + [in] winsif_StatusCmd cmd, + [out,ref] winsif_ResultsNew *results + ); + + /*****************/ + /* Function 0x14 */ + WERROR winsif_WinsStatusWHdl( + [in,ref] winsif_BindData *server_handle, + [in] winsif_StatusCmd cmd, + [in,out,ref] winsif_ResultsNew *results + ); + + /*****************/ + /* Function 0x15 */ + typedef enum { + WINSIF_SCAVENGING_GENERAL = 0x0000, + WINSIF_SCAVENGING_VERIFY = 0x0001 + } winsif_ScavengingOpcode; + + typedef struct { + winsif_ScavengingOpcode opcode; + uint32 age; + boolean32 force; + } winsif_ScavengingRequest; + + WERROR winsif_WinsDoScanvengingNew( + [in,ref] winsif_ScavengingRequest *request + ); +} |