1*2654012fSReza Sabdar /* 2*2654012fSReza Sabdar * Copyright 2008 Sun Microsystems, Inc. All rights reserved. 3*2654012fSReza Sabdar * Use is subject to license terms. 4*2654012fSReza Sabdar */ 5*2654012fSReza Sabdar 6*2654012fSReza Sabdar /* 7*2654012fSReza Sabdar * BSD 3 Clause License 8*2654012fSReza Sabdar * 9*2654012fSReza Sabdar * Copyright (c) 2007, The Storage Networking Industry Association. 10*2654012fSReza Sabdar * 11*2654012fSReza Sabdar * Redistribution and use in source and binary forms, with or without 12*2654012fSReza Sabdar * modification, are permitted provided that the following conditions 13*2654012fSReza Sabdar * are met: 14*2654012fSReza Sabdar * - Redistributions of source code must retain the above copyright 15*2654012fSReza Sabdar * notice, this list of conditions and the following disclaimer. 16*2654012fSReza Sabdar * 17*2654012fSReza Sabdar * - Redistributions in binary form must reproduce the above copyright 18*2654012fSReza Sabdar * notice, this list of conditions and the following disclaimer in 19*2654012fSReza Sabdar * the documentation and/or other materials provided with the 20*2654012fSReza Sabdar * distribution. 21*2654012fSReza Sabdar * 22*2654012fSReza Sabdar * - Neither the name of The Storage Networking Industry Association (SNIA) 23*2654012fSReza Sabdar * nor the names of its contributors may be used to endorse or promote 24*2654012fSReza Sabdar * products derived from this software without specific prior written 25*2654012fSReza Sabdar * permission. 26*2654012fSReza Sabdar * 27*2654012fSReza Sabdar * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 28*2654012fSReza Sabdar * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 29*2654012fSReza Sabdar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 30*2654012fSReza Sabdar * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 31*2654012fSReza Sabdar * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 32*2654012fSReza Sabdar * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 33*2654012fSReza Sabdar * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 34*2654012fSReza Sabdar * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 35*2654012fSReza Sabdar * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 36*2654012fSReza Sabdar * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 37*2654012fSReza Sabdar * POSSIBILITY OF SUCH DAMAGE. 38*2654012fSReza Sabdar */ 39*2654012fSReza Sabdar /* Copyright (c) 1996, 1997 PDC, Network Appliance. All Rights Reserved */ 40*2654012fSReza Sabdar 41*2654012fSReza Sabdar #define VER 3 42*2654012fSReza Sabdar 43*2654012fSReza Sabdar const NDMPV2 = 2; 44*2654012fSReza Sabdar const NDMPV3 = 3; 45*2654012fSReza Sabdar const NDMPV4 = 4; 46*2654012fSReza Sabdar const NDMPVER = NDMPV4; 47*2654012fSReza Sabdar const NDMPPORT = 10000; 48*2654012fSReza Sabdar 49*2654012fSReza Sabdar struct ndmp_u_quad 50*2654012fSReza Sabdar { 51*2654012fSReza Sabdar u_long high; 52*2654012fSReza Sabdar u_long low; 53*2654012fSReza Sabdar }; 54*2654012fSReza Sabdar 55*2654012fSReza Sabdar struct ndmp_pval 56*2654012fSReza Sabdar { 57*2654012fSReza Sabdar string name<>; 58*2654012fSReza Sabdar string value<>; 59*2654012fSReza Sabdar }; 60*2654012fSReza Sabdar 61*2654012fSReza Sabdar struct ndmp_scsi_device 62*2654012fSReza Sabdar { 63*2654012fSReza Sabdar string name<>; 64*2654012fSReza Sabdar }; 65*2654012fSReza Sabdar 66*2654012fSReza Sabdar struct ndmp_tape_device 67*2654012fSReza Sabdar { 68*2654012fSReza Sabdar string name<>; 69*2654012fSReza Sabdar }; 70*2654012fSReza Sabdar 71*2654012fSReza Sabdar enum ndmp_error 72*2654012fSReza Sabdar { 73*2654012fSReza Sabdar NDMP_NO_ERR = 0, /* No error */ 74*2654012fSReza Sabdar NDMP_NOT_SUPPORTED_ERR = 1, /* Call is not supported */ 75*2654012fSReza Sabdar NDMP_DEVICE_BUSY_ERR = 2, /* The device is in use */ 76*2654012fSReza Sabdar NDMP_DEVICE_OPENED_ERR = 3, /* Another tape or scsi device is already open */ 77*2654012fSReza Sabdar NDMP_NOT_AUTHORIZED_ERR = 4, /* Connection has not been authorized */ 78*2654012fSReza Sabdar NDMP_PERMISSION_ERR = 5, /* Some sort of permission problem */ 79*2654012fSReza Sabdar NDMP_DEV_NOT_OPEN_ERR = 6, /* SCSI device is not open */ 80*2654012fSReza Sabdar NDMP_IO_ERR = 7, /* I/O error */ 81*2654012fSReza Sabdar NDMP_TIMEOUT_ERR = 8, /* command timed out */ 82*2654012fSReza Sabdar NDMP_ILLEGAL_ARGS_ERR = 9, /* illegal arguments in request */ 83*2654012fSReza Sabdar NDMP_NO_TAPE_LOADED_ERR = 10, /* Cannot open because there is no tape loaded */ 84*2654012fSReza Sabdar NDMP_WRITE_PROTECT_ERR = 11, /* tape cannot be open for write */ 85*2654012fSReza Sabdar NDMP_EOF_ERR = 12, /* Command encountered EOF */ 86*2654012fSReza Sabdar NDMP_EOM_ERR = 13, /* Command encountered EOM */ 87*2654012fSReza Sabdar NDMP_FILE_NOT_FOUND_ERR = 14, /* File not found during restore */ 88*2654012fSReza Sabdar NDMP_BAD_FILE_ERR = 15, /* The file descriptor is invalid */ 89*2654012fSReza Sabdar NDMP_NO_DEVICE_ERR = 16, /* The device is not at that target */ 90*2654012fSReza Sabdar NDMP_NO_BUS_ERR = 17, /* Invalid controller */ 91*2654012fSReza Sabdar NDMP_XDR_DECODE_ERR = 18, /* Can't decode the request argument */ 92*2654012fSReza Sabdar NDMP_ILLEGAL_STATE_ERR = 19, /* Call can't be performed at this state */ 93*2654012fSReza Sabdar NDMP_UNDEFINED_ERR = 20, /* Undefined Error */ 94*2654012fSReza Sabdar NDMP_XDR_ENCODE_ERR = 21, /* Can't encode the reply argument */ 95*2654012fSReza Sabdar NDMP_NO_MEM_ERR = 22, /* No memory */ 96*2654012fSReza Sabdar 97*2654012fSReza Sabdar /* 98*2654012fSReza Sabdar * NDMP V3 99*2654012fSReza Sabdar */ 100*2654012fSReza Sabdar NDMP_CONNECT_ERR = 23, 101*2654012fSReza Sabdar 102*2654012fSReza Sabdar /* 103*2654012fSReza Sabdar * NDMP V4 104*2654012fSReza Sabdar */ 105*2654012fSReza Sabdar NDMP_SEQUENCE_NUM_ERR = 24, 106*2654012fSReza Sabdar NDMP_READ_IN_PROGRESS_ERR = 25, 107*2654012fSReza Sabdar NDMP_PRECONDITION_ERR = 26, 108*2654012fSReza Sabdar NDMP_CLASS_NOT_SUPPORTED_ERR = 27, 109*2654012fSReza Sabdar NDMP_VERSION_NOT_SUPPORTED_ERR = 28, 110*2654012fSReza Sabdar NDMP_EXT_DUPL_CLASSES_ERR = 29, 111*2654012fSReza Sabdar NDMP_EXT_DANDN_ILLEGAL_ERR = 30 112*2654012fSReza Sabdar }; 113*2654012fSReza Sabdar 114*2654012fSReza Sabdar enum ndmp_header_message_type 115*2654012fSReza Sabdar { 116*2654012fSReza Sabdar NDMP_MESSAGE_REQUEST, 117*2654012fSReza Sabdar NDMP_MESSAGE_REPLY 118*2654012fSReza Sabdar }; 119*2654012fSReza Sabdar 120*2654012fSReza Sabdar enum ndmp_message 121*2654012fSReza Sabdar { 122*2654012fSReza Sabdar NDMP_CONNECT_OPEN = 0x900, 123*2654012fSReza Sabdar NDMP_CONNECT_CLIENT_AUTH = 0x901, 124*2654012fSReza Sabdar NDMP_CONNECT_CLOSE = 0x902, 125*2654012fSReza Sabdar NDMP_CONNECT_SERVER_AUTH = 0x903, 126*2654012fSReza Sabdar 127*2654012fSReza Sabdar NDMP_CONFIG_GET_HOST_INFO = 0x100, 128*2654012fSReza Sabdar NDMP_CONFIG_GET_BUTYPE_ATTR = 0x101, /* NDMP V2 */ 129*2654012fSReza Sabdar NDMP_CONFIG_GET_CONNECTION_TYPE = 0x102, 130*2654012fSReza Sabdar NDMP_CONFIG_GET_AUTH_ATTR = 0x103, 131*2654012fSReza Sabdar NDMP_CONFIG_GET_BUTYPE_INFO = 0x104, /* NDMP V3,4 */ 132*2654012fSReza Sabdar NDMP_CONFIG_GET_FS_INFO = 0x105, /* NDMP V3,4 */ 133*2654012fSReza Sabdar NDMP_CONFIG_GET_TAPE_INFO = 0x106, /* NDMP V3,4 */ 134*2654012fSReza Sabdar NDMP_CONFIG_GET_SCSI_INFO = 0x107, /* NDMP V3,4 */ 135*2654012fSReza Sabdar NDMP_CONFIG_GET_SERVER_INFO = 0x108, /* NDMP V3,4 */ 136*2654012fSReza Sabdar NDMP_CONFIG_SET_EXT_LIST = 0x109, /* NDMP V4 */ 137*2654012fSReza Sabdar NDMP_CONFIG_GET_EXT_LIST = 0x10A, /* NDMP V4 */ 138*2654012fSReza Sabdar 139*2654012fSReza Sabdar NDMP_SCSI_OPEN = 0x200, 140*2654012fSReza Sabdar NDMP_SCSI_CLOSE = 0x201, 141*2654012fSReza Sabdar NDMP_SCSI_GET_STATE = 0x202, 142*2654012fSReza Sabdar NDMP_SCSI_SET_TARGET = 0x203, /* NDMP V2,3 */ 143*2654012fSReza Sabdar NDMP_SCSI_RESET_DEVICE = 0x204, 144*2654012fSReza Sabdar NDMP_SCSI_RESET_BUS = 0x205, /* NDMP V2,3 */ 145*2654012fSReza Sabdar NDMP_SCSI_EXECUTE_CDB = 0x206, 146*2654012fSReza Sabdar 147*2654012fSReza Sabdar NDMP_TAPE_OPEN = 0x300, 148*2654012fSReza Sabdar NDMP_TAPE_CLOSE = 0x301, 149*2654012fSReza Sabdar NDMP_TAPE_GET_STATE = 0x302, 150*2654012fSReza Sabdar NDMP_TAPE_MTIO = 0x303, 151*2654012fSReza Sabdar NDMP_TAPE_WRITE = 0x304, 152*2654012fSReza Sabdar NDMP_TAPE_READ = 0x305, 153*2654012fSReza Sabdar NDMP_TAPE_SET_RECORD_SIZE = 0x306, /* NDMP V1 */ 154*2654012fSReza Sabdar NDMP_TAPE_EXECUTE_CDB = 0x307, 155*2654012fSReza Sabdar 156*2654012fSReza Sabdar NDMP_DATA_GET_STATE = 0x400, 157*2654012fSReza Sabdar NDMP_DATA_START_BACKUP = 0x401, 158*2654012fSReza Sabdar NDMP_DATA_START_RECOVER = 0x402, 159*2654012fSReza Sabdar NDMP_DATA_ABORT = 0x403, 160*2654012fSReza Sabdar NDMP_DATA_GET_ENV = 0x404, 161*2654012fSReza Sabdar NDMP_DATA_RESVD1 = 0x405, 162*2654012fSReza Sabdar NDMP_DATA_RESVD2 = 0x406, 163*2654012fSReza Sabdar NDMP_DATA_STOP = 0x407, 164*2654012fSReza Sabdar NDMP_DATA_CONTINUE = 0x408, /* NDMP V1 */ 165*2654012fSReza Sabdar NDMP_DATA_LISTEN = 0x409, 166*2654012fSReza Sabdar NDMP_DATA_CONNECT = 0x40A, 167*2654012fSReza Sabdar NDMP_DATA_START_RECOVER_FILEHIST = 0x40B, /* NDMP V4 */ 168*2654012fSReza Sabdar 169*2654012fSReza Sabdar NDMP_NOTIFY_RESERVED = 0x500, 170*2654012fSReza Sabdar NDMP_NOTIFY_DATA_HALTED = 0x501, 171*2654012fSReza Sabdar NDMP_NOTIFY_CONNECTION_STATUS = 0x502, 172*2654012fSReza Sabdar NDMP_NOTIFY_MOVER_HALTED = 0x503, 173*2654012fSReza Sabdar NDMP_NOTIFY_MOVER_PAUSED = 0x504, 174*2654012fSReza Sabdar NDMP_NOTIFY_DATA_READ = 0x505, 175*2654012fSReza Sabdar 176*2654012fSReza Sabdar _NDMP_LOG_LOG = 0x600, /* NDMP V2 */ 177*2654012fSReza Sabdar _NDMP_LOG_DEBUG = 0x601, /* NDMP V2 */ 178*2654012fSReza Sabdar NDMP_LOG_FILE = 0x602, /* NDMP V3,4 */ 179*2654012fSReza Sabdar NDMP_LOG_MESSAGE = 0x603, /* NDMP V3,4 */ 180*2654012fSReza Sabdar 181*2654012fSReza Sabdar NDMP_FH_ADD_UNIX_PATH = 0x700, /* NDMP V2,3 */ 182*2654012fSReza Sabdar NDMP_FH_ADD_UNIX_DIR = 0x701, /* NDMP V2,3 */ 183*2654012fSReza Sabdar NDMP_FH_ADD_UNIX_NODE = 0x702, /* NDMP V2,3 */ 184*2654012fSReza Sabdar NDMP_FH_ADD_FILE = 0x703, /* NDMP V3,4 */ 185*2654012fSReza Sabdar NDMP_FH_ADD_DIR = 0x704, /* NDMP V3,4 */ 186*2654012fSReza Sabdar NDMP_FH_ADD_NODE = 0x705, /* NDMP V3,4 */ 187*2654012fSReza Sabdar 188*2654012fSReza Sabdar NDMP_MOVER_GET_STATE = 0xA00, 189*2654012fSReza Sabdar NDMP_MOVER_LISTEN = 0xA01, 190*2654012fSReza Sabdar NDMP_MOVER_CONTINUE = 0xA02, 191*2654012fSReza Sabdar NDMP_MOVER_ABORT = 0xA03, 192*2654012fSReza Sabdar NDMP_MOVER_STOP = 0xA04, 193*2654012fSReza Sabdar NDMP_MOVER_SET_WINDOW = 0xA05, 194*2654012fSReza Sabdar NDMP_MOVER_READ = 0xA06, 195*2654012fSReza Sabdar NDMP_MOVER_CLOSE = 0xA07, 196*2654012fSReza Sabdar NDMP_MOVER_SET_RECORD_SIZE = 0xA08, 197*2654012fSReza Sabdar NDMP_MOVER_CONNECT = 0xA09, /* NDMP V3,4 */ 198*2654012fSReza Sabdar 199*2654012fSReza Sabdar NDMP_EXT_STANDARD_BASE = 0x10000, 200*2654012fSReza Sabdar 201*2654012fSReza Sabdar NDMP_EXT_PROPRIETARY_BASE = 0x20000000 202*2654012fSReza Sabdar 203*2654012fSReza Sabdar }; 204*2654012fSReza Sabdar 205*2654012fSReza Sabdar const NDMP_CONNECT_AUTH = NDMP_CONNECT_CLIENT_AUTH; 206*2654012fSReza Sabdar const NDMP_MESSAGE_POST = NDMP_MESSAGE_REQUEST; 207*2654012fSReza Sabdar 208*2654012fSReza Sabdar struct ndmp_header 209*2654012fSReza Sabdar { 210*2654012fSReza Sabdar u_long sequence; /* Monotonically increasing number */ 211*2654012fSReza Sabdar u_long time_stamp; /* Time stamp of message */ 212*2654012fSReza Sabdar ndmp_header_message_type message_type; /* What type of message */ 213*2654012fSReza Sabdar enum ndmp_message message; /* Message number */ 214*2654012fSReza Sabdar u_long reply_sequence; /* Reply is in response to */ 215*2654012fSReza Sabdar ndmp_error error; /* Communications errors */ 216*2654012fSReza Sabdar }; 217*2654012fSReza Sabdar 218*2654012fSReza Sabdar 219*2654012fSReza Sabdar /***************************/ 220*2654012fSReza Sabdar /* CONNECT INTERFACE (V2) */ 221*2654012fSReza Sabdar /***************************/ 222*2654012fSReza Sabdar 223*2654012fSReza Sabdar /* NDMP_CONNECT_OPEN */ 224*2654012fSReza Sabdar struct ndmp_connect_open_request 225*2654012fSReza Sabdar { 226*2654012fSReza Sabdar u_short protocol_version; /* the version of protocol supported */ 227*2654012fSReza Sabdar }; 228*2654012fSReza Sabdar 229*2654012fSReza Sabdar struct ndmp_connect_open_reply 230*2654012fSReza Sabdar { 231*2654012fSReza Sabdar ndmp_error error; 232*2654012fSReza Sabdar }; 233*2654012fSReza Sabdar 234*2654012fSReza Sabdar /* NDMP_CONNECT_CLIENT_AUTH = NDMP_CONNECT_AUTH */ 235*2654012fSReza Sabdar enum ndmp_auth_type 236*2654012fSReza Sabdar { 237*2654012fSReza Sabdar NDMP_AUTH_NONE, /* no password is required */ 238*2654012fSReza Sabdar NDMP_AUTH_TEXT, /* the clear text password */ 239*2654012fSReza Sabdar NDMP_AUTH_MD5 /* md5 */ 240*2654012fSReza Sabdar }; 241*2654012fSReza Sabdar 242*2654012fSReza Sabdar struct ndmp_auth_text 243*2654012fSReza Sabdar { 244*2654012fSReza Sabdar string user<>; 245*2654012fSReza Sabdar string password<>; 246*2654012fSReza Sabdar }; 247*2654012fSReza Sabdar 248*2654012fSReza Sabdar struct ndmp_auth_md5 249*2654012fSReza Sabdar { 250*2654012fSReza Sabdar string user<>; 251*2654012fSReza Sabdar opaque auth_digest[16]; 252*2654012fSReza Sabdar }; 253*2654012fSReza Sabdar 254*2654012fSReza Sabdar union ndmp_auth_data switch (enum ndmp_auth_type auth_type) 255*2654012fSReza Sabdar { 256*2654012fSReza Sabdar case NDMP_AUTH_NONE: 257*2654012fSReza Sabdar void; 258*2654012fSReza Sabdar case NDMP_AUTH_TEXT: 259*2654012fSReza Sabdar struct ndmp_auth_text auth_text; 260*2654012fSReza Sabdar case NDMP_AUTH_MD5: 261*2654012fSReza Sabdar struct ndmp_auth_md5 auth_md5; 262*2654012fSReza Sabdar }; 263*2654012fSReza Sabdar 264*2654012fSReza Sabdar struct ndmp_connect_client_auth_request 265*2654012fSReza Sabdar { 266*2654012fSReza Sabdar ndmp_auth_data auth_data; 267*2654012fSReza Sabdar }; 268*2654012fSReza Sabdar 269*2654012fSReza Sabdar struct ndmp_connect_client_auth_reply 270*2654012fSReza Sabdar { 271*2654012fSReza Sabdar ndmp_error error; 272*2654012fSReza Sabdar }; 273*2654012fSReza Sabdar 274*2654012fSReza Sabdar 275*2654012fSReza Sabdar /* NDMP_CONNECT_CLOSE */ 276*2654012fSReza Sabdar /* no request arguments */ 277*2654012fSReza Sabdar /* no reply arguments */ 278*2654012fSReza Sabdar 279*2654012fSReza Sabdar /* NDMP_CONNECT_SERVER_AUTH */ 280*2654012fSReza Sabdar union ndmp_auth_attr switch (enum ndmp_auth_type auth_type) 281*2654012fSReza Sabdar { 282*2654012fSReza Sabdar case NDMP_AUTH_NONE: 283*2654012fSReza Sabdar void; 284*2654012fSReza Sabdar case NDMP_AUTH_TEXT: 285*2654012fSReza Sabdar void; 286*2654012fSReza Sabdar case NDMP_AUTH_MD5: 287*2654012fSReza Sabdar opaque challenge[64]; 288*2654012fSReza Sabdar }; 289*2654012fSReza Sabdar 290*2654012fSReza Sabdar struct ndmp_connect_server_auth_request 291*2654012fSReza Sabdar { 292*2654012fSReza Sabdar ndmp_auth_attr client_attr; 293*2654012fSReza Sabdar }; 294*2654012fSReza Sabdar 295*2654012fSReza Sabdar struct ndmp_connect_server_auth_reply 296*2654012fSReza Sabdar { 297*2654012fSReza Sabdar ndmp_error error; 298*2654012fSReza Sabdar ndmp_auth_data auth_result; 299*2654012fSReza Sabdar }; 300*2654012fSReza Sabdar 301*2654012fSReza Sabdar 302*2654012fSReza Sabdar /***************************/ 303*2654012fSReza Sabdar /* CONNECT INTERFACE (V3) */ 304*2654012fSReza Sabdar /***************************/ 305*2654012fSReza Sabdar 306*2654012fSReza Sabdar /* NDMP_CONNECT_OPEN - same as V2 */ 307*2654012fSReza Sabdar 308*2654012fSReza Sabdar struct ndmp_auth_text_v3 309*2654012fSReza Sabdar { 310*2654012fSReza Sabdar string auth_id<>; 311*2654012fSReza Sabdar string auth_password<>; 312*2654012fSReza Sabdar 313*2654012fSReza Sabdar }; 314*2654012fSReza Sabdar 315*2654012fSReza Sabdar struct ndmp_auth_md5_v3 316*2654012fSReza Sabdar { 317*2654012fSReza Sabdar string auth_id<>; 318*2654012fSReza Sabdar opaque auth_digest[16]; 319*2654012fSReza Sabdar }; 320*2654012fSReza Sabdar 321*2654012fSReza Sabdar union ndmp_auth_data_v3 switch (enum ndmp_auth_type auth_type) 322*2654012fSReza Sabdar { 323*2654012fSReza Sabdar case NDMP_AUTH_NONE: 324*2654012fSReza Sabdar void; 325*2654012fSReza Sabdar case NDMP_AUTH_TEXT: 326*2654012fSReza Sabdar struct ndmp_auth_text_v3 auth_text; 327*2654012fSReza Sabdar case NDMP_AUTH_MD5: 328*2654012fSReza Sabdar struct ndmp_auth_md5_v3 auth_md5; 329*2654012fSReza Sabdar }; 330*2654012fSReza Sabdar 331*2654012fSReza Sabdar struct ndmp_connect_client_auth_request_v3 332*2654012fSReza Sabdar { 333*2654012fSReza Sabdar ndmp_auth_data_v3 auth_data; 334*2654012fSReza Sabdar }; 335*2654012fSReza Sabdar 336*2654012fSReza Sabdar struct ndmp_connect_client_auth_reply_v3 337*2654012fSReza Sabdar { 338*2654012fSReza Sabdar ndmp_error error; 339*2654012fSReza Sabdar }; 340*2654012fSReza Sabdar 341*2654012fSReza Sabdar /* NDMP_CONNECT_CLOSE - same as V2 */ 342*2654012fSReza Sabdar 343*2654012fSReza Sabdar /* NDMP_CONNECT_SERVER_AUTH - same as V2 */ 344*2654012fSReza Sabdar 345*2654012fSReza Sabdar 346*2654012fSReza Sabdar /***************************/ 347*2654012fSReza Sabdar /* CONNECT INTERFACE (V4) */ 348*2654012fSReza Sabdar /***************************/ 349*2654012fSReza Sabdar 350*2654012fSReza Sabdar /* NDMP_CONNECT_OPEN - same as V3 */ 351*2654012fSReza Sabdar 352*2654012fSReza Sabdar /* NDMP_CONNECT_CLIENT_AUTH - same as V3 */ 353*2654012fSReza Sabdar 354*2654012fSReza Sabdar /* NDMP_CONNECT_CLOSE - same as V3 */ 355*2654012fSReza Sabdar 356*2654012fSReza Sabdar /* NDMP_CONNECT_SERVER_AUTH - same as V3 */ 357*2654012fSReza Sabdar 358*2654012fSReza Sabdar 359*2654012fSReza Sabdar /*************************/ 360*2654012fSReza Sabdar /* CONFIG INTERFACE (V2) */ 361*2654012fSReza Sabdar /*************************/ 362*2654012fSReza Sabdar 363*2654012fSReza Sabdar /* NDMP_CONFIG_GET_HOST_INFO */ 364*2654012fSReza Sabdar /* no request arguments */ 365*2654012fSReza Sabdar 366*2654012fSReza Sabdar struct ndmp_config_get_host_info_reply 367*2654012fSReza Sabdar { 368*2654012fSReza Sabdar ndmp_error error; 369*2654012fSReza Sabdar string hostname<>; /* host name */ 370*2654012fSReza Sabdar string os_type<>; /* The operating system type (i.e. SOLARIS) */ 371*2654012fSReza Sabdar string os_vers<>; /* The version number of the OS (i.e. 2.5) */ 372*2654012fSReza Sabdar string hostid<>; 373*2654012fSReza Sabdar ndmp_auth_type auth_type<>; 374*2654012fSReza Sabdar }; 375*2654012fSReza Sabdar 376*2654012fSReza Sabdar /* NDMP_CONFIG_GET_BUTYPE_ATTR */ 377*2654012fSReza Sabdar const NDMP_NO_BACKUP_FILELIST = 0x0001; 378*2654012fSReza Sabdar const NDMP_NO_BACKUP_FHINFO = 0x0002; 379*2654012fSReza Sabdar const NDMP_NO_RECOVER_FILELIST = 0x0004; 380*2654012fSReza Sabdar const NDMP_NO_RECOVER_FHINFO = 0x0008; 381*2654012fSReza Sabdar const NDMP_NO_RECOVER_SSID = 0x0010; 382*2654012fSReza Sabdar const NDMP_NO_RECOVER_INC_ONLY = 0x0020; 383*2654012fSReza Sabdar 384*2654012fSReza Sabdar struct ndmp_config_get_butype_attr_request 385*2654012fSReza Sabdar { 386*2654012fSReza Sabdar string name<>; /* backup type name */ 387*2654012fSReza Sabdar }; 388*2654012fSReza Sabdar 389*2654012fSReza Sabdar struct ndmp_config_get_butype_attr_reply 390*2654012fSReza Sabdar { 391*2654012fSReza Sabdar ndmp_error error; 392*2654012fSReza Sabdar u_long attrs; 393*2654012fSReza Sabdar }; 394*2654012fSReza Sabdar 395*2654012fSReza Sabdar /* NDMP_CONFIG_GET_MOVER_TYPE */ 396*2654012fSReza Sabdar /* no request arguments */ 397*2654012fSReza Sabdar 398*2654012fSReza Sabdar enum ndmp_addr_type 399*2654012fSReza Sabdar { 400*2654012fSReza Sabdar NDMP_ADDR_LOCAL = 0, 401*2654012fSReza Sabdar NDMP_ADDR_TCP = 1, 402*2654012fSReza Sabdar NDMP_ADDR_FC = 2, /* NDMP V2,3 */ 403*2654012fSReza Sabdar NDMP_ADDR_IPC = 3 404*2654012fSReza Sabdar }; 405*2654012fSReza Sabdar 406*2654012fSReza Sabdar struct ndmp_config_get_mover_type_reply 407*2654012fSReza Sabdar { 408*2654012fSReza Sabdar ndmp_error error; 409*2654012fSReza Sabdar ndmp_addr_type methods<>; 410*2654012fSReza Sabdar }; 411*2654012fSReza Sabdar 412*2654012fSReza Sabdar /* NDMP_CONFIG_GET_AUTH_ATTR */ 413*2654012fSReza Sabdar struct ndmp_config_get_auth_attr_request 414*2654012fSReza Sabdar { 415*2654012fSReza Sabdar ndmp_auth_type auth_type; 416*2654012fSReza Sabdar }; 417*2654012fSReza Sabdar 418*2654012fSReza Sabdar struct ndmp_config_get_auth_attr_reply 419*2654012fSReza Sabdar { 420*2654012fSReza Sabdar ndmp_error error; 421*2654012fSReza Sabdar ndmp_auth_attr server_attr; 422*2654012fSReza Sabdar }; 423*2654012fSReza Sabdar 424*2654012fSReza Sabdar 425*2654012fSReza Sabdar /*************************/ 426*2654012fSReza Sabdar /* CONFIG INTERFACE (V3) */ 427*2654012fSReza Sabdar /*************************/ 428*2654012fSReza Sabdar 429*2654012fSReza Sabdar /* NDMP_CONFIG_GET_HOST_INFO */ 430*2654012fSReza Sabdar /* no request arguments */ 431*2654012fSReza Sabdar 432*2654012fSReza Sabdar struct ndmp_config_get_host_info_reply_v3 433*2654012fSReza Sabdar { 434*2654012fSReza Sabdar ndmp_error error; 435*2654012fSReza Sabdar string hostname<>; /* host name */ 436*2654012fSReza Sabdar string os_type<>; /* The operating system type (i.e. SOLARIS) */ 437*2654012fSReza Sabdar string os_vers<>; /* The version number of the OS (i.e. 2.5) */ 438*2654012fSReza Sabdar string hostid<>; 439*2654012fSReza Sabdar }; 440*2654012fSReza Sabdar 441*2654012fSReza Sabdar /* NDMP_CONFIG_GET_CONNECTION_TYPE */ 442*2654012fSReza Sabdar /* no request arguments */ 443*2654012fSReza Sabdar 444*2654012fSReza Sabdar struct ndmp_config_get_connection_type_reply_v3 445*2654012fSReza Sabdar { 446*2654012fSReza Sabdar ndmp_error error; 447*2654012fSReza Sabdar ndmp_addr_type addr_types<>; 448*2654012fSReza Sabdar }; 449*2654012fSReza Sabdar 450*2654012fSReza Sabdar /* NDMP_CONFIG_GET_AUTH_ATTR - same as V2 */ 451*2654012fSReza Sabdar 452*2654012fSReza Sabdar /* NDMP_CONFIG_GET_SERVER_INFO */ 453*2654012fSReza Sabdar /* no requset arguments */ 454*2654012fSReza Sabdar 455*2654012fSReza Sabdar struct ndmp_config_get_server_info_reply_v3 456*2654012fSReza Sabdar { 457*2654012fSReza Sabdar ndmp_error error; 458*2654012fSReza Sabdar string vendor_name<>; 459*2654012fSReza Sabdar string product_name<>; 460*2654012fSReza Sabdar string revision_number<>; 461*2654012fSReza Sabdar ndmp_auth_type auth_type<>; 462*2654012fSReza Sabdar }; 463*2654012fSReza Sabdar 464*2654012fSReza Sabdar /* Backup type attributes */ 465*2654012fSReza Sabdar const NDMP_BUTYPE_BACKUP_FILE_HISTORY = 0x0001; /* NDMP V2,3 */ 466*2654012fSReza Sabdar const NDMP_BUTYPE_BACKUP_FILELIST = 0x0002; 467*2654012fSReza Sabdar const NDMP_BUTYPE_RECOVER_FILELIST = 0x0004; 468*2654012fSReza Sabdar const NDMP_BUTYPE_BACKUP_DIRECT = 0x0008; 469*2654012fSReza Sabdar const NDMP_BUTYPE_RECOVER_DIRECT = 0x0010; 470*2654012fSReza Sabdar const NDMP_BUTYPE_BACKUP_INCREMENTAL = 0x0020; 471*2654012fSReza Sabdar const NDMP_BUTYPE_RECOVER_INCREMENTAL = 0x0040; 472*2654012fSReza Sabdar const NDMP_BUTYPE_BACKUP_UTF8 = 0x0080; 473*2654012fSReza Sabdar const NDMP_BUTYPE_RECOVER_UTF8 = 0x0100; 474*2654012fSReza Sabdar const NDMP_BUTYPE_BACKUP_FH_FILE = 0x0200; /* NDMP V4 */ 475*2654012fSReza Sabdar const NDMP_BUTYPE_BACKUP_FH_DIR = 0x0400; /* NDMP V4 */ 476*2654012fSReza Sabdar const NDMP_BUTYPE_RECOVER_FILEHIST = 0x0800; /* NDMP V4 */ 477*2654012fSReza Sabdar const NDMP_BUTYPE_RECOVER_FH_FILE = 0x1000; /* NDMP V4 */ 478*2654012fSReza Sabdar const NDMP_BUTYPE_RECOVER_FH_DIR = 0x2000; /* NDMP V4 */ 479*2654012fSReza Sabdar 480*2654012fSReza Sabdar 481*2654012fSReza Sabdar struct ndmp_butype_info 482*2654012fSReza Sabdar { 483*2654012fSReza Sabdar string butype_name<>; 484*2654012fSReza Sabdar ndmp_pval default_env<>; 485*2654012fSReza Sabdar u_long attrs; 486*2654012fSReza Sabdar }; 487*2654012fSReza Sabdar 488*2654012fSReza Sabdar /* NDMP_CONFIG_GET_BUTYPE_INFO */ 489*2654012fSReza Sabdar /* no request arguments */ 490*2654012fSReza Sabdar 491*2654012fSReza Sabdar struct ndmp_config_get_butype_info_reply_v3 492*2654012fSReza Sabdar { 493*2654012fSReza Sabdar ndmp_error error; 494*2654012fSReza Sabdar ndmp_butype_info butype_info<>; 495*2654012fSReza Sabdar }; 496*2654012fSReza Sabdar 497*2654012fSReza Sabdar /* invalid bit */ 498*2654012fSReza Sabdar const NDMP_FS_INFO_TOTAL_SIZE_INVALID = 0x00000001; 499*2654012fSReza Sabdar const NDMP_FS_INFO_USED_SIZE_INVALID = 0x00000002; 500*2654012fSReza Sabdar const NDMP_FS_INFO_AVAIL_SIZE_INVALID = 0x00000004; 501*2654012fSReza Sabdar const NDMP_FS_INFO_TOTAL_INODES_INVALID = 0x00000008; 502*2654012fSReza Sabdar const NDMP_FS_INFO_USED_INODES_INVALID = 0x00000010; 503*2654012fSReza Sabdar 504*2654012fSReza Sabdar struct ndmp_fs_info_v3 505*2654012fSReza Sabdar { 506*2654012fSReza Sabdar u_long invalid; 507*2654012fSReza Sabdar string fs_type<>; 508*2654012fSReza Sabdar string fs_logical_device<>; 509*2654012fSReza Sabdar string fs_physical_device<>; 510*2654012fSReza Sabdar ndmp_u_quad total_size; 511*2654012fSReza Sabdar ndmp_u_quad used_size; 512*2654012fSReza Sabdar ndmp_u_quad avail_size; 513*2654012fSReza Sabdar ndmp_u_quad total_inodes; 514*2654012fSReza Sabdar ndmp_u_quad used_inodes; 515*2654012fSReza Sabdar ndmp_pval fs_env<>; 516*2654012fSReza Sabdar string fs_status<>; 517*2654012fSReza Sabdar }; 518*2654012fSReza Sabdar 519*2654012fSReza Sabdar /* NDMP_CONFIG_GET_FS_INFO */ 520*2654012fSReza Sabdar /* no request arguments */ 521*2654012fSReza Sabdar 522*2654012fSReza Sabdar struct ndmp_config_get_fs_info_reply_v3 523*2654012fSReza Sabdar { 524*2654012fSReza Sabdar ndmp_error error; 525*2654012fSReza Sabdar ndmp_fs_info_v3 fs_info<>; 526*2654012fSReza Sabdar }; 527*2654012fSReza Sabdar 528*2654012fSReza Sabdar /* NDMP_CONFIG_GET_TAPE_INFO */ 529*2654012fSReza Sabdar /* no request arguments */ 530*2654012fSReza Sabdar 531*2654012fSReza Sabdar /* tape attributes */ 532*2654012fSReza Sabdar const NDMP_TAPE_ATTR_REWIND = 0x00000001; 533*2654012fSReza Sabdar const NDMP_TAPE_ATTR_UNLOAD = 0x00000002; 534*2654012fSReza Sabdar const NDMP_TAPE_ATTR_RAW = 0x00000004; 535*2654012fSReza Sabdar 536*2654012fSReza Sabdar 537*2654012fSReza Sabdar struct ndmp_device_capability_v3 538*2654012fSReza Sabdar { 539*2654012fSReza Sabdar string device<>; 540*2654012fSReza Sabdar u_long attr; 541*2654012fSReza Sabdar ndmp_pval capability<>; 542*2654012fSReza Sabdar }; 543*2654012fSReza Sabdar 544*2654012fSReza Sabdar struct ndmp_device_info_v3 545*2654012fSReza Sabdar { 546*2654012fSReza Sabdar string model<>; 547*2654012fSReza Sabdar ndmp_device_capability_v3 caplist<>; 548*2654012fSReza Sabdar 549*2654012fSReza Sabdar }; 550*2654012fSReza Sabdar struct ndmp_config_get_tape_info_reply_v3 551*2654012fSReza Sabdar { 552*2654012fSReza Sabdar ndmp_error error; 553*2654012fSReza Sabdar ndmp_device_info_v3 tape_info<>; 554*2654012fSReza Sabdar 555*2654012fSReza Sabdar }; 556*2654012fSReza Sabdar 557*2654012fSReza Sabdar /* NDMP_CONFIG_GET_SCSI_INFO */ 558*2654012fSReza Sabdar 559*2654012fSReza Sabdar /* jukebox attributes */ 560*2654012fSReza Sabdar struct ndmp_config_get_scsi_info_reply_v3 561*2654012fSReza Sabdar { 562*2654012fSReza Sabdar ndmp_error error; 563*2654012fSReza Sabdar ndmp_device_info_v3 scsi_info<>; 564*2654012fSReza Sabdar }; 565*2654012fSReza Sabdar 566*2654012fSReza Sabdar 567*2654012fSReza Sabdar /*************************/ 568*2654012fSReza Sabdar /* CONFIG INTERFACE (V4) */ 569*2654012fSReza Sabdar /*************************/ 570*2654012fSReza Sabdar 571*2654012fSReza Sabdar /* NDMP_CONFIG_GET_HOST_INFO - same as V3 */ 572*2654012fSReza Sabdar 573*2654012fSReza Sabdar /* NDMP_CONFIG_GET_SERVER_INFO - same as V3 */ 574*2654012fSReza Sabdar 575*2654012fSReza Sabdar /* NDMP_CONFIG_GET_CONNECTION_TYPE - same as V3 */ 576*2654012fSReza Sabdar 577*2654012fSReza Sabdar /* NDMP_CONFIG_GET_AUTH_ATTR - same as V3 */ 578*2654012fSReza Sabdar 579*2654012fSReza Sabdar 580*2654012fSReza Sabdar struct ndmp_config_get_butype_info_reply_v4 581*2654012fSReza Sabdar { 582*2654012fSReza Sabdar ndmp_error error; 583*2654012fSReza Sabdar ndmp_butype_info butype_info<>; 584*2654012fSReza Sabdar }; 585*2654012fSReza Sabdar 586*2654012fSReza Sabdar 587*2654012fSReza Sabdar /* NDMP_CONFIG_GET_FS_INFO - same as V3 */ 588*2654012fSReza Sabdar 589*2654012fSReza Sabdar struct ndmp_class_list 590*2654012fSReza Sabdar { 591*2654012fSReza Sabdar u_short ext_class_id; 592*2654012fSReza Sabdar u_short ext_version<>; 593*2654012fSReza Sabdar }; 594*2654012fSReza Sabdar 595*2654012fSReza Sabdar struct ndmp_class_version 596*2654012fSReza Sabdar { 597*2654012fSReza Sabdar u_short ext_class_id; 598*2654012fSReza Sabdar u_short ext_version; 599*2654012fSReza Sabdar }; 600*2654012fSReza Sabdar 601*2654012fSReza Sabdar struct ndmp_config_get_ext_list_reply 602*2654012fSReza Sabdar { 603*2654012fSReza Sabdar ndmp_error error; 604*2654012fSReza Sabdar ndmp_class_list class_list<>; 605*2654012fSReza Sabdar }; 606*2654012fSReza Sabdar 607*2654012fSReza Sabdar struct ndmp_config_set_ext_list_request 608*2654012fSReza Sabdar { 609*2654012fSReza Sabdar ndmp_class_version ndmp_selected_ext<>; 610*2654012fSReza Sabdar }; 611*2654012fSReza Sabdar 612*2654012fSReza Sabdar struct ndmp_config_set_ext_list_reply 613*2654012fSReza Sabdar { 614*2654012fSReza Sabdar ndmp_error error; 615*2654012fSReza Sabdar }; 616*2654012fSReza Sabdar 617*2654012fSReza Sabdar 618*2654012fSReza Sabdar /***********************/ 619*2654012fSReza Sabdar /* SCSI INTERFACE (V2) */ 620*2654012fSReza Sabdar /***********************/ 621*2654012fSReza Sabdar 622*2654012fSReza Sabdar /* NDMP_SCSI_OPEN */ 623*2654012fSReza Sabdar struct ndmp_scsi_open_request 624*2654012fSReza Sabdar { 625*2654012fSReza Sabdar ndmp_scsi_device device; 626*2654012fSReza Sabdar }; 627*2654012fSReza Sabdar 628*2654012fSReza Sabdar struct ndmp_scsi_open_reply 629*2654012fSReza Sabdar { 630*2654012fSReza Sabdar ndmp_error error; 631*2654012fSReza Sabdar }; 632*2654012fSReza Sabdar 633*2654012fSReza Sabdar /* NDMP_SCSI_CLOSE */ 634*2654012fSReza Sabdar /* no request arguments */ 635*2654012fSReza Sabdar 636*2654012fSReza Sabdar struct ndmp_scsi_close_reply 637*2654012fSReza Sabdar { 638*2654012fSReza Sabdar ndmp_error error; 639*2654012fSReza Sabdar }; 640*2654012fSReza Sabdar 641*2654012fSReza Sabdar /* NDMP_SCSI_GET_STATE */ 642*2654012fSReza Sabdar /* no request arguments */ 643*2654012fSReza Sabdar 644*2654012fSReza Sabdar struct ndmp_scsi_get_state_reply 645*2654012fSReza Sabdar { 646*2654012fSReza Sabdar ndmp_error error; 647*2654012fSReza Sabdar short target_controller; 648*2654012fSReza Sabdar short target_id; 649*2654012fSReza Sabdar short target_lun; 650*2654012fSReza Sabdar }; 651*2654012fSReza Sabdar 652*2654012fSReza Sabdar /* NDMP_SCSI_SET_TARGET */ 653*2654012fSReza Sabdar struct ndmp_scsi_set_target_request 654*2654012fSReza Sabdar { 655*2654012fSReza Sabdar ndmp_scsi_device device; 656*2654012fSReza Sabdar u_short target_controller; 657*2654012fSReza Sabdar u_short target_id; 658*2654012fSReza Sabdar u_short target_lun; 659*2654012fSReza Sabdar }; 660*2654012fSReza Sabdar 661*2654012fSReza Sabdar struct ndmp_scsi_set_target_reply 662*2654012fSReza Sabdar { 663*2654012fSReza Sabdar ndmp_error error; 664*2654012fSReza Sabdar }; 665*2654012fSReza Sabdar 666*2654012fSReza Sabdar /* NDMP_SCSI_RESET_DEVICE */ 667*2654012fSReza Sabdar /* no request arguments */ 668*2654012fSReza Sabdar 669*2654012fSReza Sabdar struct ndmp_scsi_reset_device_reply 670*2654012fSReza Sabdar { 671*2654012fSReza Sabdar ndmp_error error; 672*2654012fSReza Sabdar }; 673*2654012fSReza Sabdar 674*2654012fSReza Sabdar /* NDMP_SCSI_RESET_BUS */ 675*2654012fSReza Sabdar /* no request arguments */ 676*2654012fSReza Sabdar 677*2654012fSReza Sabdar struct ndmp_scsi_reset_bus_reply 678*2654012fSReza Sabdar { 679*2654012fSReza Sabdar ndmp_error error; 680*2654012fSReza Sabdar }; 681*2654012fSReza Sabdar 682*2654012fSReza Sabdar /* NDMP_SCSI_EXECUTE_CDB */ 683*2654012fSReza Sabdar const NDMP_SCSI_DATA_IN = 0x00000001; /* Expect data from SCSI device */ 684*2654012fSReza Sabdar const NDMP_SCSI_DATA_OUT = 0x00000002; /* Transfer data to SCSI device */ 685*2654012fSReza Sabdar 686*2654012fSReza Sabdar struct ndmp_execute_cdb_request 687*2654012fSReza Sabdar { 688*2654012fSReza Sabdar u_long flags; 689*2654012fSReza Sabdar u_long timeout; 690*2654012fSReza Sabdar u_long datain_len; /* Set for expected datain */ 691*2654012fSReza Sabdar opaque cdb<>; 692*2654012fSReza Sabdar opaque dataout<>; 693*2654012fSReza Sabdar }; 694*2654012fSReza Sabdar 695*2654012fSReza Sabdar struct ndmp_execute_cdb_reply 696*2654012fSReza Sabdar { 697*2654012fSReza Sabdar ndmp_error error; 698*2654012fSReza Sabdar u_char status; /* SCSI status bytes */ 699*2654012fSReza Sabdar u_long dataout_len; 700*2654012fSReza Sabdar opaque datain<>; /* SCSI datain */ 701*2654012fSReza Sabdar opaque ext_sense<>; /* Extended sense data */ 702*2654012fSReza Sabdar }; 703*2654012fSReza Sabdar 704*2654012fSReza Sabdar 705*2654012fSReza Sabdar /***********************/ 706*2654012fSReza Sabdar /* SCSI INTERFACE (V3) */ 707*2654012fSReza Sabdar /***********************/ 708*2654012fSReza Sabdar 709*2654012fSReza Sabdar /* NDMP_SCSI_OPEN */ 710*2654012fSReza Sabdar struct ndmp_scsi_open_request_v3 711*2654012fSReza Sabdar { 712*2654012fSReza Sabdar string device<>; 713*2654012fSReza Sabdar }; 714*2654012fSReza Sabdar /* reply the same as V2 */ 715*2654012fSReza Sabdar 716*2654012fSReza Sabdar 717*2654012fSReza Sabdar /* NDMP_SCSI_CLOSE - same as V2 */ 718*2654012fSReza Sabdar 719*2654012fSReza Sabdar /* NDMP_SCSI_GET_STATE - same as V2 */ 720*2654012fSReza Sabdar 721*2654012fSReza Sabdar struct ndmp_scsi_set_target_request_v3 722*2654012fSReza Sabdar { 723*2654012fSReza Sabdar string device<>; 724*2654012fSReza Sabdar u_short target_controller; 725*2654012fSReza Sabdar u_short target_id; 726*2654012fSReza Sabdar u_short target_lun; 727*2654012fSReza Sabdar }; 728*2654012fSReza Sabdar /* reply the same as V2 */ 729*2654012fSReza Sabdar 730*2654012fSReza Sabdar 731*2654012fSReza Sabdar /* NDMP_SCSI_RESET_DEVICE - same as V2 */ 732*2654012fSReza Sabdar 733*2654012fSReza Sabdar /* NDMP_SCSI_RESET_BUS - same as V2 */ 734*2654012fSReza Sabdar 735*2654012fSReza Sabdar /* NDMP_SCSI_EXECUTE_CDB - same as V2 */ 736*2654012fSReza Sabdar 737*2654012fSReza Sabdar 738*2654012fSReza Sabdar /***********************/ 739*2654012fSReza Sabdar /* SCSI INTERFACE (V4) */ 740*2654012fSReza Sabdar /***********************/ 741*2654012fSReza Sabdar 742*2654012fSReza Sabdar /* NDMP_SCSI_OPEN - same as V3 */ 743*2654012fSReza Sabdar 744*2654012fSReza Sabdar /* NDMP_SCSI_CLOSE - same as V3 */ 745*2654012fSReza Sabdar 746*2654012fSReza Sabdar /* NDMP_SCSI_GET_STATE - same as V3 */ 747*2654012fSReza Sabdar 748*2654012fSReza Sabdar /* NDMP_SCSI_RESET_DEVICE - same as V3 */ 749*2654012fSReza Sabdar 750*2654012fSReza Sabdar /* NDMP_SCSI_EXECUTE_CDB - same as V3 */ 751*2654012fSReza Sabdar 752*2654012fSReza Sabdar 753*2654012fSReza Sabdar /***********************/ 754*2654012fSReza Sabdar /* TAPE INTERFACE (V2) */ 755*2654012fSReza Sabdar /***********************/ 756*2654012fSReza Sabdar 757*2654012fSReza Sabdar /* NDMP_TAPE_OPEN */ 758*2654012fSReza Sabdar enum ndmp_tape_open_mode 759*2654012fSReza Sabdar { 760*2654012fSReza Sabdar NDMP_TAPE_READ_MODE, 761*2654012fSReza Sabdar NDMP_TAPE_WRITE_MODE, 762*2654012fSReza Sabdar NDMP_TAPE_RAW_MODE, /* NDMP V4 */ 763*2654012fSReza Sabdar NDMP_TAPE_RAW1_MODE = 0x7fffffff, /* NDMP V3 */ 764*2654012fSReza Sabdar NDMP_TAPE_RAW2_MODE = NDMP_TAPE_RAW_MODE /* NDMP V3 */ 765*2654012fSReza Sabdar 766*2654012fSReza Sabdar }; 767*2654012fSReza Sabdar 768*2654012fSReza Sabdar struct ndmp_tape_open_request 769*2654012fSReza Sabdar { 770*2654012fSReza Sabdar ndmp_tape_device device; 771*2654012fSReza Sabdar ndmp_tape_open_mode mode; 772*2654012fSReza Sabdar }; 773*2654012fSReza Sabdar 774*2654012fSReza Sabdar struct ndmp_tape_open_reply 775*2654012fSReza Sabdar { 776*2654012fSReza Sabdar ndmp_error error; 777*2654012fSReza Sabdar }; 778*2654012fSReza Sabdar 779*2654012fSReza Sabdar /* NDMP_TAPE_CLOSE */ 780*2654012fSReza Sabdar /* no request arguments */ 781*2654012fSReza Sabdar struct ndmp_tape_close_reply 782*2654012fSReza Sabdar { 783*2654012fSReza Sabdar ndmp_error error; 784*2654012fSReza Sabdar }; 785*2654012fSReza Sabdar 786*2654012fSReza Sabdar /* NDMP_TAPE_GET_STATE */ 787*2654012fSReza Sabdar /* no request arguments */ 788*2654012fSReza Sabdar const NDMP_TAPE_NOREWIND = 0x0008; /* non-rewind device */ 789*2654012fSReza Sabdar const NDMP_TAPE_WR_PROT = 0x0010; /* write-protected */ 790*2654012fSReza Sabdar const NDMP_TAPE_ERROR = 0x0020; /* media error */ 791*2654012fSReza Sabdar const NDMP_TAPE_UNLOAD = 0x0040; /* tape will be unloaded when the device is closed */ 792*2654012fSReza Sabdar 793*2654012fSReza Sabdar struct ndmp_tape_get_state_reply 794*2654012fSReza Sabdar { 795*2654012fSReza Sabdar ndmp_error error; 796*2654012fSReza Sabdar u_long flags; 797*2654012fSReza Sabdar u_long file_num; 798*2654012fSReza Sabdar u_long soft_errors; 799*2654012fSReza Sabdar u_long block_size; 800*2654012fSReza Sabdar u_long blockno; 801*2654012fSReza Sabdar ndmp_u_quad total_space; 802*2654012fSReza Sabdar ndmp_u_quad space_remain; 803*2654012fSReza Sabdar }; 804*2654012fSReza Sabdar 805*2654012fSReza Sabdar enum ndmp_tape_mtio_op 806*2654012fSReza Sabdar { 807*2654012fSReza Sabdar NDMP_MTIO_FSF = 0, 808*2654012fSReza Sabdar NDMP_MTIO_BSF = 1, 809*2654012fSReza Sabdar NDMP_MTIO_FSR = 2, 810*2654012fSReza Sabdar NDMP_MTIO_BSR = 3, 811*2654012fSReza Sabdar NDMP_MTIO_REW = 4, 812*2654012fSReza Sabdar NDMP_MTIO_EOF = 5, 813*2654012fSReza Sabdar NDMP_MTIO_OFF = 6, 814*2654012fSReza Sabdar NDMP_MTIO_TUR = 7 /* NDMP V4 */ 815*2654012fSReza Sabdar }; 816*2654012fSReza Sabdar 817*2654012fSReza Sabdar 818*2654012fSReza Sabdar struct ndmp_tape_mtio_request 819*2654012fSReza Sabdar { 820*2654012fSReza Sabdar ndmp_tape_mtio_op tape_op; 821*2654012fSReza Sabdar u_long count; 822*2654012fSReza Sabdar }; 823*2654012fSReza Sabdar 824*2654012fSReza Sabdar struct ndmp_tape_mtio_reply 825*2654012fSReza Sabdar { 826*2654012fSReza Sabdar ndmp_error error; 827*2654012fSReza Sabdar u_long resid_count; 828*2654012fSReza Sabdar }; 829*2654012fSReza Sabdar 830*2654012fSReza Sabdar /* NDMP_TAPE_WRITE */ 831*2654012fSReza Sabdar struct ndmp_tape_write_request 832*2654012fSReza Sabdar { 833*2654012fSReza Sabdar opaque data_out<>; 834*2654012fSReza Sabdar }; 835*2654012fSReza Sabdar 836*2654012fSReza Sabdar struct ndmp_tape_write_reply 837*2654012fSReza Sabdar { 838*2654012fSReza Sabdar ndmp_error error; 839*2654012fSReza Sabdar u_long count; 840*2654012fSReza Sabdar }; 841*2654012fSReza Sabdar 842*2654012fSReza Sabdar /* NDMP_TAPE_READ */ 843*2654012fSReza Sabdar struct ndmp_tape_read_request 844*2654012fSReza Sabdar { 845*2654012fSReza Sabdar u_long count; 846*2654012fSReza Sabdar }; 847*2654012fSReza Sabdar 848*2654012fSReza Sabdar struct ndmp_tape_read_reply 849*2654012fSReza Sabdar { 850*2654012fSReza Sabdar ndmp_error error; 851*2654012fSReza Sabdar opaque data_in<>; 852*2654012fSReza Sabdar }; 853*2654012fSReza Sabdar 854*2654012fSReza Sabdar /* NDMP_TAPE_EXECUTE_CDB */ 855*2654012fSReza Sabdar typedef ndmp_execute_cdb_request ndmp_tape_execute_cdb_request; 856*2654012fSReza Sabdar typedef ndmp_execute_cdb_reply ndmp_tape_execute_cdb_reply; 857*2654012fSReza Sabdar 858*2654012fSReza Sabdar 859*2654012fSReza Sabdar /***********************/ 860*2654012fSReza Sabdar /* TAPE INTERFACE (V3) */ 861*2654012fSReza Sabdar /***********************/ 862*2654012fSReza Sabdar 863*2654012fSReza Sabdar /* NDMP_TAPE_OPEN */ 864*2654012fSReza Sabdar struct ndmp_tape_open_request_v3 865*2654012fSReza Sabdar { 866*2654012fSReza Sabdar string device<>; 867*2654012fSReza Sabdar ndmp_tape_open_mode mode; 868*2654012fSReza Sabdar }; 869*2654012fSReza Sabdar /* reply the same as V2 */ 870*2654012fSReza Sabdar 871*2654012fSReza Sabdar 872*2654012fSReza Sabdar /* NDMP_TAPE_CLOSE - same as V2 */ 873*2654012fSReza Sabdar 874*2654012fSReza Sabdar /* NDMP_TAPE_GET_STATE */ 875*2654012fSReza Sabdar /* no request arguments */ 876*2654012fSReza Sabdar const NDMP_TAPE_STATE_NOREWIND = 0x0008; /* non-rewind device */ 877*2654012fSReza Sabdar const NDMP_TAPE_STATE_WR_PROT = 0x0010; /* write-protected */ 878*2654012fSReza Sabdar const NDMP_TAPE_STATE_ERROR = 0x0020; /* media error */ 879*2654012fSReza Sabdar const NDMP_TAPE_STATE_UNLOAD = 0x0040; /* tape will be unloaded when the device is closed */ 880*2654012fSReza Sabdar 881*2654012fSReza Sabdar /* invalid bit */ 882*2654012fSReza Sabdar const NDMP_TAPE_STATE_FILE_NUM_INVALID = 0x00000001; 883*2654012fSReza Sabdar const NDMP_TAPE_STATE_SOFT_ERRORS_INVALID = 0x00000002; 884*2654012fSReza Sabdar const NDMP_TAPE_STATE_BLOCK_SIZE_INVALID = 0x00000004; 885*2654012fSReza Sabdar const NDMP_TAPE_STATE_BLOCKNO_INVALID = 0x00000008; 886*2654012fSReza Sabdar const NDMP_TAPE_STATE_TOTAL_SPACE_INVALID = 0x00000010; 887*2654012fSReza Sabdar const NDMP_TAPE_STATE_SPACE_REMAIN_INVALID = 0x00000020; 888*2654012fSReza Sabdar const NDMP_TAPE_STATE_PARTITION_INVALID = 0x00000040; 889*2654012fSReza Sabdar 890*2654012fSReza Sabdar struct ndmp_tape_get_state_reply_v3 891*2654012fSReza Sabdar { 892*2654012fSReza Sabdar u_long invalid; 893*2654012fSReza Sabdar ndmp_error error; 894*2654012fSReza Sabdar u_long flags; 895*2654012fSReza Sabdar u_long file_num; 896*2654012fSReza Sabdar u_long soft_errors; 897*2654012fSReza Sabdar u_long block_size; 898*2654012fSReza Sabdar u_long blockno; 899*2654012fSReza Sabdar ndmp_u_quad total_space; 900*2654012fSReza Sabdar ndmp_u_quad space_remain; 901*2654012fSReza Sabdar u_long partition; 902*2654012fSReza Sabdar }; 903*2654012fSReza Sabdar 904*2654012fSReza Sabdar /* NDMP_TAPE_MTIO - same as V2 */ 905*2654012fSReza Sabdar 906*2654012fSReza Sabdar /* NDMP_TAPE_WRITE - same as V2 */ 907*2654012fSReza Sabdar 908*2654012fSReza Sabdar /* NDMP_TAPE_READ - same as V2 */ 909*2654012fSReza Sabdar 910*2654012fSReza Sabdar /* NDMP_TAPE_EXECUTE_CDB - same as V2 */ 911*2654012fSReza Sabdar 912*2654012fSReza Sabdar 913*2654012fSReza Sabdar /***********************/ 914*2654012fSReza Sabdar /* TAPE INTERFACE (V4) */ 915*2654012fSReza Sabdar /***********************/ 916*2654012fSReza Sabdar 917*2654012fSReza Sabdar /* NDMP_TAPE_OPEN - same as V3 */ 918*2654012fSReza Sabdar 919*2654012fSReza Sabdar /* NDMP_TAPE_CLOSE - same as V3 */ 920*2654012fSReza Sabdar 921*2654012fSReza Sabdar struct ndmp_tape_get_state_reply_v4 922*2654012fSReza Sabdar { 923*2654012fSReza Sabdar u_long unsupported; 924*2654012fSReza Sabdar ndmp_error error; 925*2654012fSReza Sabdar u_long flags; 926*2654012fSReza Sabdar u_long file_num; 927*2654012fSReza Sabdar u_long soft_errors; 928*2654012fSReza Sabdar u_long block_size; 929*2654012fSReza Sabdar u_long blockno; 930*2654012fSReza Sabdar ndmp_u_quad total_space; 931*2654012fSReza Sabdar ndmp_u_quad space_remain; 932*2654012fSReza Sabdar }; 933*2654012fSReza Sabdar 934*2654012fSReza Sabdar /* NDMP_TAPE_MTIO - same as V3 */ 935*2654012fSReza Sabdar 936*2654012fSReza Sabdar /* NDMP_TAPE_WRITE - same as V3 */ 937*2654012fSReza Sabdar 938*2654012fSReza Sabdar /* NDMP_TAPE_READ - same as V3 */ 939*2654012fSReza Sabdar 940*2654012fSReza Sabdar /* NDMP_TAPE_EXECUTE_CDB - same as V3 */ 941*2654012fSReza Sabdar 942*2654012fSReza Sabdar 943*2654012fSReza Sabdar /************************/ 944*2654012fSReza Sabdar /* MOVER INTERFACE (V2) */ 945*2654012fSReza Sabdar /************************/ 946*2654012fSReza Sabdar enum ndmp_mover_mode 947*2654012fSReza Sabdar { 948*2654012fSReza Sabdar NDMP_MOVER_MODE_READ = 0, 949*2654012fSReza Sabdar NDMP_MOVER_MODE_WRITE = 1, 950*2654012fSReza Sabdar NDMP_MOVER_MODE_NOACTION = 2 /* NDMP V4 */ 951*2654012fSReza Sabdar }; 952*2654012fSReza Sabdar 953*2654012fSReza Sabdar enum ndmp_mover_state 954*2654012fSReza Sabdar { 955*2654012fSReza Sabdar NDMP_MOVER_STATE_IDLE = 0, 956*2654012fSReza Sabdar NDMP_MOVER_STATE_LISTEN = 1, 957*2654012fSReza Sabdar NDMP_MOVER_STATE_ACTIVE = 2, 958*2654012fSReza Sabdar NDMP_MOVER_STATE_PAUSED = 3, 959*2654012fSReza Sabdar NDMP_MOVER_STATE_HALTED = 4 960*2654012fSReza Sabdar }; 961*2654012fSReza Sabdar 962*2654012fSReza Sabdar enum ndmp_mover_pause_reason 963*2654012fSReza Sabdar { 964*2654012fSReza Sabdar NDMP_MOVER_PAUSE_NA = 0, 965*2654012fSReza Sabdar NDMP_MOVER_PAUSE_EOM = 1, 966*2654012fSReza Sabdar NDMP_MOVER_PAUSE_EOF = 2, 967*2654012fSReza Sabdar NDMP_MOVER_PAUSE_SEEK = 3, 968*2654012fSReza Sabdar NDMP_MOVER_PAUSE_MEDIA_ERROR = 4, /* NDMP V2,3 */ 969*2654012fSReza Sabdar NDMP_MOVER_PAUSE_EOW = 5 970*2654012fSReza Sabdar }; 971*2654012fSReza Sabdar 972*2654012fSReza Sabdar enum ndmp_mover_halt_reason 973*2654012fSReza Sabdar { 974*2654012fSReza Sabdar NDMP_MOVER_HALT_NA = 0, 975*2654012fSReza Sabdar NDMP_MOVER_HALT_CONNECT_CLOSED = 1, 976*2654012fSReza Sabdar NDMP_MOVER_HALT_ABORTED = 2, 977*2654012fSReza Sabdar NDMP_MOVER_HALT_INTERNAL_ERROR = 3, 978*2654012fSReza Sabdar NDMP_MOVER_HALT_CONNECT_ERROR = 4, 979*2654012fSReza Sabdar NDMP_MOVER_HALT_MEDIA_ERROR = 5 /* NDMP V4 */ 980*2654012fSReza Sabdar }; 981*2654012fSReza Sabdar 982*2654012fSReza Sabdar 983*2654012fSReza Sabdar /* NDMP_MOVER_GET_STATE */ 984*2654012fSReza Sabdar 985*2654012fSReza Sabdar /* no request arguments */ 986*2654012fSReza Sabdar struct ndmp_mover_get_state_reply 987*2654012fSReza Sabdar { 988*2654012fSReza Sabdar ndmp_error error; 989*2654012fSReza Sabdar ndmp_mover_state state; 990*2654012fSReza Sabdar ndmp_mover_pause_reason pause_reason; 991*2654012fSReza Sabdar ndmp_mover_halt_reason halt_reason; 992*2654012fSReza Sabdar u_long record_size; 993*2654012fSReza Sabdar u_long record_num; 994*2654012fSReza Sabdar ndmp_u_quad data_written; 995*2654012fSReza Sabdar ndmp_u_quad seek_position; 996*2654012fSReza Sabdar ndmp_u_quad bytes_left_to_read; 997*2654012fSReza Sabdar ndmp_u_quad window_offset; 998*2654012fSReza Sabdar ndmp_u_quad window_length; 999*2654012fSReza Sabdar }; 1000*2654012fSReza Sabdar 1001*2654012fSReza Sabdar /* NDMP_MOVER_LISTEN */ 1002*2654012fSReza Sabdar 1003*2654012fSReza Sabdar struct ndmp_tcp_addr 1004*2654012fSReza Sabdar { 1005*2654012fSReza Sabdar u_long ip_addr; 1006*2654012fSReza Sabdar u_short port; 1007*2654012fSReza Sabdar }; 1008*2654012fSReza Sabdar 1009*2654012fSReza Sabdar union ndmp_mover_addr switch (ndmp_addr_type addr_type) 1010*2654012fSReza Sabdar { 1011*2654012fSReza Sabdar case NDMP_ADDR_LOCAL: 1012*2654012fSReza Sabdar void; 1013*2654012fSReza Sabdar case NDMP_ADDR_TCP: 1014*2654012fSReza Sabdar ndmp_tcp_addr addr; 1015*2654012fSReza Sabdar }; 1016*2654012fSReza Sabdar 1017*2654012fSReza Sabdar struct ndmp_mover_listen_request 1018*2654012fSReza Sabdar { 1019*2654012fSReza Sabdar ndmp_mover_mode mode; 1020*2654012fSReza Sabdar ndmp_addr_type addr_type; 1021*2654012fSReza Sabdar }; 1022*2654012fSReza Sabdar 1023*2654012fSReza Sabdar struct ndmp_mover_listen_reply 1024*2654012fSReza Sabdar { 1025*2654012fSReza Sabdar ndmp_error error; 1026*2654012fSReza Sabdar ndmp_mover_addr mover; 1027*2654012fSReza Sabdar }; 1028*2654012fSReza Sabdar 1029*2654012fSReza Sabdar /* NDMP_MOVER_SET_RECORD_SIZE */ 1030*2654012fSReza Sabdar struct ndmp_mover_set_record_size_request 1031*2654012fSReza Sabdar { 1032*2654012fSReza Sabdar u_long len; 1033*2654012fSReza Sabdar }; 1034*2654012fSReza Sabdar 1035*2654012fSReza Sabdar struct ndmp_mover_set_record_size_reply 1036*2654012fSReza Sabdar { 1037*2654012fSReza Sabdar ndmp_error error; 1038*2654012fSReza Sabdar }; 1039*2654012fSReza Sabdar 1040*2654012fSReza Sabdar /* NDMP_MOVER_SET_WINDOW */ 1041*2654012fSReza Sabdar struct ndmp_mover_set_window_request 1042*2654012fSReza Sabdar { 1043*2654012fSReza Sabdar ndmp_u_quad offset; 1044*2654012fSReza Sabdar ndmp_u_quad length; 1045*2654012fSReza Sabdar }; 1046*2654012fSReza Sabdar 1047*2654012fSReza Sabdar struct ndmp_mover_set_window_reply 1048*2654012fSReza Sabdar { 1049*2654012fSReza Sabdar ndmp_error error; 1050*2654012fSReza Sabdar }; 1051*2654012fSReza Sabdar 1052*2654012fSReza Sabdar /* NDMP_MOVER_CONTINUE */ 1053*2654012fSReza Sabdar /* no request arguments */ 1054*2654012fSReza Sabdar 1055*2654012fSReza Sabdar struct ndmp_mover_continue_reply 1056*2654012fSReza Sabdar { 1057*2654012fSReza Sabdar ndmp_error error; 1058*2654012fSReza Sabdar }; 1059*2654012fSReza Sabdar 1060*2654012fSReza Sabdar 1061*2654012fSReza Sabdar /* NDMP_MOVER_ABORT */ 1062*2654012fSReza Sabdar /* no request arguments */ 1063*2654012fSReza Sabdar struct ndmp_mover_abort_reply 1064*2654012fSReza Sabdar { 1065*2654012fSReza Sabdar ndmp_error error; 1066*2654012fSReza Sabdar }; 1067*2654012fSReza Sabdar 1068*2654012fSReza Sabdar /* NDMP_MOVER_STOP */ 1069*2654012fSReza Sabdar /* no request arguments */ 1070*2654012fSReza Sabdar 1071*2654012fSReza Sabdar struct ndmp_mover_stop_reply 1072*2654012fSReza Sabdar { 1073*2654012fSReza Sabdar ndmp_error error; 1074*2654012fSReza Sabdar }; 1075*2654012fSReza Sabdar 1076*2654012fSReza Sabdar /* NDMP_MOVER_READ */ 1077*2654012fSReza Sabdar struct ndmp_mover_read_request 1078*2654012fSReza Sabdar { 1079*2654012fSReza Sabdar ndmp_u_quad offset; 1080*2654012fSReza Sabdar ndmp_u_quad length; 1081*2654012fSReza Sabdar }; 1082*2654012fSReza Sabdar 1083*2654012fSReza Sabdar struct ndmp_mover_read_reply 1084*2654012fSReza Sabdar { 1085*2654012fSReza Sabdar ndmp_error error; 1086*2654012fSReza Sabdar }; 1087*2654012fSReza Sabdar 1088*2654012fSReza Sabdar /* NDMP_MOVER_CLOSE */ 1089*2654012fSReza Sabdar /* no request arguments */ 1090*2654012fSReza Sabdar 1091*2654012fSReza Sabdar struct ndmp_mover_close_reply 1092*2654012fSReza Sabdar { 1093*2654012fSReza Sabdar ndmp_error error; 1094*2654012fSReza Sabdar }; 1095*2654012fSReza Sabdar 1096*2654012fSReza Sabdar 1097*2654012fSReza Sabdar /************************/ 1098*2654012fSReza Sabdar /* MOVER INTERFACE (V3) */ 1099*2654012fSReza Sabdar /************************/ 1100*2654012fSReza Sabdar 1101*2654012fSReza Sabdar /* NDMP_MOVER_STATE - same as V2 */ 1102*2654012fSReza Sabdar 1103*2654012fSReza Sabdar /* NDMP_MOVER_PAUSE_REASON - same as V2 */ 1104*2654012fSReza Sabdar 1105*2654012fSReza Sabdar /* NDMP_MOVER_HALT_REASON - same as V2 */ 1106*2654012fSReza Sabdar 1107*2654012fSReza Sabdar /* NDMP_MOVER_MODE - same as V2 */ 1108*2654012fSReza Sabdar 1109*2654012fSReza Sabdar struct ndmp_fc_addr_v3 1110*2654012fSReza Sabdar { 1111*2654012fSReza Sabdar u_long loop_id; 1112*2654012fSReza Sabdar }; 1113*2654012fSReza Sabdar 1114*2654012fSReza Sabdar struct ndmp_ipc_addr_v3 1115*2654012fSReza Sabdar { 1116*2654012fSReza Sabdar opaque comm_data<>; 1117*2654012fSReza Sabdar }; 1118*2654012fSReza Sabdar 1119*2654012fSReza Sabdar union ndmp_addr_v3 switch (ndmp_addr_type addr_type) 1120*2654012fSReza Sabdar { 1121*2654012fSReza Sabdar case NDMP_ADDR_LOCAL: 1122*2654012fSReza Sabdar void; 1123*2654012fSReza Sabdar case NDMP_ADDR_TCP: 1124*2654012fSReza Sabdar ndmp_tcp_addr tcp_addr; 1125*2654012fSReza Sabdar case NDMP_ADDR_FC: 1126*2654012fSReza Sabdar ndmp_fc_addr_v3 fc_addr; 1127*2654012fSReza Sabdar case NDMP_ADDR_IPC: 1128*2654012fSReza Sabdar ndmp_ipc_addr_v3 ipc_addr; 1129*2654012fSReza Sabdar 1130*2654012fSReza Sabdar }; 1131*2654012fSReza Sabdar 1132*2654012fSReza Sabdar % 1133*2654012fSReza Sabdar % 1134*2654012fSReza Sabdar %/* 1135*2654012fSReza Sabdar % * Macros to access the port and IP address of TCP addresses. 1136*2654012fSReza Sabdar % */ 1137*2654012fSReza Sabdar %#ifndef tcp_ip_v3 1138*2654012fSReza Sabdar %#define tcp_ip_v3 ndmp_addr_v3_u.tcp_addr.ip_addr 1139*2654012fSReza Sabdar %#endif /* tcp_ip_v3 */ 1140*2654012fSReza Sabdar %#ifndef tcp_port_v3 1141*2654012fSReza Sabdar %#define tcp_port_v3 ndmp_addr_v3_u.tcp_addr.port 1142*2654012fSReza Sabdar %#endif /* tcp_port_v3 */ 1143*2654012fSReza Sabdar 1144*2654012fSReza Sabdar /* NDMP_MOVER_GET_STATE */ 1145*2654012fSReza Sabdar /* no request arguments */ 1146*2654012fSReza Sabdar 1147*2654012fSReza Sabdar struct ndmp_mover_get_state_reply_v3 1148*2654012fSReza Sabdar { 1149*2654012fSReza Sabdar ndmp_error error; 1150*2654012fSReza Sabdar ndmp_mover_state state; 1151*2654012fSReza Sabdar ndmp_mover_pause_reason pause_reason; 1152*2654012fSReza Sabdar ndmp_mover_halt_reason halt_reason; 1153*2654012fSReza Sabdar u_long record_size; 1154*2654012fSReza Sabdar u_long record_num; 1155*2654012fSReza Sabdar ndmp_u_quad data_written; 1156*2654012fSReza Sabdar ndmp_u_quad seek_position; 1157*2654012fSReza Sabdar ndmp_u_quad bytes_left_to_read; 1158*2654012fSReza Sabdar ndmp_u_quad window_offset; 1159*2654012fSReza Sabdar ndmp_u_quad window_length; 1160*2654012fSReza Sabdar ndmp_addr_v3 data_connection_addr; 1161*2654012fSReza Sabdar }; 1162*2654012fSReza Sabdar 1163*2654012fSReza Sabdar /* NDMP_MOVER_LISTEN - same as v2 */ 1164*2654012fSReza Sabdar 1165*2654012fSReza Sabdar struct ndmp_mover_listen_reply_v3 1166*2654012fSReza Sabdar { 1167*2654012fSReza Sabdar ndmp_error error; 1168*2654012fSReza Sabdar ndmp_addr_v3 data_connection_addr; 1169*2654012fSReza Sabdar }; 1170*2654012fSReza Sabdar 1171*2654012fSReza Sabdar /* NDMP_MOVER_CONNECT */ 1172*2654012fSReza Sabdar struct ndmp_mover_connect_request_v3 1173*2654012fSReza Sabdar { 1174*2654012fSReza Sabdar ndmp_mover_mode mode; 1175*2654012fSReza Sabdar ndmp_addr_v3 addr; 1176*2654012fSReza Sabdar }; 1177*2654012fSReza Sabdar 1178*2654012fSReza Sabdar struct ndmp_mover_connect_reply_v3 1179*2654012fSReza Sabdar { 1180*2654012fSReza Sabdar ndmp_error error; 1181*2654012fSReza Sabdar }; 1182*2654012fSReza Sabdar 1183*2654012fSReza Sabdar /* NDMP_MOVER_SET_RECORD_SIZE - same as V2 */ 1184*2654012fSReza Sabdar 1185*2654012fSReza Sabdar /* NDMP_MOVER_SET_WINDOW - same as V2 */ 1186*2654012fSReza Sabdar 1187*2654012fSReza Sabdar /* NDMP_MOVER_CONTINUE - same as V2 */ 1188*2654012fSReza Sabdar 1189*2654012fSReza Sabdar /* NDMP_MOVER_ABORT - same as V2 */ 1190*2654012fSReza Sabdar 1191*2654012fSReza Sabdar /* NDMP_MOVER_STOP - same as V2 */ 1192*2654012fSReza Sabdar 1193*2654012fSReza Sabdar /* NDMP_MOVER_READ - same as V2 */ 1194*2654012fSReza Sabdar 1195*2654012fSReza Sabdar /* NDMP_MOVER_CLOSE - same as V2 */ 1196*2654012fSReza Sabdar 1197*2654012fSReza Sabdar 1198*2654012fSReza Sabdar /************************/ 1199*2654012fSReza Sabdar /* MOVER INTERFACE (V4) */ 1200*2654012fSReza Sabdar /************************/ 1201*2654012fSReza Sabdar 1202*2654012fSReza Sabdar /* NDMP_MOVER_SET_RECORD_SIZE - same as V3 */ 1203*2654012fSReza Sabdar 1204*2654012fSReza Sabdar /* NDMP_MOVER_SET_WINDOW_SIZE - same as V3 */ 1205*2654012fSReza Sabdar 1206*2654012fSReza Sabdar % 1207*2654012fSReza Sabdar % 1208*2654012fSReza Sabdar %/* 1209*2654012fSReza Sabdar % * Macros to access the port and IP address of TCP addresses. 1210*2654012fSReza Sabdar % */ 1211*2654012fSReza Sabdar %#ifndef tcp_addr_v4 1212*2654012fSReza Sabdar %#define tcp_addr_v4 ndmp_addr_v4_u.tcp_addr.tcp_addr_val 1213*2654012fSReza Sabdar %#endif /* tcp_addr_v4 */ 1214*2654012fSReza Sabdar %#ifndef tcp_ip_v4 1215*2654012fSReza Sabdar %#define tcp_ip_v4(n) ndmp_addr_v4_u.tcp_addr.tcp_addr_val[n].ip_addr 1216*2654012fSReza Sabdar %#endif /* tcp_ip_v4 */ 1217*2654012fSReza Sabdar %#ifndef tcp_port_v4 1218*2654012fSReza Sabdar %#define tcp_port_v4(n) ndmp_addr_v4_u.tcp_addr.tcp_addr_val[n].port 1219*2654012fSReza Sabdar %#endif /* tcp_port_v4 */ 1220*2654012fSReza Sabdar %#ifndef tcp_len_v4 1221*2654012fSReza Sabdar %#define tcp_len_v4 ndmp_addr_v4_u.tcp_addr.tcp_addr_len 1222*2654012fSReza Sabdar %#endif /* tcp_len_v4 */ 1223*2654012fSReza Sabdar %#ifndef tcp_env_v4 1224*2654012fSReza Sabdar %#define tcp_env_v4(n) ndmp_addr_v4_u.tcp_addr.tcp_addr_val[n].addr_env 1225*2654012fSReza Sabdar %#endif /* tcp_env_v4 */ 1226*2654012fSReza Sabdar 1227*2654012fSReza Sabdar struct ndmp_tcp_addr_v4 1228*2654012fSReza Sabdar { 1229*2654012fSReza Sabdar u_long ip_addr; 1230*2654012fSReza Sabdar u_short port; 1231*2654012fSReza Sabdar ndmp_pval addr_env<>; 1232*2654012fSReza Sabdar }; 1233*2654012fSReza Sabdar 1234*2654012fSReza Sabdar union ndmp_addr_v4 1235*2654012fSReza Sabdar switch (ndmp_addr_type addr_type) 1236*2654012fSReza Sabdar { 1237*2654012fSReza Sabdar case NDMP_ADDR_LOCAL: 1238*2654012fSReza Sabdar void; 1239*2654012fSReza Sabdar case NDMP_ADDR_TCP: 1240*2654012fSReza Sabdar ndmp_tcp_addr_v4 tcp_addr<>; 1241*2654012fSReza Sabdar case NDMP_ADDR_IPC: 1242*2654012fSReza Sabdar ndmp_ipc_addr_v3 ipc_addr; 1243*2654012fSReza Sabdar }; 1244*2654012fSReza Sabdar 1245*2654012fSReza Sabdar struct ndmp_mover_connect_request_v4 1246*2654012fSReza Sabdar { 1247*2654012fSReza Sabdar ndmp_mover_mode mode; 1248*2654012fSReza Sabdar ndmp_addr_v4 addr; 1249*2654012fSReza Sabdar }; 1250*2654012fSReza Sabdar 1251*2654012fSReza Sabdar struct ndmp_mover_listen_reply_v4 1252*2654012fSReza Sabdar { 1253*2654012fSReza Sabdar ndmp_error error; 1254*2654012fSReza Sabdar ndmp_addr_v4 connect_addr; 1255*2654012fSReza Sabdar }; 1256*2654012fSReza Sabdar 1257*2654012fSReza Sabdar /* NDMP_MOVER_READ - same as v3 */ 1258*2654012fSReza Sabdar 1259*2654012fSReza Sabdar struct ndmp_mover_get_state_reply_v4 1260*2654012fSReza Sabdar { 1261*2654012fSReza Sabdar ndmp_error error; 1262*2654012fSReza Sabdar ndmp_mover_mode mode; 1263*2654012fSReza Sabdar ndmp_mover_state state; 1264*2654012fSReza Sabdar ndmp_mover_pause_reason pause_reason; 1265*2654012fSReza Sabdar ndmp_mover_halt_reason halt_reason; 1266*2654012fSReza Sabdar u_long record_size; 1267*2654012fSReza Sabdar u_long record_num; 1268*2654012fSReza Sabdar ndmp_u_quad bytes_moved; 1269*2654012fSReza Sabdar ndmp_u_quad seek_position; 1270*2654012fSReza Sabdar ndmp_u_quad bytes_left_to_read; 1271*2654012fSReza Sabdar ndmp_u_quad window_offset; 1272*2654012fSReza Sabdar ndmp_u_quad window_length; 1273*2654012fSReza Sabdar ndmp_addr_v4 data_connection_addr; 1274*2654012fSReza Sabdar }; 1275*2654012fSReza Sabdar 1276*2654012fSReza Sabdar /* NDMP_MOVER_CONTINUE - same as V3 */ 1277*2654012fSReza Sabdar 1278*2654012fSReza Sabdar /* NDMP_MOVER_CLOSE - same as V3 */ 1279*2654012fSReza Sabdar 1280*2654012fSReza Sabdar /* NDMP_MOVER_ABORT - same as V3 */ 1281*2654012fSReza Sabdar 1282*2654012fSReza Sabdar /* NDMP_MOVER_STOP - same as V3 */ 1283*2654012fSReza Sabdar 1284*2654012fSReza Sabdar 1285*2654012fSReza Sabdar /***********************/ 1286*2654012fSReza Sabdar /* DATA INTERFACE (V2) */ 1287*2654012fSReza Sabdar /***********************/ 1288*2654012fSReza Sabdar 1289*2654012fSReza Sabdar /* NDMP_DATA_GET_STATE */ 1290*2654012fSReza Sabdar /* no request arguments */ 1291*2654012fSReza Sabdar 1292*2654012fSReza Sabdar enum ndmp_data_operation 1293*2654012fSReza Sabdar { 1294*2654012fSReza Sabdar NDMP_DATA_OP_NOACTION = 0, 1295*2654012fSReza Sabdar NDMP_DATA_OP_BACKUP = 1, 1296*2654012fSReza Sabdar NDMP_DATA_OP_RECOVER = 2, 1297*2654012fSReza Sabdar NDMP_DATA_OP_RECOVER_FILEHIST = 3 /* NDMP V4 */ 1298*2654012fSReza Sabdar }; 1299*2654012fSReza Sabdar 1300*2654012fSReza Sabdar enum ndmp_data_state 1301*2654012fSReza Sabdar { 1302*2654012fSReza Sabdar NDMP_DATA_STATE_IDLE = 0, 1303*2654012fSReza Sabdar NDMP_DATA_STATE_ACTIVE = 1, 1304*2654012fSReza Sabdar NDMP_DATA_STATE_HALTED = 2, 1305*2654012fSReza Sabdar NDMP_DATA_STATE_LISTEN = 3, /* NDMP V3 */ 1306*2654012fSReza Sabdar NDMP_DATA_STATE_CONNECTED = 4 /* NDMP V3 */ 1307*2654012fSReza Sabdar }; 1308*2654012fSReza Sabdar 1309*2654012fSReza Sabdar enum ndmp_data_halt_reason 1310*2654012fSReza Sabdar { 1311*2654012fSReza Sabdar NDMP_DATA_HALT_NA = 0, 1312*2654012fSReza Sabdar NDMP_DATA_HALT_SUCCESSFUL = 1, 1313*2654012fSReza Sabdar NDMP_DATA_HALT_ABORTED = 2, 1314*2654012fSReza Sabdar NDMP_DATA_HALT_INTERNAL_ERROR = 3, 1315*2654012fSReza Sabdar NDMP_DATA_HALT_CONNECT_ERROR = 4 1316*2654012fSReza Sabdar }; 1317*2654012fSReza Sabdar 1318*2654012fSReza Sabdar struct ndmp_data_get_state_reply 1319*2654012fSReza Sabdar { 1320*2654012fSReza Sabdar ndmp_error error; 1321*2654012fSReza Sabdar ndmp_data_operation operation; 1322*2654012fSReza Sabdar ndmp_data_state state; 1323*2654012fSReza Sabdar ndmp_data_halt_reason halt_reason; 1324*2654012fSReza Sabdar ndmp_u_quad bytes_processed; 1325*2654012fSReza Sabdar ndmp_u_quad est_bytes_remain; 1326*2654012fSReza Sabdar u_long est_time_remain; 1327*2654012fSReza Sabdar ndmp_mover_addr mover; 1328*2654012fSReza Sabdar ndmp_u_quad read_offset; 1329*2654012fSReza Sabdar ndmp_u_quad read_length; 1330*2654012fSReza Sabdar }; 1331*2654012fSReza Sabdar 1332*2654012fSReza Sabdar /* NDMP_DATA_START_BACKUP */ 1333*2654012fSReza Sabdar 1334*2654012fSReza Sabdar struct ndmp_data_start_backup_request 1335*2654012fSReza Sabdar { 1336*2654012fSReza Sabdar ndmp_mover_addr mover; /* mover to receive data */ 1337*2654012fSReza Sabdar string bu_type<>; /* backup method to use */ 1338*2654012fSReza Sabdar ndmp_pval env<>; /* Parameters that may modify backup */ 1339*2654012fSReza Sabdar }; 1340*2654012fSReza Sabdar 1341*2654012fSReza Sabdar struct ndmp_data_start_backup_reply 1342*2654012fSReza Sabdar { 1343*2654012fSReza Sabdar ndmp_error error; 1344*2654012fSReza Sabdar }; 1345*2654012fSReza Sabdar 1346*2654012fSReza Sabdar /* NDMP_DATA_START_RECOVER */ 1347*2654012fSReza Sabdar struct ndmp_name 1348*2654012fSReza Sabdar { 1349*2654012fSReza Sabdar string name<>; 1350*2654012fSReza Sabdar string dest<>; 1351*2654012fSReza Sabdar u_short ssid; 1352*2654012fSReza Sabdar ndmp_u_quad fh_info; 1353*2654012fSReza Sabdar }; 1354*2654012fSReza Sabdar 1355*2654012fSReza Sabdar struct ndmp_data_start_recover_request 1356*2654012fSReza Sabdar { 1357*2654012fSReza Sabdar ndmp_mover_addr mover; 1358*2654012fSReza Sabdar ndmp_pval env<>; 1359*2654012fSReza Sabdar ndmp_name nlist<>; 1360*2654012fSReza Sabdar string bu_type<>; 1361*2654012fSReza Sabdar 1362*2654012fSReza Sabdar }; 1363*2654012fSReza Sabdar 1364*2654012fSReza Sabdar struct ndmp_data_start_recover_reply 1365*2654012fSReza Sabdar { 1366*2654012fSReza Sabdar ndmp_error error; 1367*2654012fSReza Sabdar }; 1368*2654012fSReza Sabdar 1369*2654012fSReza Sabdar /* NDMP_DATA_ABORT */ 1370*2654012fSReza Sabdar /* no request arguments */ 1371*2654012fSReza Sabdar 1372*2654012fSReza Sabdar struct ndmp_data_abort_reply 1373*2654012fSReza Sabdar { 1374*2654012fSReza Sabdar ndmp_error error; 1375*2654012fSReza Sabdar }; 1376*2654012fSReza Sabdar 1377*2654012fSReza Sabdar /* NDMP_DATA_STOP */ 1378*2654012fSReza Sabdar /* no request arguments */ 1379*2654012fSReza Sabdar 1380*2654012fSReza Sabdar struct ndmp_data_stop_reply 1381*2654012fSReza Sabdar { 1382*2654012fSReza Sabdar ndmp_error error; 1383*2654012fSReza Sabdar }; 1384*2654012fSReza Sabdar 1385*2654012fSReza Sabdar /* NDMP_DATA_GET_ENV */ 1386*2654012fSReza Sabdar /* no request arguments */ 1387*2654012fSReza Sabdar 1388*2654012fSReza Sabdar struct ndmp_data_get_env_reply 1389*2654012fSReza Sabdar { 1390*2654012fSReza Sabdar ndmp_error error; 1391*2654012fSReza Sabdar ndmp_pval env<>; 1392*2654012fSReza Sabdar }; 1393*2654012fSReza Sabdar /* no reply arguments */ 1394*2654012fSReza Sabdar 1395*2654012fSReza Sabdar struct ndmp_notify_data_halted_request 1396*2654012fSReza Sabdar { 1397*2654012fSReza Sabdar ndmp_data_halt_reason reason; 1398*2654012fSReza Sabdar string text_reason<>; 1399*2654012fSReza Sabdar }; 1400*2654012fSReza Sabdar /* no reply arguments */ 1401*2654012fSReza Sabdar 1402*2654012fSReza Sabdar 1403*2654012fSReza Sabdar /***********************/ 1404*2654012fSReza Sabdar /* DATA INTERFACE (V3) */ 1405*2654012fSReza Sabdar /***********************/ 1406*2654012fSReza Sabdar 1407*2654012fSReza Sabdar /* NDMP_DATA_GET_STATE */ 1408*2654012fSReza Sabdar /* no request arguments */ 1409*2654012fSReza Sabdar /* ndmp_data_operation the same as V2 */ 1410*2654012fSReza Sabdar 1411*2654012fSReza Sabdar /* invalid bit */ 1412*2654012fSReza Sabdar const NDMP_DATA_STATE_EST_BYTES_REMAIN_INVALID = 0x00000001; 1413*2654012fSReza Sabdar const NDMP_DATA_STATE_EST_TIME_REMAIN_INVALID = 0x00000002; 1414*2654012fSReza Sabdar 1415*2654012fSReza Sabdar struct ndmp_data_get_state_reply_v3 1416*2654012fSReza Sabdar { 1417*2654012fSReza Sabdar u_long invalid; 1418*2654012fSReza Sabdar ndmp_error error; 1419*2654012fSReza Sabdar ndmp_data_operation operation; 1420*2654012fSReza Sabdar ndmp_data_state state; 1421*2654012fSReza Sabdar ndmp_data_halt_reason halt_reason; 1422*2654012fSReza Sabdar ndmp_u_quad bytes_processed; 1423*2654012fSReza Sabdar ndmp_u_quad est_bytes_remain; 1424*2654012fSReza Sabdar u_long est_time_remain; 1425*2654012fSReza Sabdar ndmp_addr_v3 data_connection_addr; 1426*2654012fSReza Sabdar ndmp_u_quad read_offset; 1427*2654012fSReza Sabdar ndmp_u_quad read_length; 1428*2654012fSReza Sabdar }; 1429*2654012fSReza Sabdar 1430*2654012fSReza Sabdar /* NDMP_DATA_START_BACKUP */ 1431*2654012fSReza Sabdar struct ndmp_data_start_backup_request_v3 1432*2654012fSReza Sabdar { 1433*2654012fSReza Sabdar string bu_type<>; /* backup method to use */ 1434*2654012fSReza Sabdar ndmp_pval env<>; /* Parameters that may modify backup */ 1435*2654012fSReza Sabdar }; 1436*2654012fSReza Sabdar 1437*2654012fSReza Sabdar /* NDMP_DATA_START_RECOVER */ 1438*2654012fSReza Sabdar struct ndmp_name_v3 1439*2654012fSReza Sabdar { 1440*2654012fSReza Sabdar string original_path<>; 1441*2654012fSReza Sabdar string destination_dir<>; 1442*2654012fSReza Sabdar string new_name<>; /* Direct access restore only */ 1443*2654012fSReza Sabdar string other_name<>; /* Direct access restore only */ 1444*2654012fSReza Sabdar ndmp_u_quad node; /* Direct access restore only */ 1445*2654012fSReza Sabdar ndmp_u_quad fh_info; /* Direct access restore only */ 1446*2654012fSReza Sabdar }; 1447*2654012fSReza Sabdar 1448*2654012fSReza Sabdar struct ndmp_data_start_recover_request_v3 1449*2654012fSReza Sabdar { 1450*2654012fSReza Sabdar ndmp_pval env<>; 1451*2654012fSReza Sabdar ndmp_name_v3 nlist<>; 1452*2654012fSReza Sabdar string bu_type<>; 1453*2654012fSReza Sabdar }; 1454*2654012fSReza Sabdar 1455*2654012fSReza Sabdar /* NDMP_DATA_ABORT - same as V2 */ 1456*2654012fSReza Sabdar 1457*2654012fSReza Sabdar /* NDMP_DATA_STOP - same as V2 */ 1458*2654012fSReza Sabdar 1459*2654012fSReza Sabdar /* NDMP_DATA_GET_ENV - same as V2 */ 1460*2654012fSReza Sabdar 1461*2654012fSReza Sabdar /* NDMP_DATA_LISTEN */ 1462*2654012fSReza Sabdar struct ndmp_data_listen_request_v3 1463*2654012fSReza Sabdar { 1464*2654012fSReza Sabdar ndmp_addr_type addr_type; 1465*2654012fSReza Sabdar }; 1466*2654012fSReza Sabdar 1467*2654012fSReza Sabdar struct ndmp_data_listen_reply_v3 1468*2654012fSReza Sabdar { 1469*2654012fSReza Sabdar ndmp_error error; 1470*2654012fSReza Sabdar ndmp_addr_v3 data_connection_addr; 1471*2654012fSReza Sabdar }; 1472*2654012fSReza Sabdar 1473*2654012fSReza Sabdar /* NDMP_DATA_CONNECT */ 1474*2654012fSReza Sabdar struct ndmp_data_connect_request_v3 1475*2654012fSReza Sabdar { 1476*2654012fSReza Sabdar ndmp_addr_v3 addr; 1477*2654012fSReza Sabdar }; 1478*2654012fSReza Sabdar 1479*2654012fSReza Sabdar struct ndmp_data_connect_reply_v3 1480*2654012fSReza Sabdar { 1481*2654012fSReza Sabdar ndmp_error error; 1482*2654012fSReza Sabdar }; 1483*2654012fSReza Sabdar 1484*2654012fSReza Sabdar 1485*2654012fSReza Sabdar /***********************/ 1486*2654012fSReza Sabdar /* DATA INTERFACE (V4) */ 1487*2654012fSReza Sabdar /***********************/ 1488*2654012fSReza Sabdar 1489*2654012fSReza Sabdar struct ndmp_data_get_state_reply_v4 1490*2654012fSReza Sabdar { 1491*2654012fSReza Sabdar u_long unsupported; 1492*2654012fSReza Sabdar ndmp_error error; 1493*2654012fSReza Sabdar ndmp_data_operation operation; 1494*2654012fSReza Sabdar ndmp_data_state state; 1495*2654012fSReza Sabdar ndmp_data_halt_reason halt_reason; 1496*2654012fSReza Sabdar ndmp_u_quad bytes_processed; 1497*2654012fSReza Sabdar ndmp_u_quad est_bytes_remain; 1498*2654012fSReza Sabdar u_long est_time_remain; 1499*2654012fSReza Sabdar ndmp_addr_v4 data_connection_addr; 1500*2654012fSReza Sabdar ndmp_u_quad read_offset; 1501*2654012fSReza Sabdar ndmp_u_quad read_length; 1502*2654012fSReza Sabdar }; 1503*2654012fSReza Sabdar 1504*2654012fSReza Sabdar struct ndmp_data_listen_reply_v4 1505*2654012fSReza Sabdar { 1506*2654012fSReza Sabdar ndmp_error error; 1507*2654012fSReza Sabdar ndmp_addr_v4 connect_addr; 1508*2654012fSReza Sabdar }; 1509*2654012fSReza Sabdar 1510*2654012fSReza Sabdar struct ndmp_data_connect_request_v4 1511*2654012fSReza Sabdar { 1512*2654012fSReza Sabdar ndmp_addr_v4 addr; 1513*2654012fSReza Sabdar }; 1514*2654012fSReza Sabdar 1515*2654012fSReza Sabdar 1516*2654012fSReza Sabdar /* NDMP_DATA_START_BACKUP - same as V3 */ 1517*2654012fSReza Sabdar 1518*2654012fSReza Sabdar /* NDMP_DATA_START_RECOVER - same as V3 */ 1519*2654012fSReza Sabdar 1520*2654012fSReza Sabdar /* NDMP_DATA_ABORT - same as V3 */ 1521*2654012fSReza Sabdar 1522*2654012fSReza Sabdar /* NDMP_DATA_STOP - same as V3 */ 1523*2654012fSReza Sabdar 1524*2654012fSReza Sabdar /* NDMP_DATA_GET_ENV - same as V3 */ 1525*2654012fSReza Sabdar 1526*2654012fSReza Sabdar 1527*2654012fSReza Sabdar /*************************/ 1528*2654012fSReza Sabdar /* NOTIFY INTERFACE (V2) */ 1529*2654012fSReza Sabdar /*************************/ 1530*2654012fSReza Sabdar 1531*2654012fSReza Sabdar /* NDMP_NOTIFY_CONNECTED */ 1532*2654012fSReza Sabdar enum ndmp_connect_reason 1533*2654012fSReza Sabdar { 1534*2654012fSReza Sabdar NDMP_CONNECTED, /* Connect successfully */ 1535*2654012fSReza Sabdar NDMP_SHUTDOWN, /* Connection shutdown */ 1536*2654012fSReza Sabdar NDMP_REFUSED /* reach the maximum number of connections */ 1537*2654012fSReza Sabdar }; 1538*2654012fSReza Sabdar 1539*2654012fSReza Sabdar struct ndmp_notify_connected_request 1540*2654012fSReza Sabdar { 1541*2654012fSReza Sabdar ndmp_connect_reason reason; 1542*2654012fSReza Sabdar u_short protocol_version; 1543*2654012fSReza Sabdar string text_reason<>; 1544*2654012fSReza Sabdar }; 1545*2654012fSReza Sabdar 1546*2654012fSReza Sabdar /* NDMP_NOTIFY_MOVER_PAUSED */ 1547*2654012fSReza Sabdar struct ndmp_notify_mover_paused_request 1548*2654012fSReza Sabdar { 1549*2654012fSReza Sabdar ndmp_mover_pause_reason reason; 1550*2654012fSReza Sabdar ndmp_u_quad seek_position; 1551*2654012fSReza Sabdar }; 1552*2654012fSReza Sabdar /* no reply arguments */ 1553*2654012fSReza Sabdar 1554*2654012fSReza Sabdar /* NDMP_NOTIFY_MOVER_HALTED */ 1555*2654012fSReza Sabdar struct ndmp_notify_mover_halted_request 1556*2654012fSReza Sabdar { 1557*2654012fSReza Sabdar ndmp_mover_halt_reason reason; 1558*2654012fSReza Sabdar string text_reason<>; 1559*2654012fSReza Sabdar }; 1560*2654012fSReza Sabdar /* no reply arguments */ 1561*2654012fSReza Sabdar 1562*2654012fSReza Sabdar /* NDMP_NOTIFY_DATA_READ */ 1563*2654012fSReza Sabdar struct ndmp_notify_data_read_request 1564*2654012fSReza Sabdar { 1565*2654012fSReza Sabdar ndmp_u_quad offset; 1566*2654012fSReza Sabdar ndmp_u_quad length; 1567*2654012fSReza Sabdar }; 1568*2654012fSReza Sabdar /* no reply arguments */ 1569*2654012fSReza Sabdar 1570*2654012fSReza Sabdar 1571*2654012fSReza Sabdar /*************************/ 1572*2654012fSReza Sabdar /* NOTIFY INTERFACE (V3) */ 1573*2654012fSReza Sabdar /*************************/ 1574*2654012fSReza Sabdar 1575*2654012fSReza Sabdar /* NDMP_NOTIFY_DATA_HALTED - same as V2 */ 1576*2654012fSReza Sabdar 1577*2654012fSReza Sabdar /* NDMP_NOTIFY_CONNECTED - same as V2 */ 1578*2654012fSReza Sabdar 1579*2654012fSReza Sabdar /* NDMP_NOTIFY_MOVER_PAUSED - same as V2 */ 1580*2654012fSReza Sabdar 1581*2654012fSReza Sabdar /* NDMP_NOTIFY_MOVER_HALTED - same as V2 */ 1582*2654012fSReza Sabdar 1583*2654012fSReza Sabdar /* NDMP_NOTIFY_DATA_READ - same as V2 */ 1584*2654012fSReza Sabdar 1585*2654012fSReza Sabdar 1586*2654012fSReza Sabdar /*************************/ 1587*2654012fSReza Sabdar /* NOTIFY INTERFACE (V4) */ 1588*2654012fSReza Sabdar /*************************/ 1589*2654012fSReza Sabdar 1590*2654012fSReza Sabdar struct ndmp_notify_data_halted_request_v4 1591*2654012fSReza Sabdar { 1592*2654012fSReza Sabdar ndmp_data_halt_reason reason; 1593*2654012fSReza Sabdar }; 1594*2654012fSReza Sabdar 1595*2654012fSReza Sabdar /* NDMP_NOTIFY_CONNECTION_STATUS - same as V3 */ 1596*2654012fSReza Sabdar 1597*2654012fSReza Sabdar struct ndmp_notify_mover_halted_request_v4 1598*2654012fSReza Sabdar { 1599*2654012fSReza Sabdar ndmp_mover_halt_reason reason; 1600*2654012fSReza Sabdar }; 1601*2654012fSReza Sabdar 1602*2654012fSReza Sabdar /* NDMP_NOTIFY_MOVER_PAUSED - same as V3 */ 1603*2654012fSReza Sabdar 1604*2654012fSReza Sabdar /* NDMP_NOTIFY_DATA_READ - same as V3 */ 1605*2654012fSReza Sabdar 1606*2654012fSReza Sabdar 1607*2654012fSReza Sabdar /**********************/ 1608*2654012fSReza Sabdar /* LOG INTERFACE (V2) */ 1609*2654012fSReza Sabdar /**********************/ 1610*2654012fSReza Sabdar 1611*2654012fSReza Sabdar /* NDMP_LOG_LOG */ 1612*2654012fSReza Sabdar struct ndmp_log_log_request 1613*2654012fSReza Sabdar { 1614*2654012fSReza Sabdar string entry<>; 1615*2654012fSReza Sabdar }; 1616*2654012fSReza Sabdar /* no reply arguments */ 1617*2654012fSReza Sabdar 1618*2654012fSReza Sabdar /* NDMP_LOG_DEBUG */ 1619*2654012fSReza Sabdar enum ndmp_debug_level 1620*2654012fSReza Sabdar { 1621*2654012fSReza Sabdar NDMP_DBG_USER_INFO, 1622*2654012fSReza Sabdar NDMP_DBG_USER_SUMMARY, 1623*2654012fSReza Sabdar NDMP_DBG_USER_DETAIL, 1624*2654012fSReza Sabdar NDMP_DBG_DIAG_INFO, 1625*2654012fSReza Sabdar NDMP_DBG_DIAG_SUMMARY, 1626*2654012fSReza Sabdar NDMP_DBG_DIAG_DETAIL, 1627*2654012fSReza Sabdar NDMP_DBG_PROG_INFO, 1628*2654012fSReza Sabdar NDMP_DBG_PROG_SUMMARY, 1629*2654012fSReza Sabdar NDMP_DBG_PROG_DETAIL 1630*2654012fSReza Sabdar }; 1631*2654012fSReza Sabdar 1632*2654012fSReza Sabdar struct ndmp_log_debug_request 1633*2654012fSReza Sabdar { 1634*2654012fSReza Sabdar ndmp_debug_level level; 1635*2654012fSReza Sabdar string message<>; 1636*2654012fSReza Sabdar }; 1637*2654012fSReza Sabdar /* no reply arguments */ 1638*2654012fSReza Sabdar 1639*2654012fSReza Sabdar /* NDMP_LOG_FILE */ 1640*2654012fSReza Sabdar struct ndmp_log_file_request 1641*2654012fSReza Sabdar { 1642*2654012fSReza Sabdar string name<>; 1643*2654012fSReza Sabdar u_short ssid; 1644*2654012fSReza Sabdar ndmp_error error; 1645*2654012fSReza Sabdar }; 1646*2654012fSReza Sabdar /* no reply arguments */ 1647*2654012fSReza Sabdar 1648*2654012fSReza Sabdar 1649*2654012fSReza Sabdar /**********************/ 1650*2654012fSReza Sabdar /* LOG INTERFACE (V3) */ 1651*2654012fSReza Sabdar /**********************/ 1652*2654012fSReza Sabdar 1653*2654012fSReza Sabdar /* NDMP_LOG_MESSAGE */ 1654*2654012fSReza Sabdar enum ndmp_log_type 1655*2654012fSReza Sabdar { 1656*2654012fSReza Sabdar NDMP_LOG_NORMAL = 0, 1657*2654012fSReza Sabdar NDMP_LOG_DEBUG = 1, 1658*2654012fSReza Sabdar NDMP_LOG_ERROR = 2, 1659*2654012fSReza Sabdar NDMP_LOG_WARNING = 3 1660*2654012fSReza Sabdar }; 1661*2654012fSReza Sabdar 1662*2654012fSReza Sabdar struct ndmp_log_message_request_v3 1663*2654012fSReza Sabdar { 1664*2654012fSReza Sabdar ndmp_log_type log_type; 1665*2654012fSReza Sabdar u_long message_id; 1666*2654012fSReza Sabdar string entry<>; 1667*2654012fSReza Sabdar }; 1668*2654012fSReza Sabdar /* no reply arguments */ 1669*2654012fSReza Sabdar 1670*2654012fSReza Sabdar /* NDMP_LOG_FILE */ 1671*2654012fSReza Sabdar struct ndmp_log_file_request_v3 1672*2654012fSReza Sabdar { 1673*2654012fSReza Sabdar string name<>; 1674*2654012fSReza Sabdar ndmp_error error; 1675*2654012fSReza Sabdar }; 1676*2654012fSReza Sabdar /* no reply arguments */ 1677*2654012fSReza Sabdar 1678*2654012fSReza Sabdar 1679*2654012fSReza Sabdar /**********************/ 1680*2654012fSReza Sabdar /* LOG INTERFACE (V4) */ 1681*2654012fSReza Sabdar /**********************/ 1682*2654012fSReza Sabdar 1683*2654012fSReza Sabdar enum ndmp_has_associated_message 1684*2654012fSReza Sabdar { 1685*2654012fSReza Sabdar NDMP_NO_ASSOCIATED_MESSAGE = 0, 1686*2654012fSReza Sabdar NDMP_HAS_ASSOCIATED_MESSAGE = 1 1687*2654012fSReza Sabdar }; 1688*2654012fSReza Sabdar 1689*2654012fSReza Sabdar enum ndmp_recovery_status 1690*2654012fSReza Sabdar { 1691*2654012fSReza Sabdar NDMP_RECOVERY_SUCCESSFUL = 0, 1692*2654012fSReza Sabdar NDMP_RECOVERY_FAILED_PERMISSION = 1, 1693*2654012fSReza Sabdar NDMP_RECOVERY_FAILED_NOT_FOUND = 2, 1694*2654012fSReza Sabdar NDMP_RECOVERY_FAILED_NO_DIRECTORY = 3, 1695*2654012fSReza Sabdar NDMP_RECOVERY_FAILED_OUT_OF_MEMORY = 4, 1696*2654012fSReza Sabdar NDMP_RECOVERY_FAILED_IO_ERROR = 5, 1697*2654012fSReza Sabdar NDMP_RECOVERY_FAILED_UNDEFINED_ERROR = 6, 1698*2654012fSReza Sabdar NDMP_RECOVERY_FAILED_FILE_PATH_EXISTS = 7 1699*2654012fSReza Sabdar }; 1700*2654012fSReza Sabdar 1701*2654012fSReza Sabdar struct ndmp_log_message_request_v4 1702*2654012fSReza Sabdar { 1703*2654012fSReza Sabdar ndmp_log_type log_type; 1704*2654012fSReza Sabdar u_long message_id; 1705*2654012fSReza Sabdar string entry<>; 1706*2654012fSReza Sabdar ndmp_has_associated_message associated_message_valid; 1707*2654012fSReza Sabdar u_long associated_message_sequence; 1708*2654012fSReza Sabdar }; 1709*2654012fSReza Sabdar 1710*2654012fSReza Sabdar struct ndmp_log_file_request_v4 1711*2654012fSReza Sabdar { 1712*2654012fSReza Sabdar string name<>; 1713*2654012fSReza Sabdar ndmp_recovery_status recovery_status; 1714*2654012fSReza Sabdar }; 1715*2654012fSReza Sabdar 1716*2654012fSReza Sabdar 1717*2654012fSReza Sabdar 1718*2654012fSReza Sabdar /*******************************/ 1719*2654012fSReza Sabdar /* FILE HISTORY INTERFACE (V2) */ 1720*2654012fSReza Sabdar /*******************************/ 1721*2654012fSReza Sabdar 1722*2654012fSReza Sabdar /* NDMP_FH_ADD_UNIX_PATH */ 1723*2654012fSReza Sabdar typedef string ndmp_unix_path<>; 1724*2654012fSReza Sabdar enum ndmp_file_type 1725*2654012fSReza Sabdar { 1726*2654012fSReza Sabdar NDMP_FILE_DIR = 0, 1727*2654012fSReza Sabdar NDMP_FILE_FIFO = 1, 1728*2654012fSReza Sabdar NDMP_FILE_CSPEC = 2, 1729*2654012fSReza Sabdar NDMP_FILE_BSPEC = 3, 1730*2654012fSReza Sabdar NDMP_FILE_REG = 4, 1731*2654012fSReza Sabdar NDMP_FILE_SLINK = 5, 1732*2654012fSReza Sabdar NDMP_FILE_SOCK = 6, 1733*2654012fSReza Sabdar NDMP_FILE_REGISTRY = 7, 1734*2654012fSReza Sabdar NDMP_FILE_OTHER = 8 1735*2654012fSReza Sabdar }; 1736*2654012fSReza Sabdar 1737*2654012fSReza Sabdar struct ndmp_unix_file_stat 1738*2654012fSReza Sabdar { 1739*2654012fSReza Sabdar ndmp_file_type ftype; 1740*2654012fSReza Sabdar u_long mtime; 1741*2654012fSReza Sabdar u_long atime; 1742*2654012fSReza Sabdar u_long ctime; 1743*2654012fSReza Sabdar u_long uid; 1744*2654012fSReza Sabdar u_long gid; 1745*2654012fSReza Sabdar u_long mode; 1746*2654012fSReza Sabdar ndmp_u_quad size; 1747*2654012fSReza Sabdar ndmp_u_quad fh_info; 1748*2654012fSReza Sabdar }; 1749*2654012fSReza Sabdar 1750*2654012fSReza Sabdar struct ndmp_fh_unix_path 1751*2654012fSReza Sabdar { 1752*2654012fSReza Sabdar ndmp_unix_path name; 1753*2654012fSReza Sabdar ndmp_unix_file_stat fstat; 1754*2654012fSReza Sabdar }; 1755*2654012fSReza Sabdar 1756*2654012fSReza Sabdar struct ndmp_fh_add_unix_path_request 1757*2654012fSReza Sabdar { 1758*2654012fSReza Sabdar ndmp_fh_unix_path paths<>; 1759*2654012fSReza Sabdar }; 1760*2654012fSReza Sabdar /* no reply arguments */ 1761*2654012fSReza Sabdar 1762*2654012fSReza Sabdar /* NDMP_FH_ADD_UNIX_DIR */ 1763*2654012fSReza Sabdar struct ndmp_fh_unix_dir 1764*2654012fSReza Sabdar { 1765*2654012fSReza Sabdar ndmp_unix_path name; 1766*2654012fSReza Sabdar u_long node; 1767*2654012fSReza Sabdar u_long parent; 1768*2654012fSReza Sabdar }; 1769*2654012fSReza Sabdar 1770*2654012fSReza Sabdar struct ndmp_fh_add_unix_dir_request 1771*2654012fSReza Sabdar { 1772*2654012fSReza Sabdar ndmp_fh_unix_dir dirs<>; 1773*2654012fSReza Sabdar }; 1774*2654012fSReza Sabdar /* no reply arguments */ 1775*2654012fSReza Sabdar 1776*2654012fSReza Sabdar /* NDMP_FH_ADD_UNIX_NODE */ 1777*2654012fSReza Sabdar struct ndmp_fh_unix_node 1778*2654012fSReza Sabdar { 1779*2654012fSReza Sabdar ndmp_unix_file_stat fstat; 1780*2654012fSReza Sabdar u_long node; 1781*2654012fSReza Sabdar }; 1782*2654012fSReza Sabdar 1783*2654012fSReza Sabdar struct ndmp_fh_add_unix_node_request 1784*2654012fSReza Sabdar { 1785*2654012fSReza Sabdar ndmp_fh_unix_node nodes<>; 1786*2654012fSReza Sabdar }; 1787*2654012fSReza Sabdar /* no reply arguments */ 1788*2654012fSReza Sabdar 1789*2654012fSReza Sabdar 1790*2654012fSReza Sabdar /********************************/ 1791*2654012fSReza Sabdar /* FILE HISTORY INTERFACE (V3) */ 1792*2654012fSReza Sabdar /********************************/ 1793*2654012fSReza Sabdar 1794*2654012fSReza Sabdar /* NDMP_FH_ADD_FILE */ 1795*2654012fSReza Sabdar enum ndmp_fs_type 1796*2654012fSReza Sabdar { 1797*2654012fSReza Sabdar NDMP_FS_UNIX = 0, 1798*2654012fSReza Sabdar NDMP_FS_NT = 1, 1799*2654012fSReza Sabdar NDMP_FS_OTHER = 2 1800*2654012fSReza Sabdar }; 1801*2654012fSReza Sabdar 1802*2654012fSReza Sabdar 1803*2654012fSReza Sabdar typedef string ndmp_path_v3<>; 1804*2654012fSReza Sabdar struct ndmp_nt_path_v3 1805*2654012fSReza Sabdar { 1806*2654012fSReza Sabdar ndmp_path_v3 nt_path; 1807*2654012fSReza Sabdar ndmp_path_v3 dos_path; 1808*2654012fSReza Sabdar }; 1809*2654012fSReza Sabdar 1810*2654012fSReza Sabdar union ndmp_file_name_v3 switch (ndmp_fs_type fs_type) 1811*2654012fSReza Sabdar { 1812*2654012fSReza Sabdar case NDMP_FS_UNIX: 1813*2654012fSReza Sabdar ndmp_path_v3 unix_name; 1814*2654012fSReza Sabdar case NDMP_FS_NT: 1815*2654012fSReza Sabdar ndmp_nt_path_v3 nt_name; 1816*2654012fSReza Sabdar default: 1817*2654012fSReza Sabdar ndmp_path_v3 other_name; 1818*2654012fSReza Sabdar }; 1819*2654012fSReza Sabdar 1820*2654012fSReza Sabdar /* invalid bit */ 1821*2654012fSReza Sabdar const NDMP_FILE_STAT_ATIME_INVALID = 0x00000001; 1822*2654012fSReza Sabdar const NDMP_FILE_STAT_CTIME_INVALID = 0x00000002; 1823*2654012fSReza Sabdar const NDMP_FILE_STAT_GROUP_INVALID = 0x00000004; 1824*2654012fSReza Sabdar 1825*2654012fSReza Sabdar struct ndmp_file_stat_v3 1826*2654012fSReza Sabdar { 1827*2654012fSReza Sabdar u_long invalid; 1828*2654012fSReza Sabdar ndmp_fs_type fs_type; 1829*2654012fSReza Sabdar ndmp_file_type ftype; 1830*2654012fSReza Sabdar u_long mtime; 1831*2654012fSReza Sabdar u_long atime; 1832*2654012fSReza Sabdar u_long ctime; 1833*2654012fSReza Sabdar u_long owner; /* uid for UNIX, owner for NT */ 1834*2654012fSReza Sabdar u_long group; /* gid for UNIX, NA for NT */ 1835*2654012fSReza Sabdar u_long fattr; /* mode for UNIX, fattr for NT */ 1836*2654012fSReza Sabdar ndmp_u_quad size; 1837*2654012fSReza Sabdar u_long links; 1838*2654012fSReza Sabdar }; 1839*2654012fSReza Sabdar 1840*2654012fSReza Sabdar 1841*2654012fSReza Sabdar /* one file could have both UNIX and NT name and attributes */ 1842*2654012fSReza Sabdar struct ndmp_file_v3 1843*2654012fSReza Sabdar { 1844*2654012fSReza Sabdar ndmp_file_name_v3 names<>; 1845*2654012fSReza Sabdar ndmp_file_stat_v3 stats<>; 1846*2654012fSReza Sabdar ndmp_u_quad node; /* used for the direct access */ 1847*2654012fSReza Sabdar ndmp_u_quad fh_info; /* used for the direct access */ 1848*2654012fSReza Sabdar }; 1849*2654012fSReza Sabdar 1850*2654012fSReza Sabdar struct ndmp_fh_add_file_request_v3 1851*2654012fSReza Sabdar { 1852*2654012fSReza Sabdar ndmp_file_v3 files<>; 1853*2654012fSReza Sabdar }; 1854*2654012fSReza Sabdar /* no reply arguments */ 1855*2654012fSReza Sabdar 1856*2654012fSReza Sabdar /* NDMP_FH_ADD_DIR */ 1857*2654012fSReza Sabdar 1858*2654012fSReza Sabdar struct ndmp_dir_v3 1859*2654012fSReza Sabdar { 1860*2654012fSReza Sabdar ndmp_file_name_v3 names<>; 1861*2654012fSReza Sabdar ndmp_u_quad node; 1862*2654012fSReza Sabdar ndmp_u_quad parent; 1863*2654012fSReza Sabdar }; 1864*2654012fSReza Sabdar 1865*2654012fSReza Sabdar struct ndmp_fh_add_dir_request_v3 1866*2654012fSReza Sabdar { 1867*2654012fSReza Sabdar ndmp_dir_v3 dirs<>; 1868*2654012fSReza Sabdar }; 1869*2654012fSReza Sabdar /* no reply arguments */ 1870*2654012fSReza Sabdar 1871*2654012fSReza Sabdar /* NDMP_FH_ADD_NODE */ 1872*2654012fSReza Sabdar 1873*2654012fSReza Sabdar struct ndmp_node_v3 1874*2654012fSReza Sabdar { 1875*2654012fSReza Sabdar ndmp_file_stat_v3 stats<>; 1876*2654012fSReza Sabdar ndmp_u_quad node; 1877*2654012fSReza Sabdar ndmp_u_quad fh_info; 1878*2654012fSReza Sabdar }; 1879*2654012fSReza Sabdar 1880*2654012fSReza Sabdar struct ndmp_fh_add_node_request_v3 1881*2654012fSReza Sabdar { 1882*2654012fSReza Sabdar ndmp_node_v3 nodes<>; 1883*2654012fSReza Sabdar }; 1884*2654012fSReza Sabdar /* no reply arguments */ 1885*2654012fSReza Sabdar 1886*2654012fSReza Sabdar 1887*2654012fSReza Sabdar /********************************/ 1888*2654012fSReza Sabdar /* FILE HISTORY INTERFACE (V4) */ 1889*2654012fSReza Sabdar /********************************/ 1890*2654012fSReza Sabdar 1891*2654012fSReza Sabdar /* NDMP_FH_ADD_FILE - same as V3 */ 1892*2654012fSReza Sabdar 1893*2654012fSReza Sabdar /* NDMP_FH_ADD_DIR - same as V3 */ 1894*2654012fSReza Sabdar 1895*2654012fSReza Sabdar /* NDMP_FH_ADD_NODE - same as V3 */ 1896*2654012fSReza Sabdar 1897*2654012fSReza Sabdar 1898*2654012fSReza Sabdar 1899*2654012fSReza Sabdar /********************************/ 1900*2654012fSReza Sabdar /* NDMP requests */ 1901*2654012fSReza Sabdar /********************************/ 1902*2654012fSReza Sabdar /* CONNECT */ 1903*2654012fSReza Sabdar typedef ndmp_auth_text ndmp_auth_text_v2; 1904*2654012fSReza Sabdar typedef ndmp_auth_text_v3 ndmp_auth_text_v4; 1905*2654012fSReza Sabdar typedef ndmp_auth_md5 ndmp_auth_md5_v2; 1906*2654012fSReza Sabdar typedef ndmp_auth_md5_v3 ndmp_auth_md5_v4; 1907*2654012fSReza Sabdar typedef ndmp_auth_data ndmp_auth_data_v2; 1908*2654012fSReza Sabdar typedef ndmp_auth_data_v3 ndmp_auth_data_v4; 1909*2654012fSReza Sabdar 1910*2654012fSReza Sabdar typedef ndmp_connect_open_request ndmp_connect_open_request_v2; 1911*2654012fSReza Sabdar typedef ndmp_connect_open_request ndmp_connect_open_request_v3; 1912*2654012fSReza Sabdar typedef ndmp_connect_open_request ndmp_connect_open_request_v4; 1913*2654012fSReza Sabdar typedef ndmp_connect_open_reply ndmp_connect_open_reply_v2; 1914*2654012fSReza Sabdar typedef ndmp_connect_open_reply ndmp_connect_open_reply_v3; 1915*2654012fSReza Sabdar typedef ndmp_connect_open_reply ndmp_connect_open_reply_v4; 1916*2654012fSReza Sabdar typedef ndmp_connect_client_auth_request ndmp_connect_client_auth_request_v2; 1917*2654012fSReza Sabdar typedef ndmp_connect_client_auth_request_v3 ndmp_connect_client_auth_request_v4; 1918*2654012fSReza Sabdar typedef ndmp_connect_client_auth_reply ndmp_connect_client_auth_reply_v2; 1919*2654012fSReza Sabdar typedef ndmp_connect_client_auth_reply_v3 ndmp_connect_client_auth_reply_v4; 1920*2654012fSReza Sabdar typedef ndmp_connect_server_auth_request ndmp_connect_server_auth_request_v2; 1921*2654012fSReza Sabdar typedef ndmp_connect_server_auth_request ndmp_connect_server_auth_request_v3; 1922*2654012fSReza Sabdar typedef ndmp_connect_server_auth_request ndmp_connect_server_auth_request_v4; 1923*2654012fSReza Sabdar typedef ndmp_connect_server_auth_reply ndmp_connect_server_auth_reply_v2; 1924*2654012fSReza Sabdar typedef ndmp_connect_server_auth_reply ndmp_connect_server_auth_reply_v3; 1925*2654012fSReza Sabdar typedef ndmp_connect_server_auth_reply ndmp_connect_server_auth_reply_v4; 1926*2654012fSReza Sabdar 1927*2654012fSReza Sabdar 1928*2654012fSReza Sabdar /* CONFIG */ 1929*2654012fSReza Sabdar typedef ndmp_config_get_host_info_reply ndmp_config_get_host_info_reply_v2; 1930*2654012fSReza Sabdar typedef ndmp_config_get_host_info_reply_v3 ndmp_config_get_host_info_reply_v4; 1931*2654012fSReza Sabdar typedef ndmp_config_get_butype_attr_request ndmp_config_get_butype_attr_request_v2; 1932*2654012fSReza Sabdar typedef ndmp_config_get_butype_attr_reply ndmp_config_get_butype_attr_reply_v2; 1933*2654012fSReza Sabdar typedef ndmp_config_get_mover_type_reply ndmp_config_get_mover_type_reply_v2; 1934*2654012fSReza Sabdar typedef ndmp_config_get_auth_attr_request ndmp_config_get_auth_attr_request_v2; 1935*2654012fSReza Sabdar typedef ndmp_config_get_auth_attr_request ndmp_config_get_auth_attr_request_v3; 1936*2654012fSReza Sabdar typedef ndmp_config_get_auth_attr_request ndmp_config_get_auth_attr_request_v4; 1937*2654012fSReza Sabdar typedef ndmp_config_get_auth_attr_reply ndmp_config_get_auth_attr_reply_v2; 1938*2654012fSReza Sabdar typedef ndmp_config_get_auth_attr_reply ndmp_config_get_auth_attr_reply_v3; 1939*2654012fSReza Sabdar typedef ndmp_config_get_auth_attr_reply ndmp_config_get_auth_attr_reply_v4; 1940*2654012fSReza Sabdar typedef ndmp_config_get_connection_type_reply_v3 ndmp_config_get_connection_type_reply_v4; 1941*2654012fSReza Sabdar typedef ndmp_config_get_server_info_reply_v3 ndmp_config_get_server_info_reply_v4; 1942*2654012fSReza Sabdar typedef ndmp_fs_info_v3 ndmp_fs_info_v4; 1943*2654012fSReza Sabdar typedef ndmp_config_get_fs_info_reply_v3 ndmp_config_get_fs_info_reply_v4; 1944*2654012fSReza Sabdar typedef ndmp_device_info_v3 ndmp_device_info_v4; 1945*2654012fSReza Sabdar typedef ndmp_config_get_tape_info_reply_v3 ndmp_config_get_tape_info_reply_v4; 1946*2654012fSReza Sabdar typedef ndmp_config_get_scsi_info_reply_v3 ndmp_config_get_scsi_info_reply_v4; 1947*2654012fSReza Sabdar typedef ndmp_config_get_ext_list_reply ndmp_config_get_ext_list_reply_v4; 1948*2654012fSReza Sabdar typedef ndmp_config_set_ext_list_request ndmp_config_set_ext_list_request_v4; 1949*2654012fSReza Sabdar typedef ndmp_config_set_ext_list_reply ndmp_config_set_ext_list_reply_v4; 1950*2654012fSReza Sabdar 1951*2654012fSReza Sabdar 1952*2654012fSReza Sabdar /* SCSI */ 1953*2654012fSReza Sabdar typedef ndmp_scsi_open_request ndmp_scsi_open_request_v2; 1954*2654012fSReza Sabdar typedef ndmp_scsi_open_request_v3 ndmp_scsi_open_request_v4; 1955*2654012fSReza Sabdar typedef ndmp_scsi_open_reply ndmp_scsi_open_reply_v2; 1956*2654012fSReza Sabdar typedef ndmp_scsi_open_reply ndmp_scsi_open_reply_v3; 1957*2654012fSReza Sabdar typedef ndmp_scsi_open_reply ndmp_scsi_open_reply_v4; 1958*2654012fSReza Sabdar typedef ndmp_scsi_close_reply ndmp_scsi_close_reply_v2; 1959*2654012fSReza Sabdar typedef ndmp_scsi_close_reply ndmp_scsi_close_reply_v3; 1960*2654012fSReza Sabdar typedef ndmp_scsi_close_reply ndmp_scsi_close_reply_v4; 1961*2654012fSReza Sabdar typedef ndmp_scsi_get_state_reply ndmp_scsi_get_state_reply_v2; 1962*2654012fSReza Sabdar typedef ndmp_scsi_get_state_reply ndmp_scsi_get_state_reply_v3; 1963*2654012fSReza Sabdar typedef ndmp_scsi_get_state_reply ndmp_scsi_get_state_reply_v4; 1964*2654012fSReza Sabdar typedef ndmp_scsi_set_target_request ndmp_scsi_set_target_request_v2; 1965*2654012fSReza Sabdar typedef ndmp_scsi_set_target_reply ndmp_scsi_set_target_reply_v2; 1966*2654012fSReza Sabdar typedef ndmp_scsi_set_target_reply ndmp_scsi_set_target_reply_v3; 1967*2654012fSReza Sabdar typedef ndmp_scsi_reset_device_reply ndmp_scsi_reset_device_reply_v2; 1968*2654012fSReza Sabdar typedef ndmp_scsi_reset_device_reply ndmp_scsi_reset_device_reply_v3; 1969*2654012fSReza Sabdar typedef ndmp_scsi_reset_device_reply ndmp_scsi_reset_device_reply_v4; 1970*2654012fSReza Sabdar typedef ndmp_scsi_reset_bus_reply ndmp_scsi_reset_bus_reply_v2; 1971*2654012fSReza Sabdar typedef ndmp_scsi_reset_bus_reply ndmp_scsi_reset_bus_reply_v3; 1972*2654012fSReza Sabdar typedef ndmp_execute_cdb_request ndmp_scsi_execute_cdb_request_v2; 1973*2654012fSReza Sabdar typedef ndmp_execute_cdb_request ndmp_scsi_execute_cdb_request_v3; 1974*2654012fSReza Sabdar typedef ndmp_execute_cdb_request ndmp_scsi_execute_cdb_request_v4; 1975*2654012fSReza Sabdar typedef ndmp_execute_cdb_reply ndmp_scsi_execute_cdb_reply_v2; 1976*2654012fSReza Sabdar typedef ndmp_execute_cdb_reply ndmp_scsi_execute_cdb_reply_v3; 1977*2654012fSReza Sabdar typedef ndmp_execute_cdb_reply ndmp_scsi_execute_cdb_reply_v4; 1978*2654012fSReza Sabdar 1979*2654012fSReza Sabdar 1980*2654012fSReza Sabdar /* TAPE */ 1981*2654012fSReza Sabdar typedef ndmp_tape_open_request ndmp_tape_open_request_v2; 1982*2654012fSReza Sabdar typedef ndmp_tape_open_request_v3 ndmp_tape_open_request_v4; 1983*2654012fSReza Sabdar typedef ndmp_tape_open_reply ndmp_tape_open_reply_v2; 1984*2654012fSReza Sabdar typedef ndmp_tape_open_reply ndmp_tape_open_reply_v3; 1985*2654012fSReza Sabdar typedef ndmp_tape_open_reply ndmp_tape_open_reply_v4; 1986*2654012fSReza Sabdar typedef ndmp_tape_close_reply ndmp_tape_close_reply_v2; 1987*2654012fSReza Sabdar typedef ndmp_tape_close_reply ndmp_tape_close_reply_v3; 1988*2654012fSReza Sabdar typedef ndmp_tape_close_reply ndmp_tape_close_reply_v4; 1989*2654012fSReza Sabdar typedef ndmp_tape_get_state_reply ndmp_tape_get_state_reply_v2; 1990*2654012fSReza Sabdar typedef ndmp_tape_mtio_request ndmp_tape_mtio_request_v2; 1991*2654012fSReza Sabdar typedef ndmp_tape_mtio_request ndmp_tape_mtio_request_v3; 1992*2654012fSReza Sabdar typedef ndmp_tape_mtio_request ndmp_tape_mtio_request_v4; 1993*2654012fSReza Sabdar typedef ndmp_tape_mtio_reply ndmp_tape_mtio_reply_v2; 1994*2654012fSReza Sabdar typedef ndmp_tape_mtio_reply ndmp_tape_mtio_reply_v3; 1995*2654012fSReza Sabdar typedef ndmp_tape_mtio_reply ndmp_tape_mtio_reply_v4; 1996*2654012fSReza Sabdar typedef ndmp_tape_write_request ndmp_tape_write_request_v2; 1997*2654012fSReza Sabdar typedef ndmp_tape_write_request ndmp_tape_write_request_v3; 1998*2654012fSReza Sabdar typedef ndmp_tape_write_request ndmp_tape_write_request_v4; 1999*2654012fSReza Sabdar typedef ndmp_tape_write_reply ndmp_tape_write_reply_v2; 2000*2654012fSReza Sabdar typedef ndmp_tape_write_reply ndmp_tape_write_reply_v3; 2001*2654012fSReza Sabdar typedef ndmp_tape_write_reply ndmp_tape_write_reply_v4; 2002*2654012fSReza Sabdar typedef ndmp_tape_read_request ndmp_tape_read_request_v2; 2003*2654012fSReza Sabdar typedef ndmp_tape_read_request ndmp_tape_read_request_v3; 2004*2654012fSReza Sabdar typedef ndmp_tape_read_request ndmp_tape_read_request_v4; 2005*2654012fSReza Sabdar typedef ndmp_tape_read_reply ndmp_tape_read_reply_v2; 2006*2654012fSReza Sabdar typedef ndmp_tape_read_reply ndmp_tape_read_reply_v3; 2007*2654012fSReza Sabdar typedef ndmp_tape_read_reply ndmp_tape_read_reply_v4; 2008*2654012fSReza Sabdar typedef ndmp_tape_execute_cdb_request ndmp_tape_execute_cdb_request_v2; 2009*2654012fSReza Sabdar typedef ndmp_tape_execute_cdb_request ndmp_tape_execute_cdb_request_v3; 2010*2654012fSReza Sabdar typedef ndmp_tape_execute_cdb_request ndmp_tape_execute_cdb_request_v4; 2011*2654012fSReza Sabdar typedef ndmp_tape_execute_cdb_reply ndmp_tape_execute_cdb_reply_v2; 2012*2654012fSReza Sabdar typedef ndmp_tape_execute_cdb_reply ndmp_tape_execute_cdb_reply_v3; 2013*2654012fSReza Sabdar typedef ndmp_tape_execute_cdb_reply ndmp_tape_execute_cdb_reply_v4; 2014*2654012fSReza Sabdar 2015*2654012fSReza Sabdar 2016*2654012fSReza Sabdar /* MOVER */ 2017*2654012fSReza Sabdar typedef ndmp_fc_addr_v3 ndmp_fc_addr; 2018*2654012fSReza Sabdar typedef ndmp_ipc_addr_v3 ndmp_ipc_addr; 2019*2654012fSReza Sabdar typedef ndmp_mover_get_state_reply ndmp_mover_get_state_reply_v2; 2020*2654012fSReza Sabdar typedef ndmp_mover_listen_request ndmp_mover_listen_request_v2; 2021*2654012fSReza Sabdar typedef ndmp_mover_listen_request ndmp_mover_listen_request_v3; 2022*2654012fSReza Sabdar typedef ndmp_mover_listen_request ndmp_mover_listen_request_v4; 2023*2654012fSReza Sabdar typedef ndmp_mover_listen_reply ndmp_mover_listen_reply_v2; 2024*2654012fSReza Sabdar typedef ndmp_mover_set_record_size_request ndmp_mover_set_record_size_request_v2; 2025*2654012fSReza Sabdar typedef ndmp_mover_set_record_size_request ndmp_mover_set_record_size_request_v3; 2026*2654012fSReza Sabdar typedef ndmp_mover_set_record_size_request ndmp_mover_set_record_size_request_v4; 2027*2654012fSReza Sabdar typedef ndmp_mover_set_record_size_reply ndmp_mover_set_record_size_reply_v2; 2028*2654012fSReza Sabdar typedef ndmp_mover_set_record_size_reply ndmp_mover_set_record_size_reply_v3; 2029*2654012fSReza Sabdar typedef ndmp_mover_set_record_size_reply ndmp_mover_set_record_size_reply_v4; 2030*2654012fSReza Sabdar typedef ndmp_mover_set_window_request ndmp_mover_set_window_request_v2; 2031*2654012fSReza Sabdar typedef ndmp_mover_set_window_request ndmp_mover_set_window_request_v3; 2032*2654012fSReza Sabdar typedef ndmp_mover_set_window_request ndmp_mover_set_window_request_v4; 2033*2654012fSReza Sabdar typedef ndmp_mover_set_window_reply ndmp_mover_set_window_reply_v2; 2034*2654012fSReza Sabdar typedef ndmp_mover_set_window_reply ndmp_mover_set_window_reply_v3; 2035*2654012fSReza Sabdar typedef ndmp_mover_set_window_reply ndmp_mover_set_window_reply_v4; 2036*2654012fSReza Sabdar typedef ndmp_mover_continue_reply ndmp_mover_continue_reply_v2; 2037*2654012fSReza Sabdar typedef ndmp_mover_continue_reply ndmp_mover_continue_reply_v3; 2038*2654012fSReza Sabdar typedef ndmp_mover_continue_reply ndmp_mover_continue_reply_v4; 2039*2654012fSReza Sabdar typedef ndmp_mover_abort_reply ndmp_mover_abort_reply_v2; 2040*2654012fSReza Sabdar typedef ndmp_mover_abort_reply ndmp_mover_abort_reply_v3; 2041*2654012fSReza Sabdar typedef ndmp_mover_abort_reply ndmp_mover_abort_reply_v4; 2042*2654012fSReza Sabdar typedef ndmp_mover_stop_reply ndmp_mover_stop_reply_v2; 2043*2654012fSReza Sabdar typedef ndmp_mover_stop_reply ndmp_mover_stop_reply_v3; 2044*2654012fSReza Sabdar typedef ndmp_mover_stop_reply ndmp_mover_stop_reply_v4; 2045*2654012fSReza Sabdar typedef ndmp_mover_read_request ndmp_mover_read_request_v2; 2046*2654012fSReza Sabdar typedef ndmp_mover_read_request ndmp_mover_read_request_v3; 2047*2654012fSReza Sabdar typedef ndmp_mover_read_request ndmp_mover_read_request_v4; 2048*2654012fSReza Sabdar typedef ndmp_mover_read_reply ndmp_mover_read_reply_v2; 2049*2654012fSReza Sabdar typedef ndmp_mover_read_reply ndmp_mover_read_reply_v3; 2050*2654012fSReza Sabdar typedef ndmp_mover_read_reply ndmp_mover_read_reply_v4; 2051*2654012fSReza Sabdar typedef ndmp_mover_close_reply ndmp_mover_close_reply_v2; 2052*2654012fSReza Sabdar typedef ndmp_mover_close_reply ndmp_mover_close_reply_v3; 2053*2654012fSReza Sabdar typedef ndmp_mover_close_reply ndmp_mover_close_reply_v4; 2054*2654012fSReza Sabdar typedef ndmp_mover_connect_reply_v3 ndmp_mover_connect_reply_v4; 2055*2654012fSReza Sabdar 2056*2654012fSReza Sabdar 2057*2654012fSReza Sabdar /* DATA */ 2058*2654012fSReza Sabdar typedef ndmp_data_get_state_reply ndmp_data_get_state_reply_v2; 2059*2654012fSReza Sabdar typedef ndmp_data_start_backup_request ndmp_data_start_backup_request_v2; 2060*2654012fSReza Sabdar typedef ndmp_data_start_backup_request_v3 ndmp_data_start_backup_request_v4; 2061*2654012fSReza Sabdar typedef ndmp_data_start_backup_reply ndmp_data_start_backup_reply_v2; 2062*2654012fSReza Sabdar typedef ndmp_data_start_backup_reply ndmp_data_start_backup_reply_v3; 2063*2654012fSReza Sabdar typedef ndmp_data_start_backup_reply ndmp_data_start_backup_reply_v4; 2064*2654012fSReza Sabdar typedef ndmp_name ndmp_name_v2; 2065*2654012fSReza Sabdar typedef ndmp_data_start_recover_request ndmp_data_start_recover_request_v2; 2066*2654012fSReza Sabdar typedef ndmp_data_start_recover_request_v3 ndmp_data_start_recover_request_v4; 2067*2654012fSReza Sabdar typedef ndmp_data_start_recover_reply ndmp_data_start_recover_reply_v2; 2068*2654012fSReza Sabdar typedef ndmp_data_start_recover_reply ndmp_data_start_recover_reply_v3; 2069*2654012fSReza Sabdar typedef ndmp_data_start_recover_reply ndmp_data_start_recover_reply_v4; 2070*2654012fSReza Sabdar typedef ndmp_data_start_recover_reply ndmp_data_start_recover_filehist_reply_v4; 2071*2654012fSReza Sabdar typedef ndmp_data_abort_reply ndmp_data_abort_reply_v2; 2072*2654012fSReza Sabdar typedef ndmp_data_abort_reply ndmp_data_abort_reply_v3; 2073*2654012fSReza Sabdar typedef ndmp_data_abort_reply ndmp_data_abort_reply_v4; 2074*2654012fSReza Sabdar typedef ndmp_data_stop_reply ndmp_data_stop_reply_v2; 2075*2654012fSReza Sabdar typedef ndmp_data_stop_reply ndmp_data_stop_reply_v3; 2076*2654012fSReza Sabdar typedef ndmp_data_stop_reply ndmp_data_stop_reply_v4; 2077*2654012fSReza Sabdar typedef ndmp_data_get_env_reply ndmp_data_get_env_reply_v2; 2078*2654012fSReza Sabdar typedef ndmp_data_get_env_reply ndmp_data_get_env_reply_v3; 2079*2654012fSReza Sabdar typedef ndmp_data_get_env_reply ndmp_data_get_env_reply_v4; 2080*2654012fSReza Sabdar typedef ndmp_data_listen_request_v3 ndmp_data_listen_request_v4; 2081*2654012fSReza Sabdar typedef ndmp_data_connect_reply_v3 ndmp_data_connect_reply_v4; 2082*2654012fSReza Sabdar 2083*2654012fSReza Sabdar 2084*2654012fSReza Sabdar /* NOTIFY */ 2085*2654012fSReza Sabdar typedef ndmp_notify_data_halted_request ndmp_notify_data_halted_request_v2; 2086*2654012fSReza Sabdar typedef ndmp_notify_data_halted_request ndmp_notify_data_halted_request_v3; 2087*2654012fSReza Sabdar typedef ndmp_notify_connected_request ndmp_notify_connection_status_request_v2; 2088*2654012fSReza Sabdar typedef ndmp_notify_connected_request ndmp_notify_connection_status_request_v3; 2089*2654012fSReza Sabdar typedef ndmp_notify_connected_request ndmp_notify_connection_status_request_v4; 2090*2654012fSReza Sabdar typedef ndmp_notify_mover_paused_request ndmp_notify_mover_paused_request_v2; 2091*2654012fSReza Sabdar typedef ndmp_notify_mover_paused_request ndmp_notify_mover_paused_request_v3; 2092*2654012fSReza Sabdar typedef ndmp_notify_mover_paused_request ndmp_notify_mover_paused_request_v4; 2093*2654012fSReza Sabdar typedef ndmp_notify_mover_halted_request ndmp_notify_mover_halted_request_v2; 2094*2654012fSReza Sabdar typedef ndmp_notify_mover_halted_request ndmp_notify_mover_halted_request_v3; 2095*2654012fSReza Sabdar typedef ndmp_notify_data_read_request ndmp_notify_data_read_request_v2; 2096*2654012fSReza Sabdar typedef ndmp_notify_data_read_request ndmp_notify_data_read_request_v3; 2097*2654012fSReza Sabdar typedef ndmp_notify_data_read_request ndmp_notify_data_read_request_v4; 2098*2654012fSReza Sabdar 2099*2654012fSReza Sabdar 2100*2654012fSReza Sabdar /* LOG */ 2101*2654012fSReza Sabdar typedef ndmp_log_log_request ndmp_log_log_request_v2; 2102*2654012fSReza Sabdar typedef ndmp_log_log_request ndmp_log_log_request_v3; 2103*2654012fSReza Sabdar typedef ndmp_log_log_request ndmp_log_log_request_v4; 2104*2654012fSReza Sabdar typedef ndmp_log_debug_request ndmp_log_debug_request_v2; 2105*2654012fSReza Sabdar typedef ndmp_log_debug_request ndmp_log_debug_request_v3; 2106*2654012fSReza Sabdar typedef ndmp_log_debug_request ndmp_log_debug_request_v4; 2107*2654012fSReza Sabdar typedef ndmp_log_file_request ndmp_log_file_request_v2; 2108*2654012fSReza Sabdar 2109*2654012fSReza Sabdar 2110*2654012fSReza Sabdar /* FILE HISTORY */ 2111*2654012fSReza Sabdar typedef ndmp_file_v3 ndmp_file; 2112*2654012fSReza Sabdar typedef ndmp_dir_v3 ndmp_dir; 2113*2654012fSReza Sabdar typedef ndmp_node_v3 ndmp_node; 2114*2654012fSReza Sabdar typedef ndmp_fh_add_unix_path_request ndmp_fh_add_unix_path_request_v2; 2115*2654012fSReza Sabdar typedef ndmp_fh_add_unix_path_request ndmp_fh_add_unix_path_request_v3; 2116*2654012fSReza Sabdar typedef ndmp_fh_add_file_request_v3 ndmp_fh_add_file_request_v4; 2117*2654012fSReza Sabdar typedef ndmp_fh_add_unix_dir_request ndmp_fh_add_unix_dir_request_v2; 2118*2654012fSReza Sabdar typedef ndmp_fh_add_unix_dir_request ndmp_fh_add_unix_dir_request_v3; 2119*2654012fSReza Sabdar typedef ndmp_fh_add_dir_request_v3 ndmp_fh_add_dir_request_v4; 2120*2654012fSReza Sabdar typedef ndmp_fh_add_unix_node_request ndmp_fh_add_unix_node_request_v2; 2121*2654012fSReza Sabdar typedef ndmp_fh_add_unix_node_request ndmp_fh_add_unix_node_request_v3; 2122*2654012fSReza Sabdar typedef ndmp_fh_add_node_request_v3 ndmp_fh_add_node_request_v4; 2123*2654012fSReza Sabdar 2124*2654012fSReza Sabdar 2125*2654012fSReza Sabdar 2126*2654012fSReza Sabdar 2127*2654012fSReza Sabdar 2128*2654012fSReza Sabdar 2129*2654012fSReza Sabdar 2130*2654012fSReza Sabdar 2131*2654012fSReza Sabdar 2132*2654012fSReza Sabdar 2133*2654012fSReza Sabdar 2134*2654012fSReza Sabdar 2135*2654012fSReza Sabdar 2136*2654012fSReza Sabdar 2137*2654012fSReza Sabdar 2138*2654012fSReza Sabdar 2139*2654012fSReza Sabdar 2140*2654012fSReza Sabdar 2141*2654012fSReza Sabdar 2142*2654012fSReza Sabdar 2143*2654012fSReza Sabdar 2144*2654012fSReza Sabdar 2145*2654012fSReza Sabdar 2146*2654012fSReza Sabdar 2147*2654012fSReza Sabdar 2148*2654012fSReza Sabdar 2149*2654012fSReza Sabdar 2150*2654012fSReza Sabdar 2151*2654012fSReza Sabdar 2152*2654012fSReza Sabdar 2153*2654012fSReza Sabdar 2154*2654012fSReza Sabdar 2155*2654012fSReza Sabdar 2156*2654012fSReza Sabdar 2157*2654012fSReza Sabdar 2158*2654012fSReza Sabdar 2159*2654012fSReza Sabdar 2160