| /* |
| * iSNS protocol data types |
| * |
| * Copyright (C) 2006 FUJITA Tomonori <tomof@acm.org> |
| * Copyright (C) 2007 - 2018 Vladislav Bolkhovitin |
| * Copyright (C) 2007 - 2018 Western Digital Corporation |
| * |
| * 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. |
| * |
| * You should have received a copy of the GNU General Public License |
| * along with this program. |
| */ |
| |
| #ifndef ISNS_PROTO_H |
| #define ISNS_PROTO_H |
| |
| #define ISNS_PORT 3205 |
| #define ISNS_ALIGN 4 |
| |
| struct isns_hdr { |
| uint16_t version; |
| uint16_t function; |
| uint16_t length; |
| uint16_t flags; |
| uint16_t transaction; |
| uint16_t sequence; |
| uint32_t pdu[0]; |
| } __attribute__ ((packed)); |
| |
| struct isns_tlv { |
| uint32_t tag; |
| uint32_t length; |
| uint32_t value[]; |
| } __attribute__ ((packed)); |
| |
| /* Commands and responses (4.1.3) */ |
| #define ISNS_FUNC_DEV_ATTR_REG 0x0001 |
| #define ISNS_FUNC_DEV_ATTR_QRY 0x0002 |
| #define ISNS_FUNC_DEV_GET_NEXT 0x0003 |
| #define ISNS_FUNC_DEV_DEREG 0x0004 |
| #define ISNS_FUNC_SCN_REG 0x0005 |
| #define ISNS_FUNC_SCN_DEREG 0x0006 |
| #define ISNS_FUNC_SCN_EVENT 0x0007 |
| #define ISNS_FUNC_SCN 0x0008 |
| #define ISNS_FUNC_DD_REG 0x0009 |
| #define ISNS_FUNC_DD_DEREG 0x000a |
| #define ISNS_FUNC_DDS_REG 0x000b |
| #define ISNS_FUNC_DDS_DEREG 0x000c |
| #define ISNS_FUNC_ESI 0x000d |
| #define ISNS_FUNC_HEARTBEAT 0x000e |
| |
| #define ISNS_FUNC_DEV_ATTR_REG_RSP 0x8001 |
| #define ISNS_FUNC_DEV_ATTR_QRY_RSP 0x8002 |
| #define ISNS_FUNC_DEV_GET_NEXT_RSP 0x8003 |
| #define ISNS_FUNC_DEV_DEREG_RSP 0x8004 |
| #define ISNS_FUNC_SCN_REG_RSP 0x8005 |
| #define ISNS_FUNC_SCN_DEREG_RSP 0x8006 |
| #define ISNS_FUNC_SCN_EVENT_RSP 0x8007 |
| #define ISNS_FUNC_SCN_RSP 0x8008 |
| #define ISNS_FUNC_DD_REG_RSP 0x8009 |
| #define ISNS_FUNC_DD_DEREG_RSP 0x800a |
| #define ISNS_FUNC_DDS_REG_RSP 0x800b |
| #define ISNS_FUNC_DDS_DEREG_RSP 0x800c |
| #define ISNS_FUNC_ESI_RSP 0x800d |
| |
| /* iSNSP flags (5.1.4) */ |
| #define ISNS_FLAG_CLIENT (1U << 15) |
| #define ISNS_FLAG_SERVER (1U << 14) |
| #define ISNS_FLAG_AUTH (1U << 13) |
| #define ISNS_FLAG_REPLACE (1U << 12) |
| #define ISNS_FLAG_LAST_PDU (1U << 11) |
| #define ISNS_FLAG_FIRST_PDU (1U << 10) |
| |
| /* Response Status Codes (5.4) */ |
| #define ISNS_STATUS_SUCCESS 0 |
| #define ISNS_STATUS_UNKNOWN_ERROR 1 |
| #define ISNS_STATUS_FORMAT_ERROR 2 |
| #define ISNS_STATUS_INVALID_REGISTRATION 3 |
| #define ISNS_STATUS_RESERVED 4 |
| #define ISNS_STATUS_INVALID_QUERY 5 |
| #define ISNS_STATUS_SOURCE_UNKNOWN 6 |
| #define ISNS_STATUS_SOURCE_ABSENT 7 |
| #define ISNS_STATUS_SOURCE_UNAUTHORIZED 8 |
| #define ISNS_STATUS_NO_SUCH_ENTRY 9 |
| #define ISNS_STATUS_VERSION_NOT_SUPPORTED 10 |
| #define ISNS_STATUS_INTERNAL_ERROR 11 |
| #define ISNS_STATUS_BUSY 12 |
| #define ISNS_STATUS_OPTION_NOT_UNDERSTOOD 13 |
| #define ISNS_STATUS_INVALID_UPDATE 14 |
| #define ISNS_STATUS_MESSAGE_NOT_SUPPORTED 15 |
| #define ISNS_STATUS_SCN_EVENT_REJECTED 16 |
| #define ISNS_STATUS_SCN_REGISTRATION_REJECTED 17 |
| #define ISNS_STATUS_ATTRIBUTE_NOT_IMPLEMENTED 18 |
| #define ISNS_STATUS_FC_DOMAIN_ID_NOT_AVAILABLE 19 |
| #define ISNS_STATUS_FC_DOMAIN_ID_NOT_ALLOCATED 20 |
| #define ISNS_STATUS_ESI_NOT_AVAILABLE 21 |
| #define ISNS_STATUS_INVALIDE_DEREGISTRATION 22 |
| #define ISNS_STATUS_REGISTRATION_NOT_SUPPORTED 23 |
| |
| /* Node type (5.4.2) */ |
| #define ISNS_NODE_CONTROL (1U << 2) |
| #define ISNS_NODE_INITIATOR (1U << 1) |
| #define ISNS_NODE_TARGET (1U << 0) |
| |
| /* Attributes (6.1) */ |
| #define ISNS_ATTR_DELIMITER 0 |
| #define ISNS_ATTR_ENTITY_IDENTIFIER 1 |
| #define ISNS_ATTR_ENTITY_PROTOCOL 2 |
| #define ISNS_ATTR_MANAGEMENT_IP_ADDRESS 3 |
| #define ISNS_ATTR_TIMESTAMP 4 |
| #define ISNS_ATTR_PROTOCOL_VERSION_RANGE 5 |
| #define ISNS_ATTR_REGISTRATION_PERIOD 6 |
| #define ISNS_ATTR_ENTITY_INDEX 7 |
| #define ISNS_ATTR_ENTITY_NEXT_INDEX 8 |
| #define ISNS_ATTR_ISAKMP_PHASE1 11 |
| #define ISNS_ATTR_CERTIFICATE 12 |
| #define ISNS_ATTR_PORTAL_IP_ADDRESS 16 |
| #define ISNS_ATTR_PORTAL_PORT 17 |
| #define ISNS_ATTR_PORTAL_SYMBOLIC_NAME 18 |
| #define ISNS_ATTR_ESI_INTERVAL 19 |
| #define ISNS_ATTR_ESI_PORT 20 |
| #define ISNS_ATTR_PORTAL_INDEX 22 |
| #define ISNS_ATTR_SCN_PORT 23 |
| #define ISNS_ATTR_PORTAL_NEXT_INDEX 24 |
| #define ISNS_ATTR_PORTAL_SECURITY_BITMAP 27 |
| #define ISNS_ATTR_PORTAL_ISAKMP_PHASE1 28 |
| #define ISNS_ATTR_PORTAL_ISAKMP_PHASE2 29 |
| #define ISNS_ATTR_PORTAL_CERTIFICATE 31 |
| #define ISNS_ATTR_ISCSI_NAME 32 |
| #define ISNS_ATTR_ISCSI_NODE_TYPE 33 |
| #define ISNS_ATTR_ISCSI_ALIAS 34 |
| #define ISNS_ATTR_ISCSI_SCN_BITMAP 35 |
| #define ISNS_ATTR_ISCSI_NODE_INDEX 36 |
| #define ISNS_ATTR_WWNN_TOKEN 37 |
| #define ISNS_ATTR_ISCSI_NODE_NEXT_INDEX 38 |
| #define ISNS_ATTR_ISCSI_AUTHMETHOD 42 |
| #define ISNS_ATTR_PG_ISCSI_NAME 48 |
| #define ISNS_ATTR_PG_PORTAL_IP_ADDRESS 49 |
| #define ISNS_ATTR_PG_PORTAL_PORT 50 |
| #define ISNS_ATTR_PG_TAG 51 |
| #define ISNS_ATTR_PG_INDEX 52 |
| #define ISNS_ATTR_PG_NEXT_INDEX 53 |
| #define ISNS_ATTR_FC_PORT_NAME_WWPN 64 |
| #define ISNS_ATTR_PORT_ID 65 |
| #define ISNS_ATTR_PORT_TYPE 66 |
| #define ISNS_ATTR_SYMBOLIC_PORT_NAME 67 |
| #define ISNS_ATTR_FABRIC_PORT_NAME 68 |
| #define ISNS_ATTR_HARD_ADDRESS 69 |
| #define ISNS_ATTR_PORT_IP_ADDRESS 70 |
| #define ISNS_ATTR_CLASS_OF_SERVICE 71 |
| #define ISNS_ATTR_FC4_TYPES 72 |
| #define ISNS_ATTR_FC4_DESCRIPOTR 73 |
| #define ISNS_ATTR_FC4_FEATURES 74 |
| #define ISNS_ATTR_IFCP_SCN_BITMAP 75 |
| #define ISNS_ATTR_PORT_ROLE 76 |
| #define ISNS_ATTR_PERMANENT_PORT_NAME 77 |
| #define ISNS_ATTR_FC4_TYPE_CODE 95 |
| #define ISNS_ATTR_FC_NODE_NAME_WWNN 96 |
| #define ISNS_ATTR_SYMBOLIC_NODE_NAME 97 |
| #define ISNS_ATTR_NODE_IP_ADDRESS 98 |
| #define ISNS_ATTR_NODE_IPA 99 |
| #define ISNS_ATTR_PORXY_ISCSI_NAME 101 |
| #define ISNS_ATTR_SWITCH_NAME 128 |
| #define ISNS_ATTR_PREFERRED_ID 129 |
| #define ISNS_ATTR_ASSIGNED_ID 130 |
| #define ISNS_ATTR_VIRTUAL_FABRIC_ID 131 |
| #define ISNS_ATTR_ISNS_SERVER_VENDOR_OUI 256 |
| #define ISNS_ATTR_DD_SET_ID 2049 |
| #define ISNS_ATTR_DD_SET_SYM_NAME 2050 |
| #define ISNS_ATTR_DD_SET_STATUS 2051 |
| #define ISNS_ATTR_DD_SET_NEXT_ID 2052 |
| #define ISNS_ATTR_DD_ID 2065 |
| #define ISNS_ATTR_DD_SYMBOLIC_NAME 2066 |
| #define ISNS_ATTR_DD_MEMBER_ISCSI_INDEX 2067 |
| #define ISNS_ATTR_DD_MEMBER_ISCSI_NAME 2068 |
| #define ISNS_ATTR_DD_MEMBER_FC_PORT_NAME 2069 |
| #define ISNS_ATTR_DD_MEMBER_PORTAL_INDEX 2070 |
| #define ISNS_ATTR_DD_MEMBER_IP_ADDR 2071 |
| #define ISNS_ATTR_DD_MEMBER_TCP_UDP 2072 |
| #define ISNS_ATTR_DD_FEATURES 2078 |
| #define ISNS_ATTR_DD_ID_NEXT_ID 2079 |
| |
| /* SCN flags (6.4.4) */ |
| #define ISNS_SCN_FLAG_INITIATOR (1U << 24) |
| #define ISNS_SCN_FLAG_TARGET (1U << 25) |
| #define ISNS_SCN_FLAG_MANAGEMENT (1U << 26) |
| #define ISNS_SCN_FLAG_OBJECT_REMOVE (1U << 27) |
| #define ISNS_SCN_FLAG_OBJECT_ADDED (1U << 28) |
| #define ISNS_SCN_FLAG_OBJECT_UPDATED (1U << 29) |
| #define ISNS_SCN_FLAG_DD_REMOVED (1U << 30) |
| #define ISNS_SCN_FLAG_DD_ADDED (1U << 31) |
| #endif |