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