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 extern struct ndmp_enum_str_table ndmp9_error_table[];
43 extern char* ndmp9_error_to_str(ndmp9_error val);
44 extern int ndmp9_error_from_str(ndmp9_error* valp, char* str);
45 
ndmp9_error_to_str(ndmp9_error val)46 char* ndmp9_error_to_str(ndmp9_error val)
47 {
48   return ndmp_enum_to_str((int)val, ndmp9_error_table);
49 }
50 
ndmp9_error_from_str(ndmp9_error * valp,char * str)51 int ndmp9_error_from_str(ndmp9_error* valp, char* str)
52 {
53   return ndmp_enum_from_str((int*)valp, str, ndmp9_error_table);
54 }
55 
56 /* clang-format off */
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 /* clang-format on */
85 
86 
87 extern struct ndmp_enum_str_table ndmp9_auth_type_table[];
88 extern char* ndmp9_auth_type_to_str(ndmp9_auth_type val);
89 extern int ndmp9_auth_type_from_str(ndmp9_auth_type* valp, char* str);
90 
ndmp9_auth_type_to_str(ndmp9_auth_type val)91 char* ndmp9_auth_type_to_str(ndmp9_auth_type val)
92 {
93   return ndmp_enum_to_str((int)val, ndmp9_auth_type_table);
94 }
95 
ndmp9_auth_type_from_str(ndmp9_auth_type * valp,char * str)96 int ndmp9_auth_type_from_str(ndmp9_auth_type* valp, char* str)
97 {
98   return ndmp_enum_from_str((int*)valp, str, ndmp9_auth_type_table);
99 }
100 
101 /* clang-format off */
102 struct ndmp_enum_str_table ndmp9_auth_type_table[] = {
103         { "NDMP9_AUTH_NONE",    NDMP9_AUTH_NONE },
104         { "NDMP9_AUTH_TEXT",    NDMP9_AUTH_TEXT },
105         { "NDMP9_AUTH_MD5",     NDMP9_AUTH_MD5 },
106         { 0 }
107 };
108 /* clang-format on */
109 
110 extern struct ndmp_enum_str_table ndmp9_addr_type_table[];
111 extern char* ndmp9_addr_type_to_str(ndmp9_addr_type val);
112 extern int ndmp9_addr_type_from_str(ndmp9_addr_type* valp, char* str);
113 
ndmp9_addr_type_to_str(ndmp9_addr_type val)114 char* ndmp9_addr_type_to_str(ndmp9_addr_type val)
115 {
116   return ndmp_enum_to_str((int)val, ndmp9_addr_type_table);
117 }
118 
ndmp9_addr_type_from_str(ndmp9_addr_type * valp,char * str)119 int ndmp9_addr_type_from_str(ndmp9_addr_type* valp, char* str)
120 {
121   return ndmp_enum_from_str((int*)valp, str, ndmp9_addr_type_table);
122 }
123 
124 /* clang-format off */
125 struct ndmp_enum_str_table ndmp9_addr_type_table[] = {
126         { "NDMP9_ADDR_LOCAL",   NDMP9_ADDR_LOCAL },
127         { "NDMP9_ADDR_TCP",     NDMP9_ADDR_TCP },
128         { 0 }
129 };
130 /* clang-format on */
131 
132 extern struct ndmp_enum_str_table ndmp9_tape_open_mode_table[];
133 extern char* ndmp9_tape_open_mode_to_str(ndmp9_tape_open_mode val);
134 extern int ndmp9_tape_open_mode_from_str(ndmp9_tape_open_mode* valp, char* str);
135 
ndmp9_tape_open_mode_to_str(ndmp9_tape_open_mode val)136 char* ndmp9_tape_open_mode_to_str(ndmp9_tape_open_mode val)
137 {
138   return ndmp_enum_to_str((int)val, ndmp9_tape_open_mode_table);
139 }
140 
ndmp9_tape_open_mode_from_str(ndmp9_tape_open_mode * valp,char * str)141 int ndmp9_tape_open_mode_from_str(ndmp9_tape_open_mode* valp, char* str)
142 {
143   return ndmp_enum_from_str((int*)valp, str, ndmp9_tape_open_mode_table);
144 }
145 
146 /* clang-format off */
147 struct ndmp_enum_str_table ndmp9_tape_open_mode_table[] = {
148         { "NDMP9_TAPE_READ_MODE",       NDMP9_TAPE_READ_MODE },
149         { "NDMP9_TAPE_RDWR_MODE",       NDMP9_TAPE_RDWR_MODE },
150         { 0 }
151 };
152 /* clang-format on */
153 
154 extern struct ndmp_enum_str_table ndmp9_tape_mtio_op_table[];
155 extern char* ndmp9_tape_mtio_op_to_str(ndmp9_tape_mtio_op val);
156 extern int ndmp9_tape_mtio_op_from_str(ndmp9_tape_mtio_op* valp, char* str);
157 
ndmp9_tape_mtio_op_to_str(ndmp9_tape_mtio_op val)158 char* ndmp9_tape_mtio_op_to_str(ndmp9_tape_mtio_op val)
159 {
160   return ndmp_enum_to_str((int)val, ndmp9_tape_mtio_op_table);
161 }
162 
ndmp9_tape_mtio_op_from_str(ndmp9_tape_mtio_op * valp,char * str)163 int ndmp9_tape_mtio_op_from_str(ndmp9_tape_mtio_op* valp, char* str)
164 {
165   return ndmp_enum_from_str((int*)valp, str, ndmp9_tape_mtio_op_table);
166 }
167 
168 /* clang-format off */
169 struct ndmp_enum_str_table ndmp9_tape_mtio_op_table[] = {
170         { "NDMP9_MTIO_FSF",     NDMP9_MTIO_FSF },
171         { "NDMP9_MTIO_BSF",     NDMP9_MTIO_BSF },
172         { "NDMP9_MTIO_FSR",     NDMP9_MTIO_FSR },
173         { "NDMP9_MTIO_BSR",     NDMP9_MTIO_BSR },
174         { "NDMP9_MTIO_REW",     NDMP9_MTIO_REW },
175         { "NDMP9_MTIO_EOF",     NDMP9_MTIO_EOF },
176         { "NDMP9_MTIO_OFF",     NDMP9_MTIO_OFF },
177         { 0 }
178 };
179 /* clang-format on */
180 
181 extern struct ndmp_enum_str_table ndmp9_mover_state_table[];
182 extern char* ndmp9_mover_state_to_str(ndmp9_mover_state val);
183 extern int ndmp9_mover_state_from_str(ndmp9_mover_state* valp, char* str);
184 
ndmp9_mover_state_to_str(ndmp9_mover_state val)185 char* ndmp9_mover_state_to_str(ndmp9_mover_state val)
186 {
187   return ndmp_enum_to_str((int)val, ndmp9_mover_state_table);
188 }
189 
ndmp9_mover_state_from_str(ndmp9_mover_state * valp,char * str)190 int ndmp9_mover_state_from_str(ndmp9_mover_state* valp, char* str)
191 {
192   return ndmp_enum_from_str((int*)valp, str, ndmp9_mover_state_table);
193 }
194 
195 /* clang-format off */
196 struct ndmp_enum_str_table ndmp9_mover_state_table[] = {
197         { "NDMP9_MOVER_STATE_IDLE",     NDMP9_MOVER_STATE_IDLE },
198         { "NDMP9_MOVER_STATE_LISTEN",   NDMP9_MOVER_STATE_LISTEN },
199         { "NDMP9_MOVER_STATE_ACTIVE",   NDMP9_MOVER_STATE_ACTIVE },
200         { "NDMP9_MOVER_STATE_PAUSED",   NDMP9_MOVER_STATE_PAUSED },
201         { "NDMP9_MOVER_STATE_HALTED",   NDMP9_MOVER_STATE_HALTED },
202         { 0 }
203 };
204 /* clang-format on */
205 
206 extern struct ndmp_enum_str_table ndmp9_mover_pause_reason_table[];
207 extern char* ndmp9_mover_pause_reason_to_str(ndmp9_mover_pause_reason val);
208 extern int ndmp9_mover_pause_reason_from_str(ndmp9_mover_pause_reason* valp,
209                                              char* str);
210 
ndmp9_mover_pause_reason_to_str(ndmp9_mover_pause_reason val)211 char* ndmp9_mover_pause_reason_to_str(ndmp9_mover_pause_reason val)
212 {
213   return ndmp_enum_to_str((int)val, ndmp9_mover_pause_reason_table);
214 }
215 
ndmp9_mover_pause_reason_from_str(ndmp9_mover_pause_reason * valp,char * str)216 int ndmp9_mover_pause_reason_from_str(ndmp9_mover_pause_reason* valp, char* str)
217 {
218   return ndmp_enum_from_str((int*)valp, str, ndmp9_mover_pause_reason_table);
219 }
220 
221 /* clang-format off */
222 struct ndmp_enum_str_table ndmp9_mover_pause_reason_table[] = {
223         { "NDMP9_MOVER_PAUSE_NA",       NDMP9_MOVER_PAUSE_NA },
224         { "NDMP9_MOVER_PAUSE_EOM",      NDMP9_MOVER_PAUSE_EOM },
225         { "NDMP9_MOVER_PAUSE_EOF",      NDMP9_MOVER_PAUSE_EOF },
226         { "NDMP9_MOVER_PAUSE_SEEK",     NDMP9_MOVER_PAUSE_SEEK },
227         { "NDMP9_MOVER_PAUSE_MEDIA_ERROR", NDMP9_MOVER_PAUSE_MEDIA_ERROR },
228         { "NDMP9_MOVER_PAUSE_EOW",      NDMP9_MOVER_PAUSE_EOW },
229         { 0 }
230 };
231 /* clang-format on */
232 
233 extern struct ndmp_enum_str_table ndmp9_mover_halt_reason_table[];
234 extern char* ndmp9_mover_halt_reason_to_str(ndmp9_mover_halt_reason val);
235 extern int ndmp9_mover_halt_reason_from_str(ndmp9_mover_halt_reason* valp,
236                                             char* str);
237 
ndmp9_mover_halt_reason_to_str(ndmp9_mover_halt_reason val)238 char* ndmp9_mover_halt_reason_to_str(ndmp9_mover_halt_reason val)
239 {
240   return ndmp_enum_to_str((int)val, ndmp9_mover_halt_reason_table);
241 }
242 
ndmp9_mover_halt_reason_from_str(ndmp9_mover_halt_reason * valp,char * str)243 int ndmp9_mover_halt_reason_from_str(ndmp9_mover_halt_reason* valp, char* str)
244 {
245   return ndmp_enum_from_str((int*)valp, str, ndmp9_mover_halt_reason_table);
246 }
247 
248 /* clang-format off */
249 struct ndmp_enum_str_table ndmp9_mover_halt_reason_table[] = {
250         { "NDMP9_MOVER_HALT_NA",        NDMP9_MOVER_HALT_NA },
251         { "NDMP9_MOVER_HALT_CONNECT_CLOSED", NDMP9_MOVER_HALT_CONNECT_CLOSED },
252         { "NDMP9_MOVER_HALT_ABORTED",   NDMP9_MOVER_HALT_ABORTED },
253         { "NDMP9_MOVER_HALT_INTERNAL_ERROR", NDMP9_MOVER_HALT_INTERNAL_ERROR },
254         { "NDMP9_MOVER_HALT_CONNECT_ERROR", NDMP9_MOVER_HALT_CONNECT_ERROR },
255         { 0 }
256 };
257 /* clang-format on */
258 
259 extern struct ndmp_enum_str_table ndmp9_mover_mode_table[];
260 extern char* ndmp9_mover_mode_to_str(ndmp9_mover_mode val);
261 extern int ndmp9_mover_mode_from_str(ndmp9_mover_mode* valp, char* str);
262 
ndmp9_mover_mode_to_str(ndmp9_mover_mode val)263 char* ndmp9_mover_mode_to_str(ndmp9_mover_mode val)
264 {
265   return ndmp_enum_to_str((int)val, ndmp9_mover_mode_table);
266 }
267 
ndmp9_mover_mode_from_str(ndmp9_mover_mode * valp,char * str)268 int ndmp9_mover_mode_from_str(ndmp9_mover_mode* valp, char* str)
269 {
270   return ndmp_enum_from_str((int*)valp, str, ndmp9_mover_mode_table);
271 }
272 
273 /* clang-format off */
274 struct ndmp_enum_str_table ndmp9_mover_mode_table[] = {
275         { "NDMP9_MOVER_MODE_READ",      NDMP9_MOVER_MODE_READ },
276         { "NDMP9_MOVER_MODE_WRITE",     NDMP9_MOVER_MODE_WRITE },
277         { 0 }
278 };
279 /* clang-format on */
280 
281 extern struct ndmp_enum_str_table ndmp9_data_operation_table[];
282 extern char* ndmp9_data_operation_to_str(ndmp9_data_operation val);
283 extern int ndmp9_data_operation_from_str(ndmp9_data_operation* valp, char* str);
284 
ndmp9_data_operation_to_str(ndmp9_data_operation val)285 char* ndmp9_data_operation_to_str(ndmp9_data_operation val)
286 {
287   return ndmp_enum_to_str((int)val, ndmp9_data_operation_table);
288 }
289 
ndmp9_data_operation_from_str(ndmp9_data_operation * valp,char * str)290 int ndmp9_data_operation_from_str(ndmp9_data_operation* valp, char* str)
291 {
292   return ndmp_enum_from_str((int*)valp, str, ndmp9_data_operation_table);
293 }
294 
295 /* clang-format off */
296 struct ndmp_enum_str_table ndmp9_data_operation_table[] = {
297         { "NDMP9_DATA_OP_NOACTION",     NDMP9_DATA_OP_NOACTION },
298         { "NDMP9_DATA_OP_BACKUP",       NDMP9_DATA_OP_BACKUP },
299         { "NDMP9_DATA_OP_RECOVER",      NDMP9_DATA_OP_RECOVER },
300         { "NDMP9_DATA_OP_RECOVER_FILEHIST", NDMP9_DATA_OP_RECOVER_FILEHIST },
301         { 0 }
302 };
303 /* clang-format on */
304 
305 extern struct ndmp_enum_str_table ndmp9_data_state_table[];
306 extern char* ndmp9_data_state_to_str(ndmp9_data_state val);
307 extern int ndmp9_data_state_from_str(ndmp9_data_state* valp, char* str);
308 
ndmp9_data_state_to_str(ndmp9_data_state val)309 char* ndmp9_data_state_to_str(ndmp9_data_state val)
310 {
311   return ndmp_enum_to_str((int)val, ndmp9_data_state_table);
312 }
313 
ndmp9_data_state_from_str(ndmp9_data_state * valp,char * str)314 int ndmp9_data_state_from_str(ndmp9_data_state* valp, char* str)
315 {
316   return ndmp_enum_from_str((int*)valp, str, ndmp9_data_state_table);
317 }
318 
319 /* clang-format off */
320 struct ndmp_enum_str_table ndmp9_data_state_table[] = {
321         { "NDMP9_DATA_STATE_IDLE",      NDMP9_DATA_STATE_IDLE },
322         { "NDMP9_DATA_STATE_ACTIVE",    NDMP9_DATA_STATE_ACTIVE },
323         { "NDMP9_DATA_STATE_HALTED",    NDMP9_DATA_STATE_HALTED },
324         { 0 }
325 };
326 /* clang-format on */
327 
328 extern struct ndmp_enum_str_table ndmp9_data_halt_reason_table[];
329 extern char* ndmp9_data_halt_reason_to_str(ndmp9_data_halt_reason val);
330 extern int ndmp9_data_halt_reason_from_str(ndmp9_data_halt_reason* valp,
331                                            char* str);
332 
ndmp9_data_halt_reason_to_str(ndmp9_data_halt_reason val)333 char* ndmp9_data_halt_reason_to_str(ndmp9_data_halt_reason val)
334 {
335   return ndmp_enum_to_str((int)val, ndmp9_data_halt_reason_table);
336 }
337 
ndmp9_data_halt_reason_from_str(ndmp9_data_halt_reason * valp,char * str)338 int ndmp9_data_halt_reason_from_str(ndmp9_data_halt_reason* valp, char* str)
339 {
340   return ndmp_enum_from_str((int*)valp, str, ndmp9_data_halt_reason_table);
341 }
342 
343 /* clang-format off */
344 struct ndmp_enum_str_table ndmp9_data_halt_reason_table[] = {
345         { "NDMP9_DATA_HALT_NA", NDMP9_DATA_HALT_NA },
346         { "NDMP9_DATA_HALT_SUCCESSFUL", NDMP9_DATA_HALT_SUCCESSFUL },
347         { "NDMP9_DATA_HALT_ABORTED",    NDMP9_DATA_HALT_ABORTED },
348         { "NDMP9_DATA_HALT_INTERNAL_ERROR", NDMP9_DATA_HALT_INTERNAL_ERROR },
349         { "NDMP9_DATA_HALT_CONNECT_ERROR", NDMP9_DATA_HALT_CONNECT_ERROR },
350         { 0 }
351 };
352 /* clang-format on */
353 
354 
355 extern struct ndmp_enum_str_table ndmp9_file_type_table[];
356 extern char* ndmp9_file_type_to_str(ndmp9_file_type val);
357 extern int ndmp9_file_type_from_str(ndmp9_file_type* valp, char* str);
358 
ndmp9_file_type_to_str(ndmp9_file_type val)359 char* ndmp9_file_type_to_str(ndmp9_file_type val)
360 {
361   return ndmp_enum_to_str((int)val, ndmp9_file_type_table);
362 }
363 
ndmp9_file_type_from_str(ndmp9_file_type * valp,char * str)364 int ndmp9_file_type_from_str(ndmp9_file_type* valp, char* str)
365 {
366   return ndmp_enum_from_str((int*)valp, str, ndmp9_file_type_table);
367 }
368 
369 /* clang-format off */
370 struct ndmp_enum_str_table ndmp9_file_type_table[] = {
371         { "NDMP9_FILE_DIR",     NDMP9_FILE_DIR },
372         { "NDMP9_FILE_FIFO",    NDMP9_FILE_FIFO },
373         { "NDMP9_FILE_CSPEC",   NDMP9_FILE_CSPEC },
374         { "NDMP9_FILE_BSPEC",   NDMP9_FILE_BSPEC },
375         { "NDMP9_FILE_REG",     NDMP9_FILE_REG },
376         { "NDMP9_FILE_SLINK",   NDMP9_FILE_SLINK },
377         { "NDMP9_FILE_SOCK",    NDMP9_FILE_SOCK },
378         { "NDMP9_FILE_REGISTRY", NDMP9_FILE_REGISTRY },
379         { "NDMP9_FILE_OTHER",   NDMP9_FILE_OTHER },
380         { 0 }
381 };
382 /* clang-format on */
383