COMPILATION LISTING OF SEGMENT access_class_check Compiled by: Multics PL/I Compiler, Release 32f, of October 9, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 11/11/89 1058.2 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 14 /****^ HISTORY COMMENTS: 15* 1) change(87-12-17,Lippard), approve(87-08-24,MCR7760), 16* audit(88-02-03,Fawcett), install(88-02-16,MR12.2-1022): 17* Make reset_soos work on segments. 18* END HISTORY COMMENTS */ 19 20 21 /* format: style4,indattr,ifthenstmt,ifthen,idind35,^indcomtxt */ 22 23 /* Initial coding by Kobziar July 74 */ 24 /* Modified 750523 by LJS to add protection auditing */ 25 /* Modified 06/01/76 by R. Bratt to call find_$finished */ 26 /* Modified 07/77 by THVV for bad_dir_ check */ 27 /* Modified 06/84 by Keith Loepere to use the new dc_find. */ 28 /* Modified 84-12-03 by EJ Sharpe for access_audit_ */ 29 /* Modified 85-04-01 by Keith Loepere for access_audit_check_ep_. */ 30 31 access_class_check: proc (a_dirname, a_ename, a_code); 32 33 /* This procedure turns security_oosw off if dir consistent within AI rules */ 34 35 dcl a_code fixed bin (35) parameter; 36 dcl a_dirname char (*) parameter; 37 dcl a_ename char (*) parameter; 38 39 dcl access_class bit (72) aligned; 40 dcl code fixed bin (35); 41 dcl crunch_sw bit (1) init ("0"b); 42 dcl d_access_class bit (72) aligned; 43 dcl dep ptr; 44 dcl dirname char (168); 45 dcl dirlocked bit (1) aligned init ("0"b); 46 dcl ename char (32); 47 dcl entries_in_dir fixed bin; 48 dcl 1 event_flags aligned like audit_event_flags; 49 dcl got_branch bit (1) init ("0"b); 50 dcl i fixed bin; 51 dcl len fixed bin; 52 dcl pathname char (168); 53 dcl pdep ptr; 54 dcl 1 qcell like quota_cell aligned auto; 55 dcl relp bit (18); 56 dcl segment bit (1) aligned; 57 dcl unlock_parent_parent bit (1) init ("1"b); 58 59 dcl access_audit_check_ep_$self entry (bit (36) aligned, bit (36) aligned, ptr) returns (bit (1)); 60 dcl access_audit_$log_entry_ptr entry options (variable); 61 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned) reducible; 62 dcl aim_check_$greater entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned) reducible; 63 dcl lock$dir_unlock entry (ptr); 64 dcl level$get entry () returns (fixed bin); 65 dcl status_$get_access_class entry (char (*), char (*), bit (72) aligned, fixed bin (35)); 66 dcl sum$dirmod entry (ptr); 67 dcl sum$getbranch entry (ptr, bit (36) aligned, ptr, fixed bin (35)); 68 dcl sum$getbranch_root_my entry (ptr, bit (36) aligned, ptr, fixed bin (35)); 69 dcl vtoc_attributes$get_quota entry (bit (36) aligned, bit (36) aligned, fixed bin (17), ptr, fixed bin, fixed bin (35)); 70 71 dcl access_operations_$fs_obj_set_soos ext bit (36) aligned; 72 dcl error_table_$ai_son_less ext fixed bin (35); 73 dcl error_table_$argerr ext fixed bin (35); 74 dcl error_table_$bad_dir ext fixed bin (35); 75 dcl error_table_$notadir ext fixed bin (35); 76 dcl error_table_$root ext fixed bin (35); 77 dcl error_table_$rqover ext fixed bin (35); 78 dcl pds$processid bit (36) aligned ext; 79 80 dcl (addr, fixed, length, null, ptr, rtrim, string, substr) builtin; 81 82 dcl bad_dir_ condition; 83 84 dcl CHASE fixed bin (1) aligned internal static options (constant) init (1); 85 86 START: segment = "0"b; 87 dirname = a_dirname; 88 ename = a_ename; 89 /* get full dirname into pathname */ 90 len = length (rtrim (dirname)); /* Find length. Accept imbedded blanks. */ 91 if ename ^= "" then do; 92 if len + length (rtrim (ename)) + 1 > length (pathname) then do; /* path name too long */ 93 bad_path: code = error_table_$argerr; 94 goto early_fail; 95 end; 96 if len = 1 then pathname = substr (dirname, 1, 1) || ename; /* dir is root */ 97 else pathname = substr (dirname, 1, len) || ">" || ename; 98 end; 99 else do; /* no ename */ 100 if len >= length (pathname) then goto bad_path; /* enough checking */ 101 pathname = dirname; /* only dirname valid */ 102 end; 103 /* get access class of dir */ 104 call status_$get_access_class (pathname, "", access_class, code); 105 if code ^= 0 then if code = error_table_$root then access_class = "0"b; 106 else goto early_fail; /* map root's imaginary value */ 107 108 call dc_find$dir_read (pathname, dp, code); 109 if code = error_table_$notadir then do; 110 call dc_find$obj_status_read (dirname, ename, CHASE, ep, code); 111 segment = "1"b; 112 end; 113 if code ^= 0 then goto early_fail; 114 dirlocked = "1"b; 115 116 if ^segment then do; 117 i = 0; 118 entries_in_dir = dir.seg_count + dir.dir_count + dir.lcount; 119 do relp = dir.entryfrp repeat entry.efrp while (relp); 120 /* see if equal class */ 121 ep = ptr (dp, relp); 122 i = i + 1; 123 if i > entries_in_dir then signal bad_dir_; 124 if ^entry.bs then go to loop_cont; /* skip links */ 125 if entry.owner ^= dir.uid 126 | (entry.type ^= SEG_TYPE & entry.type ^= DIR_TYPE) then signal bad_dir_; 127 if ^aim_check_$equal (access_class, entry.access_class) then do; 128 if ^entry.multiple_class then goto err; /* if not equal then check for consistent upgrade */ 129 if ^aim_check_$greater (entry.access_class, access_class) then goto err; 130 if ^entry.dirsw then do; /* a segment can be upgraded only if in ring 1 */ 131 if fixed (entry.ring_brackets (3)) > 1 then goto err; 132 else goto loop_cont; 133 end; 134 /* a directory */ 135 else do; 136 call vtoc_attributes$get_quota (entry.uid, (entry.pvid), (entry.vtocx), 137 addr (qcell), 0, code); 138 if code ^= 0 then goto fail; 139 if ^qcell.terminal_quota_sw then do; 140 code = error_table_$rqover; 141 goto fail; 142 end; 143 end; 144 end; 145 else if entry.multiple_class then goto err; /* can't be multiple class if equal */ 146 loop_cont: end; 147 end; /* directory */ 148 149 if segment then dp = ptr (ep, 0); 150 151 call sum$getbranch (dp, "1"b, dep, code); 152 if code ^= 0 then goto fail1; 153 got_branch = "1"b; 154 155 if segment then do; 156 if ^aim_check_$equal (entry.access_class, dep -> entry.access_class) then 157 if ^entry.multiple_class | ^aim_check_$greater (entry.access_class, dep -> entry.access_class) then do; 158 code = error_table_$ai_son_less; 159 goto fail1; 160 end; 161 162 if entry.security_oosw then do; /* If it was out of service, we are making it in-service */ 163 entry.security_oosw = "0"b; 164 string (event_flags) = ""b; 165 event_flags.special_op = "1"b; 166 event_flags.grant = "1"b; 167 event_flags.priv_op = "1"b; 168 if access_audit_check_ep_$self (string (event_flags), access_operations_$fs_obj_set_soos, dep) then 169 call access_audit_$log_entry_ptr ("access_class_check", level$get (), string (event_flags), 170 access_operations_$fs_obj_set_soos, dep, code, null (), 0, "switch turned off"); 171 ptr (dep, 0) -> dir.modify = "0"b; 172 call sum$dirmod (dp); 173 end; 174 goto unlock3; 175 end; 176 177 call sum$getbranch_root_my (ptr (dep, 0), "0"b, pdep, code); /* get the parent's access_class */ 178 if code ^= 0 then /* up to the root ? */ 179 if code = error_table_$root then do; 180 unlock_parent_parent = "0"b; 181 d_access_class = "0"b; /* root at 0 */ 182 code = 0; /* clear for return */ 183 end; 184 else goto unlock3; /* no other err acceptable */ 185 /* successful */ 186 else d_access_class = pdep -> entry.access_class; /* save this */ 187 188 if unlock_parent_parent then call lock$dir_unlock (ptr (pdep, 0)); 189 190 if aim_check_$greater (access_class, d_access_class) then do; /* this is an upgraded dir */ 191 call vtoc_attributes$get_quota (dep -> entry.uid, (dep -> entry.pvid), (dep -> entry.vtocx), 192 addr (qcell), 0, code); 193 if code ^= 0 then goto fail; 194 if ^qcell.terminal_quota_sw then do; 195 code = error_table_$rqover; 196 goto fail; 197 end; 198 end; 199 else if ^aim_check_$equal (access_class, d_access_class) then do; 200 code = error_table_$bad_dir; 201 goto fail; 202 end; 203 /* success */ 204 if dep -> entry.security_oosw then do; /* If it was out of service, we are making it in-service */ 205 ptr (dep, 0) -> dir.modify = pds$processid; 206 dep -> entry.security_oosw = "0"b; 207 string (event_flags) = ""b; 208 event_flags.special_op = "1"b; 209 event_flags.grant = "1"b; 210 event_flags.priv_op = "1"b; 211 if access_audit_check_ep_$self (string (event_flags), access_operations_$fs_obj_set_soos, dep) then 212 call access_audit_$log_entry_ptr ("access_class_check", level$get (), string (event_flags), 213 access_operations_$fs_obj_set_soos, dep, code, null (), 0, "switch turned off"); 214 end; 215 ptr (dep, 0) -> dir.modify = "0"b; 216 217 call sum$dirmod (ptr (dep, 0)); /* Must be done with dir locked */ 218 unlock3: 219 call lock$dir_unlock (ptr (dep, 0)); 220 221 fail1: call dc_find$finished (dp, dirlocked); 222 early_fail: a_code = code; 223 return; 224 225 err: 226 code = error_table_$bad_dir; 227 fail: if crunch_sw then do; /* FAILURE. If requested we will set out of service */ 228 if ^got_branch then call sum$getbranch (dp, "1"b, dep, (0)); 229 got_branch = "1"b; 230 ptr (dep, 0) -> dir.modify = pds$processid; 231 dep -> entry.security_oosw = "1"b; 232 string (event_flags) = ""b; 233 event_flags.special_op = "1"b; 234 event_flags.grant = "1"b; 235 event_flags.priv_op = "1"b; 236 if access_audit_check_ep_$self (string (event_flags), access_operations_$fs_obj_set_soos, dep) then 237 call access_audit_$log_entry_ptr ("access_class_check", level$get (), string (event_flags), 238 access_operations_$fs_obj_set_soos, dep, code, null (), 0, "switch turned on"); 239 ptr (dep, 0) -> dir.modify = "0"b; 240 call sum$dirmod (ptr (dep, 0)); 241 end; 242 if got_branch then call lock$dir_unlock (ptr (dep, 0)); 243 go to fail1; 244 245 aim_check_soos: entry (a_dirname, a_ename, a_code); 246 247 crunch_sw = "1"b; 248 go to START; 249 /* begin include file - access_audit_eventflags.incl.pl1 */ 1 2 /* NOTE: This include file has an ALM counterpart made with cif. 1 3*Keep it up to date. */ 1 4 1 5 dcl 1 audit_event_flags based aligned, 1 6 2 special_op bit (1) unal, /* special sys operation */ 1 7 2 grant bit (1) unal, /* operation was successful */ 1 8 2 admin_op bit (1) unal, /* administrative operation */ 1 9 2 priv_op bit (1) unal, /* privileged operation */ 1 10 2 cc_1_10 bit (1) unal, /* small covert channel */ 1 11 2 cc_10_100 bit (1) unal, /* moderate covert channel */ 1 12 2 receiver bit (1) unal, /* on receiving end of channel */ 1 13 2 pad bit (29) unal; 1 14 1 15 /* end include file - access_audit_eventflags.incl.pl1 */ 249 250 /* BEGIN include file dc_find_dcls.incl.pl1 */ 2 2 2 3 /* Calling sequences for dc_find. Keith Loepere, June 1984. */ 2 4 /* Added a few more, October 1984. */ 2 5 /* 85-05-08, EJ Sharpe: added obj_delete_uid, obj_status_read_uid, and obj_status_read_raw_uid */ 2 6 /* 85-05-15, EJ Sharpe: changed dir_write_raw_uid to mdir_set_quota_uid */ 2 7 2 8 /* format: style4,indattr,ifthenstmt,ifthen,idind35,^indcomtxt */ 2 9 2 10 dcl DC_FIND_CHASE fixed bin (1) static options (constant) init (1); 2 11 dcl DC_FIND_NO_CHASE fixed bin (1) static options (constant) init (0); 2 12 dcl DC_FIND_NO_UNLOCK_DIR bit (1) aligned static options (constant) init ("0"b); 2 13 dcl DC_FIND_UNLOCK_DIR bit (1) aligned static options (constant) init ("1"b); 2 14 2 15 dcl dc_find$dir_for_append entry (char (168), char (32), fixed bin (1), ptr, ptr, fixed bin (35)); 2 16 dcl dc_find$dir_for_append_raw entry (char (168), char (32), fixed bin (1), ptr, ptr, fixed bin (35)); 2 17 dcl dc_find$dir_for_retrieve_append entry (char (168), char (32), fixed bin (1), ptr, ptr, ptr, fixed bin (35)); 2 18 2 19 dcl dc_find$dir_initiate entry (char (168), ptr, fixed bin (35)); 2 20 2 21 dcl dc_find$dir_move_quota entry (char (168), ptr, ptr, fixed bin (35)); 2 22 2 23 dcl dc_find$dir_read entry (char (168), ptr, fixed bin (35)); 2 24 dcl dc_find$dir_read_priv entry (char (168), ptr, fixed bin (35)); 2 25 2 26 dcl dc_find$dir_reclassify entry (char (168), ptr, ptr, ptr, fixed bin (35)); 2 27 2 28 dcl dc_find$dir_salvage entry (char (168), bit (36) aligned, ptr, fixed bin (35)); 2 29 2 30 dcl dc_find$dir_write entry (char (168), fixed bin (18) uns, ptr, fixed bin (35)); 2 31 dcl dc_find$dir_write_priv entry (char (168), fixed bin (18) uns, ptr, fixed bin (35)); 2 32 2 33 dcl dc_find$finished entry (ptr, bit (1) aligned); 2 34 2 35 dcl dc_find$link_target entry (char (168), char (32), fixed bin (35)); 2 36 2 37 dcl dc_find$mdir_set_quota_uid entry ((0:15) bit (36) aligned, char (168), fixed bin (18) uns, ptr, ptr, fixed bin (35)); 2 38 2 39 dcl dc_find$obj_access_write entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 2 40 dcl dc_find$obj_access_write_priv entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 2 41 2 42 dcl dc_find$obj_attributes_read entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 2 43 dcl dc_find$obj_attributes_read_ptr entry (ptr, ptr, fixed bin (35)); 2 44 2 45 dcl dc_find$obj_attributes_write entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 2 46 dcl dc_find$obj_attributes_write_ptr entry (ptr, fixed bin (18) uns, ptr, fixed bin (35)); 2 47 2 48 dcl dc_find$obj_bc_delta_write entry (char (168), char (32), fixed bin (24), ptr, fixed bin (35)); 2 49 dcl dc_find$obj_bc_delta_write_ptr entry (ptr, fixed bin (24), ptr, fixed bin (35)); 2 50 dcl dc_find$obj_bc_write entry (char (168), char (32), fixed bin (24), ptr, fixed bin (35)); 2 51 dcl dc_find$obj_bc_write_ptr entry (ptr, fixed bin (24), ptr, fixed bin (35)); 2 52 2 53 dcl dc_find$obj_delete entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 2 54 dcl dc_find$obj_delete_priv entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 2 55 dcl dc_find$obj_delete_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 2 56 dcl dc_find$obj_delete_priv_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 2 57 dcl dc_find$obj_delete_ptr entry (ptr, ptr, fixed bin (35)); 2 58 2 59 dcl dc_find$obj_existence_ptr entry (ptr, ptr, fixed bin (35)); 2 60 2 61 dcl dc_find$obj_for_audit entry (char (168), char (32), ptr, fixed bin (35)); 2 62 2 63 dcl dc_find$obj_initiate entry (char (168), char (32), ptr, fixed bin (35)); 2 64 dcl dc_find$obj_initiate_for_linker_dp entry (ptr, char (32), ptr, fixed bin (35)); 2 65 dcl dc_find$obj_initiate_raw entry (char (168), char (32), ptr, fixed bin (35)); 2 66 2 67 dcl dc_find$obj_linkage_ring_ptr entry (ptr, fixed bin (35)); 2 68 2 69 dcl dc_find$obj_modes_ptr entry (ptr, bit (36) aligned, bit (36) aligned, (3) fixed bin (3), fixed bin (35)); 2 70 2 71 dcl dc_find$obj_reclassify entry (char (168), char (32), ptr, ptr, fixed bin (35)); 2 72 2 73 dcl dc_find$obj_status_attributes_read entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 2 74 2 75 dcl dc_find$obj_status_read entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 2 76 dcl dc_find$obj_status_read_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 2 77 dcl dc_find$obj_status_read_priv entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 2 78 dcl dc_find$obj_status_read_priv_ptr entry (ptr, ptr, fixed bin (35)); 2 79 dcl dc_find$obj_status_read_priv_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 2 80 dcl dc_find$obj_status_read_raw_uid entry ((0:15) bit (36) aligned, char (168), char (32), ptr, fixed bin (35)); 2 81 dcl dc_find$obj_status_read_ptr entry (ptr, ptr, fixed bin (35)); 2 82 2 83 dcl dc_find$obj_status_write entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 2 84 dcl dc_find$obj_status_write_priv entry (char (168), char (32), fixed bin (1), fixed bin (18) uns, ptr, fixed bin (35)); 2 85 dcl dc_find$obj_status_write_priv_ptr entry (ptr, fixed bin (18) uns, ptr, fixed bin (35)); 2 86 dcl dc_find$obj_status_write_ptr entry (ptr, fixed bin (18) uns, ptr, fixed bin (35)); 2 87 2 88 dcl dc_find$obj_terminate entry (char (168), char (32), fixed bin (1), ptr, fixed bin (35)); 2 89 dcl dc_find$obj_terminate_ptr entry (ptr, ptr, fixed bin (35)); 2 90 2 91 dcl dc_find$obj_truncate entry (char (168), char (32), ptr, fixed bin (35)); 2 92 dcl dc_find$obj_truncate_ptr entry (ptr, ptr, fixed bin (35)); 2 93 dcl dc_find$obj_truncate_raw_ptr entry (ptr, ptr, fixed bin (35)); 2 94 2 95 dcl dc_find$obj_volume_retrieve entry (char (168), char (32), ptr, ptr, fixed bin (35)); 2 96 2 97 dcl dc_find$seg_fault entry (ptr, ptr, fixed bin (35)); 2 98 2 99 /* END include file dc_find_dcls.incl.pl1 */ 250 251 /* BEGIN INCLUDE FILE ... dir_header.incl.pl1 */ 3 2 /* Modified 8/74 for NSS */ 3 3 /* Modified 8/76 to add version number and hash table rel pointer for variable hash table sizes */ 3 4 /* Modified 3/82 BIM for change pclock */ 3 5 /* format: style3 */ 3 6 3 7 /* Template for the directory header. Length = 64 words. */ 3 8 3 9 dcl dp ptr; 3 10 3 11 dcl 1 dir based (dp) aligned, 3 12 3 13 2 modify bit (36), /* Process ID of last modifier */ 3 14 2 type bit (18) unaligned, /* type of object = dir header */ 3 15 2 size fixed bin (17) unaligned, /* size of header in words */ 3 16 2 dtc (3), /* date-time checked by salvager array */ 3 17 3 date bit (36), /* the date */ 3 18 3 error bit (36), /* what errors were discovered */ 3 19 3 20 2 uid bit (36), /* uid of the directory - copied from branch */ 3 21 3 22 2 pvid bit (36), /* phys vol id of the dir - copied from branch */ 3 23 3 24 2 sons_lvid bit (36), /* log vol id for inf non dir seg - copied from branch */ 3 25 3 26 2 access_class bit (72), /* security attributes of dir - copied from branch */ 3 27 3 28 (2 vtocx fixed bin (17), /* vtoc entry index of the dir - copied from branch */ 3 29 2 version_number fixed bin (17), /* version number of header */ 3 30 3 31 2 entryfrp bit (18), /* rel ptr to beginning of entry list */ 3 32 2 pad2 bit (18), 3 33 3 34 2 entrybrp bit (18), /* rel ptr to end of entry list */ 3 35 2 pad3 bit (18), 3 36 3 37 2 pers_frp bit (18), /* rel ptr to start of person name list */ 3 38 2 proj_frp bit (18), /* rel ptr to start of project name list */ 3 39 3 40 2 pers_brp bit (18), /* rel ptr to end of person name list */ 3 41 2 proj_brp bit (18), /* rel ptr to end of project name list */ 3 42 3 43 2 seg_count fixed bin (17), /* number of non-directory branches */ 3 44 2 dir_count fixed bin (17), /* number of directory branches */ 3 45 3 46 2 lcount fixed bin (17), /* number of links */ 3 47 2 acle_total fixed bin (17), /* total number of ACL entries in directory */ 3 48 3 49 2 arearp bit (18), /* relative pointer to beginning of allocation area */ 3 50 2 per_process_sw bit (1), /* indicates dir contains per process segments */ 3 51 2 master_dir bit (1), /* TRUE if this is a master dir */ 3 52 2 force_rpv bit (1), /* TRUE if segs must be on RPV */ 3 53 2 rehashing bit (1), /* TRUE if hash table is being constructed */ 3 54 2 pad4 bit (14), 3 55 3 56 2 iacl_count (0:7), 3 57 3 seg fixed bin (17), /* number of initial acl entries for segs */ 3 58 3 dir fixed bin (17), /* number of initial acl entries for dir */ 3 59 3 60 2 iacl (0:7), /* pointer to initial ACLs for each ring */ 3 61 3 seg_frp bit (18), /* rel ptr to start of initial ACL for segs */ 3 62 3 seg_brp bit (18), /* rel ptr to end of initial ACL for segs */ 3 63 3 64 3 dir_frp bit (18), /* rel ptr to start of initial for dirs */ 3 65 3 dir_brp bit (18), /* rel ptr to end of initial ACL for dirs */ 3 66 3 67 2 htsize fixed bin (17), /* size of hash table */ 3 68 2 hash_table_rp bit (18), /* rel ptr to start of hash table */ 3 69 3 70 2 htused fixed bin (17), /* no. of used places in hash table */ 3 71 2 pad6 fixed bin (17), 3 72 3 73 2 tree_depth fixed bin (17), /* number of levels from root of this dir */ 3 74 2 pad7 bit (18)) unaligned, 3 75 3 76 2 dts bit (36), /* date-time directory last salvaged */ 3 77 3 78 2 master_dir_uid bit (36), /* uid of superior master dir */ 3 79 2 change_pclock fixed bin (35), /* up one each call to sum$dirmod */ 3 80 2 pad8 (11) bit (36), /* pad to make it a 64 word header */ 3 81 2 checksum bit (36), /* checksummed from uid on */ 3 82 2 owner bit (36); /* uid of parent dir */ 3 83 3 84 dcl version_number_2 fixed bin int static options (constant) init (2); 3 85 3 86 /* END INCLUDE FILE ... dir_header.incl.pl1 */ 251 252 /* BEGIN INCLUDE FILE ... dir_entry.incl.pl1 ...last modified August 1974 for nss */ 4 2 4 3 4 4 /* Template for an entry. Length = 38 words */ 4 5 4 6 dcl ep ptr; 4 7 4 8 dcl 1 entry based (ep) aligned, 4 9 4 10 (2 efrp bit (18), /* forward rel ptr to next entry */ 4 11 2 ebrp bit (18)) unaligned, /* backward rel ptr to previous entry */ 4 12 4 13 2 type bit (18) unaligned, /* type of object = dir entry */ 4 14 2 size fixed bin (17) unaligned, /* size of dir entry */ 4 15 4 16 2 uid bit (36), /* unique id of entry */ 4 17 4 18 2 dtem bit (36), /* date-time entry modified */ 4 19 4 20 (2 bs bit (1), /* branch switch = 1 if branch */ 4 21 2 pad0 bit (17), 4 22 2 nnames fixed bin (17), /* number of names for this entry */ 4 23 4 24 2 name_frp bit (18), /* rel pointer to start of name list */ 4 25 2 name_brp bit (18), /* rel pointer to end of name list */ 4 26 4 27 2 author, /* user who created branch */ 4 28 3 pers_rp bit (18), /* name of user who created branch */ 4 29 3 proj_rp bit (18), /* project of user who created branch */ 4 30 4 31 3 tag char (1), /* tag of user who created branch */ 4 32 3 pad1 char (3), 4 33 4 34 2 primary_name bit (504), /* first name on name list */ 4 35 4 36 2 dtd bit (36), /* date time dumped */ 4 37 4 38 2 pad2 bit (36), 4 39 4 40 4 41 /* the declarations below are for branch only */ 4 42 4 43 4 44 2 pvid bit (36), /* physical volume id */ 4 45 4 46 2 vtocx fixed bin (17), /* vtoc entry index */ 4 47 2 pad3 bit (18), 4 48 4 49 2 dirsw bit (1), /* = 1 if this is a directory branch */ 4 50 2 oosw bit (1), /* out of service switch on = 1 */ 4 51 2 per_process_sw bit (1), /* indicates segment is per process */ 4 52 2 copysw bit (1), /* = 1 make copy of segment whenever initiated */ 4 53 2 safety_sw bit (1), /* if 1 then entry cannot be deleted */ 4 54 2 multiple_class bit (1), /* segment has multiple security classes */ 4 55 2 audit_flag bit (1), /* segment must be audited for security */ 4 56 2 security_oosw bit (1), /* security out of service switch */ 4 57 2 entrypt_sw bit (1), /* 1 if call limiter is to be enabled */ 4 58 2 master_dir bit (1), /* TRUE for master directory */ 4 59 2 tpd bit (1), /* TRUE if this segment is never to go on the PD */ 4 60 2 pad4 bit (11), 4 61 2 entrypt_bound bit (14)) unaligned, /* call limiter */ 4 62 4 63 2 access_class bit (72) aligned, /* security attributes : level and category */ 4 64 4 65 (2 ring_brackets (3) bit (3), /* ring brackets on segment */ 4 66 2 ex_ring_brackets (3) bit (3), /* extended ring brackets */ 4 67 2 acle_count fixed bin (17), /* number of entries on ACL */ 4 68 4 69 2 acl_frp bit (18), /* rel ptr to start of ACL */ 4 70 2 acl_brp bit (18), /* rel ptr to end of ACL */ 4 71 4 72 2 bc_author, /* user who last set the bit count */ 4 73 3 pers_rp bit (18), /* name of user who set the bit count */ 4 74 3 proj_rp bit (18), /* project of user who set the bit count */ 4 75 4 76 3 tag char (1), /* tag of user who set the bit count */ 4 77 3 pad5 bit (2), 4 78 2 bc fixed bin (24)) unaligned, /* bit count for segs, msf indicator for dirs */ 4 79 4 80 2 sons_lvid bit (36), /* logical volume id for immediat inf non dir seg */ 4 81 4 82 2 pad6 bit (36), 4 83 4 84 2 checksum bit (36), /* checksum from dtd */ 4 85 4 86 2 owner bit (36); /* uid of containing directory */ 4 87 4 88 /* END INCLUDE FILE ... dir_entry.incl.pl1 ... */ 252 253 /* BEGIN include file fs_obj_access_codes.incl.pl1 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(88-05-12,Lippard), approve(88-05-02,MCR7881), 5 6* audit(88-06-16,Fawcett), install(88-08-02,MR12.2-1074): 5 7* Changed to add the FS_OBJ_AUDIT_FLAG_MOD constant. 5 8* END HISTORY COMMENTS */ 5 9 5 10 5 11 /* The possible events within the file system; access codes and 5 12* detailed operation codes. October 1984, Keith Loepere. */ 5 13 5 14 /* format: style4,indattr,ifthenstmt,ifthen,idind35,^indcomtxt */ 5 15 5 16 /* Major file system operations. */ 5 17 5 18 dcl access_operations_$fs_obj_create bit (36) aligned ext; 5 19 dcl access_operations_$fs_obj_delete bit (36) aligned ext; 5 20 dcl access_operations_$fs_obj_initiate bit (36) aligned ext; 5 21 dcl access_operations_$fs_obj_terminate bit (36) aligned ext; 5 22 dcl access_operations_$fs_obj_contents_read bit (36) aligned ext; 5 23 dcl access_operations_$fs_obj_contents_mod bit (36) aligned ext; 5 24 dcl access_operations_$fs_obj_prop_read bit (36) aligned ext; 5 25 dcl access_operations_$fs_obj_attr_mod bit (36) aligned ext; 5 26 dcl access_operations_$fs_obj_status_mod bit (36) aligned ext; 5 27 dcl access_operations_$fs_obj_access_mod bit (36) aligned ext; 5 28 5 29 /* Detailed operations. */ 5 30 5 31 dcl FS_OBJ_CONNECT fixed bin (18) uns init (1) static options (constant); 5 32 dcl FS_OBJ_BC_MOD fixed bin (18) uns init (2) static options (constant); 5 33 dcl FS_OBJ_TRUNCATE fixed bin (18) uns init (3) static options (constant); 5 34 dcl FS_OBJ_ACL_MOD fixed bin (18) uns init (4) static options (constant); 5 35 dcl FS_OBJ_RING_MOD fixed bin (18) uns init (5) static options (constant); 5 36 dcl FS_OBJ_ACL_RING_MOD fixed bin (18) uns init (6) static options (constant); 5 37 dcl FS_OBJ_RENAME fixed bin (18) uns init (7) static options (constant); 5 38 dcl FS_OBJ_COPY_SW_MOD fixed bin (18) uns init (8) static options (constant); 5 39 dcl FS_OBJ_DAMAGED_SW_MOD fixed bin (18) uns init (9) static options (constant); 5 40 dcl FS_OBJ_DNZP_MOD fixed bin (18) uns init (10) static options (constant); 5 41 dcl FS_OBJ_ENTRY_BOUND_MOD fixed bin (18) uns init (11) static options (constant); 5 42 dcl FS_OBJ_MAX_LEN_MOD fixed bin (18) uns init (12) static options (constant); 5 43 dcl FS_OBJ_SAFETY_SW_MOD fixed bin (18) uns init (13) static options (constant); 5 44 dcl FS_OBJ_SYNC_SW_MOD fixed bin (18) uns init (14) static options (constant); 5 45 dcl FS_OBJ_VOL_DUMP_SW_MOD fixed bin (18) uns init (15) static options (constant); 5 46 dcl FS_OBJ_AUTHOR_MOD fixed bin (18) uns init (16) static options (constant); 5 47 dcl FS_OBJ_BC_AUTHOR_MOD fixed bin (18) uns init (17) static options (constant); 5 48 dcl FS_OBJ_BACKUP_TIMES_MOD fixed bin (18) uns init (18) static options (constant); 5 49 dcl FS_OBJ_DATES_MOD fixed bin (18) uns init (19) static options (constant); 5 50 dcl FS_OBJ_DT_DUMPED_MOD fixed bin (18) uns init (20) static options (constant); 5 51 dcl FS_OBJ_FOR_RELOADER_MOD fixed bin (18) uns init (21) static options (constant); 5 52 dcl FS_OBJ_SONS_LVID_MOD fixed bin (18) uns init (22) static options (constant); 5 53 dcl FS_OBJ_SOOS_MOD fixed bin (18) uns init (23) static options (constant); 5 54 dcl FS_OBJ_MOVE_QUOTA fixed bin (18) uns init (24) static options (constant); 5 55 dcl FS_OBJ_CORRECT_QUSED fixed bin (18) uns init (25) static options (constant); 5 56 dcl FS_OBJ_DIR_SALVAGE fixed bin (18) uns init (26) static options (constant); 5 57 dcl FS_OBJ_MDIR_QUOTA_MOD fixed bin (18) uns init (27) static options (constant); 5 58 dcl FS_OBJ_QUOTA_MOD fixed bin (18) uns init (28) static options (constant); 5 59 dcl FS_OBJ_QUOTA_RELOAD fixed bin (18) uns init (29) static options (constant); 5 60 dcl FS_OBJ_RECLASSIFY fixed bin (18) uns init (30) static options (constant); 5 61 dcl FS_OBJ_RECLASSIFY_NODE fixed bin (18) uns init (31) static options (constant); 5 62 dcl FS_OBJ_SEG_MOVE fixed bin (18) uns init (32) static options (constant); 5 63 dcl FS_OBJ_TRP_MOD fixed bin (18) uns init (33) static options (constant); 5 64 dcl FS_OBJ_VOLUME_RETRIEVE fixed bin (18) uns init (34) static options (constant); 5 65 dcl FS_OBJ_IACL_MOD fixed bin (18) uns init (35) static options (constant); 5 66 dcl FS_OBJ_CREATE_BRANCH fixed bin (18) uns init (36) static options (constant); 5 67 dcl FS_OBJ_AUDIT_FLAG_MOD fixed bin (18) uns init (37) static options (constant); 5 68 5 69 /* END include file fs_obj_access_codes.incl.pl1 */ 253 254 /* BEGIN INCLUDE FILE ... fs_types.incl.pl1 */ 6 2 6 3 dcl ACCESS_NAME_TYPE bit (18) static options (constant) init ("000001"b3); 6 4 dcl ACLE_TYPE bit (18) static options (constant) init ("000002"b3); 6 5 dcl DIR_HEADER_TYPE bit (18) static options (constant) init ("000003"b3); 6 6 dcl DIR_TYPE bit (18) static options (constant) init ("000004"b3); 6 7 dcl LINK_TYPE bit (18) static options (constant) init ("000005"b3); 6 8 dcl NAME_TYPE bit (18) static options (constant) init ("000006"b3); 6 9 dcl SEG_TYPE bit (18) static options (constant) init ("000007"b3); 6 10 dcl HASH_TABLE_TYPE bit (18) static options (constant) init ("000013"b3); 6 11 6 12 dcl access_name_type fixed bin static options (constant) init (1); 6 13 dcl acle_type fixed bin static options (constant) init (2); 6 14 dcl dir_header_type fixed bin static options (constant) init (3); 6 15 dcl dir_type fixed bin static options (constant) init (4); 6 16 dcl link_type fixed bin static options (constant) init (5); 6 17 dcl name_type fixed bin static options (constant) init (6); 6 18 dcl seg_type fixed bin static options (constant) init (7); 6 19 dcl hash_table_type fixed bin static options (constant) init (11); 6 20 6 21 /* END INCLUDE FILE ... fs_types.incl.pl1 */ 254 255 /* BEGIN INCLUDE FILE ... quota_cell.incl.pl1 ... February 1982 */ 7 2 7 3 dcl 1 quota_cell based (qcp) aligned, /* Argument used by vtoc_attributes$(get set)_quota */ 7 4 2 quota fixed bin (35), /* Record quota */ 7 5 2 used fixed bin (35), /* Current use */ 7 6 2 received fixed bin (35), /* Quota moved down */ 7 7 2 tup bit (36), /* Clock time of update */ 7 8 2 trp fixed bin (71), /* Time-page-product, in page-seconds */ 7 9 2 pad fixed bin, 7 10 2 terminal_quota_sw bit (1); /* TRUE if terminal quota */ 7 11 7 12 dcl qcp ptr; 7 13 7 14 /* END INCLUDE FILE ... quota_cell */ 255 256 257 /* BEGIN MESSAGE DOCUMENTATION 258* 259* Message: 260* AUDIT (access_class_check): GRANTED modification of security out_of_service ADDED_INFO 261* 262* S: $access_audit 263* 264* T: $run 265* 266* M: The soos switch for the specified path has been turned on or 267*off by the security administrator as indicated. 268* 269* A: $ignore 270* 271* END MESSAGE DOCUMENTATION */ 272 273 end access_class_check; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0800.4 access_class_check.pl1 >spec>install>1110>access_class_check.pl1 249 1 01/30/85 1523.9 access_audit_eventflags.incl.pl1 >ldd>include>access_audit_eventflags.incl.pl1 250 2 05/20/85 0848.1 dc_find_dcls.incl.pl1 >ldd>include>dc_find_dcls.incl.pl1 251 3 05/24/82 1005.0 dir_header.incl.pl1 >ldd>include>dir_header.incl.pl1 252 4 04/29/76 1100.6 dir_entry.incl.pl1 >ldd>include>dir_entry.incl.pl1 253 5 08/04/88 2054.1 fs_obj_access_codes.incl.pl1 >ldd>include>fs_obj_access_codes.incl.pl1 254 6 05/26/77 0922.2 fs_types.incl.pl1 >ldd>include>fs_types.incl.pl1 255 7 05/27/82 1525.9 quota_cell.incl.pl1 >ldd>include>quota_cell.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. CHASE 000015 constant fixed bin(1,0) initial dcl 84 set ref 110* DIR_TYPE constant bit(18) initial packed unaligned dcl 6-6 ref 125 SEG_TYPE constant bit(18) initial packed unaligned dcl 6-9 ref 125 a_code parameter fixed bin(35,0) dcl 35 set ref 31 222* 245 a_dirname parameter char packed unaligned dcl 36 ref 31 87 245 a_ename parameter char packed unaligned dcl 37 ref 31 88 245 access_audit_$log_entry_ptr 000012 constant entry external dcl 60 ref 168 211 236 access_audit_check_ep_$self 000010 constant entry external dcl 59 ref 168 211 236 access_class 33 based bit(72) level 2 in structure "entry" dcl 4-8 in procedure "access_class_check" set ref 127* 129* 156* 156* 156* 156* 186 access_class 000100 automatic bit(72) dcl 39 in procedure "access_class_check" set ref 104* 105* 127* 129* 190* 199* access_operations_$fs_obj_set_soos 000036 external static bit(36) dcl 71 set ref 168* 168* 211* 211* 236* 236* addr builtin function dcl 80 ref 136 136 191 191 aim_check_$equal 000014 constant entry external dcl 61 ref 127 156 199 aim_check_$greater 000016 constant entry external dcl 62 ref 129 156 190 audit_event_flags based structure level 1 dcl 1-5 bad_dir_ 000270 stack reference condition dcl 82 ref 123 125 bs 4 based bit(1) level 2 packed packed unaligned dcl 4-8 ref 124 code 000102 automatic fixed bin(35,0) dcl 40 set ref 93* 104* 105 105 108* 109 110* 113 136* 138 140* 151* 152 158* 168* 177* 178 178 182* 191* 193 195* 200* 211* 222 225* 236* crunch_sw 000103 automatic bit(1) initial packed unaligned dcl 41 set ref 41* 227 247* d_access_class 000104 automatic bit(72) dcl 42 set ref 181* 186* 190* 199* dc_find$dir_read 000056 constant entry external dcl 2-23 ref 108 dc_find$finished 000060 constant entry external dcl 2-33 ref 221 dc_find$obj_status_read 000062 constant entry external dcl 2-75 ref 110 dep 000106 automatic pointer dcl 43 set ref 151* 156 156 168* 168* 171 177 177 191 191 191 204 205 206 211* 211* 215 217 217 218 218 228* 230 231 236* 236* 239 240 240 242 242 dir based structure level 1 dcl 3-11 dir_count 22(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-11 ref 118 dirlocked 000162 automatic bit(1) initial dcl 45 set ref 45* 114* 221* dirname 000110 automatic char(168) packed unaligned dcl 44 set ref 87* 90 96 97 101 110* dirsw 32 based bit(1) level 2 packed packed unaligned dcl 4-8 ref 130 dp 000276 automatic pointer dcl 3-9 set ref 108* 118 118 118 119 121 125 149* 151* 172* 221* 228* efrp based bit(18) level 2 packed packed unaligned dcl 4-8 ref 146 ename 000163 automatic char(32) packed unaligned dcl 46 set ref 88* 91 92 96 97 110* entries_in_dir 000173 automatic fixed bin(17,0) dcl 47 set ref 118* 123 entry based structure level 1 dcl 4-8 entryfrp 16 based bit(18) level 2 packed packed unaligned dcl 3-11 ref 119 ep 000300 automatic pointer dcl 4-6 set ref 110* 121* 124 125 125 125 127 128 129 130 131 136 136 136 145 146 149 156 156 156 162 163 error_table_$ai_son_less 000040 external static fixed bin(35,0) dcl 72 ref 158 error_table_$argerr 000042 external static fixed bin(35,0) dcl 73 ref 93 error_table_$bad_dir 000044 external static fixed bin(35,0) dcl 74 ref 200 225 error_table_$notadir 000046 external static fixed bin(35,0) dcl 75 ref 109 error_table_$root 000050 external static fixed bin(35,0) dcl 76 ref 105 178 error_table_$rqover 000052 external static fixed bin(35,0) dcl 77 ref 140 195 event_flags 000174 automatic structure level 1 dcl 48 set ref 164* 168 168 168 168 207* 211 211 211 211 232* 236 236 236 236 fixed builtin function dcl 80 ref 131 got_branch 000175 automatic bit(1) initial packed unaligned dcl 49 set ref 49* 153* 228 229* 242 grant 0(01) 000174 automatic bit(1) level 2 packed packed unaligned dcl 48 set ref 166* 209* 234* i 000176 automatic fixed bin(17,0) dcl 50 set ref 117* 122* 122 123 lcount 23 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-11 ref 118 len 000177 automatic fixed bin(17,0) dcl 51 set ref 90* 92 96 97 100 length builtin function dcl 80 ref 90 92 92 100 level$get 000022 constant entry external dcl 64 ref 168 168 211 211 236 236 lock$dir_unlock 000020 constant entry external dcl 63 ref 188 218 242 modify based bit(36) level 2 dcl 3-11 set ref 171* 205* 215* 230* 239* multiple_class 32(05) based bit(1) level 2 packed packed unaligned dcl 4-8 ref 128 145 156 null builtin function dcl 80 ref 168 168 211 211 236 236 owner 44 based bit(36) level 2 dcl 4-8 ref 125 pathname 000200 automatic char(168) packed unaligned dcl 52 set ref 92 96* 97* 100 101* 104* 108* pdep 000252 automatic pointer dcl 53 set ref 177* 186 188 188 pds$processid 000054 external static bit(36) dcl 78 ref 205 230 priv_op 0(03) 000174 automatic bit(1) level 2 packed packed unaligned dcl 48 set ref 167* 210* 235* ptr builtin function dcl 80 ref 121 149 171 177 177 188 188 205 215 217 217 218 218 230 239 240 240 242 242 pvid 30 based bit(36) level 2 packed packed unaligned dcl 4-8 ref 136 191 qcell 000254 automatic structure level 1 dcl 54 set ref 136 136 191 191 quota_cell based structure level 1 dcl 7-3 relp 000264 automatic bit(18) packed unaligned dcl 55 set ref 119* 119* 121* ring_brackets 35 based bit(3) array level 2 packed packed unaligned dcl 4-8 ref 131 rtrim builtin function dcl 80 ref 90 92 security_oosw 32(07) based bit(1) level 2 packed packed unaligned dcl 4-8 set ref 162 163* 204 206* 231* seg_count 22 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-11 ref 118 segment 000265 automatic bit(1) dcl 56 set ref 86* 111* 116 149 155 special_op 000174 automatic bit(1) level 2 packed packed unaligned dcl 48 set ref 165* 208* 233* status_$get_access_class 000024 constant entry external dcl 65 ref 104 string builtin function dcl 80 set ref 164* 168 168 168 168 207* 211 211 211 211 232* 236 236 236 236 substr builtin function dcl 80 ref 96 97 sum$dirmod 000026 constant entry external dcl 66 ref 172 217 240 sum$getbranch 000030 constant entry external dcl 67 ref 151 228 sum$getbranch_root_my 000032 constant entry external dcl 68 ref 177 terminal_quota_sw 7 000254 automatic bit(1) level 2 dcl 54 set ref 139 194 type 1 based bit(18) level 2 packed packed unaligned dcl 4-8 ref 125 125 uid 10 based bit(36) level 2 in structure "dir" dcl 3-11 in procedure "access_class_check" ref 125 uid 2 based bit(36) level 2 in structure "entry" dcl 4-8 in procedure "access_class_check" set ref 136* 191* unlock_parent_parent 000266 automatic bit(1) initial packed unaligned dcl 57 set ref 57* 180* 188 vtoc_attributes$get_quota 000034 constant entry external dcl 69 ref 136 191 vtocx 31 based fixed bin(17,0) level 2 packed packed unaligned dcl 4-8 ref 136 191 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ACCESS_NAME_TYPE internal static bit(18) initial packed unaligned dcl 6-3 ACLE_TYPE internal static bit(18) initial packed unaligned dcl 6-4 DC_FIND_CHASE internal static fixed bin(1,0) initial dcl 2-10 DC_FIND_NO_CHASE internal static fixed bin(1,0) initial dcl 2-11 DC_FIND_NO_UNLOCK_DIR internal static bit(1) initial dcl 2-12 DC_FIND_UNLOCK_DIR internal static bit(1) initial dcl 2-13 DIR_HEADER_TYPE internal static bit(18) initial packed unaligned dcl 6-5 FS_OBJ_ACL_MOD internal static fixed bin(18,0) initial unsigned dcl 5-34 FS_OBJ_ACL_RING_MOD internal static fixed bin(18,0) initial unsigned dcl 5-36 FS_OBJ_AUDIT_FLAG_MOD internal static fixed bin(18,0) initial unsigned dcl 5-67 FS_OBJ_AUTHOR_MOD internal static fixed bin(18,0) initial unsigned dcl 5-46 FS_OBJ_BACKUP_TIMES_MOD internal static fixed bin(18,0) initial unsigned dcl 5-48 FS_OBJ_BC_AUTHOR_MOD internal static fixed bin(18,0) initial unsigned dcl 5-47 FS_OBJ_BC_MOD internal static fixed bin(18,0) initial unsigned dcl 5-32 FS_OBJ_CONNECT internal static fixed bin(18,0) initial unsigned dcl 5-31 FS_OBJ_COPY_SW_MOD internal static fixed bin(18,0) initial unsigned dcl 5-38 FS_OBJ_CORRECT_QUSED internal static fixed bin(18,0) initial unsigned dcl 5-55 FS_OBJ_CREATE_BRANCH internal static fixed bin(18,0) initial unsigned dcl 5-66 FS_OBJ_DAMAGED_SW_MOD internal static fixed bin(18,0) initial unsigned dcl 5-39 FS_OBJ_DATES_MOD internal static fixed bin(18,0) initial unsigned dcl 5-49 FS_OBJ_DIR_SALVAGE internal static fixed bin(18,0) initial unsigned dcl 5-56 FS_OBJ_DNZP_MOD internal static fixed bin(18,0) initial unsigned dcl 5-40 FS_OBJ_DT_DUMPED_MOD internal static fixed bin(18,0) initial unsigned dcl 5-50 FS_OBJ_ENTRY_BOUND_MOD internal static fixed bin(18,0) initial unsigned dcl 5-41 FS_OBJ_FOR_RELOADER_MOD internal static fixed bin(18,0) initial unsigned dcl 5-51 FS_OBJ_IACL_MOD internal static fixed bin(18,0) initial unsigned dcl 5-65 FS_OBJ_MAX_LEN_MOD internal static fixed bin(18,0) initial unsigned dcl 5-42 FS_OBJ_MDIR_QUOTA_MOD internal static fixed bin(18,0) initial unsigned dcl 5-57 FS_OBJ_MOVE_QUOTA internal static fixed bin(18,0) initial unsigned dcl 5-54 FS_OBJ_QUOTA_MOD internal static fixed bin(18,0) initial unsigned dcl 5-58 FS_OBJ_QUOTA_RELOAD internal static fixed bin(18,0) initial unsigned dcl 5-59 FS_OBJ_RECLASSIFY internal static fixed bin(18,0) initial unsigned dcl 5-60 FS_OBJ_RECLASSIFY_NODE internal static fixed bin(18,0) initial unsigned dcl 5-61 FS_OBJ_RENAME internal static fixed bin(18,0) initial unsigned dcl 5-37 FS_OBJ_RING_MOD internal static fixed bin(18,0) initial unsigned dcl 5-35 FS_OBJ_SAFETY_SW_MOD internal static fixed bin(18,0) initial unsigned dcl 5-43 FS_OBJ_SEG_MOVE internal static fixed bin(18,0) initial unsigned dcl 5-62 FS_OBJ_SONS_LVID_MOD internal static fixed bin(18,0) initial unsigned dcl 5-52 FS_OBJ_SOOS_MOD internal static fixed bin(18,0) initial unsigned dcl 5-53 FS_OBJ_SYNC_SW_MOD internal static fixed bin(18,0) initial unsigned dcl 5-44 FS_OBJ_TRP_MOD internal static fixed bin(18,0) initial unsigned dcl 5-63 FS_OBJ_TRUNCATE internal static fixed bin(18,0) initial unsigned dcl 5-33 FS_OBJ_VOLUME_RETRIEVE internal static fixed bin(18,0) initial unsigned dcl 5-64 FS_OBJ_VOL_DUMP_SW_MOD internal static fixed bin(18,0) initial unsigned dcl 5-45 HASH_TABLE_TYPE internal static bit(18) initial packed unaligned dcl 6-10 LINK_TYPE internal static bit(18) initial packed unaligned dcl 6-7 NAME_TYPE internal static bit(18) initial packed unaligned dcl 6-8 access_name_type internal static fixed bin(17,0) initial dcl 6-12 access_operations_$fs_obj_access_mod external static bit(36) dcl 5-27 access_operations_$fs_obj_attr_mod external static bit(36) dcl 5-25 access_operations_$fs_obj_contents_mod external static bit(36) dcl 5-23 access_operations_$fs_obj_contents_read external static bit(36) dcl 5-22 access_operations_$fs_obj_create external static bit(36) dcl 5-18 access_operations_$fs_obj_delete external static bit(36) dcl 5-19 access_operations_$fs_obj_initiate external static bit(36) dcl 5-20 access_operations_$fs_obj_prop_read external static bit(36) dcl 5-24 access_operations_$fs_obj_status_mod external static bit(36) dcl 5-26 access_operations_$fs_obj_terminate external static bit(36) dcl 5-21 acle_type internal static fixed bin(17,0) initial dcl 6-13 dc_find$dir_for_append 000000 constant entry external dcl 2-15 dc_find$dir_for_append_raw 000000 constant entry external dcl 2-16 dc_find$dir_for_retrieve_append 000000 constant entry external dcl 2-17 dc_find$dir_initiate 000000 constant entry external dcl 2-19 dc_find$dir_move_quota 000000 constant entry external dcl 2-21 dc_find$dir_read_priv 000000 constant entry external dcl 2-24 dc_find$dir_reclassify 000000 constant entry external dcl 2-26 dc_find$dir_salvage 000000 constant entry external dcl 2-28 dc_find$dir_write 000000 constant entry external dcl 2-30 dc_find$dir_write_priv 000000 constant entry external dcl 2-31 dc_find$link_target 000000 constant entry external dcl 2-35 dc_find$mdir_set_quota_uid 000000 constant entry external dcl 2-37 dc_find$obj_access_write 000000 constant entry external dcl 2-39 dc_find$obj_access_write_priv 000000 constant entry external dcl 2-40 dc_find$obj_attributes_read 000000 constant entry external dcl 2-42 dc_find$obj_attributes_read_ptr 000000 constant entry external dcl 2-43 dc_find$obj_attributes_write 000000 constant entry external dcl 2-45 dc_find$obj_attributes_write_ptr 000000 constant entry external dcl 2-46 dc_find$obj_bc_delta_write 000000 constant entry external dcl 2-48 dc_find$obj_bc_delta_write_ptr 000000 constant entry external dcl 2-49 dc_find$obj_bc_write 000000 constant entry external dcl 2-50 dc_find$obj_bc_write_ptr 000000 constant entry external dcl 2-51 dc_find$obj_delete 000000 constant entry external dcl 2-53 dc_find$obj_delete_priv 000000 constant entry external dcl 2-54 dc_find$obj_delete_priv_uid 000000 constant entry external dcl 2-56 dc_find$obj_delete_ptr 000000 constant entry external dcl 2-57 dc_find$obj_delete_uid 000000 constant entry external dcl 2-55 dc_find$obj_existence_ptr 000000 constant entry external dcl 2-59 dc_find$obj_for_audit 000000 constant entry external dcl 2-61 dc_find$obj_initiate 000000 constant entry external dcl 2-63 dc_find$obj_initiate_for_linker_dp 000000 constant entry external dcl 2-64 dc_find$obj_initiate_raw 000000 constant entry external dcl 2-65 dc_find$obj_linkage_ring_ptr 000000 constant entry external dcl 2-67 dc_find$obj_modes_ptr 000000 constant entry external dcl 2-69 dc_find$obj_reclassify 000000 constant entry external dcl 2-71 dc_find$obj_status_attributes_read 000000 constant entry external dcl 2-73 dc_find$obj_status_read_priv 000000 constant entry external dcl 2-77 dc_find$obj_status_read_priv_ptr 000000 constant entry external dcl 2-78 dc_find$obj_status_read_priv_uid 000000 constant entry external dcl 2-79 dc_find$obj_status_read_ptr 000000 constant entry external dcl 2-81 dc_find$obj_status_read_raw_uid 000000 constant entry external dcl 2-80 dc_find$obj_status_read_uid 000000 constant entry external dcl 2-76 dc_find$obj_status_write 000000 constant entry external dcl 2-83 dc_find$obj_status_write_priv 000000 constant entry external dcl 2-84 dc_find$obj_status_write_priv_ptr 000000 constant entry external dcl 2-85 dc_find$obj_status_write_ptr 000000 constant entry external dcl 2-86 dc_find$obj_terminate 000000 constant entry external dcl 2-88 dc_find$obj_terminate_ptr 000000 constant entry external dcl 2-89 dc_find$obj_truncate 000000 constant entry external dcl 2-91 dc_find$obj_truncate_ptr 000000 constant entry external dcl 2-92 dc_find$obj_truncate_raw_ptr 000000 constant entry external dcl 2-93 dc_find$obj_volume_retrieve 000000 constant entry external dcl 2-95 dc_find$seg_fault 000000 constant entry external dcl 2-97 dir_header_type internal static fixed bin(17,0) initial dcl 6-14 dir_type internal static fixed bin(17,0) initial dcl 6-15 hash_table_type internal static fixed bin(17,0) initial dcl 6-19 link_type internal static fixed bin(17,0) initial dcl 6-16 name_type internal static fixed bin(17,0) initial dcl 6-17 qcp automatic pointer dcl 7-12 seg_type internal static fixed bin(17,0) initial dcl 6-18 version_number_2 internal static fixed bin(17,0) initial dcl 3-84 NAMES DECLARED BY EXPLICIT CONTEXT. START 000101 constant label dcl 86 ref 248 access_class_check 000060 constant entry external dcl 31 aim_check_soos 001575 constant entry external dcl 245 bad_path 000150 constant label dcl 93 ref 100 early_fail 001356 constant label dcl 222 ref 94 105 113 err 001362 constant label dcl 225 ref 128 129 131 145 fail 001365 constant label dcl 227 ref 138 141 193 196 201 fail1 001345 constant label dcl 221 ref 152 159 243 loop_cont 000535 constant label dcl 146 ref 124 132 unlock3 001334 constant label dcl 218 ref 174 178 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2124 2210 1623 2134 Length 2572 1623 64 345 301 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME access_class_check 268 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME access_class_check 000100 access_class access_class_check 000102 code access_class_check 000103 crunch_sw access_class_check 000104 d_access_class access_class_check 000106 dep access_class_check 000110 dirname access_class_check 000162 dirlocked access_class_check 000163 ename access_class_check 000173 entries_in_dir access_class_check 000174 event_flags access_class_check 000175 got_branch access_class_check 000176 i access_class_check 000177 len access_class_check 000200 pathname access_class_check 000252 pdep access_class_check 000254 qcell access_class_check 000264 relp access_class_check 000265 segment access_class_check 000266 unlock_parent_parent access_class_check 000276 dp access_class_check 000300 ep access_class_check THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out return_mac signal_op shorten_stack ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. access_audit_$log_entry_ptr access_audit_check_ep_$self aim_check_$equal aim_check_$greater dc_find$dir_read dc_find$finished dc_find$obj_status_read level$get lock$dir_unlock status_$get_access_class sum$dirmod sum$getbranch sum$getbranch_root_my vtoc_attributes$get_quota THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. access_operations_$fs_obj_set_soos error_table_$ai_son_less error_table_$argerr error_table_$bad_dir error_table_$notadir error_table_$root error_table_$rqover pds$processid LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 41 000045 45 000046 49 000047 57 000050 31 000054 86 000101 87 000102 88 000110 90 000115 91 000127 92 000133 93 000150 94 000153 96 000154 97 000173 98 000221 100 000223 101 000225 104 000230 105 000255 108 000264 109 000277 110 000303 111 000321 113 000323 114 000325 116 000327 117 000331 118 000332 119 000347 121 000354 122 000357 123 000360 124 000366 125 000372 127 000411 128 000430 129 000434 130 000452 131 000456 132 000466 136 000467 138 000520 139 000522 140 000524 141 000527 144 000530 145 000531 146 000535 149 000541 151 000545 152 000564 153 000566 155 000570 156 000572 158 000635 159 000640 162 000641 163 000645 164 000647 165 000650 166 000652 167 000654 168 000656 171 000774 172 000776 174 001005 177 001006 178 001027 180 001034 181 001035 182 001037 183 001040 186 001041 188 001045 190 001060 191 001076 193 001130 194 001132 195 001134 196 001137 198 001140 199 001141 200 001157 201 001162 204 001163 205 001167 206 001173 207 001175 208 001176 209 001200 210 001202 211 001204 215 001321 217 001323 218 001334 221 001345 222 001356 223 001361 225 001362 227 001365 228 001367 229 001411 230 001413 231 001417 232 001422 233 001423 234 001425 235 001427 236 001431 239 001544 240 001546 242 001557 243 001572 245 001573 247 001616 248 001620 ----------------------------------------------------------- Historical Background This edition of the Multics software materials and documentation is provided and donated to Massachusetts Institute of Technology by Group BULL including BULL HN Information Systems Inc. as a contribution to computer science knowledge. This donation is made also to give evidence of the common contributions of Massachusetts Institute of Technology, Bell Laboratories, General Electric, Honeywell Information Systems Inc., Honeywell BULL Inc., Groupe BULL and BULL HN Information Systems Inc. to the development of this operating system. Multics development was initiated by Massachusetts Institute of Technology Project MAC (1963-1970), renamed the MIT Laboratory for Computer Science and Artificial Intelligence in the mid 1970s, under the leadership of Professor Fernando Jose Corbato. Users consider that Multics provided the best software architecture for managing computer hardware properly and for executing programs. Many subsequent operating systems incorporated Multics principles. Multics was distributed in 1975 to 2000 by Group Bull in Europe , and in the U.S. by Bull HN Information Systems Inc., as successor in interest by change in name only to Honeywell Bull Inc. and Honeywell Information Systems Inc. . ----------------------------------------------------------- Permission to use, copy, modify, and distribute these programs and their documentation for any purpose and without fee is hereby granted,provided that the below copyright notice and historical background appear in all copies and that both the copyright notice and historical background and this permission notice appear in supporting documentation, and that the names of MIT, HIS, BULL or BULL HN not be used in advertising or publicity pertaining to distribution of the programs without specific prior written permission. Copyright 1972 by Massachusetts Institute of Technology and Honeywell Information Systems Inc. Copyright 2006 by BULL HN Information Systems Inc. Copyright 2006 by Bull SAS All Rights Reserved