/**/ /***************************************************************************/ /** **/ /** © Copyright 2010, Hewlett-Packard Development Company, L.P. **/ /** **/ /** Confidential computer software. Valid license from HP and/or **/ /** its subsidiaries required for possession, use, or copying. **/ /** **/ /** Consistent with FAR 12.211 and 12.212, Commercial Computer Software, **/ /** Computer Software Documentation, and Technical Data for Commercial **/ /** Items are licensed to the U.S. Government under vendor's standard **/ /** commercial license. **/ /** **/ /** Neither HP nor any of its subsidiaries shall be liable for technical **/ /** or editorial errors or omissions contained herein. The information **/ /** in this document is provided "as is" without warranty of any kind and **/ /** is subject to change without notice. The warranties for HP products **/ /** are set forth in the express limited warranty statements accompanying **/ /** such products. Nothing herein should be construed as constituting an **/ /** additional warranty. **/ /** **/ /***************************************************************************/ /********************************************************************************************************************************/ /* Created: 30-Mar-2010 17:25:38 by OpenVMS SDL EV3-3 */ /* Source: 15-JAN-2009 14:14:37 $1$DGA7274:[LIB_H.SRC]FCPHDEF.SDL;1 */ /********************************************************************************************************************************/ /*** MODULE FCPHDEF IDENT X-6 ***/ #ifndef __FCPHDEF_LOADED #define __FCPHDEF_LOADED 1 #pragma __nostandard /* This file uses non-ANSI-Standard features */ #pragma __member_alignment __save #pragma __nomember_alignment #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __save /* Save the previously-defined required ptr size */ #pragma __required_pointer_size __short /* And set ptr size default to 32-bit pointers */ #endif #ifdef __cplusplus extern "C" { #define __unknown_params ... #define __optional_params ... #else #define __unknown_params #define __optional_params ... #endif #ifndef __struct #if !defined(__VAXC) #define __struct struct #else #define __struct variant_struct #endif #endif #ifndef __union #if !defined(__VAXC) #define __union union #else #define __union variant_union #endif #endif /*+ */ /* FCPHDEF - */ /*- */ #ifndef _FCPHDEF_LOADED #define _FCPHDEF_LOADED #include /*+ */ /* */ /* Extended Link Service codes */ /* */ /* If the code represents an Extended Link Service request, and not */ /* a response (what the documents above call a reply), then it will */ /* appear in bits 31:24 of word 0 of the payload sent with the */ /* following frame header control bits: */ /* */ /* * Routing, Word 0, bits 31:28 = 0x02 (R_CTL) */ /* * Information Category, Word 0, bits 27:24 = 0x02 (Unsolicited Control) */ /* * Type, Word 1, bits 31:24 = 0x01 */ /* */ /* If the code represents a response, the following values appear: */ /* */ /* * Routing, Word 0 (R_CTL), bits 31:28 = 0x02 */ /* * Information Category, Word 0, bits 27:24 = 0x02 (Solicited Control) */ /* * Type, Word 1, bits 31:24 = 0x01 */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface-2 (FC-PH-2) Rev 7.3 */ /* Working draft of 5-January-1996 */ /* Page 36, table 61 */ /* */ /*- */ #define ELS$K_LS_RJT 1 /* 0x01 Link Service Reject (response) */ #define ELS$K_ACC 2 /* 0x02 Accept (response) */ #define ELS$K_PLOGI 3 /* 0x03 N_Port Login */ #define ELS$K_FLOGI 4 /* 0x04 F_Port Login */ #define ELS$K_LOGO 5 /* 0x05 Logout */ #define ELS$K_ABTX 6 /* 0x06 Abort Exchange */ #define ELS$K_RSC 7 /* 0x07 Read Connection Status */ #define ELS$K_RES 8 /* 0x08 Read Exchange Status Block */ #define ELS$K_RSS 9 /* 0x09 Read Sequence Status Block */ #define ELS$K_RSI 10 /* 0x0A Request Sequence Initiative */ #define ELS$K_ESTS 11 /* 0x0B Establish Streaming */ #define ELS$K_ESTC 12 /* 0x0C Estimate Credit */ #define ELS$K_ADVC 13 /* 0x0D Advise Credit */ #define ELS$K_RTV 14 /* 0x0E Read Time-Out Value */ #define ELS$K_RLS 15 /* 0x0F Read Link Status */ #define ELS$K_ECHO 16 /* 0x10 Echo */ #define ELS$K_TEST 17 /* 0x11 Test */ #define ELS$K_RRQ 18 /* 0x12 Reinstate Recovery Qualifier */ #define ELS$K_ELP 16 #define ELS$K_PRLI 32 /* 0x20 Process Login */ #define ELS$K_PRLO 33 /* 0x21 Process Logout */ #define ELS$K_SCN 34 /* 0x22 State Change Notification */ #define ELS$K_TPLS 35 /* 0x23 Test Process Login State */ #define ELS$K_TPRLO 36 /* 0x24 Third Party Logout State */ #define ELS$K_GAID 48 /* 0x30 Get Alias_ID */ #define ELS$K_FACT 49 /* 0x31 Fabric Activate Alias_ID */ #define ELS$K_FDACT 50 /* 0x32 Fabric Deactivate Alias_ID */ #define ELS$K_NACT 51 /* 0x33 N_Port Activate Alias_ID */ #define ELS$K_NDACT 52 /* 0x34 N_Port Deactivate Alias_ID */ #define ELS$K_QOSR 64 /* 0x40 Quality of Service Request */ #define ELS$K_RVCS 65 /* 0x41 Read Virtual Circuit Status */ #define ELS$K_PDISC 80 /* 0x50 Discover N_Port Service Parameters */ #define ELS$K_FDISC 81 /* 0x51 Discover F_Port Service Parameters */ #define ELS$K_ADISC 82 /* 0x52 Discover Address */ #define ELS$K_RNC 83 /* 0x53 Report Node Capability */ #define ELS$K_FARP_REQ 84 /* 0X54 Fibre Channel Addr resolution proto rq */ #define ELS$K_FARP_REPLY 85 /* 0x55 Fibre Channel Addr resolution proto reply */ #define ELS$K_RPS 86 /* 0x56 Read Port Status Block */ #define ELS$K_RPL 87 /* 0X57 Read Port List */ #define ELS$K_FAN 96 /* 0x60 Fabric Address Notification */ #define ELS$K_RSCN 97 /* 0x61 Registered State Change Notification */ #define ELS$K_SCR 98 /* 0x62 State Change Request */ #define ELS$K_RNFT 99 /* 0x63 Report node FC-4 types */ #define ELS$K_RNID 120 /* 0x78 Request Node Identification data */ #define ELS$K_RLIR 121 /* 0x79 Registered Link Incident Report */ #define ELS$K_LIRR 122 /* 0x7A Link Incident Record Registration */ #define ELS$K_SRL 123 /* 0x7B Scan Remote Loop */ /*+ */ /* */ /* Frame Header type codes for when routing bits are set to */ /* FC-4 Device Data or FC-4 Link Data. */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of June 1, 1994 */ /* Page 100 table 36 */ /* */ /*- */ #define FCPH$K_ISO_8802_2_LLC 4 /* 0x04 ISO/IEC 8802-2 LLC */ #define FCPH$K_ISO_8802_2_LLC_SNAP 5 /* 0x05 ISO/IEC 8802-2 LLC/SNAP */ #define FCPH$K_RESERVED_1 6 /* 0x06 Reserved */ #define FCPH$K_RESERVED_2 7 /* 0x07 Reserved */ #define FCPH$K_SCSI_FCP 8 /* 0x08 SCSI FCP */ #define FCPH$K_SCSI_GPP 9 /* 0x09 SCSI GPP */ #define FCPH$K_IPI_3 16 #define FCPH$K_IPI_MASTER 17 #define FCPH$K_IPI_SLAVE 18 #define FCPH$K_IPI_PEER 19 #define FCPH$K_CP_IPI_MASTER 21 #define FCPH$K_CP_IPI_SLAVE 22 #define FCPH$K_CP_IPI_PEER 23 #define FCPH$K_SBCCS_CHANNEL 25 #define FCPH$K_SBCCS_CONTROL_UNIT 26 #define FCPH$K_FIBRE_CHANNEL_SERVICES 32 /*+ */ /* */ /* Frame Header type codes for when routing bits are set to */ /* Basic or Extended Link Data. */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of June 1, 1994 */ /* Page 100 table 34 */ /* */ /*- */ #define FCPH$K_BASIC_LINK_SRVC_TYPE 0 #define FCPH$K_EXTENDED_LINK_SRVC_TYPE 1 #define FCPH$K_ALL_ONES_MASK 255 /*+ */ /* */ /* Information Categories used in the R_CTL frame header */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of June 1, 1994 */ /* Page 98 table 29 */ /* */ /*- */ #define FCPH$K_UNCAT_INFO 0 /* Uncategorized information */ #define FCPH$K_SOLICITED_DATA 1 #define FCPH$K_UNSOLICITED_CONTROL 2 #define FCPH$K_SOLICITED_CONTROL 3 #define FCPH$K_UNSOLICITED_DATA 4 #define FCPH$K_DATA_DESCRIPTOR 5 #define FCPH$K_UNSOLICITED_COMMAND 6 #define FCPH$K_COMMAND_STATUS 7 /*+ */ /* */ /* Routing Bits used in the R_CTL frame header field */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of June 1, 1994 */ /* Page 97 table 28 */ /* */ /*- */ #define FCPH$K_DEVICE_DATA 0 /* 0x00 FC-4 Device data frame */ #define FCPH$K_RESERVED_3 1 /* 0x01 */ #define FCPH$K_EXTENDED_LINK_SRVC 2 /* 0x02 */ #define FCPH$K_LINK_DATA 3 /* 0x03 FC-4 Link Data */ #define FCPH$K_VIDEO_DATA 4 /* 0x04 */ #define FCPH$K_RESERVED_4 5 /* 0x05 */ #define FCPH$K_RESERVED_5 6 /* 0x06 */ #define FCPH$K_RESERVED_6 7 /* 0x07 */ #define FCPH$K_BASIC_LINK_SRVC 8 /* 0x08 */ #define FCPH$K_RESERVED_7 9 /* 0x09 */ #define FCPH$K_RESERVED_8 10 /* 0x0A */ #define FCPH$K_RESERVED_9 11 /* 0x0B */ #define FCPH$K_LINK_CONTROL 12 /* 0x0C */ #define FCPH$K_FC4_DEVICE_DATA 0 /*+ */ /* */ /* BA_RJT (Basic Reject) Reason Codes */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 140, table 59 */ /* */ /*- */ #define BA_RJT$K_INVALID 1 /* 0x01 Invalid Command Code */ #define BA_RJT$K_LOGICAL_ERR 3 /* 0x03 Logical Error */ #define BA_RJT$K_LOGICAL_BSY 5 /* 0x05 Logical Busy */ #define BA_RJT$K_PROTOCOL_ERR 7 /* 0x07 Protocol Error */ #define BA_RJT$K_UNABLE 9 /* 0x09 Unable to Perform Command Request */ /*+ */ /* */ /* BA_RJT Type */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 139, figure 57 */ /* */ /*- */ typedef struct _ba_rjt_t { char ba_rjt$b_vendor_unique; char ba_rjt$b_reason_exp; char ba_rjt$b_reason; char ba_rjt$b_reserved; } BA_RJT_T; /*+ */ /* */ /* BA_RJT (Basic Reject) Reason Code Explanations */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 140, table 60 */ /* */ /*- */ #define BA_RJT_EXP$K_NO_MORE_INFO 0 /* 0x00 No Additional Explanation */ #define BA_RJT_EXP$K_INVALID_ID_COMBO 3 /* 0x03 Invalid OX_ID - RX_ID Combination */ #define BA_RJT_EXP$K_SEQUENCE_ABORTED 5 /* 0x05 Sequence Aborted, No Sequence Information Provided */ /*+ */ /* */ /* LS_RJT_RSN Type */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 156, figure 58 */ /* */ /*- */ typedef struct _ls_rjt_rsn_t { char ls_rjt_rsn$b_vendor_unique; char ls_rjt_rsn$b_reason_exp; char ls_rjt_rsn$b_reason; char ls_rjt_rsn$b_reserved; } LS_RJT_RSN_T; /*+ */ /* */ /* LS_RJT Type */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 155, section 21.5.2 */ /* */ /*- */ #define LS_RJT$M_RESERVED1 0xFFFFFF typedef struct _ls_rjt { /* ELS command code field */ __struct { unsigned ls_rjt$v_reserved1 : 24; unsigned char ls_rjt$b_els_command_code; } ls_rjt$r_els_command_overlay; /* Reason the request is being rejected */ LS_RJT_RSN_T ls_rjt$r_reason; } LS_RJT; #if !defined(__VAXC) #define ls_rjt$v_reserved1 ls_rjt$r_els_command_overlay.ls_rjt$v_reserved1 #define ls_rjt$b_els_command_code ls_rjt$r_els_command_overlay.ls_rjt$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* LS_RJT (Link Service Reject) Reason Codes */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 156, table 90 */ /* */ /*- */ #define LS_RJT$K_INVALID_LA 1 /* 0x01 Invalid LA Command Code */ #define LS_RJT$K_LOGICAL_ERR 3 /* 0x03 Logical Error */ #define LS_RJT$K_LOGICAL_BSY 5 /* 0x05 Logical Busy */ #define LS_RJT$K_PROTOCOL_ERR 7 /* 0x07 Protocol Error */ #define LS_RJT$K_UNABLE 9 /* 0x09 Unable to Perform Command Request */ #define LS_RJT$K_CMD_UNSUPPORTED 11 /* 0x0B Command Not Supported */ /*+ */ /* */ /* LS_RJT (Link Service Reject) Reason Code Explanations */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 157, table 91 */ /* */ /*- */ #define LS_RJT_EXP$K_NO_MORE_INFO 0 /* 0x00 No Additional Explanation */ #define LS_RJT_EXP$K_SPARM_OPTS 1 /* 0x01 Service Parameter Error - Options */ #define LS_RJT_EXP$K_SPARM_INI_CTL 3 /* 0x03 Service Parameter Error - Initiator Control */ #define LS_RJT_EXP$K_SPARM_REC_CTL 5 /* 0x05 Service Parameter Error - Recipient Control */ #define LS_RJT_EXP$K_SPARM_RDAT_FLD_SZ 7 /* 0x07 Service Parameter Error - Receive Data Field Size */ #define LS_RJT_EXP$K_SPARM_CONCUR_SEQ 9 /* 0x09 Service Parameter Error - Concurrent Sequences */ #define LS_RJT_EXP$K_SPARM_CREDIT 11 /* 0x0B Service Parameter Error - Credit */ #define LS_RJT_EXP$K_INV_PORT_NAME 13 /* 0x0D Invalid N-Port or F-Port Name */ #define LS_RJT_EXP$K_INV_NAME 14 /* 0x0E Invalid Node or Fabric Name */ #define LS_RJT_EXP$K_INV_COMMON_SPARMS 15 /* 0x0F Invalid Common Service Parameters */ #define LS_RJT_EXP$K_INV_ASSOC_HDR 17 /* 0x11 Invalid Association Header */ #define LS_RJT_EXP$K_ASSOC_HDR_REQ 19 /* 0x13 Association Header Required */ #define LS_RJT_EXP$K_INV_ORIG_S_ID 21 /* 0x15 Invalid Originator S_ID */ #define LS_RJT_EXP$K_INV_ID_COMBO 23 /* 0x17 Invalid OX_ID + RX_ID Combination */ #define LS_RJT_EXP$K_CMD_REQ_IN_PROG 25 /* 0x19 Command or Request Already in Progress */ #define LS_RJT_EXP$K_INV_N_PORT_ID 31 /* 0x1F Invalid N-Port Identifier */ #define LS_RJT_EXP$K_INV_SEQ_ID 33 /* 0x21 Invalid Sequence Identifier (SEQ_ID) */ #define LS_RJT_EXP$K_INV_EXC_ABORT 35 /* 0x23 Attempt to Abort an Invalid Exchange */ #define LS_RJT_EXP$K_INACT_EXC_ABORT 37 /* 0x25 Attempt to Abort an Inactive Exchange */ #define LS_RJT_EXP$K_REC_QUAL_REQ 39 /* 0x27 Recovery Qualifier Required */ #define LS_RJT_EXP$K_INSF_RES_FOR_LOGIN 41 /* 0x29 Insufficent Resources to Support Login */ #define LS_RJT_EXP$K_UNABLE_REQ_DAT 42 /* 0x2A Unable to Supply Requested Data */ #define LS_RJT_EXP$K_REQ_UNSUP 44 /* 0x2C Request Not Supported */ /*+ */ /* */ /* F_BSY Type */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 126, figure 54 */ /* */ /*- */ #define F_BSY$M_REASON 0xF #define F_BSY$M_LINK_CONTROL 0xF0 typedef struct _f_bsy_t { unsigned f_bsy$v_reason : 4; unsigned f_bsy$v_link_control : 4; } F_BSY_T; /*+ */ /* */ /* F_BSY Reason codes */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 126, table 51 */ /* */ /*- */ #define F_BSY_RSN$K_FABRIC_BSY 1 #define F_BSY_RSN$K_N_PORT_BSY 3 /*+ */ /* */ /* P_BSY Type */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 127, figure 55 */ /* */ /*- */ typedef struct _p_bsy_t { char p_bsy$b_vendor_unique; char p_bsy$b_reserved1; char p_bsy$b_reason; char p_bsy$b_action; } P_BSY_T; /*+ */ /* */ /* P_BSY Action codes */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 127, table 52 */ /* */ /*- */ #define P_BSY_ACTION$K_SEQ_TERM 1 #define P_BSY_ACTION$K_SEQ_ACT 2 /*+ */ /* */ /* P_BSY Reason codes */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 128, table 53 */ /* */ /*- */ #define P_BSY_RSN$K_PHYS_N_PORT_BSY 1 #define P_BSY_RSN$K_N_PORT_RES_BSY 3 #define P_BSY_RSN$K_VENDOR_UNIQUE_BSY 255 /*+ */ /* */ /* P_BSY Type */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 128, figure 56 */ /* */ /*- */ typedef struct _rjt_t { char rjt$b_vendor_unique; char rjt$b_reserved1; char rjt$b_reason; char rjt$b_action; } RJT_T; /*+ */ /* */ /* Reject Action codes */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 129, table 54 */ /* */ /*- */ #define RJT_ACTION$K_RETRYABLE_ERR 1 #define RJT_ACTION$K_NON_RETRYABLE_ERR 2 /*+ */ /* */ /* Reject Reason codes */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Pages 129-130, table 55 */ /* */ /*- */ #define RJT_RSN$K_INV_D_ID 1 /* 0x01 Invalid D_ID */ #define RJT_RSN$K_INV_S_ID 2 /* 0x02 Invalid S_ID */ #define RJT_RSN$K_PORT_UNAVAIL_TEMP 3 /* 0x03 N-Port Not Available, Temporary */ #define RJT_RSN$K_PORT_UNAVAIL_PERM 4 /* 0x04 N-Port Not Available, Permanent */ #define RJT_RSN$K_CLASS_UNSUP 5 /* 0x05 Class Not Supported */ #define RJT_RSN$K_DELIM_USE_ERR 6 /* 0x06 Delimiter Usage Error */ #define RJT_RSN$K_TYPE_UNSUP 7 /* 0x07 TYPE Not Supported */ #define RJT_RSN$K_INV_LINK_CTL 8 /* 0x08 Invalid Link Control */ #define RJT_RSN$K_INV_R_CTL 9 /* 0x09 Invalid R_CTL Field */ #define RJT_RSN$K_INV_F_CTL 10 /* 0x0A Invalid F_CTL Field */ #define RJT_RSN$K_INV_OX_ID 11 /* 0x0B Invalid OX_ID */ #define RJT_RSN$K_INV_RX_ID 12 /* 0x0C Invalid RX_ID */ #define RJT_RSN$K_INV_SEQ_ID 13 /* 0x0D Invalid SEQ_ID */ #define RJT_RSN$K_INV_DF_CTL 14 /* 0x0E Invalid DF_CTL */ #define RJT_RSN$K_INV_SEQ_CNT 15 /* 0x0F Invalid SEQ_CNT */ #define RJT_RSN$K_INV_PARM_FLD 16 /* 0x10 Invalid Parameter Field */ #define RJT_RSN$K_EXC_ERR 17 /* 0x11 Exchange Error */ #define RJT_RSN$K_PROTOCOL_ERR 18 /* 0x12 Protocol Error */ #define RJT_RSN$K_INCORRECT_LEN 19 /* 0x13 Incorrect Length */ #define RJT_RSN$K_UNEXPECTED_ACK 20 /* 0x14 Unexpected ACK */ #define RJT_RSN$K_RESERVED_0X15 21 /* 0x15 Reserved */ #define RJT_RSN$K_LOGIN_REQUIRED 22 /* 0x16 Login Required */ #define RJT_RSN$K_EXCESS_SEQ_ATTEMPT 23 /* 0x17 Excessive Sequences Attempted */ #define RJT_RSN$K_UNABLE_EST_EXC 24 /* 0x18 Unable to Establish Exchange */ #define RJT_RSN$K_EXP_SEC_HDR_UNSUP 25 /* 0x19 Expiration Security Header Not Supported */ #define RJT_RSN$K_FABRIC_PATH_UNAVAIL 26 /* 0x1A Fabric Path Not Available */ #define RJT_RSN$K_VENDOR_UNIQUE_ERR 255 /* 0xFF Vendor Unique Error */ /*+ */ /* */ /* A single structure is used to define Service Parameters for each of */ /* the classes of service, with the understanding that some parameters */ /* are meaningless for some classes. The following data structure defines */ /* the format of the Service Parameters. Note that this is not the same */ /* as the Common Service Parameters structure which is used to define */ /* values which do apply to a N-Port or F-Port Login regardless of the */ /* class of service used to perform any particular Exchange. */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 185, figure 62 */ /* */ /* Table 101 on page 186 of the same reference is used to determine */ /* which Service Parameter fields are valid for a particular class */ /* of service for both N-Port and F-Port Logins. */ /* */ /*- */ #define SPR$M_INI_CTL_RESERVED 0x3FF #define SPR$M_INI_ACK_N_SUPPORTED 0x400 #define SPR$M_INI_ACK_0_SUPPORTED 0x800 #define SPR$M_INI_RSP_PRC_ASSOC 0x3000 #define SPR$M_INI_X_ID_REASGN_REQ 0xC000 #define SPR$M_SRV_OPT_RESERVED 0x7FF #define SPR$M_SEQ_DELIVERY 0x800 #define SPR$M_STACKED_CON_REQ 0x3000 #define SPR$M_INTERMIX_MODE 0x4000 #define SPR$M_CLASS_VALID 0x8000 #define SPR$M_RECEIVE_DATA_FIELD_SIZE 0xFFF #define SPR$M_RESERVED_FOR_FABRIC 0xF #define SPR$M_RESERVED1 0xF0 #define SPR$M_R_CATEGORIES_PER_SEQUENCE 0x300 #define SPR$M_RESERVED2 0x400 #define SPR$M_R_ERROR_POLICIES_SUPPORTED 0x1800 #define SPR$M_R_X_ID_INTERLOCK 0x2000 #define SPR$M_R_ACK_N_SUPPORTED 0x4000 #define SPR$M_R_ACK_0_SUPPORTED 0x8000 #define SPR$M_N_PORT_END_TO_END_CREDIT 0x7FFF #define SPR$M_RESERVED3 0x8000 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _service_parameters { #pragma __nomember_alignment __union { int spr$l_longword_0_overlay; __struct { /* */ /* Initiator Control Flags */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 190, figure 65 */ /* */ __union { short int spr$w_initiator_control_flags_over; __struct { unsigned spr$v_ini_ctl_reserved : 10; unsigned spr$v_ini_ack_n_supported : 1; unsigned spr$v_ini_ack_0_supported : 1; unsigned spr$v_ini_rsp_prc_assoc : 2; unsigned spr$v_ini_x_id_reasgn_req : 2; } spr$r_fill_3_; } spr$r_fill_2_; /* */ /* Service Options */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 190, figure 64 */ /* */ /* The Class Valid bit is not shown in this figure but is */ /* described in the section in which the table appears. */ /* Note that at least in this revision of the standard */ /* the options defined for N-Port Login (figure 64) are */ /* the same as those defined for F-Port Login (figure 63) */ /* */ __union { short int spr$w_service_options_overlay; __struct { unsigned spr$v_srv_opt_reserved : 11; unsigned spr$v_seq_delivery : 1; unsigned spr$v_stacked_con_req : 2; unsigned spr$v_intermix_mode : 1; unsigned spr$v_class_valid : 1; } spr$r_fill_5_; } spr$r_fill_4_; } spr$r_fill_1_; } spr$r_fill_0_; __union { int spr$l_longword_1_overlay; __struct { /* Receive Data Field Size */ __union { short int spr$w_receive_data_field_size_over; __struct { unsigned spr$v_receive_data_field_size : 12; unsigned spr$v_fill_16_ : 4; } spr$r_fill_9_; } spr$r_fill_8_; /* */ /* Recipient Control */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 193, figure 66 */ /* */ __union { short int spr$w_recipient_control_overlay; __struct { unsigned spr$v_reserved_for_fabric : 4; unsigned spr$v_reserved1 : 4; unsigned spr$v_r_categories_per_sequence : 2; unsigned spr$v_reserved2 : 1; unsigned spr$v_r_error_policies_supported : 2; unsigned spr$v_r_x_id_interlock : 1; unsigned spr$v_r_ack_n_supported : 1; unsigned spr$v_r_ack_0_supported : 1; } spr$r_fill_11_; } spr$r_fill_10_; } spr$r_fill_7_; } spr$r_fill_6_; __union { int spr$l_longword_2_overlay; __struct { unsigned spr$v_n_port_end_to_end_credit : 15; unsigned spr$v_reserved3 : 1; short int spr$w_concurrent_sequences; } spr$r_fill_13_; } spr$r_fill_12_; __union { int spr$l_longword_3_overlay; __struct { short int spr$w_reserved4; char spr$b_open_sequences_per_exchange; char spr$b_reserved5; } spr$r_fill_15_; } spr$r_fill_14_; } SERVICE_PARAMETERS; #if !defined(__VAXC) #define spr$l_longword_0_overlay spr$r_fill_0_.spr$l_longword_0_overlay #define spr$w_initiator_control_flags_over spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_2_.spr$w_initiator_control_flags_over #define spr$v_ini_ctl_reserved spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_2_.spr$r_fill_3_.spr$v_ini_ctl_reserved #define spr$v_ini_ack_n_supported spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_2_.spr$r_fill_3_.spr$v_ini_ack_n_supported #define spr$v_ini_ack_0_supported spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_2_.spr$r_fill_3_.spr$v_ini_ack_0_supported #define spr$v_ini_rsp_prc_assoc spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_2_.spr$r_fill_3_.spr$v_ini_rsp_prc_assoc #define spr$v_ini_x_id_reasgn_req spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_2_.spr$r_fill_3_.spr$v_ini_x_id_reasgn_req #define spr$w_service_options_overlay spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_4_.spr$w_service_options_overlay #define spr$v_srv_opt_reserved spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_4_.spr$r_fill_5_.spr$v_srv_opt_reserved #define spr$v_seq_delivery spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_4_.spr$r_fill_5_.spr$v_seq_delivery #define spr$v_stacked_con_req spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_4_.spr$r_fill_5_.spr$v_stacked_con_req #define spr$v_intermix_mode spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_4_.spr$r_fill_5_.spr$v_intermix_mode #define spr$v_class_valid spr$r_fill_0_.spr$r_fill_1_.spr$r_fill_4_.spr$r_fill_5_.spr$v_class_valid #define spr$l_longword_1_overlay spr$r_fill_6_.spr$l_longword_1_overlay #define spr$w_receive_data_field_size_over spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_8_.spr$w_receive_data_field_size_over #define spr$v_receive_data_field_size spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_8_.spr$r_fill_9_.spr$v_receive_data_field_size #define spr$w_recipient_control_overlay spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_10_.spr$w_recipient_control_overlay #define spr$v_reserved_for_fabric spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_10_.spr$r_fill_11_.spr$v_reserved_for_fabric #define spr$v_reserved1 spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_10_.spr$r_fill_11_.spr$v_reserved1 #define spr$v_r_categories_per_sequence spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_10_.spr$r_fill_11_.spr$v_r_categories_per_sequence #define spr$v_reserved2 spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_10_.spr$r_fill_11_.spr$v_reserved2 #define spr$v_r_error_policies_supported spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_10_.spr$r_fill_11_.spr$v_r_error_policies_supported #define spr$v_r_x_id_interlock spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_10_.spr$r_fill_11_.spr$v_r_x_id_interlock #define spr$v_r_ack_n_supported spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_10_.spr$r_fill_11_.spr$v_r_ack_n_supported #define spr$v_r_ack_0_supported spr$r_fill_6_.spr$r_fill_7_.spr$r_fill_10_.spr$r_fill_11_.spr$v_r_ack_0_supported #define spr$l_longword_2_overlay spr$r_fill_12_.spr$l_longword_2_overlay #define spr$v_n_port_end_to_end_credit spr$r_fill_12_.spr$r_fill_13_.spr$v_n_port_end_to_end_credit #define spr$v_reserved3 spr$r_fill_12_.spr$r_fill_13_.spr$v_reserved3 #define spr$w_concurrent_sequences spr$r_fill_12_.spr$r_fill_13_.spr$w_concurrent_sequences #define spr$l_longword_3_overlay spr$r_fill_14_.spr$l_longword_3_overlay #define spr$w_reserved4 spr$r_fill_14_.spr$r_fill_15_.spr$w_reserved4 #define spr$b_open_sequences_per_exchange spr$r_fill_14_.spr$r_fill_15_.spr$b_open_sequences_per_exchange #define spr$b_reserved5 spr$r_fill_14_.spr$r_fill_15_.spr$b_reserved5 #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Common Service Parameters used in N-Port and F-Port Login */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 181, table 98 */ /* */ /* NOTE: The Alternate Credit Model bit below is not described in the */ /* referenced document, it was taken from a booklet which came */ /* with a Seagate FC disk */ /* */ /*- */ #define CSP$M_BB_RCV_DATA_FLD_SIZE 0xFFFF #define CSP$M_RESERVED1 0x3FF0000 #define CSP$M_E_D_TOV_NS 0x4000000 #define CSP$M_ALT_CREDIT_MODEL 0x8000000 #define CSP$M_F_PORT_LOGIN 0x10000000 #define CSP$M_VENDOR_VERSION 0x20000000 #define CSP$M_RANDOM_RELATIVE_OFFSET 0x40000000 #define CSP$M_CONTINUOUSLY_INCREASING 0x80000000 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _common_service_parameters { #pragma __nomember_alignment unsigned short int csp$w_bb_credit; unsigned char csp$b_low_fc_ph_rev; unsigned char csp$b_high_fc_ph_rev; __struct { unsigned csp$v_bb_rcv_data_fld_size : 16; /* Bits 00 to 15 */ unsigned csp$v_reserved1 : 10; /* Bits 16 to 25 */ unsigned csp$v_e_d_tov_ns : 1; /* Bit 26 */ unsigned csp$v_alt_credit_model : 1; /* Bit 27 */ unsigned csp$v_f_port_login : 1; /* Bit 28 */ unsigned csp$v_vendor_version : 1; /* Bit 29 */ unsigned csp$v_random_relative_offset : 1; /* Bit 30 */ unsigned csp$v_continuously_increasing : 1; /* Bit 31 */ } csp$r_common_features; __union { __struct { unsigned int csp$l_r_a_tov; } csp$r_f_port_fields; __struct { unsigned short int csp$w_offset_by_info; unsigned short int csp$w_total_sequences; } csp$r_n_port_fields; } csp$r_n_f_port_overlay; unsigned int csp$l_e_d_tov; } COMMON_SERVICE_PARAMETERS; #if !defined(__VAXC) #define csp$v_bb_rcv_data_fld_size csp$r_common_features.csp$v_bb_rcv_data_fld_size #define csp$v_reserved1 csp$r_common_features.csp$v_reserved1 #define csp$v_e_d_tov_ns csp$r_common_features.csp$v_e_d_tov_ns #define csp$v_alt_credit_model csp$r_common_features.csp$v_alt_credit_model #define csp$v_f_port_login csp$r_common_features.csp$v_f_port_login #define csp$v_vendor_version csp$r_common_features.csp$v_vendor_version #define csp$v_random_relative_offset csp$r_common_features.csp$v_random_relative_offset #define csp$v_continuously_increasing csp$r_common_features.csp$v_continuously_increasing #define csp$r_f_port_fields csp$r_n_f_port_overlay.csp$r_f_port_fields #define csp$l_r_a_tov csp$r_f_port_fields.csp$l_r_a_tov #define csp$r_n_port_fields csp$r_n_f_port_overlay.csp$r_n_port_fields #define csp$w_offset_by_info csp$r_n_port_fields.csp$w_offset_by_info #define csp$w_total_sequences csp$r_n_port_fields.csp$w_total_sequences #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Placeholder definition for an IEEE address */ /* */ /*- */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __quadword #else #pragma __nomember_alignment #endif typedef struct _ieee_address_t { #pragma __nomember_alignment unsigned char ieee$b_address [8]; } IEEE_ADDRESS_T; #define IEEE$SZ_LENGTH 8 /*length of structure */ /*+ */ /* */ /* This structure is used to simplify reference to the block of data */ /* which is passed in several ELS requests. It is not used in the */ /* ELS request structures themselves because that would complicate */ /* referencing individual fields in it */ /* */ /*- */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _port_data { #pragma __nomember_alignment COMMON_SERVICE_PARAMETERS port_data$r_common_sparm; IEEE_ADDRESS_T port_data$r_port_name; IEEE_ADDRESS_T port_data$r_node_fabric_name; SERVICE_PARAMETERS port_data$r_class_1_sparm; SERVICE_PARAMETERS port_data$r_class_2_sparm; SERVICE_PARAMETERS port_data$r_class_3_sparm; unsigned char port_data$b_reserved2 [16]; unsigned char port_data$b_vendor_version_level [16]; } PORT_DATA; /* */ /* Network Address Authority identifiers */ /* */ #define NAA$K_IGNORED 0 #define NAA$K_IEEE 1 #define NAA$K_IEEE_EXTENDED 2 #define NAA$K_LOCALLY_ASSIGNED 3 #define NAA$K_IP 4 #define NAA$K_CCITT_INDIVIDUAL_ADDRESS 12 #define NAA$K_CCITT_GROUP_ADDRESS 14 /*+ */ /* */ /* N Port Login Request */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 148, table 71 */ /* */ /*- */ #define PLOGI_REQ$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _plogi_req_t { #pragma __nomember_alignment __struct { unsigned plogi_req$v_reserved1 : 24; unsigned char plogi_req$b_els_command_code; } plogi_req$r_els_command_overlay; COMMON_SERVICE_PARAMETERS plogi_req$r_common_sparm; IEEE_ADDRESS_T plogi_req$r_port_name; IEEE_ADDRESS_T plogi_req$r_node_fabric_name; SERVICE_PARAMETERS plogi_req$r_class_1_sparm; SERVICE_PARAMETERS plogi_req$r_class_2_sparm; SERVICE_PARAMETERS plogi_req$r_class_3_sparm; unsigned char plogi_req$b_reserved2 [16]; unsigned char plogi_req$b_vendor_version_level [16]; } PLOGI_REQ_T; #if !defined(__VAXC) #define plogi_req$v_reserved1 plogi_req$r_els_command_overlay.plogi_req$v_reserved1 #define plogi_req$b_els_command_code plogi_req$r_els_command_overlay.plogi_req$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* N Port Login Response */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 148, table 72 */ /* */ /*- */ #define PLOGI_RSP$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _plogi_rsp_t { #pragma __nomember_alignment __struct { unsigned plogi_rsp$v_reserved1 : 24; unsigned char plogi_rsp$b_els_command_code; } plogi_rsp$r_els_command_overlay; COMMON_SERVICE_PARAMETERS plogi_rsp$r_common_sparm; IEEE_ADDRESS_T plogi_rsp$r_port_name; IEEE_ADDRESS_T plogi_rsp$r_node_fabric_name; SERVICE_PARAMETERS plogi_rsp$r_class_1_sparm; SERVICE_PARAMETERS plogi_rsp$r_class_2_sparm; SERVICE_PARAMETERS plogi_rsp$r_class_3_sparm; unsigned char plogi_rsp$b_reserved2 [16]; unsigned char plogi_rsp$b_vendor_version_level [16]; } PLOGI_RSP_T; #if !defined(__VAXC) #define plogi_rsp$v_reserved1 plogi_rsp$r_els_command_overlay.plogi_rsp$v_reserved1 #define plogi_rsp$b_els_command_code plogi_rsp$r_els_command_overlay.plogi_rsp$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Discover N-Port Parameters Request */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface 2 (FC-PH-2) Rev 7.3 */ /* Working draft of 5-January-1996 */ /* Section 21.19.1 */ /* */ /*- */ #define PDISC_REQ$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _pdisc_req_t { #pragma __nomember_alignment __struct { unsigned pdisc_req$v_reserved1 : 24; unsigned char pdisc_req$b_els_command_code; } pdisc_req$r_els_command_overlay; COMMON_SERVICE_PARAMETERS pdisc_req$r_common_sparm; IEEE_ADDRESS_T pdisc_req$r_port_name; IEEE_ADDRESS_T pdisc_req$r_node_fabric_name; SERVICE_PARAMETERS pdisc_req$r_class_1_sparm; SERVICE_PARAMETERS pdisc_req$r_class_2_sparm; SERVICE_PARAMETERS pdisc_req$r_class_3_sparm; unsigned char pdisc_req$b_reserved2 [16]; unsigned char pdisc_req$b_vendor_version_level [16]; } PDISC_REQ_T; #if !defined(__VAXC) #define pdisc_req$v_reserved1 pdisc_req$r_els_command_overlay.pdisc_req$v_reserved1 #define pdisc_req$b_els_command_code pdisc_req$r_els_command_overlay.pdisc_req$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Discover N-Port Parameters Response */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface 2 (FC-PH-2) Rev 7.3 */ /* Working draft of 5-January-1996 */ /* Section 21.19.1 */ /* */ /*- */ #define PDISC_RSP$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _pdisc_rsp_t { #pragma __nomember_alignment __struct { unsigned pdisc_rsp$v_reserved1 : 24; unsigned char pdisc_rsp$b_els_command_code; } pdisc_rsp$r_els_command_overlay; COMMON_SERVICE_PARAMETERS pdisc_rsp$r_common_sparm; IEEE_ADDRESS_T pdisc_rsp$r_port_name; IEEE_ADDRESS_T pdisc_rsp$r_node_fabric_name; SERVICE_PARAMETERS pdisc_rsp$r_class_1_sparm; SERVICE_PARAMETERS pdisc_rsp$r_class_2_sparm; SERVICE_PARAMETERS pdisc_rsp$r_class_3_sparm; unsigned char pdisc_rsp$b_reserved2 [16]; unsigned char pdisc_rsp$b_vendor_version_level [16]; } PDISC_RSP_T; #if !defined(__VAXC) #define pdisc_rsp$v_reserved1 pdisc_rsp$r_els_command_overlay.pdisc_rsp$v_reserved1 #define pdisc_rsp$b_els_command_code pdisc_rsp$r_els_command_overlay.pdisc_rsp$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Abort Exchange Request */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 144, table 62 */ /* */ /*- */ #define ABTX_REQ$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _abtx_req_t { #pragma __nomember_alignment __struct { unsigned abtx_req$v_reserved1 : 24; unsigned char abtx_req$b_els_command_code; } abtx_req$r_els_command_overlay; } ABTX_REQ_T; #if !defined(__VAXC) #define abtx_req$v_reserved1 abtx_req$r_els_command_overlay.abtx_req$v_reserved1 #define abtx_req$b_els_command_code abtx_req$r_els_command_overlay.abtx_req$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Abort Exchange Response */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 145, table 63 */ /* */ /*- */ #define ABTX_RSP$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _abtx_rsp_t { #pragma __nomember_alignment __struct { unsigned abtx_rsp$v_reserved1 : 24; unsigned char abtx_rsp$b_els_command_code; } abtx_rsp$r_els_command_overlay; } ABTX_RSP_T; #if !defined(__VAXC) #define abtx_rsp$v_reserved1 abtx_rsp$r_els_command_overlay.abtx_rsp$v_reserved1 #define abtx_rsp$b_els_command_code abtx_rsp$r_els_command_overlay.abtx_rsp$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Advise Credit Request */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 145, table 64 */ /* */ /*- */ #define ADVC_REQ$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _advc_req_t { #pragma __nomember_alignment __struct { unsigned advc_req$v_reserved1 : 24; unsigned char advc_req$b_els_command_code; } advc_req$r_els_command_overlay; } ADVC_REQ_T; #if !defined(__VAXC) #define advc_req$v_reserved1 advc_req$r_els_command_overlay.advc_req$v_reserved1 #define advc_req$b_els_command_code advc_req$r_els_command_overlay.advc_req$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Advise Credit Response */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 146, table 65 */ /* */ /*- */ #define ADVC_RSP$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _advc_rsp_t { #pragma __nomember_alignment __struct { unsigned advc_rsp$v_reserved1 : 24; unsigned char advc_rsp$b_els_command_code; } advc_rsp$r_els_command_overlay; } ADVC_RSP_T; #if !defined(__VAXC) #define advc_rsp$v_reserved1 advc_rsp$r_els_command_overlay.advc_rsp$v_reserved1 #define advc_rsp$b_els_command_code advc_rsp$r_els_command_overlay.advc_rsp$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Logout Request */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 149, table 73 */ /* */ /*- */ #define LOGO_REQ$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _logo_req_t { #pragma __nomember_alignment __struct { unsigned logo_req$v_reserved1 : 24; unsigned char logo_req$b_els_command_code; } logo_req$r_els_command_overlay; __struct { unsigned logo_req$v_d_id : 24; unsigned logo_req$v_rsvd : 8; } logo_req$r_n_port_id_structure; /* Port Name */ IEEE_ADDRESS_T logo_req$r_port_name; } LOGO_REQ_T; #if !defined(__VAXC) #define logo_req$v_reserved1 logo_req$r_els_command_overlay.logo_req$v_reserved1 #define logo_req$b_els_command_code logo_req$r_els_command_overlay.logo_req$b_els_command_code #define logo_req$v_d_id logo_req$r_n_port_id_structure.logo_req$v_d_id #define logo_req$v_rsvd logo_req$r_n_port_id_structure.logo_req$v_rsvd #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Logout Response */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 149, table 74 */ /* */ /*- */ #define LOGO_RSP$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _logo_rsp_t { #pragma __nomember_alignment __struct { unsigned logo_rsp$v_reserved1 : 24; unsigned char logo_rsp$b_els_command_code; } logo_rsp$r_els_command_overlay; } LOGO_RSP_T; #if !defined(__VAXC) #define logo_rsp$v_reserved1 logo_rsp$r_els_command_overlay.logo_rsp$v_reserved1 #define logo_rsp$b_els_command_code logo_rsp$r_els_command_overlay.logo_rsp$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Generic ACC */ /* */ /*- */ #define LS_ACC$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _ls_acc { #pragma __nomember_alignment __struct { unsigned ls_acc$v_reserved1 : 24; unsigned char ls_acc$b_els_command_code; } ls_acc$r_els_command_overlay; } LS_ACC; #if !defined(__VAXC) #define ls_acc$v_reserved1 ls_acc$r_els_command_overlay.ls_acc$v_reserved1 #define ls_acc$b_els_command_code ls_acc$r_els_command_overlay.ls_acc$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Read Link Error Status Block Request */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 151, table 79 */ /* */ /*- */ #define RLS_REQ$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _rls_req_t { #pragma __nomember_alignment __struct { unsigned rls_req$v_reserved1 : 24; unsigned char rls_req$b_els_command_code; } rls_req$r_els_command_overlay; } RLS_REQ_T; #if !defined(__VAXC) #define rls_req$v_reserved1 rls_req$r_els_command_overlay.rls_req$v_reserved1 #define rls_req$b_els_command_code rls_req$r_els_command_overlay.rls_req$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Read Link Error Status Block Response */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 151, table 80 */ /* */ /*- */ #define RLS_RSP$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _rls_rsp_t { #pragma __nomember_alignment __struct { unsigned rls_rsp$v_reserved1 : 24; unsigned char rls_rsp$b_els_command_code; } rls_rsp$r_els_command_overlay; } RLS_RSP_T; #if !defined(__VAXC) #define rls_rsp$v_reserved1 rls_rsp$r_els_command_overlay.rls_rsp$v_reserved1 #define rls_rsp$b_els_command_code rls_rsp$r_els_command_overlay.rls_rsp$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* An Extended Link Service request or response is built by appending the */ /* appropriate payload to a longword which contains an Extended Link */ /* Service code. The structure being defined here can be used to create */ /* a buffer of a size which will contain any of the Basic or Extended */ /* Link Service payloads defined above. It can also be used as a */ /* type-independent pointer to a structure so the command code can be */ /* interpreted. */ /* */ /*- */ #define ELS$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef union _els_t { #pragma __nomember_alignment __struct { unsigned els$v_reserved1 : 24; unsigned char els$b_els_command_code; } els$r_els_command_code_structure; __union { PLOGI_REQ_T els$r_plogi_req_data; PLOGI_RSP_T els$r_logi_rsp_data; ABTX_REQ_T els$r_abtx_req_data; ABTX_RSP_T els$r_abtx_rsp_data; ADVC_REQ_T els$r_advc_req_data; ADVC_RSP_T els$r_advc_rsp_data; LOGO_REQ_T els$r_logo_req_data; LOGO_RSP_T els$r_logo_rsp_data; RLS_REQ_T els$r_rls_req_data; RLS_RSP_T els$r_rls_rsp_data; } els$r_els_command_union; } ELS_T; #if !defined(__VAXC) #define els$v_reserved1 els$r_els_command_code_structure.els$v_reserved1 #define els$b_els_command_code els$r_els_command_code_structure.els$b_els_command_code #define els$r_plogi_req_data els$r_els_command_union.els$r_plogi_req_data #define els$r_logi_rsp_data els$r_els_command_union.els$r_logi_rsp_data #define els$r_abtx_req_data els$r_els_command_union.els$r_abtx_req_data #define els$r_abtx_rsp_data els$r_els_command_union.els$r_abtx_rsp_data #define els$r_advc_req_data els$r_els_command_union.els$r_advc_req_data #define els$r_advc_rsp_data els$r_els_command_union.els$r_advc_rsp_data #define els$r_logo_req_data els$r_els_command_union.els$r_logo_req_data #define els$r_logo_rsp_data els$r_els_command_union.els$r_logo_rsp_data #define els$r_rls_req_data els$r_els_command_union.els$r_rls_req_data #define els$r_rls_rsp_data els$r_els_command_union.els$r_rls_rsp_data #endif /* #if !defined(__VAXC) */ #endif /*+ */ /* */ /* Maximum Number of Participating NL-Ports on an Arbitrated Loop */ /* */ /* Ref: Fibre Channel Arbitrated Loop (FC-AL-2) Rev 6.1 */ /* Working draft of 16-Feb-1998 */ /* Page 13, section 5.1.1 */ /* */ /* Note that this is a count of NL-Ports, and does not include */ /* the special AL-PA of 00, which is reserved for the single */ /* FL-Port which may or may not be present on the Arbitrated */ /* Loop */ /* */ /*- */ #define FCAL$K_AL_PA_COUNT 126 /* */ /* PRLI Request Payload */ /* */ /* Ref: Fibre Channel Protocol for SCSI (SCSI-FCP) Rev 12 */ /* Draft proposal of 4-Dec-1995 */ /* Table A.3, page 39 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _prli_req { #pragma __nomember_alignment short int prli_req$w_payload_length; /* Total length of payload (typically 20.) */ char prli_req$b_page_length; /* Length of each service paramter page */ unsigned char prli_req$b_els_command_code; /* Extended Link service command code */ SERVICE_PARAM_PAGE_T prli_req$r_service_parameter_page; /* Service parameter page */ } PRLI_REQ; /* */ /* PRLI ACC Payload */ /* */ /* Ref: Fibre Channel Protocol for SCSI (SCSI-FCP) Rev 12 */ /* Draft proposal of 4-Dec-1995 */ /* Table A.5, page 41 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _prli_acc { #pragma __nomember_alignment short int prli_acc$w_payload_length; /* Total length of payload (typically 20.) */ char prli_acc$b_page_length; /* Length of each service paramter page */ unsigned char prli_acc$b_els_command_code; /* Extended Link service command code */ SERVICE_PARAM_PAGE_T prli_acc$r_service_parameter_page; /* Service parameter page */ } PRLI_ACC; /* */ /* PRLO Request Payload */ /* */ /* Ref: Fibre Channel Protocol for SCSI (SCSI-FCP) Rev 12 */ /* Draft proposal of 4-Dec-1995 */ /* Table A.8, page 46 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _prlo_req { #pragma __nomember_alignment short int prlo_req$w_payload_length; /* Total length of payload (typically 20.) */ char prlo_req$b_page_length; /* Length of each service paramter page */ unsigned char prlo_req$b_els_command_code; /* Extended Link service command code */ LOGOUT_PARAM_PAGE_T prlo_req$r_logout_parameter_page; /* Logout parameter page */ } PRLO_REQ; /* */ /* PRLO ACC Payload */ /* */ /* Ref: Fibre Channel Protocol for SCSI (SCSI-FCP) Rev 12 */ /* Draft proposal of 4-Dec-1995 */ /* Table A.10, page 48 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _prlo_acc { #pragma __nomember_alignment short int prlo_acc$w_payload_length; /* Total length of payload (typically 20.) */ char prlo_acc$b_page_length; /* Length of each service paramter page */ unsigned char prlo_acc$b_els_command_code; /* Extended Link service command code */ SERVICE_PARAM_PAGE_T prlo_acc$r_service_parameter_page; /* Service parameter page */ } PRLO_ACC; /* */ /* Common Transport Information Unit (IU) */ /* FC-GS-2 R5.1 - Tables 1-3, 6 */ /* */ #define CTIU$M_RESERVED2 0x7F #define CTIU$M_XBIT_EXCHANGE 0x80 #define CTIU$K_BIDIRECT 0 #define CTIU$K_MULTIPLE 1 #define CTIU$K_ALIAS_SERVER 248 /* F8: Alias server application */ #define CTIU$K_RESERVED1 249 /* F9: (reserved) */ #define CTIU$K_MGMT_SERVER 250 /* FA: Management service application */ #define CTIU$K_TIME_SERVER 251 /* FB: Time service application */ #define CTIU$K_DIRECTORY_SERVER 252 /* FC: Directory service application */ #define CTIU$K_FABRIC 253 /* FD: Fabric controller service appl. */ /* Longword 2 */ #define CTIU$K_NON_FC_IU 0 #define CTIU$K_FS_RJT_IU 32769 #define CTIU$K_FS_ACC_IU 32770 /* Longowrd 3 */ #define CTIU$K_NS_NO_ADDITIONAL_EXPL 0 /* 00: No additional explanation */ #define CTIU$K_NS_PORT_ID_NOT_REG 1 /* 01: Port identifier not registered */ #define CTIU$K_NS_PORT_NAME_NOT_REG 2 /* 02: Port name not registered */ #define CTIU$K_NS_NODE_NAME_NOT_REG 3 /* 03: Node name not registered */ #define CTIU$K_NS_CLASS_SRV_NOT_REG 4 /* 04: Class of service not registered */ #define CTIU$K_NS_IP_ADDR_NODE_NOT_REG 5 /* 05: IP address (node) not registered */ #define CTIU$K_NS_IPA_NOT_REG 6 /* 06: Initial Process Associator not registered */ #define CTIU$K_NS_FC4_NOT_REG 7 /* 07: FC-4 Types not registered */ #define CTIU$K_NS_SYM_PORT_NAME_NOT_REG 8 /* 08: Symbolic port name not registered */ #define CTIU$K_NS_SYM_NODE_NAME_NOT_REG 9 /* 09: Symbolic node name not registered */ #define CTIU$K_NS_PORT_TYPE_NOT_REG 10 /* 0A: Port type not registered */ #define CTIU$K_NS_IP_ADDR_PORT_NOT_REG 11 /* 0B: IP address (port) not registered */ #define CTIU$K_NS_FAB_PORT_NAME_NOT_REG 12 /* 0C: Fabric port name not registered */ #define CTIU$K_NS_HARD_ADDR_NOT_REG 13 /* 0D: Hard address not registered */ #define CTIU$K_NS_RESERVED1 14 /* 0E: (reserved) */ #define CTIU$K_NS_RESERVED2 15 /* 0F: (reserved) */ #define CTIU$K_NS_ACCESS_DENIED 16 /* 10: Access denied */ #define CTIU$K_NS_UNACCEPTABLE_PORT_ID 17 /* 11: Unacceptable port identifier */ #define CTIU$K_NS_DATA_BASE_EMPTY 18 /* 12: Data base empty */ #define CTIU$K_NS_NO_OBJ_REG_IN_SCOPE 19 /* 13: No object registered in specified scope */ #define CTIU$K_INVALID_COMMAND 1 /* 01: Invalid command code */ #define CTIU$K_INVALID_VERSION 2 /* 02: Invalid version level */ #define CTIU$K_LOGICAL_ERROR 3 /* 03: Logical error */ #define CTIU$K_INVALID_IU_SIZE 4 /* 04: Invalid IU size */ #define CTIU$K_LOGICAL_BUSY 5 /* 05: Logical busy */ #define CTIU$K_RESERVED5 6 /* 06: (reserved) */ #define CTIU$K_PROTOCOL_ERROR 7 /* 07: Protocol error */ #define CTIU$K_RESERVED6 8 /* 08: (reserved) */ #define CTIU$K_CANT_DO_IT 9 /* 09: Unable to perform request */ #define CTIU$K_RESERVED7 10 /* 0A: (reserved) */ #define CTIU$K_NOT_SUPPORTED 11 /* 0B: Command not supported */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _ctiu { #pragma __nomember_alignment __struct { /* Longword 0 */ char ctiu$b_in_id [3]; char ctiu$b_revision; /* Longword 1 */ char ctiu$b_reserved; char ctiu$b_options; __union { char ctiu$b_fs_subtype; __struct { unsigned ctiu$v_reserved2 : 7; unsigned ctiu$v_xbit_exchange : 1; } ctiu$r_fs_subtype_bits; } ctiu$r_fs_subtype; char ctiu$b_fcs_type; /* - Service types - */ unsigned short int ctiu$w_max_resid_size; unsigned short int ctiu$w_command_response; /* - Command/Response codes - */ char ctiu$b_vendor_unique; char ctiu$b_rjt_explanation; /* Reject explanation constants added with revision X-6 */ /* FS_RJT name server reason code explanations */ char ctiu$b_rjt_reason; /* - FS_RJT reason codes - */ char ctiu$b_reserved4; } ctiu$r_ct_hdr; } CTIU; #if !defined(__VAXC) #define ctiu$b_in_id ctiu$r_ct_hdr.ctiu$b_in_id #define ctiu$b_revision ctiu$r_ct_hdr.ctiu$b_revision #define ctiu$b_reserved ctiu$r_ct_hdr.ctiu$b_reserved #define ctiu$b_options ctiu$r_ct_hdr.ctiu$b_options #define ctiu$r_fs_subtype ctiu$r_ct_hdr.ctiu$r_fs_subtype #define ctiu$b_fs_subtype ctiu$r_fs_subtype.ctiu$b_fs_subtype #define ctiu$r_fs_subtype_bits ctiu$r_fs_subtype.ctiu$r_fs_subtype_bits #define ctiu$v_reserved2 ctiu$r_fs_subtype_bits.ctiu$v_reserved2 #define ctiu$v_xbit_exchange ctiu$r_fs_subtype_bits.ctiu$v_xbit_exchange #define ctiu$b_fcs_type ctiu$r_ct_hdr.ctiu$b_fcs_type #define ctiu$w_max_resid_size ctiu$r_ct_hdr.ctiu$w_max_resid_size #define ctiu$w_command_response ctiu$r_ct_hdr.ctiu$w_command_response #define ctiu$b_vendor_unique ctiu$r_ct_hdr.ctiu$b_vendor_unique #define ctiu$b_rjt_explanation ctiu$r_ct_hdr.ctiu$b_rjt_explanation #define ctiu$b_rjt_reason ctiu$r_ct_hdr.ctiu$b_rjt_reason #define ctiu$b_reserved4 ctiu$r_ct_hdr.ctiu$b_reserved4 #endif /* #if !defined(__VAXC) */ /* */ /* Directory Service Subtypes */ /* FC-GS-2 R5.1, Table 7 */ /* */ #define DIR$K_RESERVED1 1 #define DIR$K_NAME_SERVICE 2 /* */ /* Name Server Request Command Codes */ /* FC-GS-2 R5.1, Table 10 */ /* */ #define NSREQ$K_GA_NXT 256 /* Get all next */ #define NSREQ$K_GPN_ID 274 /* Get port name */ #define NSREQ$K_GNN_ID 275 /* Get node name using port ID */ #define NSREQ$K_GCS_ID 276 /* Get class of service */ #define NSREQ$K_GFT_ID 279 /* Get FC-4 TYPEs */ #define NSREQ$K_GSPN_ID 280 /* Get symbolic port name */ #define NSREQ$K_GPT_ID 282 /* Get port type */ #define NSREQ$K_GID_PN 289 /* Get port ID using port name */ #define NSREQ$K_GID_NN 305 /* Get port ID using node name */ #define NSREQ$K_GIP_NN 309 /* Get IP address */ #define NSREQ$K_GIPA_NN 310 /* Get proc. associator using node name */ #define NSREQ$K_GSNN_NN 313 /* Get symbolic node name */ #define NSREQ$K_GNN_IP 339 /* Get node name using IP address */ #define NSREQ$K_GIPA_IP 342 /* Get proc. associator using IP address */ #define NSREQ$K_GID_FT 369 /* Get port IDs using FC-4 TYPE */ #define NSREQ$K_GID_PT 417 /* Get port IDs using port type */ #define NSREQ$K_RPN_ID 530 /* Register port name */ #define NSREQ$K_RNN_ID 531 /* Register node name */ #define NSREQ$K_RCS_ID 532 /* Register class of service */ #define NSREQ$K_RFT_ID 535 /* Register FC-4 TYPEs */ #define NSREQ$K_RSPN_ID 536 /* Register symbolic port name */ #define NSREQ$K_RPT_ID 538 /* Register port type */ #define NSREQ$K_RIP_NN 565 /* Register IP address */ #define NSREQ$K_RIPA_NN 566 /* Register proc. associator */ #define NSREQ$K_RSNN_NN 569 /* Register symbolic node name */ #define NSREQ$K_DA_ID 768 /* Deregister all */ /* */ /* GID_PN (Get port identifier for specified port) Request Payload */ /* FC-GS-2 R5.1 - Table 28 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef union _gid_pn_req { #pragma __nomember_alignment char gid_pn_req$b_port_name [8]; /* X-9a */ __int64 gid_pn_req$q_port_name; } GID_PN_REQ; /* */ /* GID_PN (Get port identifier for specified port) Reply */ /* FC-GS-2 R5.1 - Table 29 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef union _gid_pn_acc { #pragma __nomember_alignment unsigned int gid_pn_acc$l_port_ident; /* X-9a */ __struct { char gid_pn_acc$b_reserved1; char gid_pn_acc$b_port_ident [3]; } gid_pn_acc$r_rsvd0; } GID_PN_ACC; #if !defined(__VAXC) #define gid_pn_acc$b_reserved1 gid_pn_acc$r_rsvd0.gid_pn_acc$b_reserved1 #define gid_pn_acc$b_port_ident gid_pn_acc$r_rsvd0.gid_pn_acc$b_port_ident #endif /* #if !defined(__VAXC) */ /* */ /* GID_NN (Get port identifiers for specified node) Request Payload */ /* FC-GS-2 R5.1 - Table 30 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _gid_nn_req { #pragma __nomember_alignment char gid_nn_req$b_node_name [8]; } GID_NN_REQ; /* */ /* GID_NN (Get port identifiers for specified node) Reply */ /* FC-GS-2 R5.1 - Table 31 */ /* */ #define GID_NN_ACC$M_RESERVED 0x7F00 #define GID_NN_ACC$M_LAST_IDENT 0x8000 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _gid_nn_acc { #pragma __nomember_alignment char gid_nn_acc$b_control; unsigned gid_nn_acc$v_reserved : 7; unsigned gid_nn_acc$v_last_ident : 1; char gid_nn_acc$b_port_ident [3]; char gid_nn_acc$b_fill_17_ [3]; } GID_NN_ACC; /* */ /* GID_FT (Get port identifiers for specified FC-4 type) Request Payload */ /* FC-GS-2 R5.1 - Table 42 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _gid_ft_req { #pragma __nomember_alignment unsigned char gid_ft_req$b_fc4_type; unsigned char gid_ft_req$b_area; /* X-9b */ unsigned char gid_ft_req$b_domain; /* X-9b */ unsigned char gid_ft_req$b_reserved; } GID_FT_REQ; /* */ /* GID_FT (Get port identifiers for specified FC-4 type) Reply */ /* FC-GS-2 R5.1 - Table 43 */ /* */ #define GID_FT_ACC$M_RESERVED 0x7F #define GID_FT_ACC$M_LAST_IDENT 0x80 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _gid_ft_acc { #pragma __nomember_alignment char gid_ft_acc$b_port_ident [3]; __struct { unsigned gid_ft_acc$v_reserved : 7; unsigned gid_ft_acc$v_last_ident : 1; } gid_ft_acc$r_control_structure; } GID_FT_ACC; #if !defined(__VAXC) #define gid_ft_acc$v_reserved gid_ft_acc$r_control_structure.gid_ft_acc$v_reserved #define gid_ft_acc$v_last_ident gid_ft_acc$r_control_structure.gid_ft_acc$v_last_ident #endif /* #if !defined(__VAXC) */ /* */ /* GID_PT (Get Port Identifiers) Request Payload */ /* FC-GS-2 R5.1 - Table 44 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _gid_pt_req { #pragma __nomember_alignment char gid_pt_req$b_reserved; char gid_pt_req$b_area_id_scope; /* X-6 */ char gid_pt_req$b_domain_id_scope; /* X-6 */ char gid_pt_req$b_port_type; } GID_PT_REQ; /* */ /* GID_PT (Get Port Identifiers) Reply */ /* FC-GS-2 R5.1 - Table 45 */ /* */ #define GID_PT_ACC$M_PORT_IDENT 0xFFFFFF #define GID_PT_ACC$M_RESERVED 0x7F #define GID_PT_ACC$M_LAST_IDENT 0x80 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _gid_pt_acc { #pragma __nomember_alignment __struct { unsigned gid_pt_acc$v_port_ident : 24; __struct { unsigned gid_pt_acc$v_reserved : 7; unsigned gid_pt_acc$v_last_ident : 1; } gid_pt_acc$r_control_structure; } gid_pt_acc$r_port_structure [1]; } GID_PT_ACC; #if !defined(__VAXC) #define gid_pt_acc$v_port_ident gid_pt_acc$v_port_ident #define gid_pt_acc$r_control_structure gid_pt_acc$r_control_structure #define gid_pt_acc$v_reserved gid_pt_acc$r_control_structure.gid_pt_acc$v_reserved #define gid_pt_acc$v_last_ident gid_pt_acc$r_control_structure.gid_pt_acc$v_last_ident #endif /* #if !defined(__VAXC) */ /* */ /* GPN_ID - Get Port Name by (Port) ID request */ /* FC-GS-4 5.2.5.4 Table 34 */ /* */ #define GPN_ID_REQ$M_PORT_ID 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _gpn_id_req { #pragma __nomember_alignment unsigned gpn_id_req$v_port_id : 24; char gpn_id_req$b_rsvd0; } GPN_ID_REQ; /* */ /* GPN_ID - Get Port Name by (Port) ID response */ /* FC-GS-4 5.2.5.4 Table 35 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _gpn_id_acc { #pragma __nomember_alignment unsigned char gpn_id_acc$b_port_name [8]; } GPN_ID_ACC; #define NS_GID_PT$K_PT_UNIDENTIFIED 0 #define NS_GID_PT$K_PT_N_PORT 1 #define NS_GID_PT$K_PT_NL_PORT 2 #define NS_GID_PT$K_PT_F_NL_PORT 3 #define NS_GID_PT$K_PT_NX_PORT 127 #define NS_GID_PT$K_PT_F_PORT 129 #define NS_GID_PT$K_PT_FL_PORT 130 #define NS_GID_PT$K_PT_E_PORT 132 /* */ /* Well-known addresses for Fibre Channel Services */ /* FC-FLA R2.7 - Table 28 */ /* */ #define WLKN_ADR$K_SYNCH_SERVER 16777206 #define WLKN_ADR$K_SECURITY_SERVER 16777207 #define WLKN_ADR$K_ALIAS_SERVER 16777208 #define WLKN_ADR$K_QOS_FACIL 16777209 #define WLKN_ADR$K_MGMT_SERVER 16777210 #define WLKN_ADR$K_TIME_SERVER 16777211 #define WLKN_ADR$K_DIRECTORY_SERVER 16777212 #define WLKN_ADR$K_FABRIC_CTRLR 16777213 #define WLKN_ADR$K_FABRIC_FPORT 16777214 #define WLKN_ADR$K_BROADCAST 16777215 /* */ /* RSCN (Registered State Change Notification) Payload */ /* FC-FLA R2.7 - Tables A.14-A.19 */ /* */ #define RSCN_REQ$K_PORT_ADDRESS 0 #define RSCN_REQ$K_AREA_ADDRESS_GROUP 1 #define RSCN_REQ$K_DOMAIN_ADDRESS_GROUP 2 #define RSCN_REQ$K_FABRIC_ADDRESS_GROUP 3 /* X-6 */ #define RSCN_REQ$M_ADDRESS 0xFFFFFF #define RSCN_REQ$M_ADDRESS_FORMAT_BITS 0x3 #define RSCN_REQ$M_EVENT_QUALIFIER_BITS 0x3C #define RSCN_REQ$M_RESERVED_BITS 0xC0 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _rscn_req { /* Longword 0 */ #pragma __nomember_alignment short int rscn_req$w_payload_length; char rscn_req$b_page_length; char rscn_req$b_els_command_code; /* Longword 1 */ __struct { __union { unsigned rscn_req$v_address : 24; __struct { char rscn_req$b_port; char rscn_req$b_area; char rscn_req$b_domain; } rscn_req$r_address_structure; } rscn_req$r_address_union; __union { /* X-14 */ __struct { /* X-14 */ unsigned rscn_req$v_address_format_bits : 2; unsigned rscn_req$v_event_qualifier_bits : 4; unsigned rscn_req$v_reserved_bits : 2; } rscn_req$r_addr_fmt_structure; char rscn_req$b_address_format; } rscn_req$r_addr_fmt_union; } rscn_req$r_affected_page [1]; } RSCN_REQ; #if !defined(__VAXC) #define rscn_req$r_address_union rscn_req$r_address_union #define rscn_req$v_address rscn_req$r_address_union.rscn_req$v_address #define rscn_req$r_address_structure rscn_req$r_address_union.rscn_req$r_address_structure #define rscn_req$b_port rscn_req$r_address_structure.rscn_req$b_port #define rscn_req$b_area rscn_req$r_address_structure.rscn_req$b_area #define rscn_req$b_domain rscn_req$r_address_structure.rscn_req$b_domain #define rscn_req$r_addr_fmt_union rscn_req$r_addr_fmt_union #define rscn_req$r_addr_fmt_structure rscn_req$r_addr_fmt_union.rscn_req$r_addr_fmt_structure #define rscn_req$v_address_format_bits rscn_req$r_addr_fmt_structure.rscn_req$v_address_format_bits #define rscn_req$v_event_qualifier_bits rscn_req$r_addr_fmt_structure.rscn_req$v_event_qualifier_bits #define rscn_req$v_reserved_bits rscn_req$r_addr_fmt_structure.rscn_req$v_reserved_bits #define rscn_req$b_address_format rscn_req$r_addr_fmt_union.rscn_req$b_address_format #endif /* #if !defined(__VAXC) */ /* */ /* RSCN (Registered State Change Notification) Accept Reply */ /* FC-FLA R2.7 - Table A.20 */ /* */ #define RSCN_ACC$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _rscn_acc { #pragma __nomember_alignment __struct { unsigned rscn_acc$v_reserved1 : 24; unsigned char rscn_acc$b_els_command_code; } rscn_acc$r_els_command_overlay; } RSCN_ACC; #if !defined(__VAXC) #define rscn_acc$v_reserved1 rscn_acc$r_els_command_overlay.rscn_acc$v_reserved1 #define rscn_acc$b_els_command_code rscn_acc$r_els_command_overlay.rscn_acc$b_els_command_code #endif /* #if !defined(__VAXC) */ /* */ /* Affected N_Port ID Page - Port Address Format */ /* */ #define IDPAGE$K_PORT_ADDRESS 0 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _portpg { #pragma __nomember_alignment char portpg$b_format; char portpg$b_port_id [3]; } PORTPG; /* */ /* Affected N_Port ID Page - Area Address Format */ /* */ #define IDPAGE$K_AREA_ADDRESS 1 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _areapg { #pragma __nomember_alignment char areapg$b_format; char areapg$b_port_domain; char areapg$b_port_area; char areapg$b_reserved1; } AREAPG; /* */ /* Affected N_Port ID Page - Domain Address Format */ /* */ #define IDPAGE$K_DOMN_ADDRESS 2 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _domnpg { #pragma __nomember_alignment char domnpg$b_format; char domnpg$b_port_domain; short int domnpg$w_reserved1; } DOMNPG; /* */ /* FAN (Fabric Address Notification) Payload */ /* FC-FLA R2.7 - Table A.1 */ /* */ #define FAN$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _fan { #pragma __nomember_alignment __struct { unsigned fan$v_reserved1 : 24; unsigned char fan$b_els_command_code; } fan$r_els_command_overlay; char fan$b_reserved1; char fan$b_fabric_adrs [3]; char fan$b_port_name [8]; char fan$b_fabric_name [8]; } FAN; #if !defined(__VAXC) #define fan$v_reserved1 fan$r_els_command_overlay.fan$v_reserved1 #define fan$b_els_command_code fan$r_els_command_overlay.fan$b_els_command_code #endif /* #if !defined(__VAXC) */ /* */ /* SCR (State Change Request) Payload */ /* FC-FLA R2.7 - Tables A.21, A.22 */ /* */ #define SCR_REQ$M_RESERVED1 0xFFFFFF #define SCR_RF$K_RESERVED 0 #define SCR_RF$K_FABRIC 1 #define SCR_RF$K_N_PORT 2 #define SCR_RF$K_FULL 3 #define SCR_RF$K_CLEAR_REG 255 #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _scr_req { #pragma __nomember_alignment __struct { unsigned scr_req$v_reserved1 : 24; unsigned char scr_req$b_els_command_code; } scr_req$r_els_command_overlay; char scr_req$b_reg_function; char scr_req$b_reserved2 [3]; } SCR_REQ; #if !defined(__VAXC) #define scr_req$v_reserved1 scr_req$r_els_command_overlay.scr_req$v_reserved1 #define scr_req$b_els_command_code scr_req$r_els_command_overlay.scr_req$b_els_command_code #endif /* #if !defined(__VAXC) */ /* */ /* SCR (State Change Request) Accept Reply */ /* FC-FLA R2.7 - Table A.23 */ /* */ #define SCR_ACC$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _scr_acc { #pragma __nomember_alignment __struct { unsigned scr_acc$v_reserved1 : 24; unsigned char scr_acc$b_els_command_code; } scr_acc$r_els_command_overlay; } SCR_ACC; #if !defined(__VAXC) #define scr_acc$v_reserved1 scr_acc$r_els_command_overlay.scr_acc$v_reserved1 #define scr_acc$b_els_command_code scr_acc$r_els_command_overlay.scr_acc$b_els_command_code #endif /* #if !defined(__VAXC) */ /* */ /* ELP (Exchange Link Parameters) Payload */ /* FC-SW R3.3 - Table 6 */ /* */ #define ELP$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _elp { #pragma __nomember_alignment __struct { unsigned elp$v_reserved1 : 24; unsigned char elp$b_els_command_code; } elp$r_els_command_overlay; } ELP; #if !defined(__VAXC) #define elp$v_reserved1 elp$r_els_command_overlay.elp$v_reserved1 #define elp$b_els_command_code elp$r_els_command_overlay.elp$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Fabric Login Request */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 148, table 71 */ /* */ /*- */ #define FLOGI_REQ$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _flogi_req_t { #pragma __nomember_alignment __struct { unsigned flogi_req$v_reserved1 : 24; unsigned char flogi_req$b_els_command_code; } flogi_req$r_els_command_overlay; COMMON_SERVICE_PARAMETERS flogi_req$r_common_sparm; IEEE_ADDRESS_T flogi_req$r_port_name; IEEE_ADDRESS_T flogi_req$r_node_fabric_name; SERVICE_PARAMETERS flogi_req$r_class_1_sparm; SERVICE_PARAMETERS flogi_req$r_class_2_sparm; SERVICE_PARAMETERS flogi_req$r_class_3_sparm; unsigned char flogi_req$b_reserved2 [16]; unsigned char flogi_req$b_vendor_version_level [16]; } FLOGI_REQ_T; #if !defined(__VAXC) #define flogi_req$v_reserved1 flogi_req$r_els_command_overlay.flogi_req$v_reserved1 #define flogi_req$b_els_command_code flogi_req$r_els_command_overlay.flogi_req$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Fabric Login Response */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface (FC-PH) Rev 4.3 */ /* Working draft of 5-January-1996 */ /* Page 148, table 72 */ /* */ /*- */ #define FLOGI_RSP$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _flogi_rsp_t { #pragma __nomember_alignment __union { int flogi_rsp$l_els_command_longword; __struct { unsigned flogi_rsp$v_reserved1 : 24; unsigned char flogi_rsp$b_els_command_code; } flogi_rsp$r_els_command_overlay; } flogi_rsp$r_els_command_union; COMMON_SERVICE_PARAMETERS flogi_rsp$r_common_sparm; IEEE_ADDRESS_T flogi_rsp$r_port_name; IEEE_ADDRESS_T flogi_rsp$r_node_fabric_name; SERVICE_PARAMETERS flogi_rsp$r_class_1_sparm; SERVICE_PARAMETERS flogi_rsp$r_class_2_sparm; SERVICE_PARAMETERS flogi_rsp$r_class_3_sparm; unsigned char flogi_rsp$b_reserved2 [16]; unsigned char flogi_rsp$b_vendor_version_level [16]; } FLOGI_RSP_T; #if !defined(__VAXC) #define flogi_rsp$l_els_command_longword flogi_rsp$r_els_command_union.flogi_rsp$l_els_command_longword #define flogi_rsp$r_els_command_overlay flogi_rsp$r_els_command_union.flogi_rsp$r_els_command_overlay #define flogi_rsp$v_reserved1 flogi_rsp$r_els_command_overlay.flogi_rsp$v_reserved1 #define flogi_rsp$b_els_command_code flogi_rsp$r_els_command_overlay.flogi_rsp$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Discover F-Port Parameters Request */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface 2 (FC-PH-2) Rev 7.3 */ /* Working draft of 5-January-1996 */ /* Section 21.19.1 */ /* */ /*- */ #define FDISC_REQ$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _fdisc_req_t { #pragma __nomember_alignment __struct { unsigned fdisc_req$v_reserved1 : 24; unsigned char fdisc_req$b_els_command_code; } fdisc_req$r_els_command_overlay; COMMON_SERVICE_PARAMETERS fdisc_req$r_common_sparm; IEEE_ADDRESS_T fdisc_req$r_port_name; IEEE_ADDRESS_T fdisc_req$r_node_fabric_name; SERVICE_PARAMETERS fdisc_req$r_class_1_sparm; SERVICE_PARAMETERS fdisc_req$r_class_2_sparm; SERVICE_PARAMETERS fdisc_req$r_class_3_sparm; unsigned char fdisc_req$b_reserved2 [16]; unsigned char fdisc_req$b_vendor_version_level [16]; } FDISC_REQ_T; #if !defined(__VAXC) #define fdisc_req$v_reserved1 fdisc_req$r_els_command_overlay.fdisc_req$v_reserved1 #define fdisc_req$b_els_command_code fdisc_req$r_els_command_overlay.fdisc_req$b_els_command_code #endif /* #if !defined(__VAXC) */ /*+ */ /* */ /* Discover F-Port Parameters Response */ /* */ /* Ref: Fibre Channel Physical & Signaling Interface 2 (FC-PH-2) Rev 7.3 */ /* Working draft of 5-January-1996 */ /* Section 21.19.1 */ /* */ /*- */ #define FDISC_RSP$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _fdisc_rsp_t { #pragma __nomember_alignment __struct { unsigned fdisc_rsp$v_reserved1 : 24; unsigned char fdisc_rsp$b_els_command_code; } fdisc_rsp$r_els_command_overlay; COMMON_SERVICE_PARAMETERS fdisc_rsp$r_common_sparm; IEEE_ADDRESS_T fdisc_rsp$r_port_name; IEEE_ADDRESS_T fdisc_rsp$r_node_fabric_name; SERVICE_PARAMETERS fdisc_rsp$r_class_1_sparm; SERVICE_PARAMETERS fdisc_rsp$r_class_2_sparm; SERVICE_PARAMETERS fdisc_rsp$r_class_3_sparm; unsigned char fdisc_rsp$b_reserved2 [16]; unsigned char fdisc_rsp$b_vendor_version_level [16]; } FDISC_RSP_T; #if !defined(__VAXC) #define fdisc_rsp$v_reserved1 fdisc_rsp$r_els_command_overlay.fdisc_rsp$v_reserved1 #define fdisc_rsp$b_els_command_code fdisc_rsp$r_els_command_overlay.fdisc_rsp$b_els_command_code #endif /* #if !defined(__VAXC) */ /* */ /* ADISC (Discover Address) Payload */ /* FC-PH-2 R7.4 - Table 147 */ /* */ #define ADISC_REQ$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _adisc_req { #pragma __nomember_alignment __struct { unsigned adisc_req$v_reserved1 : 24; unsigned char adisc_req$b_els_command_code; } adisc_req$r_els_command_overlay; char adisc_req$b_reserved1; char adisc_req$b_orig_adrs [3]; int adisc_req$l_orig_port; int adisc_req$l_orig_node; char adisc_req$b_reserved2; char adisc_req$b_orig_port_id [3]; } ADISC_REQ; #if !defined(__VAXC) #define adisc_req$v_reserved1 adisc_req$r_els_command_overlay.adisc_req$v_reserved1 #define adisc_req$b_els_command_code adisc_req$r_els_command_overlay.adisc_req$b_els_command_code #endif /* #if !defined(__VAXC) */ /* */ /* ADISC (Discover Address) Reply */ /* FC-PH-2 R7.4 - Table 148 */ /* */ #define ADISC_ACC$M_RESERVED1 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _adisc_acc { #pragma __nomember_alignment __struct { unsigned adisc_acc$v_reserved1 : 24; unsigned char adisc_acc$b_els_command_code; } adisc_acc$r_els_command_overlay; char adisc_acc$b_reserved1; char adisc_acc$b_resp_adrs [3]; int adisc_acc$l_resp_port; int adisc_acc$l_resp_node; char adisc_acc$b_reserved2; char adisc_acc$b_resp_port_id [3]; } ADISC_ACC; #if !defined(__VAXC) #define adisc_acc$v_reserved1 adisc_acc$r_els_command_overlay.adisc_acc$v_reserved1 #define adisc_acc$b_els_command_code adisc_acc$r_els_command_overlay.adisc_acc$b_els_command_code #endif /* #if !defined(__VAXC) */ /* */ /* RSPN_ID (Register Symbolic Port Name) Request Payload */ /* FC-GS-2 ANSI NCITS 288-1999 - Table 68 */ /* */ /* Note: This command has no command-specific objects in */ /* its accept payload. */ /* */ /* Added with revision X-6 */ /* */ #define RSPN_ID_REQ$M_PORT_IDENT 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _rspn_id_req { #pragma __nomember_alignment unsigned rspn_id_req$v_port_ident : 24; char rspn_id_req$b_reserved [1]; char rspn_id_req$b_string_length; char rspn_id_req$b_port_name [255]; } RSPN_ID_REQ; /* */ /* FC4_ENTRY (List of FC4 entries returned by RNFT) */ /* Ref: Fibre Channel Framing and Signaling (FC-FS) REV 1.90 */ /* Draft proposal of 09-APR-2003 */ /* Table 194, page 303 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _fc4_entry_t { #pragma __nomember_alignment char fc4_entry$b_qualifier [3]; char fc4_entry$b_type; } FC4_ENTRY_T; /* */ /* RNFT Request Payload */ /* */ /* Ref: Fibre Channel Framing and Signaling (FC-FS) REV 1.90 */ /* Draft proposal of 09-APR-2003 */ /* Table 192, page 302 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _rnft_req { #pragma __nomember_alignment short int rnft_req$w_payload_length; /* Total length of payload (typically 20.) */ unsigned char rnft_req$b_reserved; /* Unused */ unsigned char rnft_req$b_els_command_code; /* Extended Link service command code */ unsigned char rnft_req$b_index; /* First FC-4 Entry to be returned */ char rnft_req$b_fill_18_ [3]; } RNFT_REQ; /* */ /* RNFT ACC Payload */ /* */ /* Ref: Fibre Channel Framing and Signaling (FC-FS) REV 1.90 */ /* Draft proposal of 09-APR-2003 */ /* Table 193, page 303 */ /* */ #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _rnft_acc { #pragma __nomember_alignment short int rnft_acc$w_payload_length; /* Total length of payload (typically 20.) */ unsigned char rnft_acc$b_reserved; /* reserved */ unsigned char rnft_acc$b_els_command_code; /* Extended Link service command code */ FC4_ENTRY_T rnft_acc$r_fc4_entry [255]; /* List of FC4 protocols */ } RNFT_ACC; /*+ */ /* X-7 Define topology constants */ /*- */ /* Tell whether a switch is present (1) or not (0) */ #define FC$M_TOPOLOGY_FABRIC 1 /* Tell whether the topology is Arbitrated Loop (1) or not (0) */ #define FC$M_TOPOLOGY_FC_AL 2 /* There are 2 bits in the topology mask */ #define FC$V_TOPOLOGY 0 #define FC$S_TOPOLOGY 2 #define FC$M_TOPOLOGY 3 /* Each topology gets it's own constant based on the bits defined above */ #define FC$C_TOPOLOGY_P2P 0 #define FC$C_TOPOLOGY_FABRIC 1 #define FC$C_TOPOLOGY_PRIVATE_LOOP 2 #define FC$C_TOPOLOGY_PUBLIC_LOOP 3 /* */ /* RFT_ID (Register FC-4 Types) Request Payload */ /* FC-GS-4 Rev 7.6 19-Dec-02 - Table 98 */ /* */ /* 1) Start with a zero'd 8-LW (32-byte) map */ /* 2) Each legal FC-4 type value fits into 8 bits: */ /* LW = high 3 bits (0 to 7) of FC-4 type value */ /* bit# = low 5 bits (0 to 31) of FC-4 type value */ /* 3) Using C notation, for each supported FC-4 type: */ /* map [LW] |= (1 << bit#) */ /* */ /* See Table 25 for a formal description of the FC-4 Types map format */ /* */ #define RFT_ID_REQ$M_PORT_IDENT 0xFFFFFF #if !defined(__NOBASEALIGN_SUPPORT) && !defined(__cplusplus) /* If using pre DECC V4.0 or C++ */ #pragma __nomember_alignment __longword #else #pragma __nomember_alignment #endif typedef struct _rft_id_req { #pragma __nomember_alignment unsigned rft_id_req$v_port_ident : 24; char rft_id_req$b_reserved [1]; __union { unsigned int rft_id_req$l_fc4_types [8]; unsigned char rft_id_req$b_fc4_types [32]; } rft_id_req$r_fc4_types_union; } RFT_ID_REQ; #if !defined(__VAXC) #define rft_id_req$l_fc4_types rft_id_req$r_fc4_types_union.rft_id_req$l_fc4_types #define rft_id_req$b_fc4_types rft_id_req$r_fc4_types_union.rft_id_req$b_fc4_types #endif /* #if !defined(__VAXC) */ #pragma __member_alignment __restore #ifdef __INITIAL_POINTER_SIZE /* Defined whenever ptr size pragmas supported */ #pragma __required_pointer_size __restore /* Restore the previously-defined required ptr size */ #endif #ifdef __cplusplus } #endif #pragma __standard #endif /* __FCPHDEF_LOADED */