COMPILATION LISTING OF SEGMENT rcp_setup_event 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 0942.6 mst Sat Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1985 * 6* * * 7* *********************************************************** */ 8 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 9 rcp_setup_event: 10 proc (a_operation, a_effmode, a_event_flag, a_error_code); 11 12 /* This internal subroutine sets up the event flag 13* * structure needed to determine if auditing of the 14* * event is required. 15* * 16* * Created 850221 by Maria M. Pozzo 17* * 18**/ 19 20 /* ARGUMENT DATA */ 21 22 dcl a_operation bit (36) aligned; /* (I) The RCP operation */ 23 dcl a_priv_gate_call bit (1); /* (I) "1"b if the call was made from rcp_sys_, rcp_admin_, rcp_priv_. */ 24 dcl a_effmode bit (3); /* (I) The resulting effective mode of the subject to the resource. */ 25 dcl a_event_flag bit (36) aligned; /* (O) Pointer to the event_flag structure. */ 26 dcl a_error_code fixed bin (35); /* (O) Error code. */ 27 28 /* AUTOMATIC DATA */ 29 30 dcl effmode bit (3); 31 32 dcl operation bit (36) aligned; 33 dcl base_op bit (36) aligned; 34 35 dcl local_code fixed bin (35); 36 37 dcl event_ptr ptr; 38 dcl operation_ptr ptr; 39 40 dcl 1 en_access_op like encoded_access_op aligned based (operation_ptr); 41 42 /* EXTERNAL ENTRIES */ 43 44 dcl access_operations_$rcp_register 45 bit (36) aligned external; 46 dcl access_operations_$rcp_deregister 47 bit (36) aligned external; 48 dcl access_operations_$rcp_register_acquire 49 bit (36) aligned external; 50 dcl access_operations_$rcp_preload 51 bit (36) aligned external; 52 dcl access_operations_$rcp_set_access 53 bit (36) aligned external; 54 dcl access_operations_$rcp_clear 55 bit (36) aligned external; 56 dcl access_operations_$rcp_unassign 57 bit (36) aligned external; 58 dcl access_operations_$rcp_add_device 59 bit (36) aligned external; 60 dcl access_operations_$rcp_delete_device 61 bit (36) aligned external; 62 dcl access_operations_$rcp_copy_registry 63 bit (36) aligned ext static; 64 dcl access_operations_$rcp_delete_registry 65 bit (36) aligned ext static; 66 dcl access_operations_$rcp_reconstruct_registry 67 bit (36) aligned ext static; 68 dcl access_operations_$rcp_update_registry_header 69 bit (36) aligned ext static; 70 71 /* Copy arguments */ 72 73 operation = a_operation; 74 base_op = operation; 75 addr (base_op) -> en_access_op.detailed_operation = 0; 76 ops_ptr = addr (addr (operation) -> en_access_op.detailed_operation); 77 effmode = a_effmode; 78 event_ptr = addr (a_event_flag); 79 local_code = 0; 80 81 event_ptr -> audit_event_flags.special_op = special (); 82 event_ptr -> audit_event_flags.admin_op = admin (); 83 event_ptr -> audit_event_flags.priv_op = priv (); 84 event_ptr -> audit_event_flags.grant = (effmode ^= "000"b); 85 event_ptr -> audit_event_flags.cc_1_10 = "0"b; 86 event_ptr -> audit_event_flags.cc_10_100 = "0"b; 87 88 MAIN_RETURN: 89 a_error_code = local_code; 90 91 return; 92 93 special: 94 proc () returns (bit (1)); 95 96 /* Operations which change the access class range of the object are special. */ 97 /* Operations which change the acs_path are also special. */ 98 99 if base_op = access_operations_$rcp_set_access then 100 return ("1"b); 101 else return ("0"b); 102 103 end special; 104 105 admin: 106 proc () returns (bit (1)); 107 108 /* Operations that can only be called from rcp_sys_, rcp_admin_ or */ 109 /* rcp_priv_. */ 110 111 if (base_op = access_operations_$rcp_unassign & (detailed_operation.force | detailed_operation.process)) then 112 return ("1"b); 113 if base_op = access_operations_$rcp_add_device | base_op = access_operations_$rcp_delete_device then 114 return ("1"b); 115 if base_op = access_operations_$rcp_preload then 116 return ("1"b); 117 if base_op = access_operations_$rcp_register | base_op = access_operations_$rcp_register_acquire 118 | base_op = access_operations_$rcp_deregister then 119 return ("1"b); 120 if base_op = access_operations_$rcp_clear then 121 return ("1"b); 122 if base_op = access_operations_$rcp_copy_registry | base_op = access_operations_$rcp_delete_registry 123 | base_op = access_operations_$rcp_reconstruct_registry 124 | base_op = access_operations_$rcp_update_registry_header then 125 return ("1"b); 126 127 return ("0"b); 128 129 end admin; 130 131 priv: 132 proc () returns (bit (1)); 133 134 /* Standard operations that are called with a -priv or other argument */ 135 /* that causes them to be invoked through a privileged gate. */ 136 /* ADMIN operations are invoked through a privileged gate as well and */ 137 /* they are considered to be PRIV operations also. */ 138 139 if detailed_operation.priv_gate_call then 140 return ("1"b); 141 else return ("0"b); 142 143 end priv; 144 1 1 /* begin include file - access_audit_encoded_op.incl.pl1 */ 1 2 1 3 dcl 1 encoded_access_op aligned based, 1 4 2 audit_type unal, 1 5 3 object_type fixed bin (4) uns unal, 1 6 3 access_type fixed bin (2) uns unal, 1 7 2 operation_index fixed bin (12) uns unal, 1 8 2 detailed_operation fixed bin (18) uns unal; 1 9 1 10 /* object_type = Seg, Dir, Rcp, Admin, Special, Other 1 11* access_type = None, Modify_Acl, Modify, Read 1 12* operation_index is the index of this code in 1 13* access_operations_$oper_codes and the index of 1 14* the text descriptor in access_operations_$text_offest_table 1 15* (see access_operations_.incl.pl1) 1 16* detailed_operation is additional info inserted by the 1 17* caller of the subsystem performing the operation 1 18**/ 1 19 1 20 /* end include file - access_audit_encoded_op.incl.pl1 */ 145 146 2 1 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 2 /* BEGIN include rcp_ops.incl.pl1 */ 2 3 2 4 /* Written 02/27/85 by Chris Jones, Maria Pozzo */ 2 5 2 6 dcl ops_ptr ptr; 2 7 2 8 dcl 1 detailed_operation unaligned based (ops_ptr), 2 9 2 given, 2 10 3 potential_attributes 2 11 bit (1), 2 12 3 desired_attributes 2 13 bit (1), 2 14 3 potential_aim_range 2 15 bit (1), 2 16 3 aim_range bit (1), 2 17 3 owner bit (1), 2 18 3 acs_path bit (1), 2 19 3 location bit (1), 2 20 3 comment bit (1), 2 21 3 charge_type bit (1), 2 22 3 usage_lock bit (1), 2 23 3 release_lock bit (1), 2 24 3 user_alloc bit (1), 2 25 2 priv_gate_call bit (1), 2 26 2 search bit (1), 2 27 2 force bit (1), 2 28 2 process bit (1), 2 29 2 owner bit (1), 2 30 2 pad bit (1); 2 31 147 148 3 1 /* begin include file - access_audit_eventflags.incl.pl1 */ 3 2 /* NOTE: This include file has an ALM counterpart made with cif. 3 3*Keep it up to date. */ 3 4 3 5 dcl 1 audit_event_flags based aligned, 3 6 2 special_op bit (1) unal, /* special sys operation */ 3 7 2 grant bit (1) unal, /* operation was successful */ 3 8 2 admin_op bit (1) unal, /* administrative operation */ 3 9 2 priv_op bit (1) unal, /* privileged operation */ 3 10 2 cc_1_10 bit (1) unal, /* small covert channel */ 3 11 2 cc_10_100 bit (1) unal, /* moderate covert channel */ 3 12 2 receiver bit (1) unal, /* on receiving end of channel */ 3 13 2 pad bit (29) unal; 3 14 3 15 /* end include file - access_audit_eventflags.incl.pl1 */ 149 150 151 end rcp_setup_event; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/11/89 0805.5 rcp_setup_event.pl1 >spec>install>1111>rcp_setup_event.pl1 145 1 01/30/85 1523.9 access_audit_encoded_op.incl.pl1 >ldd>include>access_audit_encoded_op.incl.pl1 147 2 03/15/85 0953.1 rcp_ops.incl.pl1 >ldd>include>rcp_ops.incl.pl1 149 3 01/30/85 1523.9 access_audit_eventflags.incl.pl1 >ldd>include>access_audit_eventflags.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. a_effmode parameter bit(3) packed unaligned dcl 24 ref 9 77 a_error_code parameter fixed bin(35,0) dcl 26 set ref 9 88* a_event_flag parameter bit(36) dcl 25 set ref 9 78 a_operation parameter bit(36) dcl 22 ref 9 73 access_operations_$rcp_add_device 000026 external static bit(36) dcl 58 ref 113 access_operations_$rcp_clear 000022 external static bit(36) dcl 54 ref 120 access_operations_$rcp_copy_registry 000032 external static bit(36) dcl 62 ref 122 access_operations_$rcp_delete_device 000030 external static bit(36) dcl 60 ref 113 access_operations_$rcp_delete_registry 000034 external static bit(36) dcl 64 ref 122 access_operations_$rcp_deregister 000012 external static bit(36) dcl 46 ref 117 access_operations_$rcp_preload 000016 external static bit(36) dcl 50 ref 115 access_operations_$rcp_reconstruct_registry 000036 external static bit(36) dcl 66 ref 122 access_operations_$rcp_register 000010 external static bit(36) dcl 44 ref 117 access_operations_$rcp_register_acquire 000014 external static bit(36) dcl 48 ref 117 access_operations_$rcp_set_access 000020 external static bit(36) dcl 52 ref 99 access_operations_$rcp_unassign 000024 external static bit(36) dcl 56 ref 111 access_operations_$rcp_update_registry_header 000040 external static bit(36) dcl 68 ref 122 admin_op 0(02) based bit(1) level 2 packed packed unaligned dcl 3-5 set ref 82* audit_event_flags based structure level 1 dcl 3-5 base_op 000102 automatic bit(36) dcl 33 set ref 74* 75 99 111 113 113 115 117 117 117 120 122 122 122 122 cc_10_100 0(05) based bit(1) level 2 packed packed unaligned dcl 3-5 set ref 86* cc_1_10 0(04) based bit(1) level 2 packed packed unaligned dcl 3-5 set ref 85* detailed_operation 0(18) based fixed bin(18,0) level 2 in structure "en_access_op" packed packed unsigned unaligned dcl 40 in procedure "rcp_setup_event" set ref 75* 76 detailed_operation based structure level 1 packed packed unaligned dcl 2-8 in procedure "rcp_setup_event" effmode 000100 automatic bit(3) packed unaligned dcl 30 set ref 77* 84 en_access_op based structure level 1 dcl 40 encoded_access_op based structure level 1 dcl 1-3 event_ptr 000104 automatic pointer dcl 37 set ref 78* 81 82 83 84 85 86 force 0(14) based bit(1) level 2 packed packed unaligned dcl 2-8 ref 111 grant 0(01) based bit(1) level 2 packed packed unaligned dcl 3-5 set ref 84* local_code 000103 automatic fixed bin(35,0) dcl 35 set ref 79* 88 operation 000101 automatic bit(36) dcl 32 set ref 73* 74 76 ops_ptr 000106 automatic pointer dcl 2-6 set ref 76* 111 111 139 priv_gate_call 0(12) based bit(1) level 2 packed packed unaligned dcl 2-8 ref 139 priv_op 0(03) based bit(1) level 2 packed packed unaligned dcl 3-5 set ref 83* process 0(15) based bit(1) level 2 packed packed unaligned dcl 2-8 ref 111 special_op based bit(1) level 2 packed packed unaligned dcl 3-5 set ref 81* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. a_priv_gate_call automatic bit(1) packed unaligned dcl 23 operation_ptr automatic pointer dcl 38 NAMES DECLARED BY EXPLICIT CONTEXT. MAIN_RETURN 000100 constant label dcl 88 admin 000124 constant entry internal dcl 105 ref 82 priv 000234 constant entry internal dcl 131 ref 83 rcp_setup_event 000011 constant entry external dcl 9 special 000104 constant entry internal dcl 93 ref 81 NAME DECLARED BY CONTEXT OR IMPLICATION. addr builtin function ref 75 76 76 78 STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 456 520 257 466 Length 760 257 42 224 176 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME rcp_setup_event 96 external procedure is an external procedure. special internal procedure shares stack frame of external procedure rcp_setup_event. admin internal procedure shares stack frame of external procedure rcp_setup_event. priv internal procedure shares stack frame of external procedure rcp_setup_event. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME rcp_setup_event 000100 effmode rcp_setup_event 000101 operation rcp_setup_event 000102 base_op rcp_setup_event 000103 local_code rcp_setup_event 000104 event_ptr rcp_setup_event 000106 ops_ptr rcp_setup_event THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_ne_as return_mac ext_entry NO EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. access_operations_$rcp_add_device access_operations_$rcp_clear access_operations_$rcp_copy_registry access_operations_$rcp_delete_device access_operations_$rcp_delete_registry access_operations_$rcp_deregister access_operations_$rcp_preload access_operations_$rcp_reconstruct_registry access_operations_$rcp_register access_operations_$rcp_register_acquire access_operations_$rcp_set_access access_operations_$rcp_unassign access_operations_$rcp_update_registry_header LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000004 73 000016 74 000021 75 000022 76 000024 77 000030 78 000035 79 000037 81 000040 82 000046 83 000056 84 000066 85 000074 86 000076 88 000100 91 000103 93 000104 99 000106 101 000117 105 000124 111 000126 113 000150 115 000161 117 000170 120 000203 122 000212 127 000227 131 000234 139 000236 141 000250 ----------------------------------------------------------- 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