COMPILATION LISTING OF SEGMENT rcp_authenticate_device_ 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 0953.0 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 /****^ HISTORY COMMENTS: 14* 1) change(86-01-15,Fawcett), approve(86-04-11,MCR7383), 15* audit(86-05-14,Farley), install(86-07-17,MR12.0-1097): 16* Add support for subvolumes by setting a priority for authentication. 17* END HISTORY COMMENTS */ 18 19 20 rcp_authenticate_device_: proc (a_device_name, a_oper_auth_code, a_code); 21 22 /* This program takes a device name and an authentication code. For tape 23* drives it gets the user specified volume name, converts it with 24* authenticate_ and checks it against the operator specified authentication 25* code ("***", if permitted, matches any code). For disk drives it checks 26* the authentication code against the disk label type flags in the rcse. 27**/ 28 /* 29* Written by R.J.C. Kissel in September 1977. 30* Modified by R.J.C. Kissel 1/79 to handle disk authentication. 31* Modified 05/79 by C. D. Tavares to handle new authentication levels. 32* Modified 6/79 by Michael R. Jordan for MR7.0R. 33**/ 34 35 dcl a_device_name char (*); 36 dcl a_oper_auth_code char (*); 37 dcl a_code fixed bin (35); 38 39 dcl UPPER char (26) static internal options (constant) init ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"); 40 dcl LOWER char (26) static internal options (constant) init ("abcdefghijklmnopqrstuvwxyz"); 41 42 dcl device_name char (32); 43 dcl oper_auth_code char (3); 44 dcl code fixed bin (35); 45 46 dcl user_label char (32); 47 dcl caller_level fixed bin; 48 dcl found bit (1); 49 dcl i fixed bin; 50 51 dcl authenticate_ entry (char (*)) returns (char (3) aligned); 52 /* In upper case. */ 53 dcl rcp_pointers_$com_seg entry () returns (ptr); 54 dcl rcp_pointers_$data entry () returns (ptr); 55 dcl hcs_$wakeup entry (bit (36), fixed bin (71), fixed bin (71), fixed bin (35)); 56 dcl get_ring_ entry () returns (fixed bin); 57 dcl cu_$level_get entry (fixed bin); 58 dcl cu_$level_set entry (fixed bin); 59 dcl rcp_lock_$lock entry (ptr, fixed bin (35)); 60 dcl rcp_lock_$unlock entry (ptr); 61 62 dcl (error_table_$auth_incorrect, 63 error_table_$auth_unknown, 64 error_table_$dev_nt_assnd, 65 error_table_$action_not_performed, 66 error_table_$improper_data_format) external fixed bin (35); 67 68 dcl cleanup condition; 69 70 dcl (translate, addr, substr, null) builtin; 71 72 code = 0; 73 lock_info_ptr = null (); 74 75 call cu_$level_get (caller_level); 76 77 on cleanup 78 call CLEANUP; 79 80 call cu_$level_set (get_ring_ ()); 81 82 device_name = a_device_name; 83 oper_auth_code = a_oper_auth_code; 84 85 rcpd_ptr = rcp_pointers_$data (); 86 rcs_ptr = rcp_pointers_$com_seg (); 87 88 lock_info_ptr = addr (rcs.lock_info); 89 call rcp_lock_$lock (lock_info_ptr, code); 90 91 if code ^= 0 92 then do; 93 call CLEANUP; 94 return; 95 end; 96 97 found = "0"b; 98 99 do i = 1 to rcs.num_entries by 1 while (^found); 100 rcse_ptr = addr (rcs.entry (i)); 101 102 if rcse.device_name = device_name /* Right device. */ & rcse.kind = 1 /* The attach entry. */ & rcse.state ^= 0 103 /* Not free, i.e. probably attaching. */ 104 then found = "1"b; 105 end; 106 107 if ^found 108 then do; 109 code = error_table_$dev_nt_assnd; 110 call CLEANUP; 111 return; 112 end; 113 114 if ^rcse.flags.need_auth | (substr (device_name, 1, 3) ^= "tap" & substr (device_name, 1, 3) ^= "dsk") 115 then do; 116 code = error_table_$action_not_performed; 117 call CLEANUP; 118 return; 119 end; 120 121 if substr (device_name, 1, 3) = "tap" then do; /* Handle tape authentication. */ 122 123 if rcpd.modes.authentication_level = No_authentication then 124 goto auth_ok; 125 126 if rcpd.modes.authentication_level = Nominal_authentication then 127 if oper_auth_code = "***" then goto auth_ok; 128 129 /* full auto or manual authentication */ 130 131 if oper_auth_code = "***" then do; /* don't allow this */ 132 code = error_table_$improper_data_format; 133 call CLEANUP; 134 return; 135 end; 136 137 user_label = rcse.volume_name; 138 139 if (translate (oper_auth_code, UPPER, LOWER) = authenticate_ (user_label)) then 140 auth_ok: do; 141 rcse.have_auth = "1"b; 142 rcse.auth_set = "1"b; 143 rcse.need_auth = "0"b; 144 end; 145 146 else do; 147 rcse.have_auth = "0"b; 148 rcse.auth_set = "1"b; 149 rcse.need_auth = "0"b; 150 end; 151 152 call hcs_$wakeup ((rcse.process_id), rcse.event_id, 0, code); 153 154 call CLEANUP; 155 return; 156 end; /* Handle tape authentication. */ 157 158 else do; /* Handle disk authentication. */ 159 if oper_auth_code = "no" 160 then do; /* Operator has denied authentication. */ 161 rcse.have_auth = "0"b; 162 rcse.auth_set = "1"b; 163 rcse.need_auth = "0"b; 164 end; /* Operator has denied authentication. */ 165 166 else if (oper_auth_code = "ss") | (oper_auth_code = "io") | (oper_auth_code = "urd") | (oper_auth_code = "urg") 167 then do; 168 if (rcse.flags.disk_ss_pack | rcse.flags.disk_copy_of_ss_pack) & ^(oper_auth_code = "ss") 169 then goto wrong_auth_code; 170 else if (rcse.flags.disk_io_pack & ^(oper_auth_code = "io")) 171 then goto wrong_auth_code; 172 else if (rcse.flags.disk_unreadable & ^(oper_auth_code = "urd")) 173 then goto wrong_auth_code; 174 else if (rcse.flags.disk_unregistered & ^(oper_auth_code = "urg")) 175 then goto wrong_auth_code; 176 /* Operator has authenticated the pack. */ 177 rcse.have_auth = "1"b; 178 rcse.auth_set = "1"b; 179 rcse.need_auth = "0"b; 180 end; /* Operator has authenticated the pack. */ 181 else do; /* Unknown authentication code. */ 182 code = error_table_$auth_unknown; 183 call CLEANUP; 184 return; 185 end; 186 187 call hcs_$wakeup ((rcse.process_id), rcse.event_id, 0, code); 188 /* Inform user the operator is done. */ 189 190 call CLEANUP; 191 return; 192 end; /* Handle disk authentication. */ 193 wrong_auth_code: 194 code = error_table_$auth_incorrect; 195 call CLEANUP; 196 return; 197 /* */ 198 CLEANUP: 199 proc; 200 201 if lock_info_ptr ^= null 202 then call rcp_lock_$unlock (lock_info_ptr); 203 204 call cu_$level_set (caller_level); 205 a_code = code; 206 207 end CLEANUP; 208 1 1 /* Begin include file ... rcp_data.incl.pl1 1 2* * 1 3* * Created on 09/06/74 by Bill Silver. 1 4* * This include file defines the Resource Control Package data base, rcp_data. 1 5* * It is initialized in ring 0 by rcp_init. It is maintained in ring 1 by RCP. 1 6* * It contains information about all of the devices and volumes managed by RCP. 1 7* * This include file references rcp_com_seg.incl.pl1. 1 8* 1 9* * Modified by R.J.C. Kissel on 10/5/77 to add the check_label bit. 1 10* * Modified by Michael R. Jordan on 04/24/78 to add modes and attached flag. 1 11* * Modified on 12/09/78 to add removable media bit. 1 12* * Modified 3/79 by Michael R. Jordan for MR7.0R. 1 13* * Modified 3/79 by C. D. Tavares for expandable RCP modes. 1 14* * Modified 11/84 by Paul Farley to add fips flag. 1 15* * Modified 02/85 by Paul Farley to add no_protect and opr_int_available flags. 1 16**/ 1 17 1 18 /****^ HISTORY COMMENTS: 1 19* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 1 20* audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033): 1 21* Support FIPS and IMU. 1 22* END HISTORY COMMENTS */ 1 23 1 24 dcl rcpd_ptr ptr; /* Points to base of RCPD. */ 1 25 dcl dtype_ptr ptr; /* Points to a device type entry. */ 1 26 dcl device_ptr ptr; /* Points to a device entry. */ 1 27 dcl volume_ptr ptr; /* Points to a volume entry. */ 1 28 1 29 dcl 1 rcpd based (rcpd_ptr) aligned, /* Begin at word 0 of RCPD. */ 1 30 2 lock_info like lock_info, /* Data used to lock this segment. */ 1 31 2 init bit (1) unal, /* ON => rcp_ring1_init_ has executed */ 1 32 2 modes like rcp_init_flags unaligned, 1 33 2 tot_dtypes fixed bin, /* Number of known device types. */ 1 34 2 tot_devices fixed bin, /* Total number of devices configured. */ 1 35 2 tot_volumes fixed bin, /* Number of possible attached volumes. */ 1 36 2 last_volume fixed bin, /* The last volume entry currently in use. */ 1 37 2 mtimer_chan fixed bin (71), /* Event channel for mount timer. */ 1 38 2 mtimer_pid bit (36), /* ID of mount timer process. */ 1 39 2 accounting_chan fixed bin (71), /* Event channel for device accounting */ 1 40 2 accounting_pid bit (36), /* ID of accounting process */ 1 41 2 unload_sleep_time fixed bin (71), /* Number of microseconds to wait for unload completion. */ 1 42 2 pad (7) fixed bin, 1 43 2 dtype (0 refer (rcpd.tot_dtypes)) /* One entry per device type. */ 1 44 like dtype, /* See structure below. */ 1 45 2 device (0 refer (rcpd.tot_devices)) /* One entry per configured device. */ 1 46 like device, /* See structure below. */ 1 47 2 volume (0 refer (rcpd.tot_volumes)) /* One entry per possible attached volume. */ 1 48 like volume, /* See structure below. */ 1 49 2 end bit (36) aligned; /* End of rcp_data. */ 1 50 1 51 dcl 1 dtype based (dtype_ptr) aligned, /* Entry for one device type. */ 1 52 2 device_type char (32), /* Name of this device type. */ 1 53 2 max_concurrent fixed bin, /* Max number of concurrently assigned devices. */ 1 54 2 num_reserved fixed bin, /* Num of devices reserved for system processes. */ 1 55 2 num_devices fixed bin, /* Num of devices of this type that are configured. */ 1 56 2 first_off bit (18), /* Offset of first device entry. */ 1 57 2 histo_times (3) fixed bin; /* Used to compute histograms for this device type. */ 1 58 1 59 dcl 1 device based (device_ptr) aligned, /* Up to state must = rcs.rcse. */ 1 60 2 device_name char (8), /* Name of device associated with this entry. */ 1 61 2 volume_name char (32), /* Volume name. Blank => no volume. */ 1 62 2 dtypex fixed bin, /* Device type index. */ 1 63 2 model fixed bin, /* Device model number. */ 1 64 2 num_qualifiers fixed bin, /* Number of device qualifiers. */ 1 65 2 qualifiers (4) fixed bin (35), /* Device qualifiers. */ 1 66 2 state_time fixed bin (71), /* Time device put into current state. */ 1 67 2 state fixed bin, /* 0 => free, 1 => assigned, 2 => deleted, 1 68* 3 => storage system, 4 => reserved */ 1 69 1 70 /* * * * * ** Following fields are unique to device entry. */ 1 71 1 72 2 unassign_state fixed bin, /* State to return when unassigning. */ 1 73 2 acs_name char (12), /* Entry name of ACS for this device. */ 1 74 2 next_off bit (18), /* Offset of next entry for this device type. */ 1 75 2 iom_num fixed bin, /* IOM number for this device. */ 1 76 2 chan_num fixed bin, /* Channel number for this device. */ 1 77 2 num_channels fixed bin, /* Num channels that may address device. */ 1 78 2 flags, /* Special info flags. */ 1 79 (3 delete bit (1), /* ON => Delete device when it is unassigned. */ 1 80 3 priv bit (1), /* ON => Deleted device assigned for priv attach. */ 1 81 3 reservable bit (1), /* ON => may be reserved for system process. */ 1 82 3 reserved bit (1), /* ON => reserved to a reserved process. */ 1 83 3 mounting bit (1), /* ON => mount pending. */ 1 84 3 writing bit (1), /* ON => mounting for writing. */ 1 85 3 attached bit (1) unal, /* ON => device is attached. */ 1 86 3 not_removable_media bit (1), /* ON => cannot remove volume from device. */ 1 87 3 fips bit (1), /* ON => FIPS device. */ 1 88 3 no_protect bit (1), /* ON => device has no protect sw. */ 1 89 3 opr_int_available bit (1), /* ON => device connected to MPC with OI button. */ 1 90 3 unused bit (25)) unal, 1 91 2 process_id bit (36), /* ID of assigned process. */ 1 92 2 group_id char (32), /* Process group ID. */ 1 93 2 error_count fixed bin (35), /* Total error count. Defined by user ring. */ 1 94 2 num_assigns fixed bin (35), /* Total # of times device assigned & unassigned. */ 1 95 2 tot_assign_time fixed bin (71), /* Total time that device was assigned. */ 1 96 2 histogram (4) fixed bin, /* Assignment time histogram. */ 1 97 2 reservation_id fixed bin (71), 1 98 2 reserved_by char (32), /* Who made this reservation. */ 1 99 2 current_authorization bit (72) aligned; /* Authoization of process using this device. */ 1 100 1 101 dcl 1 volume based (volume_ptr) aligned, /* Entry for one volume. */ 1 102 2 process_id bit (36), /* "0"b => unassigned. */ 1 103 2 volume_name char (32), /* Volume name. */ 1 104 2 vtypex fixed bin, /* Volume type index. */ 1 105 2 group_id char (32), /* This is used for the reserved_for field. */ 1 106 2 reserved_by char (32), 1 107 2 reservation_id fixed bin (71), 1 108 2 state_time fixed bin (71), /* Same as for a device. */ 1 109 2 state fixed bin, /* Same as for a device. */ 1 110 2 unassign_state fixed bin, /* State to return when unassigning. */ 1 111 2 current_authorization bit (72) aligned; /* Authorization of process using this volume. */ 1 112 2 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 2 2 2 3 /* Created on 04/24/78 by Michael R. Jordan */ 2 4 /* Modified 04/10/79 by C. D. Tavares */ 2 5 2 6 dcl rifp ptr; 2 7 2 8 dcl 1 rcp_init_flags based (rifp), 2 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 2 10 2 pad1 bit (2) unaligned, /* obsolete */ 2 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 2 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 2 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 2 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 2 15 2 16 dcl (No_authentication initial (0), 2 17 Nominal_authentication initial (1), 2 18 Automatic_authentication initial (2), 2 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 2 20 2 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 2 22 ("none", "nominal", "automatic", "manual"); 2 23 2 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 1 113 1 114 1 115 /* End of include file ... rcp_data.incl.pl1 */ 209 210 3 1 /* Begin include file ... rcp_com_seg.incl.pl1 3 2* * 3 3* * Created on 11/20/74 by Bill Silver. 3 4* * Modified on 09/19/77 by R.J.C. Kissel to add label authentication bits. 3 5* * Modified on 12/09/78 by Michael R. Jordan to add removable media bit and label_type. 3 6* * Modified 1/79 by R.J.C. Kissel to add disk label authentication bits. 3 7* * Modified 2/79 by Michael R. Jordan to add volume_density. 3 8* * Modified 11/84 by Paul Farley to add fips flag. 3 9* * Modified 1/3/85 by Fawcett to allow room for mca device type 3 10* * Modified 02/85 by Paul Farley to add no_protect and opr_int_available flags. 3 11* * This include file defines the Resource Control Package communication segment. 3 12* * This segment is used to communicate requests between the various internal 3 13* * parts of RCP. 3 14**/ 3 15 3 16 /****^ HISTORY COMMENTS: 3 17* 1) change(85-09-09,Farley), approve(85-09-09,MCR6979), 3 18* audit(85-12-09,CLJones), install(86-03-21,MR12.0-1033): 3 19* Support MCA and FIPS. 3 20* END HISTORY COMMENTS */ 3 21 3 22 dcl lock_info_ptr ptr; /* Pointer to lock info structure. */ 3 23 dcl rcs_ptr ptr; /* Pointer to base of RCS. */ 3 24 dcl rcse_ptr ptr; /* Pointer to an RCS entry. */ 3 25 3 26 dcl 1 based_rcp_id based aligned, /* Overlay of an rcp_id. */ 3 27 (2 id_count fixed bin (17), /* Unique count index. */ 3 28 2 rcse_off bit (18)) unaligned; /* Offset of rcp_com_seg entry. */ 3 29 3 30 dcl 1 rcs based (rcs_ptr) aligned, /* Begin at word zero of rcp_com_seg. */ 3 31 2 lock_info like lock_info, /* Data used to lock this segment. */ 3 32 2 ws_maxs (8) fixed bin (19), /* Max IOI workspace size in words. */ 3 33 2 ws_pmaxs (8) fixed bin (19), /* Max IOI workspace size for priv attachments. */ 3 34 2 to_maxs (8) fixed bin (71), /* Max IOI time-out intervals in microseconds. */ 3 35 2 sys_directory char (32), /* Directory used to define a system process. */ 3 36 2 sys_acs char (32), /* Entry name used to define a system process. */ 3 37 2 acs_directory char (32), /* Directory containing device ACSs. */ 3 38 2 id_count fixed bin (35), /* Counter used to form rcp_id. */ 3 39 2 max_entries fixed bin, /* Maximum number of entries allowed. */ 3 40 2 num_entries fixed bin, /* Total number of entries. */ 3 41 2 first_free_off bit (18), /* Offset of first free entry. */ 3 42 2 entry (0 refer (rcs.num_entries)) /* Array of request entries. */ 3 43 like rcse, /* See structure below. */ 3 44 2 end bit (36); /* End of rcp_com_seg. */ 3 45 3 46 dcl 1 lock_info based (lock_info_ptr) aligned, /* Used to meter locking. */ 3 47 2 lock bit (36), /* The lock itself. */ 3 48 2 num_locks fixed bin (35), /* Number of times locked. */ 3 49 2 num_lock_waits fixed bin (35), /* Number of lock waits. */ 3 50 2 time_of_lock fixed bin (71), /* Time of last lock. */ 3 51 2 tot_lock_time fixed bin (71), /* Total time locked. */ 3 52 2 tot_wait_time fixed bin (71), /* Total time waiting for lock. */ 3 53 2 starting_time fixed bin (71); /* Time metering started. */ 3 54 3 55 dcl 1 rcse based (rcse_ptr) aligned, /* Up to state must = rcpd.device. */ 3 56 2 device_name char (8), /* Name of device associated with this entry. */ 3 57 2 volume_name char (32), /* Volume name. Blank => no volume. */ 3 58 2 dtypex fixed bin, /* Device type index. */ 3 59 2 model fixed bin, /* Device model number. */ 3 60 2 num_qualifiers fixed bin, /* Number of device qualifiers. */ 3 61 2 qualifiers (4) fixed bin (35), /* Device qualifiers. */ 3 62 2 state_time fixed bin (71), /* Time device put into current state. */ 3 63 2 state fixed bin, /* 0 - free 1 - assigning 2 - assigned */ 3 64 /* 3 - attaching 4 - attached 5 - completed. */ 3 65 3 66 /* * * * * ** Following fields are unique to RCS entry. */ 3 67 2 kind fixed bin, /* 1 => attach, 2 => assign */ 3 68 2 free_off bit (18), /* Offset of next free entry. 0 => not free. */ 3 69 2 user_off bit (18), /* Offset of next entry in user list. */ 3 70 2 device_off bit (18), /* Offset of device entry in RCPD. */ 3 71 2 volume_off bit (18), /* Offset of volume entry in RCPD. */ 3 72 2 rcse_off bit (18), /* Offset of associated RCS entry. */ 3 73 2 caller_level fixed bin, /* Caller's validation level. */ 3 74 2 disposition bit (1), /* ON => retain, OFF => unassign. */ 3 75 2 flags, /* Special info flags. */ 3 76 (3 device bit (1), /* ON => assigning a specific device. */ 3 77 3 priv bit (1), /* ON => attached with IOI privilege. */ 3 78 3 system bit (1), /* ON => assigned to a system process. */ 3 79 3 t_and_d bit (1), /* ON => T&D attachment. */ 3 80 3 volume bit (1), /* ON => volume associated with this device. */ 3 81 3 writing bit (1), /* ON => writing on volume. */ 3 82 3 have_auth bit (1), /* ON => tape volume authenticated. */ 3 83 3 need_auth bit (1), /* ON => tape volume needs authentication. */ 3 84 3 auth_set bit (1), /* ON => "have_auth" has been set. */ 3 85 3 preload_allowed bit (1), /* ON => preloading of volumes is allowed. */ 3 86 3 preloaded bit (1), /* ON => volume may be loaded on device. */ 3 87 3 not_removable_media bit (1), /* ON => cannot remove volume from device. */ 3 88 3 disk_ss_pack bit (1), /* ON => disk is a storage system volume. */ 3 89 3 disk_copy_of_ss_pack bit (1), /* ON => disk is a copy of a storage system volume. */ 3 90 3 disk_io_pack bit (1), /* ON => disk has label but is not storage system. */ 3 91 3 disk_unregistered bit (1), /* ON => disk is unregistered storage system volume. */ 3 92 3 disk_unreadable bit (1), /* ON => io error reading disk label. */ 3 93 3 must_auto_register bit (1), /* ON => unregistered volume requested */ 3 94 3 fips bit (1), /* ON => FIPS device. */ 3 95 3 no_protect bit (1), /* ON => device has no protect sw. */ 3 96 3 opr_int_available bit (1), /* ON => device connected to MPC with OI button. */ 3 97 3 unused bit (6), 3 98 3 volume_density_index fixed bin (3) unsigned, /* Density of volume */ 3 99 3 label_type fixed bin (6) unsigned)unaligned, /* Type of label read by RCP. */ 3 100 2 rcp_id bit (36), /* ID of this entry. */ 3 101 2 event_id fixed bin (71), /* Caller's event channel ID. */ 3 102 2 process_id bit (36), /* ID of calling process. */ 3 103 2 group_id char (32), /* Group ID of calling process. */ 3 104 2 ecode fixed bin (35), /* Assignment error code. */ 3 105 2 version_num fixed bin, /* Device info version number. */ 3 106 2 workspace_max fixed bin (19), /* Max size of IOI workspace buffer. */ 3 107 2 timeout_max fixed bin (71), /* Max IOI time-out interval. */ 3 108 2 ioi_index fixed bin, /* IOI device index. */ 3 109 2 workspace_ptr ptr, /* Pointer to IOI workspace buffer. */ 3 110 2 caller_comment char (64); /* Caller's comment. */ 3 111 3 112 /* End of include file ... rcp_com_seg.incl.pl1 */ 211 212 213 214 end rcp_authenticate_device_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0806.7 rcp_authenticate_device_.pl1 >spec>install>1111>rcp_authenticate_device_.pl1 209 1 03/27/86 1120.0 rcp_data.incl.pl1 >ldd>include>rcp_data.incl.pl1 1-113 2 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 211 3 03/27/86 1120.0 rcp_com_seg.incl.pl1 >ldd>include>rcp_com_seg.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. LOWER 000000 constant char(26) initial packed unaligned dcl 40 ref 139 No_authentication constant fixed bin(17,0) initial dcl 2-16 ref 123 Nominal_authentication constant fixed bin(17,0) initial dcl 2-16 ref 126 UPPER 000007 constant char(26) initial packed unaligned dcl 39 ref 139 a_code parameter fixed bin(35,0) dcl 37 set ref 20 205* a_device_name parameter char packed unaligned dcl 35 ref 20 82 a_oper_auth_code parameter char packed unaligned dcl 36 ref 20 83 addr builtin function dcl 70 ref 88 100 auth_set 35(08) based bit(1) level 3 packed packed unaligned dcl 3-55 set ref 142* 148* 162* 178* authenticate_ 000010 constant entry external dcl 51 ref 139 authentication_level 14(08) based fixed bin(2,0) level 3 packed packed unsigned unaligned dcl 1-29 ref 123 126 caller_level 000122 automatic fixed bin(17,0) dcl 47 set ref 75* 204* cleanup 000126 stack reference condition dcl 68 ref 77 code 000111 automatic fixed bin(35,0) dcl 44 set ref 72* 89* 91 109* 116* 132* 152* 182* 187* 193* 205 cu_$level_get 000022 constant entry external dcl 57 ref 75 cu_$level_set 000024 constant entry external dcl 58 ref 80 204 device based structure level 1 dcl 1-59 device_name based char(8) level 2 in structure "rcse" dcl 3-55 in procedure "rcp_authenticate_device_" ref 102 device_name 000100 automatic char(32) packed unaligned dcl 42 in procedure "rcp_authenticate_device_" set ref 82* 102 114 114 121 disk_copy_of_ss_pack 35(13) based bit(1) level 3 packed packed unaligned dcl 3-55 ref 168 disk_io_pack 35(14) based bit(1) level 3 packed packed unaligned dcl 3-55 ref 170 disk_ss_pack 35(12) based bit(1) level 3 packed packed unaligned dcl 3-55 ref 168 disk_unreadable 35(16) based bit(1) level 3 packed packed unaligned dcl 3-55 ref 172 disk_unregistered 35(15) based bit(1) level 3 packed packed unaligned dcl 3-55 ref 174 dtype based structure level 1 dcl 1-51 entry 110 based structure array level 2 dcl 3-30 set ref 100 error_table_$action_not_performed 000040 external static fixed bin(35,0) dcl 62 ref 116 error_table_$auth_incorrect 000032 external static fixed bin(35,0) dcl 62 ref 193 error_table_$auth_unknown 000034 external static fixed bin(35,0) dcl 62 ref 182 error_table_$dev_nt_assnd 000036 external static fixed bin(35,0) dcl 62 ref 109 error_table_$improper_data_format 000042 external static fixed bin(35,0) dcl 62 ref 132 event_id 40 based fixed bin(71,0) level 2 dcl 3-55 set ref 152* 187* flags 35 based structure level 2 dcl 3-55 found 000123 automatic bit(1) packed unaligned dcl 48 set ref 97* 99 102* 107 get_ring_ 000020 constant entry external dcl 56 ref 80 80 have_auth 35(06) based bit(1) level 3 packed packed unaligned dcl 3-55 set ref 141* 147* 161* 177* hcs_$wakeup 000016 constant entry external dcl 55 ref 152 187 i 000124 automatic fixed bin(17,0) dcl 49 set ref 99* 100* kind 25 based fixed bin(17,0) level 2 dcl 3-55 ref 102 lock_info based structure level 1 dcl 3-46 in procedure "rcp_authenticate_device_" lock_info based structure level 2 in structure "rcs" dcl 3-30 in procedure "rcp_authenticate_device_" set ref 88 lock_info_ptr 000136 automatic pointer dcl 3-22 set ref 73* 88* 89* 201 201* modes 14(01) based structure level 2 packed packed unaligned dcl 1-29 need_auth 35(07) based bit(1) level 3 packed packed unaligned dcl 3-55 set ref 114 143* 149* 163* 179* null builtin function dcl 70 ref 73 201 num_entries 106 based fixed bin(17,0) level 2 dcl 3-30 ref 99 oper_auth_code 000110 automatic char(3) packed unaligned dcl 43 set ref 83* 126 131 139 159 166 166 166 166 168 170 172 174 process_id 42 based bit(36) level 2 dcl 3-55 ref 152 187 rcp_init_flags based structure level 1 packed packed unaligned dcl 2-8 rcp_lock_$lock 000026 constant entry external dcl 59 ref 89 rcp_lock_$unlock 000030 constant entry external dcl 60 ref 201 rcp_pointers_$com_seg 000012 constant entry external dcl 53 ref 86 rcp_pointers_$data 000014 constant entry external dcl 54 ref 85 rcpd based structure level 1 dcl 1-29 rcpd_ptr 000134 automatic pointer dcl 1-24 set ref 85* 123 126 rcs based structure level 1 dcl 3-30 rcs_ptr 000140 automatic pointer dcl 3-23 set ref 86* 88 99 100 rcse based structure level 1 dcl 3-55 rcse_ptr 000142 automatic pointer dcl 3-24 set ref 100* 102 102 102 114 137 141 142 143 147 148 149 152 152 161 162 163 168 168 170 172 174 177 178 179 187 187 state 24 based fixed bin(17,0) level 2 dcl 3-55 ref 102 substr builtin function dcl 70 ref 114 114 121 translate builtin function dcl 70 ref 139 user_label 000112 automatic char(32) packed unaligned dcl 46 set ref 137* 139* volume based structure level 1 dcl 1-101 volume_name 2 based char(32) level 2 dcl 3-55 ref 137 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. Automatic_authentication internal static fixed bin(17,0) initial dcl 2-16 Manual_authentication internal static fixed bin(17,0) initial dcl 2-16 authentication_level_names internal static char(12) initial array packed unaligned dcl 2-21 based_rcp_id based structure level 1 dcl 3-26 device_ptr automatic pointer dcl 1-26 dtype_ptr automatic pointer dcl 1-25 rifp automatic pointer dcl 2-6 volume_ptr automatic pointer dcl 1-27 NAMES DECLARED BY EXPLICIT CONTEXT. CLEANUP 000605 constant entry internal dcl 198 ref 77 93 110 117 133 154 183 190 195 auth_ok 000367 constant label dcl 139 ref 123 126 rcp_authenticate_device_ 000044 constant entry external dcl 20 wrong_auth_code 000574 constant label dcl 193 ref 168 170 172 174 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1256 1322 1044 1266 Length 1570 1044 44 232 212 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcp_authenticate_device_ 129 external procedure is an external procedure. on unit on line 77 64 on unit CLEANUP 68 internal procedure is called by several nonquick procedures. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rcp_authenticate_device_ 000100 device_name rcp_authenticate_device_ 000110 oper_auth_code rcp_authenticate_device_ 000111 code rcp_authenticate_device_ 000112 user_label rcp_authenticate_device_ 000122 caller_level rcp_authenticate_device_ 000123 found rcp_authenticate_device_ 000124 i rcp_authenticate_device_ 000134 rcpd_ptr rcp_authenticate_device_ 000136 lock_info_ptr rcp_authenticate_device_ 000140 rcs_ptr rcp_authenticate_device_ 000142 rcse_ptr rcp_authenticate_device_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. authenticate_ cu_$level_get cu_$level_set get_ring_ hcs_$wakeup rcp_lock_$lock rcp_lock_$unlock rcp_pointers_$com_seg rcp_pointers_$data THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$action_not_performed error_table_$auth_incorrect error_table_$auth_unknown error_table_$dev_nt_assnd error_table_$improper_data_format LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 20 000040 72 000064 73 000065 75 000067 77 000075 80 000117 82 000135 83 000143 85 000151 86 000160 88 000167 89 000171 91 000202 93 000204 94 000210 97 000211 99 000212 100 000225 102 000231 105 000244 107 000246 109 000250 110 000253 111 000257 114 000260 116 000274 117 000277 118 000303 121 000304 123 000306 126 000313 131 000321 132 000324 133 000327 134 000333 137 000334 139 000337 141 000367 142 000372 143 000374 144 000376 147 000377 148 000402 149 000404 152 000406 154 000427 155 000433 159 000434 161 000441 162 000443 163 000445 164 000447 166 000450 168 000503 170 000510 172 000515 174 000522 177 000527 178 000531 179 000533 180 000535 182 000536 183 000541 184 000545 187 000546 190 000567 191 000573 193 000574 195 000577 196 000603 198 000604 201 000612 204 000625 205 000635 207 000641 ----------------------------------------------------------- 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