! *** 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 ! + ! ! Access Control list Entry structure definitions ! ! - DECLARE LONG CONSTANT ACE$C_KEYID = 1 ! Key identifier entry DECLARE LONG CONSTANT ACE$C_RMSJNL_BI = 2 ! RMS BI journal DECLARE LONG CONSTANT ACE$C_RMSJNL_AI = 3 ! RMS AI journal DECLARE LONG CONSTANT ACE$C_RMSJNL_AT = 4 ! RMS AT journal DECLARE LONG CONSTANT ACE$C_AUDIT = 5 ! Security audit journal entry DECLARE LONG CONSTANT ACE$C_ALARM = 6 ! Security alarm entry DECLARE LONG CONSTANT ACE$C_INFO = 7 ! General purpose information DECLARE LONG CONSTANT ACE$C_RMSJNL_RU_DEFAULT = 8 ! RU journal default volume DECLARE LONG CONSTANT ACE$C_DIRDEF = 9 ! Directory default protection DECLARE LONG CONSTANT ACE$C_RMSJNL_RU = 10 ! RU journal (many per file) DECLARE LONG CONSTANT ACE$C_SUBSYSTEM_IDS = 11 ! Protected subsystem ids DECLARE LONG CONSTANT ACE$C_OIL = 12 ! Object Information Label DECLARE LONG CONSTANT ACE$C_NEW_OWNER = 13 ! Protection for owner ACE DECLARE LONG CONSTANT ACE$C_POSIX_OWNER = 14 ! Posix UID/GID (persona) from image DECLARE LONG CONSTANT ACE$C_MAX_CODE = 15 ! Maximum ACE type code plus 1 DECLARE LONG CONSTANT ACE$C_RESERVED = 255 ! Reserved ACE type DECLARE LONG CONSTANT ACE$C_APPLICATION = 7 ! Alternate application ACE code DECLARE LONG CONSTANT ACE$C_CUST = 1 ! Customer defined DECLARE LONG CONSTANT ACE$C_CSS = 2 ! CSS defined DECLARE LONG CONSTANT ACE$C_VMS = 3 ! VMS defined DECLARE LONG CONSTANT ACE$M_SUCCESS = x'00000001' DECLARE LONG CONSTANT ACE$M_FAILURE = x'00000002' DECLARE LONG CONSTANT ACE$M_DEFAULT = x'00000100' DECLARE LONG CONSTANT ACE$M_PROTECTED = x'00000200' DECLARE LONG CONSTANT ACE$M_HIDDEN = x'00000400' DECLARE LONG CONSTANT ACE$M_NOPROPAGATE = x'00000800' DECLARE LONG CONSTANT ACE$M_READ = x'00000001' DECLARE LONG CONSTANT ACE$M_WRITE = x'00000002' DECLARE LONG CONSTANT ACE$M_EXECUTE = x'00000004' DECLARE LONG CONSTANT ACE$M_DELETE = x'00000008' DECLARE LONG CONSTANT ACE$M_CONTROL = x'00000010' DECLARE LONG CONSTANT ACE$K_LENGTH = 8 ! Length of the overhead area DECLARE LONG CONSTANT ACE$C_LENGTH = 8 ! Length of the overhead area DECLARE LONG CONSTANT ACE$C_RMS_ATTRIBUTES = 0 ! variant of ACE for file attributes DECLARE LONG CONSTANT ACE$K_RMS_ATTRIBUTES = 0 ! variant of ACE for file attributes DECLARE LONG CONSTANT ACE$K_RMSATR_MINOR_V50 = 2 ! minor ID for VMS 5.0 DECLARE LONG CONSTANT ACE$K_RMSATR_MINOR_VDW = 2 ! minor ID for DECwindows V1.0 DECLARE LONG CONSTANT ACE$C_RMSATR_MINOR_ID = 2 ! current minor ID (obsolete symbol) DECLARE LONG CONSTANT ACE$K_RMSATR_MINOR_ID = 2 DECLARE LONG CONSTANT ACE$C_RMSATR_MAJOR_ID = 1 ! current major ID DECLARE LONG CONSTANT ACE$K_RMSATR_MAJOR_ID = 1 DECLARE LONG CONSTANT ACE$M_STATISTICS = x'00000001' DECLARE LONG CONSTANT ACE$M_XLATE_DEC = x'00000002' DECLARE LONG CONSTANT ACE$S_RMSATR = 20 ! size of RMS file attributes ACE (fixed fields) DECLARE LONG CONSTANT ACE$S_RMSATR_V50 = 20 ! size of RMS file attributes ACE (fixed fields) DECLARE LONG CONSTANT ACE$S_RMSATR_VDW = 20 ! size of RMS file attributes ACE (fixed fields) ! Beyond the fixed fields, variable length information will by stored DECLARE LONG CONSTANT ACE$_RMSATR_ORGANIZATION = 1 ! organizational extension object ID DECLARE LONG CONSTANT ACE$_RMSATR_SEMANTICS = 2 ! file semantics object ID DECLARE LONG CONSTANT ACE$K_RMSATR_ORG_MAX_LEN = 64 DECLARE LONG CONSTANT ACE$K_RMSATR_SEM_MAX_LEN = 64 DECLARE LONG CONSTANT ACE$S_RMSJNL_RU_DEFAULT = 17 ! length of RMSJNL RU default ACE DECLARE LONG CONSTANT ACE$M_JOURNAL_DISABLED = x'00000001' DECLARE LONG CONSTANT ACE$M_BACKUP_DONE = x'00000002' DECLARE LONG CONSTANT ACE$S_RMSJNL_RU = 38 ! length of RMSJNL RU ACE DECLARE LONG CONSTANT ACE$S_RMSJNL = 50 ! length of RMSJNL AI/BI/AT ACE DECLARE LONG CONSTANT ACE$S_OIL_S64I64 = 32 ! Length of Type 0 OIL ACE DECLARE LONG CONSTANT ACE$S_OIL_S128 = 32 ! Length of Type 1 OIL ACE DECLARE LONG CONSTANT ACE$S_OIL = 32 ! Maximum OIL ACE Size DECLARE LONG CONSTANT ACE$M_USERNAME_VALID = x'00000001' DECLARE LONG CONSTANT ACE$M_UIC_VALID = x'00000002' DECLARE LONG CONSTANT ACE$M_UID_VALID = x'00000004' DECLARE LONG CONSTANT ACE$M_GID_VALID = x'00000008' DECLARE LONG CONSTANT ACE$M_GROUP_MODE_VALID = x'00000010' DECLARE LONG CONSTANT ACE$M_OTHER = x'00000007' DECLARE LONG CONSTANT ACE$M_GROUP = x'00000038' DECLARE LONG CONSTANT ACE$M_USER = x'000001C0' DECLARE LONG CONSTANT ACE$M_S_IXOTH = x'00000001' DECLARE LONG CONSTANT ACE$M_S_IWOTH = x'00000002' DECLARE LONG CONSTANT ACE$M_S_IROTH = x'00000004' DECLARE LONG CONSTANT ACE$M_S_IXGRP = x'00000008' DECLARE LONG CONSTANT ACE$M_S_IWGRP = x'00000010' DECLARE LONG CONSTANT ACE$M_S_IRGRP = x'00000020' DECLARE LONG CONSTANT ACE$M_S_IXUSR = x'00000040' DECLARE LONG CONSTANT ACE$M_S_IWUSR = x'00000080' DECLARE LONG CONSTANT ACE$M_S_IRUSR = x'00000100' DECLARE LONG CONSTANT ACE$M_S_ISGID = x'00000400' DECLARE LONG CONSTANT ACE$M_S_ISUID = x'00000800' DECLARE LONG CONSTANT ACE$S_POSIX_OWNER_LENGTH = 60 ! Length of POSIX_OWNER ACE DECLARE LONG CONSTANT ACE$S_ACEDEF = 60 record ACEDEF BYTE ACE$B_SIZE ! Size of the entry BYTE ACE$B_TYPE ! Type of entry group ACE$R_FLAGS_OVERLAY variant case WORD ACE$W_FLAGS ! Type dependent ? independent flags case group ACE$R_FLAGS_INFO ! Flags for INFO type ACE ! INFO ACE subtype BYTE INFO_TYPE_bits ! COMMENT ADDED BY SDL - INFO_TYPE_bits contains bits INFO_TYPE through FILL_10_ end group ACE$R_FLAGS_INFO case group ACE$R_FLAGS_KEYID ! Flags for KEYID type ! Count of reserved longwords BYTE RESERVED_bits ! COMMENT ADDED BY SDL - RESERVED_bits contains bits RESERVED through FILL_11_ end group ACE$R_FLAGS_KEYID case group ACE$R_FLAGS_BITS0 ! Audit or alarm upon success ! Audit ot alarm upon failure BYTE SUCCESS_bits ! COMMENT ADDED BY SDL - SUCCESS_bits contains bits SUCCESS through FILL_12_ end group ACE$R_FLAGS_BITS0 case group ACE$R_FLAGS_BITS ! Type independent flags ! Directory default entry ! Protected ACE ! Hidden ACE ! No propagation between versions WORD FILLER_1_bits ! COMMENT ADDED BY SDL - FILLER_1_bits contains bits FILLER_1 through FILL_13_ end group ACE$R_FLAGS_BITS end variant end group ACE$R_FLAGS_OVERLAY group ACE$R_ACE_FIELDS ! Start of ACE overlayed area variant case group ACE$R_KEY_AUD_TYPE ! KEY-ID and security audit types group ACE$R_FILL_0_ variant case LONG ACE$L_ACCESS ! Access rights bitmask case group ACE$R_FILL_1_ ! Allowed to read ! Allowed to write ! Allowed to execute ! Allowed to delete ! All privileges of the owner BYTE READ_bits ! COMMENT ADDED BY SDL - READ_bits contains bits READ through FILL_14_ end group ACE$R_FILL_1_ end variant end group ACE$R_FILL_0_ group ACE$R_KEY_OVERLAY variant case LONG ACE$L_KEY ! Start of the key fields case STRING ACE$T_AUDITNAME = 16 ! Start of the security journal name end variant end group ACE$R_KEY_OVERLAY end group ACE$R_KEY_AUD_TYPE case group ACE$R_INFO_TYPE group ACE$R_FILL_2_ variant case LONG ACE$L_INFO_FLAGS ! INFO type application flags case group ACE$R_FILL_3_ WORD ACE$W_APPLICATION_FLAGS ! VMS application flags word WORD ACE$W_APPLICATION_FACILITY ! VMS application facility code end group ACE$R_FILL_3_ end variant end group ACE$R_FILL_2_ group ACE$R_INFO_DATA variant case STRING ACE$T_INFO_START = 1 ! Start of the information case group ACE$R_RMSATR_TYPE WORD ACE$W_RMSATR_VARIANT ! Which variant of the RMS attributes ACE BYTE ACE$B_RMSATR_FIXLEN ! length of fixed format fields ! (introduced at minor ID 3. Older ! ACE's are assumed to be all fixed form) BYTE ACE$B_RMSATR_SPARE1 ! currectly unused WORD ACE$W_RMSATR_MINOR_ID ! RMS file attributes ACE minor ID WORD ACE$W_RMSATR_MAJOR_ID ! RMS file attributes ACE major ID group ACE$R_FILL_4_ variant case LONG ACE$L_RMS_ATTRIBUTE_FLAGS ! RMS file attributes flags definitions case group ACE$R_FILL_5_ ! Statistics monitoring enabled on this file ! File semantics are DEC-local BYTE STATISTICS_bits ! COMMENT ADDED BY SDL - STATISTICS_bits contains bits STATISTICS & ! through FILL_15_ end group ACE$R_FILL_5_ end variant end group ACE$R_FILL_4_ ! using a {field-type, length, value} scheme. This allows extensibility ! and compact representation. ! ! field types are: end group ACE$R_RMSATR_TYPE end variant end group ACE$R_INFO_DATA end group ACE$R_INFO_TYPE case group ACE$R_RMSJNL_TYPE ! Used for all 5 RMSJNL_xxx ACEs STRING ACE$T_VOLNAM = 12 ! Volume name of journal file BYTE ACE$B_VOLNAM_LEN ! Length of volume name of journal file BYTE ACE$B_RJRVER ! RMS journal file structure level group ACE$R_FID_OVERLAY ! File-id of journal file variant case WORD ACE$W_FID ( 1 to 3 ) ! file id case group ACE$R_FID_FIELDS WORD ACE$W_FID_NUM ! file number WORD ACE$W_FID_SEQ ! sequence number group ACE$R_FID_RVN_OVERLAY variant case WORD ACE$W_FID_RVN ! relative volume number case group ACE$R_FID_RVN_FIELDS BYTE ACE$B_FID_RVN ! alternate format RVN BYTE ACE$B_FID_NMX ! alternate format file number extension end group ACE$R_FID_RVN_FIELDS end variant end group ACE$R_FID_RVN_OVERLAY end group ACE$R_FID_FIELDS end variant end group ACE$R_FID_OVERLAY group ACE$R_RMSJNL_FLAGS_OVERLAY variant case WORD ACE$W_RMSJNL_FLAGS case group ACE$R_RMSJNL_FLAGS_BITS ! journaling disabled ! (AI, BI, AT only; set by BACKUP) ! BACKUP done on this file; ! RMS needs to write a backup marker ! (AI, BI, AT only; set by BACKUP) BYTE JOURNAL_DISABLED_bits ! COMMENT ADDED BY SDL - JOURNAL_DISABLED_bits contains bits & ! JOURNAL_DISABLED through FILL_16_ end group ACE$R_RMSJNL_FLAGS_BITS end variant end group ACE$R_RMSJNL_FLAGS_OVERLAY LONG ACE$L_JNLIDX ! journal stream index number BASIC$QUADWORD ACE$Q_CDATE ! creation date/time of journal LONG ACE$L_BACKUP_SEQNO ! BACKUP sequence number (to ! find where to start in journal). BASIC$QUADWORD ACE$Q_MODIFICATION_TIME ! timestamp of last backup or last ! journal entry recovered. end group ACE$R_RMSJNL_TYPE case group ACE$R_DIRDEF_TYPE LONG ACE$L_SPARE1 ! For alignment LONG ACE$L_SYS_PROT ! Default system protection LONG ACE$L_OWN_PROT ! Default owner protection LONG ACE$L_GRP_PROT ! Default group protection LONG ACE$L_WOR_PROT ! Default world protection end group ACE$R_DIRDEF_TYPE case group ACE$R_IMAGE_ID_TYPE ! Protected subsystem ACE type LONG ACE$L_SPARE2 ! For alignment BASIC$QUADWORD ACE$Q_IMAGE_IDS ! Start of the image ids (a ! quadword for each identifier) end group ACE$R_IMAGE_ID_TYPE case group ACE$R_OIL_TYPE ! Object Information Label LONG ACE$L_OIL_FLAGS ! For Alignment LONG ACE$L_BRAND_NAME ! OIL Type-Specific Info STRING ACE$R_CLASS_PROT = 1 ! OIL Class Block end group ACE$R_OIL_TYPE ! - POSIX_OWNER ACE, Persona from Image - ! Process effective persona derived from image activation. ! Support for POSIX/COE effective UID/GID identities granted ! to a process if the image has this ACE and it is valid. ! The UID and GID are extensions to the Persona Security Block ! (PSBDEF). ! ! Currently, only the SUID, SGID, GID and POSIX_MODE (GROUP) ! fields are supported. VMS_GRP_PROT is also used internally. ! case group ACE$R_POSIX_OWNER_TYPE ! POSIX_OWNER ACE Type group ACE$R_FILL_6_ variant case LONG ACE$L_POSIX_FLAGS ! POSIX_OWNER Flags case group ACE$R_FILL_7_ ! Validates Posix username ! Validates Posix UIC ! Validates Posix User ID ! Validates Posix Group ID ! Validates Posix mode for Group file protection BYTE USERNAME_VALID_bits ! COMMENT ADDED BY SDL - USERNAME_VALID_bits contains bits & ! USERNAME_VALID through FILL_17_ end group ACE$R_FILL_7_ end variant end group ACE$R_FILL_6_ STRING ACE$T_POSIX_USERNAME = 32 ! Posix Username group ACE$R_FILL_8_ variant case LONG ACE$L_POSIX_UIC ! Posix UIC case group ACE$R_FILL_9_ WORD ACE$W_POSIX_MEM ! Member number in UIC WORD ACE$W_POSIX_GRP ! Group number in UIC end group ACE$R_FILL_9_ end variant end group ACE$R_FILL_8_ LONG ACE$L_POSIX_UID ! Posix User ID LONG ACE$L_POSIX_GID ! Posix Group ID group ACE$R_POSIX_MODE_OVERLAY variant case LONG ACE$L_POSIX_MODE ! Posix file protection (mode) case group ACE$R_POSIX_MODE_FIELDS ! Other Permissions ! Group Permissions ! User Permissions WORD OTHER_bits ! COMMENT ADDED BY SDL - OTHER_bits contains bits OTHER through FILL_18_ end group ACE$R_POSIX_MODE_FIELDS case group ACE$R_POSIX_MODE_BITS ! - Other Permissions - ! Posix mode - other execute ! Posix mode - other write ! Posix mode - other read ! - Group Permissions - ! Posix mode - group execute ! Posix mode - group write ! Posix mode - group read ! - User Permissions - ! Posix mode - user execute ! Posix mode - user write ! Posix mode - user read ! Blank bit field ! - SxID Bits - ! Posix set group ID on execution ! Posix set user ID on execution WORD S_IXOTH_bits ! COMMENT ADDED BY SDL - S_IXOTH_bits contains bits S_IXOTH through FILL_19_ end group ACE$R_POSIX_MODE_BITS end variant end group ACE$R_POSIX_MODE_OVERLAY LONG ACE$L_VMS_GRP_PROT ! Posix to VMS Group Prot. end group ACE$R_POSIX_OWNER_TYPE ! End - POSIX_OWNER ACE end variant end group ACE$R_ACE_FIELDS end record ACEDEF