2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
e461e790745fa2b2374e5734984107c7672c6c49Randall Ralphs * Copyright (c) 2007, 2010, Oracle and/or its affiliates. All rights reserved.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * BSD 3 Clause License
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar *
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Copyright (c) 2007, The Storage Networking Industry Association.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar *
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Redistribution and use in source and binary forms, with or without
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * modification, are permitted provided that the following conditions
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * are met:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * - Redistributions of source code must retain the above copyright
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * notice, this list of conditions and the following disclaimer.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar *
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * - Redistributions in binary form must reproduce the above copyright
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * notice, this list of conditions and the following disclaimer in
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * the documentation and/or other materials provided with the
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * distribution.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar *
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * - Neither the name of The Storage Networking Industry Association (SNIA)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * nor the names of its contributors may be used to endorse or promote
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * products derived from this software without specific prior written
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * permission.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar *
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * POSSIBILITY OF SUCH DAMAGE.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar#include <stdio.h>
e461e790745fa2b2374e5734984107c7672c6c49Randall Ralphs#include <unistd.h>
e461e790745fa2b2374e5734984107c7672c6c49Randall Ralphs#include <errno.h>
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar#include <locale.h>
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar#include <libndmp.h>
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar#include "ndmpadm.h"
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/* static functions prototype */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_tprint_addr(char *, ndmp_ad_type_t, char *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_print_env(ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_connect_print_conn(ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_connect_print_scsi_v2(ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_connect_print_tape_v2(ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_connect_print_mover_v2(ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_connect_print_data_v2(ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_connect_print_v2(int, ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_connect_print_mover_v3(ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_connect_print_data_v3(ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_connect_print_v3(int, ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void ndmp_connection_print(int, ndmp_session_info_t *);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/* Boolean to string. */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar#define B2S(b) ((b) ? "Yes" : "No")
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print the address type and IP address if the address type is tcp
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_tprint_addr(char *label, ndmp_ad_type_t addr_type, char *tcp_addr)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if ((label == NULL) || (tcp_addr == NULL))
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar return;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (addr_type) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_AD_LOCAL:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\t%s type:\tLocal\n"), label);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_AD_TCP:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\t%s type:\tTCP\n"), label);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\t%s address:\t%s\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar label, tcp_addr);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_AD_FC:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\t%s type:\tFC\n"), label);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_AD_IPC:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\t%s type:\tIPC\n"), label);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\t%s addr type unknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar label, addr_type);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print all the data environment variables for the active session
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_print_env(ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar int i, n;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_dt_pval_t *ep;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar n = si->nsi_data.nd_env_len;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ep = si->nsi_data.nd_env;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar for (i = 0; ep && i < n; i++, ep++) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.env[%d]:\t%s: "),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar i, ep->np_name);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if ((ep->np_value != NULL) && (*ep->np_value != NULL))
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, "\"%s\"\n", ep->np_value);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print common fields of the active connection.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_connect_print_conn(ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tSession Id:\t%d\n"), si->nsi_sid);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tProtocol version:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_pver);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tAuthenticated:\t\t%s\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar B2S(si->nsi_auth));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tEOF:\t\t\t%s\n"), B2S(si->nsi_eof));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_cl_addr != NULL)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tClient address:\t\t%s\n"), si->nsi_cl_addr);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print the connection SCSI info.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_connect_print_scsi_v2(ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tscsi.open:\t\t%s\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar B2S(si->nsi_scsi.ns_scsi_open != -1));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_scsi.ns_adapter_name)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tscsi.adapter:\t\t\"%s\"\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_scsi.ns_adapter_name);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tscsi.valid target:\t%s\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar B2S(si->nsi_scsi.ns_valid_target_set));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_scsi.ns_valid_target_set) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tscsi.SID:\t\t%d\n"), si->nsi_scsi.ns_scsi_id);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tscsi.LUN:\t\t%d\n"), si->nsi_scsi.ns_lun);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print the connection tape info.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_connect_print_tape_v2(ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_tape.nt_fd != -1) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\ttape.fd:\t\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_tape.nt_fd);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\ttape.record count:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (int)si->nsi_tape.nt_rec_count);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_tape.nt_mode) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_TP_READ_MODE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\ttape.mode:\t\tRead-only\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_TP_WRITE_MODE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\ttape.mode:\t\tRead/Write\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_TP_RAW1_MODE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\ttape.mode:\t\tRaw\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\ttape.mode:\t\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_tape.nt_mode);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_tape.nt_dev_name)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\ttape.device name:\t%s\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_tape.nt_dev_name);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_tape.nt_adapter_name)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\ttape.adapter name:\t\"%s\"\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_tape.nt_adapter_name);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\ttape.SID:\t\t%d\n"), si->nsi_tape.nt_sid);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\ttape.LUN:\t\t%d\n"), si->nsi_tape.nt_lun);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar } else
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\ttape.device:\t\tNot open\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print the connection mover info.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_connect_print_mover_v2(ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_mover.nm_state) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_IDLE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.state:\t\tIdle\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_LISTEN:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.state:\t\tListen\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_ACTIVE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.state:\t\tActive\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_PAUSED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.state:\t\tPaused\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_HALTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.state:\t\tHalted\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.state:\t\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_state);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_mover.nm_mode) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_MODE_READ:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.mode:\t\tRead\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_MODE_WRITE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.mode:\t\tWrite\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.mode:\t\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_mode);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_mover.nm_pause_reason) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_NA:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.pause reason:\tN/A\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_EOM:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.pause reason:\tEOM\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_EOF:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.pause reason:\tEOF\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_SEEK:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.pause reason:\tSeek\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_MEDIA_ERROR:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.pause reason:\tMedia Error\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.pause reason:\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_pause_reason);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_mover.nm_halt_reason) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_HALT_NA:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.halt reason:\tN/A\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_HALT_CONNECT_CLOSED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.halt reason:\tConnection closed\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_HALT_ABORTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.halt reason:\tAborted\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_HALT_INTERNAL_ERROR:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.halt reason:\tInternal error\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_HALT_CONNECT_ERROR:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.halt reason:\tConnection error\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.halt reason:\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_halt_reason);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.record size:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (int)si->nsi_mover.nm_rec_size);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.record number:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (int)si->nsi_mover.nm_rec_num);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.pos:\t\t%lld\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_mov_pos);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.win off:\t\t%lld\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_window_offset);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.win len:\t\t%lld\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_window_length);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.data socket:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_sock);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print the connection data info.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_connect_print_data_v2(ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar int i;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_dt_name_t *np;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_data.nd_oper) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_OP_NOACTION:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.operation:\t\tNone\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_OP_BACKUP:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.operation:\t\tBackup\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_OP_RECOVER:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.operation:\t\tRestore\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.operation:\t\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_oper);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_data.nd_state) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_IDLE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.state:\t\tIdle\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_ACTIVE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.state:\t\tActive\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_HALTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.state:\t\tHalted\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.state:\t\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_state);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_data.nd_halt_reason) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_HALT_NA:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.halt reason:\tN/A\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_HALT_SUCCESSFUL:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tSuccessful\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_HALT_ABORTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tAborted\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_HALT_INTERNAL_ERROR:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tInternal error\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_HALT_CONNECT_ERROR:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tConnection error\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_halt_reason);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_data.nd_addr_type) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_AD_LOCAL:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.mover type:\tLocal\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_AD_TCP:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.mover type:\tTCP\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_data.nd_tcp_addr)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.mover address:\t%s\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_tcp_addr);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.sock:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_sock);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.mover type:\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_addr_type);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.aborted:\t\t%s\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar B2S(si->nsi_data.nd_abort));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.read offset:\t%llu\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_read_offset);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.read length:\t%llu\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_read_length);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.total size:\t%llu\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_total_size);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_print_env(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar np = si->nsi_data.nd_nlist.nld_nlist;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar for (i = 0; np && i < (int)si->nsi_data.nld_nlist_len; i++, np++) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if ((np->nn_name) && (np->nn_dest)) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.nlist[%d]:\tname: "
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar "\"%s\"\n\t\tdest:\"%s\"\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar i, np->nn_name, np->nn_dest);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print V2 connection info for the given category.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_connect_print_v2(int cat, ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (cat & NDMP_CAT_SCSI)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_scsi_v2(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (cat & NDMP_CAT_TAPE)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_tape_v2(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (cat & NDMP_CAT_MOVER)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_mover_v2(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (cat & NDMP_CAT_DATA)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_data_v2(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print the V3 connection mover info.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_connect_print_mover_v3(ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_mover.nm_state) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_IDLE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.state:\t\tIdle\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_LISTEN:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.state:\t\tListen\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_ACTIVE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.state:\t\tActive\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_PAUSED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.state:\t\tPaused\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_HALTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.state:\t\tHalted\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.state:\t\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_state);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_mover.nm_mode) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_MODE_READ:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.mode:\t\tRead\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_MODE_WRITE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.mode:\t\tWrite\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.mode:\t\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_mode);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_mover.nm_pause_reason) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_NA:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.pause reason:\tN/A\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_EOM:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.pause reason:\tEOM\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_EOF:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.pause reason:\tEOF\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_SEEK:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.pause reason:\tSeek\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_MEDIA_ERROR:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.pause reason:\tMedia Error\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_PAUSE_EOW:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.pause reason:\tEOW\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.pause reason:\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_pause_reason);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_mover.nm_halt_reason) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_HALT_NA:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.halt reason:\tN/A\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_HALT_CONNECT_CLOSED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.halt reason:\tConnection closed\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_HALT_ABORTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.halt reason:\tAborted\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_HALT_INTERNAL_ERROR:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.halt reason:\tInternal error\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_HALT_CONNECT_ERROR:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.halt reason:\tConnection error\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.halt reason:\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_halt_reason);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.record size:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (int)si->nsi_mover.nm_rec_size);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.record number:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (int)si->nsi_mover.nm_rec_num);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.pos:\t\t%lld\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_mov_pos, si->nsi_mover.nm_mov_pos);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.win len:\t\t%lld\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_window_length, si->nsi_mover.nm_window_length);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.win off:\t\t%lld\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_window_offset);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_mover.nm_state) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_IDLE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_mover.nm_listen_sock != -1)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tmover.listenSock:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_listen_sock);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_mover.nm_sock != -1)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.sock:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_sock);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_LISTEN:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.listen socket:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_listen_sock);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_tprint_addr(gettext("mover.listen"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_addr_type, si->nsi_mover.nm_tcp_addr);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_ACTIVE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_PAUSED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_MV_STATE_HALTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tmover.data socket:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_sock);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_tprint_addr(gettext("mover.data connection"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_mover.nm_addr_type, si->nsi_mover.nm_tcp_addr);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print the connection data info.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_connect_print_data_v3(ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar int i;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_dt_name_v3_t *np;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_data.nd_oper) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_OP_NOACTION:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.operation:\t\tNone\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_OP_BACKUP:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.operation:\t\tBackup\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_OP_RECOVER:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.operation:\t\tRestore\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.operation:\t\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_oper);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_data.nd_state) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_IDLE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.state:\t\tIdle\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_ACTIVE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.state:\t\tActive\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_HALTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.state:\t\tHalted\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_LISTEN:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.state:\t\tListen\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_CONNECTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.state:\t\tConnected\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.state:\t\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_state);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_data.nd_halt_reason) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_HALT_NA:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tN/A\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_HALT_SUCCESSFUL:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tSuccessful\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_HALT_ABORTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tAborted\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_HALT_INTERNAL_ERROR:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tInternal error\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_HALT_CONNECT_ERROR:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tConnection error\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.halt reason:\tUnknown (0x%x)\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_halt_reason);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_data.nd_state) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_IDLE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_data.nd_sock != -1)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.data socket:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_sock);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (si->nsi_data.nd_nlist.nld_dt_v3.dv3_listen_sock != -1)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.data socket:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_nlist.nld_dt_v3.dv3_listen_sock);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_LISTEN:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.listen socket:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_nlist.nld_dt_v3.dv3_listen_sock);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_tprint_addr(gettext("data.listen"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_addr_type, si->nsi_data.nd_tcp_addr);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_ACTIVE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_HALTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_DT_STATE_CONNECTED:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.data socket:\t%d\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_sock);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_tprint_addr(gettext("data.data"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_addr_type, si->nsi_data.nd_tcp_addr);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.aborted:\t\t%s\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar B2S(si->nsi_data.nd_abort));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.read offset:\t%llu\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_read_offset);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.read length:\t%llu\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_read_length);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.total size:\t%llu\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_total_size);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tdata.bytes processed:\t%lld\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar si->nsi_data.nd_nlist.nld_dt_v3.dv3_bytes_processed);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_print_env(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar np = si->nsi_data.nd_nlist.nld_dt_v3.dv3_nlist;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar for (i = 0; np && i < si->nsi_data.nld_nlist_len; i++, np++) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\tdata.nlist[%d]:\tname:\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar i);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (np->nn3_opath)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\t\torig: \"%s\"\n"), np->nn3_opath);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (np->nn3_dpath)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\t\tdest: \"%s\"\n"), np->nn3_dpath);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar else
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\t\tdest:\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\t\tnode: %lld\n"), np->nn3_node);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("\t\tfh_info: %lld\n"),
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar np->nn3_fh_info);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print V3 connection info for given category.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_connect_print_v3(int cat, ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (cat & NDMP_CAT_SCSI)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_scsi_v2(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (cat & NDMP_CAT_TAPE)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_tape_v2(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (cat & NDMP_CAT_MOVER)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_mover_v3(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (cat & NDMP_CAT_DATA)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_data_v3(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print the list of all active sessions to the clients. For each version,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * call the appropriate print function.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarstatic void
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_connection_print(int cat, ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (si->nsi_pver) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_V2:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_conn(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_v2(cat, si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_V3:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_V4:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_conn(si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connect_print_v3(cat, si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar default:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("Invalid version %d"), si->nsi_pver);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print the list of all active sessions to the clients.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarvoid
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_session_all_print(int cat, ndmp_session_info_t *si, size_t num)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar int i;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_session_info_t *sp;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar sp = si;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar for (i = 0; i < num; i++, sp++) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connection_print(cat, sp);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, "\n");
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (num == 0) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("No active session.\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar } else {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("%d active sessions.\n"), num);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar/*
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar * Print the connection information for the given category.
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar */
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarvoid
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_session_print(int cat, ndmp_session_info_t *si)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar ndmp_connection_print(cat, si);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarvoid
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdarndmp_devinfo_print(ndmp_devinfo_t *dip, size_t size)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar{
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar int i;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (dip == NULL) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("No device attached.\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar return;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar for (i = 0; i < size; i++, dip++) {
e461e790745fa2b2374e5734984107c7672c6c49Randall Ralphs /*
e461e790745fa2b2374e5734984107c7672c6c49Randall Ralphs * Don't print dead links.
e461e790745fa2b2374e5734984107c7672c6c49Randall Ralphs */
e461e790745fa2b2374e5734984107c7672c6c49Randall Ralphs if ((access(dip->nd_name, F_OK) == -1) && (errno == ENOENT))
e461e790745fa2b2374e5734984107c7672c6c49Randall Ralphs continue;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar switch (dip->nd_dev_type) {
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_SINQ_TAPE_ROBOT:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("Robot (Changer):\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar case NDMP_SINQ_SEQ_ACCESS_DEVICE:
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, gettext("Tape drive(s):\n"));
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar break;
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (dip->nd_name)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tName : %s\n"), dip->nd_name);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tLUN # : %d\n"), dip->nd_lun);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tSCSI ID # : %d\n"), dip->nd_sid);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (dip->nd_vendor)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tVendor : %s\n"), dip->nd_vendor);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (dip->nd_product)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tProduct : %s\n"), dip->nd_product);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar if (dip->nd_revision)
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout,
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar gettext("\tRevision : %s\n"), dip->nd_revision);
7bc22e45a20f905cdd06bb98c98a5c8be7fd25c0Reza Sabdar if (dip->nd_serial)
7bc22e45a20f905cdd06bb98c98a5c8be7fd25c0Reza Sabdar (void) fprintf(stdout,
7bc22e45a20f905cdd06bb98c98a5c8be7fd25c0Reza Sabdar gettext("\tSerial : %s\n"), dip->nd_serial);
7bc22e45a20f905cdd06bb98c98a5c8be7fd25c0Reza Sabdar if (dip->nd_wwn)
7bc22e45a20f905cdd06bb98c98a5c8be7fd25c0Reza Sabdar (void) fprintf(stdout,
7bc22e45a20f905cdd06bb98c98a5c8be7fd25c0Reza Sabdar gettext("\tWWN : %s\n"), dip->nd_wwn);
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar (void) fprintf(stdout, "\n");
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar }
2654012f83cec5dc15b61dfe3e4a4915f186e7a6Reza Sabdar}