/* * Copyright (C) 2011 Aastha Mehta * Copyright (C) 2011 Mike Christie * * maintained by open-iscsi@googlegroups.com * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published * by the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License for more details. * * See the file COPYING included with this distribution for more details. */ #include #include #include #include "iscsi_if.h" #include "kern_err_table.h" const char *kern_err_code_to_string(int err) { switch (err){ case ISCSI_OK: return "ISCSI_OK: operation successful"; case ISCSI_ERR_DATASN: return "ISCSI_ERR_DATASN: Received invalid data sequence " "number from target"; case ISCSI_ERR_DATA_OFFSET: return "ISCSI_ERR_DATA_OFFSET: Seeking offset beyond the size " "of the iSCSI segment"; case ISCSI_ERR_MAX_CMDSN: return "ISCSI_ERR_MAX_CMDSN: Received invalid command sequence " "number from target"; case ISCSI_ERR_EXP_CMDSN: return "ISCSI_ERR_EXP_CMDSN: Received invalid expected command " "sequence number from target"; case ISCSI_ERR_BAD_OPCODE: return "ISCSI_ERR_BAD_OPCODE: Received an invalid iSCSI opcode"; case ISCSI_ERR_DATALEN: return "ISCSI_ERR_DATALEN: Invalid data length value"; case ISCSI_ERR_AHSLEN: return "ISCSI_ERR_AHSLEN: Received an invalid AHS length"; case ISCSI_ERR_PROTO: return "ISCSI_ERR_PROTO: iSCSI protocol violation"; case ISCSI_ERR_LUN: return "ISCSI_ERR_LUN: LUN mismatch"; case ISCSI_ERR_BAD_ITT: return "ISCSI_ERR_BAD_ITT: Received invalid initiator task tag " "from target"; case ISCSI_ERR_CONN_FAILED: return "ISCSI_ERR_CONN_FAILED: iSCSI connection failed"; case ISCSI_ERR_R2TSN: return "ISCSI_ERR_R2TSN: Received invalid R2T (Ready to " "Transfer) data sequence number from target"; case ISCSI_ERR_SESSION_FAILED: return "ISCSI_ERR_SESSION_FAILED: iSCSI session failed"; case ISCSI_ERR_HDR_DGST: return "ISCSI_ERR_HDR_DGST: Header digest mismatch"; case ISCSI_ERR_DATA_DGST: return "ISCSI_ERR_DATA_DGST: Data digest mismatch"; case ISCSI_ERR_PARAM_NOT_FOUND: return "ISCSI_ERR_PARAM_NOT_FOUND: Parameter not found"; case ISCSI_ERR_NO_SCSI_CMD: return "ISCSI_ERR_NO_SCSI_CMD: Could not look up SCSI command"; case ISCSI_ERR_INVALID_HOST: return "ISCSI_ERR_INVALID_HOST: iSCSI host is in an invalid " "state"; case ISCSI_ERR_XMIT_FAILED: return "ISCSI_ERR_XMIT_FAILED: Transmission of iSCSI packet " "failed"; case ISCSI_ERR_TCP_CONN_CLOSE: return "ISCSI_ERR_TCP_CONN_CLOSE: TCP connection closed"; case ISCSI_ERR_SCSI_EH_SESSION_RST: return "ISCSI_ERR_SCSI_EH_SESSION_RST: Session was dropped as " "a result of SCSI error recovery"; case ISCSI_ERR_NOP_TIMEDOUT: return "ISCSI_ERR_NOP_TIMEDOUT: A NOP has timed out"; default: return "Invalid or unknown error code"; } }