COMPILATION LISTING OF SEGMENT salv_check_vtoce_ 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 1029.7 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 /* * The entry chain is searched and the VTOC entries for segments and directories are verified or updated. 14* * 15* * 1. Update VTOC entry using branch information. 16* * - UID path Message. 17* * - primary name No message. 18* * - branch_rp No message. 19* * - access class Message and the branch is set security out-of-service. 20* * 21* * 2. Master directory If the master directory switch in the VTOC doesn't match the one in the branch, 22* * both switches are corrected using the quota field. 23**/ 24 25 /****^ HISTORY COMMENTS: 26* 1) change(77-07-01,Barr), approve(), audit(), install(): 27* Pre-hcom comments. 28* Written by S.E. Barr 7/77 29* Fixed by BSG 7/11/78 to loop properly if connection failures hit. 30* Modified June 1981 by J. Bongiovanni to treat invalid VTOCE index as 31* as connection failure 32* Modified March 1982 by J. Bongiovanni to fix empty directory bug 33* Modified 831111 BIM to protection_audit_ SOOS settings. 34* Modified 84-12-05 by EJ Sharpe to use access_audit_ instead of protection_audit_ 35* 2) change(86-06-26,Lippard), approve(86-06-17,MCR7433), 36* audit(86-06-26,Hartogs), install(86-07-11,MR12.0-1091): 37* Change calling sequence of error message routine. 38* END HISTORY COMMENTS */ 39 40 41 salv_check_vtoce_: proc (arg_dp, path, delete_connection_failures, print); 42 43 /* PARAMETERS */ 44 45 dcl arg_dp ptr; /* ptr to base of directory being checked. */ 46 dcl path char (*); 47 dcl delete_connection_failures bit (1) aligned; 48 dcl print entry options (variable); 49 50 /* AUTOMATIC */ 51 52 dcl acc_class_str char (32) aligned; 53 dcl code fixed bin (35); 54 dcl connection_failures_occured bit (1) init ("0"b); 55 dcl 1 event_flags aligned like audit_event_flags; 56 dcl next_ptr ptr; /* for threading */ 57 dcl i fixed bin; 58 dcl level fixed bin; 59 dcl lv_p ptr; /* ptr to logical volume table entry. */ 60 dcl uid (0:15) bit (36) aligned; 61 dcl pvtx fixed bin; 62 dcl 1 update aligned like salv_update_info; 63 dcl name char (32); /* primary name of entry. */ 64 dcl 1 vtoce_copy aligned like vtoce; 65 dcl (null, addr, ptr, rel, string) builtin; 66 67 /* EXTERNAL */ 68 69 dcl get_pvtx entry (bit (36) aligned, fixed bin (35)) returns (fixed bin); 70 dcl vtoc_attributes$salv_update entry (bit (36) aligned, bit (36) aligned, fixed bin, ptr, fixed bin (35)); 71 dcl vtoc_man$get_vtoce entry (bit (36) aligned, fixed bin, fixed bin, bit (3), ptr, fixed bin (35)); 72 dcl logical_volume_manager$lvtep entry (bit (36) aligned, ptr, fixed bin (35)); 73 dcl uid_path_util$get entry (ptr, (0:15) bit (36) aligned, fixed bin (35)); 74 dcl delentry$salv_delete_branch entry (ptr, fixed bin (35)); 75 dcl access_audit_$log_obj_class entry options (variable); /* cannot use log_entry_ptr because we don't 76* want access_audit_ poking around in the directories */ 77 dcl display_access_class_ entry (bit(72) aligned) returns(char(32) aligned); 78 dcl level$get entry () returns (fixed bin); 79 80 dcl access_operations_$fs_obj_set_soos bit (36) aligned ext; 81 dcl error_table_$invalid_vtocx fixed bin (35) external; 82 dcl error_table_$ai_entry_vtoce_mismatch fixed bin (35) external; 83 84 /* CONSTANTS */ 85 86 dcl ME char (17) int static options (constant) init ("salv_check_vtoce_"); 87 88 89 dp = arg_dp; 90 91 /* Get the UID path for this directory and add its UID to get the UID path for the branches. */ 92 93 level = dir.tree_depth; 94 call uid_path_util$get (dp, uid, code); 95 if code ^= 0 then do; 96 call print (0, ME, code, "salv_check_vtoce_: getting UID path for ^a", path); 97 return; 98 end; 99 uid (level) = dir.uid; 100 101 /* If the physical volume that holds the segments for this directory is not mounted, then print an error message 102* and do not check any segments. */ 103 call logical_volume_manager$lvtep (dir.sons_lvid, lv_p, code); 104 if lv_p = null & (dir.seg_count > 0) 105 then call print (4, ME, 0, 106 "Unable to check VTOC entries for segments because the volume is not mounted. LVID = ^w", dir.sons_lvid); 107 vtocep = addr (vtoce_copy); 108 109 next_ptr = null; 110 do ep = ptr (dp, dir.entryfrp) repeat next_ptr while (rel (ep)); 111 next_ptr = ptr (dp, entry.efrp); 112 113 if entry.bs & (entry.dirsw | lv_p ^= null) then do; 114 name = addr (entry.primary_name) -> names.name; 115 string (update.flags) = "0"b; 116 117 pvtx = get_pvtx ((entry.pvid), code); 118 if code ^= 0 then call print (4, ME, code, name); 119 else do; 120 call vtoc_man$get_vtoce ((entry.pvid), pvtx, (entry.vtocx), "101"b, vtocep, code); 121 122 if code ^= 0 & code ^= error_table_$invalid_vtocx 123 then call print (4, ME, code, name); 124 else do; 125 if vtoce.uid ^= entry.uid | code = error_table_$invalid_vtocx 126 then do; /* Connection failure */ 127 connection_failures_occured = "1"b; /* for later message */ 128 if delete_connection_failures then do; 129 call print (4, ME, 0, "Deleting ^a due to connection failure.", name); 130 call delentry$salv_delete_branch (ep, code); 131 if code ^= 0 then call print (4, ME, code, "Error deleting branch for ^a.", name); 132 end; 133 else call print (4, ME, 0, "Connection failure for ^a.", name); 134 end; 135 else do; 136 137 /* UID path */ 138 do i = 0 to 15; 139 if vtoce.uid_path (i) ^= uid (i) then do; 140 call print (4, ME, 0, "UID path at level ^d changed from ^w to ^w for ^a", 141 i, vtoce.uid_path (i), uid (i), name); 142 update.set_uid_path = "1"b; 143 end; 144 end; 145 if update.set_uid_path then update.uid_path (*) = uid (*); 146 147 /* primary name */ 148 if vtoce.primary_name ^= name then do; 149 update.primary_name = name; 150 update.set_primary_name = "1"b; 151 end; 152 153 /* Master directory has non-zero quota. */ 154 if vtoce.master_dir ^= entry.master_dir then do; 155 entry.master_dir = (vtoce.quota (0) > 0); 156 if vtoce.master_dir ^= entry.master_dir then do; 157 update.set_master_dir = "1"b; 158 update.master_dir = entry.master_dir; 159 end; 160 call print (4, ME, 0, "Set master directory switch ^[on^;off^] for ^a", 161 entry.master_dir, name); 162 end; 163 164 /* If the access class fields do not match, the branch is set security out-of-service. */ 165 if vtoce.access_class ^= entry.access_class then do; 166 string(event_flags) = ""b; 167 event_flags.special_op = "1"b; 168 event_flags.grant = "1"b; 169 /* can't tell if this is a normal user who encountered a 170* bad directory or a system salvager, we'll leave the priv_op 171* flag off */ 172 acc_class_str = display_access_class_ (vtoce.access_class); 173 call access_audit_$log_obj_class ("salv_check_vtoce_", level$get(), 174 string(event_flags), access_operations_$fs_obj_set_soos, 175 ep->entry.access_class, path, error_table_$ai_entry_vtoce_mismatch, 176 null(), 0, "vtoce class is ^a", acc_class_str); 177 call print (4, ME, 0, 178 "^a set security out-of-service: vtoce access = ^w and entry access class = ^w", 179 name, vtoce.access_class, entry.access_class); 180 entry.security_oosw = "1"b; 181 end; 182 183 /* Update VTOC entry, if necessary. */ 184 if string (update.flags) then do; 185 call vtoc_attributes$salv_update ((entry.uid), (entry.pvid), (entry.vtocx), 186 addr (update), code); 187 if code ^= 0 then call print (4, ME, code, name); 188 end; 189 end; 190 end; 191 end; 192 end; 193 end; 194 195 196 if connection_failures_occured & ^delete_connection_failures 197 then call print (0, ME, 0, "Connection failures detected in ^a.", path); 198 199 return; 200 201 /* */ 1 1 /* 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 */ 202 2 1 /* BEGIN INCLUDE FILE ... dir_header.incl.pl1 */ 2 2 /* Modified 8/74 for NSS */ 2 3 /* Modified 8/76 to add version number and hash table rel pointer for variable hash table sizes */ 2 4 /* Modified 3/82 BIM for change pclock */ 2 5 /* format: style3 */ 2 6 2 7 /* Template for the directory header. Length = 64 words. */ 2 8 2 9 dcl dp ptr; 2 10 2 11 dcl 1 dir based (dp) aligned, 2 12 2 13 2 modify bit (36), /* Process ID of last modifier */ 2 14 2 type bit (18) unaligned, /* type of object = dir header */ 2 15 2 size fixed bin (17) unaligned, /* size of header in words */ 2 16 2 dtc (3), /* date-time checked by salvager array */ 2 17 3 date bit (36), /* the date */ 2 18 3 error bit (36), /* what errors were discovered */ 2 19 2 20 2 uid bit (36), /* uid of the directory - copied from branch */ 2 21 2 22 2 pvid bit (36), /* phys vol id of the dir - copied from branch */ 2 23 2 24 2 sons_lvid bit (36), /* log vol id for inf non dir seg - copied from branch */ 2 25 2 26 2 access_class bit (72), /* security attributes of dir - copied from branch */ 2 27 2 28 (2 vtocx fixed bin (17), /* vtoc entry index of the dir - copied from branch */ 2 29 2 version_number fixed bin (17), /* version number of header */ 2 30 2 31 2 entryfrp bit (18), /* rel ptr to beginning of entry list */ 2 32 2 pad2 bit (18), 2 33 2 34 2 entrybrp bit (18), /* rel ptr to end of entry list */ 2 35 2 pad3 bit (18), 2 36 2 37 2 pers_frp bit (18), /* rel ptr to start of person name list */ 2 38 2 proj_frp bit (18), /* rel ptr to start of project name list */ 2 39 2 40 2 pers_brp bit (18), /* rel ptr to end of person name list */ 2 41 2 proj_brp bit (18), /* rel ptr to end of project name list */ 2 42 2 43 2 seg_count fixed bin (17), /* number of non-directory branches */ 2 44 2 dir_count fixed bin (17), /* number of directory branches */ 2 45 2 46 2 lcount fixed bin (17), /* number of links */ 2 47 2 acle_total fixed bin (17), /* total number of ACL entries in directory */ 2 48 2 49 2 arearp bit (18), /* relative pointer to beginning of allocation area */ 2 50 2 per_process_sw bit (1), /* indicates dir contains per process segments */ 2 51 2 master_dir bit (1), /* TRUE if this is a master dir */ 2 52 2 force_rpv bit (1), /* TRUE if segs must be on RPV */ 2 53 2 rehashing bit (1), /* TRUE if hash table is being constructed */ 2 54 2 pad4 bit (14), 2 55 2 56 2 iacl_count (0:7), 2 57 3 seg fixed bin (17), /* number of initial acl entries for segs */ 2 58 3 dir fixed bin (17), /* number of initial acl entries for dir */ 2 59 2 60 2 iacl (0:7), /* pointer to initial ACLs for each ring */ 2 61 3 seg_frp bit (18), /* rel ptr to start of initial ACL for segs */ 2 62 3 seg_brp bit (18), /* rel ptr to end of initial ACL for segs */ 2 63 2 64 3 dir_frp bit (18), /* rel ptr to start of initial for dirs */ 2 65 3 dir_brp bit (18), /* rel ptr to end of initial ACL for dirs */ 2 66 2 67 2 htsize fixed bin (17), /* size of hash table */ 2 68 2 hash_table_rp bit (18), /* rel ptr to start of hash table */ 2 69 2 70 2 htused fixed bin (17), /* no. of used places in hash table */ 2 71 2 pad6 fixed bin (17), 2 72 2 73 2 tree_depth fixed bin (17), /* number of levels from root of this dir */ 2 74 2 pad7 bit (18)) unaligned, 2 75 2 76 2 dts bit (36), /* date-time directory last salvaged */ 2 77 2 78 2 master_dir_uid bit (36), /* uid of superior master dir */ 2 79 2 change_pclock fixed bin (35), /* up one each call to sum$dirmod */ 2 80 2 pad8 (11) bit (36), /* pad to make it a 64 word header */ 2 81 2 checksum bit (36), /* checksummed from uid on */ 2 82 2 owner bit (36); /* uid of parent dir */ 2 83 2 84 dcl version_number_2 fixed bin int static options (constant) init (2); 2 85 2 86 /* END INCLUDE FILE ... dir_header.incl.pl1 */ 203 3 1 /* BEGIN INCLUDE FILE ... dir_entry.incl.pl1 ...last modified August 1974 for nss */ 3 2 3 3 3 4 /* Template for an entry. Length = 38 words */ 3 5 3 6 dcl ep ptr; 3 7 3 8 dcl 1 entry based (ep) aligned, 3 9 3 10 (2 efrp bit (18), /* forward rel ptr to next entry */ 3 11 2 ebrp bit (18)) unaligned, /* backward rel ptr to previous entry */ 3 12 3 13 2 type bit (18) unaligned, /* type of object = dir entry */ 3 14 2 size fixed bin (17) unaligned, /* size of dir entry */ 3 15 3 16 2 uid bit (36), /* unique id of entry */ 3 17 3 18 2 dtem bit (36), /* date-time entry modified */ 3 19 3 20 (2 bs bit (1), /* branch switch = 1 if branch */ 3 21 2 pad0 bit (17), 3 22 2 nnames fixed bin (17), /* number of names for this entry */ 3 23 3 24 2 name_frp bit (18), /* rel pointer to start of name list */ 3 25 2 name_brp bit (18), /* rel pointer to end of name list */ 3 26 3 27 2 author, /* user who created branch */ 3 28 3 pers_rp bit (18), /* name of user who created branch */ 3 29 3 proj_rp bit (18), /* project of user who created branch */ 3 30 3 31 3 tag char (1), /* tag of user who created branch */ 3 32 3 pad1 char (3), 3 33 3 34 2 primary_name bit (504), /* first name on name list */ 3 35 3 36 2 dtd bit (36), /* date time dumped */ 3 37 3 38 2 pad2 bit (36), 3 39 3 40 3 41 /* the declarations below are for branch only */ 3 42 3 43 3 44 2 pvid bit (36), /* physical volume id */ 3 45 3 46 2 vtocx fixed bin (17), /* vtoc entry index */ 3 47 2 pad3 bit (18), 3 48 3 49 2 dirsw bit (1), /* = 1 if this is a directory branch */ 3 50 2 oosw bit (1), /* out of service switch on = 1 */ 3 51 2 per_process_sw bit (1), /* indicates segment is per process */ 3 52 2 copysw bit (1), /* = 1 make copy of segment whenever initiated */ 3 53 2 safety_sw bit (1), /* if 1 then entry cannot be deleted */ 3 54 2 multiple_class bit (1), /* segment has multiple security classes */ 3 55 2 audit_flag bit (1), /* segment must be audited for security */ 3 56 2 security_oosw bit (1), /* security out of service switch */ 3 57 2 entrypt_sw bit (1), /* 1 if call limiter is to be enabled */ 3 58 2 master_dir bit (1), /* TRUE for master directory */ 3 59 2 tpd bit (1), /* TRUE if this segment is never to go on the PD */ 3 60 2 pad4 bit (11), 3 61 2 entrypt_bound bit (14)) unaligned, /* call limiter */ 3 62 3 63 2 access_class bit (72) aligned, /* security attributes : level and category */ 3 64 3 65 (2 ring_brackets (3) bit (3), /* ring brackets on segment */ 3 66 2 ex_ring_brackets (3) bit (3), /* extended ring brackets */ 3 67 2 acle_count fixed bin (17), /* number of entries on ACL */ 3 68 3 69 2 acl_frp bit (18), /* rel ptr to start of ACL */ 3 70 2 acl_brp bit (18), /* rel ptr to end of ACL */ 3 71 3 72 2 bc_author, /* user who last set the bit count */ 3 73 3 pers_rp bit (18), /* name of user who set the bit count */ 3 74 3 proj_rp bit (18), /* project of user who set the bit count */ 3 75 3 76 3 tag char (1), /* tag of user who set the bit count */ 3 77 3 pad5 bit (2), 3 78 2 bc fixed bin (24)) unaligned, /* bit count for segs, msf indicator for dirs */ 3 79 3 80 2 sons_lvid bit (36), /* logical volume id for immediat inf non dir seg */ 3 81 3 82 2 pad6 bit (36), 3 83 3 84 2 checksum bit (36), /* checksum from dtd */ 3 85 3 86 2 owner bit (36); /* uid of containing directory */ 3 87 3 88 /* END INCLUDE FILE ... dir_entry.incl.pl1 ... */ 204 4 1 /* BEGIN INCLUDE FILE ... dir_name.incl.pl1 ... last modified Nov 1975 for nss */ 4 2 4 3 /* Template for names of branches or links. Length = 14 words. */ 4 4 4 5 dcl np ptr; 4 6 4 7 dcl 1 names based aligned, /* based on ptr(dp,ep->entry.name_frp) */ 4 8 2 fp bit(18) unaligned, /* rel ptr to next name */ 4 9 2 bp bit(18) unaligned, /* rel ptr to prev name */ 4 10 4 11 2 type bit (18) unaligned, /* type = dir name */ 4 12 2 size fixed bin (17) unaligned, /* size of dir name */ 4 13 4 14 2 entry_rp bit(18) unaligned, /* rel ptr to entry */ 4 15 2 ht_index fixed bin(17) unaligned, /* index of hash table entry */ 4 16 4 17 2 hash_thread bit (18) unal, /* relative ptr to next hash entry */ 4 18 2 pad3 bit (18) unal, 4 19 4 20 2 name char(32) aligned, 4 21 4 22 2 checksum bit (36), /* checksum from entry_rp */ 4 23 4 24 2 owner bit (36); /* uid of entry */ 4 25 4 26 4 27 /* END INCLUDE FILE ... dir_name.incl.pl1 */ 205 5 1 /* BEGIN INCLUDE vtoce_salv_update */ 5 2 5 3 dcl 1 salv_update_info aligned based, 5 4 2 flags, 5 5 3 set_uid_path bit (1) unal, 5 6 3 set_primary_name bit (1) unal, 5 7 3 set_master_dir bit (1) unal, 5 8 3 pad1 bit (33) unal, 5 9 2 uid_path (0:15) bit (36) aligned, 5 10 2 primary_name char (32), 5 11 2 master_dir bit (1) unal, 5 12 2 pad2 bit (17) unal; 5 13 5 14 /* END INCLUDE vtoce_salv_update */ 206 6 1 /* BEGIN INCLUDE FILE ...vtoce.incl.pl1 ... last modified September 1982 */ 6 2 /* Template for a VTOC entry. Length = 192 words. (3 * 64). */ 6 3 /* NOTE: vtoc_man clears pad fields before writing a vtoce. */ 6 4 6 5 dcl vtocep ptr; 6 6 6 7 dcl 1 vtoce based (vtocep) aligned, 6 8 6 9 6 10 (2 pad_free_vtoce_chain bit (36), /* Used to be pointer to next free VTOCE */ 6 11 6 12 2 uid bit (36), /* segment's uid - zero if vtoce is free */ 6 13 6 14 2 msl bit (9), /* maximum segment length in 1024 word units */ 6 15 2 csl bit (9), /* current segment length - in 1024 word units */ 6 16 2 records bit (9), /* number of records used by the seg in second storage */ 6 17 2 pad2 bit (9), 6 18 6 19 2 dtu bit (36), /* date and time segment was last used */ 6 20 6 21 2 dtm bit (36), /* date and time segment was last modified */ 6 22 6 23 2 nqsw bit (1), /* no quota switch - no checking for pages of this seg */ 6 24 2 deciduous bit (1), /* true if hc_sdw */ 6 25 2 nid bit (1), /* no incremental dump switch */ 6 26 2 dnzp bit (1), /* Dont null zero pages */ 6 27 2 gtpd bit (1), /* Global transparent paging device */ 6 28 2 per_process bit (1), /* Per process segment (deleted every bootload) */ 6 29 2 damaged bit (1), /* TRUE if contents damaged */ 6 30 2 fm_damaged bit (1), /* TRUE if filemap checksum bad */ 6 31 2 fm_checksum_valid bit (1), /* TRUE if the checksum has been computed */ 6 32 2 synchronized bit (1), /* TRUE if this is a data management synchronized segment */ 6 33 2 pad3 bit (8), 6 34 2 dirsw bit (1), /* directory switch */ 6 35 2 master_dir bit (1), /* master directory - a root for the logical volume */ 6 36 2 pad4 bit (16)) unaligned, /* not used */ 6 37 6 38 2 fm_checksum bit (36) aligned, /* Checksum of used portion of file map */ 6 39 6 40 (2 quota (0:1) fixed bin (18) unsigned, /* sec storage quota - (0) for non dir pages */ 6 41 6 42 2 used (0:1) fixed bin (18) unsigned, /* sec storage used - (0) for non dir pages */ 6 43 6 44 2 received (0:1) fixed bin (18) unsigned, /* total amount of storage this dir has received */ 6 45 6 46 2 trp (0:1) fixed bin (71), /* time record product - (0) for non dir pages */ 6 47 6 48 2 trp_time (0:1) bit (36), /* time time_record_product was last calculated */ 6 49 6 50 6 51 6 52 6 53 6 54 2 fm (0:255) bit (18), /* file map - 256 entries - 18 bits per entry */ 6 55 6 56 2 pad6 (10) bit (36), /* not used */ 6 57 6 58 2 ncd bit (1), /* no complete dump switch */ 6 59 2 pad7 bit (17), 6 60 2 pad8 bit (18), 6 61 6 62 2 dtd bit (36), /* date-time-dumped */ 6 63 6 64 2 volid (3) bit (36), /* volume ids of last incremental, consolidated, and complete dumps */ 6 65 6 66 2 master_dir_uid bit (36), /* superior master directory uid */ 6 67 6 68 6 69 6 70 6 71 2 uid_path (0:15) bit (36), /* uid pathname of all parents starting after the root */ 6 72 6 73 2 primary_name char (32), /* primary name of the segment */ 6 74 6 75 2 time_created bit (36), /* time the segment was created */ 6 76 6 77 2 par_pvid bit (36), /* physical volume id of the parent */ 6 78 6 79 2 par_vtocx fixed bin (17), /* vtoc entry index of the parent */ 6 80 2 branch_rp bit (18)) unaligned, /* rel pointer of the branch of this segment */ 6 81 6 82 2 cn_salv_time bit (36), /* time branch - vtoce connection checked */ 6 83 6 84 2 access_class bit (72), /* access class in branch */ 6 85 2 perm_flags aligned, 6 86 3 per_bootload bit (1) unal, /* ON => deleted each bootload */ 6 87 3 pad9 bit (35) unal, 6 88 2 owner bit (36); /* pvid of this volume */ 6 89 6 90 dcl vtoce_parts (3) bit (36 * 64) aligned based (vtocep); 6 91 6 92 dcl 1 seg_vtoce based (vtocep) aligned, /* Overlay for vtoce of segments, which don't have quota */ 6 93 2 pad1 bit (7*36), 6 94 2 usage fixed bin (35), /* page fault count: overlays quota */ 6 95 2 pad2 bit (184*36); 6 96 6 97 /* END INCLUDE FILE vtoce.incl.pl1 */ 207 208 209 /* BEGIN MESSAGE DOCUMENTATION 210* 211* Message: 212* AUDIT (salv_check_vtoce_): GRANTED modification of security out-of-service ADDED_INFO 213* 214* S: $access_audit 215* 216* T: $run 217* 218* M: Security out-of-service switch was set because vtoce access class did 219*not match the entry access class for the specified 220*file system entry. 221* 222* A: $inform_ssa 223* 224* 225* Message: 226* salv_check_vtoce_: ERROR_MESSAGE. 227* 228* S: $log 229* 230* T: Salvaging 231* 232* M: An error occurred while checking VTOCEs. 233* 234* A: $inform 235* 236* END MESSAGE DOCUMENTATION */ 237 238 239 end salv_check_vtoce_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0805.2 salv_check_vtoce_.pl1 >spec>install>1112>salv_check_vtoce_.pl1 202 1 01/30/85 1523.9 access_audit_eventflags.incl.pl1 >ldd>include>access_audit_eventflags.incl.pl1 203 2 05/24/82 1005.0 dir_header.incl.pl1 >ldd>include>dir_header.incl.pl1 204 3 04/29/76 1100.6 dir_entry.incl.pl1 >ldd>include>dir_entry.incl.pl1 205 4 11/02/76 1414.7 dir_name.incl.pl1 >ldd>include>dir_name.incl.pl1 206 5 09/29/77 1502.7 vtoce_salv_update.incl.pl1 >ldd>include>vtoce_salv_update.incl.pl1 207 6 10/04/83 1105.1 vtoce.incl.pl1 >ldd>include>vtoce.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. ME 000000 constant char(17) initial packed unaligned dcl 86 set ref 96* 104* 118* 122* 129* 131* 133* 140* 160* 177* 187* 196* acc_class_str 000100 automatic char(32) dcl 52 set ref 172* 173* access_audit_$log_obj_class 000024 constant entry external dcl 75 ref 173 access_class 33 based bit(72) level 2 in structure "entry" dcl 3-8 in procedure "salv_check_vtoce_" set ref 165 173* 177* access_class 274 based bit(72) level 2 in structure "vtoce" dcl 6-7 in procedure "salv_check_vtoce_" set ref 165 172* 177* access_operations_$fs_obj_set_soos 000032 external static bit(36) dcl 80 set ref 173* addr builtin function dcl 65 ref 107 114 185 185 arg_dp parameter pointer dcl 45 ref 41 89 audit_event_flags based structure level 1 dcl 1-5 bs 4 based bit(1) level 2 packed packed unaligned dcl 3-8 ref 113 code 000110 automatic fixed bin(35,0) dcl 53 set ref 94* 95 96* 103* 117* 118 118* 120* 122 122 122* 125 130* 131 131* 185* 187 187* connection_failures_occured 000111 automatic bit(1) initial packed unaligned dcl 54 set ref 54* 127* 196 delentry$salv_delete_branch 000022 constant entry external dcl 74 ref 130 delete_connection_failures parameter bit(1) dcl 47 ref 41 128 196 dir based structure level 1 dcl 2-11 dirsw 32 based bit(1) level 2 packed packed unaligned dcl 3-8 ref 113 display_access_class_ 000026 constant entry external dcl 77 ref 172 dp 000506 automatic pointer dcl 2-9 set ref 89* 93 94* 99 103 104 104 110 110 111 efrp based bit(18) level 2 packed packed unaligned dcl 3-8 ref 111 entry based structure level 1 dcl 3-8 entryfrp 16 based bit(18) level 2 packed packed unaligned dcl 2-11 ref 110 ep 000510 automatic pointer dcl 3-6 set ref 110* 110* 111 113 113 114 117 120 120 125 130* 154 155 156 158 160 165 173 177 180 185 185 185* error_table_$ai_entry_vtoce_mismatch 000036 external static fixed bin(35,0) dcl 82 set ref 173* error_table_$invalid_vtocx 000034 external static fixed bin(35,0) dcl 81 ref 122 125 event_flags 000112 automatic structure level 1 dcl 55 set ref 166* 173 173 flags 000143 automatic structure level 2 dcl 62 set ref 115* 184 get_pvtx 000010 constant entry external dcl 69 ref 117 grant 0(01) 000112 automatic bit(1) level 2 packed packed unaligned dcl 55 set ref 168* i 000116 automatic fixed bin(17,0) dcl 57 set ref 138* 139 139 140* 140 140* level 000117 automatic fixed bin(17,0) dcl 58 set ref 93* 99 level$get 000030 constant entry external dcl 78 ref 173 173 logical_volume_manager$lvtep 000016 constant entry external dcl 72 ref 103 lv_p 000120 automatic pointer dcl 59 set ref 103* 104 113 master_dir 5(19) based bit(1) level 2 in structure "vtoce" packed packed unaligned dcl 6-7 in procedure "salv_check_vtoce_" ref 154 156 master_dir 31 000143 automatic bit(1) level 2 in structure "update" packed packed unaligned dcl 62 in procedure "salv_check_vtoce_" set ref 158* master_dir 32(09) based bit(1) level 2 in structure "entry" packed packed unaligned dcl 3-8 in procedure "salv_check_vtoce_" set ref 154 155* 156 158 160* name 000175 automatic char(32) packed unaligned dcl 63 in procedure "salv_check_vtoce_" set ref 114* 118* 122* 129* 131* 133* 140* 148 149 160* 177* 187* name 4 based char(32) level 2 in structure "names" dcl 4-7 in procedure "salv_check_vtoce_" ref 114 names based structure level 1 dcl 4-7 next_ptr 000114 automatic pointer dcl 56 set ref 109* 111* 193 null builtin function dcl 65 ref 104 109 113 173 173 path parameter char packed unaligned dcl 46 set ref 41 96* 173* 196* primary_name 21 000143 automatic char(32) level 2 in structure "update" dcl 62 in procedure "salv_check_vtoce_" set ref 149* primary_name 10 based bit(504) level 2 in structure "entry" packed packed unaligned dcl 3-8 in procedure "salv_check_vtoce_" set ref 114 primary_name 260 based char(32) level 2 in structure "vtoce" packed packed unaligned dcl 6-7 in procedure "salv_check_vtoce_" ref 148 print parameter entry variable dcl 48 ref 41 96 104 118 122 129 131 133 140 160 177 187 196 ptr builtin function dcl 65 ref 110 111 pvid 30 based bit(36) level 2 packed packed unaligned dcl 3-8 ref 117 120 185 pvtx 000142 automatic fixed bin(17,0) dcl 61 set ref 117* 120* quota 7 based fixed bin(18,0) array level 2 packed packed unsigned unaligned dcl 6-7 ref 155 rel builtin function dcl 65 ref 110 salv_update_info based structure level 1 dcl 5-3 security_oosw 32(07) based bit(1) level 2 packed packed unaligned dcl 3-8 set ref 180* seg_count 22 based fixed bin(17,0) level 2 packed packed unaligned dcl 2-11 ref 104 set_master_dir 0(02) 000143 automatic bit(1) level 3 packed packed unaligned dcl 62 set ref 157* set_primary_name 0(01) 000143 automatic bit(1) level 3 packed packed unaligned dcl 62 set ref 150* set_uid_path 000143 automatic bit(1) level 3 packed packed unaligned dcl 62 set ref 142* 145 sons_lvid 12 based bit(36) level 2 dcl 2-11 set ref 103* 104* special_op 000112 automatic bit(1) level 2 packed packed unaligned dcl 55 set ref 167* string builtin function dcl 65 set ref 115* 166* 173 173 184 tree_depth 57 based fixed bin(17,0) level 2 packed packed unaligned dcl 2-11 ref 93 uid 2 based bit(36) level 2 in structure "entry" dcl 3-8 in procedure "salv_check_vtoce_" ref 125 185 uid 1 based bit(36) level 2 in structure "vtoce" packed packed unaligned dcl 6-7 in procedure "salv_check_vtoce_" ref 125 uid 000122 automatic bit(36) array dcl 60 in procedure "salv_check_vtoce_" set ref 94* 99* 139 140* 145 uid 10 based bit(36) level 2 in structure "dir" dcl 2-11 in procedure "salv_check_vtoce_" ref 99 uid_path 240 based bit(36) array level 2 in structure "vtoce" packed packed unaligned dcl 6-7 in procedure "salv_check_vtoce_" set ref 139 140* uid_path 1 000143 automatic bit(36) array level 2 in structure "update" dcl 62 in procedure "salv_check_vtoce_" set ref 145* uid_path_util$get 000020 constant entry external dcl 73 ref 94 update 000143 automatic structure level 1 dcl 62 set ref 185 185 vtoc_attributes$salv_update 000012 constant entry external dcl 70 ref 185 vtoc_man$get_vtoce 000014 constant entry external dcl 71 ref 120 vtoce based structure level 1 dcl 6-7 vtoce_copy 000205 automatic structure level 1 dcl 64 set ref 107 vtocep 000512 automatic pointer dcl 6-5 set ref 107* 120* 125 139 140 148 154 155 156 165 172 177 vtocx 31 based fixed bin(17,0) level 2 packed packed unaligned dcl 3-8 ref 120 185 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. np automatic pointer dcl 4-5 seg_vtoce based structure level 1 dcl 6-92 version_number_2 internal static fixed bin(17,0) initial dcl 2-84 vtoce_parts based bit(2304) array dcl 6-90 NAME DECLARED BY EXPLICIT CONTEXT. salv_check_vtoce_ 000237 constant entry external dcl 41 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1770 2030 1561 2000 Length 2334 1561 40 270 206 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME salv_check_vtoce_ 488 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME salv_check_vtoce_ 000100 acc_class_str salv_check_vtoce_ 000110 code salv_check_vtoce_ 000111 connection_failures_occured salv_check_vtoce_ 000112 event_flags salv_check_vtoce_ 000114 next_ptr salv_check_vtoce_ 000116 i salv_check_vtoce_ 000117 level salv_check_vtoce_ 000120 lv_p salv_check_vtoce_ 000122 uid salv_check_vtoce_ 000142 pvtx salv_check_vtoce_ 000143 update salv_check_vtoce_ 000175 name salv_check_vtoce_ 000205 vtoce_copy salv_check_vtoce_ 000506 dp salv_check_vtoce_ 000510 ep salv_check_vtoce_ 000512 vtocep salv_check_vtoce_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_g_a call_ent_var_desc call_ext_out_desc call_ext_out return_mac ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. access_audit_$log_obj_class delentry$salv_delete_branch display_access_class_ get_pvtx level$get logical_volume_manager$lvtep uid_path_util$get vtoc_attributes$salv_update vtoc_man$get_vtoce THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. access_operations_$fs_obj_set_soos error_table_$ai_entry_vtoce_mismatch error_table_$invalid_vtocx LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 41 000232 54 000252 89 000253 93 000257 94 000262 95 000274 96 000276 97 000334 99 000335 103 000341 104 000354 107 000422 109 000424 110 000426 111 000436 113 000443 114 000456 115 000461 117 000462 118 000477 120 000531 122 000562 125 000617 127 000627 128 000631 129 000635 130 000672 131 000703 132 000743 133 000744 134 001001 138 001002 139 001007 140 001013 142 001066 144 001070 145 001072 148 001100 149 001105 150 001110 154 001112 155 001124 156 001133 157 001144 158 001146 160 001153 165 001217 166 001227 167 001230 168 001232 172 001234 173 001245 177 001354 180 001423 184 001426 185 001430 187 001461 193 001512 196 001515 199 001560 ----------------------------------------------------------- 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