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_NDMP3
43 
44 
45 extern struct ndmp_enum_str_table ndmp3_error_table[];
46 extern char* ndmp3_error_to_str(ndmp3_error val);
47 extern int ndmp3_error_from_str(ndmp3_error* valp, char* str);
48 
ndmp3_error_to_str(ndmp3_error val)49 char* ndmp3_error_to_str(ndmp3_error val)
50 {
51   return ndmp_enum_to_str((int)val, ndmp3_error_table);
52 }
53 
ndmp3_error_from_str(ndmp3_error * valp,char * str)54 int ndmp3_error_from_str(ndmp3_error* valp, char* str)
55 {
56   return ndmp_enum_from_str((int*)valp, str, ndmp3_error_table);
57 }
58 
59 /* clang-format off */
60 struct ndmp_enum_str_table ndmp3_error_table[] = {
61         { "NDMP3_NO_ERR",               NDMP3_NO_ERR, },
62         { "NDMP3_NOT_SUPPORTED_ERR",    NDMP3_NOT_SUPPORTED_ERR, },
63         { "NDMP3_DEVICE_BUSY_ERR",      NDMP3_DEVICE_BUSY_ERR, },
64         { "NDMP3_DEVICE_OPENED_ERR",    NDMP3_DEVICE_OPENED_ERR, },
65         { "NDMP3_NOT_AUTHORIZED_ERR",   NDMP3_NOT_AUTHORIZED_ERR, },
66         { "NDMP3_PERMISSION_ERR",       NDMP3_PERMISSION_ERR, },
67         { "NDMP3_DEV_NOT_OPEN_ERR",     NDMP3_DEV_NOT_OPEN_ERR, },
68         { "NDMP3_IO_ERR",               NDMP3_IO_ERR, },
69         { "NDMP3_TIMEOUT_ERR",          NDMP3_TIMEOUT_ERR, },
70         { "NDMP3_ILLEGAL_ARGS_ERR",     NDMP3_ILLEGAL_ARGS_ERR, },
71         { "NDMP3_NO_TAPE_LOADED_ERR",   NDMP3_NO_TAPE_LOADED_ERR, },
72         { "NDMP3_WRITE_PROTECT_ERR",    NDMP3_WRITE_PROTECT_ERR, },
73         { "NDMP3_EOF_ERR",              NDMP3_EOF_ERR, },
74         { "NDMP3_EOM_ERR",              NDMP3_EOM_ERR, },
75         { "NDMP3_FILE_NOT_FOUND_ERR",   NDMP3_FILE_NOT_FOUND_ERR, },
76         { "NDMP3_BAD_FILE_ERR",         NDMP3_BAD_FILE_ERR, },
77         { "NDMP3_NO_DEVICE_ERR",        NDMP3_NO_DEVICE_ERR, },
78         { "NDMP3_NO_BUS_ERR",           NDMP3_NO_BUS_ERR, },
79         { "NDMP3_XDR_DECODE_ERR",       NDMP3_XDR_DECODE_ERR, },
80         { "NDMP3_ILLEGAL_STATE_ERR",    NDMP3_ILLEGAL_STATE_ERR, },
81         { "NDMP3_UNDEFINED_ERR",        NDMP3_UNDEFINED_ERR, },
82         { "NDMP3_XDR_ENCODE_ERR",       NDMP3_XDR_ENCODE_ERR, },
83         { "NDMP3_NO_MEM_ERR",           NDMP3_NO_MEM_ERR, },
84         { "NDMP3_CONNECT_ERR",          NDMP3_CONNECT_ERR, },
85         { 0 }
86 };
87 /* clang-format on */
88 
89 
90 extern struct ndmp_enum_str_table ndmp3_header_message_type_table[];
91 extern char* ndmp3_header_message_type_to_str(ndmp3_header_message_type val);
92 extern int ndmp3_header_message_type_from_str(ndmp3_header_message_type* valp,
93                                               char* str);
94 
ndmp3_header_message_type_to_str(ndmp3_header_message_type val)95 char* ndmp3_header_message_type_to_str(ndmp3_header_message_type val)
96 {
97   return ndmp_enum_to_str((int)val, ndmp3_header_message_type_table);
98 }
99 
ndmp3_header_message_type_from_str(ndmp3_header_message_type * valp,char * str)100 int ndmp3_header_message_type_from_str(ndmp3_header_message_type* valp,
101                                        char* str)
102 {
103   return ndmp_enum_from_str((int*)valp, str, ndmp3_header_message_type_table);
104 }
105 
106 /* clang-format off */
107 struct ndmp_enum_str_table ndmp3_header_message_type_table[] = {
108         { "NDMP3_MESSAGE_REQUEST",      NDMP3_MESSAGE_REQUEST, },
109         { "NDMP3_MESSAGE_REPLY",        NDMP3_MESSAGE_REPLY, },
110         { 0 }
111 };
112 /* clang-format on */
113 
114 
115 extern struct ndmp_enum_str_table ndmp3_message_table[];
116 extern char* ndmp3_message_to_str(ndmp3_message val);
117 extern int ndmp3_message_from_str(ndmp3_message* valp, char* str);
118 
ndmp3_message_to_str(ndmp3_message val)119 char* ndmp3_message_to_str(ndmp3_message val)
120 {
121   return ndmp_enum_to_str((int)val, ndmp3_message_table);
122 }
123 
ndmp3_message_from_str(ndmp3_message * valp,char * str)124 int ndmp3_message_from_str(ndmp3_message* valp, char* str)
125 {
126   return ndmp_enum_from_str((int*)valp, str, ndmp3_message_table);
127 }
128 
129 /* clang-format off */
130 struct ndmp_enum_str_table ndmp3_message_table[] = {
131         { "NDMP3_CONNECT_OPEN",         NDMP3_CONNECT_OPEN, },
132         { "NDMP3_CONNECT_CLIENT_AUTH",  NDMP3_CONNECT_CLIENT_AUTH, },
133         { "NDMP3_CONNECT_CLOSE",        NDMP3_CONNECT_CLOSE, },
134         { "NDMP3_CONNECT_SERVER_AUTH",  NDMP3_CONNECT_SERVER_AUTH, },
135         { "NDMP3_CONFIG_GET_HOST_INFO", NDMP3_CONFIG_GET_HOST_INFO, },
136         { "NDMP3_CONFIG_GET_CONNECTION_TYPE",
137                                         NDMP3_CONFIG_GET_CONNECTION_TYPE, },
138         { "NDMP3_CONFIG_GET_AUTH_ATTR", NDMP3_CONFIG_GET_AUTH_ATTR, },
139         { "NDMP3_CONFIG_GET_BUTYPE_INFO", NDMP3_CONFIG_GET_BUTYPE_INFO, },
140         { "NDMP3_CONFIG_GET_FS_INFO",   NDMP3_CONFIG_GET_FS_INFO, },
141         { "NDMP3_CONFIG_GET_TAPE_INFO", NDMP3_CONFIG_GET_TAPE_INFO, },
142         { "NDMP3_CONFIG_GET_SCSI_INFO", NDMP3_CONFIG_GET_SCSI_INFO, },
143         { "NDMP3_CONFIG_GET_SERVER_INFO",NDMP3_CONFIG_GET_SERVER_INFO, },
144         { "NDMP3_SCSI_OPEN",            NDMP3_SCSI_OPEN, },
145         { "NDMP3_SCSI_CLOSE",           NDMP3_SCSI_CLOSE, },
146         { "NDMP3_SCSI_GET_STATE",       NDMP3_SCSI_GET_STATE, },
147         { "NDMP3_SCSI_SET_TARGET",      NDMP3_SCSI_SET_TARGET, },
148         { "NDMP3_SCSI_RESET_DEVICE",    NDMP3_SCSI_RESET_DEVICE, },
149         { "NDMP3_SCSI_RESET_BUS",       NDMP3_SCSI_RESET_BUS, },
150         { "NDMP3_SCSI_EXECUTE_CDB",     NDMP3_SCSI_EXECUTE_CDB, },
151         { "NDMP3_TAPE_OPEN",            NDMP3_TAPE_OPEN, },
152         { "NDMP3_TAPE_CLOSE",           NDMP3_TAPE_CLOSE, },
153         { "NDMP3_TAPE_GET_STATE",       NDMP3_TAPE_GET_STATE, },
154         { "NDMP3_TAPE_MTIO",            NDMP3_TAPE_MTIO, },
155         { "NDMP3_TAPE_WRITE",           NDMP3_TAPE_WRITE, },
156         { "NDMP3_TAPE_READ",            NDMP3_TAPE_READ, },
157         { "NDMP3_TAPE_EXECUTE_CDB",     NDMP3_TAPE_EXECUTE_CDB, },
158         { "NDMP3_DATA_GET_STATE",       NDMP3_DATA_GET_STATE, },
159         { "NDMP3_DATA_START_BACKUP",    NDMP3_DATA_START_BACKUP, },
160         { "NDMP3_DATA_START_RECOVER",   NDMP3_DATA_START_RECOVER, },
161         { "NDMP3_DATA_START_RECOVER_FILEHIST",
162                                         NDMP3_DATA_START_RECOVER_FILEHIST, },
163         { "NDMP3_DATA_ABORT",           NDMP3_DATA_ABORT, },
164         { "NDMP3_DATA_GET_ENV",         NDMP3_DATA_GET_ENV, },
165         { "NDMP3_DATA_STOP",            NDMP3_DATA_STOP, },
166         { "NDMP3_DATA_LISTEN",          NDMP3_DATA_LISTEN, },
167         { "NDMP3_DATA_CONNECT",         NDMP3_DATA_CONNECT, },
168         { "NDMP3_NOTIFY_DATA_HALTED",   NDMP3_NOTIFY_DATA_HALTED, },
169         { "NDMP3_NOTIFY_CONNECTED",     NDMP3_NOTIFY_CONNECTED, },
170         { "NDMP3_NOTIFY_MOVER_HALTED",  NDMP3_NOTIFY_MOVER_HALTED, },
171         { "NDMP3_NOTIFY_MOVER_PAUSED",  NDMP3_NOTIFY_MOVER_PAUSED, },
172         { "NDMP3_NOTIFY_DATA_READ",     NDMP3_NOTIFY_DATA_READ, },
173         { "NDMP3_LOG_FILE",             NDMP3_LOG_FILE, },
174         { "NDMP3_LOG_MESSAGE",          NDMP3_LOG_MESSAGE, },
175         { "NDMP3_FH_ADD_FILE",          NDMP3_FH_ADD_FILE, },
176         { "NDMP3_FH_ADD_DIR",           NDMP3_FH_ADD_DIR, },
177         { "NDMP3_FH_ADD_NODE",          NDMP3_FH_ADD_NODE, },
178         { "NDMP3_MOVER_GET_STATE",      NDMP3_MOVER_GET_STATE, },
179         { "NDMP3_MOVER_LISTEN",         NDMP3_MOVER_LISTEN, },
180         { "NDMP3_MOVER_CONTINUE",       NDMP3_MOVER_CONTINUE, },
181         { "NDMP3_MOVER_ABORT",          NDMP3_MOVER_ABORT, },
182         { "NDMP3_MOVER_STOP",           NDMP3_MOVER_STOP, },
183         { "NDMP3_MOVER_SET_WINDOW",     NDMP3_MOVER_SET_WINDOW, },
184         { "NDMP3_MOVER_READ",           NDMP3_MOVER_READ, },
185         { "NDMP3_MOVER_CLOSE",          NDMP3_MOVER_CLOSE, },
186         { "NDMP3_MOVER_SET_RECORD_SIZE", NDMP3_MOVER_SET_RECORD_SIZE, },
187         { "NDMP3_MOVER_CONNECT",        NDMP3_MOVER_CONNECT, },
188         { "NDMP3_VENDORS_BASE",         NDMP3_VENDORS_BASE, },
189         { "NDMP3_RESERVED_BASE",        NDMP3_RESERVED_BASE, },
190         { 0 }
191 };
192 /* clang-format on */
193 
194 
195 extern struct ndmp_enum_str_table ndmp3_auth_type_table[];
196 extern char* ndmp3_auth_type_to_str(ndmp3_auth_type val);
197 extern int ndmp3_auth_type_from_str(ndmp3_auth_type* valp, char* str);
198 
ndmp3_auth_type_to_str(ndmp3_auth_type val)199 char* ndmp3_auth_type_to_str(ndmp3_auth_type val)
200 {
201   return ndmp_enum_to_str((int)val, ndmp3_auth_type_table);
202 }
203 
ndmp3_auth_type_from_str(ndmp3_auth_type * valp,char * str)204 int ndmp3_auth_type_from_str(ndmp3_auth_type* valp, char* str)
205 {
206   return ndmp_enum_from_str((int*)valp, str, ndmp3_auth_type_table);
207 }
208 
209 /* clang-format off */
210 struct ndmp_enum_str_table ndmp3_auth_type_table[] = {
211         { "NDMP3_AUTH_NONE",            NDMP3_AUTH_NONE, },
212         { "NDMP3_AUTH_TEXT",            NDMP3_AUTH_TEXT, },
213         { "NDMP3_AUTH_MD5",             NDMP3_AUTH_MD5, },
214         { 0 }
215 };
216 /* clang-format on */
217 
218 
219 extern struct ndmp_enum_str_table ndmp3_addr_type_table[];
220 extern char* ndmp3_addr_type_to_str(ndmp3_addr_type val);
221 extern int ndmp3_addr_type_from_str(ndmp3_addr_type* valp, char* str);
222 
ndmp3_addr_type_to_str(ndmp3_addr_type val)223 char* ndmp3_addr_type_to_str(ndmp3_addr_type val)
224 {
225   return ndmp_enum_to_str((int)val, ndmp3_addr_type_table);
226 }
227 
ndmp3_addr_type_from_str(ndmp3_addr_type * valp,char * str)228 int ndmp3_addr_type_from_str(ndmp3_addr_type* valp, char* str)
229 {
230   return ndmp_enum_from_str((int*)valp, str, ndmp3_addr_type_table);
231 }
232 
233 /* clang-format off */
234 struct ndmp_enum_str_table ndmp3_addr_type_table[] = {
235         { "NDMP3_ADDR_LOCAL",           NDMP3_ADDR_LOCAL, },
236         { "NDMP3_ADDR_TCP",             NDMP3_ADDR_TCP, },
237         { "NDMP3_ADDR_FC",              NDMP3_ADDR_FC, },
238         { "NDMP3_ADDR_IPC",             NDMP3_ADDR_IPC, },
239         { 0 }
240 };
241 /* clang-format on */
242 
243 
244 extern struct ndmp_enum_str_table ndmp3_tape_open_mode_table[];
245 extern char* ndmp3_tape_open_mode_to_str(ndmp3_tape_open_mode val);
246 extern int ndmp3_tape_open_mode_from_str(ndmp3_tape_open_mode* valp, char* str);
247 
ndmp3_tape_open_mode_to_str(ndmp3_tape_open_mode val)248 char* ndmp3_tape_open_mode_to_str(ndmp3_tape_open_mode val)
249 {
250   return ndmp_enum_to_str((int)val, ndmp3_tape_open_mode_table);
251 }
252 
ndmp3_tape_open_mode_from_str(ndmp3_tape_open_mode * valp,char * str)253 int ndmp3_tape_open_mode_from_str(ndmp3_tape_open_mode* valp, char* str)
254 {
255   return ndmp_enum_from_str((int*)valp, str, ndmp3_tape_open_mode_table);
256 }
257 
258 /* clang-format off */
259 struct ndmp_enum_str_table ndmp3_tape_open_mode_table[] = {
260         { "NDMP3_TAPE_READ_MODE",       NDMP3_TAPE_READ_MODE, },
261         { "NDMP3_TAPE_RDWR_MODE",       NDMP3_TAPE_RDWR_MODE, },
262         { 0 }
263 };
264 /* clang-format on */
265 
266 
267 extern struct ndmp_enum_str_table ndmp3_tape_mtio_op_table[];
268 extern char* ndmp3_tape_mtio_op_to_str(ndmp3_tape_mtio_op val);
269 extern int ndmp3_tape_mtio_op_from_str(ndmp3_tape_mtio_op* valp, char* str);
270 
ndmp3_tape_mtio_op_to_str(ndmp3_tape_mtio_op val)271 char* ndmp3_tape_mtio_op_to_str(ndmp3_tape_mtio_op val)
272 {
273   return ndmp_enum_to_str((int)val, ndmp3_tape_mtio_op_table);
274 }
275 
ndmp3_tape_mtio_op_from_str(ndmp3_tape_mtio_op * valp,char * str)276 int ndmp3_tape_mtio_op_from_str(ndmp3_tape_mtio_op* valp, char* str)
277 {
278   return ndmp_enum_from_str((int*)valp, str, ndmp3_tape_mtio_op_table);
279 }
280 
281 /* clang-format off */
282 struct ndmp_enum_str_table ndmp3_tape_mtio_op_table[] = {
283         { "NDMP3_MTIO_FSF",             NDMP3_MTIO_FSF, },
284         { "NDMP3_MTIO_BSF",             NDMP3_MTIO_BSF, },
285         { "NDMP3_MTIO_FSR",             NDMP3_MTIO_FSR, },
286         { "NDMP3_MTIO_BSR",             NDMP3_MTIO_BSR, },
287         { "NDMP3_MTIO_REW",             NDMP3_MTIO_REW, },
288         { "NDMP3_MTIO_EOF",             NDMP3_MTIO_EOF, },
289         { "NDMP3_MTIO_OFF",             NDMP3_MTIO_OFF, },
290         { 0 }
291 };
292 /* clang-format on */
293 
294 
295 extern struct ndmp_enum_str_table ndmp3_mover_state_table[];
296 extern char* ndmp3_mover_state_to_str(ndmp3_mover_state val);
297 extern int ndmp3_mover_state_from_str(ndmp3_mover_state* valp, char* str);
298 
ndmp3_mover_state_to_str(ndmp3_mover_state val)299 char* ndmp3_mover_state_to_str(ndmp3_mover_state val)
300 {
301   return ndmp_enum_to_str((int)val, ndmp3_mover_state_table);
302 }
303 
ndmp3_mover_state_from_str(ndmp3_mover_state * valp,char * str)304 int ndmp3_mover_state_from_str(ndmp3_mover_state* valp, char* str)
305 {
306   return ndmp_enum_from_str((int*)valp, str, ndmp3_mover_state_table);
307 }
308 
309 /* clang-format off */
310 struct ndmp_enum_str_table ndmp3_mover_state_table[] = {
311         { "NDMP3_MOVER_STATE_IDLE",     NDMP3_MOVER_STATE_IDLE, },
312         { "NDMP3_MOVER_STATE_LISTEN",   NDMP3_MOVER_STATE_LISTEN, },
313         { "NDMP3_MOVER_STATE_ACTIVE",   NDMP3_MOVER_STATE_ACTIVE, },
314         { "NDMP3_MOVER_STATE_PAUSED",   NDMP3_MOVER_STATE_PAUSED, },
315         { "NDMP3_MOVER_STATE_HALTED",   NDMP3_MOVER_STATE_HALTED, },
316         { 0 }
317 };
318 /* clang-format on */
319 
320 
321 extern struct ndmp_enum_str_table ndmp3_mover_pause_reason_table[];
322 extern char* ndmp3_mover_pause_reason_to_str(ndmp3_mover_pause_reason val);
323 extern int ndmp3_mover_pause_reason_from_str(ndmp3_mover_pause_reason* valp,
324                                              char* str);
325 
ndmp3_mover_pause_reason_to_str(ndmp3_mover_pause_reason val)326 char* ndmp3_mover_pause_reason_to_str(ndmp3_mover_pause_reason val)
327 {
328   return ndmp_enum_to_str((int)val, ndmp3_mover_pause_reason_table);
329 }
330 
ndmp3_mover_pause_reason_from_str(ndmp3_mover_pause_reason * valp,char * str)331 int ndmp3_mover_pause_reason_from_str(ndmp3_mover_pause_reason* valp, char* str)
332 {
333   return ndmp_enum_from_str((int*)valp, str, ndmp3_mover_pause_reason_table);
334 }
335 
336 /* clang-format off */
337 struct ndmp_enum_str_table ndmp3_mover_pause_reason_table[] = {
338         { "NDMP3_MOVER_PAUSE_NA",       NDMP3_MOVER_PAUSE_NA, },
339         { "NDMP3_MOVER_PAUSE_EOM",      NDMP3_MOVER_PAUSE_EOM, },
340         { "NDMP3_MOVER_PAUSE_EOF",      NDMP3_MOVER_PAUSE_EOF, },
341         { "NDMP3_MOVER_PAUSE_SEEK",     NDMP3_MOVER_PAUSE_SEEK, },
342         { "NDMP3_MOVER_PAUSE_MEDIA_ERROR", NDMP3_MOVER_PAUSE_MEDIA_ERROR, },
343         { "NDMP3_MOVER_PAUSE_EOW",      NDMP3_MOVER_PAUSE_EOW, },
344         { 0 }
345 };
346 /* clang-format on */
347 
348 
349 extern struct ndmp_enum_str_table ndmp3_mover_halt_reason_table[];
350 extern char* ndmp3_mover_halt_reason_to_str(ndmp3_mover_halt_reason val);
351 extern int ndmp3_mover_halt_reason_from_str(ndmp3_mover_halt_reason* valp,
352                                             char* str);
353 
ndmp3_mover_halt_reason_to_str(ndmp3_mover_halt_reason val)354 char* ndmp3_mover_halt_reason_to_str(ndmp3_mover_halt_reason val)
355 {
356   return ndmp_enum_to_str((int)val, ndmp3_mover_halt_reason_table);
357 }
358 
ndmp3_mover_halt_reason_from_str(ndmp3_mover_halt_reason * valp,char * str)359 int ndmp3_mover_halt_reason_from_str(ndmp3_mover_halt_reason* valp, char* str)
360 {
361   return ndmp_enum_from_str((int*)valp, str, ndmp3_mover_halt_reason_table);
362 }
363 
364 /* clang-format off */
365 struct ndmp_enum_str_table ndmp3_mover_halt_reason_table[] = {
366         { "NDMP3_MOVER_HALT_NA",        NDMP3_MOVER_HALT_NA, },
367         { "NDMP3_MOVER_HALT_CONNECT_CLOSED",
368                                         NDMP3_MOVER_HALT_CONNECT_CLOSED, },
369         { "NDMP3_MOVER_HALT_ABORTED",   NDMP3_MOVER_HALT_ABORTED, },
370         { "NDMP3_MOVER_HALT_INTERNAL_ERROR",
371                                         NDMP3_MOVER_HALT_INTERNAL_ERROR, },
372         { "NDMP3_MOVER_HALT_CONNECT_ERROR",
373                                         NDMP3_MOVER_HALT_CONNECT_ERROR, },
374         { 0 }
375 };
376 /* clang-format on */
377 
378 
379 extern struct ndmp_enum_str_table ndmp3_mover_mode_table[];
380 extern char* ndmp3_mover_mode_to_str(ndmp3_mover_mode val);
381 extern int ndmp3_mover_mode_from_str(ndmp3_mover_mode* valp, char* str);
382 
ndmp3_mover_mode_to_str(ndmp3_mover_mode val)383 char* ndmp3_mover_mode_to_str(ndmp3_mover_mode val)
384 {
385   return ndmp_enum_to_str((int)val, ndmp3_mover_mode_table);
386 }
387 
ndmp3_mover_mode_from_str(ndmp3_mover_mode * valp,char * str)388 int ndmp3_mover_mode_from_str(ndmp3_mover_mode* valp, char* str)
389 {
390   return ndmp_enum_from_str((int*)valp, str, ndmp3_mover_mode_table);
391 }
392 
393 /* clang-format off */
394 struct ndmp_enum_str_table ndmp3_mover_mode_table[] = {
395         { "NDMP3_MOVER_MODE_READ",      NDMP3_MOVER_MODE_READ, },
396         { "NDMP3_MOVER_MODE_WRITE",     NDMP3_MOVER_MODE_WRITE, },
397         { 0 }
398 };
399 /* clang-format on */
400 
401 
402 extern struct ndmp_enum_str_table ndmp3_data_operation_table[];
403 extern char* ndmp3_data_operation_to_str(ndmp3_data_operation val);
404 extern int ndmp3_data_operation_from_str(ndmp3_data_operation* valp, char* str);
405 
ndmp3_data_operation_to_str(ndmp3_data_operation val)406 char* ndmp3_data_operation_to_str(ndmp3_data_operation val)
407 {
408   return ndmp_enum_to_str((int)val, ndmp3_data_operation_table);
409 }
410 
ndmp3_data_operation_from_str(ndmp3_data_operation * valp,char * str)411 int ndmp3_data_operation_from_str(ndmp3_data_operation* valp, char* str)
412 {
413   return ndmp_enum_from_str((int*)valp, str, ndmp3_data_operation_table);
414 }
415 
416 /* clang-format off */
417 struct ndmp_enum_str_table ndmp3_data_operation_table[] = {
418         { "NDMP3_DATA_OP_NOACTION",     NDMP3_DATA_OP_NOACTION, },
419         { "NDMP3_DATA_OP_BACKUP",       NDMP3_DATA_OP_BACKUP, },
420         { "NDMP3_DATA_OP_RESTORE",      NDMP3_DATA_OP_RESTORE, },
421         { "NDMP3_DATA_OP_RESTORE_FILEHIST",
422                                         NDMP3_DATA_OP_RESTORE_FILEHIST, },
423         { 0 }
424 };
425 /* clang-format on */
426 
427 
428 extern struct ndmp_enum_str_table ndmp3_data_state_table[];
429 extern char* ndmp3_data_state_to_str(ndmp3_data_state val);
430 extern int ndmp3_data_state_from_str(ndmp3_data_state* valp, char* str);
431 
ndmp3_data_state_to_str(ndmp3_data_state val)432 char* ndmp3_data_state_to_str(ndmp3_data_state val)
433 {
434   return ndmp_enum_to_str((int)val, ndmp3_data_state_table);
435 }
436 
ndmp3_data_state_from_str(ndmp3_data_state * valp,char * str)437 int ndmp3_data_state_from_str(ndmp3_data_state* valp, char* str)
438 {
439   return ndmp_enum_from_str((int*)valp, str, ndmp3_data_state_table);
440 }
441 
442 /* clang-format off */
443 struct ndmp_enum_str_table ndmp3_data_state_table[] = {
444         { "NDMP3_DATA_STATE_IDLE",      NDMP3_DATA_STATE_IDLE, },
445         { "NDMP3_DATA_STATE_ACTIVE",    NDMP3_DATA_STATE_ACTIVE, },
446         { "NDMP3_DATA_STATE_HALTED",    NDMP3_DATA_STATE_HALTED, },
447         { "NDMP3_DATA_STATE_LISTEN",    NDMP3_DATA_STATE_LISTEN, },
448         { "NDMP3_DATA_STATE_CONNECTED", NDMP3_DATA_STATE_CONNECTED, },
449         { 0 }
450 };
451 /* clang-format on */
452 
453 
454 extern struct ndmp_enum_str_table ndmp3_data_halt_reason_table[];
455 extern char* ndmp3_data_halt_reason_to_str(ndmp3_data_halt_reason val);
456 extern int ndmp3_data_halt_reason_from_str(ndmp3_data_halt_reason* valp,
457                                            char* str);
458 
ndmp3_data_halt_reason_to_str(ndmp3_data_halt_reason val)459 char* ndmp3_data_halt_reason_to_str(ndmp3_data_halt_reason val)
460 {
461   return ndmp_enum_to_str((int)val, ndmp3_data_halt_reason_table);
462 }
463 
ndmp3_data_halt_reason_from_str(ndmp3_data_halt_reason * valp,char * str)464 int ndmp3_data_halt_reason_from_str(ndmp3_data_halt_reason* valp, char* str)
465 {
466   return ndmp_enum_from_str((int*)valp, str, ndmp3_data_halt_reason_table);
467 }
468 
469 /* clang-format off */
470 struct ndmp_enum_str_table ndmp3_data_halt_reason_table[] = {
471         { "NDMP3_DATA_HALT_NA",         NDMP3_DATA_HALT_NA, },
472         { "NDMP3_DATA_HALT_SUCCESSFUL", NDMP3_DATA_HALT_SUCCESSFUL, },
473         { "NDMP3_DATA_HALT_ABORTED",    NDMP3_DATA_HALT_ABORTED, },
474         { "NDMP3_DATA_HALT_INTERNAL_ERROR", NDMP3_DATA_HALT_INTERNAL_ERROR, },
475         { "NDMP3_DATA_HALT_CONNECT_ERROR", NDMP3_DATA_HALT_CONNECT_ERROR, },
476         { 0 }
477 };
478 /* clang-format on */
479 
480 
481 extern struct ndmp_enum_str_table ndmp3_connect_reason_table[];
482 extern char* ndmp3_connect_reason_to_str(ndmp3_connect_reason val);
483 extern int ndmp3_connect_reason_from_str(ndmp3_connect_reason* valp, char* str);
484 
ndmp3_connect_reason_to_str(ndmp3_connect_reason val)485 char* ndmp3_connect_reason_to_str(ndmp3_connect_reason val)
486 {
487   return ndmp_enum_to_str((int)val, ndmp3_connect_reason_table);
488 }
489 
ndmp3_connect_reason_from_str(ndmp3_connect_reason * valp,char * str)490 int ndmp3_connect_reason_from_str(ndmp3_connect_reason* valp, char* str)
491 {
492   return ndmp_enum_from_str((int*)valp, str, ndmp3_connect_reason_table);
493 }
494 
495 /* clang-format off */
496 struct ndmp_enum_str_table ndmp3_connect_reason_table[] = {
497         { "NDMP3_CONNECTED",            NDMP3_CONNECTED, },
498         { "NDMP3_SHUTDOWN",             NDMP3_SHUTDOWN, },
499         { "NDMP3_REFUSED",              NDMP3_REFUSED, },
500         { 0 }
501 };
502 /* clang-format on */
503 
504 
505 extern struct ndmp_enum_str_table ndmp3_log_type_table[];
506 extern char* ndmp3_log_type_to_str(ndmp3_log_type val);
507 extern int ndmp3_log_type_from_str(ndmp3_log_type* valp, char* str);
508 
ndmp3_log_type_to_str(ndmp3_log_type val)509 char* ndmp3_log_type_to_str(ndmp3_log_type val)
510 {
511   return ndmp_enum_to_str((int)val, ndmp3_log_type_table);
512 }
513 
ndmp3_log_type_from_str(ndmp3_log_type * valp,char * str)514 int ndmp3_log_type_from_str(ndmp3_log_type* valp, char* str)
515 {
516   return ndmp_enum_from_str((int*)valp, str, ndmp3_log_type_table);
517 }
518 
519 /* clang-format off */
520 struct ndmp_enum_str_table ndmp3_log_type_table[] = {
521         { "NDMP3_LOG_NORMAL",           NDMP3_LOG_NORMAL, },
522         { "NDMP3_LOG_DEBUG",            NDMP3_LOG_DEBUG, },
523         { "NDMP3_LOG_ERROR",            NDMP3_LOG_ERROR, },
524         { "NDMP3_LOG_WARNING",          NDMP3_LOG_WARNING, },
525         { 0 }
526 };
527 /* clang-format on */
528 
529 
530 extern struct ndmp_enum_str_table ndmp3_fs_type_table[];
531 extern char* ndmp3_fs_type_to_str(ndmp3_fs_type val);
532 extern int ndmp3_fs_type_from_str(ndmp3_fs_type* valp, char* str);
533 
ndmp3_fs_type_to_str(ndmp3_fs_type val)534 char* ndmp3_fs_type_to_str(ndmp3_fs_type val)
535 {
536   return ndmp_enum_to_str((int)val, ndmp3_fs_type_table);
537 }
538 
ndmp3_fs_type_from_str(ndmp3_fs_type * valp,char * str)539 int ndmp3_fs_type_from_str(ndmp3_fs_type* valp, char* str)
540 {
541   return ndmp_enum_from_str((int*)valp, str, ndmp3_fs_type_table);
542 }
543 
544 /* clang-format off */
545 struct ndmp_enum_str_table ndmp3_fs_type_table[] = {
546         { "NDMP3_FS_UNIX",              NDMP3_FS_UNIX, },
547         { "NDMP3_FS_NT",                NDMP3_FS_NT, },
548         { "NDMP3_FS_OTHER",             NDMP3_FS_OTHER, },
549         { 0 }
550 };
551 /* clang-format on */
552 
553 
554 extern struct ndmp_enum_str_table ndmp3_file_type_table[];
555 extern char* ndmp3_file_type_to_str(ndmp3_file_type val);
556 extern int ndmp3_file_type_from_str(ndmp3_file_type* valp, char* str);
557 
ndmp3_file_type_to_str(ndmp3_file_type val)558 char* ndmp3_file_type_to_str(ndmp3_file_type val)
559 {
560   return ndmp_enum_to_str((int)val, ndmp3_file_type_table);
561 }
562 
ndmp3_file_type_from_str(ndmp3_file_type * valp,char * str)563 int ndmp3_file_type_from_str(ndmp3_file_type* valp, char* str)
564 {
565   return ndmp_enum_from_str((int*)valp, str, ndmp3_file_type_table);
566 }
567 
568 /* clang-format off */
569 struct ndmp_enum_str_table ndmp3_file_type_table[] = {
570         { "NDMP3_FILE_DIR",             NDMP3_FILE_DIR, },
571         { "NDMP3_FILE_FIFO",            NDMP3_FILE_FIFO, },
572         { "NDMP3_FILE_CSPEC",           NDMP3_FILE_CSPEC, },
573         { "NDMP3_FILE_BSPEC",           NDMP3_FILE_BSPEC, },
574         { "NDMP3_FILE_REG",             NDMP3_FILE_REG, },
575         { "NDMP3_FILE_SLINK",           NDMP3_FILE_SLINK, },
576         { "NDMP3_FILE_SOCK",            NDMP3_FILE_SOCK, },
577         { "NDMP3_FILE_REGISTRY",        NDMP3_FILE_REGISTRY, },
578         { "NDMP3_FILE_OTHER",           NDMP3_FILE_OTHER, },
579         { 0 }
580 };
581 /* clang-format on */
582 
583 #endif /* !NDMOS_OPTION_NO_NDMP3 */
584