summaryrefslogtreecommitdiff
path: root/usr/src/cmd/mpathadm/mpathadm_text.c
diff options
context:
space:
mode:
Diffstat (limited to 'usr/src/cmd/mpathadm/mpathadm_text.c')
-rw-r--r--usr/src/cmd/mpathadm/mpathadm_text.c387
1 files changed, 387 insertions, 0 deletions
diff --git a/usr/src/cmd/mpathadm/mpathadm_text.c b/usr/src/cmd/mpathadm/mpathadm_text.c
new file mode 100644
index 0000000000..a12b699e3b
--- /dev/null
+++ b/usr/src/cmd/mpathadm/mpathadm_text.c
@@ -0,0 +1,387 @@
+/*
+ * CDDL HEADER START
+ *
+ * The contents of this file are subject to the terms of the
+ * Common Development and Distribution License (the "License").
+ * You may not use this file except in compliance with the License.
+ *
+ * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
+ * or http://www.opensolaris.org/os/licensing.
+ * See the License for the specific language governing permissions
+ * and limitations under the License.
+ *
+ * When distributing Covered Code, include this CDDL HEADER in each
+ * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
+ * If applicable, add the following below this CDDL HEADER, with the
+ * fields enclosed by brackets "[]" replaced with your own identifying
+ * information: Portions Copyright [yyyy] [name of copyright owner]
+ *
+ * CDDL HEADER END
+ */
+/*
+ * Copyright 2008 Sun Microsystems, Inc. All rights reserved.
+ * Use is subject to license terms.
+ */
+
+/*
+ * mpathadm_text.c : MP API CLI program
+ *
+ */
+
+#include <libintl.h>
+
+#include <mpapi.h>
+#include "mpathadm_text.h"
+
+
+MP_CHAR * getTextString(int stringVal) {
+ switch (stringVal) {
+ case TEXT_UNKNOWN:
+ return (gettext("unknown"));
+
+ /* load balance types for display and input to cli */
+ case TEXT_LBTYPE_FAILOVER_ONLY:
+ return ("failover-only");
+ case TEXT_LBTYPE_LBAREGION:
+ return ("logical-block");
+ case TEXT_LBTYPE_DEVICEPROD:
+ return ("device-product-specific");
+ case TEXT_LBTYPE_LEASTIO:
+ return ("least-used");
+ case TEXT_LBTYPE_LEASTBLOCKS:
+ return ("least-blocks");
+ case TEXT_LBTYPE_ROUNDROBIN:
+ return ("round-robin");
+ case TEXT_LBTYPE_UNKNOWN:
+ return ("unknown");
+ case TEXT_LBTYPE_NONE:
+ return ("none");
+ case TEXT_LBTYPE_PROPRIETARY1:
+ return ("proprietary1");
+ case TEXT_LBTYPE_PROPRIETARY2:
+ return ("proprietary2");
+ case TEXT_LBTYPE_PROPRIETARY3:
+ return ("proprietary3");
+ case TEXT_LBTYPE_PROPRIETARY4:
+ return ("proprietary4");
+ case TEXT_LBTYPE_PROPRIETARY5:
+ return ("proprietary5");
+ case TEXT_LBTYPE_PROPRIETARY6:
+ return ("proprietary6");
+ case TEXT_LBTYPE_PROPRIETARY7:
+ return ("proprietary7");
+ case TEXT_LBTYPE_PROPRIETARY8:
+ return ("proprietary8");
+ case TEXT_LBTYPE_PROPRIETARY9:
+ return ("proprietary9");
+ case TEXT_LBTYPE_PROPRIETARY10:
+ return ("proprietary10");
+ case TEXT_LBTYPE_PROPRIETARY11:
+ return ("proprietary11");
+ case TEXT_LBTYPE_PROPRIETARY12:
+ return ("proprietary12");
+ case TEXT_LBTYPE_PROPRIETARY13:
+ return ("proprietary13");
+ case TEXT_LBTYPE_PROPRIETARY14:
+ return ("proprietary14");
+ case TEXT_LBTYPE_PROPRIETARY15:
+ return ("proprietary15");
+ case TEXT_LBTYPE_PROPRIETARY16:
+ return ("proprietary16");
+
+ /* used for display */
+ case TEXT_NA:
+ return (gettext("NA"));
+
+ /* used for displaying of state and comparing input into cli */
+ case TEXT_YES:
+ return (gettext("yes"));
+ case TEXT_NO:
+ return (gettext("no"));
+ case TEXT_ON:
+ return ("on");
+ case TEXT_OFF:
+ return ("off");
+
+ /* labels for display */
+ case TEXT_LB_VENDOR:
+ return ("Vendor:");
+ case TEXT_LB_DRIVER_NAME:
+ return ("Driver Name:");
+ case TEXT_LB_DEFAULT_LB:
+ return ("Default Load Balance:");
+ case TEXT_LB_SUPPORTED_LB:
+ return ("Supported Load Balance Types:");
+ case TEXT_LB_ALLOWS_ACT_TPG:
+ return ("Allows To Activate Target Port Group Access:");
+ case TEXT_LB_ALLOWS_PATH_OV:
+ return ("Allows Path Override:");
+ case TEXT_LB_SUPP_AUTO_FB:
+ return ("Supported Auto Failback Config:");
+ case TEXT_LB_AUTO_FB:
+ return ("Auto Failback:");
+ case TEXT_LB_FB_POLLING_RATE:
+ return ("Failback Polling Rate (current/max):");
+ case TEXT_LB_SUPP_AUTO_P:
+ return ("Supported Auto Probing Config:");
+ case TEXT_LB_AUTO_PROB:
+ return ("Auto Probing:");
+ case TEXT_LB_PR_POLLING_RATE:
+ return ("Probing Polling Rate (current/max):");
+ case TEXT_LB_SUPP_DEVICES:
+ return ("Supported Devices:");
+ case TEXT_LB_PRODUCT:
+ return ("Product:");
+ case TEXT_LB_REVISION:
+ return ("Revision:");
+ case TEXT_LB_LOGICAL_UNIT:
+ return ("Logical Unit:");
+ case TEXT_LB_INQUIRY_NAME_TYPE:
+ return ("Name Type:");
+ case TEXT_NAME_TYPE_UNKNOWN:
+ return ("unknown type");
+ case TEXT_NAME_TYPE_VPD83_TYPE1:
+ return ("SCSI Inquiry VPD Page83 Type1");
+ case TEXT_NAME_TYPE_VPD83_TYPE2:
+ return ("SCSI Inquiry VPD Page83 Type2");
+ case TEXT_NAME_TYPE_VPD83_TYPE3:
+ return ("SCSI Inquiry VPD Page83 Type3");
+ case TEXT_NAME_TYPE_DEVICE_SPECIFIC:
+ return ("device specific type");
+ case TEXT_LB_INQUIRY_NAME:
+ return ("Name:");
+ case TEXT_LB_ASYMMETRIC:
+ return ("Asymmetric:");
+ case TEXT_LB_EXPLICIT_FAILOVER:
+ return ("Explicit Failover:");
+ case TEXT_LB_CURR_LOAD_BALANCE:
+ return ("Current Load Balance:");
+ case TEXT_LB_LU_GROUP_ID:
+ return ("Logical Unit Group ID:");
+ case TEXT_LB_PATH_INFO:
+ return ("Paths:");
+ case TEXT_LB_INIT_PORT_NAME:
+ return ("Initiator Port Name:");
+ case TEXT_LB_TARGET_PORT_NAME:
+ return ("Target Port Name:");
+ case TEXT_LB_OVERRIDE_PATH:
+ return ("Override Path:");
+ case TEXT_LB_PATH_STATE:
+ return ("Path State:");
+ case TEXT_LB_TPG_INFO:
+ return ("Target Port Groups:");
+ case TEXT_LB_ACCESS_STATE:
+ return ("Access State:");
+ case TEXT_LB_ID:
+ return ("ID:");
+ case TEXT_TPORT_LIST:
+ return ("Target Ports:");
+ case TEXT_LB_NAME:
+ return ("Name:");
+ case TEXT_LB_RELATIVE_ID:
+ return ("Relative ID:");
+ case TEXT_LB_INITATOR_PORT:
+ return ("Initiator Port:");
+ case TEXT_LB_TRANSPORT_TYPE:
+ return ("Transport Type:");
+ case TEXT_LB_OS_DEVICE_FILE:
+ return ("OS Device File:");
+ case TEXT_LB_MPATH_SUPPORT:
+ return ("mpath-support:");
+ case TEXT_LB_PATH_COUNT:
+ return ("Total Path Count:");
+ case TEXT_LB_OP_PATH_COUNT:
+ return ("Operational Path Count:");
+
+ case TEXT_LB_ENABLED:
+ return ("Enabled:");
+ case TEXT_LB_DISABLED:
+ return ("Disabled:");
+
+ case TEXT_UNKNOWN_OBJECT:
+ return (gettext("unknown object"));
+
+ /* status strings used in error messages */
+ case TEXT_MPSTATUS_SUCCESS:
+ return (gettext("success"));
+ case TEXT_MPSTATUS_INV_PARAMETER:
+ return (gettext("invalid parameter"));
+ case TEXT_MPSTATUS_UNKNOWN_FN:
+ return (gettext("unknown client function"));
+ case TEXT_MPSTATUS_FAILED:
+ return (gettext("failed"));
+ case TEXT_MPSTATUS_INSUFF_MEMORY:
+ return (gettext("insufficient memory"));
+ case TEXT_MPSTATUS_INV_OBJ_TYPE:
+ return (gettext("invalid object type"));
+ case TEXT_MPSTATUS_OBJ_NOT_FOUND:
+ return (gettext("object not found"));
+ case TEXT_MPSTATUS_UNSUPPORTED:
+ return (gettext("unsupported"));
+ case TEXT_MPSTATUS_FN_REPLACED:
+ return (gettext("function replaced"));
+ case TEXT_MPSTATUS_ACC_STATE_INVAL:
+ return (gettext("invalid access state"));
+ case TEXT_MPSTATUS_PATH_NONOP:
+ return (gettext("path not operational"));
+ case TEXT_MPSTATUS_TRY_AGAIN:
+ return (gettext("try again"));
+ case TEXT_MPSTATUS_NOT_PERMITTED:
+ return (gettext("not permitted"));
+
+ /* error messages */
+ case ERR_NO_MPATH_SUPPORT_LIST:
+ return (gettext("Error: Unable to get mpath-support "
+ "list."));
+ case ERR_CANT_FIND_MPATH_SUPPORT_WITH_NAME:
+ return (gettext("Error: Unable to find mpath-support "
+ "%s."));
+ case ERR_NO_PROPERTIES:
+ return (gettext("Error: Unable to get configuration "
+ "information."));
+ case ERR_NO_SUPP_DEVICE_INFO:
+ return (gettext("Error: Unable to get supported "
+ "device product information."));
+ case ERR_NO_LU_LIST:
+ return (gettext("Error: Unable to get the logical "
+ "unit list."));
+ case ERR_NO_ASSOCIATED_LU:
+ return (gettext("Error: Unable to find an "
+ "associated logical-unit."));
+ case ERR_LU_NOT_FOUND_WITH_MISSING_LU_STR:
+ return (gettext("Error: Logical-unit %s is not "
+ "found."));
+ case ERR_NO_LU_PATH_INFO_WITH_MISSING_LU_STR:
+ return (gettext("Error: Failed to get path info for "
+ "logical-unit %s."));
+ case ERR_NO_ASSOC_TPGS:
+ return (gettext("Error: Unable to get associated "
+ "target port groups ."));
+ case ERR_NO_ASSOC_TPORTS:
+ return (gettext("Error: Unable to get associated "
+ "target ports."));
+ case ERR_NO_INIT_PORTS:
+ return (gettext("Error: Unable to get the "
+ "initiator-port list."));
+ case ERR_NO_INIT_PORT_LIST_WITH_REASON:
+ return (gettext("Error: Unable to get the "
+ "initiator-port list: %s."));
+ case ERR_INIT_PORT_NOT_FOUND_WITH_MISSING_LU_STR:
+ return (gettext("Error: Initiator port %s is not "
+ "found."));
+ case ERR_FAILED_TO_REGISTER_PLUGIN_NAME_WITH_REASON:
+ return (gettext("Error: Failed to register %s: %s."));
+ case ERR_FAILED_TO_DEREGISTER_PLUGIN_NAME_WITH_REASON:
+ return (gettext("Error: Failed to deregister "
+ "%ls: %s."));
+ case ERR_FAILED_TO_CHANGE_OPTION_WITH_REASON:
+ return (gettext("Error: Failed to change %s: %s."));
+ case ERR_FAILED_TO_ENABLE_PATH_WITH_REASON:
+ return (gettext("Error: Failed to enable path: %s."));
+ case ERR_FAILED_TO_DISABLE_PATH_WITH_REASON:
+ return (gettext("Error: Failed to disable path: %s."));
+ case ERR_FAILED_TO_OVERRIDE_PATH_WITH_REASON:
+ return (gettext("Error: Failed to override path: "
+ "%s."));
+ case ERR_LU_NOT_ASYMMETRIC:
+ return (gettext("Error: The logical unit is not "
+ "asymmetric."));
+ case ERR_NO_FAILOVER_ALLOWED:
+ return (gettext("Error: The logical unit doesn't "
+ "support explicit state change."));
+ case ERR_FAILED_TO_FAILOVER_WITH_LU_AND_REASON:
+ return (gettext("Error: Failover failed %s: %s."));
+ case ERR_FAILED_TO_FAILOVER_WITH_REASON:
+ return (gettext("Error: Failover failed: %s."));
+ case ERR_FAILED_TO_CANCEL_OVERRIDE_PATH_WITH_REASON:
+ return (gettext("Error: Failed to cancel the "
+ "overriding setting: %s."));
+ case ERR_FAILED_TO_FIND_PATH:
+ return (gettext("Error: Unable to find path."));
+ case LU_NOT_FOUND:
+ return (gettext("logical-unit not found"));
+ case FAILED_TO_FIND_PATH:
+ return (gettext("Unable to find path"));
+ case MISSING_LU_NAME:
+ return (gettext("Missing logical-unit name"));
+ case MISSING_INIT_PORT_NAME:
+ return (gettext("Missing initiator-port name"));
+ case MISSING_TARGET_PORT_NAME:
+ return (gettext("Missing target-port name"));
+ case TEXT_AUTO_FAILBACK:
+ return (gettext("auto failback"));
+ case TEXT_AUTO_PROBING:
+ return (gettext("auto probing"));
+ case TEXT_LOAD_BALANCE:
+ return (gettext("load balance"));
+ case TEXT_ILLEGAL_ARGUMENT:
+ return (gettext("illegal argument"));
+ case TEXT_MPATH_SUPPORT_NOT_FOUND:
+ return (gettext("unable to find specified "
+ "mpath-support"));
+ case ERR_MEMORY_ALLOCATION:
+ return (gettext("Error: Memory allocation failure"));
+ case TEXT_MORE_INFO:
+ return (gettext("For more information, please see"));
+ case TEXT_UNABLE_TO_COMPLETE:
+ return (gettext("Unable to complete operation"));
+ case ERR_FILE_DESCRIPTOR:
+ return (gettext("ERROR: Failed getting file "
+ "descriptor"));
+ case ERR_DEVID:
+ return (gettext("ERROR: Failed attempt to get devid "
+ "information"));
+ case ERR_LU_ACCESS_STATE_UNCHANGED:
+ return (gettext("ERROR: LU access state unchanged. "
+ "No active TPG found."));
+
+ /* strings to display info */
+ case TEXT_PATH_STATE_OKAY:
+ return ("OK");
+ case TEXT_PATH_STATE_PATH_ERR:
+ return ("path error");
+ case TEXT_PATH_STATE_LU_ERR:
+ return ("LU error");
+ case TEXT_PATH_STATE_RESERVED:
+ return ("reserved");
+ case TEXT_PATH_STATE_REMOVED:
+ return ("unavailable");
+ case TEXT_PATH_STATE_TRANSITIONING:
+ return ("transitioning");
+ case TEXT_PATH_STATE_OPERATIONAL_CLOSED:
+ return ("operational but closed");
+ case TEXT_PATH_STATE_INVALID_CLOSED:
+ return ("invalid closed");
+ case TEXT_PATH_STATE_OFFLINE_CLOSED:
+ return ("operational but closed");
+ case TEXT_ACCESS_STATE_ACTIVE_OPTIMIZED:
+ return ("active optimized");
+ case TEXT_ACCESS_STATE_ACTIVE_NONOPTIMIZED:
+ return ("active not optimized");
+ case TEXT_ACCESS_STATE_STANDBY:
+ return ("standby");
+ case TEXT_ACCESS_STATE_UNAVAILABLE:
+ return ("unavailable");
+ case TEXT_ACCESS_STATE_TRANSITIONING:
+ return ("transitioning");
+ case TEXT_ACCESS_STATE_ACTIVE:
+ return ("active");
+ case TEXT_ANY_DEVICE:
+ return ("any device");
+
+ case TEXT_TRANS_PORT_TYPE_MPNODE:
+ return ("Logical Multipath Port");
+ case TEXT_TRANS_PORT_TYPE_FC:
+ return ("Fibre Channel");
+ case TEXT_TRANS_PORT_TYPE_SPI:
+ return ("parallel SCSI");
+ case TEXT_TRANS_PORT_TYPE_ISCSI:
+ return ("iSCSI");
+ case TEXT_TRANS_PORT_TYPE_IFB:
+ return ("InfiniBand-Fibre Channel");
+
+
+ default:
+ return ("");
+ }
+}