17917SReza.Sabdar@Sun.COM /*
2*13024SRandall.Ralphs@Sun.COM * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
37917SReza.Sabdar@Sun.COM */
47917SReza.Sabdar@Sun.COM
57917SReza.Sabdar@Sun.COM /*
67917SReza.Sabdar@Sun.COM * BSD 3 Clause License
77917SReza.Sabdar@Sun.COM *
87917SReza.Sabdar@Sun.COM * Copyright (c) 2007, The Storage Networking Industry Association.
97917SReza.Sabdar@Sun.COM *
107917SReza.Sabdar@Sun.COM * Redistribution and use in source and binary forms, with or without
117917SReza.Sabdar@Sun.COM * modification, are permitted provided that the following conditions
127917SReza.Sabdar@Sun.COM * are met:
137917SReza.Sabdar@Sun.COM * - Redistributions of source code must retain the above copyright
147917SReza.Sabdar@Sun.COM * notice, this list of conditions and the following disclaimer.
157917SReza.Sabdar@Sun.COM *
167917SReza.Sabdar@Sun.COM * - Redistributions in binary form must reproduce the above copyright
177917SReza.Sabdar@Sun.COM * notice, this list of conditions and the following disclaimer in
187917SReza.Sabdar@Sun.COM * the documentation and/or other materials provided with the
197917SReza.Sabdar@Sun.COM * distribution.
207917SReza.Sabdar@Sun.COM *
217917SReza.Sabdar@Sun.COM * - Neither the name of The Storage Networking Industry Association (SNIA)
227917SReza.Sabdar@Sun.COM * nor the names of its contributors may be used to endorse or promote
237917SReza.Sabdar@Sun.COM * products derived from this software without specific prior written
247917SReza.Sabdar@Sun.COM * permission.
257917SReza.Sabdar@Sun.COM *
267917SReza.Sabdar@Sun.COM * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
277917SReza.Sabdar@Sun.COM * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
287917SReza.Sabdar@Sun.COM * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
297917SReza.Sabdar@Sun.COM * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
307917SReza.Sabdar@Sun.COM * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
317917SReza.Sabdar@Sun.COM * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
327917SReza.Sabdar@Sun.COM * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
337917SReza.Sabdar@Sun.COM * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
347917SReza.Sabdar@Sun.COM * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
357917SReza.Sabdar@Sun.COM * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
367917SReza.Sabdar@Sun.COM * POSSIBILITY OF SUCH DAMAGE.
377917SReza.Sabdar@Sun.COM */
387917SReza.Sabdar@Sun.COM #include <stdio.h>
39*13024SRandall.Ralphs@Sun.COM #include <unistd.h>
40*13024SRandall.Ralphs@Sun.COM #include <errno.h>
417917SReza.Sabdar@Sun.COM #include <locale.h>
427917SReza.Sabdar@Sun.COM #include <libndmp.h>
437917SReza.Sabdar@Sun.COM #include "ndmpadm.h"
447917SReza.Sabdar@Sun.COM
457917SReza.Sabdar@Sun.COM /* static functions prototype */
467917SReza.Sabdar@Sun.COM static void ndmp_tprint_addr(char *, ndmp_ad_type_t, char *);
477917SReza.Sabdar@Sun.COM static void ndmp_print_env(ndmp_session_info_t *);
487917SReza.Sabdar@Sun.COM static void ndmp_connect_print_conn(ndmp_session_info_t *);
497917SReza.Sabdar@Sun.COM static void ndmp_connect_print_scsi_v2(ndmp_session_info_t *);
507917SReza.Sabdar@Sun.COM static void ndmp_connect_print_tape_v2(ndmp_session_info_t *);
517917SReza.Sabdar@Sun.COM static void ndmp_connect_print_mover_v2(ndmp_session_info_t *);
527917SReza.Sabdar@Sun.COM static void ndmp_connect_print_data_v2(ndmp_session_info_t *);
537917SReza.Sabdar@Sun.COM static void ndmp_connect_print_v2(int, ndmp_session_info_t *);
547917SReza.Sabdar@Sun.COM static void ndmp_connect_print_mover_v3(ndmp_session_info_t *);
557917SReza.Sabdar@Sun.COM static void ndmp_connect_print_data_v3(ndmp_session_info_t *);
567917SReza.Sabdar@Sun.COM static void ndmp_connect_print_v3(int, ndmp_session_info_t *);
577917SReza.Sabdar@Sun.COM static void ndmp_connection_print(int, ndmp_session_info_t *);
587917SReza.Sabdar@Sun.COM
597917SReza.Sabdar@Sun.COM /* Boolean to string. */
607917SReza.Sabdar@Sun.COM #define B2S(b) ((b) ? "Yes" : "No")
617917SReza.Sabdar@Sun.COM
627917SReza.Sabdar@Sun.COM /*
637917SReza.Sabdar@Sun.COM * Print the address type and IP address if the address type is tcp
647917SReza.Sabdar@Sun.COM */
657917SReza.Sabdar@Sun.COM static void
ndmp_tprint_addr(char * label,ndmp_ad_type_t addr_type,char * tcp_addr)667917SReza.Sabdar@Sun.COM ndmp_tprint_addr(char *label, ndmp_ad_type_t addr_type, char *tcp_addr)
677917SReza.Sabdar@Sun.COM {
687917SReza.Sabdar@Sun.COM if ((label == NULL) || (tcp_addr == NULL))
697917SReza.Sabdar@Sun.COM return;
707917SReza.Sabdar@Sun.COM
717917SReza.Sabdar@Sun.COM switch (addr_type) {
727917SReza.Sabdar@Sun.COM case NDMP_AD_LOCAL:
737917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\t%s type:\tLocal\n"), label);
747917SReza.Sabdar@Sun.COM break;
757917SReza.Sabdar@Sun.COM case NDMP_AD_TCP:
767917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\t%s type:\tTCP\n"), label);
777917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\t%s address:\t%s\n"),
787917SReza.Sabdar@Sun.COM label, tcp_addr);
797917SReza.Sabdar@Sun.COM break;
807917SReza.Sabdar@Sun.COM case NDMP_AD_FC:
817917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\t%s type:\tFC\n"), label);
827917SReza.Sabdar@Sun.COM break;
837917SReza.Sabdar@Sun.COM case NDMP_AD_IPC:
847917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\t%s type:\tIPC\n"), label);
857917SReza.Sabdar@Sun.COM break;
867917SReza.Sabdar@Sun.COM default:
877917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
887917SReza.Sabdar@Sun.COM gettext("\t%s addr type unknown (0x%x)\n"),
897917SReza.Sabdar@Sun.COM label, addr_type);
907917SReza.Sabdar@Sun.COM }
917917SReza.Sabdar@Sun.COM }
927917SReza.Sabdar@Sun.COM
937917SReza.Sabdar@Sun.COM /*
947917SReza.Sabdar@Sun.COM * Print all the data environment variables for the active session
957917SReza.Sabdar@Sun.COM */
967917SReza.Sabdar@Sun.COM static void
ndmp_print_env(ndmp_session_info_t * si)977917SReza.Sabdar@Sun.COM ndmp_print_env(ndmp_session_info_t *si)
987917SReza.Sabdar@Sun.COM {
997917SReza.Sabdar@Sun.COM int i, n;
1007917SReza.Sabdar@Sun.COM ndmp_dt_pval_t *ep;
1017917SReza.Sabdar@Sun.COM
1027917SReza.Sabdar@Sun.COM n = si->nsi_data.nd_env_len;
1037917SReza.Sabdar@Sun.COM ep = si->nsi_data.nd_env;
1047917SReza.Sabdar@Sun.COM for (i = 0; ep && i < n; i++, ep++) {
1057917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.env[%d]:\t%s: "),
1067917SReza.Sabdar@Sun.COM i, ep->np_name);
1077917SReza.Sabdar@Sun.COM if ((ep->np_value != NULL) && (*ep->np_value != NULL))
1087917SReza.Sabdar@Sun.COM (void) fprintf(stdout, "\"%s\"\n", ep->np_value);
1097917SReza.Sabdar@Sun.COM }
1107917SReza.Sabdar@Sun.COM }
1117917SReza.Sabdar@Sun.COM
1127917SReza.Sabdar@Sun.COM /*
1137917SReza.Sabdar@Sun.COM * Print common fields of the active connection.
1147917SReza.Sabdar@Sun.COM */
1157917SReza.Sabdar@Sun.COM static void
ndmp_connect_print_conn(ndmp_session_info_t * si)1167917SReza.Sabdar@Sun.COM ndmp_connect_print_conn(ndmp_session_info_t *si)
1177917SReza.Sabdar@Sun.COM {
1187917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tSession Id:\t%d\n"), si->nsi_sid);
1197917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tProtocol version:\t%d\n"),
1207917SReza.Sabdar@Sun.COM si->nsi_pver);
1217917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tAuthenticated:\t\t%s\n"),
1227917SReza.Sabdar@Sun.COM B2S(si->nsi_auth));
1237917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tEOF:\t\t\t%s\n"), B2S(si->nsi_eof));
1247917SReza.Sabdar@Sun.COM if (si->nsi_cl_addr != NULL)
1257917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1267917SReza.Sabdar@Sun.COM gettext("\tClient address:\t\t%s\n"), si->nsi_cl_addr);
1277917SReza.Sabdar@Sun.COM }
1287917SReza.Sabdar@Sun.COM
1297917SReza.Sabdar@Sun.COM /*
1307917SReza.Sabdar@Sun.COM * Print the connection SCSI info.
1317917SReza.Sabdar@Sun.COM */
1327917SReza.Sabdar@Sun.COM static void
ndmp_connect_print_scsi_v2(ndmp_session_info_t * si)1337917SReza.Sabdar@Sun.COM ndmp_connect_print_scsi_v2(ndmp_session_info_t *si)
1347917SReza.Sabdar@Sun.COM {
1357917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tscsi.open:\t\t%s\n"),
1367917SReza.Sabdar@Sun.COM B2S(si->nsi_scsi.ns_scsi_open != -1));
1377917SReza.Sabdar@Sun.COM if (si->nsi_scsi.ns_adapter_name)
1387917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tscsi.adapter:\t\t\"%s\"\n"),
1397917SReza.Sabdar@Sun.COM si->nsi_scsi.ns_adapter_name);
1407917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tscsi.valid target:\t%s\n"),
1417917SReza.Sabdar@Sun.COM B2S(si->nsi_scsi.ns_valid_target_set));
1427917SReza.Sabdar@Sun.COM if (si->nsi_scsi.ns_valid_target_set) {
1437917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1447917SReza.Sabdar@Sun.COM gettext("\tscsi.SID:\t\t%d\n"), si->nsi_scsi.ns_scsi_id);
1457917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1467917SReza.Sabdar@Sun.COM gettext("\tscsi.LUN:\t\t%d\n"), si->nsi_scsi.ns_lun);
1477917SReza.Sabdar@Sun.COM }
1487917SReza.Sabdar@Sun.COM }
1497917SReza.Sabdar@Sun.COM
1507917SReza.Sabdar@Sun.COM /*
1517917SReza.Sabdar@Sun.COM * Print the connection tape info.
1527917SReza.Sabdar@Sun.COM */
1537917SReza.Sabdar@Sun.COM static void
ndmp_connect_print_tape_v2(ndmp_session_info_t * si)1547917SReza.Sabdar@Sun.COM ndmp_connect_print_tape_v2(ndmp_session_info_t *si)
1557917SReza.Sabdar@Sun.COM {
1567917SReza.Sabdar@Sun.COM if (si->nsi_tape.nt_fd != -1) {
1577917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\ttape.fd:\t\t%d\n"),
1587917SReza.Sabdar@Sun.COM si->nsi_tape.nt_fd);
1597917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\ttape.record count:\t%d\n"),
1607917SReza.Sabdar@Sun.COM (int)si->nsi_tape.nt_rec_count);
1617917SReza.Sabdar@Sun.COM
1627917SReza.Sabdar@Sun.COM switch (si->nsi_tape.nt_mode) {
1637917SReza.Sabdar@Sun.COM case NDMP_TP_READ_MODE:
1647917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1657917SReza.Sabdar@Sun.COM gettext("\ttape.mode:\t\tRead-only\n"));
1667917SReza.Sabdar@Sun.COM break;
1677917SReza.Sabdar@Sun.COM case NDMP_TP_WRITE_MODE:
1687917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1697917SReza.Sabdar@Sun.COM gettext("\ttape.mode:\t\tRead/Write\n"));
1707917SReza.Sabdar@Sun.COM break;
1717917SReza.Sabdar@Sun.COM case NDMP_TP_RAW1_MODE:
1727917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1737917SReza.Sabdar@Sun.COM gettext("\ttape.mode:\t\tRaw\n"));
1747917SReza.Sabdar@Sun.COM break;
1757917SReza.Sabdar@Sun.COM default:
1767917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1777917SReza.Sabdar@Sun.COM gettext("\ttape.mode:\t\tUnknown (0x%x)\n"),
1787917SReza.Sabdar@Sun.COM si->nsi_tape.nt_mode);
1797917SReza.Sabdar@Sun.COM }
1807917SReza.Sabdar@Sun.COM
1817917SReza.Sabdar@Sun.COM if (si->nsi_tape.nt_dev_name)
1827917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1837917SReza.Sabdar@Sun.COM gettext("\ttape.device name:\t%s\n"),
1847917SReza.Sabdar@Sun.COM si->nsi_tape.nt_dev_name);
1857917SReza.Sabdar@Sun.COM if (si->nsi_tape.nt_adapter_name)
1867917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1877917SReza.Sabdar@Sun.COM gettext("\ttape.adapter name:\t\"%s\"\n"),
1887917SReza.Sabdar@Sun.COM si->nsi_tape.nt_adapter_name);
1897917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1907917SReza.Sabdar@Sun.COM gettext("\ttape.SID:\t\t%d\n"), si->nsi_tape.nt_sid);
1917917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
1927917SReza.Sabdar@Sun.COM gettext("\ttape.LUN:\t\t%d\n"), si->nsi_tape.nt_lun);
1937917SReza.Sabdar@Sun.COM } else
1947917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\ttape.device:\t\tNot open\n"));
1957917SReza.Sabdar@Sun.COM }
1967917SReza.Sabdar@Sun.COM
1977917SReza.Sabdar@Sun.COM /*
1987917SReza.Sabdar@Sun.COM * Print the connection mover info.
1997917SReza.Sabdar@Sun.COM */
2007917SReza.Sabdar@Sun.COM static void
ndmp_connect_print_mover_v2(ndmp_session_info_t * si)2017917SReza.Sabdar@Sun.COM ndmp_connect_print_mover_v2(ndmp_session_info_t *si)
2027917SReza.Sabdar@Sun.COM {
2037917SReza.Sabdar@Sun.COM switch (si->nsi_mover.nm_state) {
2047917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_IDLE:
2057917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.state:\t\tIdle\n"));
2067917SReza.Sabdar@Sun.COM break;
2077917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_LISTEN:
2087917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.state:\t\tListen\n"));
2097917SReza.Sabdar@Sun.COM break;
2107917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_ACTIVE:
2117917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.state:\t\tActive\n"));
2127917SReza.Sabdar@Sun.COM break;
2137917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_PAUSED:
2147917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.state:\t\tPaused\n"));
2157917SReza.Sabdar@Sun.COM break;
2167917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_HALTED:
2177917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.state:\t\tHalted\n"));
2187917SReza.Sabdar@Sun.COM break;
2197917SReza.Sabdar@Sun.COM default:
2207917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
2217917SReza.Sabdar@Sun.COM gettext("\tmover.state:\t\tUnknown (0x%x)\n"),
2227917SReza.Sabdar@Sun.COM si->nsi_mover.nm_state);
2237917SReza.Sabdar@Sun.COM }
2247917SReza.Sabdar@Sun.COM
2257917SReza.Sabdar@Sun.COM switch (si->nsi_mover.nm_mode) {
2267917SReza.Sabdar@Sun.COM case NDMP_MV_MODE_READ:
2277917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.mode:\t\tRead\n"));
2287917SReza.Sabdar@Sun.COM break;
2297917SReza.Sabdar@Sun.COM case NDMP_MV_MODE_WRITE:
2307917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.mode:\t\tWrite\n"));
2317917SReza.Sabdar@Sun.COM break;
2327917SReza.Sabdar@Sun.COM default:
2337917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
2347917SReza.Sabdar@Sun.COM gettext("\tmover.mode:\t\tUnknown (0x%x)\n"),
2357917SReza.Sabdar@Sun.COM si->nsi_mover.nm_mode);
2367917SReza.Sabdar@Sun.COM }
2377917SReza.Sabdar@Sun.COM
2387917SReza.Sabdar@Sun.COM switch (si->nsi_mover.nm_pause_reason) {
2397917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_NA:
2407917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.pause reason:\tN/A\n"));
2417917SReza.Sabdar@Sun.COM break;
2427917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_EOM:
2437917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.pause reason:\tEOM\n"));
2447917SReza.Sabdar@Sun.COM break;
2457917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_EOF:
2467917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.pause reason:\tEOF\n"));
2477917SReza.Sabdar@Sun.COM break;
2487917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_SEEK:
2497917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
2507917SReza.Sabdar@Sun.COM gettext("\tmover.pause reason:\tSeek\n"));
2517917SReza.Sabdar@Sun.COM break;
2527917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_MEDIA_ERROR:
2537917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
2547917SReza.Sabdar@Sun.COM gettext("\tmover.pause reason:\tMedia Error\n"));
2557917SReza.Sabdar@Sun.COM break;
2567917SReza.Sabdar@Sun.COM default:
2577917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
2587917SReza.Sabdar@Sun.COM gettext("\tmover.pause reason:\tUnknown (0x%x)\n"),
2597917SReza.Sabdar@Sun.COM si->nsi_mover.nm_pause_reason);
2607917SReza.Sabdar@Sun.COM }
2617917SReza.Sabdar@Sun.COM
2627917SReza.Sabdar@Sun.COM switch (si->nsi_mover.nm_halt_reason) {
2637917SReza.Sabdar@Sun.COM case NDMP_MV_HALT_NA:
2647917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.halt reason:\tN/A\n"));
2657917SReza.Sabdar@Sun.COM break;
2667917SReza.Sabdar@Sun.COM case NDMP_MV_HALT_CONNECT_CLOSED:
2677917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
2687917SReza.Sabdar@Sun.COM gettext("\tmover.halt reason:\tConnection closed\n"));
2697917SReza.Sabdar@Sun.COM break;
2707917SReza.Sabdar@Sun.COM case NDMP_MV_HALT_ABORTED:
2717917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
2727917SReza.Sabdar@Sun.COM gettext("\tmover.halt reason:\tAborted\n"));
2737917SReza.Sabdar@Sun.COM break;
2747917SReza.Sabdar@Sun.COM case NDMP_MV_HALT_INTERNAL_ERROR:
2757917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
2767917SReza.Sabdar@Sun.COM gettext("\tmover.halt reason:\tInternal error\n"));
2777917SReza.Sabdar@Sun.COM break;
2787917SReza.Sabdar@Sun.COM case NDMP_MV_HALT_CONNECT_ERROR:
2797917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
2807917SReza.Sabdar@Sun.COM gettext("\tmover.halt reason:\tConnection error\n"));
2817917SReza.Sabdar@Sun.COM break;
2827917SReza.Sabdar@Sun.COM default:
2837917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
2847917SReza.Sabdar@Sun.COM gettext("\tmover.halt reason:\tUnknown (0x%x)\n"),
2857917SReza.Sabdar@Sun.COM si->nsi_mover.nm_halt_reason);
2867917SReza.Sabdar@Sun.COM }
2877917SReza.Sabdar@Sun.COM
2887917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.record size:\t%d\n"),
2897917SReza.Sabdar@Sun.COM (int)si->nsi_mover.nm_rec_size);
2907917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.record number:\t%d\n"),
2917917SReza.Sabdar@Sun.COM (int)si->nsi_mover.nm_rec_num);
2927917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.pos:\t\t%lld\n"),
2937917SReza.Sabdar@Sun.COM si->nsi_mover.nm_mov_pos);
2947917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.win off:\t\t%lld\n"),
2957917SReza.Sabdar@Sun.COM si->nsi_mover.nm_window_offset);
2967917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.win len:\t\t%lld\n"),
2977917SReza.Sabdar@Sun.COM si->nsi_mover.nm_window_length);
2987917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.data socket:\t%d\n"),
2997917SReza.Sabdar@Sun.COM si->nsi_mover.nm_sock);
3007917SReza.Sabdar@Sun.COM }
3017917SReza.Sabdar@Sun.COM
3027917SReza.Sabdar@Sun.COM /*
3037917SReza.Sabdar@Sun.COM * Print the connection data info.
3047917SReza.Sabdar@Sun.COM */
3057917SReza.Sabdar@Sun.COM static void
ndmp_connect_print_data_v2(ndmp_session_info_t * si)3067917SReza.Sabdar@Sun.COM ndmp_connect_print_data_v2(ndmp_session_info_t *si)
3077917SReza.Sabdar@Sun.COM {
3087917SReza.Sabdar@Sun.COM int i;
3097917SReza.Sabdar@Sun.COM ndmp_dt_name_t *np;
3107917SReza.Sabdar@Sun.COM
3117917SReza.Sabdar@Sun.COM switch (si->nsi_data.nd_oper) {
3127917SReza.Sabdar@Sun.COM case NDMP_DT_OP_NOACTION:
3137917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.operation:\t\tNone\n"));
3147917SReza.Sabdar@Sun.COM break;
3157917SReza.Sabdar@Sun.COM case NDMP_DT_OP_BACKUP:
3167917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3177917SReza.Sabdar@Sun.COM gettext("\tdata.operation:\t\tBackup\n"));
3187917SReza.Sabdar@Sun.COM break;
3197917SReza.Sabdar@Sun.COM case NDMP_DT_OP_RECOVER:
3207917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3217917SReza.Sabdar@Sun.COM gettext("\tdata.operation:\t\tRestore\n"));
3227917SReza.Sabdar@Sun.COM break;
3237917SReza.Sabdar@Sun.COM default:
3247917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3257917SReza.Sabdar@Sun.COM gettext("\tdata.operation:\t\tUnknown (0x%x)\n"),
3267917SReza.Sabdar@Sun.COM si->nsi_data.nd_oper);
3277917SReza.Sabdar@Sun.COM }
3287917SReza.Sabdar@Sun.COM
3297917SReza.Sabdar@Sun.COM switch (si->nsi_data.nd_state) {
3307917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_IDLE:
3317917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.state:\t\tIdle\n"));
3327917SReza.Sabdar@Sun.COM break;
3337917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_ACTIVE:
3347917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.state:\t\tActive\n"));
3357917SReza.Sabdar@Sun.COM break;
3367917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_HALTED:
3377917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.state:\t\tHalted\n"));
3387917SReza.Sabdar@Sun.COM break;
3397917SReza.Sabdar@Sun.COM default:
3407917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3417917SReza.Sabdar@Sun.COM gettext("\tdata.state:\t\tUnknown (0x%x)\n"),
3427917SReza.Sabdar@Sun.COM si->nsi_data.nd_state);
3437917SReza.Sabdar@Sun.COM }
3447917SReza.Sabdar@Sun.COM
3457917SReza.Sabdar@Sun.COM switch (si->nsi_data.nd_halt_reason) {
3467917SReza.Sabdar@Sun.COM case NDMP_DT_HALT_NA:
3477917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.halt reason:\tN/A\n"));
3487917SReza.Sabdar@Sun.COM break;
3497917SReza.Sabdar@Sun.COM case NDMP_DT_HALT_SUCCESSFUL:
3507917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3517917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tSuccessful\n"));
3527917SReza.Sabdar@Sun.COM break;
3537917SReza.Sabdar@Sun.COM case NDMP_DT_HALT_ABORTED:
3547917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3557917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tAborted\n"));
3567917SReza.Sabdar@Sun.COM break;
3577917SReza.Sabdar@Sun.COM case NDMP_DT_HALT_INTERNAL_ERROR:
3587917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3597917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tInternal error\n"));
3607917SReza.Sabdar@Sun.COM break;
3617917SReza.Sabdar@Sun.COM case NDMP_DT_HALT_CONNECT_ERROR:
3627917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3637917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tConnection error\n"));
3647917SReza.Sabdar@Sun.COM break;
3657917SReza.Sabdar@Sun.COM default:
3667917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3677917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tUnknown (0x%x)\n"),
3687917SReza.Sabdar@Sun.COM si->nsi_data.nd_halt_reason);
3697917SReza.Sabdar@Sun.COM }
3707917SReza.Sabdar@Sun.COM
3717917SReza.Sabdar@Sun.COM switch (si->nsi_data.nd_addr_type) {
3727917SReza.Sabdar@Sun.COM case NDMP_AD_LOCAL:
3737917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.mover type:\tLocal\n"));
3747917SReza.Sabdar@Sun.COM break;
3757917SReza.Sabdar@Sun.COM case NDMP_AD_TCP:
3767917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.mover type:\tTCP\n"));
3777917SReza.Sabdar@Sun.COM if (si->nsi_data.nd_tcp_addr)
3787917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3797917SReza.Sabdar@Sun.COM gettext("\tdata.mover address:\t%s\n"),
3807917SReza.Sabdar@Sun.COM si->nsi_data.nd_tcp_addr);
3817917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.sock:\t%d\n"),
3827917SReza.Sabdar@Sun.COM si->nsi_data.nd_sock);
3837917SReza.Sabdar@Sun.COM break;
3847917SReza.Sabdar@Sun.COM default:
3857917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
3867917SReza.Sabdar@Sun.COM gettext("\tdata.mover type:\tUnknown (0x%x)\n"),
3877917SReza.Sabdar@Sun.COM si->nsi_data.nd_addr_type);
3887917SReza.Sabdar@Sun.COM }
3897917SReza.Sabdar@Sun.COM
3907917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.aborted:\t\t%s\n"),
3917917SReza.Sabdar@Sun.COM B2S(si->nsi_data.nd_abort));
3927917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.read offset:\t%llu\n"),
3937917SReza.Sabdar@Sun.COM si->nsi_data.nd_read_offset);
3947917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.read length:\t%llu\n"),
3957917SReza.Sabdar@Sun.COM si->nsi_data.nd_read_length);
3967917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.total size:\t%llu\n"),
3977917SReza.Sabdar@Sun.COM si->nsi_data.nd_total_size);
3987917SReza.Sabdar@Sun.COM
3997917SReza.Sabdar@Sun.COM ndmp_print_env(si);
4007917SReza.Sabdar@Sun.COM
4017917SReza.Sabdar@Sun.COM np = si->nsi_data.nd_nlist.nld_nlist;
4027917SReza.Sabdar@Sun.COM for (i = 0; np && i < (int)si->nsi_data.nld_nlist_len; i++, np++) {
4037917SReza.Sabdar@Sun.COM if ((np->nn_name) && (np->nn_dest)) {
4047917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
4057917SReza.Sabdar@Sun.COM gettext("\tdata.nlist[%d]:\tname: "
4067917SReza.Sabdar@Sun.COM "\"%s\"\n\t\tdest:\"%s\"\n"),
4077917SReza.Sabdar@Sun.COM i, np->nn_name, np->nn_dest);
4087917SReza.Sabdar@Sun.COM }
4097917SReza.Sabdar@Sun.COM }
4107917SReza.Sabdar@Sun.COM }
4117917SReza.Sabdar@Sun.COM
4127917SReza.Sabdar@Sun.COM /*
4137917SReza.Sabdar@Sun.COM * Print V2 connection info for the given category.
4147917SReza.Sabdar@Sun.COM */
4157917SReza.Sabdar@Sun.COM static void
ndmp_connect_print_v2(int cat,ndmp_session_info_t * si)4167917SReza.Sabdar@Sun.COM ndmp_connect_print_v2(int cat, ndmp_session_info_t *si)
4177917SReza.Sabdar@Sun.COM {
4187917SReza.Sabdar@Sun.COM if (cat & NDMP_CAT_SCSI)
4197917SReza.Sabdar@Sun.COM ndmp_connect_print_scsi_v2(si);
4207917SReza.Sabdar@Sun.COM if (cat & NDMP_CAT_TAPE)
4217917SReza.Sabdar@Sun.COM ndmp_connect_print_tape_v2(si);
4227917SReza.Sabdar@Sun.COM if (cat & NDMP_CAT_MOVER)
4237917SReza.Sabdar@Sun.COM ndmp_connect_print_mover_v2(si);
4247917SReza.Sabdar@Sun.COM if (cat & NDMP_CAT_DATA)
4257917SReza.Sabdar@Sun.COM ndmp_connect_print_data_v2(si);
4267917SReza.Sabdar@Sun.COM }
4277917SReza.Sabdar@Sun.COM
4287917SReza.Sabdar@Sun.COM /*
4297917SReza.Sabdar@Sun.COM * Print the V3 connection mover info.
4307917SReza.Sabdar@Sun.COM */
4317917SReza.Sabdar@Sun.COM static void
ndmp_connect_print_mover_v3(ndmp_session_info_t * si)4327917SReza.Sabdar@Sun.COM ndmp_connect_print_mover_v3(ndmp_session_info_t *si)
4337917SReza.Sabdar@Sun.COM {
4347917SReza.Sabdar@Sun.COM switch (si->nsi_mover.nm_state) {
4357917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_IDLE:
4367917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.state:\t\tIdle\n"));
4377917SReza.Sabdar@Sun.COM break;
4387917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_LISTEN:
4397917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.state:\t\tListen\n"));
4407917SReza.Sabdar@Sun.COM break;
4417917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_ACTIVE:
4427917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.state:\t\tActive\n"));
4437917SReza.Sabdar@Sun.COM break;
4447917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_PAUSED:
4457917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.state:\t\tPaused\n"));
4467917SReza.Sabdar@Sun.COM break;
4477917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_HALTED:
4487917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.state:\t\tHalted\n"));
4497917SReza.Sabdar@Sun.COM break;
4507917SReza.Sabdar@Sun.COM default:
4517917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
4527917SReza.Sabdar@Sun.COM gettext("\tmover.state:\t\tUnknown (0x%x)\n"),
4537917SReza.Sabdar@Sun.COM si->nsi_mover.nm_state);
4547917SReza.Sabdar@Sun.COM }
4557917SReza.Sabdar@Sun.COM
4567917SReza.Sabdar@Sun.COM switch (si->nsi_mover.nm_mode) {
4577917SReza.Sabdar@Sun.COM case NDMP_MV_MODE_READ:
4587917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.mode:\t\tRead\n"));
4597917SReza.Sabdar@Sun.COM break;
4607917SReza.Sabdar@Sun.COM case NDMP_MV_MODE_WRITE:
4617917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.mode:\t\tWrite\n"));
4627917SReza.Sabdar@Sun.COM break;
4637917SReza.Sabdar@Sun.COM default:
4647917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
4657917SReza.Sabdar@Sun.COM gettext("\tmover.mode:\t\tUnknown (0x%x)\n"),
4667917SReza.Sabdar@Sun.COM si->nsi_mover.nm_mode);
4677917SReza.Sabdar@Sun.COM }
4687917SReza.Sabdar@Sun.COM
4697917SReza.Sabdar@Sun.COM switch (si->nsi_mover.nm_pause_reason) {
4707917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_NA:
4717917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.pause reason:\tN/A\n"));
4727917SReza.Sabdar@Sun.COM break;
4737917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_EOM:
4747917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.pause reason:\tEOM\n"));
4757917SReza.Sabdar@Sun.COM break;
4767917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_EOF:
4777917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.pause reason:\tEOF\n"));
4787917SReza.Sabdar@Sun.COM break;
4797917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_SEEK:
4807917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
4817917SReza.Sabdar@Sun.COM gettext("\tmover.pause reason:\tSeek\n"));
4827917SReza.Sabdar@Sun.COM break;
4837917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_MEDIA_ERROR:
4847917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
4857917SReza.Sabdar@Sun.COM gettext("\tmover.pause reason:\tMedia Error\n"));
4867917SReza.Sabdar@Sun.COM break;
4877917SReza.Sabdar@Sun.COM case NDMP_MV_PAUSE_EOW:
4887917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.pause reason:\tEOW\n"));
4897917SReza.Sabdar@Sun.COM break;
4907917SReza.Sabdar@Sun.COM default:
4917917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
4927917SReza.Sabdar@Sun.COM gettext("\tmover.pause reason:\tUnknown (0x%x)\n"),
4937917SReza.Sabdar@Sun.COM si->nsi_mover.nm_pause_reason);
4947917SReza.Sabdar@Sun.COM }
4957917SReza.Sabdar@Sun.COM
4967917SReza.Sabdar@Sun.COM switch (si->nsi_mover.nm_halt_reason) {
4977917SReza.Sabdar@Sun.COM case NDMP_MV_HALT_NA:
4987917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.halt reason:\tN/A\n"));
4997917SReza.Sabdar@Sun.COM break;
5007917SReza.Sabdar@Sun.COM case NDMP_MV_HALT_CONNECT_CLOSED:
5017917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
5027917SReza.Sabdar@Sun.COM gettext("\tmover.halt reason:\tConnection closed\n"));
5037917SReza.Sabdar@Sun.COM break;
5047917SReza.Sabdar@Sun.COM case NDMP_MV_HALT_ABORTED:
5057917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
5067917SReza.Sabdar@Sun.COM gettext("\tmover.halt reason:\tAborted\n"));
5077917SReza.Sabdar@Sun.COM break;
5087917SReza.Sabdar@Sun.COM case NDMP_MV_HALT_INTERNAL_ERROR:
5097917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
5107917SReza.Sabdar@Sun.COM gettext("\tmover.halt reason:\tInternal error\n"));
5117917SReza.Sabdar@Sun.COM break;
5127917SReza.Sabdar@Sun.COM case NDMP_MV_HALT_CONNECT_ERROR:
5137917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
5147917SReza.Sabdar@Sun.COM gettext("\tmover.halt reason:\tConnection error\n"));
5157917SReza.Sabdar@Sun.COM break;
5167917SReza.Sabdar@Sun.COM default:
5177917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
5187917SReza.Sabdar@Sun.COM gettext("\tmover.halt reason:\tUnknown (0x%x)\n"),
5197917SReza.Sabdar@Sun.COM si->nsi_mover.nm_halt_reason);
5207917SReza.Sabdar@Sun.COM }
5217917SReza.Sabdar@Sun.COM
5227917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.record size:\t%d\n"),
5237917SReza.Sabdar@Sun.COM (int)si->nsi_mover.nm_rec_size);
5247917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.record number:\t%d\n"),
5257917SReza.Sabdar@Sun.COM (int)si->nsi_mover.nm_rec_num);
5267917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.pos:\t\t%lld\n"),
5277917SReza.Sabdar@Sun.COM si->nsi_mover.nm_mov_pos, si->nsi_mover.nm_mov_pos);
5287917SReza.Sabdar@Sun.COM
5297917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.win len:\t\t%lld\n"),
5307917SReza.Sabdar@Sun.COM si->nsi_mover.nm_window_length, si->nsi_mover.nm_window_length);
5317917SReza.Sabdar@Sun.COM
5327917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.win off:\t\t%lld\n"),
5337917SReza.Sabdar@Sun.COM si->nsi_mover.nm_window_offset);
5347917SReza.Sabdar@Sun.COM switch (si->nsi_mover.nm_state) {
5357917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_IDLE:
5367917SReza.Sabdar@Sun.COM if (si->nsi_mover.nm_listen_sock != -1)
5377917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
5387917SReza.Sabdar@Sun.COM gettext("\tmover.listenSock:\t%d\n"),
5397917SReza.Sabdar@Sun.COM si->nsi_mover.nm_listen_sock);
5407917SReza.Sabdar@Sun.COM if (si->nsi_mover.nm_sock != -1)
5417917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.sock:\t%d\n"),
5427917SReza.Sabdar@Sun.COM si->nsi_mover.nm_sock);
5437917SReza.Sabdar@Sun.COM break;
5447917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_LISTEN:
5457917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.listen socket:\t%d\n"),
5467917SReza.Sabdar@Sun.COM si->nsi_mover.nm_listen_sock);
5477917SReza.Sabdar@Sun.COM ndmp_tprint_addr(gettext("mover.listen"),
5487917SReza.Sabdar@Sun.COM si->nsi_mover.nm_addr_type, si->nsi_mover.nm_tcp_addr);
5497917SReza.Sabdar@Sun.COM break;
5507917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_ACTIVE:
5517917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_PAUSED:
5527917SReza.Sabdar@Sun.COM case NDMP_MV_STATE_HALTED:
5537917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tmover.data socket:\t%d\n"),
5547917SReza.Sabdar@Sun.COM si->nsi_mover.nm_sock);
5557917SReza.Sabdar@Sun.COM ndmp_tprint_addr(gettext("mover.data connection"),
5567917SReza.Sabdar@Sun.COM si->nsi_mover.nm_addr_type, si->nsi_mover.nm_tcp_addr);
5577917SReza.Sabdar@Sun.COM break;
5587917SReza.Sabdar@Sun.COM }
5597917SReza.Sabdar@Sun.COM }
5607917SReza.Sabdar@Sun.COM
5617917SReza.Sabdar@Sun.COM /*
5627917SReza.Sabdar@Sun.COM * Print the connection data info.
5637917SReza.Sabdar@Sun.COM */
5647917SReza.Sabdar@Sun.COM static void
ndmp_connect_print_data_v3(ndmp_session_info_t * si)5657917SReza.Sabdar@Sun.COM ndmp_connect_print_data_v3(ndmp_session_info_t *si)
5667917SReza.Sabdar@Sun.COM {
5677917SReza.Sabdar@Sun.COM int i;
5687917SReza.Sabdar@Sun.COM ndmp_dt_name_v3_t *np;
5697917SReza.Sabdar@Sun.COM
5707917SReza.Sabdar@Sun.COM switch (si->nsi_data.nd_oper) {
5717917SReza.Sabdar@Sun.COM case NDMP_DT_OP_NOACTION:
5727917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.operation:\t\tNone\n"));
5737917SReza.Sabdar@Sun.COM break;
5747917SReza.Sabdar@Sun.COM case NDMP_DT_OP_BACKUP:
5757917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
5767917SReza.Sabdar@Sun.COM gettext("\tdata.operation:\t\tBackup\n"));
5777917SReza.Sabdar@Sun.COM break;
5787917SReza.Sabdar@Sun.COM case NDMP_DT_OP_RECOVER:
5797917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
5807917SReza.Sabdar@Sun.COM gettext("\tdata.operation:\t\tRestore\n"));
5817917SReza.Sabdar@Sun.COM break;
5827917SReza.Sabdar@Sun.COM default:
5837917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
5847917SReza.Sabdar@Sun.COM gettext("\tdata.operation:\t\tUnknown (0x%x)\n"),
5857917SReza.Sabdar@Sun.COM si->nsi_data.nd_oper);
5867917SReza.Sabdar@Sun.COM }
5877917SReza.Sabdar@Sun.COM
5887917SReza.Sabdar@Sun.COM switch (si->nsi_data.nd_state) {
5897917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_IDLE:
5907917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.state:\t\tIdle\n"));
5917917SReza.Sabdar@Sun.COM break;
5927917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_ACTIVE:
5937917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.state:\t\tActive\n"));
5947917SReza.Sabdar@Sun.COM break;
5957917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_HALTED:
5967917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.state:\t\tHalted\n"));
5977917SReza.Sabdar@Sun.COM break;
5987917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_LISTEN:
5997917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.state:\t\tListen\n"));
6007917SReza.Sabdar@Sun.COM break;
6017917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_CONNECTED:
6027917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.state:\t\tConnected\n"));
6037917SReza.Sabdar@Sun.COM break;
6047917SReza.Sabdar@Sun.COM default:
6057917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6067917SReza.Sabdar@Sun.COM gettext("\tdata.state:\t\tUnknown (0x%x)\n"),
6077917SReza.Sabdar@Sun.COM si->nsi_data.nd_state);
6087917SReza.Sabdar@Sun.COM }
6097917SReza.Sabdar@Sun.COM
6107917SReza.Sabdar@Sun.COM switch (si->nsi_data.nd_halt_reason) {
6117917SReza.Sabdar@Sun.COM case NDMP_DT_HALT_NA:
6127917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6137917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tN/A\n"));
6147917SReza.Sabdar@Sun.COM break;
6157917SReza.Sabdar@Sun.COM case NDMP_DT_HALT_SUCCESSFUL:
6167917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6177917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tSuccessful\n"));
6187917SReza.Sabdar@Sun.COM break;
6197917SReza.Sabdar@Sun.COM case NDMP_DT_HALT_ABORTED:
6207917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6217917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tAborted\n"));
6227917SReza.Sabdar@Sun.COM break;
6237917SReza.Sabdar@Sun.COM case NDMP_DT_HALT_INTERNAL_ERROR:
6247917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6257917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tInternal error\n"));
6267917SReza.Sabdar@Sun.COM break;
6277917SReza.Sabdar@Sun.COM case NDMP_DT_HALT_CONNECT_ERROR:
6287917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6297917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tConnection error\n"));
6307917SReza.Sabdar@Sun.COM break;
6317917SReza.Sabdar@Sun.COM default:
6327917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6337917SReza.Sabdar@Sun.COM gettext("\tdata.halt reason:\tUnknown (0x%x)\n"),
6347917SReza.Sabdar@Sun.COM si->nsi_data.nd_halt_reason);
6357917SReza.Sabdar@Sun.COM }
6367917SReza.Sabdar@Sun.COM
6377917SReza.Sabdar@Sun.COM switch (si->nsi_data.nd_state) {
6387917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_IDLE:
6397917SReza.Sabdar@Sun.COM if (si->nsi_data.nd_sock != -1)
6407917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6417917SReza.Sabdar@Sun.COM gettext("\tdata.data socket:\t%d\n"),
6427917SReza.Sabdar@Sun.COM si->nsi_data.nd_sock);
6437917SReza.Sabdar@Sun.COM if (si->nsi_data.nd_nlist.nld_dt_v3.dv3_listen_sock != -1)
6447917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6457917SReza.Sabdar@Sun.COM gettext("\tdata.data socket:\t%d\n"),
6467917SReza.Sabdar@Sun.COM si->nsi_data.nd_nlist.nld_dt_v3.dv3_listen_sock);
6477917SReza.Sabdar@Sun.COM break;
6487917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_LISTEN:
6497917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.listen socket:\t%d\n"),
6507917SReza.Sabdar@Sun.COM si->nsi_data.nd_nlist.nld_dt_v3.dv3_listen_sock);
6517917SReza.Sabdar@Sun.COM ndmp_tprint_addr(gettext("data.listen"),
6527917SReza.Sabdar@Sun.COM si->nsi_data.nd_addr_type, si->nsi_data.nd_tcp_addr);
6537917SReza.Sabdar@Sun.COM break;
6547917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_ACTIVE:
6557917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_HALTED:
6567917SReza.Sabdar@Sun.COM case NDMP_DT_STATE_CONNECTED:
6577917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.data socket:\t%d\n"),
6587917SReza.Sabdar@Sun.COM si->nsi_data.nd_sock);
6597917SReza.Sabdar@Sun.COM ndmp_tprint_addr(gettext("data.data"),
6607917SReza.Sabdar@Sun.COM si->nsi_data.nd_addr_type, si->nsi_data.nd_tcp_addr);
6617917SReza.Sabdar@Sun.COM break;
6627917SReza.Sabdar@Sun.COM }
6637917SReza.Sabdar@Sun.COM
6647917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.aborted:\t\t%s\n"),
6657917SReza.Sabdar@Sun.COM B2S(si->nsi_data.nd_abort));
6667917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.read offset:\t%llu\n"),
6677917SReza.Sabdar@Sun.COM si->nsi_data.nd_read_offset);
6687917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.read length:\t%llu\n"),
6697917SReza.Sabdar@Sun.COM si->nsi_data.nd_read_length);
6707917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.total size:\t%llu\n"),
6717917SReza.Sabdar@Sun.COM si->nsi_data.nd_total_size);
6727917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6737917SReza.Sabdar@Sun.COM gettext("\tdata.bytes processed:\t%lld\n"),
6747917SReza.Sabdar@Sun.COM si->nsi_data.nd_nlist.nld_dt_v3.dv3_bytes_processed);
6757917SReza.Sabdar@Sun.COM
6767917SReza.Sabdar@Sun.COM ndmp_print_env(si);
6777917SReza.Sabdar@Sun.COM
6787917SReza.Sabdar@Sun.COM np = si->nsi_data.nd_nlist.nld_dt_v3.dv3_nlist;
6797917SReza.Sabdar@Sun.COM for (i = 0; np && i < si->nsi_data.nld_nlist_len; i++, np++) {
6807917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\tdata.nlist[%d]:\tname:\n"),
6817917SReza.Sabdar@Sun.COM i);
6827917SReza.Sabdar@Sun.COM if (np->nn3_opath)
6837917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6847917SReza.Sabdar@Sun.COM gettext("\t\torig: \"%s\"\n"), np->nn3_opath);
6857917SReza.Sabdar@Sun.COM if (np->nn3_dpath)
6867917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6877917SReza.Sabdar@Sun.COM gettext("\t\tdest: \"%s\"\n"), np->nn3_dpath);
6887917SReza.Sabdar@Sun.COM else
6897917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\t\tdest:\n"));
6907917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
6917917SReza.Sabdar@Sun.COM gettext("\t\tnode: %lld\n"), np->nn3_node);
6927917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("\t\tfh_info: %lld\n"),
6937917SReza.Sabdar@Sun.COM np->nn3_fh_info);
6947917SReza.Sabdar@Sun.COM }
6957917SReza.Sabdar@Sun.COM }
6967917SReza.Sabdar@Sun.COM
6977917SReza.Sabdar@Sun.COM /*
6987917SReza.Sabdar@Sun.COM * Print V3 connection info for given category.
6997917SReza.Sabdar@Sun.COM */
7007917SReza.Sabdar@Sun.COM static void
ndmp_connect_print_v3(int cat,ndmp_session_info_t * si)7017917SReza.Sabdar@Sun.COM ndmp_connect_print_v3(int cat, ndmp_session_info_t *si)
7027917SReza.Sabdar@Sun.COM {
7037917SReza.Sabdar@Sun.COM if (cat & NDMP_CAT_SCSI)
7047917SReza.Sabdar@Sun.COM ndmp_connect_print_scsi_v2(si);
7057917SReza.Sabdar@Sun.COM if (cat & NDMP_CAT_TAPE)
7067917SReza.Sabdar@Sun.COM ndmp_connect_print_tape_v2(si);
7077917SReza.Sabdar@Sun.COM if (cat & NDMP_CAT_MOVER)
7087917SReza.Sabdar@Sun.COM ndmp_connect_print_mover_v3(si);
7097917SReza.Sabdar@Sun.COM if (cat & NDMP_CAT_DATA)
7107917SReza.Sabdar@Sun.COM ndmp_connect_print_data_v3(si);
7117917SReza.Sabdar@Sun.COM }
7127917SReza.Sabdar@Sun.COM
7137917SReza.Sabdar@Sun.COM /*
7147917SReza.Sabdar@Sun.COM * Print the list of all active sessions to the clients. For each version,
7157917SReza.Sabdar@Sun.COM * call the appropriate print function.
7167917SReza.Sabdar@Sun.COM */
7177917SReza.Sabdar@Sun.COM static void
ndmp_connection_print(int cat,ndmp_session_info_t * si)7187917SReza.Sabdar@Sun.COM ndmp_connection_print(int cat, ndmp_session_info_t *si)
7197917SReza.Sabdar@Sun.COM {
7207917SReza.Sabdar@Sun.COM switch (si->nsi_pver) {
7217917SReza.Sabdar@Sun.COM case NDMP_V2:
7227917SReza.Sabdar@Sun.COM ndmp_connect_print_conn(si);
7237917SReza.Sabdar@Sun.COM ndmp_connect_print_v2(cat, si);
7247917SReza.Sabdar@Sun.COM break;
7257917SReza.Sabdar@Sun.COM case NDMP_V3:
7267917SReza.Sabdar@Sun.COM case NDMP_V4:
7277917SReza.Sabdar@Sun.COM ndmp_connect_print_conn(si);
7287917SReza.Sabdar@Sun.COM ndmp_connect_print_v3(cat, si);
7297917SReza.Sabdar@Sun.COM break;
7307917SReza.Sabdar@Sun.COM default:
7317917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
7327917SReza.Sabdar@Sun.COM gettext("Invalid version %d"), si->nsi_pver);
7337917SReza.Sabdar@Sun.COM }
7347917SReza.Sabdar@Sun.COM }
7357917SReza.Sabdar@Sun.COM
7367917SReza.Sabdar@Sun.COM /*
7377917SReza.Sabdar@Sun.COM * Print the list of all active sessions to the clients.
7387917SReza.Sabdar@Sun.COM */
7397917SReza.Sabdar@Sun.COM void
ndmp_session_all_print(int cat,ndmp_session_info_t * si,size_t num)7407917SReza.Sabdar@Sun.COM ndmp_session_all_print(int cat, ndmp_session_info_t *si, size_t num)
7417917SReza.Sabdar@Sun.COM {
7427917SReza.Sabdar@Sun.COM int i;
7437917SReza.Sabdar@Sun.COM ndmp_session_info_t *sp;
7447917SReza.Sabdar@Sun.COM
7457917SReza.Sabdar@Sun.COM sp = si;
7467917SReza.Sabdar@Sun.COM for (i = 0; i < num; i++, sp++) {
7477917SReza.Sabdar@Sun.COM ndmp_connection_print(cat, sp);
7487917SReza.Sabdar@Sun.COM (void) fprintf(stdout, "\n");
7497917SReza.Sabdar@Sun.COM }
7507917SReza.Sabdar@Sun.COM
7517917SReza.Sabdar@Sun.COM if (num == 0) {
7527917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("No active session.\n"));
7537917SReza.Sabdar@Sun.COM } else {
7547917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("%d active sessions.\n"), num);
7557917SReza.Sabdar@Sun.COM }
7567917SReza.Sabdar@Sun.COM }
7577917SReza.Sabdar@Sun.COM
7587917SReza.Sabdar@Sun.COM /*
7597917SReza.Sabdar@Sun.COM * Print the connection information for the given category.
7607917SReza.Sabdar@Sun.COM */
7617917SReza.Sabdar@Sun.COM void
ndmp_session_print(int cat,ndmp_session_info_t * si)7627917SReza.Sabdar@Sun.COM ndmp_session_print(int cat, ndmp_session_info_t *si)
7637917SReza.Sabdar@Sun.COM {
7647917SReza.Sabdar@Sun.COM ndmp_connection_print(cat, si);
7657917SReza.Sabdar@Sun.COM }
7667917SReza.Sabdar@Sun.COM
7677917SReza.Sabdar@Sun.COM void
ndmp_devinfo_print(ndmp_devinfo_t * dip,size_t size)7687917SReza.Sabdar@Sun.COM ndmp_devinfo_print(ndmp_devinfo_t *dip, size_t size)
7697917SReza.Sabdar@Sun.COM {
7707917SReza.Sabdar@Sun.COM int i;
7717917SReza.Sabdar@Sun.COM
7727917SReza.Sabdar@Sun.COM if (dip == NULL) {
7737917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("No device attached.\n"));
7747917SReza.Sabdar@Sun.COM return;
7757917SReza.Sabdar@Sun.COM }
7767917SReza.Sabdar@Sun.COM
7777917SReza.Sabdar@Sun.COM for (i = 0; i < size; i++, dip++) {
778*13024SRandall.Ralphs@Sun.COM /*
779*13024SRandall.Ralphs@Sun.COM * Don't print dead links.
780*13024SRandall.Ralphs@Sun.COM */
781*13024SRandall.Ralphs@Sun.COM if ((access(dip->nd_name, F_OK) == -1) && (errno == ENOENT))
782*13024SRandall.Ralphs@Sun.COM continue;
7837917SReza.Sabdar@Sun.COM switch (dip->nd_dev_type) {
7847917SReza.Sabdar@Sun.COM case NDMP_SINQ_TAPE_ROBOT:
7857917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("Robot (Changer):\n"));
7867917SReza.Sabdar@Sun.COM break;
7877917SReza.Sabdar@Sun.COM case NDMP_SINQ_SEQ_ACCESS_DEVICE:
7887917SReza.Sabdar@Sun.COM (void) fprintf(stdout, gettext("Tape drive(s):\n"));
7897917SReza.Sabdar@Sun.COM break;
7907917SReza.Sabdar@Sun.COM }
7917917SReza.Sabdar@Sun.COM if (dip->nd_name)
7927917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
7937917SReza.Sabdar@Sun.COM gettext("\tName : %s\n"), dip->nd_name);
7947917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
7957917SReza.Sabdar@Sun.COM gettext("\tLUN # : %d\n"), dip->nd_lun);
7967917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
7977917SReza.Sabdar@Sun.COM gettext("\tSCSI ID # : %d\n"), dip->nd_sid);
7987917SReza.Sabdar@Sun.COM if (dip->nd_vendor)
7997917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
8007917SReza.Sabdar@Sun.COM gettext("\tVendor : %s\n"), dip->nd_vendor);
8017917SReza.Sabdar@Sun.COM if (dip->nd_product)
8027917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
8037917SReza.Sabdar@Sun.COM gettext("\tProduct : %s\n"), dip->nd_product);
8047917SReza.Sabdar@Sun.COM if (dip->nd_revision)
8057917SReza.Sabdar@Sun.COM (void) fprintf(stdout,
8067917SReza.Sabdar@Sun.COM gettext("\tRevision : %s\n"), dip->nd_revision);
8078193SReza.Sabdar@Sun.COM if (dip->nd_serial)
8088193SReza.Sabdar@Sun.COM (void) fprintf(stdout,
8098193SReza.Sabdar@Sun.COM gettext("\tSerial : %s\n"), dip->nd_serial);
8108193SReza.Sabdar@Sun.COM if (dip->nd_wwn)
8118193SReza.Sabdar@Sun.COM (void) fprintf(stdout,
8128193SReza.Sabdar@Sun.COM gettext("\tWWN : %s\n"), dip->nd_wwn);
8137917SReza.Sabdar@Sun.COM (void) fprintf(stdout, "\n");
8147917SReza.Sabdar@Sun.COM }
8157917SReza.Sabdar@Sun.COM }
816