/*
* Copyright (c) 2000,2001
* Traakan, Inc., Los Altos, CA
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice unmodified, this list of conditions, and the following
* disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
/*
* Project: NDMJOB
* Ident: $Id: $
*
* Description:
*
*/
/*
* ndmp4.x
*
* Description : NDMP protocol rpcgen file.
*
* Copyright (c) 1999 Intelliguard Software, Network Appliance.
* All Rights Reserved.
*
* $Id: ndmp.x,v 1.11 1998/05/26 03:52:12 tim Exp $
*/
%#ifndef NDMOS_OPTION_NO_NDMP4
const NDMP4VER = 4;
const NDMP4PORT = 10000;
%#define ndmp4_u_quad unsigned long long
%extern bool_t xdr_ndmp4_u_quad();
struct _ndmp4_u_quad
{
u_long high;
u_long low;
};
enum ndmp4_header_message_type
{
NDMP4_MESSAGE_REQUEST,
NDMP4_MESSAGE_REPLY
};
const NDMP4_MESSAGE_POST = NDMP4_MESSAGE_REQUEST;
/* Note: because of extensibility, this is */
/* Not a complete list of errors. */
enum ndmp4_error {
NDMP4_NO_ERR = 0,
NDMP4_NOT_SUPPORTED_ERR = 1,
NDMP4_DEVICE_BUSY_ERR = 2,
NDMP4_DEVICE_OPENED_ERR = 3,
NDMP4_NOT_AUTHORIZED_ERR = 4,
NDMP4_PERMISSION_ERR = 5,
NDMP4_DEV_NOT_OPEN_ERR = 6,
NDMP4_IO_ERR = 7,
NDMP4_TIMEOUT_ERR = 8,
NDMP4_ILLEGAL_ARGS_ERR = 9,
NDMP4_NO_TAPE_LOADED_ERR = 10,
NDMP4_WRITE_PROTECT_ERR = 11,
NDMP4_EOF_ERR = 12,
NDMP4_EOM_ERR = 13,
NDMP4_FILE_NOT_FOUND_ERR = 14,
NDMP4_BAD_FILE_ERR = 15,
NDMP4_NO_DEVICE_ERR = 16,
NDMP4_NO_BUS_ERR = 17,
NDMP4_XDR_DECODE_ERR = 18,
NDMP4_ILLEGAL_STATE_ERR = 19,
NDMP4_UNDEFINED_ERR = 20,
NDMP4_XDR_ENCODE_ERR = 21,
NDMP4_NO_MEM_ERR = 22,
NDMP4_CONNECT_ERR = 23,
NDMP4_SEQUENCE_NUM_ERR = 24,
NDMP4_READ_IN_PROGRESS_ERR = 25,
NDMP4_PRECONDITION_ERR = 26,
NDMP4_CLASS_NOT_SUPPORTED = 27,
NDMP4_VERSION_NOT_SUPPORTED = 28,
NDMP4_EXT_DUPL_CLASSES = 29,
NDMP4_EXT_DN_ILLEGAL = 30
};
/* Note: Because of extensibility, this */
/* is not a complete list of messages */
enum ndmp4_message {
/* CONNECT INTERFACE */
NDMP4_CONNECT_OPEN = 0x900,
NDMP4_CONNECT_CLIENT_AUTH = 0x901,
NDMP4_CONNECT_CLOSE = 0x902,
NDMP4_CONNECT_SERVER_AUTH = 0x903,
/* CONFIG INTERFACE */
NDMP4_CONFIG_GET_HOST_INFO = 0x100,
NDMP4_CONFIG_GET_CONNECTION_TYPE = 0x102,
NDMP4_CONFIG_GET_AUTH_ATTR = 0x103,
NDMP4_CONFIG_GET_BUTYPE_INFO = 0x104,
NDMP4_CONFIG_GET_FS_INFO = 0x105,
NDMP4_CONFIG_GET_TAPE_INFO = 0x106,
NDMP4_CONFIG_GET_SCSI_INFO = 0x107,
NDMP4_CONFIG_GET_SERVER_INFO = 0x108,
NDMP4_CONFIG_SET_EXT_LIST = 0x109,
NDMP4_CONFIG_GET_EXT_LIST = 0x10A,
/* SCSI INTERFACE */
NDMP4_SCSI_OPEN = 0x200,
NDMP4_SCSI_CLOSE = 0x201,
NDMP4_SCSI_GET_STATE = 0x202,
NDMP4_SCSI_RESET_DEVICE = 0x204,
NDMP4_SCSI_EXECUTE_CDB = 0x206,
/* TAPE INTERFACE */
NDMP4_TAPE_OPEN = 0x300,
NDMP4_TAPE_CLOSE = 0x301,
NDMP4_TAPE_GET_STATE = 0x302,
NDMP4_TAPE_MTIO = 0x303,
NDMP4_TAPE_WRITE = 0x304,
NDMP4_TAPE_READ = 0x305,
NDMP4_TAPE_EXECUTE_CDB = 0x307,
/* DATA INTERFACE */
NDMP4_DATA_GET_STATE = 0x400,
NDMP4_DATA_START_BACKUP = 0x401,
NDMP4_DATA_START_RECOVER = 0x402,
NDMP4_DATA_ABORT = 0x403,
NDMP4_DATA_GET_ENV = 0x404,
NDMP4_DATA_STOP = 0x407,
NDMP4_DATA_LISTEN = 0x409,
NDMP4_DATA_CONNECT = 0x40A,
NDMP4_DATA_START_RECOVER_FILEHIST = 0x40B,
/* NOTIFY INTERFACE */
NDMP4_NOTIFY_DATA_HALTED = 0x501,
NDMP4_NOTIFY_CONNECTION_STATUS = 0x502,
NDMP4_NOTIFY_MOVER_HALTED = 0x503,
NDMP4_NOTIFY_MOVER_PAUSED = 0x504,
NDMP4_NOTIFY_DATA_READ = 0x505,
/* LOGGING INTERFACE */
NDMP4_LOG_FILE = 0x602,
NDMP4_LOG_MESSAGE = 0x603,
/* FILE HISTORY INTERFACE */
NDMP4_FH_ADD_FILE = 0x703,
NDMP4_FH_ADD_DIR = 0x704,
NDMP4_FH_ADD_NODE = 0x705,
/* MOVER INTERFACE */
NDMP4_MOVER_GET_STATE = 0xA00,
NDMP4_MOVER_LISTEN = 0xA01,
NDMP4_MOVER_CONTINUE = 0xA02,
NDMP4_MOVER_ABORT = 0xA03,
NDMP4_MOVER_STOP = 0xA04,
NDMP4_MOVER_SET_WINDOW = 0xA05,
NDMP4_MOVER_READ = 0xA06,
NDMP4_MOVER_CLOSE = 0xA07,
NDMP4_MOVER_SET_RECORD_SIZE = 0xA08,
NDMP4_MOVER_CONNECT = 0xA09,
/* EXTENSIBILITY */
/* Reserved for Standard extensions */
NDMP4_EXT_STANDARD_BASE = 0x10000,
/* Reserved for Proprietary extensions */
NDMP4_EXT_PROPRIETARY_BASE = 0x20000000
};
struct ndmp4_header
{
u_long sequence;
u_long time_stamp;
ndmp4_header_message_type message_type;
ndmp4_message message_code;
u_long reply_sequence;
ndmp4_error error_code;
};
struct ndmp4_pval
{
string name<>;
string value<>;
};
/* Connect messages */
struct ndmp4_connect_open_request
{
u_short protocol_version;
};
struct ndmp4_connect_open_reply
{
ndmp4_error error;
};
enum ndmp4_auth_type
{
NDMP4_AUTH_NONE=0,
NDMP4_AUTH_TEXT=1,
NDMP4_AUTH_MD5=2
};
struct ndmp4_auth_text
{
string auth_id<>;
string auth_password<>;
};
struct ndmp4_auth_md5
{
string auth_id<>;
opaque auth_digest[16];
};
union ndmp4_auth_data switch (enum ndmp4_auth_type auth_type)
{
case NDMP4_AUTH_NONE:
void;
case NDMP4_AUTH_TEXT:
struct ndmp4_auth_text auth_text;
case NDMP4_AUTH_MD5:
struct ndmp4_auth_md5 auth_md5;
};
union ndmp4_auth_attr switch (enum ndmp4_auth_type auth_type)
{
case NDMP4_AUTH_NONE:
void;
case NDMP4_AUTH_TEXT:
void;
case NDMP4_AUTH_MD5:
opaque challenge[64];
};
struct ndmp4_connect_client_auth_request
{
ndmp4_auth_data auth_data;
};
struct ndmp4_connect_client_auth_reply
{
ndmp4_error error;
};
struct ndmp4_connect_server_auth_request
{
ndmp4_auth_attr client_attr;
};
struct ndmp4_connect_server_auth_reply
{
ndmp4_error error;
ndmp4_auth_data server_result;
};
struct ndmp4_config_get_host_info_reply
{
ndmp4_error error;
string hostname<>;
string os_type<>;
string os_vers<>;
string hostid<>;
};
struct ndmp4_config_get_server_info_reply
{
ndmp4_error error;
string vendor_name<>;
string product_name<>;
string revision_number<>;
ndmp4_auth_type auth_type<>;
};
enum ndmp4_addr_type
{
NDMP4_ADDR_LOCAL=0,
NDMP4_ADDR_TCP=1,
NDMP4_ADDR_RESERVED=2,
NDMP4_ADDR_IPC=3
};
struct ndmp4_config_get_connection_type_reply
{
ndmp4_error error;
ndmp4_addr_type addr_types<>;
};
struct ndmp4_config_get_auth_attr_request
{
ndmp4_auth_type auth_type;
};
struct ndmp4_config_get_auth_attr_reply
{
ndmp4_error error;
ndmp4_auth_attr server_attr;
};
const NDMP4_BUTYPE_BACKUP_FILELIST = 0x0002;
const NDMP4_BUTYPE_RECOVER_FILELIST = 0x0004;
const NDMP4_BUTYPE_BACKUP_DIRECT = 0x0008;
const NDMP4_BUTYPE_RECOVER_DIRECT = 0x0010;
const NDMP4_BUTYPE_BACKUP_INCREMENTAL = 0x0020;
const NDMP4_BUTYPE_RECOVER_INCREMENTAL = 0x0040;
const NDMP4_BUTYPE_BACKUP_UTF8 = 0x0080;
const NDMP4_BUTYPE_RECOVER_UTF8 = 0x0100;
const NDMP4_BUTYPE_BACKUP_FH_FILE = 0x0200;
const NDMP4_BUTYPE_BACKUP_FH_DIR = 0x0400;
const NDMP4_BUTYPE_RECOVER_FILEHIST = 0x0800;
const NDMP4_BUTYPE_RECOVER_FH_FILE = 0x1000;
const NDMP4_BUTYPE_RECOVER_FH_DIR = 0x2000;
struct ndmp4_butype_info
{
string butype_name<>;
ndmp4_pval default_env<>;
u_long attrs;
};
struct ndmp4_config_get_butype_info_reply
{
ndmp4_error error;
ndmp4_butype_info butype_info<>;
};
const NDMP4_FS_INFO_TOTAL_SIZE_UNS = 0x00000001;
const NDMP4_FS_INFO_USED_SIZE_UNS = 0x00000002;
const NDMP4_FS_INFO_AVAIL_SIZE_UNS = 0x00000004;
const NDMP4_FS_INFO_TOTAL_INODES_UNS = 0x00000008;
const NDMP4_FS_INFO_USED_INODES_UNS = 0x00000010;
struct ndmp4_fs_info
{
u_long unsupported;
string fs_type<>;
string fs_logical_device<>;
string fs_physical_device<>;
ndmp4_u_quad total_size;
ndmp4_u_quad used_size;
ndmp4_u_quad avail_size;
ndmp4_u_quad total_inodes;
ndmp4_u_quad used_inodes;
ndmp4_pval fs_env<>;
string fs_status<>;
};
struct ndmp4_config_get_fs_info_reply
{
ndmp4_error error;
ndmp4_fs_info fs_info<>;
};
const NDMP4_TAPE_ATTR_REWIND = 0x00000001;
const NDMP4_TAPE_ATTR_UNLOAD = 0x00000002;
const NDMP4_TAPE_ATTR_RAW = 0x00000004;
struct ndmp4_device_capability
{
string device<>;
u_long attr;
ndmp4_pval capability<>;
};
struct ndmp4_device_info
{
string model<>;
ndmp4_device_capability caplist<>;
};
struct ndmp4_config_get_tape_info_reply
{
ndmp4_error error;
ndmp4_device_info tape_info<>;
};
struct ndmp4_config_get_scsi_info_reply
{
ndmp4_error error;
ndmp4_device_info scsi_info<>;
};
struct ndmp4_class_list
{
u_short class_id;
u_short class_version<>;
};
struct ndmp4_class_version
{
u_short class_id;
u_short class_version;
};
struct ndmp4_config_get_ext_list_reply
{
ndmp4_error error;
ndmp4_class_list class_list<>;
};
struct ndmp4_config_set_ext_list_request
{
ndmp4_error error;
ndmp4_class_list ndmp4_accepted_ext<>;
};
struct ndmp4_config_set_ext_list_reply
{
ndmp4_error error;
};
struct ndmp4_scsi_open_request
{
string device<>;
};
struct ndmp4_scsi_open_reply
{
ndmp4_error error;
};
struct ndmp4_scsi_close_reply
{
ndmp4_error error;
};
struct ndmp4_scsi_get_state_reply
{
ndmp4_error error;
short target_controller;
short target_id;
short target_lun;
};
struct ndmp4_scsi_reset_device_reply
{
ndmp4_error error;
};
const NDMP4_SCSI_DATA_IN = 0x00000001;
const NDMP4_SCSI_DATA_OUT = 0x00000002;
struct ndmp4_execute_cdb_request
{
u_long flags;
u_long timeout;
u_long datain_len;
opaque cdb<>;
opaque dataout<>;
};
struct ndmp4_execute_cdb_reply
{
ndmp4_error error;
u_char status;
u_long dataout_len;
opaque datain<>;
opaque ext_sense<>;
};
typedef ndmp4_execute_cdb_request ndmp4_scsi_execute_cdb_request;
typedef ndmp4_execute_cdb_reply ndmp4_scsi_execute_cdb_reply;
enum ndmp4_tape_open_mode
{
NDMP4_TAPE_READ_MODE = 0,
NDMP4_TAPE_RDWR_MODE = 1,
NDMP4_TAPE_RAW_MODE = 2
};
struct ndmp4_tape_open_request {
string device<>;
ndmp4_tape_open_mode mode;
};
struct ndmp4_tape_open_reply {
ndmp4_error error;
};
struct ndmp4_tape_close_reply
{
ndmp4_error error;
};
/* flags */
const NDMP4_TAPE_STATE_NOREWIND = 0x0008; /* non-rewind device */
const NDMP4_TAPE_STATE_WR_PROT = 0x0010; /* write-protected */
const NDMP4_TAPE_STATE_ERROR = 0x0020; /* media error */
const NDMP4_TAPE_STATE_UNLOAD = 0x0040; /* tape unloaded upon
close */
/* unsupported bits */
const NDMP4_TAPE_STATE_FILE_NUM_UNS = 0x00000001;
const NDMP4_TAPE_STATE_SOFT_ERRORS_UNS = 0x00000002;
const NDMP4_TAPE_STATE_BLOCK_SIZE_UNS = 0x00000004;
const NDMP4_TAPE_STATE_BLOCKNO_UNS = 0x00000008;
const NDMP4_TAPE_STATE_TOTAL_SPACE_UNS = 0x00000010;
const NDMP4_TAPE_STATE_SPACE_REMAIN_UNS = 0x00000020;
struct ndmp4_tape_get_state_reply
{
u_long unsupported;
ndmp4_error error;
u_long flags;
u_long file_num;
u_long soft_errors;
u_long block_size;
u_long blockno;
ndmp4_u_quad total_space;
ndmp4_u_quad space_remain;
};
enum ndmp4_tape_mtio_op
{
NDMP4_MTIO_FSF=0,
NDMP4_MTIO_BSF=1,
NDMP4_MTIO_FSR=2,
NDMP4_MTIO_BSR=3,
NDMP4_MTIO_REW=4,
NDMP4_MTIO_EOF=5,
NDMP4_MTIO_OFF=6,
NDMP4_MTIO_TUR=7
};
struct ndmp4_tape_mtio_request
{
ndmp4_tape_mtio_op tape_op;
u_long count;
};
struct ndmp4_tape_mtio_reply
{
ndmp4_error error;
u_long resid_count;
};
struct ndmp4_tape_write_request
{
opaque data_out<>;
};
struct ndmp4_tape_write_reply
{
ndmp4_error error;
u_long count;
};
struct ndmp4_tape_read_request
{
u_long count;
};
struct ndmp4_tape_read_reply
{
ndmp4_error error;
opaque data_in<>;
};
typedef ndmp4_scsi_execute_cdb_request ndmp4_tape_execute_cdb_request;
typedef ndmp4_scsi_execute_cdb_reply ndmp4_tape_execute_cdb_reply;
enum ndmp4_data_operation
{
NDMP4_DATA_OP_NOACTION = 0,
NDMP4_DATA_OP_BACKUP = 1,
NDMP4_DATA_OP_RECOVER = 2,
NDMP4_DATA_OP_RECOVER_FILEHIST = 3
};
enum ndmp4_data_state
{
NDMP4_DATA_STATE_IDLE=0,
NDMP4_DATA_STATE_ACTIVE=1,
NDMP4_DATA_STATE_HALTED=2,
NDMP4_DATA_STATE_LISTEN=3,
NDMP4_DATA_STATE_CONNECTED=4
};
enum ndmp4_data_halt_reason
{
NDMP4_DATA_HALT_NA=0,
NDMP4_DATA_HALT_SUCCESSFUL=1,
NDMP4_DATA_HALT_ABORTED=2,
NDMP4_DATA_HALT_INTERNAL_ERROR=3,
NDMP4_DATA_HALT_CONNECT_ERROR=4
};
/* ndmp4_addr */
struct ndmp4_tcp_addr
{
u_long ip_addr;
u_short port;
ndmp4_pval addr_env<>;
};
struct ndmp4_ipc_addr
{
opaque comm_data<>;
};
union ndmp4_addr switch (ndmp4_addr_type addr_type)
{
case NDMP4_ADDR_LOCAL:
void;
case NDMP4_ADDR_TCP:
ndmp4_tcp_addr tcp_addr<>;
case NDMP4_ADDR_IPC:
ndmp4_ipc_addr ipc_addr;
};
/* unsupported bitmask bits */
const NDMP4_DATA_STATE_EST_BYTES_REMAIN_UNS = 0x00000001;
const NDMP4_DATA_STATE_EST_TIME_REMAIN_UNS = 0x00000002;
struct ndmp4_data_get_state_reply
{
u_long unsupported;
ndmp4_error error;
ndmp4_data_operation operation;
ndmp4_data_state state;
ndmp4_data_halt_reason halt_reason;
ndmp4_u_quad bytes_processed;
ndmp4_u_quad est_bytes_remain;
u_long est_time_remain;
ndmp4_addr data_connection_addr;
ndmp4_u_quad read_offset;
ndmp4_u_quad read_length;
};
struct ndmp4_data_listen_request
{
ndmp4_addr_type addr_type;
};
struct ndmp4_data_listen_reply
{
ndmp4_error error;
ndmp4_addr connect_addr;
};
struct ndmp4_data_connect_request
{
ndmp4_addr addr;
};
struct ndmp4_data_connect_reply
{
ndmp4_error error;
};
struct ndmp4_data_start_backup_request
{
string butype_name<>;
ndmp4_pval env<>;
};
struct ndmp4_data_start_backup_reply
{
ndmp4_error error;
};
struct ndmp4_name
{
string original_path<>;
string destination_path<>;
string name<>;
string other_name<>;
ndmp4_u_quad node;
ndmp4_u_quad fh_info;
};
struct ndmp4_data_start_recover_request
{
ndmp4_pval env<>;
ndmp4_name nlist<>;
string butype_name<>;
};
struct ndmp4_data_start_recover_reply
{
ndmp4_error error;
};
struct ndmp4_data_start_recover_filehist_request
{
ndmp4_pval env<>;
ndmp4_name nlist<>;
string butype_name<>;
};
struct ndmp4_data_start_recover_filehist_reply
{
ndmp4_error error;
};
struct ndmp4_data_abort_reply
{
ndmp4_error error;
};
struct ndmp4_data_stop_reply
{
ndmp4_error error;
};
struct ndmp4_data_get_env_reply
{
ndmp4_error error;
ndmp4_pval env<>;
};
enum ndmp4_mover_mode
{
NDMP4_MOVER_MODE_READ = 0,
NDMP4_MOVER_MODE_WRITE = 1,
NDMP4_MOVER_MODE_NOACTION = 2
};
enum ndmp4_mover_state
{
NDMP4_MOVER_STATE_IDLE,
NDMP4_MOVER_STATE_LISTEN,
NDMP4_MOVER_STATE_ACTIVE,
NDMP4_MOVER_STATE_PAUSED,
NDMP4_MOVER_STATE_HALTED
};
enum ndmp4_mover_pause_reason
{
NDMP4_MOVER_PAUSE_NA = 0,
NDMP4_MOVER_PAUSE_EOM = 1,
NDMP4_MOVER_PAUSE_EOF = 2,
NDMP4_MOVER_PAUSE_SEEK = 3,
/* NDMPv4 does not have MOVER_PAUSE_MEDIA_ERROR = 4 */
NDMP4_MOVER_PAUSE_EOW = 5
};
enum ndmp4_mover_halt_reason
{
NDMP4_MOVER_HALT_NA,
NDMP4_MOVER_HALT_CONNECT_CLOSED,
NDMP4_MOVER_HALT_ABORTED,
NDMP4_MOVER_HALT_INTERNAL_ERROR,
NDMP4_MOVER_HALT_CONNECT_ERROR,
NDMP4_MOVER_HALT_MEDIA_ERROR
};
struct ndmp4_mover_set_record_size_request
{
u_long len;
};
struct ndmp4_mover_set_record_size_reply
{
ndmp4_error error;
};
struct ndmp4_mover_set_window_request
{
ndmp4_u_quad offset;
ndmp4_u_quad length;
};
struct ndmp4_mover_set_window_reply
{
ndmp4_error error;
};
struct ndmp4_mover_connect_request
{
ndmp4_mover_mode mode;
ndmp4_addr addr;
};
struct ndmp4_mover_connect_reply
{
ndmp4_error error;
};
struct ndmp4_mover_listen_request
{
ndmp4_mover_mode mode;
ndmp4_addr_type addr_type;
};
struct ndmp4_mover_listen_reply
{
ndmp4_error error;
ndmp4_addr connect_addr;
};
struct ndmp4_mover_read_request
{
ndmp4_u_quad offset;
ndmp4_u_quad length;
};
struct ndmp4_mover_read_reply
{
ndmp4_error error;
};
struct ndmp4_mover_get_state_reply
{
ndmp4_error error;
ndmp4_mover_mode mode;
ndmp4_mover_state state;
ndmp4_mover_pause_reason pause_reason;
ndmp4_mover_halt_reason halt_reason;
u_long record_size;
u_long record_num;
ndmp4_u_quad bytes_moved;
ndmp4_u_quad seek_position;
ndmp4_u_quad bytes_left_to_read;
ndmp4_u_quad window_offset;
ndmp4_u_quad window_length;
ndmp4_addr data_connection_addr;
};
struct ndmp4_mover_continue_reply
{
ndmp4_error error;
};
struct ndmp4_mover_close_reply
{
ndmp4_error error;
};
struct ndmp4_mover_abort_reply
{
ndmp4_error error;
};
struct ndmp4_mover_stop_reply
{
ndmp4_error error;
};
struct ndmp4_notify_data_halted_post
{
ndmp4_data_halt_reason reason;
};
enum ndmp4_connection_status_reason
{
NDMP4_CONNECTED=0,
NDMP4_SHUTDOWN=1,
NDMP4_REFUSED=2
};
struct ndmp4_notify_connection_status_post
{
ndmp4_connection_status_reason reason;
u_short protocol_version;
string text_reason<>;
};
struct ndmp4_notify_mover_halted_post
{
ndmp4_mover_halt_reason reason;
};
struct ndmp4_notify_mover_paused_post
{
ndmp4_mover_pause_reason reason;
ndmp4_u_quad seek_position;
};
struct ndmp4_notify_data_read_post
{
ndmp4_u_quad offset;
ndmp4_u_quad length;
};
enum ndmp4_has_associated_message
{
NDMP4_NO_ASSOCIATED_MESSAGE = 0,
NDMP4_HAS_ASSOCIATED_MESSAGE = 1
};
enum ndmp4_log_type
{
NDMP4_LOG_NORMAL = 0,
NDMP4_LOG_DEBUG = 1,
NDMP4_LOG_ERROR = 2,
NDMP4_LOG_WARNING = 3
};
struct ndmp4_log_message_post
{
ndmp4_log_type log_type;
u_long message_id;
string entry<>;
ndmp4_has_associated_message associated_message_valid;
u_long associated_message_sequence;
};
enum ndmp4_recovery_status
{
NDMP4_RECOVERY_SUCCESSFUL = 0,
NDMP4_RECOVERY_FAILED_PERMISSION = 1,
NDMP4_RECOVERY_FAILED_NOT_FOUND = 2,
NDMP4_RECOVERY_FAILED_NO_DIRECTORY = 3,
NDMP4_RECOVERY_FAILED_OUT_OF_MEMORY = 4,
NDMP4_RECOVERY_FAILED_IO_ERROR = 5,
NDMP4_RECOVERY_FAILED_UNDEFINED_ERROR = 6
};
struct ndmp4_log_file_post
{
string name<>;
ndmp4_recovery_status recovery_status;
};
enum ndmp4_fs_type
{
NDMP4_FS_UNIX=0,
NDMP4_FS_NT=1,
NDMP4_FS_OTHER=2
};
typedef string ndmp4_path<>;
struct ndmp4_nt_path
{
ndmp4_path nt_path;
ndmp4_path dos_path;
};
union ndmp4_file_name switch (ndmp4_fs_type fs_type)
{
case NDMP4_FS_UNIX:
ndmp4_path unix_name;
case NDMP4_FS_NT:
ndmp4_nt_path nt_name;
default:
ndmp4_path other_name;
};
/* file type */
enum ndmp4_file_type
{
NDMP4_FILE_DIR=0,
NDMP4_FILE_FIFO=1,
NDMP4_FILE_CSPEC=2,
NDMP4_FILE_BSPEC=3,
NDMP4_FILE_REG=4,
NDMP4_FILE_SLINK=5,
NDMP4_FILE_SOCK=6,
NDMP4_FILE_REGISTRY=7,
NDMP4_FILE_OTHER=8
};
/* file stat */
/* unsupported bitmask */
const NDMP4_FILE_STAT_ATIME_UNS = 0x00000001;
const NDMP4_FILE_STAT_CTIME_UNS = 0x00000002;
const NDMP4_FILE_STAT_GROUP_UNS = 0x00000004;
struct ndmp4_file_stat
{
u_long unsupported;
ndmp4_fs_type fs_type;
ndmp4_file_type ftype;
u_long mtime;
u_long atime;
u_long ctime;
u_long owner;
u_long group;
u_long fattr;
ndmp4_u_quad size;
u_long links;
};
struct ndmp4_file
{
ndmp4_file_name names<>;
ndmp4_file_stat stats<>;
ndmp4_u_quad node;
ndmp4_u_quad fh_info;
};
struct ndmp4_fh_add_file_post
{
ndmp4_file files<>;
};
struct ndmp4_dir
{
ndmp4_file_name names<>;
ndmp4_u_quad node;
ndmp4_u_quad parent;
};
struct ndmp4_fh_add_dir_post
{
ndmp4_dir dirs<>;
};
struct ndmp4_node
{
ndmp4_file_stat stats<>;
ndmp4_u_quad node;
ndmp4_u_quad fh_info;
};
struct ndmp4_fh_add_node_post
{
ndmp4_node nodes<>;
};
%#endif /* !NDMOS_OPTION_NO_NDMP4 */