1/*
2 * CDDL HEADER START
3 *
4 * The contents of this file are subject to the terms of the
5 * Common Development and Distribution License (the "License").
6 * You may not use this file except in compliance with the License.
7 *
8 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
9 * or http://www.opensolaris.org/os/licensing.
10 * See the License for the specific language governing permissions
11 * and limitations under the License.
12 *
13 * When distributing Covered Code, include this CDDL HEADER in each
14 * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
15 * If applicable, add the following below this CDDL HEADER, with the
16 * fields enclosed by brackets "[]" replaced with your own identifying
17 * information: Portions Copyright [yyyy] [name of copyright owner]
18 *
19 * CDDL HEADER END
20 */
21/*
22 * Copyright 2008 Sun Microsystems, Inc.  All rights reserved.
23 * Use is subject to license terms.
24 */
25
26/*
27 * Common definitions for Storage Utilities libraries
28 */
29
30#ifndef	_STGCOM_H
31#define	_STGCOM_H
32
33
34
35#ifdef	__cplusplus
36extern "C" {
37#endif
38
39/*
40 * This header file contains the error definitions
41 * to handle the SCSI, path format, Device, Fibre Channel
42 * ioctl, Enclosure, and IB specific Errors.  It also
43 * contains physical names for device paths.
44 */
45
46/*
47 * Define for physical name of children of fcp
48 */
49#define	FC_CTLR			":devctl"
50#define	DRV_NAME_SD		"sd@"
51#define	DRV_NAME_SSD		"ssd@"
52#define	DRV_NAME_ST		"st@"
53#define	SLSH_DRV_NAME_SD	"/sd@"
54#define	SLSH_DRV_NAME_SSD	"/ssd@"
55#define	SLSH_DRV_NAME_ST	"/st@"
56#define	DRV_PART_NAME		",0:c,raw"
57#define	SES_NAME		"ses@"
58#define	SLSH_SES_NAME		"/ses@"
59#define	SLASH_SES		"/ses"
60#define	SES_DIR			"/dev/es"
61#define	DEV_DSK_DIR		"/dev/dsk"
62#define	DEV_RDIR		"/dev/rdsk"
63#define	DEV_TAPE_DIR		"/dev/rmt"
64#define	L_ARCH_4M		"sun4m"
65#define	VHCI_NODE		"/devices/scsi_vhci:devctl"
66#define	SCSI_VHCI		"/devices/scsi_vhci/"
67#define	SLSH_VHCI_DISK		"/ssd@g"
68
69/*
70 * controller/nexus node postfix strings
71 */
72#define	CTLR_POSTFIX	":ctlr"
73#define	DEVCTL_POSTFIX	":devctl"
74
75/*
76 * I18N message number ranges
77 *  This file: 15500 - 15999
78 *  Shared common messages: 1 - 1999
79 */
80
81/*
82 * All error numbers below this base value
83 * are assumed to be UNIX error codes.
84 */
85
86#define	L_BASE				L_SCSI_ERROR
87
88/*
89 * SCSI Errors
90 *
91 */
92/* SCSI error */
93#define	L_SCSI_ERROR			0x10000
94
95/* Receive Diagnostics: Transfer length is not word aligned */
96#define	L_RD_INVLD_TRNSFR_LEN		0x11002
97
98/* No disk element found in Receive diag. page */
99#define	L_RD_NO_DISK_ELEM		0x11003
100
101/* Illegal mode sense page length */
102#define	L_ILLEGAL_MODE_SENSE_PAGE	0x11004
103
104/* Invalid number of ENV. SENSE pages */
105#define	L_INVALID_NO_OF_ENVSEN_PAGES	0x11005
106
107/* Buffer is *too* small to hold more than 8 pages */
108#define	L_INVALID_BUF_LEN		0x11006
109
110/* Scsi_vhci errors */
111#define	L_SCSI_VHCI_ERROR		0x11007
112#define	L_SCSI_VHCI_ALREADY_ACTIVE	0x11008
113#define	L_SCSI_VHCI_NO_STANDBY		0x11009
114#define	L_SCSI_VHCI_FAILOVER_NOTSUP	0x1100a
115#define	L_SCSI_VHCI_FAILOVER_BUSY	0x1100b
116
117
118/*
119 * Error definitions
120 * for Format Errors.
121 */
122#define	L_INVALID_PATH			0x20200
123
124/* Failed to open a given path */
125#define	L_OPEN_PATH_FAIL		0x20001
126
127/* Invalid password length. */
128#define	L_INVALID_PASSWORD_LEN		0x20002
129
130/* Given disk physical path is not valid. */
131#define	L_INVLD_PHYS_PATH_TO_DISK	0x20004
132
133/* Invalid name id found in the physical path */
134#define	L_INVLD_ID_FOUND		0x20005
135
136/* Invalid WWN format found */
137#define	L_INVLD_WWN_FORMAT		0x20006
138
139/* No WWN found in the disk's physical path */
140#define	L_NO_WWN_FOUND_IN_PATH		0x20007
141
142/* No Loop address found in the phys path */
143#define	L_NO_LOOP_ADDRS_FOUND		0x20008
144
145/* Invalid port number found in the phys path */
146#define	L_INVLD_PORT_IN_PATH		0x20009
147
148/* Invalid LED request */
149#define	L_INVALID_LED_RQST		0x20010
150
151/* Invalid path format */
152#define	L_INVALID_PATH_FORMAT		0x20011
153
154/* failed to get the physical path */
155#define	L_NO_PHYS_PATH			0x20012
156
157/* failed to get the ses path */
158#define	L_NO_SES_PATH			0x20015
159
160/* No "/" found in the physical path */
161#define	L_INVLD_PATH_NO_SLASH_FND	0x20100
162
163/* No "@" found in the physical path */
164#define	L_INVLD_PATH_NO_ATSIGN_FND	0x20101
165
166/* Invalid slot (slot < 0 or slot > 10). */
167#define	L_INVALID_SLOT			0x20102
168
169/* No valid path to a device */
170#define	L_NO_VALID_PATH			0x20103
171
172/* No disk devices found in /dev/rdsk directory */
173#define	L_NO_DISK_DEV_FOUND		0x20104
174
175/* No tape devices found in /dev/rmt directory */
176#define	L_NO_TAPE_DEV_FOUND		0x20105
177
178/* Device's Node WWN not found in the WWN list. */
179#define	L_NO_NODE_WWN_IN_WWNLIST	0x20106
180
181/* Device's Node WWN not found in the Box list. */
182#define	L_NO_NODE_WWN_IN_BOXLIST	0x20107
183
184/* Null WWN list found. */
185#define	L_NULL_WWN_LIST			0x20108
186
187/* No devices found. */
188#define	L_NO_DEVICES_FOUND		0x20109
189
190/* function arg error in wwn_list process */
191#define	L_PROC_WWN_ARG_ERROR		0x20110
192
193/* WWN property not found */
194#define	L_NO_WWN_PROP_FOUND		0x20111
195
196/* No driver nodes found for requested driver */
197#define	L_NO_DRIVER_NODES_FOUND		0x20112
198
199/* ULP error on device(s) */
200#define	L_GET_DEV_LIST_ULP_FAILURE	0x20150
201
202/*
203 * Error definitions
204 * for FC Loop (FC4 devices).
205 */
206/* Invalid loop map found */
207#define	L_INVALID_LOOP_MAP		0x20202
208
209/* SFIOCGMAP ioctl failed */
210#define	L_SFIOCGMAP_IOCTL_FAIL		0x20203
211
212/* FCIO_GETMAP ioctl failed */
213#define	L_FCIO_GETMAP_IOCTL_FAIL	0x20204
214
215/* FCIO_LINKSTATUS ioctl failed */
216#define	L_FCIO_LINKSTATUS_FAILED	0x20205
217
218/* FCIO_GETMAP: Invalid # of entries */
219#define	L_FCIOGETMAP_INVLD_LEN		0x20206
220
221/* FCIO_FORCE_LIP ioctl failed. */
222#define	L_FCIO_FORCE_LIP_FAIL		0x20207
223
224/* Error definitions for FC devices */
225/* FCIO_RESET_LINK ioctl failed */
226#define	L_FCIO_RESET_LINK_FAIL		0x20208
227
228/* FCIO_GET_FCODE_REV_FAIL ioctl failed */
229#define	L_FCIO_GET_FCODE_REV_FAIL	0x20209
230
231/* FCIO_GET_FW_REV_FAIL ioctl failed */
232#define	L_FCIO_GET_FW_REV_FAIL		0x20210
233
234/* FCIO_GET_DEV_LIST returns invalid dev. counts */
235#define	L_INVALID_DEVICE_COUNT		0x20211
236
237/* L_FCIO_GET_NUM_DEVS_FAIL ioctl failed */
238#define	L_FCIO_GET_NUM_DEVS_FAIL	0x20212
239
240/* L_FCIO_GET_DEV_LIST_FAIL ioctl failed */
241#define	L_FCIO_GET_DEV_LIST_FAIL	0x20213
242
243/* L_FCIO_GET_LINK_STATUS ioctl failed */
244#define	L_FCIO_GET_LINK_STATUS_FAIL	0x20214
245
246/* L_FCIO_LOOPBACK_INTERNAL or FCIO_CMD/FCIO_LASER_OFF ioctl failed */
247#define	L_PORT_OFFLINE_FAIL		0x20215
248
249/* Internal Loopback or laser off ioctls not supported */
250#define	L_PORT_OFFLINE_UNSUPPORTED	0x20216
251
252/* L_FCIO_NO_LOOPBACK or FCIO_CMD/FCIO_LASER_ON ioctl failed */
253#define	L_PORT_ONLINE_FAIL		0x20217
254
255/* No-Loopback or laser on ioctls not supported */
256#define	L_PORT_ONLINE_UNSUPPORTED	0x20218
257
258/* L_FCIO_GET_HOST_PARAMS ioctl failed */
259#define	L_FCIO_GET_HOST_PARAMS_FAIL	0x20219
260
261/* Loopback mode failure */
262#define	L_LOOPBACK_FAILED		0x20220
263
264/* Loopback unsupported */
265#define	L_LOOPBACK_UNSUPPORTED		0x20221
266
267/* FCIO_FORCE_LIP ioctl failed on one of the paths, say, of an MPXIO device */
268#define	L_FCIO_FORCE_LIP_PARTIAL_FAIL	0x20222
269
270/*
271 * Error definitions
272 * for Fabric FC driver ioctls
273 */
274/* FCP_TGT_INQUIRY ioctl failed */
275#define	L_FCP_TGT_INQUIRY_FAIL		0x20250
276
277/*
278 * Error definitions
279 * for 24-bit address handling
280 */
281/* Private loop address > 0xFF found */
282#define	L_INVALID_PRIVATE_LOOP_ADDRESS	0x20401
283
284/* Encountered an unexpected fibre channel topology value */
285#define	L_UNEXPECTED_FC_TOPOLOGY	0x20402
286
287/* Fabric address was not found */
288#define	L_NO_FABRIC_ADDR_FOUND		0x20403
289
290/* The FCIO_GET_TOPOLOGY ioctl failed */
291#define	L_FCIO_GET_TOPOLOGY_FAIL	0x20404
292
293/* Invalid fabric or public loop address */
294#define	L_INVALID_FABRIC_ADDRESS	0x20405
295
296/* Point to Point fibre channel topology not supported */
297#define	L_PT_PT_FC_TOP_NOT_SUPPORTED	0x20406
298
299/*
300 * Error definitions for Tapestry SAN support.
301 */
302/* The FCIO_DEV_LOGIN ioctl failed */
303#define	L_FCIO_DEV_LOGIN_FAIL		0x20407
304
305/* The FCIO_DEV_LOGOUT ioctl failed */
306#define	L_FCIO_DEV_LOGOUT_FAIL		0x20408
307
308/* Operation not supported on connected topology */
309#define	L_OPNOSUPP_ON_TOPOLOGY		0x20409
310
311/* Operation not supported on the path */
312#define	L_INVALID_PATH_TYPE		0x20410
313
314/* FCIO_GET_STATE ioctl failed */
315#define	L_FCIO_GET_STATE_FAIL		0x20411
316
317/* input WWN not found in dev list */
318#define	L_WWN_NOT_FOUND_IN_DEV_LIST	0x20412
319
320/*
321 * Error definitions for
322 * g_dev_map_init related routines.
323 */
324/* input addr invalid */
325#define	L_INVALID_MAP_DEV_ADDR		0x20430
326
327/* input property invalid */
328#define	L_INVALID_MAP_DEV_PROP_NAME	0x20431
329
330/* input property invalid */
331#define	L_INVALID_MAP_DEV_PROP_TYPE	0x20432
332
333/* input property name invalid */
334#define	L_INVALID_MAP_DEV_PROP		0x20433
335
336/* device not found */
337#define	L_NO_SUCH_DEV_FOUND		0x20434
338
339/* prop not found */
340#define	L_NO_SUCH_PROP_FOUND		0x20435
341
342/* invalid arg found */
343#define	L_INVALID_ARG			0x20436
344
345/*
346 * Error definitions
347 * for Downloading IB FW.
348 */
349/* Invalid download file checksum */
350#define	L_DWNLD_CHKSUM_FAILED		0x20301
351
352/* Unable to read download exec header */
353#define	L_DWNLD_READ_HEADER_FAIL	0x20302
354
355/* Number of bytes read from download file is not correct */
356#define	L_DWNLD_READ_INCORRECT_BYTES	0x20303
357
358/* Wrong text segment size */
359#define	L_DWNLD_INVALID_TEXT_SIZE	0x20304
360
361/* Error reading the download file */
362#define	L_DWNLD_READ_ERROR		0x20305
363
364/* Bad firmware magic found in the download file */
365#define	L_DWNLD_BAD_FRMWARE		0x20306
366
367/* Timeout message for the IB to be available */
368#define	L_DWNLD_TIMED_OUT		0x20307
369
370/* Error with Rec Diag page 1 */
371#define	L_REC_DIAG_PG1			0x20600
372
373/* Invalid transfer Length */
374#define	L_TRANSFER_LEN			0x20601
375
376/* A firmware file must be specified on the command line */
377#define	L_REQUIRE_FILE			0x20602
378
379
380/*
381 * Error definitions
382 * for System Errors
383 */
384#define	L_MALLOC_FAILED			0x30000
385
386#define	L_MEMCPY_FAILED			0x30001
387
388/* Cannot get status for the given path */
389#define	L_LSTAT_ERROR			0x30020
390
391/* Error reading the symbolic link */
392#define	L_SYMLINK_ERROR			0x30021
393
394/* Could not convert std. time to hrs/min/sec */
395#define	L_LOCALTIME_ERROR		0x30022
396
397/* select() system call failed to wait for specified time */
398#define	L_SELECT_ERROR			0x30023
399
400/* uname() system call failed to get the system info. */
401#define	L_UNAME_FAILED			0x30024
402
403/* Cannot get status for the given path */
404#define	L_FSTAT_ERROR			0x30025
405
406/* Cannot get status for the given path */
407#define	L_STAT_ERROR			0x30026
408
409/* di_init() failed to return snapshot of device tree */
410#define	L_DEV_SNAPSHOT_FAILED		0x30027
411
412/* di_drv_first_node() failed to find a valid driver */
413#define	L_PORT_DRIVER_NOT_FOUND		0x30029
414
415/* failed to find any device paths */
416#define	L_PHYS_PATH_NOT_FOUND		0x30030
417
418/* No device identifier found  */
419#define	L_NO_DEVID			0x30031
420
421/* Driver not supported */
422#define	L_DRIVER_NOTSUPP		0x30032
423
424/* di_prom_init failure */
425#define	L_PROM_INIT_FAILED		0x30033
426
427/*
428 * Error definitions
429 * for individual
430 * devices.
431 */
432/* Device busy */
433#define	L_DEV_BUSY			0x40000
434
435/* Disk reserved */
436#define	L_DEVICE_RESERVED		0x40001
437
438/* One or more disks in enclosure are reserved */
439#define	L_DISKS_RESERVED		0x40002
440
441/* Exclusive open to a device failed. May be busy */
442#define	L_EXCL_OPEN_FAILED		0x40003
443
444/* Empty slot: Device not installed */
445#define	L_SLOT_EMPTY			0x40100
446
447
448/*
449 * Error definitions
450 * for Devctl functions.
451 */
452/* Devctl acquire fails */
453#define	L_ACQUIRE_FAIL			0x40200
454
455
456/* Power off fails. Device may be busy */
457#define	L_POWER_OFF_FAIL_BUSY		0x40300
458
459
460/*
461 * Error definitions
462 * specific to Enclosure.
463 */
464/* Failed to change the enclosure name */
465#define	L_ENCL_NAME_CHANGE_FAIL		0x40400
466
467/* Duplicate enclosure names found */
468#define	L_DUPLICATE_ENCLOSURES		0x40401
469
470/* Invalid no. of dsks in SENA enclosure */
471#define	L_INVALID_NUM_DISKS_ENCL	0x40402
472
473/* Path is not to a SENA ecnlosure. */
474#define	L_ENCL_INVALID_PATH		0x40403
475
476/* Cannot get the box list */
477#define	L_NO_ENCL_LIST_FOUND		0x40404
478
479
480/*
481 * Error definitions
482 * specific to IB.
483 */
484/* No element returned from the enclosure */
485#define	L_IB_NO_ELEM_FOUND		0x40500
486
487/* Invalid page code found in Receive Diag. page.   */
488#define	L_RD_PG_INVLD_CODE		0x40501
489
490/* Reading Receive Diag. page failed: small buffer. */
491#define	L_RD_PG_MIN_BUFF		0x40502
492
493/* Get status failed    */
494#define	L_GET_STATUS_FAILED		0x40600
495
496/* Warning define. */
497#define	L_WARNING			0x90000
498
499/*
500 * For i18n
501 */
502#include <nl_types.h>
503extern nl_catd l_catd;
504#define	L_SET1				1	/* catalog set number */
505#define	MSGSTR(Num, Str)	catgets(l_catd, L_SET1, Num, Str)
506
507
508#ifdef	__cplusplus
509}
510#endif
511
512#endif	/* _STGCOM_H */
513