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 36 extern "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> 503 extern 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