blob: 1e6633efbc540ccf33a5086b05ec93f233469e23 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
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 standby 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 ("");
}
}
|