1 /*
2  * Copyright (c) 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 #ifndef NDMOS_OPTION_NO_NDMP4
43 
44 
45 extern struct ndmp_enum_str_table ndmp4_error_table[];
46 extern char* ndmp4_error_to_str(ndmp4_error val);
47 extern int ndmp4_error_from_str(ndmp4_error* valp, char* str);
48 
ndmp4_error_to_str(ndmp4_error val)49 char* ndmp4_error_to_str(ndmp4_error val)
50 {
51   return ndmp_enum_to_str((int)val, ndmp4_error_table);
52 }
53 
ndmp4_error_from_str(ndmp4_error * valp,char * str)54 int ndmp4_error_from_str(ndmp4_error* valp, char* str)
55 {
56   return ndmp_enum_from_str((int*)valp, str, ndmp4_error_table);
57 }
58 
59 /* clang-format off */
60 struct ndmp_enum_str_table ndmp4_error_table[] = {
61         { "NDMP4_NO_ERR",               NDMP4_NO_ERR, },
62         { "NDMP4_NOT_SUPPORTED_ERR",    NDMP4_NOT_SUPPORTED_ERR, },
63         { "NDMP4_DEVICE_BUSY_ERR",      NDMP4_DEVICE_BUSY_ERR, },
64         { "NDMP4_DEVICE_OPENED_ERR",    NDMP4_DEVICE_OPENED_ERR, },
65         { "NDMP4_NOT_AUTHORIZED_ERR",   NDMP4_NOT_AUTHORIZED_ERR, },
66         { "NDMP4_PERMISSION_ERR",       NDMP4_PERMISSION_ERR, },
67         { "NDMP4_DEV_NOT_OPEN_ERR",     NDMP4_DEV_NOT_OPEN_ERR, },
68         { "NDMP4_IO_ERR",               NDMP4_IO_ERR, },
69         { "NDMP4_TIMEOUT_ERR",          NDMP4_TIMEOUT_ERR, },
70         { "NDMP4_ILLEGAL_ARGS_ERR",     NDMP4_ILLEGAL_ARGS_ERR, },
71         { "NDMP4_NO_TAPE_LOADED_ERR",   NDMP4_NO_TAPE_LOADED_ERR, },
72         { "NDMP4_WRITE_PROTECT_ERR",    NDMP4_WRITE_PROTECT_ERR, },
73         { "NDMP4_EOF_ERR",              NDMP4_EOF_ERR, },
74         { "NDMP4_EOM_ERR",              NDMP4_EOM_ERR, },
75         { "NDMP4_FILE_NOT_FOUND_ERR",   NDMP4_FILE_NOT_FOUND_ERR, },
76         { "NDMP4_BAD_FILE_ERR",         NDMP4_BAD_FILE_ERR, },
77         { "NDMP4_NO_DEVICE_ERR",        NDMP4_NO_DEVICE_ERR, },
78         { "NDMP4_NO_BUS_ERR",           NDMP4_NO_BUS_ERR, },
79         { "NDMP4_XDR_DECODE_ERR",       NDMP4_XDR_DECODE_ERR, },
80         { "NDMP4_ILLEGAL_STATE_ERR",    NDMP4_ILLEGAL_STATE_ERR, },
81         { "NDMP4_UNDEFINED_ERR",        NDMP4_UNDEFINED_ERR, },
82         { "NDMP4_XDR_ENCODE_ERR",       NDMP4_XDR_ENCODE_ERR, },
83         { "NDMP4_NO_MEM_ERR",           NDMP4_NO_MEM_ERR, },
84         { "NDMP4_CONNECT_ERR",          NDMP4_CONNECT_ERR, },
85         { 0 }
86 };
87 /* clang-format on */
88 
89 
90 extern struct ndmp_enum_str_table ndmp4_header_message_type_table[];
91 extern char* ndmp4_header_message_type_to_str(ndmp4_header_message_type val);
92 extern int ndmp4_header_message_type_from_str(ndmp4_header_message_type* valp,
93                                               char* str);
94 
ndmp4_header_message_type_to_str(ndmp4_header_message_type val)95 char* ndmp4_header_message_type_to_str(ndmp4_header_message_type val)
96 {
97   return ndmp_enum_to_str((int)val, ndmp4_header_message_type_table);
98 }
99 
ndmp4_header_message_type_from_str(ndmp4_header_message_type * valp,char * str)100 int ndmp4_header_message_type_from_str(ndmp4_header_message_type* valp,
101                                        char* str)
102 {
103   return ndmp_enum_from_str((int*)valp, str, ndmp4_header_message_type_table);
104 }
105 
106 struct ndmp_enum_str_table ndmp4_header_message_type_table[] = {
107     {
108         "NDMP4_MESSAGE_REQUEST",
109         NDMP4_MESSAGE_REQUEST,
110     },
111     {
112         "NDMP4_MESSAGE_REPLY",
113         NDMP4_MESSAGE_REPLY,
114     },
115     {0}};
116 
117 
118 extern struct ndmp_enum_str_table ndmp4_message_table[];
119 extern char* ndmp4_message_to_str(ndmp4_message val);
120 extern int ndmp4_message_from_str(ndmp4_message* valp, char* str);
121 
ndmp4_message_to_str(ndmp4_message val)122 char* ndmp4_message_to_str(ndmp4_message val)
123 {
124   return ndmp_enum_to_str((int)val, ndmp4_message_table);
125 }
126 
ndmp4_message_from_str(ndmp4_message * valp,char * str)127 int ndmp4_message_from_str(ndmp4_message* valp, char* str)
128 {
129   return ndmp_enum_from_str((int*)valp, str, ndmp4_message_table);
130 }
131 
132 /* clang-format off */
133 struct ndmp_enum_str_table ndmp4_message_table[] = {
134         { "NDMP4_CONNECT_OPEN",         NDMP4_CONNECT_OPEN, },
135         { "NDMP4_CONNECT_CLIENT_AUTH",  NDMP4_CONNECT_CLIENT_AUTH, },
136         { "NDMP4_CONNECT_CLOSE",        NDMP4_CONNECT_CLOSE, },
137         { "NDMP4_CONNECT_SERVER_AUTH",  NDMP4_CONNECT_SERVER_AUTH, },
138         { "NDMP4_CONFIG_GET_HOST_INFO", NDMP4_CONFIG_GET_HOST_INFO, },
139         { "NDMP4_CONFIG_GET_CONNECTION_TYPE",
140                                         NDMP4_CONFIG_GET_CONNECTION_TYPE, },
141         { "NDMP4_CONFIG_GET_AUTH_ATTR", NDMP4_CONFIG_GET_AUTH_ATTR, },
142         { "NDMP4_CONFIG_GET_BUTYPE_INFO", NDMP4_CONFIG_GET_BUTYPE_INFO, },
143         { "NDMP4_CONFIG_GET_FS_INFO",   NDMP4_CONFIG_GET_FS_INFO, },
144         { "NDMP4_CONFIG_GET_TAPE_INFO", NDMP4_CONFIG_GET_TAPE_INFO, },
145         { "NDMP4_CONFIG_GET_SCSI_INFO", NDMP4_CONFIG_GET_SCSI_INFO, },
146         { "NDMP4_CONFIG_GET_SERVER_INFO",NDMP4_CONFIG_GET_SERVER_INFO, },
147         { "NDMP4_SCSI_OPEN",            NDMP4_SCSI_OPEN, },
148         { "NDMP4_SCSI_CLOSE",           NDMP4_SCSI_CLOSE, },
149         { "NDMP4_SCSI_GET_STATE",       NDMP4_SCSI_GET_STATE, },
150 /*      { "NDMP4_SCSI_SET_TARGET",      NDMP4_SCSI_SET_TARGET, }, */
151         { "NDMP4_SCSI_RESET_DEVICE",    NDMP4_SCSI_RESET_DEVICE, },
152 /*      { "NDMP4_SCSI_RESET_BUS",       NDMP4_SCSI_RESET_BUS, }, */
153         { "NDMP4_SCSI_EXECUTE_CDB",     NDMP4_SCSI_EXECUTE_CDB, },
154         { "NDMP4_TAPE_OPEN",            NDMP4_TAPE_OPEN, },
155         { "NDMP4_TAPE_CLOSE",           NDMP4_TAPE_CLOSE, },
156         { "NDMP4_TAPE_GET_STATE",       NDMP4_TAPE_GET_STATE, },
157         { "NDMP4_TAPE_MTIO",            NDMP4_TAPE_MTIO, },
158         { "NDMP4_TAPE_WRITE",           NDMP4_TAPE_WRITE, },
159         { "NDMP4_TAPE_READ",            NDMP4_TAPE_READ, },
160         { "NDMP4_TAPE_EXECUTE_CDB",     NDMP4_TAPE_EXECUTE_CDB, },
161         { "NDMP4_DATA_GET_STATE",       NDMP4_DATA_GET_STATE, },
162         { "NDMP4_DATA_START_BACKUP",    NDMP4_DATA_START_BACKUP, },
163         { "NDMP4_DATA_START_RECOVER",   NDMP4_DATA_START_RECOVER, },
164         { "NDMP4_DATA_START_RECOVER_FILEHIST",
165                                         NDMP4_DATA_START_RECOVER_FILEHIST, },
166         { "NDMP4_DATA_ABORT",           NDMP4_DATA_ABORT, },
167         { "NDMP4_DATA_GET_ENV",         NDMP4_DATA_GET_ENV, },
168         { "NDMP4_DATA_STOP",            NDMP4_DATA_STOP, },
169         { "NDMP4_DATA_LISTEN",          NDMP4_DATA_LISTEN, },
170         { "NDMP4_DATA_CONNECT",         NDMP4_DATA_CONNECT, },
171         { "NDMP4_NOTIFY_DATA_HALTED",   NDMP4_NOTIFY_DATA_HALTED, },
172         { "NDMP4_NOTIFY_CONNECTION_STATUS",
173                                         NDMP4_NOTIFY_CONNECTION_STATUS, },
174         { "NDMP4_NOTIFY_MOVER_HALTED",  NDMP4_NOTIFY_MOVER_HALTED, },
175         { "NDMP4_NOTIFY_MOVER_PAUSED",  NDMP4_NOTIFY_MOVER_PAUSED, },
176         { "NDMP4_NOTIFY_DATA_READ",     NDMP4_NOTIFY_DATA_READ, },
177         { "NDMP4_LOG_FILE",             NDMP4_LOG_FILE, },
178         { "NDMP4_LOG_MESSAGE",          NDMP4_LOG_MESSAGE, },
179         { "NDMP4_FH_ADD_FILE",          NDMP4_FH_ADD_FILE, },
180         { "NDMP4_FH_ADD_DIR",           NDMP4_FH_ADD_DIR, },
181         { "NDMP4_FH_ADD_NODE",          NDMP4_FH_ADD_NODE, },
182         { "NDMP4_MOVER_GET_STATE",      NDMP4_MOVER_GET_STATE, },
183         { "NDMP4_MOVER_LISTEN",         NDMP4_MOVER_LISTEN, },
184         { "NDMP4_MOVER_CONTINUE",       NDMP4_MOVER_CONTINUE, },
185         { "NDMP4_MOVER_ABORT",          NDMP4_MOVER_ABORT, },
186         { "NDMP4_MOVER_STOP",           NDMP4_MOVER_STOP, },
187         { "NDMP4_MOVER_SET_WINDOW",     NDMP4_MOVER_SET_WINDOW, },
188         { "NDMP4_MOVER_READ",           NDMP4_MOVER_READ, },
189         { "NDMP4_MOVER_CLOSE",          NDMP4_MOVER_CLOSE, },
190         { "NDMP4_MOVER_SET_RECORD_SIZE", NDMP4_MOVER_SET_RECORD_SIZE, },
191         { "NDMP4_MOVER_CONNECT",        NDMP4_MOVER_CONNECT, },
192 /*      { "NDMP4_VENDORS_BASE",         NDMP4_VENDORS_BASE, }, */
193 /*      { "NDMP4_RESERVED_BASE",        NDMP4_RESERVED_BASE, }, */
194         { 0 }
195 };
196 /* clang-format on */
197 
198 
199 extern struct ndmp_enum_str_table ndmp4_auth_type_table[];
200 extern char* ndmp4_auth_type_to_str(ndmp4_auth_type val);
201 extern int ndmp4_auth_type_from_str(ndmp4_auth_type* valp, char* str);
202 
ndmp4_auth_type_to_str(ndmp4_auth_type val)203 char* ndmp4_auth_type_to_str(ndmp4_auth_type val)
204 {
205   return ndmp_enum_to_str((int)val, ndmp4_auth_type_table);
206 }
207 
ndmp4_auth_type_from_str(ndmp4_auth_type * valp,char * str)208 int ndmp4_auth_type_from_str(ndmp4_auth_type* valp, char* str)
209 {
210   return ndmp_enum_from_str((int*)valp, str, ndmp4_auth_type_table);
211 }
212 
213 /* clang-format off */
214 struct ndmp_enum_str_table ndmp4_auth_type_table[] = {
215         { "NDMP4_AUTH_NONE",            NDMP4_AUTH_NONE, },
216         { "NDMP4_AUTH_TEXT",            NDMP4_AUTH_TEXT, },
217         { "NDMP4_AUTH_MD5",             NDMP4_AUTH_MD5, },
218         { 0 }
219 };
220 /* clang-format on */
221 
222 
223 extern struct ndmp_enum_str_table ndmp4_addr_type_table[];
224 extern char* ndmp4_addr_type_to_str(ndmp4_addr_type val);
225 extern int ndmp4_addr_type_from_str(ndmp4_addr_type* valp, char* str);
226 
ndmp4_addr_type_to_str(ndmp4_addr_type val)227 char* ndmp4_addr_type_to_str(ndmp4_addr_type val)
228 {
229   return ndmp_enum_to_str((int)val, ndmp4_addr_type_table);
230 }
231 
ndmp4_addr_type_from_str(ndmp4_addr_type * valp,char * str)232 int ndmp4_addr_type_from_str(ndmp4_addr_type* valp, char* str)
233 {
234   return ndmp_enum_from_str((int*)valp, str, ndmp4_addr_type_table);
235 }
236 
237 /* clang-format off */
238 struct ndmp_enum_str_table ndmp4_addr_type_table[] = {
239         { "NDMP4_ADDR_LOCAL",           NDMP4_ADDR_LOCAL, },
240         { "NDMP4_ADDR_TCP",             NDMP4_ADDR_TCP, },
241         { "NDMP4_ADDR_RESERVED",        NDMP4_ADDR_RESERVED, },
242         { "NDMP4_ADDR_IPC",             NDMP4_ADDR_IPC, },
243         { 0 }
244 };
245 /* clang-format on */
246 
247 
248 extern struct ndmp_enum_str_table ndmp4_tape_open_mode_table[];
249 extern char* ndmp4_tape_open_mode_to_str(ndmp4_tape_open_mode val);
250 extern int ndmp4_tape_open_mode_from_str(ndmp4_tape_open_mode* valp, char* str);
251 
ndmp4_tape_open_mode_to_str(ndmp4_tape_open_mode val)252 char* ndmp4_tape_open_mode_to_str(ndmp4_tape_open_mode val)
253 {
254   return ndmp_enum_to_str((int)val, ndmp4_tape_open_mode_table);
255 }
256 
ndmp4_tape_open_mode_from_str(ndmp4_tape_open_mode * valp,char * str)257 int ndmp4_tape_open_mode_from_str(ndmp4_tape_open_mode* valp, char* str)
258 {
259   return ndmp_enum_from_str((int*)valp, str, ndmp4_tape_open_mode_table);
260 }
261 
262 /* clang-format off */
263 struct ndmp_enum_str_table ndmp4_tape_open_mode_table[] = {
264         { "NDMP4_TAPE_READ_MODE",       NDMP4_TAPE_READ_MODE, },
265         { "NDMP4_TAPE_RDWR_MODE",       NDMP4_TAPE_RDWR_MODE, },
266         { "NDMP4_TAPE_RAW_MODE",        NDMP4_TAPE_RAW_MODE, },
267         { 0 }
268 };
269 /* clang-format on */
270 
271 
272 extern struct ndmp_enum_str_table ndmp4_tape_mtio_op_table[];
273 extern char* ndmp4_tape_mtio_op_to_str(ndmp4_tape_mtio_op val);
274 extern int ndmp4_tape_mtio_op_from_str(ndmp4_tape_mtio_op* valp, char* str);
275 
ndmp4_tape_mtio_op_to_str(ndmp4_tape_mtio_op val)276 char* ndmp4_tape_mtio_op_to_str(ndmp4_tape_mtio_op val)
277 {
278   return ndmp_enum_to_str((int)val, ndmp4_tape_mtio_op_table);
279 }
280 
ndmp4_tape_mtio_op_from_str(ndmp4_tape_mtio_op * valp,char * str)281 int ndmp4_tape_mtio_op_from_str(ndmp4_tape_mtio_op* valp, char* str)
282 {
283   return ndmp_enum_from_str((int*)valp, str, ndmp4_tape_mtio_op_table);
284 }
285 
286 /* clang-format off */
287 struct ndmp_enum_str_table ndmp4_tape_mtio_op_table[] = {
288         { "NDMP4_MTIO_FSF",             NDMP4_MTIO_FSF, },
289         { "NDMP4_MTIO_BSF",             NDMP4_MTIO_BSF, },
290         { "NDMP4_MTIO_FSR",             NDMP4_MTIO_FSR, },
291         { "NDMP4_MTIO_BSR",             NDMP4_MTIO_BSR, },
292         { "NDMP4_MTIO_REW",             NDMP4_MTIO_REW, },
293         { "NDMP4_MTIO_EOF",             NDMP4_MTIO_EOF, },
294         { "NDMP4_MTIO_OFF",             NDMP4_MTIO_OFF, },
295         { 0 }
296 };
297 /* clang-format on */
298 
299 
300 extern struct ndmp_enum_str_table ndmp4_mover_state_table[];
301 extern char* ndmp4_mover_state_to_str(ndmp4_mover_state val);
302 extern int ndmp4_mover_state_from_str(ndmp4_mover_state* valp, char* str);
303 
ndmp4_mover_state_to_str(ndmp4_mover_state val)304 char* ndmp4_mover_state_to_str(ndmp4_mover_state val)
305 {
306   return ndmp_enum_to_str((int)val, ndmp4_mover_state_table);
307 }
308 
ndmp4_mover_state_from_str(ndmp4_mover_state * valp,char * str)309 int ndmp4_mover_state_from_str(ndmp4_mover_state* valp, char* str)
310 {
311   return ndmp_enum_from_str((int*)valp, str, ndmp4_mover_state_table);
312 }
313 
314 /* clang-format off */
315 struct ndmp_enum_str_table ndmp4_mover_state_table[] = {
316         { "NDMP4_MOVER_STATE_IDLE",     NDMP4_MOVER_STATE_IDLE, },
317         { "NDMP4_MOVER_STATE_LISTEN",   NDMP4_MOVER_STATE_LISTEN, },
318         { "NDMP4_MOVER_STATE_ACTIVE",   NDMP4_MOVER_STATE_ACTIVE, },
319         { "NDMP4_MOVER_STATE_PAUSED",   NDMP4_MOVER_STATE_PAUSED, },
320         { "NDMP4_MOVER_STATE_HALTED",   NDMP4_MOVER_STATE_HALTED, },
321         { 0 }
322 };
323 /* clang-format on */
324 
325 
326 extern struct ndmp_enum_str_table ndmp4_mover_pause_reason_table[];
327 extern char* ndmp4_mover_pause_reason_to_str(ndmp4_mover_pause_reason val);
328 extern int ndmp4_mover_pause_reason_from_str(ndmp4_mover_pause_reason* valp,
329                                              char* str);
330 
ndmp4_mover_pause_reason_to_str(ndmp4_mover_pause_reason val)331 char* ndmp4_mover_pause_reason_to_str(ndmp4_mover_pause_reason val)
332 {
333   return ndmp_enum_to_str((int)val, ndmp4_mover_pause_reason_table);
334 }
335 
ndmp4_mover_pause_reason_from_str(ndmp4_mover_pause_reason * valp,char * str)336 int ndmp4_mover_pause_reason_from_str(ndmp4_mover_pause_reason* valp, char* str)
337 {
338   return ndmp_enum_from_str((int*)valp, str, ndmp4_mover_pause_reason_table);
339 }
340 
341 /* clang-format off */
342 struct ndmp_enum_str_table ndmp4_mover_pause_reason_table[] = {
343         { "NDMP4_MOVER_PAUSE_NA",       NDMP4_MOVER_PAUSE_NA, },
344         { "NDMP4_MOVER_PAUSE_EOM",      NDMP4_MOVER_PAUSE_EOM, },
345         { "NDMP4_MOVER_PAUSE_EOF",      NDMP4_MOVER_PAUSE_EOF, },
346         { "NDMP4_MOVER_PAUSE_SEEK",     NDMP4_MOVER_PAUSE_SEEK, },
347         { "NDMP4_MOVER_PAUSE_EOW",      NDMP4_MOVER_PAUSE_EOW, },
348         { 0 }
349 };
350 /* clang-format on */
351 
352 
353 extern struct ndmp_enum_str_table ndmp4_mover_halt_reason_table[];
354 extern char* ndmp4_mover_halt_reason_to_str(ndmp4_mover_halt_reason val);
355 extern int ndmp4_mover_halt_reason_from_str(ndmp4_mover_halt_reason* valp,
356                                             char* str);
357 
ndmp4_mover_halt_reason_to_str(ndmp4_mover_halt_reason val)358 char* ndmp4_mover_halt_reason_to_str(ndmp4_mover_halt_reason val)
359 {
360   return ndmp_enum_to_str((int)val, ndmp4_mover_halt_reason_table);
361 }
362 
ndmp4_mover_halt_reason_from_str(ndmp4_mover_halt_reason * valp,char * str)363 int ndmp4_mover_halt_reason_from_str(ndmp4_mover_halt_reason* valp, char* str)
364 {
365   return ndmp_enum_from_str((int*)valp, str, ndmp4_mover_halt_reason_table);
366 }
367 
368 /* clang-format off */
369 struct ndmp_enum_str_table ndmp4_mover_halt_reason_table[] = {
370         { "NDMP4_MOVER_HALT_NA",        NDMP4_MOVER_HALT_NA, },
371         { "NDMP4_MOVER_HALT_CONNECT_CLOSED",
372                                         NDMP4_MOVER_HALT_CONNECT_CLOSED, },
373         { "NDMP4_MOVER_HALT_ABORTED",   NDMP4_MOVER_HALT_ABORTED, },
374         { "NDMP4_MOVER_HALT_INTERNAL_ERROR",
375                                         NDMP4_MOVER_HALT_INTERNAL_ERROR, },
376         { "NDMP4_MOVER_HALT_CONNECT_ERROR",
377                                         NDMP4_MOVER_HALT_CONNECT_ERROR, },
378         { "NDMP4_MOVER_HALT_MEDIA_ERROR",
379                                         NDMP4_MOVER_HALT_MEDIA_ERROR, },
380         { 0 }
381 };
382 /* clang-format on */
383 
384 
385 extern struct ndmp_enum_str_table ndmp4_mover_mode_table[];
386 extern char* ndmp4_mover_mode_to_str(ndmp4_mover_mode val);
387 extern int ndmp4_mover_mode_from_str(ndmp4_mover_mode* valp, char* str);
388 
ndmp4_mover_mode_to_str(ndmp4_mover_mode val)389 char* ndmp4_mover_mode_to_str(ndmp4_mover_mode val)
390 {
391   return ndmp_enum_to_str((int)val, ndmp4_mover_mode_table);
392 }
393 
ndmp4_mover_mode_from_str(ndmp4_mover_mode * valp,char * str)394 int ndmp4_mover_mode_from_str(ndmp4_mover_mode* valp, char* str)
395 {
396   return ndmp_enum_from_str((int*)valp, str, ndmp4_mover_mode_table);
397 }
398 
399 /* clang-format off */
400 struct ndmp_enum_str_table ndmp4_mover_mode_table[] = {
401         { "NDMP4_MOVER_MODE_READ",      NDMP4_MOVER_MODE_READ, },
402         { "NDMP4_MOVER_MODE_WRITE",     NDMP4_MOVER_MODE_WRITE, },
403         { 0 }
404 };
405 /* clang-format on */
406 
407 
408 extern struct ndmp_enum_str_table ndmp4_data_operation_table[];
409 extern char* ndmp4_data_operation_to_str(ndmp4_data_operation val);
410 extern int ndmp4_data_operation_from_str(ndmp4_data_operation* valp, char* str);
411 
ndmp4_data_operation_to_str(ndmp4_data_operation val)412 char* ndmp4_data_operation_to_str(ndmp4_data_operation val)
413 {
414   return ndmp_enum_to_str((int)val, ndmp4_data_operation_table);
415 }
416 
ndmp4_data_operation_from_str(ndmp4_data_operation * valp,char * str)417 int ndmp4_data_operation_from_str(ndmp4_data_operation* valp, char* str)
418 {
419   return ndmp_enum_from_str((int*)valp, str, ndmp4_data_operation_table);
420 }
421 
422 /* clang-format off */
423 struct ndmp_enum_str_table ndmp4_data_operation_table[] = {
424         { "NDMP4_DATA_OP_NOACTION",     NDMP4_DATA_OP_NOACTION, },
425         { "NDMP4_DATA_OP_BACKUP",       NDMP4_DATA_OP_BACKUP, },
426         { "NDMP4_DATA_OP_RECOVER",      NDMP4_DATA_OP_RECOVER, },
427         { "NDMP4_DATA_OP_RECOVER_FILEHIST",
428                                         NDMP4_DATA_OP_RECOVER_FILEHIST, },
429         { 0 }
430 };
431 /* clang-format on */
432 
433 
434 extern struct ndmp_enum_str_table ndmp4_data_state_table[];
435 extern char* ndmp4_data_state_to_str(ndmp4_data_state val);
436 extern int ndmp4_data_state_from_str(ndmp4_data_state* valp, char* str);
437 
ndmp4_data_state_to_str(ndmp4_data_state val)438 char* ndmp4_data_state_to_str(ndmp4_data_state val)
439 {
440   return ndmp_enum_to_str((int)val, ndmp4_data_state_table);
441 }
442 
ndmp4_data_state_from_str(ndmp4_data_state * valp,char * str)443 int ndmp4_data_state_from_str(ndmp4_data_state* valp, char* str)
444 {
445   return ndmp_enum_from_str((int*)valp, str, ndmp4_data_state_table);
446 }
447 
448 /* clang-format off */
449 struct ndmp_enum_str_table ndmp4_data_state_table[] = {
450         { "NDMP4_DATA_STATE_IDLE",      NDMP4_DATA_STATE_IDLE, },
451         { "NDMP4_DATA_STATE_ACTIVE",    NDMP4_DATA_STATE_ACTIVE, },
452         { "NDMP4_DATA_STATE_HALTED",    NDMP4_DATA_STATE_HALTED, },
453         { "NDMP4_DATA_STATE_LISTEN",    NDMP4_DATA_STATE_LISTEN, },
454         { "NDMP4_DATA_STATE_CONNECTED", NDMP4_DATA_STATE_CONNECTED, },
455         { 0 }
456 };
457 /* clang-format on */
458 
459 
460 extern struct ndmp_enum_str_table ndmp4_data_halt_reason_table[];
461 extern char* ndmp4_data_halt_reason_to_str(ndmp4_data_halt_reason val);
462 extern int ndmp4_data_halt_reason_from_str(ndmp4_data_halt_reason* valp,
463                                            char* str);
464 
ndmp4_data_halt_reason_to_str(ndmp4_data_halt_reason val)465 char* ndmp4_data_halt_reason_to_str(ndmp4_data_halt_reason val)
466 {
467   return ndmp_enum_to_str((int)val, ndmp4_data_halt_reason_table);
468 }
469 
ndmp4_data_halt_reason_from_str(ndmp4_data_halt_reason * valp,char * str)470 int ndmp4_data_halt_reason_from_str(ndmp4_data_halt_reason* valp, char* str)
471 {
472   return ndmp_enum_from_str((int*)valp, str, ndmp4_data_halt_reason_table);
473 }
474 
475 /* clang-format off */
476 struct ndmp_enum_str_table ndmp4_data_halt_reason_table[] = {
477         { "NDMP4_DATA_HALT_NA",         NDMP4_DATA_HALT_NA, },
478         { "NDMP4_DATA_HALT_SUCCESSFUL", NDMP4_DATA_HALT_SUCCESSFUL, },
479         { "NDMP4_DATA_HALT_ABORTED",    NDMP4_DATA_HALT_ABORTED, },
480         { "NDMP4_DATA_HALT_INTERNAL_ERROR", NDMP4_DATA_HALT_INTERNAL_ERROR, },
481         { "NDMP4_DATA_HALT_CONNECT_ERROR", NDMP4_DATA_HALT_CONNECT_ERROR, },
482         { 0 }
483 };
484 /* clang-format on */
485 
486 
487 extern struct ndmp_enum_str_table ndmp4_connection_status_reason_table[];
488 extern char* ndmp4_connection_status_reason_to_str(
489     ndmp4_connection_status_reason val);
490 extern int ndmp4_connection_status_reason_from_str(
491     ndmp4_connection_status_reason* valp,
492     char* str);
493 
ndmp4_connection_status_reason_to_str(ndmp4_connection_status_reason val)494 char* ndmp4_connection_status_reason_to_str(ndmp4_connection_status_reason val)
495 {
496   return ndmp_enum_to_str((int)val, ndmp4_connection_status_reason_table);
497 }
498 
ndmp4_connection_status_reason_from_str(ndmp4_connection_status_reason * valp,char * str)499 int ndmp4_connection_status_reason_from_str(
500     ndmp4_connection_status_reason* valp,
501     char* str)
502 {
503   return ndmp_enum_from_str((int*)valp, str,
504                             ndmp4_connection_status_reason_table);
505 }
506 
507 /* clang-format off */
508 struct ndmp_enum_str_table ndmp4_connection_status_reason_table[] = {
509         { "NDMP4_CONNECTED",            NDMP4_CONNECTED, },
510         { "NDMP4_SHUTDOWN",             NDMP4_SHUTDOWN, },
511         { "NDMP4_REFUSED",              NDMP4_REFUSED, },
512         { 0 }
513 };
514 /* clang-format on */
515 
516 
517 extern struct ndmp_enum_str_table ndmp4_log_type_table[];
518 extern char* ndmp4_log_type_to_str(ndmp4_log_type val);
519 extern int ndmp4_log_type_from_str(ndmp4_log_type* valp, char* str);
520 
ndmp4_log_type_to_str(ndmp4_log_type val)521 char* ndmp4_log_type_to_str(ndmp4_log_type val)
522 {
523   return ndmp_enum_to_str((int)val, ndmp4_log_type_table);
524 }
525 
ndmp4_log_type_from_str(ndmp4_log_type * valp,char * str)526 int ndmp4_log_type_from_str(ndmp4_log_type* valp, char* str)
527 {
528   return ndmp_enum_from_str((int*)valp, str, ndmp4_log_type_table);
529 }
530 
531 /* clang-format off */
532 struct ndmp_enum_str_table ndmp4_log_type_table[] = {
533         { "NDMP4_LOG_NORMAL",           NDMP4_LOG_NORMAL, },
534         { "NDMP4_LOG_DEBUG",            NDMP4_LOG_DEBUG, },
535         { "NDMP4_LOG_ERROR",            NDMP4_LOG_ERROR, },
536         { "NDMP4_LOG_WARNING",          NDMP4_LOG_WARNING, },
537         { 0 }
538 };
539 /* clang-format on */
540 
541 
542 extern struct ndmp_enum_str_table ndmp4_fs_type_table[];
543 extern char* ndmp4_fs_type_to_str(ndmp4_fs_type val);
544 extern int ndmp4_fs_type_from_str(ndmp4_fs_type* valp, char* str);
545 
ndmp4_fs_type_to_str(ndmp4_fs_type val)546 char* ndmp4_fs_type_to_str(ndmp4_fs_type val)
547 {
548   return ndmp_enum_to_str((int)val, ndmp4_fs_type_table);
549 }
550 
ndmp4_fs_type_from_str(ndmp4_fs_type * valp,char * str)551 int ndmp4_fs_type_from_str(ndmp4_fs_type* valp, char* str)
552 {
553   return ndmp_enum_from_str((int*)valp, str, ndmp4_fs_type_table);
554 }
555 
556 /* clang-format off */
557 struct ndmp_enum_str_table ndmp4_fs_type_table[] = {
558         { "NDMP4_FS_UNIX",              NDMP4_FS_UNIX, },
559         { "NDMP4_FS_NT",                NDMP4_FS_NT, },
560         { "NDMP4_FS_OTHER",             NDMP4_FS_OTHER, },
561         { 0 }
562 };
563 /* clang-format on */
564 
565 
566 extern struct ndmp_enum_str_table ndmp4_file_type_table[];
567 extern char* ndmp4_file_type_to_str(ndmp4_file_type val);
568 extern int ndmp4_file_type_from_str(ndmp4_file_type* valp, char* str);
569 
ndmp4_file_type_to_str(ndmp4_file_type val)570 char* ndmp4_file_type_to_str(ndmp4_file_type val)
571 {
572   return ndmp_enum_to_str((int)val, ndmp4_file_type_table);
573 }
574 
ndmp4_file_type_from_str(ndmp4_file_type * valp,char * str)575 int ndmp4_file_type_from_str(ndmp4_file_type* valp, char* str)
576 {
577   return ndmp_enum_from_str((int*)valp, str, ndmp4_file_type_table);
578 }
579 
580 /* clang-format off */
581 struct ndmp_enum_str_table ndmp4_file_type_table[] = {
582         { "NDMP4_FILE_DIR",             NDMP4_FILE_DIR, },
583         { "NDMP4_FILE_FIFO",            NDMP4_FILE_FIFO, },
584         { "NDMP4_FILE_CSPEC",           NDMP4_FILE_CSPEC, },
585         { "NDMP4_FILE_BSPEC",           NDMP4_FILE_BSPEC, },
586         { "NDMP4_FILE_REG",             NDMP4_FILE_REG, },
587         { "NDMP4_FILE_SLINK",           NDMP4_FILE_SLINK, },
588         { "NDMP4_FILE_SOCK",            NDMP4_FILE_SOCK, },
589         { "NDMP4_FILE_REGISTRY",        NDMP4_FILE_REGISTRY, },
590         { "NDMP4_FILE_OTHER",           NDMP4_FILE_OTHER, },
591         { 0 }
592 };
593 /* clang-format on */
594 
595 
596 extern struct ndmp_enum_str_table ndmp4_recovery_status_table[];
597 extern char* ndmp4_recovery_status_to_str(ndmp4_recovery_status val);
598 extern int ndmp4_recovery_status_from_str(ndmp4_recovery_status* valp,
599                                           char* str);
600 
ndmp4_recovery_status_to_str(ndmp4_recovery_status val)601 char* ndmp4_recovery_status_to_str(ndmp4_recovery_status val)
602 {
603   return ndmp_enum_to_str((int)val, ndmp4_recovery_status_table);
604 }
605 
ndmp4_recovery_status_from_str(ndmp4_recovery_status * valp,char * str)606 int ndmp4_recovery_status_from_str(ndmp4_recovery_status* valp, char* str)
607 {
608   return ndmp_enum_from_str((int*)valp, str, ndmp4_recovery_status_table);
609 }
610 
611 /* clang-format off */
612 struct ndmp_enum_str_table ndmp4_recovery_status_table[] = {
613         { "NDMP4_RECOVERY_SUCCESSFUL",
614                         NDMP4_RECOVERY_SUCCESSFUL, },
615         { "NDMP4_RECOVERY_FAILED_PERMISSION",
616                         NDMP4_RECOVERY_FAILED_PERMISSION, },
617         { "NDMP4_RECOVERY_FAILED_NOT_FOUND",
618                         NDMP4_RECOVERY_FAILED_NOT_FOUND, },
619         { "NDMP4_RECOVERY_FAILED_NO_DIRECTORY",
620                         NDMP4_RECOVERY_FAILED_NO_DIRECTORY, },
621         { "NDMP4_RECOVERY_FAILED_OUT_OF_MEMORY",
622                         NDMP4_RECOVERY_FAILED_OUT_OF_MEMORY, },
623         { "NDMP4_RECOVERY_FAILED_IO_ERROR",
624                         NDMP4_RECOVERY_FAILED_IO_ERROR, },
625         { "NDMP4_RECOVERY_FAILED_UNDEFINED_ERROR",
626                         NDMP4_RECOVERY_FAILED_UNDEFINED_ERROR, },
627         { 0 }
628 };
629 /* clang-format on */
630 
631 #endif /* !NDMOS_OPTION_NO_NDMP4 */
632