xref: /illumos-gate/usr/src/cmd/ndmpd/ndmp/ndmp.x (revision 2654012f)
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