|
Packit Service |
392537 |
/*
|
|
Packit Service |
392537 |
* Copyright (c) 1998,1999,2000
|
|
Packit Service |
392537 |
* Traakan, Inc., Los Altos, CA
|
|
Packit Service |
392537 |
* All rights reserved.
|
|
Packit Service |
392537 |
*
|
|
Packit Service |
392537 |
* Redistribution and use in source and binary forms, with or without
|
|
Packit Service |
392537 |
* modification, are permitted provided that the following conditions
|
|
Packit Service |
392537 |
* are met:
|
|
Packit Service |
392537 |
* 1. Redistributions of source code must retain the above copyright
|
|
Packit Service |
392537 |
* notice unmodified, this list of conditions, and the following
|
|
Packit Service |
392537 |
* disclaimer.
|
|
Packit Service |
392537 |
* 2. Redistributions in binary form must reproduce the above copyright
|
|
Packit Service |
392537 |
* notice, this list of conditions and the following disclaimer in the
|
|
Packit Service |
392537 |
* documentation and/or other materials provided with the distribution.
|
|
Packit Service |
392537 |
*
|
|
Packit Service |
392537 |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
|
|
Packit Service |
392537 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
Packit Service |
392537 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
|
|
Packit Service |
392537 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
|
|
Packit Service |
392537 |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
|
|
Packit Service |
392537 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
|
|
Packit Service |
392537 |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
|
Packit Service |
392537 |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
|
|
Packit Service |
392537 |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
|
|
Packit Service |
392537 |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
|
|
Packit Service |
392537 |
* SUCH DAMAGE.
|
|
Packit Service |
392537 |
*/
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
/*
|
|
Packit Service |
392537 |
* Project: NDMJOB
|
|
Packit Service |
392537 |
* Ident: $Id: $
|
|
Packit Service |
392537 |
*
|
|
Packit Service |
392537 |
* Description:
|
|
Packit Service |
392537 |
*
|
|
Packit Service |
392537 |
*/
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#include "ndmagents.h"
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_CONTROL_AGENT
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_op_query (struct ndm_session *sess)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
ndmca_opq_data(sess);
|
|
Packit Service |
392537 |
ndmca_opq_tape(sess);
|
|
Packit Service |
392537 |
ndmca_opq_robot(sess);
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_opq_data (struct ndm_session *sess)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
struct ndm_job_param * job = &sess->control_acb.job;
|
|
Packit Service |
392537 |
int rc;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
if (job->data_agent.conn_type == NDMCONN_TYPE_NONE)
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
rc = ndmca_connect_data_agent (sess);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmconn_destruct (sess->plumb.data);
|
|
Packit Service |
392537 |
return rc; /* already tattled */
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
ndmalogqr (sess, "Data Agent %s NDMPv%d",
|
|
Packit Service |
392537 |
job->data_agent.host,
|
|
Packit Service |
392537 |
sess->plumb.data->protocol_version);
|
|
Packit Service |
392537 |
ndmca_opq_host_info (sess, sess->plumb.data);
|
|
Packit Service |
392537 |
ndmca_opq_get_mover_type (sess, sess->plumb.data);
|
|
Packit Service |
392537 |
ndmca_opq_get_butype_attr (sess, sess->plumb.data);
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP3
|
|
Packit Service |
392537 |
if (sess->plumb.data->protocol_version == NDMP3VER) {
|
|
Packit Service |
392537 |
ndmca_opq_get_fs_info (sess, sess->plumb.data);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP3 */
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP4
|
|
Packit Service |
392537 |
if (sess->plumb.data->protocol_version == NDMP4VER) {
|
|
Packit Service |
392537 |
ndmca_opq_get_fs_info (sess, sess->plumb.data);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP4 */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_opq_tape (struct ndm_session *sess)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
struct ndm_job_param * job = &sess->control_acb.job;
|
|
Packit Service |
392537 |
int rc;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
if (job->tape_agent.conn_type == NDMCONN_TYPE_NONE)
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
rc = ndmca_connect_tape_agent (sess);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmconn_destruct (sess->plumb.tape);
|
|
Packit Service |
392537 |
return rc; /* already tattled */
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
ndmalogqr (sess, "Tape Agent %s NDMPv%d",
|
|
Packit Service |
392537 |
job->tape_agent.host,
|
|
Packit Service |
392537 |
sess->plumb.tape->protocol_version);
|
|
Packit Service |
392537 |
if (sess->plumb.tape != sess->plumb.data) { /* don't be boring */
|
|
Packit Service |
392537 |
ndmca_opq_host_info (sess, sess->plumb.tape);
|
|
Packit Service |
392537 |
ndmca_opq_get_mover_type (sess, sess->plumb.tape);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP3
|
|
Packit Service |
392537 |
if (sess->plumb.tape->protocol_version == NDMP3VER) {
|
|
Packit Service |
392537 |
ndmca_opq_get_tape_info (sess, sess->plumb.tape);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP3 */
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP4
|
|
Packit Service |
392537 |
if (sess->plumb.tape->protocol_version == NDMP4VER) {
|
|
Packit Service |
392537 |
ndmca_opq_get_tape_info (sess, sess->plumb.tape);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP4 */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_opq_robot (struct ndm_session *sess)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
struct ndm_job_param * job = &sess->control_acb.job;
|
|
Packit Service |
392537 |
int rc;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
if (job->robot_agent.conn_type == NDMCONN_TYPE_NONE
|
|
Packit Service |
392537 |
&& !job->have_robot)
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
rc = ndmca_connect_robot_agent (sess);
|
|
Packit Service |
392537 |
if (rc)
|
|
Packit Service |
392537 |
return rc; /* already tattled */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
ndmalogqr (sess, "Robot Agent %s NDMPv%d",
|
|
Packit Service |
392537 |
job->robot_agent.host,
|
|
Packit Service |
392537 |
sess->plumb.robot->protocol_version);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
if (sess->plumb.robot != sess->plumb.data
|
|
Packit Service |
392537 |
&& sess->plumb.robot != sess->plumb.tape) {
|
|
Packit Service |
392537 |
/* don't be boring */
|
|
Packit Service |
392537 |
ndmca_opq_host_info (sess, sess->plumb.robot);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP3
|
|
Packit Service |
392537 |
if (sess->plumb.robot->protocol_version == NDMP3VER) {
|
|
Packit Service |
392537 |
ndmca_opq_get_scsi_info (sess, sess->plumb.robot);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP3 */
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP4
|
|
Packit Service |
392537 |
if (sess->plumb.robot->protocol_version == NDMP4VER) {
|
|
Packit Service |
392537 |
ndmca_opq_get_scsi_info (sess, sess->plumb.robot);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP4 */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
if (job->have_robot) {
|
|
Packit Service |
392537 |
if (ndmca_robot_prep_target(sess)) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " robot init failed");
|
|
Packit Service |
392537 |
return -1;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmca_robot_query (sess);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_opq_host_info (struct ndm_session *sess, struct ndmconn *conn)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
int rc;
|
|
Packit Service |
392537 |
unsigned int i;
|
|
Packit Service |
392537 |
char buf[100];
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
switch (conn->protocol_version) {
|
|
Packit Service |
392537 |
default:
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Host info NDMPv???? %d",
|
|
Packit Service |
392537 |
conn->protocol_version);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " INTERNAL ERROR, CHECK BUILD");
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP2
|
|
Packit Service |
392537 |
case NDMP2VER:
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp2_config_get_host_info, NDMP2VER)
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, "get_host_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Host info");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " hostname %s", reply->hostname);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " os_type %s", reply->os_type);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " os_vers %s", reply->os_vers);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " hostid %s", reply->hostid);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
*buf = 0;
|
|
Packit Service |
392537 |
for (i = 0; i < reply->auth_type.auth_type_len; i++) {
|
|
Packit Service |
392537 |
ndmp2_auth_type atyp;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
atyp = reply->auth_type.auth_type_val[i];
|
|
Packit Service |
392537 |
strcat (buf, " ");
|
|
Packit Service |
392537 |
strcat (buf, ndmp2_auth_type_to_str (atyp));
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " auths (%d) %s",
|
|
Packit Service |
392537 |
reply->auth_type.auth_type_len, buf);
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP2 */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP3
|
|
Packit Service |
392537 |
case NDMP3VER:
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp3_config_get_host_info, NDMP3VER)
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, "get_host_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Host info");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " hostname %s", reply->hostname);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " os_type %s", reply->os_type);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " os_vers %s", reply->os_vers);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " hostid %s", reply->hostid);
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp3_config_get_server_info, NDMP3VER)
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, "get_server_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Server info");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " vendor %s", reply->vendor_name);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " product %s", reply->product_name);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " revision %s", reply->revision_number);
|
|
Packit Service |
392537 |
*buf = 0;
|
|
Packit Service |
392537 |
for (i = 0; i < reply->auth_type.auth_type_len; i++) {
|
|
Packit Service |
392537 |
ndmp3_auth_type atyp;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
atyp = reply->auth_type.auth_type_val[i];
|
|
Packit Service |
392537 |
strcat (buf, " ");
|
|
Packit Service |
392537 |
strcat (buf, ndmp3_auth_type_to_str (atyp));
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
ndmalogqr (sess, " auths (%d) %s",
|
|
Packit Service |
392537 |
reply->auth_type.auth_type_len, buf);
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP3 */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP4
|
|
Packit Service |
392537 |
case NDMP4VER:
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp4_config_get_host_info, NDMP4VER)
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, "get_host_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Host info");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " hostname %s", reply->hostname);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " os_type %s", reply->os_type);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " os_vers %s", reply->os_vers);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " hostid %s", reply->hostid);
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp4_config_get_server_info, NDMP4VER)
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, "get_server_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Server info");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " vendor %s", reply->vendor_name);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " product %s", reply->product_name);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " revision %s", reply->revision_number);
|
|
Packit Service |
392537 |
*buf = 0;
|
|
Packit Service |
392537 |
for (i = 0; i < reply->auth_type.auth_type_len; i++) {
|
|
Packit Service |
392537 |
ndmp4_auth_type atyp;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
atyp = reply->auth_type.auth_type_val[i];
|
|
Packit Service |
392537 |
strcat (buf, " ");
|
|
Packit Service |
392537 |
strcat (buf, ndmp4_auth_type_to_str (atyp));
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
ndmalogqr (sess, " auths (%d) %s",
|
|
Packit Service |
392537 |
reply->auth_type.auth_type_len, buf);
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP4 */
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_opq_get_mover_type (struct ndm_session *sess, struct ndmconn *conn)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
int rc;
|
|
Packit Service |
392537 |
unsigned int i;
|
|
Packit Service |
392537 |
char buf[100];
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
switch (conn->protocol_version) {
|
|
Packit Service |
392537 |
default:
|
|
Packit Service |
392537 |
/* already tattled in ndmca_opq_host_info() */
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP2
|
|
Packit Service |
392537 |
case NDMP2VER:
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp2_config_get_mover_type, NDMP2VER)
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, "get_mover_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Mover types");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
*buf = 0;
|
|
Packit Service |
392537 |
for (i = 0; i < reply->methods.methods_len; i++) {
|
|
Packit Service |
392537 |
ndmp2_mover_addr_type val;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
val = reply->methods.methods_val[i];
|
|
Packit Service |
392537 |
strcat (buf, " ");
|
|
Packit Service |
392537 |
strcat (buf, ndmp2_mover_addr_type_to_str (val));
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
ndmalogqr (sess, " methods (%d) %s",
|
|
Packit Service |
392537 |
reply->methods.methods_len,
|
|
Packit Service |
392537 |
buf);
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP2 */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP3
|
|
Packit Service |
392537 |
case NDMP3VER:
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp3_config_get_connection_type, NDMP3VER)
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, "get_connection_type failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Connection types");
|
|
Packit Service |
392537 |
*buf = 0;
|
|
Packit Service |
392537 |
for (i = 0; i < reply->addr_types.addr_types_len; i++) {
|
|
Packit Service |
392537 |
ndmp3_addr_type val;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
val = reply->addr_types.addr_types_val[i];
|
|
Packit Service |
392537 |
strcat (buf, " ");
|
|
Packit Service |
392537 |
strcat (buf, ndmp3_addr_type_to_str (val));
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
ndmalogqr (sess, " addr_types (%d) %s",
|
|
Packit Service |
392537 |
reply->addr_types.addr_types_len, buf);
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP3 */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP4
|
|
Packit Service |
392537 |
case NDMP4VER:
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp4_config_get_connection_type, NDMP4VER)
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, "get_connection_type failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Connection types");
|
|
Packit Service |
392537 |
*buf = 0;
|
|
Packit Service |
392537 |
for (i = 0; i < reply->addr_types.addr_types_len; i++) {
|
|
Packit Service |
392537 |
ndmp4_addr_type val;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
val = reply->addr_types.addr_types_val[i];
|
|
Packit Service |
392537 |
strcat (buf, " ");
|
|
Packit Service |
392537 |
strcat (buf, ndmp4_addr_type_to_str (val));
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
ndmalogqr (sess, " addr_types (%d) %s",
|
|
Packit Service |
392537 |
reply->addr_types.addr_types_len, buf);
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP4 */
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_opq_get_butype_attr (struct ndm_session *sess, struct ndmconn *conn)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
int rc;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
switch (conn->protocol_version) {
|
|
Packit Service |
392537 |
default:
|
|
Packit Service |
392537 |
/* already tattled in ndmca_opq_host_info() */
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP2
|
|
Packit Service |
392537 |
case NDMP2VER:
|
|
Packit Service |
392537 |
NDMC_WITH(ndmp2_config_get_butype_attr, NDMP2VER)
|
|
Packit Service |
392537 |
request->name = sess->control_acb.job.bu_type;
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " get_butype_attr '%s' failed",
|
|
Packit Service |
392537 |
sess->control_acb.job.bu_type);
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Backup type attributes of %s format",
|
|
Packit Service |
392537 |
sess->control_acb.job.bu_type);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " backup-filelist %s",
|
|
Packit Service |
392537 |
(reply->attrs&NDMP2_NO_BACKUP_FILELIST) ? "no":"yes");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " backup-fhinfo %s",
|
|
Packit Service |
392537 |
(reply->attrs&NDMP2_NO_BACKUP_FHINFO) ? "no":"yes");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " recover-filelist %s",
|
|
Packit Service |
392537 |
(reply->attrs&NDMP2_NO_RECOVER_FILELIST) ? "no":"yes");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " recover-fhinfo %s",
|
|
Packit Service |
392537 |
(reply->attrs&NDMP2_NO_RECOVER_FHINFO) ? "no":"yes");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " recover-inc-only %s",
|
|
Packit Service |
392537 |
(reply->attrs&NDMP2_NO_RECOVER_INC_ONLY) ? "no":"yes");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP2 */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP3
|
|
Packit Service |
392537 |
case NDMP3VER:
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp3_config_get_butype_info, NDMP3VER)
|
|
Packit Service |
392537 |
unsigned int i, j;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " get_butype_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
for (i = 0; i < reply->butype_info.butype_info_len; i++) {
|
|
Packit Service |
392537 |
ndmp3_butype_info * buti;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
buti = &reply->butype_info.butype_info_val[i];
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Backup type info of %s format",
|
|
Packit Service |
392537 |
buti->butype_name);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " attrs 0x%lx",
|
|
Packit Service |
392537 |
buti->attrs);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " backup-file-history %s",
|
|
Packit Service |
392537 |
(buti->attrs&NDMP3_BUTYPE_BACKUP_FILE_HISTORY) ? "yes":"no");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " backup-filelist %s",
|
|
Packit Service |
392537 |
(buti->attrs&NDMP3_BUTYPE_BACKUP_FILELIST) ? "yes":"no");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " recover-filelist %s",
|
|
Packit Service |
392537 |
(buti->attrs&NDMP3_BUTYPE_RECOVER_FILELIST) ? "yes":"no");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " backup-direct %s",
|
|
Packit Service |
392537 |
(buti->attrs&NDMP3_BUTYPE_BACKUP_DIRECT) ? "yes":"no");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " recover-direct %s",
|
|
Packit Service |
392537 |
(buti->attrs&NDMP3_BUTYPE_RECOVER_DIRECT) ? "yes":"no");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " backup-incremental %s",
|
|
Packit Service |
392537 |
(buti->attrs&NDMP3_BUTYPE_BACKUP_INCREMENTAL) ? "yes":"no");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " recover-incremental %s",
|
|
Packit Service |
392537 |
(buti->attrs&NDMP3_BUTYPE_RECOVER_INCREMENTAL) ? "yes":"no");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " backup-utf8 %s",
|
|
Packit Service |
392537 |
(buti->attrs&NDMP3_BUTYPE_BACKUP_UTF8) ? "yes":"no");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " recover-utf8 %s",
|
|
Packit Service |
392537 |
(buti->attrs&NDMP3_BUTYPE_RECOVER_UTF8) ? "yes":"no");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " recover-file-history %s",
|
|
Packit Service |
392537 |
(buti->attrs&NDMP3_BUTYPE_RECOVER_FILE_HISTORY) ? "yes":"no");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
for (j = 0; j < buti->default_env.default_env_len; j++) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " set %s=%s",
|
|
Packit Service |
392537 |
buti->default_env.default_env_val[j].name,
|
|
Packit Service |
392537 |
buti->default_env.default_env_val[j].value);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (j == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " empty default env");
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (i == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Empty backup type info");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP3 */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP4
|
|
Packit Service |
392537 |
case NDMP4VER:
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp4_config_get_butype_info, NDMP4VER)
|
|
Packit Service |
392537 |
unsigned int i, j;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " get_butype_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
for (i = 0; i < reply->butype_info.butype_info_len; i++) {
|
|
Packit Service |
392537 |
ndmp4_butype_info * buti;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
buti = &reply->butype_info.butype_info_val[i];
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Backup type info of %s format",
|
|
Packit Service |
392537 |
buti->butype_name);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " attrs 0x%lx",
|
|
Packit Service |
392537 |
buti->attrs);
|
|
Packit Service |
392537 |
for (j = 0; j < buti->default_env.default_env_len; j++) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " set %s=%s",
|
|
Packit Service |
392537 |
buti->default_env.default_env_val[j].name,
|
|
Packit Service |
392537 |
buti->default_env.default_env_val[j].value);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (j == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " empty default env");
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (i == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Empty backup type info");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP4 */
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_EFFECT_NO_NDMP3_NOR_NDMP4
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_opq_get_fs_info (struct ndm_session *sess, struct ndmconn *conn)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
int rc;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
switch (conn->protocol_version) {
|
|
Packit Service |
392537 |
default:
|
|
Packit Service |
392537 |
/* already tattled in ndmca_opq_host_info() */
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP2
|
|
Packit Service |
392537 |
case NDMP2VER:
|
|
Packit Service |
392537 |
break; /* why are we here? */
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP2 */
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP3
|
|
Packit Service |
392537 |
case NDMP3VER:
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp3_config_get_fs_info, NDMP3VER)
|
|
Packit Service |
392537 |
unsigned int i, j;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " get_fs_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
for (i = 0; i < reply->fs_info.fs_info_len; i++) {
|
|
Packit Service |
392537 |
ndmp3_fs_info * fsi;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
fsi = &reply->fs_info.fs_info_val[i];
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " File system %s",
|
|
Packit Service |
392537 |
fsi->fs_logical_device);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " physdev %s",
|
|
Packit Service |
392537 |
fsi->fs_physical_device);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " invalid 0x%lx", fsi->invalid);
|
|
Packit Service |
392537 |
if (fsi->invalid & NDMP3_FS_INFO_TOTAL_SIZE_INVALID)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " TOTAL_SIZE_INVALID");
|
|
Packit Service |
392537 |
if (fsi->invalid & NDMP3_FS_INFO_USED_SIZE_INVALID)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " USED_SIZE_INVALID");
|
|
Packit Service |
392537 |
if (fsi->invalid & NDMP3_FS_INFO_AVAIL_SIZE_INVALID)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " AVAIL_SIZE_INVALID");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
if (fsi->invalid & NDMP3_FS_INFO_TOTAL_INODES_INVALID)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " TOTAL_INODES_INVALID");
|
|
Packit Service |
392537 |
if (fsi->invalid & NDMP3_FS_INFO_USED_INODES_INVALID)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " USED_INODES_INVALID");
|
|
Packit Service |
392537 |
ndmalogqr (sess, " type %s", fsi->fs_type);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " status %s", fsi->fs_status);
|
|
Packit Service |
392537 |
ndmalogqr (sess,
|
|
Packit Service |
392537 |
" space %lld total, %lld used, %lld avail",
|
|
Packit Service |
392537 |
fsi->total_size,
|
|
Packit Service |
392537 |
fsi->used_size,
|
|
Packit Service |
392537 |
fsi->avail_size);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " inodes %lld total, %lld used",
|
|
Packit Service |
392537 |
fsi->total_inodes,
|
|
Packit Service |
392537 |
fsi->used_inodes);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
for (j = 0; j < fsi->fs_env.fs_env_len; j++) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " set %s=%s",
|
|
Packit Service |
392537 |
fsi->fs_env.fs_env_val[j].name,
|
|
Packit Service |
392537 |
fsi->fs_env.fs_env_val[j].value);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (j == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " empty default env");
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (i == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Empty fs info");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP3 */
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP4
|
|
Packit Service |
392537 |
case NDMP4VER:
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp4_config_get_fs_info, NDMP4VER)
|
|
Packit Service |
392537 |
unsigned int i, j;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " get_fs_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
for (i = 0; i < reply->fs_info.fs_info_len; i++) {
|
|
Packit Service |
392537 |
ndmp4_fs_info * fsi;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
fsi = &reply->fs_info.fs_info_val[i];
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " File system %s",
|
|
Packit Service |
392537 |
fsi->fs_logical_device);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " physdev %s",
|
|
Packit Service |
392537 |
fsi->fs_physical_device);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " unsupported 0x%lx",
|
|
Packit Service |
392537 |
fsi->unsupported);
|
|
Packit Service |
392537 |
if (fsi->unsupported & NDMP4_FS_INFO_TOTAL_SIZE_UNS)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " TOTAL_SIZE_UNS");
|
|
Packit Service |
392537 |
if (fsi->unsupported & NDMP4_FS_INFO_USED_SIZE_UNS)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " USED_SIZE_UNS");
|
|
Packit Service |
392537 |
if (fsi->unsupported & NDMP4_FS_INFO_AVAIL_SIZE_UNS)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " AVAIL_SIZE_UNS");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
if (fsi->unsupported & NDMP4_FS_INFO_TOTAL_INODES_UNS)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " TOTAL_INODES_UNS");
|
|
Packit Service |
392537 |
if (fsi->unsupported & NDMP4_FS_INFO_USED_INODES_UNS)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " USED_INODES_UNS");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " type %s", fsi->fs_type);
|
|
Packit Service |
392537 |
ndmalogqr (sess, " status %s", fsi->fs_status);
|
|
Packit Service |
392537 |
ndmalogqr (sess,
|
|
Packit Service |
392537 |
" space %lld total, %lld used, %lld avail",
|
|
Packit Service |
392537 |
fsi->total_size,
|
|
Packit Service |
392537 |
fsi->used_size,
|
|
Packit Service |
392537 |
fsi->avail_size);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " inodes %lld total, %lld used",
|
|
Packit Service |
392537 |
fsi->total_inodes,
|
|
Packit Service |
392537 |
fsi->used_inodes);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
for (j = 0; j < fsi->fs_env.fs_env_len; j++) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " set %s=%s",
|
|
Packit Service |
392537 |
fsi->fs_env.fs_env_val[j].name,
|
|
Packit Service |
392537 |
fsi->fs_env.fs_env_val[j].value);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (j == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " empty default env");
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (i == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Empty fs info");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
break;
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP4 */
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_opq_show_device_info (struct ndm_session *sess,
|
|
Packit Service |
392537 |
ndmp9_device_info *info,
|
|
Packit Service |
392537 |
unsigned n_info, char *what)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
unsigned int i, j, k;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
for (i = 0; i < n_info; i++) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " %s %s", what, info[i].model);
|
|
Packit Service |
392537 |
for (j = 0; j < info[i].caplist.caplist_len; j++) {
|
|
Packit Service |
392537 |
ndmp9_device_capability *dc;
|
|
Packit Service |
392537 |
u_long attr;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
dc = &info[i].caplist.caplist_val[j];
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
ndmalogqr (sess, " device %s", dc->device);
|
|
Packit Service |
392537 |
if (!strcmp(what, "tape")) {
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP3
|
|
Packit Service |
392537 |
if (sess->plumb.tape->protocol_version == 3) {
|
|
Packit Service |
392537 |
attr = dc->v3attr.value;
|
|
Packit Service |
392537 |
ndmalogqr (sess, " attr 0x%lx",
|
|
Packit Service |
392537 |
attr);
|
|
Packit Service |
392537 |
if (attr & NDMP3_TAPE_ATTR_REWIND)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " REWIND");
|
|
Packit Service |
392537 |
if (attr & NDMP3_TAPE_ATTR_UNLOAD)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " UNLOAD");
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP3 */
|
|
Packit Service |
392537 |
#ifndef NDMOS_OPTION_NO_NDMP4
|
|
Packit Service |
392537 |
if (sess->plumb.tape->protocol_version == 4) {
|
|
Packit Service |
392537 |
attr = dc->v4attr.value;
|
|
Packit Service |
392537 |
ndmalogqr (sess, " attr 0x%lx",
|
|
Packit Service |
392537 |
attr);
|
|
Packit Service |
392537 |
if (attr & NDMP4_TAPE_ATTR_REWIND)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " REWIND");
|
|
Packit Service |
392537 |
if (attr & NDMP4_TAPE_ATTR_UNLOAD)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " UNLOAD");
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_NDMP4 */
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
for (k = 0; k < dc->capability.capability_len; k++) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " set %s=%s",
|
|
Packit Service |
392537 |
dc->capability.capability_val[k].name,
|
|
Packit Service |
392537 |
dc->capability.capability_val[k].value);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (k == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " empty capabilities");
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (j == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " empty caplist");
|
|
Packit Service |
392537 |
ndmalogqr (sess, "");
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
if (i == 0)
|
|
Packit Service |
392537 |
ndmalogqr (sess, " Empty %s info", what);
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_opq_get_tape_info (struct ndm_session *sess, struct ndmconn *conn)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
int rc;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp9_config_get_tape_info, NDMP9VER)
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " get_tape_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
ndmca_opq_show_device_info (sess,
|
|
Packit Service |
392537 |
reply->config_info.tape_info.tape_info_val,
|
|
Packit Service |
392537 |
reply->config_info.tape_info.tape_info_len,
|
|
Packit Service |
392537 |
"tape");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
int
|
|
Packit Service |
392537 |
ndmca_opq_get_scsi_info (struct ndm_session *sess, struct ndmconn *conn)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
int rc;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_WITH_VOID_REQUEST(ndmp9_config_get_scsi_info, NDMP9VER)
|
|
Packit Service |
392537 |
rc = NDMC_CALL(conn);
|
|
Packit Service |
392537 |
if (rc) {
|
|
Packit Service |
392537 |
ndmalogqr (sess, " get_scsi_info failed");
|
|
Packit Service |
392537 |
return rc;
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
ndmca_opq_show_device_info (sess,
|
|
Packit Service |
392537 |
reply->config_info.scsi_info.scsi_info_val,
|
|
Packit Service |
392537 |
reply->config_info.scsi_info.scsi_info_len,
|
|
Packit Service |
392537 |
"scsi");
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
NDMC_FREE_REPLY();
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
return 0;
|
|
Packit Service |
392537 |
NDMC_ENDWITH
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
#endif /* !NDMOS_EFFECT_NO_NDMP3_NOR_NDMP4 */
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
void
|
|
Packit Service |
392537 |
ndmalogqr (struct ndm_session *sess, char *fmt, ...)
|
|
Packit Service |
392537 |
{
|
|
Packit Service |
392537 |
va_list ap;
|
|
Packit Service |
392537 |
|
|
Packit Service |
392537 |
va_start (ap, fmt);
|
|
Packit Service |
392537 |
ndmalogfv (sess, "QR", 0, fmt, ap);
|
|
Packit Service |
392537 |
va_end (ap);
|
|
Packit Service |
392537 |
}
|
|
Packit Service |
392537 |
#endif /* !NDMOS_OPTION_NO_CONTROL_AGENT */
|