COMPILATION LISTING OF SEGMENT expand_access_audit_msg_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 05/13/85 1536.0 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 4* * * 5* *********************************************************** */ 6 7 /* format: style1,insnl,linecom,indcomtxt,^inddcls,^indnoniterdo */ 8 9 expand_access_audit_msg_: 10 procedure (); 11 12 /* * EXPAND_ACCESS_AUDIT_MSG_ 13* * 14* * Expander for log messages from access_audit_. 15* * 16* * 85-03-04, EJ Sharpe: remove some unpopular spaces from format 17* * 85-01-28, EJ Sharpe: for session_uid, expander entry cache 18* * 85-01-22, EJ Sharpe: for new version structures, reformat 19* * 85-01-14, EJ Sharpe: changes per code audit 20* * 85-01-13, EJ Sharpe: misc fixes 21* * 84-12-21, EJ Sharpe: completed first revision 22* * 84-12-05, W. Olin Sibert: Initial coding, on advice from Mr. Sharpe. 23**/ 24 25 /* PARAMETERS */ 26 27 declare P_log_message_format_ptr 28 pointer parameter; 29 declare P_log_message_ptr pointer parameter; 30 declare P_expand_mode_ptr pointer parameter; 31 declare P_expansion char (*) varying parameter; 32 declare P_code fixed bin (35) parameter; 33 34 35 /* AUTOMATIC */ 36 37 declare info_ptr pointer; 38 declare info_size fixed bin; 39 declare info_type fixed bin (9) uns; 40 declare save_info_size fixed bin; 41 42 declare audit_record_size fixed bin; 43 declare char8 char (8) based; 44 declare fb9unsunal fixed bin (9) uns unal based; 45 declare temp char (1000) varying; 46 declare parent char (528); 47 declare n_subjects fixed bin; 48 declare subject_idx fixed bin; 49 declare expander_proc variable entry (pointer, pointer, pointer, fixed bin, char (*) varying, fixed bin (35)); 50 declare entry_name char (33); 51 declare 1 oper_code aligned like encoded_access_op; 52 declare code fixed bin (35); 53 declare object_type_name char (32); 54 declare operation_type_name char (32); 55 56 57 /* INTERNAL STATIC */ 58 59 /* The next two declarations define the expander procedure associative menory 60* used so we don't have to call hcs_$make_entry too often within a single session. 61* Note that they're dimensioned to 36. Should the different types of extended 62* binary data exceed this number, the dimension should be increased. */ 63 64 declare expanders_known bit (36) int static init (""b); 65 declare expander_am (36) variable int static 66 entry (pointer, pointer, pointer, fixed bin, char (*) varying, fixed bin (35)); 67 68 69 /* ENTRIES */ 70 71 declare expand_log_message_$append_octal 72 entry (pointer, pointer, fixed bin, char (*) varying); 73 declare ioa_$rsnnl entry options (variable); 74 declare vpn_cv_uid_path_ entry (pointer, char (*), fixed bin (35)); 75 declare date_time_$format entry (char (*), fixed bin (71), char (*), char (*)) returns (char (250) var); 76 declare cv_fstime_ entry (bit (36) aligned) returns (fixed bin (71)); 77 declare display_access_class_ entry (bit (72) aligned) returns (char (32) aligned); 78 declare hcs_$make_entry entry (ptr, char (*), char (*), entry, fixed bin (35)); 79 80 81 /* MISC */ 82 83 declare (addr, addrel, dimension, hbound, lbound, length, null, rtrim, size, substr, unspec) 84 builtin; 85 86 87 expand_access_audit_msg_$format: 88 entry (P_log_message_format_ptr, P_log_message_ptr, P_expand_mode_ptr, P_expansion, P_code); 89 90 log_message_ptr = P_log_message_ptr; 91 92 audit_record_ptr = addr (log_message.data (1)); 93 audit_record_size = dimension (log_message.data, 1); 94 95 goto ACCESS_AUDIT_COMMON; 96 97 98 99 /* This is a compatibility entrypoint-- it processes an old-format "syserr" class 100* message, which has the syserr binary code in the first word of the data. */ 101 102 expand_access_audit_msg_$syserr: 103 entry (P_log_message_format_ptr, P_log_message_ptr, P_expand_mode_ptr, P_expansion, P_code); 104 105 log_message_ptr = P_log_message_ptr; 106 107 audit_record_ptr = addr (log_message.data (2)); 108 audit_record_size = dimension (log_message.data, 1) - 1; 109 110 goto ACCESS_AUDIT_COMMON; 111 112 113 ACCESS_AUDIT_COMMON: 114 115 info_ptr = audit_record_ptr; 116 info_size = audit_record_size; 117 if audit_record_header_proxy.version = ACCESS_AUDIT_HEADER_VERSION_3 118 /* new version */ 119 then n_subjects = audit_record_header_proxy.type; 120 else if audit_record_header_proxy.version = 1 | audit_record_header_proxy.version = 2 121 /* old versions */ 122 then n_subjects = audit_record_header_proxy.version; 123 else goto unknown_data; 124 125 /* make sure we have a whole header */ 126 if n_subjects = 1 & info_size < size (audit_record_header) 127 then goto unknown_data; 128 else if n_subjects = 2 & info_size < size (audit_record_header_proxy) 129 then goto unknown_data; 130 131 unspec (oper_code) = audit_record_header_proxy.operation_code; 132 if oper_code.object_type = 0 133 then object_type_name = "No Object"; 134 else if oper_code.object_type > hbound (Long_Object_Names, 1) 135 then object_type_name = "UNKNOWN OBJECT"; /* new one we don't know abaout */ 136 else object_type_name = Long_Object_Names (oper_code.object_type); 137 138 if oper_code.access_type = 0 139 then operation_type_name = "none"; 140 else operation_type_name = Long_Level_Names (oper_code.access_type); 141 142 if audit_record_header_proxy.version ^= ACCESS_AUDIT_HEADER_VERSION_3 143 then do; 144 call ioa_$rsnnl ("(Old format binary)^/", temp, (0)); 145 P_expansion = P_expansion || temp; 146 end; 147 148 do subject_idx = 1 to n_subjects; 149 call ioa_$rsnnl ( 150 "^[Proxy^;Subject^]: ^a.^a.^a^[*^] (ring ^d),^[ PID=^w,^;^s^]^[ Session_UID=^d,^;^s^]^/Auth: ^a, Min: ^a, Max: ^a^/" 151 , 152 temp, (0), 153 ((subject_idx = 1) & (n_subjects ^= 1)), 154 audit_record_header_proxy.subjects (subject_idx).person, 155 audit_record_header_proxy.subjects (subject_idx).project, 156 audit_record_header_proxy.subjects (subject_idx).tag, 157 audit_record_header_proxy.subjects (subject_idx).anonymous, 158 audit_record_header_proxy.subjects (subject_idx).ring, 159 (audit_record_header_proxy.subjects (subject_idx).process_id ^= ""b), 160 audit_record_header_proxy.subjects (subject_idx).process_id, 161 ((subject_idx = 1) & (audit_record_header_proxy.session_uid ^= 0)), 162 audit_record_header_proxy.session_uid, /* only AS audit has this at present */ 163 display_access_class_ (audit_record_header_proxy.subjects (subject_idx).authorization), 164 display_access_class_ (audit_record_header_proxy.subjects (subject_idx).authorization_range (1)), 165 display_access_class_ (audit_record_header_proxy.subjects (subject_idx).authorization_range (2))); 166 167 P_expansion = P_expansion || temp; 168 end; 169 170 171 call ioa_$rsnnl ( 172 "^a, operation type: ^a^[, operation detail: ^oo^;^s^]^/", temp, (0), 173 object_type_name, operation_type_name, (oper_code.detailed_operation ^= 0), oper_code.detailed_operation); 174 P_expansion = P_expansion || temp; 175 176 /**** Prepare to deal with extended binary info. 177* 178* Some internal or external routine will be called to expand 179* the extended binary if it exists. 180* 181* (1) The called routine (expander) must check that the info 182* passed is larger or equal to the size of the structure it 183* uses for expansion. 184* 185* (2) The expander must decrease the info_size argument by the 186* number of words processed in that routine. We will loop here 187* calling expanders until the info is all processed. 188* 189* (3) The expander should end the expanded data with a new line 190* to avoid confusion with the set of expanded data. 191*****/ 192 193 if n_subjects = 1 194 then do; 195 info_size = info_size - size (audit_record_header); 196 info_ptr = addrel (info_ptr, size (audit_record_header)); 197 end; 198 else do; 199 info_size = info_size - size (audit_record_header_proxy); 200 info_ptr = addrel (info_ptr, size (audit_record_header_proxy)); 201 end; 202 203 do while (info_size > 0); 204 205 entry_name = ""; /* init expander entry name */ 206 207 if audit_record_header_proxy.version = ACCESS_AUDIT_HEADER_VERSION_3 208 then do; /* new version */ 209 info_type = info_ptr -> fb9unsunal; /* pick off type */ 210 if info_type > hbound (audit_binary_expanders, 1) | info_type < lbound (audit_binary_expanders, 1) 211 then goto unknown_data; 212 213 /* the first two data types we have internal procs for expansion */ 214 else if info_type = AAB_ss_object 215 then call expand_ssobj (info_ptr, info_size); 216 else if info_type = AAB_ss_link 217 then call expand_link (info_ptr, info_size); 218 219 else do; 220 entry_name = "expand_" || audit_binary_expanders (info_type) || "_audit_info_"; 221 if length (rtrim (entry_name)) > 32 222 then goto no_expander; 223 224 if ^expander_cache$get ((info_type), expander_proc) 225 then do; 226 call hcs_$make_entry (null (), entry_name, entry_name, expander_proc, code); 227 if code ^= 0 228 then goto no_expander; 229 else call expander_cache$put ((info_type), expander_proc); 230 end; 231 232 save_info_size = info_size; 233 call expander_proc (P_log_message_format_ptr, P_expand_mode_ptr, 234 info_ptr, info_size, P_expansion, code); 235 if code ^= 0 /* encountered problem?? */ 236 | save_info_size = info_size /* did'nt adjust data size?? */ 237 then do; 238 no_expander: 239 unknown_data: 240 call ioa_$rsnnl ("Unknown data (^d words):^/", temp, (0), info_size); 241 P_expansion = P_expansion || temp; 242 call expand_log_message_$append_octal 243 (P_log_message_format_ptr, info_ptr, info_size, P_expansion); 244 info_size = 0; /* we got it all */ 245 end; 246 end; 247 end; 248 else do; /* old version binary data */ 249 if info_size < 2 250 then goto old_unknown_data; /* need at least 8 chars to identify the type of the data */ 251 252 /* the first two data types we have internal procs for expansion */ 253 if (info_ptr -> char8 = "ssobj_v1") 254 then call expand_old_ssobj (info_ptr, info_size); 255 else if (info_ptr -> char8 = "sslnk_v1") 256 then call expand_old_link (info_ptr, info_size); 257 else do; 258 entry_name = "expand_" || rtrim (info_ptr -> char8) || "_audit_info_"; 259 if length (rtrim (entry_name)) > 32 260 then goto no_old_expander; 261 262 /* we don't maintain a cache of these... */ 263 call hcs_$make_entry (null (), entry_name, entry_name, expander_proc, code); 264 if code ^= 0 265 then goto no_old_expander; 266 267 save_info_size = info_size; 268 call expander_proc (P_log_message_format_ptr, P_expand_mode_ptr, 269 info_ptr, info_size, P_expansion, code); 270 if code ^= 0 /* encountered problem?? */ 271 | save_info_size = info_size /* did'nt adjust data size?? */ 272 then do; 273 no_old_expander: 274 old_unknown_data: 275 call ioa_$rsnnl ("Unknown data (^d words):^/", temp, (0), info_size); 276 P_expansion = P_expansion || temp; 277 call expand_log_message_$append_octal 278 (P_log_message_format_ptr, info_ptr, info_size, P_expansion); 279 info_size = 0; /* we got it all */ 280 end; 281 end; 282 end; 283 284 end; /* do while loop */ 285 286 return; 287 288 289 expand_ssobj: 290 procedure (a_info_ptr, a_info_size); 291 292 dcl a_info_ptr ptr parameter; 293 dcl a_info_size fixed bin parameter; 294 295 audit_ssobj_info_ptr = a_info_ptr; 296 if info_size < size (audit_ssobj_info) 297 then goto unknown_data; 298 299 call vpn_cv_uid_path_ (addr (audit_ssobj_info.parent_uid_path), parent, (0)); 300 301 call ioa_$rsnnl ("Object: branch ^w in ^a, DTEM is ^a^/", temp, (0), 302 audit_ssobj_info.entry_uid, parent, 303 date_time_$format ("date_time", cv_fstime_ (audit_ssobj_info.dtem), "", "")); 304 P_expansion = P_expansion || temp; 305 306 call ioa_$rsnnl ("Raw mode: ^[null^s^s^s^;^[r^]^[e^]^[w^]^] Ring brackets: ^d,^d,^d Class: ^a.", 307 temp, (0), (substr (audit_ssobj_info.raw_mode, 1, 3) = "000"b), 308 substr (audit_ssobj_info.raw_mode, 1, 1), substr (audit_ssobj_info.raw_mode, 2, 1), 309 substr (audit_ssobj_info.raw_mode, 3, 1), audit_ssobj_info.ring_brackets, 310 display_access_class_ (audit_ssobj_info.access_class)); 311 P_expansion = P_expansion || temp; 312 313 if substr (audit_ssobj_info.ex_mode, 1, 3) ^= "000"b 314 | audit_ssobj_info.ex_ring_brackets (1) ^= "000"b 315 | audit_ssobj_info.ex_ring_brackets (2) ^= "000"b 316 | audit_ssobj_info.ex_ring_brackets (3) ^= "000"b 317 then call ioa_$rsnnl (" (Ex mode: ^[null^s^s^s^;^[r^]^[e^]^[w^]^] Ex Ring brackets: ^d,^d,^d).^/", temp, (0), 318 (substr (audit_ssobj_info.ex_mode, 1, 3) = "000"b), substr (audit_ssobj_info.ex_mode, 1, 1), 319 substr (audit_ssobj_info.ex_mode, 2, 1), substr (audit_ssobj_info.ex_mode, 3, 1), 320 audit_ssobj_info.ex_ring_brackets); 321 else call ioa_$rsnnl ("^/", temp, (0)); 322 P_expansion = P_expansion || temp; 323 324 call ioa_$rsnnl ( 325 "Switches: ^[^^^]dirsw,^[^^^]per_process,^[^^^]safety,^[^^^]multiple_class,^[^^^]audit,^[^^^]security_oos,^[^^^]entrypt,^[^^^]master_dir.^/" 326 , 327 temp, (0), ^audit_ssobj_info.dirsw, ^audit_ssobj_info.per_process_sw, ^audit_ssobj_info.safety_sw, 328 ^audit_ssobj_info.multiple_class, ^audit_ssobj_info.audit_flag, ^audit_ssobj_info.security_oosw, 329 ^audit_ssobj_info.entrypt_sw, ^audit_ssobj_info.master_dir); 330 P_expansion = P_expansion || temp; 331 332 a_info_ptr = addrel (a_info_ptr, size (audit_ssobj_info)); 333 a_info_size = a_info_size - size (audit_ssobj_info); 334 335 return; 336 end expand_ssobj; 337 338 339 expand_link: 340 procedure (a_info_ptr, a_info_size); 341 342 dcl a_info_ptr ptr parameter; 343 dcl a_info_size fixed bin parameter; 344 345 audit_link_info_ptr = info_ptr; 346 if info_size < size (audit_link_info) 347 then goto unknown_data; 348 349 call vpn_cv_uid_path_ (addr (audit_link_info.parent_uid_path), parent, (0)); 350 351 call ioa_$rsnnl ("Object: link ^w in ^a, DTEM is ^a^/", temp, (0), 352 audit_ssobj_info.entry_uid, parent, 353 date_time_$format ("date_time", cv_fstime_ (audit_ssobj_info.dtem), "", "")); 354 355 P_expansion = P_expansion || temp; 356 357 a_info_ptr = addrel (a_info_ptr, size (audit_link_info)); 358 a_info_size = a_info_size - size (audit_link_info); 359 360 return; 361 end expand_link; 362 363 364 /* OLD ssobj and sslnk expanders */ 365 366 expand_old_ssobj: 367 procedure (a_info_ptr, a_info_size); 368 369 dcl a_info_ptr ptr parameter; 370 dcl a_info_size fixed bin parameter; 371 372 /* OLD structure declarations */ 373 dcl old_audit_ssobj_info_ptr 374 pointer; 375 376 dcl 1 old_audit_ssobj_info based (old_audit_ssobj_info_ptr) aligned, 377 2 info_type char (8) unal, 378 2 parent_uid_path (0:15) bit (36) aligned, 379 2 entry_uid bit (36), 380 2 dtem bit (36), 381 2 raw_mode bit (36), 382 2 ex_mode bit (36), 383 2 access_class bit (72), 384 2 ring_brackets (3) bit (3) unal, 385 2 ex_ring_brackets (3) bit (3) unal, 386 2 flags unal, 387 3 ( 388 dirsw, 389 per_process_sw, 390 safety_sw, 391 multiple_class, 392 audit_flag, 393 security_oosw, 394 entrypt_sw, 395 master_dir 396 ) bit (1) unal, 397 3 pad bit (10) unal, 398 2 pad2 bit (36) aligned; 399 400 /* slightly shorter info for links, first three components are same */ 401 402 dcl old_audit_link_info_ptr 403 pointer; 404 405 dcl 1 old_audit_link_info based (old_audit_link_info_ptr) aligned, 406 2 info_type char (8) unal, 407 2 parent_uid_path (0:15) bit (36) aligned, 408 2 entry_uid bit (36), 409 2 dtem bit (36); 410 411 old_audit_ssobj_info_ptr = a_info_ptr; 412 if info_size < size (old_audit_ssobj_info) 413 then goto unknown_data; 414 415 call vpn_cv_uid_path_ (addr (old_audit_ssobj_info.parent_uid_path), parent, (0)); 416 417 call ioa_$rsnnl ("Object: branch ^w in ^a, DTEM is ^a^/", temp, (0), 418 old_audit_ssobj_info.entry_uid, parent, 419 date_time_$format ("date_time", cv_fstime_ (old_audit_ssobj_info.dtem), "", "")); 420 P_expansion = P_expansion || temp; 421 422 call ioa_$rsnnl ("Raw mode: ^[null^s^s^s^;^[r^]^[e^]^[w^]^] Ring brackets: ^d,^d,^d Class: ^a.", 423 temp, (0), (substr (old_audit_ssobj_info.raw_mode, 1, 3) = "000"b), 424 substr (old_audit_ssobj_info.raw_mode, 1, 1), substr (old_audit_ssobj_info.raw_mode, 2, 1), 425 substr (old_audit_ssobj_info.raw_mode, 3, 1), old_audit_ssobj_info.ring_brackets, 426 display_access_class_ (old_audit_ssobj_info.access_class)); 427 P_expansion = P_expansion || temp; 428 429 if substr (old_audit_ssobj_info.ex_mode, 1, 3) ^= "000"b 430 | old_audit_ssobj_info.ex_ring_brackets (1) ^= "000"b 431 | old_audit_ssobj_info.ex_ring_brackets (2) ^= "000"b 432 | old_audit_ssobj_info.ex_ring_brackets (3) ^= "000"b 433 then call ioa_$rsnnl (" (Ex mode: ^[null^s^s^s^;^[r^]^[e^]^[w^]^] Ex Ring brackets: ^d,^d,^d).^/", temp, (0), 434 (substr (old_audit_ssobj_info.ex_mode, 1, 3) = "000"b), substr (old_audit_ssobj_info.ex_mode, 1, 1), 435 substr (old_audit_ssobj_info.ex_mode, 2, 1), substr (old_audit_ssobj_info.ex_mode, 3, 1), 436 old_audit_ssobj_info.ex_ring_brackets); 437 else call ioa_$rsnnl ("^/", temp, (0)); 438 P_expansion = P_expansion || temp; 439 440 call ioa_$rsnnl ( 441 "Switches: ^[^^^]dirsw,^[^^^]per_process,^[^^^]safety,^[^^^]multiple_class,^[^^^]audit,^[^^^]security_oos,^[^^^]entrypt,^[^^^]master_dir.^/" 442 , 443 temp, (0), ^old_audit_ssobj_info.dirsw, ^old_audit_ssobj_info.per_process_sw, 444 ^old_audit_ssobj_info.safety_sw, 445 ^old_audit_ssobj_info.multiple_class, ^old_audit_ssobj_info.audit_flag, 446 ^old_audit_ssobj_info.security_oosw, 447 ^old_audit_ssobj_info.entrypt_sw, ^old_audit_ssobj_info.master_dir); 448 P_expansion = P_expansion || temp; 449 450 a_info_ptr = addrel (a_info_ptr, size (old_audit_ssobj_info)); 451 a_info_size = a_info_size - size (old_audit_ssobj_info); 452 453 return; 454 455 456 expand_old_link: 457 entry (a_info_ptr, a_info_size); 458 459 old_audit_link_info_ptr = info_ptr; 460 if info_size < size (old_audit_link_info) 461 then goto unknown_data; 462 463 call vpn_cv_uid_path_ (addr (old_audit_link_info.parent_uid_path), parent, (0)); 464 465 call ioa_$rsnnl ("Object: link ^w in ^a, DTEM is ^a^/", temp, (0), 466 old_audit_ssobj_info.entry_uid, parent, 467 date_time_$format ("date_time", cv_fstime_ (old_audit_ssobj_info.dtem), "", "")); 468 469 P_expansion = P_expansion || temp; 470 471 a_info_ptr = addrel (a_info_ptr, size (old_audit_link_info)); 472 a_info_size = a_info_size - size (old_audit_link_info); 473 474 return; 475 476 end expand_old_ssobj; 477 478 479 /* procedure to keep track of the expanders we know about (to avoid repetitive 480* calls to hcs_$make_entry */ 481 482 expander_cache: 483 procedure (); /* this entry not used */ 484 485 dcl a_expander_index parameter fixed bin; 486 dcl a_expander_entry parameter variable entry (ptr, ptr, ptr, fixed bin, char (*) varying, fixed bin (35)); 487 488 expander_cache$put: /* entry to save the entry of an expander procedure */ 489 entry (a_expander_index, a_expander_entry); 490 491 if a_expander_index < 1 | a_expander_index > dimension (expander_am, 1) 492 then ; /* no place to put it */ 493 else do; 494 substr (expanders_known, a_expander_index, 1) = "1"b; 495 expander_am (a_expander_index) = a_expander_entry; 496 end; 497 498 return; 499 500 501 expander_cache$get: /* entry to retrieve the entry of an expander procedure */ 502 entry (a_expander_index, a_expander_entry) returns (bit (1) aligned); 503 504 if a_expander_index < 1 | a_expander_index > dimension (expander_am, 1) 505 then return ("0"b); /* no place it could be */ 506 507 if substr (expanders_known, a_expander_index, 1) 508 then do; 509 a_expander_entry = expander_am (a_expander_index); 510 return ("1"b); 511 end; 512 else return ("0"b); 513 514 end expander_cache; 515 1 1 /* BEGIN INCLUDE FILE ... log_message.incl.pl1 ... 84-04-25 ... W. Olin Sibert */ 1 2 1 3 declare 1 log_message_header aligned based, /* Items marked "(SET)" are set by $create_message */ 1 4 2 sentinel bit (36) aligned, /* Proper value declared in log_segment.incl.pl1 */ 1 5 2 sequence fixed bin (35), /* Sequence number for this message (SET) */ 1 6 2 severity fixed bin (8) unaligned, /* Severity of message */ 1 7 2 data_class_lth fixed bin (9) unaligned unsigned, /* Length of data class-- 0 to 16 (SET) */ 1 8 2 time fixed bin (53) unaligned, /* Time message originated */ 1 9 2 text_lth fixed bin (17) unaligned, /* Length of message text. Must be nonzero (SET) */ 1 10 2 data_lth fixed bin (17) unaligned, /* Length of binary data. May be zero (SET) */ 1 11 2 process_id bit (36) aligned; /* Process id of process writing message */ 1 12 1 13 declare 1 log_message aligned based (log_message_ptr), 1 14 2 header aligned like log_message_header, 1 15 2 text char (log_message_text_lth refer (log_message.text_lth)) unaligned, 1 16 2 data_class char (log_message_data_class_lth refer (log_message.data_class_lth)) unaligned, 1 17 2 data dim (log_message_data_lth refer (log_message.data_lth)) bit (36) aligned; 1 18 1 19 declare log_message_ptr pointer; 1 20 declare log_message_text_lth fixed bin; 1 21 declare log_message_data_class_lth fixed bin; 1 22 declare log_message_data_lth fixed bin; 1 23 1 24 /* END INCLUDE FILE ... log_message.incl.pl1 */ 516 517 2 1 /* BEGIN include file access_audit_bin_header.incl.pl1 */ 2 2 2 3 /* format: style4 */ 2 4 2 5 /* NOTE: All changes must also be done to access_audit_bin_header.incl.alm */ 2 6 2 7 /* 85-01-18 E. Swenson - renamed to access_audit_bin_header.incl.pl1 */ 2 8 /* 85-01-17 E. Swenson - restructured, added session_uid, changed 2 9* min and max authorization to authorization range. */ 2 10 /* 85-01-07 EJ Sharpe - added min_authorization, cleanup */ 2 11 /* 84-11-15 EJ Sharpe - added event_flags word */ 2 12 /* 84-11-06 EJ Sharpe - added unaligned attr to version and proxy_flag */ 2 13 /* 84-10-24 EJ Sharpe - added the constants */ 2 14 /* 84-09-04 BIM - created */ 2 15 2 16 declare audit_record_ptr pointer; 2 17 2 18 dcl 1 audit_record_header aligned based (audit_record_ptr), 2 19 2 header aligned like arh_header_, 2 20 2 subject aligned like arh_user_info_; 2 21 2 22 dcl 1 audit_record_header_proxy aligned based (audit_record_ptr), 2 23 2 header aligned like arh_header_, 2 24 2 subjects (2) aligned like arh_user_info_; 2 25 2 26 dcl 1 arh_header_ aligned based, 2 27 2 type fixed bin (9) unsigned unaligned, 2 28 2 version fixed bin (9) unsigned unaligned, 2 29 2 flags unaligned, 2 30 3 ( 2 31 subject_is_process, /* binary data in subject is valid */ 2 32 object_is_valid /* There is an object */ 2 33 ) bit (1) unaligned, 2 34 3 pad bit (16) unaligned, 2 35 2 operation_code bit (36) aligned, /* like access_audit_encoded_op */ 2 36 2 event_flags bit (36) aligned, /* like access_audit_eventflags */ 2 37 2 session_uid fixed bin (35); /* uid for the login session */ 2 38 2 39 dcl 1 arh_user_info_ aligned based, 2 40 2 person char (22) unaligned, /* see anonymous bit */ 2 41 2 project char (9) unaligned, /* blank for nologin w/out proj */ 2 42 2 tag char (1) unaligned, 2 43 2 ring fixed bin (3) uns unaligned, 2 44 2 anonymous bit (1) unaligned, 2 45 2 pad3 bit (32) unaligned, 2 46 2 process_id bit (36) aligned, 2 47 2 authorization bit (72) aligned, 2 48 2 authorization_range (2) bit (72) aligned; 2 49 2 50 dcl ARH_TYPE_PROXY fixed bin init (2) 2 51 static options (constant); 2 52 dcl ARH_TYPE_NO_PROXY fixed bin init (1) 2 53 static options (constant); 2 54 dcl ACCESS_AUDIT_HEADER_VERSION_3 fixed bin (9) unsigned 2 55 init (3) static options (constant); 2 56 2 57 /* End include file access_audit_bin_header.incl.pl1 */ 518 519 3 1 /* begin include file - access_audit_binary_def */ 3 2 3 3 /* 1985-02-26 EJ Sharpe: added rcp object definition */ 3 4 /* 1985-01-25 E. Swenson: added pnt definition */ 3 5 /* 1985-01-22 EJ Sharpe: created */ 3 6 3 7 /**** 3 8* Each access audit log message has binary data including 3 9* the audit record header and optionally some extended 3 10* binary information. The first 9 bits (fixed bin (9) uns unal) 3 11* if the extended binary defines the type of the data 3 12* and, thus, what structure may be used to interpret it. 3 13* 3 14* This include file is a registry of the extended binary 3 15* type values. 3 16*****/ 3 17 3 18 dcl ( 3 19 /*type identifier*/ /*type*/ /*include where defined*/ 3 20 3 21 AAB_ss_object init (1), /* access_audit_ssobj_info.incl.pl1 */ 3 22 AAB_ss_link init (2), /* access_audit_ssobj_info.incl.pl1 */ 3 23 AAB_ia_int_dmn init (3), /* as_audit_structures.incl.pl1 */ 3 24 AAB_ia_abs init (4), /* as_audit_structures.incl.pl1 */ 3 25 AAB_ia_abs_proxy init (5), /* as_audit_structures.incl.pl1 */ 3 26 AAB_channel init (6), /* as_audit_structures.incl.pl1 */ 3 27 AAB_dial_service init (7), /* as_audit_structures.incl.pl1 */ 3 28 AAB_pnt_entry init (8), /* access_audit_pnt_info.incl.pl1 */ 3 29 AAB_rcp_object init (9), /* access_audit_rcp_info.incl.pl1 */ 3 30 AAB_mseg_msg init (10) /* access_audit_mseg_info.incl.pl1 */ 3 31 ) fixed bin (9) uns unal static options (constant); 3 32 3 33 /**** 3 34* The following array contains entry name fragments for the 3 35* expander procedure associated with the respective binary 3 36* data type. The actual entry name is generated like: 3 37* 3 38* entryname = "expand_"||audit_binary_expanders(TYPE)||"_audit_info_" 3 39* 3 40* Note that expand_access_audit_msg_.pl1 keeps a cache of 3 41* extended binary expander procedure entries. The cache 3 42* should be enlarged when the following array grows to more 3 43* than 36 entries. 3 44*****/ 3 45 3 46 dcl audit_binary_expanders (10) char (13) varying internal static options (constant) 3 47 init ( "ssobj", /* 1 (first two are internal */ 3 48 "sslnk", /* 2 procedures in expand_access_audit_msg_) */ 3 49 "as_ia", /* 3 (ia_int_dmn) */ 3 50 "as_ia", /* 4 (ia_abs) */ 3 51 "as_ia", /* 5 (ia_abs_proxy) */ 3 52 "channel", /* 6 */ 3 53 "dial_serv", /* 7 */ 3 54 "pnt", /* 8 */ 3 55 "rcp_obj", /* 9 */ 3 56 "mseg_msg" /* 10 */ 3 57 ); 3 58 3 59 /* end include file - access_audit_binary_def.incl.pl1 */ 520 521 4 1 /* begin include file - access_audit_encoded_op.incl.pl1 */ 4 2 4 3 dcl 1 encoded_access_op aligned based, 4 4 2 audit_type unal, 4 5 3 object_type fixed bin (4) uns unal, 4 6 3 access_type fixed bin (2) uns unal, 4 7 2 operation_index fixed bin (12) uns unal, 4 8 2 detailed_operation fixed bin (18) uns unal; 4 9 4 10 /* object_type = Seg, Dir, Rcp, Admin, Special, Other 4 11* access_type = None, Modify_Acl, Modify, Read 4 12* operation_index is the index of this code in 4 13* access_operations_$oper_codes and the index of 4 14* the text descriptor in access_operations_$text_offest_table 4 15* (see access_operations_.incl.pl1) 4 16* detailed_operation is additional info inserted by the 4 17* caller of the subsystem performing the operation 4 18**/ 4 19 4 20 /* end include file - access_audit_encoded_op.incl.pl1 */ 522 523 5 1 /* begin include file - access_audit_eventflags.incl.pl1 */ 5 2 /* NOTE: This include file has an ALM counterpart made with cif. 5 3*Keep it up to date. */ 5 4 5 5 dcl 1 audit_event_flags based aligned, 5 6 2 special_op bit (1) unal, /* special sys operation */ 5 7 2 grant bit (1) unal, /* operation was successful */ 5 8 2 admin_op bit (1) unal, /* administrative operation */ 5 9 2 priv_op bit (1) unal, /* privileged operation */ 5 10 2 cc_1_10 bit (1) unal, /* small covert channel */ 5 11 2 cc_10_100 bit (1) unal, /* moderate covert channel */ 5 12 2 receiver bit (1) unal, /* on receiving end of channel */ 5 13 2 pad bit (29) unal; 5 14 5 15 /* end include file - access_audit_eventflags.incl.pl1 */ 524 525 6 1 /* begin include file - access_audit_ssobj_info.incl.pl1 */ 6 2 6 3 /* Modified 85-01-22 by EJ Sharpe - changed char(8) version */ 6 4 6 5 /* This structure describes the default binary information 6 6* for storage system objects in an audit log message. 6 7* Values for the "type" field are defined in 6 8* access_audit_binary_def.incl.pl1 6 9**/ 6 10 6 11 dcl audit_ssobj_info_ptr pointer; 6 12 6 13 dcl 1 audit_ssobj_info based (audit_ssobj_info_ptr) aligned, 6 14 2 info_type fixed bin (9) uns unal, /* AAB_ss_object */ 6 15 2 version fixed bin (9) uns unal, 6 16 2 pad bit (18) unal, 6 17 2 parent_uid_path (0:15) bit (36) aligned, 6 18 2 entry_uid bit (36), 6 19 2 dtem bit (36), 6 20 2 raw_mode bit (36), 6 21 2 ex_mode bit (36), 6 22 2 ring_brackets (3) bit (3) unal, 6 23 2 ex_ring_brackets (3) bit (3) unal, 6 24 2 flags unal, 6 25 3 ( 6 26 dirsw, 6 27 per_process_sw, 6 28 safety_sw, 6 29 multiple_class, 6 30 audit_flag, 6 31 security_oosw, 6 32 entrypt_sw, 6 33 master_dir 6 34 ) bit (1) unal, 6 35 3 pad bit (10) unal, 6 36 2 access_class bit (72); /* double word aligned */ 6 37 6 38 6 39 dcl audit_ssobj_info_version fixed bin (9) uns unal init (1) 6 40 static options (constant); 6 41 6 42 /* slightly shorter info for links, first six components are same */ 6 43 6 44 dcl audit_link_info_ptr pointer; 6 45 6 46 dcl 1 audit_link_info based (audit_link_info_ptr) aligned, 6 47 2 info_type fixed bin (9) uns unal, /* AAB_ss_link */ 6 48 2 version fixed bin (9) uns unal, 6 49 2 pad bit (18) unal, 6 50 2 parent_uid_path (0:15) bit (36) aligned, 6 51 2 entry_uid bit (36), 6 52 2 dtem bit (36); 6 53 6 54 dcl audit_link_info_version fixed bin (9) uns unal init (1) 6 55 static options (constant); 6 56 6 57 /* end include file - access_audit_ssobj_info.incl.pl1 */ 526 527 7 1 /* begin include file - access_audit_names.incl.pl1 */ 7 2 7 3 /* Modified 84-11-19 by EJ Sharpe to add "None" as a level name */ 7 4 /* Modified 84-11-30 by EJ Sharpe to split into Long and Short format arrays */ 7 5 7 6 /* The order of the names in these arrays must be the same as the 7 7*ordering of the respective items in the audit_flags structure in 7 8*access_audit_flags.incl.pl1 */ 7 9 7 10 dcl Long_Object_Names (6) char (32) int static options (constant) 7 11 init ( 7 12 "File_System_Object", 7 13 "File_System_Attribute", 7 14 "RCP_Object", 7 15 "Administrative_Object", 7 16 "Special_Object", 7 17 "Other_Object"); 7 18 7 19 dcl Short_Object_Names (6) char (8) int static options (constant) 7 20 init ( 7 21 "fsobj", 7 22 "fsattr", 7 23 "rcp", 7 24 "admin", 7 25 "special", 7 26 "other"); 7 27 7 28 dcl Long_Level_Names (0:3) char (16) int static options (constant) 7 29 init ( 7 30 "No_Audit", 7 31 "Modify_Access", 7 32 "Modify", 7 33 "Read"); 7 34 7 35 dcl Short_Level_Names (0:3) char (2) int static options (constant) 7 36 init ( 7 37 "N", 7 38 "MA", 7 39 "M", 7 40 "R"); 7 41 7 42 dcl Long_Flag_Names (5) char (32) int static options (constant) 7 43 init ( 7 44 "Administrative_Operation", 7 45 "Privileged_Operation", 7 46 "ACV/IPR_Fault", 7 47 "Small_Covert_Channel", /* 1-10 bps */ 7 48 "Moderate_Covert_Channel"); /* 10-100 bps */ 7 49 7 50 dcl Short_Flag_Names (5) char (12) int static options (constant) 7 51 init ( 7 52 "admin_op", 7 53 "priv_op", 7 54 "fault", 7 55 "small_cc", 7 56 "moderate_cc"); 7 57 7 58 /* The order of the names in the following arrays must be the same 7 59*as the ordering of the respective itmes in the event_flags structure 7 60*in access_audit_eventflags.incl.pl1 */ 7 61 7 62 dcl Long_Event_Names (7) char (32) int static options (constant) 7 63 init ( 7 64 "Special_Operation", 7 65 "Operation_Granted", 7 66 "Administrative_Operation", 7 67 "Privileged_Operation", 7 68 "Small_Covert_Channel", 7 69 "Moderate_Covert_Channel", 7 70 "Receiver_On_Covert_Channel"); 7 71 7 72 dcl Short_Event_Names (7) char (12) int static options (constant) 7 73 init ( 7 74 "special_op", 7 75 "granted", 7 76 "admin_op", 7 77 "priv_op", 7 78 "small_cc", 7 79 "moderate_cc", 7 80 "receiver"); 7 81 7 82 /* end include files - access_audit_names.incl.pl1 */ 528 529 530 end expand_access_audit_msg_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/13/85 1536.0 expand_access_audit_msg_.pl1 >spec>on>mseg>expand_access_audit_msg_.pl1 516 1 01/21/85 0912.2 log_message.incl.pl1 >ldd>include>log_message.incl.pl1 518 2 02/12/85 1429.5 access_audit_bin_header.incl.pl1 >ldd>include>access_audit_bin_header.incl.pl1 520 3 05/06/85 1121.6 access_audit_binary_def.incl.pl1 >spec>on>mseg>access_audit_binary_def.incl.pl1 522 4 01/30/85 1523.9 access_audit_encoded_op.incl.pl1 >ldd>include>access_audit_encoded_op.incl.pl1 524 5 01/30/85 1523.9 access_audit_eventflags.incl.pl1 >ldd>include>access_audit_eventflags.incl.pl1 526 6 02/12/85 1429.5 access_audit_ssobj_info.incl.pl1 >ldd>include>access_audit_ssobj_info.incl.pl1 528 7 01/30/85 1523.9 access_audit_names.incl.pl1 >ldd>include>access_audit_names.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. AAB_ss_link constant fixed bin(9,0) initial unsigned unaligned dcl 3-18 ref 216 AAB_ss_object constant fixed bin(9,0) initial unsigned unaligned dcl 3-18 ref 214 ACCESS_AUDIT_HEADER_VERSION_3 constant fixed bin(9,0) initial unsigned dcl 2-54 ref 117 142 207 Long_Level_Names 000000 constant char(16) initial array unaligned dcl 7-28 ref 140 Long_Object_Names 000020 constant char(32) initial array unaligned dcl 7-10 ref 134 136 P_code parameter fixed bin(35,0) dcl 32 ref 87 102 P_expand_mode_ptr parameter pointer dcl 30 set ref 87 102 233* 268* P_expansion parameter varying char dcl 31 set ref 87 102 145* 145 167* 167 174* 174 233* 241* 241 242* 268* 276* 276 277* 304* 304 311* 311 322* 322 330* 330 355* 355 420* 420 427* 427 438* 438 448* 448 469* 469 P_log_message_format_ptr parameter pointer dcl 27 set ref 87 102 233* 242* 268* 277* P_log_message_ptr parameter pointer dcl 29 ref 87 90 102 105 a_expander_entry parameter entry variable dcl 486 set ref 488 495 501 509* a_expander_index parameter fixed bin(17,0) dcl 485 ref 488 491 491 494 495 501 504 504 507 509 a_info_ptr parameter pointer dcl 369 in procedure "expand_old_ssobj" set ref 366 411 450* 450 456 471* 471 a_info_ptr parameter pointer dcl 342 in procedure "expand_link" set ref 339 357* 357 a_info_ptr parameter pointer dcl 292 in procedure "expand_ssobj" set ref 289 295 332* 332 a_info_size parameter fixed bin(17,0) dcl 370 in procedure "expand_old_ssobj" set ref 366 451* 451 456 472* 472 a_info_size parameter fixed bin(17,0) dcl 293 in procedure "expand_ssobj" set ref 289 333* 333 a_info_size parameter fixed bin(17,0) dcl 343 in procedure "expand_link" set ref 339 358* 358 access_class 26 based bit(72) level 2 in structure "old_audit_ssobj_info" dcl 376 in procedure "expand_old_ssobj" set ref 422* 422* access_class 26 based bit(72) level 2 in structure "audit_ssobj_info" dcl 6-13 in procedure "expand_access_audit_msg_" set ref 306* 306* access_type 0(04) 000725 automatic fixed bin(2,0) level 3 packed unsigned unaligned dcl 51 set ref 138 140 addr builtin function dcl 83 ref 92 107 299 299 349 349 415 415 463 463 addrel builtin function dcl 83 ref 196 200 332 357 450 471 anonymous 14(03) based bit(1) array level 3 packed unaligned dcl 2-22 set ref 149* arh_header_ based structure level 1 dcl 2-26 arh_user_info_ based structure level 1 dcl 2-39 audit_binary_expanders 000100 constant varying char(13) initial array dcl 3-46 ref 210 210 220 audit_flag 25(22) based bit(1) level 3 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" ref 324 audit_flag 30(22) based bit(1) level 3 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" ref 440 audit_link_info based structure level 1 dcl 6-46 set ref 346 357 358 audit_link_info_ptr 000756 automatic pointer dcl 6-44 set ref 345* 346 349 349 357 358 audit_record_header based structure level 1 dcl 2-18 ref 126 195 196 audit_record_header_proxy based structure level 1 dcl 2-22 set ref 128 199 200 audit_record_ptr 000752 automatic pointer dcl 2-16 set ref 92* 107* 113 117 117 120 120 120 126 128 131 142 149 149 149 149 149 149 149 149 149 149 149 149 149 149 149 195 196 199 200 207 audit_record_size 000105 automatic fixed bin(17,0) dcl 42 set ref 93* 108* 116 audit_ssobj_info based structure level 1 dcl 6-13 set ref 296 332 333 audit_ssobj_info_ptr 000754 automatic pointer dcl 6-11 set ref 295* 296 299 299 301 301 301 306 306 306 306 306 306 306 306 306 306 313 313 313 313 313 313 313 313 313 313 313 313 324 324 324 324 324 324 324 324 332 333 351 351 351 audit_type 000725 automatic structure level 2 packed unaligned dcl 51 authorization 16 based bit(72) array level 3 dcl 2-22 set ref 149* 149* authorization_range 20 based bit(72) array level 3 dcl 2-22 set ref 149* 149* 149* 149* char8 based char(8) unaligned dcl 43 ref 253 255 258 code 000726 automatic fixed bin(35,0) dcl 52 set ref 226* 227 233* 235 263* 264 268* 270 cv_fstime_ 000242 constant entry external dcl 76 ref 301 301 351 351 417 417 465 465 data based bit(36) array level 2 dcl 1-13 set ref 92 93 107 108 data_class_lth 2(09) based fixed bin(9,0) level 3 packed unsigned unaligned dcl 1-13 ref 92 93 107 108 data_lth 4(18) based fixed bin(17,0) level 3 packed unaligned dcl 1-13 ref 93 108 date_time_$format 000240 constant entry external dcl 75 ref 301 351 417 465 detailed_operation 0(18) 000725 automatic fixed bin(18,0) level 2 packed unsigned unaligned dcl 51 set ref 171 171* dimension builtin function dcl 83 ref 93 108 491 504 dirsw 25(18) based bit(1) level 3 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" ref 324 dirsw 30(18) based bit(1) level 3 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" ref 440 display_access_class_ 000244 constant entry external dcl 77 ref 149 149 149 149 149 149 306 306 422 422 dtem 22 based bit(36) level 2 in structure "audit_ssobj_info" dcl 6-13 in procedure "expand_access_audit_msg_" set ref 301* 301* 351* 351* dtem 23 based bit(36) level 2 in structure "old_audit_ssobj_info" dcl 376 in procedure "expand_old_ssobj" set ref 417* 417* 465* 465* encoded_access_op based structure level 1 dcl 4-3 entry_name 000714 automatic char(33) unaligned dcl 50 set ref 205* 220* 221 226* 226* 258* 259 263* 263* entry_uid 21 based bit(36) level 2 in structure "audit_ssobj_info" dcl 6-13 in procedure "expand_access_audit_msg_" set ref 301* 351* entry_uid 22 based bit(36) level 2 in structure "old_audit_ssobj_info" dcl 376 in procedure "expand_old_ssobj" set ref 417* 465* entrypt_sw 30(24) based bit(1) level 3 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" ref 440 entrypt_sw 25(24) based bit(1) level 3 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" ref 324 ex_mode 24 based bit(36) level 2 in structure "audit_ssobj_info" dcl 6-13 in procedure "expand_access_audit_msg_" ref 313 313 313 313 313 313 313 313 ex_mode 25 based bit(36) level 2 in structure "old_audit_ssobj_info" dcl 376 in procedure "expand_old_ssobj" ref 429 429 429 429 429 429 429 429 ex_ring_brackets 25(09) based bit(3) array level 2 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" set ref 313 313 313 313* ex_ring_brackets 30(09) based bit(3) array level 2 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" set ref 429 429 429 429* expand_log_message_$append_octal 000232 constant entry external dcl 71 ref 242 277 expander_am 000012 internal static entry variable array dcl 65 set ref 491 495* 504 509 expander_proc 000710 automatic entry variable dcl 49 set ref 224* 226* 229* 233 263* 268 expanders_known 000010 internal static bit(36) initial unaligned dcl 64 set ref 494* 507 fb9unsunal based fixed bin(9,0) unsigned unaligned dcl 44 ref 209 flags 25(18) based structure level 2 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" flags 30(18) based structure level 2 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" hbound builtin function dcl 83 ref 134 210 hcs_$make_entry 000246 constant entry external dcl 78 ref 226 263 header based structure level 2 in structure "audit_record_header_proxy" dcl 2-22 in procedure "expand_access_audit_msg_" header based structure level 2 in structure "log_message" dcl 1-13 in procedure "expand_access_audit_msg_" info_ptr 000100 automatic pointer dcl 37 set ref 113* 196* 196 200* 200 209 214* 216* 233* 242* 253 253* 255 255* 258 268* 277* 345 459 info_size 000102 automatic fixed bin(17,0) dcl 38 set ref 116* 126 128 195* 195 199* 199 203 214* 216* 232 233* 235 238* 242* 244* 249 253* 255* 267 268* 270 273* 277* 279* 296 346 412 460 info_type 000103 automatic fixed bin(9,0) unsigned dcl 39 set ref 209* 210 210 214 216 220 224 229 ioa_$rsnnl 000234 constant entry external dcl 73 ref 144 149 171 238 273 301 306 313 321 324 351 417 422 429 437 440 465 lbound builtin function dcl 83 ref 210 length builtin function dcl 83 ref 221 259 log_message based structure level 1 dcl 1-13 log_message_header based structure level 1 dcl 1-3 log_message_ptr 000750 automatic pointer dcl 1-19 set ref 90* 92 93 105* 107 108 master_dir 25(25) based bit(1) level 3 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" ref 324 master_dir 30(25) based bit(1) level 3 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" ref 440 multiple_class 25(21) based bit(1) level 3 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" ref 324 multiple_class 30(21) based bit(1) level 3 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" ref 440 n_subjects 000705 automatic fixed bin(17,0) dcl 47 set ref 117* 120* 126 128 148 149 193 null builtin function dcl 83 ref 226 226 263 263 object_type 000725 automatic fixed bin(4,0) level 3 packed unsigned unaligned dcl 51 set ref 132 134 136 object_type_name 000727 automatic char(32) unaligned dcl 53 set ref 132* 134* 136* 171* old_audit_link_info based structure level 1 dcl 405 set ref 460 471 472 old_audit_link_info_ptr 001006 automatic pointer dcl 402 set ref 459* 460 463 463 471 472 old_audit_ssobj_info based structure level 1 dcl 376 set ref 412 450 451 old_audit_ssobj_info_ptr 001004 automatic pointer dcl 373 set ref 411* 412 415 415 417 417 417 422 422 422 422 422 422 422 422 422 422 429 429 429 429 429 429 429 429 429 429 429 429 440 440 440 440 440 440 440 440 450 451 465 465 465 oper_code 000725 automatic structure level 1 dcl 51 set ref 131* operation_code 1 based bit(36) level 3 dcl 2-22 ref 131 operation_type_name 000737 automatic char(32) unaligned dcl 54 set ref 138* 140* 171* parent 000501 automatic char(528) unaligned dcl 46 set ref 299* 301* 349* 351* 415* 417* 463* 465* parent_uid_path 2 based bit(36) array level 2 in structure "old_audit_ssobj_info" dcl 376 in procedure "expand_old_ssobj" set ref 415 415 parent_uid_path 2 based bit(36) array level 2 in structure "old_audit_link_info" dcl 405 in procedure "expand_old_ssobj" set ref 463 463 parent_uid_path 1 based bit(36) array level 2 in structure "audit_link_info" dcl 6-46 in procedure "expand_access_audit_msg_" set ref 349 349 parent_uid_path 1 based bit(36) array level 2 in structure "audit_ssobj_info" dcl 6-13 in procedure "expand_access_audit_msg_" set ref 299 299 per_process_sw 25(19) based bit(1) level 3 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" ref 324 per_process_sw 30(19) based bit(1) level 3 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" ref 440 person 4 based char(22) array level 3 packed unaligned dcl 2-22 set ref 149* process_id 15 based bit(36) array level 3 dcl 2-22 set ref 149 149* project 11(18) based char(9) array level 3 packed unaligned dcl 2-22 set ref 149* raw_mode 23 based bit(36) level 2 in structure "audit_ssobj_info" dcl 6-13 in procedure "expand_access_audit_msg_" ref 306 306 306 306 306 306 306 raw_mode 24 based bit(36) level 2 in structure "old_audit_ssobj_info" dcl 376 in procedure "expand_old_ssobj" ref 422 422 422 422 422 422 422 ring 14 based fixed bin(3,0) array level 3 packed unsigned unaligned dcl 2-22 set ref 149* ring_brackets 25 based bit(3) array level 2 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" set ref 306* ring_brackets 30 based bit(3) array level 2 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" set ref 422* rtrim builtin function dcl 83 ref 221 258 259 safety_sw 25(20) based bit(1) level 3 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" ref 324 safety_sw 30(20) based bit(1) level 3 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" ref 440 save_info_size 000104 automatic fixed bin(17,0) dcl 40 set ref 232* 235 267* 270 security_oosw 30(23) based bit(1) level 3 in structure "old_audit_ssobj_info" packed unaligned dcl 376 in procedure "expand_old_ssobj" ref 440 security_oosw 25(23) based bit(1) level 3 in structure "audit_ssobj_info" packed unaligned dcl 6-13 in procedure "expand_access_audit_msg_" ref 324 session_uid 3 based fixed bin(35,0) level 3 dcl 2-22 set ref 149 149* size builtin function dcl 83 ref 126 128 195 196 199 200 296 332 333 346 357 358 412 450 451 460 471 472 subject_idx 000706 automatic fixed bin(17,0) dcl 48 set ref 148* 149 149 149 149 149 149 149 149 149 149 149 149 149 149 149* subjects 4 based structure array level 2 dcl 2-22 substr builtin function dcl 83 set ref 306 306 306 306 306 306 306 313 313 313 313 313 313 313 313 422 422 422 422 422 422 422 429 429 429 429 429 429 429 429 494* 507 tag 13(27) based char(1) array level 3 packed unaligned dcl 2-22 set ref 149* temp 000106 automatic varying char(1000) dcl 45 set ref 144* 145 149* 167 171* 174 238* 241 273* 276 301* 304 306* 311 313* 321* 322 324* 330 351* 355 417* 420 422* 427 429* 437* 438 440* 448 465* 469 text_lth 4 based fixed bin(17,0) level 3 packed unaligned dcl 1-13 ref 92 93 107 108 type based fixed bin(9,0) level 3 packed unsigned unaligned dcl 2-22 ref 117 unspec builtin function dcl 83 set ref 131* version 0(09) based fixed bin(9,0) level 3 packed unsigned unaligned dcl 2-22 ref 117 120 120 120 142 207 vpn_cv_uid_path_ 000236 constant entry external dcl 74 ref 299 349 415 463 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. AAB_channel internal static fixed bin(9,0) initial unsigned unaligned dcl 3-18 AAB_dial_service internal static fixed bin(9,0) initial unsigned unaligned dcl 3-18 AAB_ia_abs internal static fixed bin(9,0) initial unsigned unaligned dcl 3-18 AAB_ia_abs_proxy internal static fixed bin(9,0) initial unsigned unaligned dcl 3-18 AAB_ia_int_dmn internal static fixed bin(9,0) initial unsigned unaligned dcl 3-18 AAB_mseg_msg internal static fixed bin(9,0) initial unsigned unaligned dcl 3-18 AAB_pnt_entry internal static fixed bin(9,0) initial unsigned unaligned dcl 3-18 AAB_rcp_object internal static fixed bin(9,0) initial unsigned unaligned dcl 3-18 ARH_TYPE_NO_PROXY internal static fixed bin(17,0) initial dcl 2-52 ARH_TYPE_PROXY internal static fixed bin(17,0) initial dcl 2-50 Long_Event_Names internal static char(32) initial array unaligned dcl 7-62 Long_Flag_Names internal static char(32) initial array unaligned dcl 7-42 Short_Event_Names internal static char(12) initial array unaligned dcl 7-72 Short_Flag_Names internal static char(12) initial array unaligned dcl 7-50 Short_Level_Names internal static char(2) initial array unaligned dcl 7-35 Short_Object_Names internal static char(8) initial array unaligned dcl 7-19 audit_event_flags based structure level 1 dcl 5-5 audit_link_info_version internal static fixed bin(9,0) initial unsigned unaligned dcl 6-54 audit_ssobj_info_version internal static fixed bin(9,0) initial unsigned unaligned dcl 6-39 log_message_data_class_lth automatic fixed bin(17,0) dcl 1-21 log_message_data_lth automatic fixed bin(17,0) dcl 1-22 log_message_text_lth automatic fixed bin(17,0) dcl 1-20 NAMES DECLARED BY EXPLICIT CONTEXT. ACCESS_AUDIT_COMMON 000627 constant label dcl 113 ref 95 110 expand_access_audit_msg_ 000511 constant entry external dcl 9 expand_access_audit_msg_$format 000524 constant entry external dcl 87 expand_access_audit_msg_$syserr 000566 constant entry external dcl 102 expand_link 002754 constant entry internal dcl 339 ref 216 expand_old_link 003764 constant entry internal dcl 456 ref 255 expand_old_ssobj 003144 constant entry internal dcl 366 ref 253 expand_ssobj 002134 constant entry internal dcl 289 ref 214 expander_cache 004154 constant entry internal dcl 482 expander_cache$get 004214 constant entry internal dcl 501 ref 224 expander_cache$put 004160 constant entry internal dcl 488 ref 229 no_expander 001550 constant label dcl 238 ref 221 227 no_old_expander 002037 constant label dcl 273 ref 259 264 old_unknown_data 002037 constant label dcl 273 ref 249 unknown_data 001550 constant label dcl 238 ref 120 126 128 210 296 346 412 460 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4476 4746 4316 4506 Length 5334 4316 250 352 160 222 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME expand_access_audit_msg_ 1192 external procedure is an external procedure. expand_ssobj internal procedure shares stack frame of external procedure expand_access_audit_msg_. expand_link internal procedure shares stack frame of external procedure expand_access_audit_msg_. expand_old_ssobj internal procedure shares stack frame of external procedure expand_access_audit_msg_. expander_cache internal procedure shares stack frame of external procedure expand_access_audit_msg_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 expanders_known expand_access_audit_msg_ 000012 expander_am expand_access_audit_msg_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME expand_access_audit_msg_ 000100 info_ptr expand_access_audit_msg_ 000102 info_size expand_access_audit_msg_ 000103 info_type expand_access_audit_msg_ 000104 save_info_size expand_access_audit_msg_ 000105 audit_record_size expand_access_audit_msg_ 000106 temp expand_access_audit_msg_ 000501 parent expand_access_audit_msg_ 000705 n_subjects expand_access_audit_msg_ 000706 subject_idx expand_access_audit_msg_ 000710 expander_proc expand_access_audit_msg_ 000714 entry_name expand_access_audit_msg_ 000725 oper_code expand_access_audit_msg_ 000726 code expand_access_audit_msg_ 000727 object_type_name expand_access_audit_msg_ 000737 operation_type_name expand_access_audit_msg_ 000750 log_message_ptr expand_access_audit_msg_ 000752 audit_record_ptr expand_access_audit_msg_ 000754 audit_ssobj_info_ptr expand_access_audit_msg_ 000756 audit_link_info_ptr expand_access_audit_msg_ 001004 old_audit_ssobj_info_ptr expand_old_ssobj 001006 old_audit_link_info_ptr expand_old_ssobj THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_cs cat_realloc_cs call_var_desc call_ext_out_desc call_ext_out return signal shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. cv_fstime_ date_time_$format display_access_class_ expand_log_message_$append_octal hcs_$make_entry ioa_$rsnnl vpn_cv_uid_path_ NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 9 000510 87 000516 90 000537 92 000543 93 000557 95 000563 102 000564 105 000601 107 000605 108 000621 110 000626 113 000627 116 000630 117 000631 120 000643 126 000650 128 000655 131 000663 132 000665 134 000675 136 000703 138 000710 140 000721 142 000726 144 000731 145 000756 148 000772 149 001001 167 001203 168 001217 171 001221 174 001273 193 001307 195 001312 196 001314 197 001317 199 001320 200 001322 203 001325 205 001330 207 001333 209 001340 210 001347 214 001353 216 001362 220 001371 221 001423 224 001437 226 001446 227 001477 229 001501 232 001505 233 001507 235 001543 238 001550 241 001601 242 001615 244 001642 247 001643 249 001644 253 001647 255 001661 258 001666 259 001725 263 001741 264 001772 267 001774 268 001776 270 002032 273 002037 276 002070 277 002104 279 002131 284 002132 286 002133 289 002134 295 002136 296 002141 299 002144 301 002170 304 002300 306 002314 311 002420 313 002434 321 002541 322 002565 324 002601 330 002730 332 002744 333 002751 335 002753 339 002754 345 002756 346 002760 349 002763 351 003010 355 003120 357 003134 358 003141 360 003143 366 003144 411 003146 412 003151 415 003154 417 003200 420 003310 422 003324 427 003430 429 003444 437 003551 438 003575 440 003611 448 003740 450 003754 451 003761 453 003763 456 003764 459 003766 460 003770 463 003773 465 004020 469 004130 471 004144 472 004151 474 004153 482 004154 488 004157 491 004164 494 004173 495 004177 498 004205 501 004214 504 004217 507 004235 509 004242 510 004250 512 004261 ----------------------------------------------------------- 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