/*
* Copyright 2008 Sun Microsystems, Inc. All rights reserved.
* Use is subject to license terms.
*/
/*
* BSD 3 Clause License
*
* Copyright (c) 2007, The Storage Networking Industry Association.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* - Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* - 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.
*
* - Neither the name of The Storage Networking Industry Association (SNIA)
* nor the names of its contributors may be used to endorse or promote
* products derived from this software without specific prior written
* permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS 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 COPYRIGHT OWNER 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.
*/
/* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */
#define VER 3
const NDMPV2 = 2;
const NDMPV3 = 3;
const NDMPV4 = 4;
const NDMPVER = NDMPV4;
const NDMPPORT = 10000;
struct ndmp_u_quad
{
u_long high;
u_long low;
};
struct ndmp_pval
{
string name<>;
string value<>;
};
struct ndmp_scsi_device
{
string name<>;
};
struct ndmp_tape_device
{
string name<>;
};
enum ndmp_error
{
NDMP_NO_ERR = 0, /* No error */
NDMP_NOT_SUPPORTED_ERR = 1, /* Call is not supported */
NDMP_DEVICE_BUSY_ERR = 2, /* The device is in use */
NDMP_DEVICE_OPENED_ERR = 3, /* Another tape or scsi device is already open */
NDMP_NOT_AUTHORIZED_ERR = 4, /* Connection has not been authorized */
NDMP_PERMISSION_ERR = 5, /* Some sort of permission problem */
NDMP_DEV_NOT_OPEN_ERR = 6, /* SCSI device is not open */
NDMP_IO_ERR = 7, /* I/O error */
NDMP_TIMEOUT_ERR = 8, /* command timed out */
NDMP_ILLEGAL_ARGS_ERR = 9, /* illegal arguments in request */
NDMP_NO_TAPE_LOADED_ERR = 10, /* Cannot open because there is no tape loaded */
NDMP_WRITE_PROTECT_ERR = 11, /* tape cannot be open for write */
NDMP_EOF_ERR = 12, /* Command encountered EOF */
NDMP_EOM_ERR = 13, /* Command encountered EOM */
NDMP_FILE_NOT_FOUND_ERR = 14, /* File not found during restore */
NDMP_BAD_FILE_ERR = 15, /* The file descriptor is invalid */
NDMP_NO_DEVICE_ERR = 16, /* The device is not at that target */
NDMP_NO_BUS_ERR = 17, /* Invalid controller */
NDMP_XDR_DECODE_ERR = 18, /* Can't decode the request argument */
NDMP_ILLEGAL_STATE_ERR = 19, /* Call can't be performed at this state */
NDMP_UNDEFINED_ERR = 20, /* Undefined Error */
NDMP_XDR_ENCODE_ERR = 21, /* Can't encode the reply argument */
NDMP_NO_MEM_ERR = 22, /* No memory */
/*
* NDMP V3
*/
NDMP_CONNECT_ERR = 23,
/*
* NDMP V4
*/
NDMP_SEQUENCE_NUM_ERR = 24,
NDMP_READ_IN_PROGRESS_ERR = 25,
NDMP_PRECONDITION_ERR = 26,
NDMP_CLASS_NOT_SUPPORTED_ERR = 27,
NDMP_VERSION_NOT_SUPPORTED_ERR = 28,
NDMP_EXT_DUPL_CLASSES_ERR = 29,
NDMP_EXT_DANDN_ILLEGAL_ERR = 30
};
enum ndmp_header_message_type
{
NDMP_MESSAGE_REQUEST,
NDMP_MESSAGE_REPLY
};
enum ndmp_message
{
NDMP_CONNECT_OPEN = 0x900,
NDMP_CONNECT_CLIENT_AUTH = 0x901,
NDMP_CONNECT_CLOSE = 0x902,
NDMP_CONNECT_SERVER_AUTH = 0x903,
NDMP_CONFIG_GET_HOST_INFO = 0x100,
NDMP_CONFIG_GET_BUTYPE_ATTR = 0x101, /* NDMP V2 */
NDMP_CONFIG_GET_CONNECTION_TYPE = 0x102,
NDMP_CONFIG_GET_AUTH_ATTR = 0x103,
NDMP_CONFIG_GET_BUTYPE_INFO = 0x104, /* NDMP V3,4 */
NDMP_CONFIG_GET_FS_INFO = 0x105, /* NDMP V3,4 */
NDMP_CONFIG_GET_TAPE_INFO = 0x106, /* NDMP V3,4 */
NDMP_CONFIG_GET_SCSI_INFO = 0x107, /* NDMP V3,4 */
NDMP_CONFIG_GET_SERVER_INFO = 0x108, /* NDMP V3,4 */
NDMP_CONFIG_SET_EXT_LIST = 0x109, /* NDMP V4 */
NDMP_CONFIG_GET_EXT_LIST = 0x10A, /* NDMP V4 */
NDMP_SCSI_OPEN = 0x200,
NDMP_SCSI_CLOSE = 0x201,
NDMP_SCSI_GET_STATE = 0x202,
NDMP_SCSI_SET_TARGET = 0x203, /* NDMP V2,3 */
NDMP_SCSI_RESET_DEVICE = 0x204,
NDMP_SCSI_RESET_BUS = 0x205, /* NDMP V2,3 */
NDMP_SCSI_EXECUTE_CDB = 0x206,
NDMP_TAPE_OPEN = 0x300,
NDMP_TAPE_CLOSE = 0x301,
NDMP_TAPE_GET_STATE = 0x302,
NDMP_TAPE_MTIO = 0x303,
NDMP_TAPE_WRITE = 0x304,
NDMP_TAPE_READ = 0x305,
NDMP_TAPE_SET_RECORD_SIZE = 0x306, /* NDMP V1 */
NDMP_TAPE_EXECUTE_CDB = 0x307,
NDMP_DATA_GET_STATE = 0x400,
NDMP_DATA_START_BACKUP = 0x401,
NDMP_DATA_START_RECOVER = 0x402,
NDMP_DATA_ABORT = 0x403,
NDMP_DATA_GET_ENV = 0x404,
NDMP_DATA_RESVD1 = 0x405,
NDMP_DATA_RESVD2 = 0x406,
NDMP_DATA_STOP = 0x407,
NDMP_DATA_CONTINUE = 0x408, /* NDMP V1 */
NDMP_DATA_LISTEN = 0x409,
NDMP_DATA_CONNECT = 0x40A,
NDMP_DATA_START_RECOVER_FILEHIST = 0x40B, /* NDMP V4 */
NDMP_NOTIFY_RESERVED = 0x500,
NDMP_NOTIFY_DATA_HALTED = 0x501,
NDMP_NOTIFY_CONNECTION_STATUS = 0x502,
NDMP_NOTIFY_MOVER_HALTED = 0x503,
NDMP_NOTIFY_MOVER_PAUSED = 0x504,
NDMP_NOTIFY_DATA_READ = 0x505,
_NDMP_LOG_LOG = 0x600, /* NDMP V2 */
_NDMP_LOG_DEBUG = 0x601, /* NDMP V2 */
NDMP_LOG_FILE = 0x602, /* NDMP V3,4 */
NDMP_LOG_MESSAGE = 0x603, /* NDMP V3,4 */
NDMP_FH_ADD_UNIX_PATH = 0x700, /* NDMP V2,3 */
NDMP_FH_ADD_UNIX_DIR = 0x701, /* NDMP V2,3 */
NDMP_FH_ADD_UNIX_NODE = 0x702, /* NDMP V2,3 */
NDMP_FH_ADD_FILE = 0x703, /* NDMP V3,4 */
NDMP_FH_ADD_DIR = 0x704, /* NDMP V3,4 */
NDMP_FH_ADD_NODE = 0x705, /* NDMP V3,4 */
NDMP_MOVER_GET_STATE = 0xA00,
NDMP_MOVER_LISTEN = 0xA01,
NDMP_MOVER_CONTINUE = 0xA02,
NDMP_MOVER_ABORT = 0xA03,
NDMP_MOVER_STOP = 0xA04,
NDMP_MOVER_SET_WINDOW = 0xA05,
NDMP_MOVER_READ = 0xA06,
NDMP_MOVER_CLOSE = 0xA07,
NDMP_MOVER_SET_RECORD_SIZE = 0xA08,
NDMP_MOVER_CONNECT = 0xA09, /* NDMP V3,4 */
NDMP_EXT_STANDARD_BASE = 0x10000,
NDMP_EXT_PROPRIETARY_BASE = 0x20000000
};
const NDMP_CONNECT_AUTH = NDMP_CONNECT_CLIENT_AUTH;
const NDMP_MESSAGE_POST = NDMP_MESSAGE_REQUEST;
struct ndmp_header
{
u_long sequence; /* Monotonically increasing number */
u_long time_stamp; /* Time stamp of message */
ndmp_header_message_type message_type; /* What type of message */
enum ndmp_message message; /* Message number */
u_long reply_sequence; /* Reply is in response to */
ndmp_error error; /* Communications errors */
};
/***************************/
/* CONNECT INTERFACE (V2) */
/***************************/
/* NDMP_CONNECT_OPEN */
struct ndmp_connect_open_request
{
u_short protocol_version; /* the version of protocol supported */
};
struct ndmp_connect_open_reply
{
ndmp_error error;
};
/* NDMP_CONNECT_CLIENT_AUTH = NDMP_CONNECT_AUTH */
enum ndmp_auth_type
{
NDMP_AUTH_NONE, /* no password is required */
NDMP_AUTH_TEXT, /* the clear text password */
NDMP_AUTH_MD5 /* md5 */
};
struct ndmp_auth_text
{
string user<>;
string password<>;
};
struct ndmp_auth_md5
{
string user<>;
opaque auth_digest[16];
};
union ndmp_auth_data switch (enum ndmp_auth_type auth_type)
{
case NDMP_AUTH_NONE:
void;
case NDMP_AUTH_TEXT:
struct ndmp_auth_text auth_text;
case NDMP_AUTH_MD5:
struct ndmp_auth_md5 auth_md5;
};
struct ndmp_connect_client_auth_request
{
ndmp_auth_data auth_data;
};
struct ndmp_connect_client_auth_reply
{
ndmp_error error;
};
/* NDMP_CONNECT_CLOSE */
/* no request arguments */
/* no reply arguments */
/* NDMP_CONNECT_SERVER_AUTH */
union ndmp_auth_attr switch (enum ndmp_auth_type auth_type)
{
case NDMP_AUTH_NONE:
void;
case NDMP_AUTH_TEXT:
void;
case NDMP_AUTH_MD5:
opaque challenge[64];
};
struct ndmp_connect_server_auth_request
{
ndmp_auth_attr client_attr;
};
struct ndmp_connect_server_auth_reply
{
ndmp_error error;
ndmp_auth_data auth_result;
};
/***************************/
/* CONNECT INTERFACE (V3) */
/***************************/
/* NDMP_CONNECT_OPEN - same as V2 */
struct ndmp_auth_text_v3
{
string auth_id<>;
string auth_password<>;
};
struct ndmp_auth_md5_v3
{
string auth_id<>;
opaque auth_digest[16];
};
union ndmp_auth_data_v3 switch (enum ndmp_auth_type auth_type)
{
case NDMP_AUTH_NONE:
void;
case NDMP_AUTH_TEXT:
struct ndmp_auth_text_v3 auth_text;
case NDMP_AUTH_MD5:
struct ndmp_auth_md5_v3 auth_md5;
};
struct ndmp_connect_client_auth_request_v3
{
ndmp_auth_data_v3 auth_data;
};
struct ndmp_connect_client_auth_reply_v3
{
ndmp_error error;
};
/* NDMP_CONNECT_CLOSE - same as V2 */
/* NDMP_CONNECT_SERVER_AUTH - same as V2 */
/***************************/
/* CONNECT INTERFACE (V4) */
/***************************/
/* NDMP_CONNECT_OPEN - same as V3 */
/* NDMP_CONNECT_CLIENT_AUTH - same as V3 */
/* NDMP_CONNECT_CLOSE - same as V3 */
/* NDMP_CONNECT_SERVER_AUTH - same as V3 */
/*************************/
/* CONFIG INTERFACE (V2) */
/*************************/
/* NDMP_CONFIG_GET_HOST_INFO */
/* no request arguments */
struct ndmp_config_get_host_info_reply
{
ndmp_error error;
string hostname<>; /* host name */
string os_type<>; /* The operating system type (i.e. SOLARIS) */
string os_vers<>; /* The version number of the OS (i.e. 2.5) */
string hostid<>;
ndmp_auth_type auth_type<>;
};
/* NDMP_CONFIG_GET_BUTYPE_ATTR */
const NDMP_NO_BACKUP_FILELIST = 0x0001;
const NDMP_NO_BACKUP_FHINFO = 0x0002;
const NDMP_NO_RECOVER_FILELIST = 0x0004;
const NDMP_NO_RECOVER_FHINFO = 0x0008;
const NDMP_NO_RECOVER_SSID = 0x0010;
const NDMP_NO_RECOVER_INC_ONLY = 0x0020;
struct ndmp_config_get_butype_attr_request
{
string name<>; /* backup type name */
};
struct ndmp_config_get_butype_attr_reply
{
ndmp_error error;
u_long attrs;
};
/* NDMP_CONFIG_GET_MOVER_TYPE */
/* no request arguments */
enum ndmp_addr_type
{
NDMP_ADDR_LOCAL = 0,
NDMP_ADDR_TCP = 1,
NDMP_ADDR_FC = 2, /* NDMP V2,3 */
NDMP_ADDR_IPC = 3
};
struct ndmp_config_get_mover_type_reply
{
ndmp_error error;
ndmp_addr_type methods<>;
};
/* NDMP_CONFIG_GET_AUTH_ATTR */
struct ndmp_config_get_auth_attr_request
{
ndmp_auth_type auth_type;
};
struct ndmp_config_get_auth_attr_reply
{
ndmp_error error;
ndmp_auth_attr server_attr;
};
/*************************/
/* CONFIG INTERFACE (V3) */
/*************************/
/* NDMP_CONFIG_GET_HOST_INFO */
/* no request arguments */
struct ndmp_config_get_host_info_reply_v3
{
ndmp_error error;
string hostname<>; /* host name */
string os_type<>; /* The operating system type (i.e. SOLARIS) */
string os_vers<>; /* The version number of the OS (i.e. 2.5) */
string hostid<>;
};
/* NDMP_CONFIG_GET_CONNECTION_TYPE */
/* no request arguments */
struct ndmp_config_get_connection_type_reply_v3
{
ndmp_error error;
ndmp_addr_type addr_types<>;
};
/* NDMP_CONFIG_GET_AUTH_ATTR - same as V2 */
/* NDMP_CONFIG_GET_SERVER_INFO */
/* no requset arguments */
struct ndmp_config_get_server_info_reply_v3
{
ndmp_error error;
string vendor_name<>;
string product_name<>;
string revision_number<>;
ndmp_auth_type auth_type<>;
};
/* Backup type attributes */
const NDMP_BUTYPE_BACKUP_FILE_HISTORY = 0x0001; /* NDMP V2,3 */
const NDMP_BUTYPE_BACKUP_FILELIST = 0x0002;
const NDMP_BUTYPE_RECOVER_FILELIST = 0x0004;
const NDMP_BUTYPE_BACKUP_DIRECT = 0x0008;
const NDMP_BUTYPE_RECOVER_DIRECT = 0x0010;
const NDMP_BUTYPE_BACKUP_INCREMENTAL = 0x0020;
const NDMP_BUTYPE_RECOVER_INCREMENTAL = 0x0040;
const NDMP_BUTYPE_BACKUP_UTF8 = 0x0080;
const NDMP_BUTYPE_RECOVER_UTF8 = 0x0100;
const NDMP_BUTYPE_BACKUP_FH_FILE = 0x0200; /* NDMP V4 */
const NDMP_BUTYPE_BACKUP_FH_DIR = 0x0400; /* NDMP V4 */
const NDMP_BUTYPE_RECOVER_FILEHIST = 0x0800; /* NDMP V4 */
const NDMP_BUTYPE_RECOVER_FH_FILE = 0x1000; /* NDMP V4 */
const NDMP_BUTYPE_RECOVER_FH_DIR = 0x2000; /* NDMP V4 */
struct ndmp_butype_info
{
string butype_name<>;
ndmp_pval default_env<>;
u_long attrs;
};
/* NDMP_CONFIG_GET_BUTYPE_INFO */
/* no request arguments */
struct ndmp_config_get_butype_info_reply_v3
{
ndmp_error error;
ndmp_butype_info butype_info<>;
};
/* invalid bit */
const NDMP_FS_INFO_TOTAL_SIZE_INVALID = 0x00000001;
const NDMP_FS_INFO_USED_SIZE_INVALID = 0x00000002;
const NDMP_FS_INFO_AVAIL_SIZE_INVALID = 0x00000004;
const NDMP_FS_INFO_TOTAL_INODES_INVALID = 0x00000008;
const NDMP_FS_INFO_USED_INODES_INVALID = 0x00000010;
struct ndmp_fs_info_v3
{
u_long invalid;
string fs_type<>;
string fs_logical_device<>;
string fs_physical_device<>;
ndmp_u_quad total_size;
ndmp_u_quad used_size;
ndmp_u_quad avail_size;
ndmp_u_quad total_inodes;
ndmp_u_quad used_inodes;
ndmp_pval fs_env<>;
string fs_status<>;
};
/* NDMP_CONFIG_GET_FS_INFO */
/* no request arguments */
struct ndmp_config_get_fs_info_reply_v3
{
ndmp_error error;
ndmp_fs_info_v3 fs_info<>;
};
/* NDMP_CONFIG_GET_TAPE_INFO */
/* no request arguments */
/* tape attributes */
const NDMP_TAPE_ATTR_REWIND = 0x00000001;
const NDMP_TAPE_ATTR_UNLOAD = 0x00000002;
const NDMP_TAPE_ATTR_RAW = 0x00000004;
struct ndmp_device_capability_v3
{
string device<>;
u_long attr;
ndmp_pval capability<>;
};
struct ndmp_device_info_v3
{
string model<>;
ndmp_device_capability_v3 caplist<>;
};
struct ndmp_config_get_tape_info_reply_v3
{
ndmp_error error;
ndmp_device_info_v3 tape_info<>;
};
/* NDMP_CONFIG_GET_SCSI_INFO */
/* jukebox attributes */
struct ndmp_config_get_scsi_info_reply_v3
{
ndmp_error error;
ndmp_device_info_v3 scsi_info<>;
};
/*************************/
/* CONFIG INTERFACE (V4) */
/*************************/
/* NDMP_CONFIG_GET_HOST_INFO - same as V3 */
/* NDMP_CONFIG_GET_SERVER_INFO - same as V3 */
/* NDMP_CONFIG_GET_CONNECTION_TYPE - same as V3 */
/* NDMP_CONFIG_GET_AUTH_ATTR - same as V3 */
struct ndmp_config_get_butype_info_reply_v4
{
ndmp_error error;
ndmp_butype_info butype_info<>;
};
/* NDMP_CONFIG_GET_FS_INFO - same as V3 */
struct ndmp_class_list
{
u_short ext_class_id;
u_short ext_version<>;
};
struct ndmp_class_version
{
u_short ext_class_id;
u_short ext_version;
};
struct ndmp_config_get_ext_list_reply
{
ndmp_error error;
ndmp_class_list class_list<>;
};
struct ndmp_config_set_ext_list_request
{
ndmp_class_version ndmp_selected_ext<>;
};
struct ndmp_config_set_ext_list_reply
{
ndmp_error error;
};
/***********************/
/* SCSI INTERFACE (V2) */
/***********************/
/* NDMP_SCSI_OPEN */
struct ndmp_scsi_open_request
{
ndmp_scsi_device device;
};
struct ndmp_scsi_open_reply
{
ndmp_error error;
};
/* NDMP_SCSI_CLOSE */
/* no request arguments */
struct ndmp_scsi_close_reply
{
ndmp_error error;
};
/* NDMP_SCSI_GET_STATE */
/* no request arguments */
struct ndmp_scsi_get_state_reply
{
ndmp_error error;
short target_controller;
short target_id;
short target_lun;
};
/* NDMP_SCSI_SET_TARGET */
struct ndmp_scsi_set_target_request
{
ndmp_scsi_device device;
u_short target_controller;
u_short target_id;
u_short target_lun;
};
struct ndmp_scsi_set_target_reply
{
ndmp_error error;
};
/* NDMP_SCSI_RESET_DEVICE */
/* no request arguments */
struct ndmp_scsi_reset_device_reply
{
ndmp_error error;
};
/* NDMP_SCSI_RESET_BUS */
/* no request arguments */
struct ndmp_scsi_reset_bus_reply
{
ndmp_error error;
};
/* NDMP_SCSI_EXECUTE_CDB */
const NDMP_SCSI_DATA_IN = 0x00000001; /* Expect data from SCSI device */
const NDMP_SCSI_DATA_OUT = 0x00000002; /* Transfer data to SCSI device */
struct ndmp_execute_cdb_request
{
u_long flags;
u_long timeout;
u_long datain_len; /* Set for expected datain */
opaque cdb<>;
opaque dataout<>;
};
struct ndmp_execute_cdb_reply
{
ndmp_error error;
u_char status; /* SCSI status bytes */
u_long dataout_len;
opaque datain<>; /* SCSI datain */
opaque ext_sense<>; /* Extended sense data */
};
/***********************/
/* SCSI INTERFACE (V3) */
/***********************/
/* NDMP_SCSI_OPEN */
struct ndmp_scsi_open_request_v3
{
string device<>;
};
/* reply the same as V2 */
/* NDMP_SCSI_CLOSE - same as V2 */
/* NDMP_SCSI_GET_STATE - same as V2 */
struct ndmp_scsi_set_target_request_v3
{
string device<>;
u_short target_controller;
u_short target_id;
u_short target_lun;
};
/* reply the same as V2 */
/* NDMP_SCSI_RESET_DEVICE - same as V2 */
/* NDMP_SCSI_RESET_BUS - same as V2 */
/* NDMP_SCSI_EXECUTE_CDB - same as V2 */
/***********************/
/* SCSI INTERFACE (V4) */
/***********************/
/* NDMP_SCSI_OPEN - same as V3 */
/* NDMP_SCSI_CLOSE - same as V3 */
/* NDMP_SCSI_GET_STATE - same as V3 */
/* NDMP_SCSI_RESET_DEVICE - same as V3 */
/* NDMP_SCSI_EXECUTE_CDB - same as V3 */
/***********************/
/* TAPE INTERFACE (V2) */
/***********************/
/* NDMP_TAPE_OPEN */
enum ndmp_tape_open_mode
{
NDMP_TAPE_READ_MODE,
NDMP_TAPE_WRITE_MODE,
NDMP_TAPE_RAW_MODE, /* NDMP V4 */
NDMP_TAPE_RAW1_MODE = 0x7fffffff, /* NDMP V3 */
NDMP_TAPE_RAW2_MODE = NDMP_TAPE_RAW_MODE /* NDMP V3 */
};
struct ndmp_tape_open_request
{
ndmp_tape_device device;
ndmp_tape_open_mode mode;
};
struct ndmp_tape_open_reply
{
ndmp_error error;
};
/* NDMP_TAPE_CLOSE */
/* no request arguments */
struct ndmp_tape_close_reply
{
ndmp_error error;
};
/* NDMP_TAPE_GET_STATE */
/* no request arguments */
const NDMP_TAPE_NOREWIND = 0x0008; /* non-rewind device */
const NDMP_TAPE_WR_PROT = 0x0010; /* write-protected */
const NDMP_TAPE_ERROR = 0x0020; /* media error */
const NDMP_TAPE_UNLOAD = 0x0040; /* tape will be unloaded when the device is closed */
struct ndmp_tape_get_state_reply
{
ndmp_error error;
u_long flags;
u_long file_num;
u_long soft_errors;
u_long block_size;
u_long blockno;
ndmp_u_quad total_space;
ndmp_u_quad space_remain;
};
enum ndmp_tape_mtio_op
{
NDMP_MTIO_FSF = 0,
NDMP_MTIO_BSF = 1,
NDMP_MTIO_FSR = 2,
NDMP_MTIO_BSR = 3,
NDMP_MTIO_REW = 4,
NDMP_MTIO_EOF = 5,
NDMP_MTIO_OFF = 6,
NDMP_MTIO_TUR = 7 /* NDMP V4 */
};
struct ndmp_tape_mtio_request
{
ndmp_tape_mtio_op tape_op;
u_long count;
};
struct ndmp_tape_mtio_reply
{
ndmp_error error;
u_long resid_count;
};
/* NDMP_TAPE_WRITE */
struct ndmp_tape_write_request
{
opaque data_out<>;
};
struct ndmp_tape_write_reply
{
ndmp_error error;
u_long count;
};
/* NDMP_TAPE_READ */
struct ndmp_tape_read_request
{
u_long count;
};
struct ndmp_tape_read_reply
{
ndmp_error error;
opaque data_in<>;
};
/* NDMP_TAPE_EXECUTE_CDB */
typedef ndmp_execute_cdb_request ndmp_tape_execute_cdb_request;
typedef ndmp_execute_cdb_reply ndmp_tape_execute_cdb_reply;
/***********************/
/* TAPE INTERFACE (V3) */
/***********************/
/* NDMP_TAPE_OPEN */
struct ndmp_tape_open_request_v3
{
string device<>;
ndmp_tape_open_mode mode;
};
/* reply the same as V2 */
/* NDMP_TAPE_CLOSE - same as V2 */
/* NDMP_TAPE_GET_STATE */
/* no request arguments */
const NDMP_TAPE_STATE_NOREWIND = 0x0008; /* non-rewind device */
const NDMP_TAPE_STATE_WR_PROT = 0x0010; /* write-protected */
const NDMP_TAPE_STATE_ERROR = 0x0020; /* media error */
const NDMP_TAPE_STATE_UNLOAD = 0x0040; /* tape will be unloaded when the device is closed */
/* invalid bit */
const NDMP_TAPE_STATE_FILE_NUM_INVALID = 0x00000001;
const NDMP_TAPE_STATE_SOFT_ERRORS_INVALID = 0x00000002;
const NDMP_TAPE_STATE_BLOCK_SIZE_INVALID = 0x00000004;
const NDMP_TAPE_STATE_BLOCKNO_INVALID = 0x00000008;
const NDMP_TAPE_STATE_TOTAL_SPACE_INVALID = 0x00000010;
const NDMP_TAPE_STATE_SPACE_REMAIN_INVALID = 0x00000020;
const NDMP_TAPE_STATE_PARTITION_INVALID = 0x00000040;
struct ndmp_tape_get_state_reply_v3
{
u_long invalid;
ndmp_error error;
u_long flags;
u_long file_num;
u_long soft_errors;
u_long block_size;
u_long blockno;
ndmp_u_quad total_space;
ndmp_u_quad space_remain;
u_long partition;
};
/* NDMP_TAPE_MTIO - same as V2 */
/* NDMP_TAPE_WRITE - same as V2 */
/* NDMP_TAPE_READ - same as V2 */
/* NDMP_TAPE_EXECUTE_CDB - same as V2 */
/***********************/
/* TAPE INTERFACE (V4) */
/***********************/
/* NDMP_TAPE_OPEN - same as V3 */
/* NDMP_TAPE_CLOSE - same as V3 */
struct ndmp_tape_get_state_reply_v4
{
u_long unsupported;
ndmp_error error;
u_long flags;
u_long file_num;
u_long soft_errors;
u_long block_size;
u_long blockno;
ndmp_u_quad total_space;
ndmp_u_quad space_remain;
};
/* NDMP_TAPE_MTIO - same as V3 */
/* NDMP_TAPE_WRITE - same as V3 */
/* NDMP_TAPE_READ - same as V3 */
/* NDMP_TAPE_EXECUTE_CDB - same as V3 */
/************************/
/* MOVER INTERFACE (V2) */
/************************/
enum ndmp_mover_mode
{
NDMP_MOVER_MODE_READ = 0,
NDMP_MOVER_MODE_WRITE = 1,
NDMP_MOVER_MODE_NOACTION = 2 /* NDMP V4 */
};
enum ndmp_mover_state
{
NDMP_MOVER_STATE_IDLE = 0,
NDMP_MOVER_STATE_LISTEN = 1,
NDMP_MOVER_STATE_ACTIVE = 2,
NDMP_MOVER_STATE_PAUSED = 3,
NDMP_MOVER_STATE_HALTED = 4
};
enum ndmp_mover_pause_reason
{
NDMP_MOVER_PAUSE_NA = 0,
NDMP_MOVER_PAUSE_EOM = 1,
NDMP_MOVER_PAUSE_EOF = 2,
NDMP_MOVER_PAUSE_SEEK = 3,
NDMP_MOVER_PAUSE_MEDIA_ERROR = 4, /* NDMP V2,3 */
NDMP_MOVER_PAUSE_EOW = 5
};
enum ndmp_mover_halt_reason
{
NDMP_MOVER_HALT_NA = 0,
NDMP_MOVER_HALT_CONNECT_CLOSED = 1,
NDMP_MOVER_HALT_ABORTED = 2,
NDMP_MOVER_HALT_INTERNAL_ERROR = 3,
NDMP_MOVER_HALT_CONNECT_ERROR = 4,
NDMP_MOVER_HALT_MEDIA_ERROR = 5 /* NDMP V4 */
};
/* NDMP_MOVER_GET_STATE */
/* no request arguments */
struct ndmp_mover_get_state_reply
{
ndmp_error error;
ndmp_mover_state state;
ndmp_mover_pause_reason pause_reason;
ndmp_mover_halt_reason halt_reason;
u_long record_size;
u_long record_num;
ndmp_u_quad data_written;
ndmp_u_quad seek_position;
ndmp_u_quad bytes_left_to_read;
ndmp_u_quad window_offset;
ndmp_u_quad window_length;
};
/* NDMP_MOVER_LISTEN */
struct ndmp_tcp_addr
{
u_long ip_addr;
u_short port;
};
union ndmp_mover_addr switch (ndmp_addr_type addr_type)
{
case NDMP_ADDR_LOCAL:
void;
case NDMP_ADDR_TCP:
ndmp_tcp_addr addr;
};
struct ndmp_mover_listen_request
{
ndmp_mover_mode mode;
ndmp_addr_type addr_type;
};
struct ndmp_mover_listen_reply
{
ndmp_error error;
ndmp_mover_addr mover;
};
/* NDMP_MOVER_SET_RECORD_SIZE */
struct ndmp_mover_set_record_size_request
{
u_long len;
};
struct ndmp_mover_set_record_size_reply
{
ndmp_error error;
};
/* NDMP_MOVER_SET_WINDOW */
struct ndmp_mover_set_window_request
{
ndmp_u_quad offset;
ndmp_u_quad length;
};
struct ndmp_mover_set_window_reply
{
ndmp_error error;
};
/* NDMP_MOVER_CONTINUE */
/* no request arguments */
struct ndmp_mover_continue_reply
{
ndmp_error error;
};
/* NDMP_MOVER_ABORT */
/* no request arguments */
struct ndmp_mover_abort_reply
{
ndmp_error error;
};
/* NDMP_MOVER_STOP */
/* no request arguments */
struct ndmp_mover_stop_reply
{
ndmp_error error;
};
/* NDMP_MOVER_READ */
struct ndmp_mover_read_request
{
ndmp_u_quad offset;
ndmp_u_quad length;
};
struct ndmp_mover_read_reply
{
ndmp_error error;
};
/* NDMP_MOVER_CLOSE */
/* no request arguments */
struct ndmp_mover_close_reply
{
ndmp_error error;
};
/************************/
/* MOVER INTERFACE (V3) */
/************************/
/* NDMP_MOVER_STATE - same as V2 */
/* NDMP_MOVER_PAUSE_REASON - same as V2 */
/* NDMP_MOVER_HALT_REASON - same as V2 */
/* NDMP_MOVER_MODE - same as V2 */
struct ndmp_fc_addr_v3
{
u_long loop_id;
};
struct ndmp_ipc_addr_v3
{
opaque comm_data<>;
};
union ndmp_addr_v3 switch (ndmp_addr_type addr_type)
{
case NDMP_ADDR_LOCAL:
void;
case NDMP_ADDR_TCP:
ndmp_tcp_addr tcp_addr;
case NDMP_ADDR_FC:
ndmp_fc_addr_v3 fc_addr;
case NDMP_ADDR_IPC:
ndmp_ipc_addr_v3 ipc_addr;
};
%
%
%/*
% * Macros to access the port and IP address of TCP addresses.
% */
%#ifndef tcp_ip_v3
%#define tcp_ip_v3 ndmp_addr_v3_u.tcp_addr.ip_addr
%#endif /* tcp_ip_v3 */
%#ifndef tcp_port_v3
%#define tcp_port_v3 ndmp_addr_v3_u.tcp_addr.port
%#endif /* tcp_port_v3 */
/* NDMP_MOVER_GET_STATE */
/* no request arguments */
struct ndmp_mover_get_state_reply_v3
{
ndmp_error error;
ndmp_mover_state state;
ndmp_mover_pause_reason pause_reason;
ndmp_mover_halt_reason halt_reason;
u_long record_size;
u_long record_num;
ndmp_u_quad data_written;
ndmp_u_quad seek_position;
ndmp_u_quad bytes_left_to_read;
ndmp_u_quad window_offset;
ndmp_u_quad window_length;
ndmp_addr_v3 data_connection_addr;
};
/* NDMP_MOVER_LISTEN - same as v2 */
struct ndmp_mover_listen_reply_v3
{
ndmp_error error;
ndmp_addr_v3 data_connection_addr;
};
/* NDMP_MOVER_CONNECT */
struct ndmp_mover_connect_request_v3
{
ndmp_mover_mode mode;
ndmp_addr_v3 addr;
};
struct ndmp_mover_connect_reply_v3
{
ndmp_error error;
};
/* NDMP_MOVER_SET_RECORD_SIZE - same as V2 */
/* NDMP_MOVER_SET_WINDOW - same as V2 */
/* NDMP_MOVER_CONTINUE - same as V2 */
/* NDMP_MOVER_ABORT - same as V2 */
/* NDMP_MOVER_STOP - same as V2 */
/* NDMP_MOVER_READ - same as V2 */
/* NDMP_MOVER_CLOSE - same as V2 */
/************************/
/* MOVER INTERFACE (V4) */
/************************/
/* NDMP_MOVER_SET_RECORD_SIZE - same as V3 */
/* NDMP_MOVER_SET_WINDOW_SIZE - same as V3 */
%
%
%/*
% * Macros to access the port and IP address of TCP addresses.
% */
%#ifndef tcp_addr_v4
%#define tcp_addr_v4 ndmp_addr_v4_u.tcp_addr.tcp_addr_val
%#endif /* tcp_addr_v4 */
%#ifndef tcp_ip_v4
%#define tcp_ip_v4(n) ndmp_addr_v4_u.tcp_addr.tcp_addr_val[n].ip_addr
%#endif /* tcp_ip_v4 */
%#ifndef tcp_port_v4
%#define tcp_port_v4(n) ndmp_addr_v4_u.tcp_addr.tcp_addr_val[n].port
%#endif /* tcp_port_v4 */
%#ifndef tcp_len_v4
%#define tcp_len_v4 ndmp_addr_v4_u.tcp_addr.tcp_addr_len
%#endif /* tcp_len_v4 */
%#ifndef tcp_env_v4
%#define tcp_env_v4(n) ndmp_addr_v4_u.tcp_addr.tcp_addr_val[n].addr_env
%#endif /* tcp_env_v4 */
struct ndmp_tcp_addr_v4
{
u_long ip_addr;
u_short port;
ndmp_pval addr_env<>;
};
union ndmp_addr_v4
switch (ndmp_addr_type addr_type)
{
case NDMP_ADDR_LOCAL:
void;
case NDMP_ADDR_TCP:
ndmp_tcp_addr_v4 tcp_addr<>;
case NDMP_ADDR_IPC:
ndmp_ipc_addr_v3 ipc_addr;
};
struct ndmp_mover_connect_request_v4
{
ndmp_mover_mode mode;
ndmp_addr_v4 addr;
};
struct ndmp_mover_listen_reply_v4
{
ndmp_error error;
ndmp_addr_v4 connect_addr;
};
/* NDMP_MOVER_READ - same as v3 */
struct ndmp_mover_get_state_reply_v4
{
ndmp_error error;
ndmp_mover_mode mode;
ndmp_mover_state state;
ndmp_mover_pause_reason pause_reason;
ndmp_mover_halt_reason halt_reason;
u_long record_size;
u_long record_num;
ndmp_u_quad bytes_moved;
ndmp_u_quad seek_position;
ndmp_u_quad bytes_left_to_read;
ndmp_u_quad window_offset;
ndmp_u_quad window_length;
ndmp_addr_v4 data_connection_addr;
};
/* NDMP_MOVER_CONTINUE - same as V3 */
/* NDMP_MOVER_CLOSE - same as V3 */
/* NDMP_MOVER_ABORT - same as V3 */
/* NDMP_MOVER_STOP - same as V3 */
/***********************/
/* DATA INTERFACE (V2) */
/***********************/
/* NDMP_DATA_GET_STATE */
/* no request arguments */
enum ndmp_data_operation
{
NDMP_DATA_OP_NOACTION = 0,
NDMP_DATA_OP_BACKUP = 1,
NDMP_DATA_OP_RECOVER = 2,
NDMP_DATA_OP_RECOVER_FILEHIST = 3 /* NDMP V4 */
};
enum ndmp_data_state
{
NDMP_DATA_STATE_IDLE = 0,
NDMP_DATA_STATE_ACTIVE = 1,
NDMP_DATA_STATE_HALTED = 2,
NDMP_DATA_STATE_LISTEN = 3, /* NDMP V3 */
NDMP_DATA_STATE_CONNECTED = 4 /* NDMP V3 */
};
enum ndmp_data_halt_reason
{
NDMP_DATA_HALT_NA = 0,
NDMP_DATA_HALT_SUCCESSFUL = 1,
NDMP_DATA_HALT_ABORTED = 2,
NDMP_DATA_HALT_INTERNAL_ERROR = 3,
NDMP_DATA_HALT_CONNECT_ERROR = 4
};
struct ndmp_data_get_state_reply
{
ndmp_error error;
ndmp_data_operation operation;
ndmp_data_state state;
ndmp_data_halt_reason halt_reason;
ndmp_u_quad bytes_processed;
ndmp_u_quad est_bytes_remain;
u_long est_time_remain;
ndmp_mover_addr mover;
ndmp_u_quad read_offset;
ndmp_u_quad read_length;
};
/* NDMP_DATA_START_BACKUP */
struct ndmp_data_start_backup_request
{
ndmp_mover_addr mover; /* mover to receive data */
string bu_type<>; /* backup method to use */
ndmp_pval env<>; /* Parameters that may modify backup */
};
struct ndmp_data_start_backup_reply
{
ndmp_error error;
};
/* NDMP_DATA_START_RECOVER */
struct ndmp_name
{
string name<>;
string dest<>;
u_short ssid;
ndmp_u_quad fh_info;
};
struct ndmp_data_start_recover_request
{
ndmp_mover_addr mover;
ndmp_pval env<>;
ndmp_name nlist<>;
string bu_type<>;
};
struct ndmp_data_start_recover_reply
{
ndmp_error error;
};
/* NDMP_DATA_ABORT */
/* no request arguments */
struct ndmp_data_abort_reply
{
ndmp_error error;
};
/* NDMP_DATA_STOP */
/* no request arguments */
struct ndmp_data_stop_reply
{
ndmp_error error;
};
/* NDMP_DATA_GET_ENV */
/* no request arguments */
struct ndmp_data_get_env_reply
{
ndmp_error error;
ndmp_pval env<>;
};
/* no reply arguments */
struct ndmp_notify_data_halted_request
{
ndmp_data_halt_reason reason;
string text_reason<>;
};
/* no reply arguments */
/***********************/
/* DATA INTERFACE (V3) */
/***********************/
/* NDMP_DATA_GET_STATE */
/* no request arguments */
/* ndmp_data_operation the same as V2 */
/* invalid bit */
const NDMP_DATA_STATE_EST_BYTES_REMAIN_INVALID = 0x00000001;
const NDMP_DATA_STATE_EST_TIME_REMAIN_INVALID = 0x00000002;
struct ndmp_data_get_state_reply_v3
{
u_long invalid;
ndmp_error error;
ndmp_data_operation operation;
ndmp_data_state state;
ndmp_data_halt_reason halt_reason;
ndmp_u_quad bytes_processed;
ndmp_u_quad est_bytes_remain;
u_long est_time_remain;
ndmp_addr_v3 data_connection_addr;
ndmp_u_quad read_offset;
ndmp_u_quad read_length;
};
/* NDMP_DATA_START_BACKUP */
struct ndmp_data_start_backup_request_v3
{
string bu_type<>; /* backup method to use */
ndmp_pval env<>; /* Parameters that may modify backup */
};
/* NDMP_DATA_START_RECOVER */
struct ndmp_name_v3
{
string original_path<>;
string destination_dir<>;
string new_name<>; /* Direct access restore only */
string other_name<>; /* Direct access restore only */
ndmp_u_quad node; /* Direct access restore only */
ndmp_u_quad fh_info; /* Direct access restore only */
};
struct ndmp_data_start_recover_request_v3
{
ndmp_pval env<>;
ndmp_name_v3 nlist<>;
string bu_type<>;
};
/* NDMP_DATA_ABORT - same as V2 */
/* NDMP_DATA_STOP - same as V2 */
/* NDMP_DATA_GET_ENV - same as V2 */
/* NDMP_DATA_LISTEN */
struct ndmp_data_listen_request_v3
{
ndmp_addr_type addr_type;
};
struct ndmp_data_listen_reply_v3
{
ndmp_error error;
ndmp_addr_v3 data_connection_addr;
};
/* NDMP_DATA_CONNECT */
struct ndmp_data_connect_request_v3
{
ndmp_addr_v3 addr;
};
struct ndmp_data_connect_reply_v3
{
ndmp_error error;
};
/***********************/
/* DATA INTERFACE (V4) */
/***********************/
struct ndmp_data_get_state_reply_v4
{
u_long unsupported;
ndmp_error error;
ndmp_data_operation operation;
ndmp_data_state state;
ndmp_data_halt_reason halt_reason;
ndmp_u_quad bytes_processed;
ndmp_u_quad est_bytes_remain;
u_long est_time_remain;
ndmp_addr_v4 data_connection_addr;
ndmp_u_quad read_offset;
ndmp_u_quad read_length;
};
struct ndmp_data_listen_reply_v4
{
ndmp_error error;
ndmp_addr_v4 connect_addr;
};
struct ndmp_data_connect_request_v4
{
ndmp_addr_v4 addr;
};
/* NDMP_DATA_START_BACKUP - same as V3 */
/* NDMP_DATA_START_RECOVER - same as V3 */
/* NDMP_DATA_ABORT - same as V3 */
/* NDMP_DATA_STOP - same as V3 */
/* NDMP_DATA_GET_ENV - same as V3 */
/*************************/
/* NOTIFY INTERFACE (V2) */
/*************************/
/* NDMP_NOTIFY_CONNECTED */
enum ndmp_connect_reason
{
NDMP_CONNECTED, /* Connect successfully */
NDMP_SHUTDOWN, /* Connection shutdown */
NDMP_REFUSED /* reach the maximum number of connections */
};
struct ndmp_notify_connected_request
{
ndmp_connect_reason reason;
u_short protocol_version;
string text_reason<>;
};
/* NDMP_NOTIFY_MOVER_PAUSED */
struct ndmp_notify_mover_paused_request
{
ndmp_mover_pause_reason reason;
ndmp_u_quad seek_position;
};
/* no reply arguments */
/* NDMP_NOTIFY_MOVER_HALTED */
struct ndmp_notify_mover_halted_request
{
ndmp_mover_halt_reason reason;
string text_reason<>;
};
/* no reply arguments */
/* NDMP_NOTIFY_DATA_READ */
struct ndmp_notify_data_read_request
{
ndmp_u_quad offset;
ndmp_u_quad length;
};
/* no reply arguments */
/*************************/
/* NOTIFY INTERFACE (V3) */
/*************************/
/* NDMP_NOTIFY_DATA_HALTED - same as V2 */
/* NDMP_NOTIFY_CONNECTED - same as V2 */
/* NDMP_NOTIFY_MOVER_PAUSED - same as V2 */
/* NDMP_NOTIFY_MOVER_HALTED - same as V2 */
/* NDMP_NOTIFY_DATA_READ - same as V2 */
/*************************/
/* NOTIFY INTERFACE (V4) */
/*************************/
struct ndmp_notify_data_halted_request_v4
{
ndmp_data_halt_reason reason;
};
/* NDMP_NOTIFY_CONNECTION_STATUS - same as V3 */
struct ndmp_notify_mover_halted_request_v4
{
ndmp_mover_halt_reason reason;
};
/* NDMP_NOTIFY_MOVER_PAUSED - same as V3 */
/* NDMP_NOTIFY_DATA_READ - same as V3 */
/**********************/
/* LOG INTERFACE (V2) */
/**********************/
/* NDMP_LOG_LOG */
struct ndmp_log_log_request
{
string entry<>;
};
/* no reply arguments */
/* NDMP_LOG_DEBUG */
enum ndmp_debug_level
{
NDMP_DBG_USER_INFO,
NDMP_DBG_USER_SUMMARY,
NDMP_DBG_USER_DETAIL,
NDMP_DBG_DIAG_INFO,
NDMP_DBG_DIAG_SUMMARY,
NDMP_DBG_DIAG_DETAIL,
NDMP_DBG_PROG_INFO,
NDMP_DBG_PROG_SUMMARY,
NDMP_DBG_PROG_DETAIL
};
struct ndmp_log_debug_request
{
ndmp_debug_level level;
string message<>;
};
/* no reply arguments */
/* NDMP_LOG_FILE */
struct ndmp_log_file_request
{
string name<>;
u_short ssid;
ndmp_error error;
};
/* no reply arguments */
/**********************/
/* LOG INTERFACE (V3) */
/**********************/
/* NDMP_LOG_MESSAGE */
enum ndmp_log_type
{
NDMP_LOG_NORMAL = 0,
NDMP_LOG_DEBUG = 1,
NDMP_LOG_ERROR = 2,
NDMP_LOG_WARNING = 3
};
struct ndmp_log_message_request_v3
{
ndmp_log_type log_type;
u_long message_id;
string entry<>;
};
/* no reply arguments */
/* NDMP_LOG_FILE */
struct ndmp_log_file_request_v3
{
string name<>;
ndmp_error error;
};
/* no reply arguments */
/**********************/
/* LOG INTERFACE (V4) */
/**********************/
enum ndmp_has_associated_message
{
NDMP_NO_ASSOCIATED_MESSAGE = 0,
NDMP_HAS_ASSOCIATED_MESSAGE = 1
};
enum ndmp_recovery_status
{
NDMP_RECOVERY_SUCCESSFUL = 0,
NDMP_RECOVERY_FAILED_PERMISSION = 1,
NDMP_RECOVERY_FAILED_NOT_FOUND = 2,
NDMP_RECOVERY_FAILED_NO_DIRECTORY = 3,
NDMP_RECOVERY_FAILED_OUT_OF_MEMORY = 4,
NDMP_RECOVERY_FAILED_IO_ERROR = 5,
NDMP_RECOVERY_FAILED_UNDEFINED_ERROR = 6,
NDMP_RECOVERY_FAILED_FILE_PATH_EXISTS = 7
};
struct ndmp_log_message_request_v4
{
ndmp_log_type log_type;
u_long message_id;
string entry<>;
ndmp_has_associated_message associated_message_valid;
u_long associated_message_sequence;
};
struct ndmp_log_file_request_v4
{
string name<>;
ndmp_recovery_status recovery_status;
};
/*******************************/
/* FILE HISTORY INTERFACE (V2) */
/*******************************/
/* NDMP_FH_ADD_UNIX_PATH */
typedef string ndmp_unix_path<>;
enum ndmp_file_type
{
NDMP_FILE_DIR = 0,
NDMP_FILE_FIFO = 1,
NDMP_FILE_CSPEC = 2,
NDMP_FILE_BSPEC = 3,
NDMP_FILE_REG = 4,
NDMP_FILE_SLINK = 5,
NDMP_FILE_SOCK = 6,
NDMP_FILE_REGISTRY = 7,
NDMP_FILE_OTHER = 8
};
struct ndmp_unix_file_stat
{
ndmp_file_type ftype;
u_long mtime;
u_long atime;
u_long ctime;
u_long uid;
u_long gid;
u_long mode;
ndmp_u_quad size;
ndmp_u_quad fh_info;
};
struct ndmp_fh_unix_path
{
ndmp_unix_path name;
ndmp_unix_file_stat fstat;
};
struct ndmp_fh_add_unix_path_request
{
ndmp_fh_unix_path paths<>;
};
/* no reply arguments */
/* NDMP_FH_ADD_UNIX_DIR */
struct ndmp_fh_unix_dir
{
ndmp_unix_path name;
u_long node;
u_long parent;
};
struct ndmp_fh_add_unix_dir_request
{
ndmp_fh_unix_dir dirs<>;
};
/* no reply arguments */
/* NDMP_FH_ADD_UNIX_NODE */
struct ndmp_fh_unix_node
{
ndmp_unix_file_stat fstat;
u_long node;
};
struct ndmp_fh_add_unix_node_request
{
ndmp_fh_unix_node nodes<>;
};
/* no reply arguments */
/********************************/
/* FILE HISTORY INTERFACE (V3) */
/********************************/
/* NDMP_FH_ADD_FILE */
enum ndmp_fs_type
{
NDMP_FS_UNIX = 0,
NDMP_FS_NT = 1,
NDMP_FS_OTHER = 2
};
typedef string ndmp_path_v3<>;
struct ndmp_nt_path_v3
{
ndmp_path_v3 nt_path;
ndmp_path_v3 dos_path;
};
union ndmp_file_name_v3 switch (ndmp_fs_type fs_type)
{
case NDMP_FS_UNIX:
ndmp_path_v3 unix_name;
case NDMP_FS_NT:
ndmp_nt_path_v3 nt_name;
default:
ndmp_path_v3 other_name;
};
/* invalid bit */
const NDMP_FILE_STAT_ATIME_INVALID = 0x00000001;
const NDMP_FILE_STAT_CTIME_INVALID = 0x00000002;
const NDMP_FILE_STAT_GROUP_INVALID = 0x00000004;
struct ndmp_file_stat_v3
{
u_long invalid;
ndmp_fs_type fs_type;
ndmp_file_type ftype;
u_long mtime;
u_long atime;
u_long ctime;
u_long owner; /* uid for UNIX, owner for NT */
u_long group; /* gid for UNIX, NA for NT */
u_long fattr; /* mode for UNIX, fattr for NT */
ndmp_u_quad size;
u_long links;
};
/* one file could have both UNIX and NT name and attributes */
struct ndmp_file_v3
{
ndmp_file_name_v3 names<>;
ndmp_file_stat_v3 stats<>;
ndmp_u_quad node; /* used for the direct access */
ndmp_u_quad fh_info; /* used for the direct access */
};
struct ndmp_fh_add_file_request_v3
{
ndmp_file_v3 files<>;
};
/* no reply arguments */
/* NDMP_FH_ADD_DIR */
struct ndmp_dir_v3
{
ndmp_file_name_v3 names<>;
ndmp_u_quad node;
ndmp_u_quad parent;
};
struct ndmp_fh_add_dir_request_v3
{
ndmp_dir_v3 dirs<>;
};
/* no reply arguments */
/* NDMP_FH_ADD_NODE */
struct ndmp_node_v3
{
ndmp_file_stat_v3 stats<>;
ndmp_u_quad node;
ndmp_u_quad fh_info;
};
struct ndmp_fh_add_node_request_v3
{
ndmp_node_v3 nodes<>;
};
/* no reply arguments */
/********************************/
/* FILE HISTORY INTERFACE (V4) */
/********************************/
/* NDMP_FH_ADD_FILE - same as V3 */
/* NDMP_FH_ADD_DIR - same as V3 */
/* NDMP_FH_ADD_NODE - same as V3 */
/********************************/
/* NDMP requests */
/********************************/
/* CONNECT */
typedef ndmp_auth_text ndmp_auth_text_v2;
typedef ndmp_auth_text_v3 ndmp_auth_text_v4;
typedef ndmp_auth_md5 ndmp_auth_md5_v2;
typedef ndmp_auth_md5_v3 ndmp_auth_md5_v4;
typedef ndmp_auth_data ndmp_auth_data_v2;
typedef ndmp_auth_data_v3 ndmp_auth_data_v4;
typedef ndmp_connect_open_request ndmp_connect_open_request_v2;
typedef ndmp_connect_open_request ndmp_connect_open_request_v3;
typedef ndmp_connect_open_request ndmp_connect_open_request_v4;
typedef ndmp_connect_open_reply ndmp_connect_open_reply_v2;
typedef ndmp_connect_open_reply ndmp_connect_open_reply_v3;
typedef ndmp_connect_open_reply ndmp_connect_open_reply_v4;
typedef ndmp_connect_client_auth_request ndmp_connect_client_auth_request_v2;
typedef ndmp_connect_client_auth_request_v3 ndmp_connect_client_auth_request_v4;
typedef ndmp_connect_client_auth_reply ndmp_connect_client_auth_reply_v2;
typedef ndmp_connect_client_auth_reply_v3 ndmp_connect_client_auth_reply_v4;
typedef ndmp_connect_server_auth_request ndmp_connect_server_auth_request_v2;
typedef ndmp_connect_server_auth_request ndmp_connect_server_auth_request_v3;
typedef ndmp_connect_server_auth_request ndmp_connect_server_auth_request_v4;
typedef ndmp_connect_server_auth_reply ndmp_connect_server_auth_reply_v2;
typedef ndmp_connect_server_auth_reply ndmp_connect_server_auth_reply_v3;
typedef ndmp_connect_server_auth_reply ndmp_connect_server_auth_reply_v4;
/* CONFIG */
typedef ndmp_config_get_host_info_reply ndmp_config_get_host_info_reply_v2;
typedef ndmp_config_get_host_info_reply_v3 ndmp_config_get_host_info_reply_v4;
typedef ndmp_config_get_butype_attr_request ndmp_config_get_butype_attr_request_v2;
typedef ndmp_config_get_butype_attr_reply ndmp_config_get_butype_attr_reply_v2;
typedef ndmp_config_get_mover_type_reply ndmp_config_get_mover_type_reply_v2;
typedef ndmp_config_get_auth_attr_request ndmp_config_get_auth_attr_request_v2;
typedef ndmp_config_get_auth_attr_request ndmp_config_get_auth_attr_request_v3;
typedef ndmp_config_get_auth_attr_request ndmp_config_get_auth_attr_request_v4;
typedef ndmp_config_get_auth_attr_reply ndmp_config_get_auth_attr_reply_v2;
typedef ndmp_config_get_auth_attr_reply ndmp_config_get_auth_attr_reply_v3;
typedef ndmp_config_get_auth_attr_reply ndmp_config_get_auth_attr_reply_v4;
typedef ndmp_config_get_connection_type_reply_v3 ndmp_config_get_connection_type_reply_v4;
typedef ndmp_config_get_server_info_reply_v3 ndmp_config_get_server_info_reply_v4;
typedef ndmp_fs_info_v3 ndmp_fs_info_v4;
typedef ndmp_config_get_fs_info_reply_v3 ndmp_config_get_fs_info_reply_v4;
typedef ndmp_device_info_v3 ndmp_device_info_v4;
typedef ndmp_config_get_tape_info_reply_v3 ndmp_config_get_tape_info_reply_v4;
typedef ndmp_config_get_scsi_info_reply_v3 ndmp_config_get_scsi_info_reply_v4;
typedef ndmp_config_get_ext_list_reply ndmp_config_get_ext_list_reply_v4;
typedef ndmp_config_set_ext_list_request ndmp_config_set_ext_list_request_v4;
typedef ndmp_config_set_ext_list_reply ndmp_config_set_ext_list_reply_v4;
/* SCSI */
typedef ndmp_scsi_open_request ndmp_scsi_open_request_v2;
typedef ndmp_scsi_open_request_v3 ndmp_scsi_open_request_v4;
typedef ndmp_scsi_open_reply ndmp_scsi_open_reply_v2;
typedef ndmp_scsi_open_reply ndmp_scsi_open_reply_v3;
typedef ndmp_scsi_open_reply ndmp_scsi_open_reply_v4;
typedef ndmp_scsi_close_reply ndmp_scsi_close_reply_v2;
typedef ndmp_scsi_close_reply ndmp_scsi_close_reply_v3;
typedef ndmp_scsi_close_reply ndmp_scsi_close_reply_v4;
typedef ndmp_scsi_get_state_reply ndmp_scsi_get_state_reply_v2;
typedef ndmp_scsi_get_state_reply ndmp_scsi_get_state_reply_v3;
typedef ndmp_scsi_get_state_reply ndmp_scsi_get_state_reply_v4;
typedef ndmp_scsi_set_target_request ndmp_scsi_set_target_request_v2;
typedef ndmp_scsi_set_target_reply ndmp_scsi_set_target_reply_v2;
typedef ndmp_scsi_set_target_reply ndmp_scsi_set_target_reply_v3;
typedef ndmp_scsi_reset_device_reply ndmp_scsi_reset_device_reply_v2;
typedef ndmp_scsi_reset_device_reply ndmp_scsi_reset_device_reply_v3;
typedef ndmp_scsi_reset_device_reply ndmp_scsi_reset_device_reply_v4;
typedef ndmp_scsi_reset_bus_reply ndmp_scsi_reset_bus_reply_v2;
typedef ndmp_scsi_reset_bus_reply ndmp_scsi_reset_bus_reply_v3;
typedef ndmp_execute_cdb_request ndmp_scsi_execute_cdb_request_v2;
typedef ndmp_execute_cdb_request ndmp_scsi_execute_cdb_request_v3;
typedef ndmp_execute_cdb_request ndmp_scsi_execute_cdb_request_v4;
typedef ndmp_execute_cdb_reply ndmp_scsi_execute_cdb_reply_v2;
typedef ndmp_execute_cdb_reply ndmp_scsi_execute_cdb_reply_v3;
typedef ndmp_execute_cdb_reply ndmp_scsi_execute_cdb_reply_v4;
/* TAPE */
typedef ndmp_tape_open_request ndmp_tape_open_request_v2;
typedef ndmp_tape_open_request_v3 ndmp_tape_open_request_v4;
typedef ndmp_tape_open_reply ndmp_tape_open_reply_v2;
typedef ndmp_tape_open_reply ndmp_tape_open_reply_v3;
typedef ndmp_tape_open_reply ndmp_tape_open_reply_v4;
typedef ndmp_tape_close_reply ndmp_tape_close_reply_v2;
typedef ndmp_tape_close_reply ndmp_tape_close_reply_v3;
typedef ndmp_tape_close_reply ndmp_tape_close_reply_v4;
typedef ndmp_tape_get_state_reply ndmp_tape_get_state_reply_v2;
typedef ndmp_tape_mtio_request ndmp_tape_mtio_request_v2;
typedef ndmp_tape_mtio_request ndmp_tape_mtio_request_v3;
typedef ndmp_tape_mtio_request ndmp_tape_mtio_request_v4;
typedef ndmp_tape_mtio_reply ndmp_tape_mtio_reply_v2;
typedef ndmp_tape_mtio_reply ndmp_tape_mtio_reply_v3;
typedef ndmp_tape_mtio_reply ndmp_tape_mtio_reply_v4;
typedef ndmp_tape_write_request ndmp_tape_write_request_v2;
typedef ndmp_tape_write_request ndmp_tape_write_request_v3;
typedef ndmp_tape_write_request ndmp_tape_write_request_v4;
typedef ndmp_tape_write_reply ndmp_tape_write_reply_v2;
typedef ndmp_tape_write_reply ndmp_tape_write_reply_v3;
typedef ndmp_tape_write_reply ndmp_tape_write_reply_v4;
typedef ndmp_tape_read_request ndmp_tape_read_request_v2;
typedef ndmp_tape_read_request ndmp_tape_read_request_v3;
typedef ndmp_tape_read_request ndmp_tape_read_request_v4;
typedef ndmp_tape_read_reply ndmp_tape_read_reply_v2;
typedef ndmp_tape_read_reply ndmp_tape_read_reply_v3;
typedef ndmp_tape_read_reply ndmp_tape_read_reply_v4;
typedef ndmp_tape_execute_cdb_request ndmp_tape_execute_cdb_request_v2;
typedef ndmp_tape_execute_cdb_request ndmp_tape_execute_cdb_request_v3;
typedef ndmp_tape_execute_cdb_request ndmp_tape_execute_cdb_request_v4;
typedef ndmp_tape_execute_cdb_reply ndmp_tape_execute_cdb_reply_v2;
typedef ndmp_tape_execute_cdb_reply ndmp_tape_execute_cdb_reply_v3;
typedef ndmp_tape_execute_cdb_reply ndmp_tape_execute_cdb_reply_v4;
/* MOVER */
typedef ndmp_fc_addr_v3 ndmp_fc_addr;
typedef ndmp_ipc_addr_v3 ndmp_ipc_addr;
typedef ndmp_mover_get_state_reply ndmp_mover_get_state_reply_v2;
typedef ndmp_mover_listen_request ndmp_mover_listen_request_v2;
typedef ndmp_mover_listen_request ndmp_mover_listen_request_v3;
typedef ndmp_mover_listen_request ndmp_mover_listen_request_v4;
typedef ndmp_mover_listen_reply ndmp_mover_listen_reply_v2;
typedef ndmp_mover_set_record_size_request ndmp_mover_set_record_size_request_v2;
typedef ndmp_mover_set_record_size_request ndmp_mover_set_record_size_request_v3;
typedef ndmp_mover_set_record_size_request ndmp_mover_set_record_size_request_v4;
typedef ndmp_mover_set_record_size_reply ndmp_mover_set_record_size_reply_v2;
typedef ndmp_mover_set_record_size_reply ndmp_mover_set_record_size_reply_v3;
typedef ndmp_mover_set_record_size_reply ndmp_mover_set_record_size_reply_v4;
typedef ndmp_mover_set_window_request ndmp_mover_set_window_request_v2;
typedef ndmp_mover_set_window_request ndmp_mover_set_window_request_v3;
typedef ndmp_mover_set_window_request ndmp_mover_set_window_request_v4;
typedef ndmp_mover_set_window_reply ndmp_mover_set_window_reply_v2;
typedef ndmp_mover_set_window_reply ndmp_mover_set_window_reply_v3;
typedef ndmp_mover_set_window_reply ndmp_mover_set_window_reply_v4;
typedef ndmp_mover_continue_reply ndmp_mover_continue_reply_v2;
typedef ndmp_mover_continue_reply ndmp_mover_continue_reply_v3;
typedef ndmp_mover_continue_reply ndmp_mover_continue_reply_v4;
typedef ndmp_mover_abort_reply ndmp_mover_abort_reply_v2;
typedef ndmp_mover_abort_reply ndmp_mover_abort_reply_v3;
typedef ndmp_mover_abort_reply ndmp_mover_abort_reply_v4;
typedef ndmp_mover_stop_reply ndmp_mover_stop_reply_v2;
typedef ndmp_mover_stop_reply ndmp_mover_stop_reply_v3;
typedef ndmp_mover_stop_reply ndmp_mover_stop_reply_v4;
typedef ndmp_mover_read_request ndmp_mover_read_request_v2;
typedef ndmp_mover_read_request ndmp_mover_read_request_v3;
typedef ndmp_mover_read_request ndmp_mover_read_request_v4;
typedef ndmp_mover_read_reply ndmp_mover_read_reply_v2;
typedef ndmp_mover_read_reply ndmp_mover_read_reply_v3;
typedef ndmp_mover_read_reply ndmp_mover_read_reply_v4;
typedef ndmp_mover_close_reply ndmp_mover_close_reply_v2;
typedef ndmp_mover_close_reply ndmp_mover_close_reply_v3;
typedef ndmp_mover_close_reply ndmp_mover_close_reply_v4;
typedef ndmp_mover_connect_reply_v3 ndmp_mover_connect_reply_v4;
/* DATA */
typedef ndmp_data_get_state_reply ndmp_data_get_state_reply_v2;
typedef ndmp_data_start_backup_request ndmp_data_start_backup_request_v2;
typedef ndmp_data_start_backup_request_v3 ndmp_data_start_backup_request_v4;
typedef ndmp_data_start_backup_reply ndmp_data_start_backup_reply_v2;
typedef ndmp_data_start_backup_reply ndmp_data_start_backup_reply_v3;
typedef ndmp_data_start_backup_reply ndmp_data_start_backup_reply_v4;
typedef ndmp_name ndmp_name_v2;
typedef ndmp_data_start_recover_request ndmp_data_start_recover_request_v2;
typedef ndmp_data_start_recover_request_v3 ndmp_data_start_recover_request_v4;
typedef ndmp_data_start_recover_reply ndmp_data_start_recover_reply_v2;
typedef ndmp_data_start_recover_reply ndmp_data_start_recover_reply_v3;
typedef ndmp_data_start_recover_reply ndmp_data_start_recover_reply_v4;
typedef ndmp_data_start_recover_reply ndmp_data_start_recover_filehist_reply_v4;
typedef ndmp_data_abort_reply ndmp_data_abort_reply_v2;
typedef ndmp_data_abort_reply ndmp_data_abort_reply_v3;
typedef ndmp_data_abort_reply ndmp_data_abort_reply_v4;
typedef ndmp_data_stop_reply ndmp_data_stop_reply_v2;
typedef ndmp_data_stop_reply ndmp_data_stop_reply_v3;
typedef ndmp_data_stop_reply ndmp_data_stop_reply_v4;
typedef ndmp_data_get_env_reply ndmp_data_get_env_reply_v2;
typedef ndmp_data_get_env_reply ndmp_data_get_env_reply_v3;
typedef ndmp_data_get_env_reply ndmp_data_get_env_reply_v4;
typedef ndmp_data_listen_request_v3 ndmp_data_listen_request_v4;
typedef ndmp_data_connect_reply_v3 ndmp_data_connect_reply_v4;
/* NOTIFY */
typedef ndmp_notify_data_halted_request ndmp_notify_data_halted_request_v2;
typedef ndmp_notify_data_halted_request ndmp_notify_data_halted_request_v3;
typedef ndmp_notify_connected_request ndmp_notify_connection_status_request_v2;
typedef ndmp_notify_connected_request ndmp_notify_connection_status_request_v3;
typedef ndmp_notify_connected_request ndmp_notify_connection_status_request_v4;
typedef ndmp_notify_mover_paused_request ndmp_notify_mover_paused_request_v2;
typedef ndmp_notify_mover_paused_request ndmp_notify_mover_paused_request_v3;
typedef ndmp_notify_mover_paused_request ndmp_notify_mover_paused_request_v4;
typedef ndmp_notify_mover_halted_request ndmp_notify_mover_halted_request_v2;
typedef ndmp_notify_mover_halted_request ndmp_notify_mover_halted_request_v3;
typedef ndmp_notify_data_read_request ndmp_notify_data_read_request_v2;
typedef ndmp_notify_data_read_request ndmp_notify_data_read_request_v3;
typedef ndmp_notify_data_read_request ndmp_notify_data_read_request_v4;
/* LOG */
typedef ndmp_log_log_request ndmp_log_log_request_v2;
typedef ndmp_log_log_request ndmp_log_log_request_v3;
typedef ndmp_log_log_request ndmp_log_log_request_v4;
typedef ndmp_log_debug_request ndmp_log_debug_request_v2;
typedef ndmp_log_debug_request ndmp_log_debug_request_v3;
typedef ndmp_log_debug_request ndmp_log_debug_request_v4;
typedef ndmp_log_file_request ndmp_log_file_request_v2;
/* FILE HISTORY */
typedef ndmp_file_v3 ndmp_file;
typedef ndmp_dir_v3 ndmp_dir;
typedef ndmp_node_v3 ndmp_node;
typedef ndmp_fh_add_unix_path_request ndmp_fh_add_unix_path_request_v2;
typedef ndmp_fh_add_unix_path_request ndmp_fh_add_unix_path_request_v3;
typedef ndmp_fh_add_file_request_v3 ndmp_fh_add_file_request_v4;
typedef ndmp_fh_add_unix_dir_request ndmp_fh_add_unix_dir_request_v2;
typedef ndmp_fh_add_unix_dir_request ndmp_fh_add_unix_dir_request_v3;
typedef ndmp_fh_add_dir_request_v3 ndmp_fh_add_dir_request_v4;
typedef ndmp_fh_add_unix_node_request ndmp_fh_add_unix_node_request_v2;
typedef ndmp_fh_add_unix_node_request ndmp_fh_add_unix_node_request_v3;
typedef ndmp_fh_add_node_request_v3 ndmp_fh_add_node_request_v4;