! *** PREDECLARED TYPES %IF %DECLARED ( %BASIC$QUADWORD_DECLARED ) = 0 %THEN RECORD BASIC$QUADWORD LONG FILL ( 2 ) END RECORD %LET %BASIC$QUADWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$OCTAWORD_DECLARED ) = 0 %THEN RECORD BASIC$OCTAWORD LONG FILL ( 4 ) END RECORD %LET %BASIC$OCTAWORD_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$HFLOAT_AXP_DECLARED ) = 0 %THEN RECORD BASIC$HFLOAT_AXP LONG FILL ( 4 ) END RECORD %LET %BASIC$HFLOAT_AXP_DECLARED = 1 %END %IF %IF %DECLARED ( %BASIC$F_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$F_FLOATING_COMPLEX SINGLE REAL_PART SINGLE IMAGINARY_PART END RECORD %LET %BASIC$F_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$D_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$D_FLOATING_COMPLEX DOUBLE REAL_PART DOUBLE IMAGINARY_PART END RECORD %LET %BASIC$D_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$G_FLOATING_COMPLEX_DECL ) = 0 %THEN RECORD BASIC$G_FLOATING_COMPLEX GFLOAT REAL_PART GFLOAT IMAGINARY_PART END RECORD %LET %BASIC$G_FLOATING_COMPLEX_DECL = 1 %END %IF %IF %DECLARED ( %BASIC$H_FLOAT_AXP_CMPLX_DCL ) = 0 %THEN RECORD BASIC$H_FLOATING_COMPLEX_AXP BASIC$HFLOAT_AXP REAL_PART BASIC$HFLOAT_AXP IMAGINARY_PART END RECORD %LET %BASIC$H_FLOAT_AXP_CMPLX_DCL = 1 %END %IF ! ! Longword header prefixed to the World-Wide Identifier used in fibre channel. ! A WWID can be in any one of the eleven formats specified here. At this time ! though, only seven of these formats (WWID types 1-4, 9-11) are implemented ! in OpenVMS. ! ! Note that this is a common header, used by OpenVMS, Digital UNIX, and the ! Console. Any changes to this structure should be made in cooperation with ! these other groups. ! DECLARE LONG CONSTANT WWIDHDR$M_WWID_LENGTH = x'000FFFFF' DECLARE LONG CONSTANT WWIDHDR$M_ASCII_DATA = x'00100000' DECLARE LONG CONSTANT WWIDHDR$M_WWID_TYPE = x'FF000000' DECLARE LONG CONSTANT WWIDHDR$K_IEEE_REGEXT = 1 ! 1: Page83, ID type 3, NAA 0110 DECLARE LONG CONSTANT WWIDHDR$K_IEEE_REG = 2 ! 2: Page83, ID type 3, NAA 0101 DECLARE LONG CONSTANT WWIDHDR$K_PG83TY1_VID = 3 ! 3: PID+Page83, ID type 1 DECLARE LONG CONSTANT WWIDHDR$K_PG80_SERIALNO = 4 ! 4: VID+PID+Ser_No from Page80 DECLARE LONG CONSTANT WWIDHDR$K_INQ_SERIALNO = 5 ! 5: VID+PID+Ser_No from std. inq. data DECLARE LONG CONSTANT WWIDHDR$K_TGT_IDENT = 6 ! 6: VID+PID+Persistent_Tgt_ID DECLARE LONG CONSTANT WWIDHDR$K_BTL = 7 ! 7: VID+PID+Bus_No+Tgt_ID+LUN DECLARE LONG CONSTANT WWIDHDR$K_DEC_UNIQUE = 8 ! 8: HSZ-specific serial no's. DECLARE LONG CONSTANT WWIDHDR$K_HSZ_THISOTHER = 9 ! 9: THIS/OTHER ser. no. (older HSZs) DECLARE LONG CONSTANT WWIDHDR$K_IEEE48_VEXT = 10 ! 10: Page83, ID type 3, NAA 0010 DECLARE LONG CONSTANT WWIDHDR$K_IEEE48_0EXT = 11 ! 11: Page83, ID type 3, NAA 0001 DECLARE LONG CONSTANT WWIDHDR$K_IEEE_EUI64 = 12 ! 12: Page83, ID type 2 DECLARE LONG CONSTANT WWIDHDR$K_ISCSI_NAME = 13 ! 13: X-4 iSCSI Name DECLARE LONG CONSTANT WWIDHDR$S_WWIDHDR = 4 record WWIDHDR group WWIDHDR$R_HEADER_FIELDS ! Length of WWID data ! Data is in ASCII format ! Reserved ! WWID format type LONG WWID_LENGTH_bits ! COMMENT ADDED BY SDL - WWID_LENGTH_bits contains bits WWID_LENGTH through WWID_TYPE end group WWIDHDR$R_HEADER_FIELDS end record WWIDHDR ! ! World-Wide Identifier ! ! Includes the 4-byte header defined above and the body of the WWID. The ! largest WWID is currently the type that includes Vendor ID (8 bytes), ! Product ID (16 bytes), and Serial Number (up to 251 bytes). Rounding up ! to the nearest quadword boundary, this comes out to 276 bytes. ! DECLARE LONG CONSTANT WWID$S_WWID = 280 record WWID WWIDHDR WWID$R_HEADER BYTE WWID$B_DATA ( 1 to 276 ) end record WWID DECLARE LONG CONSTANT WWID$K_LENGTH = 280 ! ! Serial Number WWID ! ! This is the WWID that gets put together from both standard and Page 80 ! inquiry data. The Product ID and Vendor ID come from standard inquiry data. ! The Serial Number comes from Vital Product Data Page 80. The Header is the ! standard WWID header defined above. ! DECLARE LONG CONSTANT SN_WWID$S_SN_WWID = 280 record SN_WWID WWIDHDR SN_WWID$R_HEADER BYTE SN_WWID$B_VENDOR_ID ( 1 to 8 ) BYTE SN_WWID$B_PRODUCT_ID ( 1 to 16 ) BYTE SN_WWID$B_SERIAL_NO ( 1 to 252 ) end record SN_WWID DECLARE LONG CONSTANT SN_WWID$K_LENGTH = 280 ! ! The longest WWID is one that is made from the device's serial number, ! product ID, and vendor ID. ! 4 8 16 <= 252 ! +------+------------+-------------------+-----------------------------------+ ! |Header| Vendor | Product | Serial Number | ! +------+------------+-------------------+-----------------------------------+ ! ! Maximum WWID length comes out to 4+8+16+252 = 280 bytes. ! DECLARE LONG CONSTANT WWID$K_MAX_LENGTH = 280 ! ! WWID Table Entry ! ! The WWID table is created during boot by EXEC_INIT and is used by both ! EXEC_INIT and, later on in the boot, STACONFIG. The table stores informa- ! tion about all devices that have been registered by the user at the console. ! DECLARE LONG CONSTANT WWIDENT$S_WWIDENT = 128 record WWIDENT LONG WWIDENT$L_UNIT_NO LONG WWIDENT$L_DNP LONG WWIDENT$L_WWIDLEN group WWIDENT$R_WWID WWIDHDR WWIDENT$R_HEADER BYTE WWIDENT$B_FCWWID ( 1 to 112 ) end group WWIDENT$R_WWID end record WWIDENT DECLARE LONG CONSTANT WWIDENT$K_LENGTH = 128 DECLARE LONG CONSTANT WWIDTBL$K_MAX_ENTRIES = 1000 ! Max. entries in a WWID Table ! ! This structure points to a Fibre Channel adapter ID. This WWID differs ! from the other WWIDs in this file in that it is obtained directly from ! the adapter rather than the SCSI Device Identification page. Consequently, ! there is no header, vendor, and product information associated with ! this 64 bit identifier. The format of this 64 bit WWID is an IEEE 48 bit ! address with additional information as defined in the FC-PH. But we ! don't really care about the FC-PH format since all we want to do is display ! the 64 bits using the asci hex format of XXXX-XXXX-XXXX-XXXX, which is the ! widely accepted format used to display this information. ! DECLARE LONG CONSTANT FC_WWIDS_FC_WWID_64B = 8 record FC_WWID_64B BYTE FC_WWIDB_NAME ( 1 to 8 ) end record FC_WWID_64B