1 /*
2  * Copyright (c) 1998,1999,2000
3  *	Traakan, Inc., Los Altos, CA
4  *	All rights reserved.
5  *
6  * Redistribution and use in source and binary forms, with or without
7  * modification, are permitted provided that the following conditions
8  * are met:
9  * 1. Redistributions of source code must retain the above copyright
10  *    notice unmodified, this list of conditions, and the following
11  *    disclaimer.
12  * 2. Redistributions in binary form must reproduce the above copyright
13  *    notice, this list of conditions and the following disclaimer in the
14  *    documentation and/or other materials provided with the distribution.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
20  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26  * SUCH DAMAGE.
27  */
28 
29 /*
30  * Project:  NDMJOB
31  * Ident:    $Id: $
32  *
33  * Description:
34  *
35  */
36 
37 
38 #include "ndmos.h"		/* rpc/rpc.h */
39 #include "ndmprotocol.h"
40 
41 
42 
43 
44 
45 extern struct ndmp_enum_str_table ndmp9_error_table[];
46 extern char * ndmp9_error_to_str (ndmp9_error val);
47 extern int    ndmp9_error_from_str (ndmp9_error *valp, char * str);
48 
ndmp9_error_to_str(ndmp9_error val)49 char * ndmp9_error_to_str (ndmp9_error val) {
50 	return ndmp_enum_to_str ((int)val, ndmp9_error_table);
51 }
52 
ndmp9_error_from_str(ndmp9_error * valp,char * str)53 int ndmp9_error_from_str (ndmp9_error *valp, char * str) {
54 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_error_table);
55 }
56 
57 struct ndmp_enum_str_table ndmp9_error_table[] = {
58 	{ "NDMP9_NO_ERR",		NDMP9_NO_ERR },
59 	{ "NDMP9_NOT_SUPPORTED_ERR",	NDMP9_NOT_SUPPORTED_ERR },
60 	{ "NDMP9_DEVICE_BUSY_ERR",	NDMP9_DEVICE_BUSY_ERR },
61 	{ "NDMP9_DEVICE_OPENED_ERR",	NDMP9_DEVICE_OPENED_ERR },
62 	{ "NDMP9_NOT_AUTHORIZED_ERR",	NDMP9_NOT_AUTHORIZED_ERR },
63 	{ "NDMP9_PERMISSION_ERR",	NDMP9_PERMISSION_ERR },
64 	{ "NDMP9_DEV_NOT_OPEN_ERR",	NDMP9_DEV_NOT_OPEN_ERR },
65 	{ "NDMP9_IO_ERR",		NDMP9_IO_ERR },
66 	{ "NDMP9_TIMEOUT_ERR",		NDMP9_TIMEOUT_ERR },
67 	{ "NDMP9_ILLEGAL_ARGS_ERR",	NDMP9_ILLEGAL_ARGS_ERR },
68 	{ "NDMP9_NO_TAPE_LOADED_ERR",	NDMP9_NO_TAPE_LOADED_ERR },
69 	{ "NDMP9_WRITE_PROTECT_ERR",	NDMP9_WRITE_PROTECT_ERR },
70 	{ "NDMP9_EOF_ERR",		NDMP9_EOF_ERR },
71 	{ "NDMP9_EOM_ERR",		NDMP9_EOM_ERR },
72 	{ "NDMP9_FILE_NOT_FOUND_ERR",	NDMP9_FILE_NOT_FOUND_ERR },
73 	{ "NDMP9_BAD_FILE_ERR",		NDMP9_BAD_FILE_ERR },
74 	{ "NDMP9_NO_DEVICE_ERR",	NDMP9_NO_DEVICE_ERR },
75 	{ "NDMP9_NO_BUS_ERR",		NDMP9_NO_BUS_ERR },
76 	{ "NDMP9_XDR_DECODE_ERR",	NDMP9_XDR_DECODE_ERR },
77 	{ "NDMP9_ILLEGAL_STATE_ERR",	NDMP9_ILLEGAL_STATE_ERR },
78 	{ "NDMP9_UNDEFINED_ERR",	NDMP9_UNDEFINED_ERR },
79 	{ "NDMP9_XDR_ENCODE_ERR",	NDMP9_XDR_ENCODE_ERR },
80 	{ "NDMP9_NO_MEM_ERR",		NDMP9_NO_MEM_ERR },
81 	{ "NDMP9_CONNECT_ERR",		NDMP9_CONNECT_ERR, },
82 	{ 0 }
83 };
84 
85 
86 extern struct ndmp_enum_str_table ndmp9_auth_type_table[];
87 extern char * ndmp9_auth_type_to_str (ndmp9_auth_type val);
88 extern int    ndmp9_auth_type_from_str (ndmp9_auth_type *valp, char * str);
89 
ndmp9_auth_type_to_str(ndmp9_auth_type val)90 char * ndmp9_auth_type_to_str (ndmp9_auth_type val) {
91 	return ndmp_enum_to_str ((int)val, ndmp9_auth_type_table);
92 }
93 
ndmp9_auth_type_from_str(ndmp9_auth_type * valp,char * str)94 int ndmp9_auth_type_from_str (ndmp9_auth_type *valp, char * str) {
95 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_auth_type_table);
96 }
97 
98 struct ndmp_enum_str_table ndmp9_auth_type_table[] = {
99 	{ "NDMP9_AUTH_NONE",	NDMP9_AUTH_NONE },
100 	{ "NDMP9_AUTH_TEXT",	NDMP9_AUTH_TEXT },
101 	{ "NDMP9_AUTH_MD5",	NDMP9_AUTH_MD5 },
102 	{ 0 }
103 };
104 
105 extern struct ndmp_enum_str_table ndmp9_addr_type_table[];
106 extern char * ndmp9_addr_type_to_str (ndmp9_addr_type val);
107 extern int    ndmp9_addr_type_from_str (ndmp9_addr_type *valp, char * str);
108 
ndmp9_addr_type_to_str(ndmp9_addr_type val)109 char * ndmp9_addr_type_to_str (ndmp9_addr_type val) {
110 	return ndmp_enum_to_str ((int)val, ndmp9_addr_type_table);
111 }
112 
ndmp9_addr_type_from_str(ndmp9_addr_type * valp,char * str)113 int ndmp9_addr_type_from_str (ndmp9_addr_type *valp, char * str) {
114 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_addr_type_table);
115 }
116 
117 struct ndmp_enum_str_table ndmp9_addr_type_table[] = {
118 	{ "NDMP9_ADDR_LOCAL",	NDMP9_ADDR_LOCAL },
119 	{ "NDMP9_ADDR_TCP",	NDMP9_ADDR_TCP },
120 	{ 0 }
121 };
122 
123 extern struct ndmp_enum_str_table ndmp9_tape_open_mode_table[];
124 extern char * ndmp9_tape_open_mode_to_str (ndmp9_tape_open_mode val);
125 extern int    ndmp9_tape_open_mode_from_str (ndmp9_tape_open_mode *valp, char * str);
126 
ndmp9_tape_open_mode_to_str(ndmp9_tape_open_mode val)127 char * ndmp9_tape_open_mode_to_str (ndmp9_tape_open_mode val) {
128 	return ndmp_enum_to_str ((int)val, ndmp9_tape_open_mode_table);
129 }
130 
ndmp9_tape_open_mode_from_str(ndmp9_tape_open_mode * valp,char * str)131 int ndmp9_tape_open_mode_from_str (ndmp9_tape_open_mode *valp, char * str) {
132 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_tape_open_mode_table);
133 }
134 
135 struct ndmp_enum_str_table ndmp9_tape_open_mode_table[] = {
136 	{ "NDMP9_TAPE_READ_MODE",	NDMP9_TAPE_READ_MODE },
137 	{ "NDMP9_TAPE_RDWR_MODE",	NDMP9_TAPE_RDWR_MODE },
138 	{ 0 }
139 };
140 
141 extern struct ndmp_enum_str_table ndmp9_tape_mtio_op_table[];
142 extern char * ndmp9_tape_mtio_op_to_str (ndmp9_tape_mtio_op val);
143 extern int    ndmp9_tape_mtio_op_from_str (ndmp9_tape_mtio_op *valp, char * str);
144 
ndmp9_tape_mtio_op_to_str(ndmp9_tape_mtio_op val)145 char * ndmp9_tape_mtio_op_to_str (ndmp9_tape_mtio_op val) {
146 	return ndmp_enum_to_str ((int)val, ndmp9_tape_mtio_op_table);
147 }
148 
ndmp9_tape_mtio_op_from_str(ndmp9_tape_mtio_op * valp,char * str)149 int ndmp9_tape_mtio_op_from_str (ndmp9_tape_mtio_op *valp, char * str) {
150 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_tape_mtio_op_table);
151 }
152 
153 struct ndmp_enum_str_table ndmp9_tape_mtio_op_table[] = {
154 	{ "NDMP9_MTIO_FSF",	NDMP9_MTIO_FSF },
155 	{ "NDMP9_MTIO_BSF",	NDMP9_MTIO_BSF },
156 	{ "NDMP9_MTIO_FSR",	NDMP9_MTIO_FSR },
157 	{ "NDMP9_MTIO_BSR",	NDMP9_MTIO_BSR },
158 	{ "NDMP9_MTIO_REW",	NDMP9_MTIO_REW },
159 	{ "NDMP9_MTIO_EOF",	NDMP9_MTIO_EOF },
160 	{ "NDMP9_MTIO_OFF",	NDMP9_MTIO_OFF },
161 	{ 0 }
162 };
163 
164 extern struct ndmp_enum_str_table ndmp9_mover_state_table[];
165 extern char * ndmp9_mover_state_to_str (ndmp9_mover_state val);
166 extern int    ndmp9_mover_state_from_str (ndmp9_mover_state *valp, char * str);
167 
ndmp9_mover_state_to_str(ndmp9_mover_state val)168 char * ndmp9_mover_state_to_str (ndmp9_mover_state val) {
169 	return ndmp_enum_to_str ((int)val, ndmp9_mover_state_table);
170 }
171 
ndmp9_mover_state_from_str(ndmp9_mover_state * valp,char * str)172 int ndmp9_mover_state_from_str (ndmp9_mover_state *valp, char * str) {
173 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_mover_state_table);
174 }
175 
176 struct ndmp_enum_str_table ndmp9_mover_state_table[] = {
177 	{ "NDMP9_MOVER_STATE_IDLE",	NDMP9_MOVER_STATE_IDLE },
178 	{ "NDMP9_MOVER_STATE_LISTEN",	NDMP9_MOVER_STATE_LISTEN },
179 	{ "NDMP9_MOVER_STATE_ACTIVE",	NDMP9_MOVER_STATE_ACTIVE },
180 	{ "NDMP9_MOVER_STATE_PAUSED",	NDMP9_MOVER_STATE_PAUSED },
181 	{ "NDMP9_MOVER_STATE_HALTED",	NDMP9_MOVER_STATE_HALTED },
182 	{ 0 }
183 };
184 
185 extern struct ndmp_enum_str_table ndmp9_mover_pause_reason_table[];
186 extern char * ndmp9_mover_pause_reason_to_str (ndmp9_mover_pause_reason val);
187 extern int    ndmp9_mover_pause_reason_from_str (ndmp9_mover_pause_reason *valp, char * str);
188 
ndmp9_mover_pause_reason_to_str(ndmp9_mover_pause_reason val)189 char * ndmp9_mover_pause_reason_to_str (ndmp9_mover_pause_reason val) {
190 	return ndmp_enum_to_str ((int)val, ndmp9_mover_pause_reason_table);
191 }
192 
ndmp9_mover_pause_reason_from_str(ndmp9_mover_pause_reason * valp,char * str)193 int ndmp9_mover_pause_reason_from_str (ndmp9_mover_pause_reason *valp, char * str) {
194 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_mover_pause_reason_table);
195 }
196 
197 struct ndmp_enum_str_table ndmp9_mover_pause_reason_table[] = {
198 	{ "NDMP9_MOVER_PAUSE_NA",	NDMP9_MOVER_PAUSE_NA },
199 	{ "NDMP9_MOVER_PAUSE_EOM",	NDMP9_MOVER_PAUSE_EOM },
200 	{ "NDMP9_MOVER_PAUSE_EOF",	NDMP9_MOVER_PAUSE_EOF },
201 	{ "NDMP9_MOVER_PAUSE_SEEK",	NDMP9_MOVER_PAUSE_SEEK },
202 	{ "NDMP9_MOVER_PAUSE_MEDIA_ERROR", NDMP9_MOVER_PAUSE_MEDIA_ERROR },
203 	{ "NDMP9_MOVER_PAUSE_EOW",      NDMP9_MOVER_PAUSE_EOW },
204 	{ 0 }
205 };
206 
207 extern struct ndmp_enum_str_table ndmp9_mover_halt_reason_table[];
208 extern char * ndmp9_mover_halt_reason_to_str (ndmp9_mover_halt_reason val);
209 extern int    ndmp9_mover_halt_reason_from_str (ndmp9_mover_halt_reason *valp, char * str);
210 
ndmp9_mover_halt_reason_to_str(ndmp9_mover_halt_reason val)211 char * ndmp9_mover_halt_reason_to_str (ndmp9_mover_halt_reason val) {
212 	return ndmp_enum_to_str ((int)val, ndmp9_mover_halt_reason_table);
213 }
214 
ndmp9_mover_halt_reason_from_str(ndmp9_mover_halt_reason * valp,char * str)215 int ndmp9_mover_halt_reason_from_str (ndmp9_mover_halt_reason *valp, char * str) {
216 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_mover_halt_reason_table);
217 }
218 
219 struct ndmp_enum_str_table ndmp9_mover_halt_reason_table[] = {
220 	{ "NDMP9_MOVER_HALT_NA",	NDMP9_MOVER_HALT_NA },
221 	{ "NDMP9_MOVER_HALT_CONNECT_CLOSED", NDMP9_MOVER_HALT_CONNECT_CLOSED },
222 	{ "NDMP9_MOVER_HALT_ABORTED",	NDMP9_MOVER_HALT_ABORTED },
223 	{ "NDMP9_MOVER_HALT_INTERNAL_ERROR", NDMP9_MOVER_HALT_INTERNAL_ERROR },
224 	{ "NDMP9_MOVER_HALT_CONNECT_ERROR", NDMP9_MOVER_HALT_CONNECT_ERROR },
225 	{ 0 }
226 };
227 
228 extern struct ndmp_enum_str_table ndmp9_mover_mode_table[];
229 extern char * ndmp9_mover_mode_to_str (ndmp9_mover_mode val);
230 extern int    ndmp9_mover_mode_from_str (ndmp9_mover_mode *valp, char * str);
231 
ndmp9_mover_mode_to_str(ndmp9_mover_mode val)232 char * ndmp9_mover_mode_to_str (ndmp9_mover_mode val) {
233 	return ndmp_enum_to_str ((int)val, ndmp9_mover_mode_table);
234 }
235 
ndmp9_mover_mode_from_str(ndmp9_mover_mode * valp,char * str)236 int ndmp9_mover_mode_from_str (ndmp9_mover_mode *valp, char * str) {
237 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_mover_mode_table);
238 }
239 
240 struct ndmp_enum_str_table ndmp9_mover_mode_table[] = {
241 	{ "NDMP9_MOVER_MODE_READ",	NDMP9_MOVER_MODE_READ },
242 	{ "NDMP9_MOVER_MODE_WRITE",	NDMP9_MOVER_MODE_WRITE },
243 #if 0
244 	{ "NDMP9_MOVER_MODE_DATA",	NDMP9_MOVER_MODE_DATA },
245 #endif
246 	{ 0 }
247 };
248 
249 extern struct ndmp_enum_str_table ndmp9_data_operation_table[];
250 extern char * ndmp9_data_operation_to_str (ndmp9_data_operation val);
251 extern int    ndmp9_data_operation_from_str (ndmp9_data_operation *valp, char * str);
252 
ndmp9_data_operation_to_str(ndmp9_data_operation val)253 char * ndmp9_data_operation_to_str (ndmp9_data_operation val) {
254 	return ndmp_enum_to_str ((int)val, ndmp9_data_operation_table);
255 }
256 
ndmp9_data_operation_from_str(ndmp9_data_operation * valp,char * str)257 int ndmp9_data_operation_from_str (ndmp9_data_operation *valp, char * str) {
258 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_data_operation_table);
259 }
260 
261 struct ndmp_enum_str_table ndmp9_data_operation_table[] = {
262 	{ "NDMP9_DATA_OP_NOACTION",	NDMP9_DATA_OP_NOACTION },
263 	{ "NDMP9_DATA_OP_BACKUP",	NDMP9_DATA_OP_BACKUP },
264 	{ "NDMP9_DATA_OP_RECOVER",	NDMP9_DATA_OP_RECOVER },
265 	{ "NDMP9_DATA_OP_RECOVER_FILEHIST", NDMP9_DATA_OP_RECOVER_FILEHIST },
266 	{ 0 }
267 };
268 
269 extern struct ndmp_enum_str_table ndmp9_data_state_table[];
270 extern char * ndmp9_data_state_to_str (ndmp9_data_state val);
271 extern int    ndmp9_data_state_from_str (ndmp9_data_state *valp, char * str);
272 
ndmp9_data_state_to_str(ndmp9_data_state val)273 char * ndmp9_data_state_to_str (ndmp9_data_state val) {
274 	return ndmp_enum_to_str ((int)val, ndmp9_data_state_table);
275 }
276 
ndmp9_data_state_from_str(ndmp9_data_state * valp,char * str)277 int ndmp9_data_state_from_str (ndmp9_data_state *valp, char * str) {
278 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_data_state_table);
279 }
280 
281 struct ndmp_enum_str_table ndmp9_data_state_table[] = {
282 	{ "NDMP9_DATA_STATE_IDLE",	NDMP9_DATA_STATE_IDLE },
283 	{ "NDMP9_DATA_STATE_ACTIVE",	NDMP9_DATA_STATE_ACTIVE },
284 	{ "NDMP9_DATA_STATE_HALTED",	NDMP9_DATA_STATE_HALTED },
285 	{ 0 }
286 };
287 
288 extern struct ndmp_enum_str_table ndmp9_data_halt_reason_table[];
289 extern char * ndmp9_data_halt_reason_to_str (ndmp9_data_halt_reason val);
290 extern int    ndmp9_data_halt_reason_from_str (ndmp9_data_halt_reason *valp, char * str);
291 
ndmp9_data_halt_reason_to_str(ndmp9_data_halt_reason val)292 char * ndmp9_data_halt_reason_to_str (ndmp9_data_halt_reason val) {
293 	return ndmp_enum_to_str ((int)val, ndmp9_data_halt_reason_table);
294 }
295 
ndmp9_data_halt_reason_from_str(ndmp9_data_halt_reason * valp,char * str)296 int ndmp9_data_halt_reason_from_str (ndmp9_data_halt_reason *valp, char * str) {
297 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_data_halt_reason_table);
298 }
299 
300 struct ndmp_enum_str_table ndmp9_data_halt_reason_table[] = {
301 	{ "NDMP9_DATA_HALT_NA",	NDMP9_DATA_HALT_NA },
302 	{ "NDMP9_DATA_HALT_SUCCESSFUL",	NDMP9_DATA_HALT_SUCCESSFUL },
303 	{ "NDMP9_DATA_HALT_ABORTED",	NDMP9_DATA_HALT_ABORTED },
304 	{ "NDMP9_DATA_HALT_INTERNAL_ERROR", NDMP9_DATA_HALT_INTERNAL_ERROR },
305 	{ "NDMP9_DATA_HALT_CONNECT_ERROR", NDMP9_DATA_HALT_CONNECT_ERROR },
306 	{ 0 }
307 };
308 
309 
310 extern struct ndmp_enum_str_table ndmp9_file_type_table[];
311 extern char * ndmp9_file_type_to_str (ndmp9_file_type val);
312 extern int    ndmp9_file_type_from_str (ndmp9_file_type *valp, char * str);
313 
ndmp9_file_type_to_str(ndmp9_file_type val)314 char * ndmp9_file_type_to_str (ndmp9_file_type val) {
315 	return ndmp_enum_to_str ((int)val, ndmp9_file_type_table);
316 }
317 
ndmp9_file_type_from_str(ndmp9_file_type * valp,char * str)318 int ndmp9_file_type_from_str (ndmp9_file_type *valp, char * str) {
319 	return ndmp_enum_from_str ((int*)valp, str, ndmp9_file_type_table);
320 }
321 
322 struct ndmp_enum_str_table ndmp9_file_type_table[] = {
323 	{ "NDMP9_FILE_DIR",	NDMP9_FILE_DIR },
324 	{ "NDMP9_FILE_FIFO",	NDMP9_FILE_FIFO },
325 	{ "NDMP9_FILE_CSPEC",	NDMP9_FILE_CSPEC },
326 	{ "NDMP9_FILE_BSPEC",	NDMP9_FILE_BSPEC },
327 	{ "NDMP9_FILE_REG",	NDMP9_FILE_REG },
328 	{ "NDMP9_FILE_SLINK",	NDMP9_FILE_SLINK },
329 	{ "NDMP9_FILE_SOCK",	NDMP9_FILE_SOCK },
330 	{ "NDMP9_FILE_REGISTRY", NDMP9_FILE_REGISTRY },
331 	{ "NDMP9_FILE_OTHER",	NDMP9_FILE_OTHER },
332 	{ 0 }
333 };
334