COMPILATION LISTING OF SEGMENT uc_proc_term_handler_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1025.3 mst Wed Options: optimize map 1 /****^ ******************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* ******************************************** */ 6 7 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 8 /* */ 9 /* This module is part of the Multics Network Architecture (MNA) version of */ 10 /* user control. MNA user control serves users coming into Multics via */ 11 /* separate networks (eg, the Distributed Systems Architecture (DSA) */ 12 /* network. MNA user control is not used for logins through the Multics */ 13 /* Communications System (MCS). A separate MCS user control system serves */ 14 /* MCS users. */ 15 /* */ 16 /* To Be Supplied: */ 17 /* 1) Brief module description. See MDD010 or MTBs 751 and 752 for details */ 18 /* about this module, and its relationship to modules in the MCS user */ 19 /* control system. */ 20 /* 2) Operator error message documentation. This program calls */ 21 /* sys_log_$general but does not contain the required descriptions of */ 22 /* these messages. This omission was waived for initial installation */ 23 /* of the subsystem by the auditor, security coordinator, and by MDC */ 24 /* management. */ 25 /* */ 26 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 27 28 /****^ HISTORY COMMENTS: 29* 1) change(85-08-01,Swenson), approve(87-07-14,MCR7737), 30* audit(87-05-18,GDixon), install(87-08-04,MR12.1-1055): 31* Initially coded. 32* 2) change(86-04-09,Herbst), approve(87-07-14,MCR7737), 33* audit(87-07-30,Brunelle), install(87-08-04,MR12.1-1055): 34* Changed Disconnect_Process proc to set ute.disconnection_rel_minutes. 35* 3) change(87-03-03,Brunelle), approve(87-07-14,MCR7737), 36* audit(87-07-30,GDixon), install(87-08-04,MR12.1-1055): 37* Added code to handle inacrcvd (inactivity msg received and processed) 38* signal (signal type 12). This reschedules the bump timer scheduled for 39* the user to installation_parms.warning_time from the receipt of the 40* signal by calling asu_$reschedule_bump_timer. 41* 4) change(87-04-27,GDixon), approve(87-07-14,MCR7737), 42* audit(87-07-30,Brunelle), install(87-08-04,MR12.1-1055): 43* Upgraded for change to answer_table.incl.pl1 and user_table_entry.incl.pl1 44* 5) change(87-05-17,GDixon), approve(87-07-14,MCR7737), 45* audit(87-07-30,Brunelle), install(87-08-04,MR12.1-1055): 46* A) Use automatic response structures rather than based storage. 47* B) Use constants to set/test ute.preempted. 48* C) Use sys_log_$general to report errors. 49* D) Allow operator requests to bump/detach a logged in user with no 50* process. 51* E) Use new uc_send_ls_response_ calling sequence. 52* 6) change(87-05-18,Parisek), approve(87-07-14,MCR7690), 53* audit(87-07-30,Brunelle), install(87-08-04,MR12.1-1055): 54* Added call to remove MC tty when bumping a logged in user with no process 55* (User logged in as operator). 56* 7) change(87-05-18,Brunelle), approve(87-07-14,MCR7737), 57* audit(87-07-30,GDixon), install(87-08-04,MR12.1-1055): 58* Added call to set anstbl.current_time which was forgotten. 59* 8) change(87-05-29,GDixon), approve(87-07-14,MCR7737), 60* audit(87-07-30,Brunelle), install(87-08-04,MR12.1-1055): 61* A) When bumping a logged-in, no-process UTE, hold the user connection 62* rather than dropping it. 63* 9) change(87-06-02,GDixon), approve(87-07-14,MCR7737), 64* audit(87-07-30,Brunelle), install(87-08-04,MR12.1-1055): 65* Correct error in ioa_ control string. 66* 10) change(87-06-09,GDixon), approve(87-07-14,MCR7737), 67* audit(87-07-30,Brunelle), install(87-08-04,MR12.1-1055): 68* A) Include process ID and group ID in 69* login_server_termination_response. For dialed terminals having a 70* UTE, the process ID of the target process has been placed in their 71* UTE by uc_ls_dial_request_ or mc_commands_$mc_login. 72* 11) change(87-07-14,Parisek), approve(87-07-14,MCR7644), 73* audit(87-07-30,Brunelle), install(87-08-04,MR12.1-1055): 74* A) Added code for handling a user "disconnect" command. 75* 12) change(87-07-15,GDixon), approve(87-07-15,MCR7737), 76* audit(87-07-30,Brunelle), install(87-08-04,MR12.1-1055): 77* A) Audit process terminations via as_access_audit_$process. 78* 13) change(87-07-30,GDixon), approve(87-07-30,MCR7737), 79* audit(87-07-30,Brunelle), install(87-08-04,MR12.1-1055): 80* A) Correct arguments in several error messages. 81* B) When user unbumped too late, give him a new process just as dialup_ 82* does. 83* END HISTORY COMMENTS */ 84 85 /* format: style4,indattr,insnl */ 86 87 uc_proc_term_handler_: 88 procedure (P_event_call_info_ptr); 89 90 /* Parameters */ 91 92 dcl P_event_call_info_ptr ptr parameter; 93 94 /* Automatic */ 95 96 dcl code fixed bin (35) automatic; 97 dcl destroy_index fixed bin (17) automatic; 98 dcl ip ptr automatic; 99 dcl metering_enabled bit (1) aligned automatic; 100 dcl pdtep ptr automatic; 101 dcl saved_destroy_flag fixed bin automatic; 102 dcl signal_left_half char (4) automatic; 103 dcl signal_string char (8) automatic; 104 dcl wakeup_from fixed bin automatic; 105 dcl whoptr ptr automatic; 106 107 /* Automatic Structures */ 108 109 dcl 1 auto_new_proc_response 110 aligned automatic like login_server_new_proc_response; 111 dcl 1 auto_process_response 112 aligned automatic like login_server_process_response.fixed_part; 113 dcl 1 auto_termination_response 114 aligned automatic like login_server_termination_response; 115 dcl 1 new_proc_auth structure aligned automatic, 116 2 pad char (2) unaligned, 117 2 authorization bit (54) unaligned; 118 dcl 1 signal_term_code structure aligned automatic, 119 2 pad char (4) unaligned, 120 2 code fixed bin (35) unaligned; 121 122 123 /* Based */ 124 125 dcl stopstop_msg fixed bin (71) based (addr (stopstop)); 126 dcl termstop_msg fixed bin (71) based (addr (termstop)); 127 128 /* Entries */ 129 130 dcl act_ctl_$activity_unbump 131 entry (ptr, fixed bin (35)); 132 dcl act_ctl_$close_account entry (ptr); 133 dcl act_ctl_$dp entry (ptr); 134 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 135 dcl aim_check_$in_range entry (bit (72) aligned, (2) bit (72) aligned) returns (bit (1) aligned); 136 dcl as_access_audit_$logout 137 entry (ptr, char (*)); 138 dcl as_access_audit_$process 139 entry (ptr, fixed bin, char (*)); 140 dcl as_any_other_handler_$no_cleanup 141 entry (char (*), label); 142 dcl as_meter_$enter entry (fixed bin); 143 dcl as_meter_$exit entry (fixed bin); 144 dcl asu_$reschedule_bump_timer 145 entry (ptr, fixed bin); 146 dcl asu_$send_term_signal entry (ptr, fixed bin) returns (bit (1) aligned); 147 dcl asu_$suspend_process entry (ptr); 148 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 149 dcl dpg_ entry (ptr, char (*)); 150 dcl dpg_$finish entry (ptr); 151 dcl get_process_id_ entry () returns (bit (36)); 152 dcl hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 153 dcl mc_commands_$remove_tty 154 entry (char (*), bit (1) aligned, fixed bin (35)); 155 dcl send_mail_$access_class 156 entry (char (*), char (*), ptr, bit (72) aligned, fixed bin (35)); 157 dcl timer_manager_$reset_alarm_wakeup 158 entry (fixed bin (71)); 159 dcl uc_create_process_ entry (ptr, fixed bin (35)); 160 dcl uc_logout_ entry (ptr, char (*)); 161 dcl uc_send_ls_response_ entry (ptr, fixed bin (18), bit (36) aligned, 162 bit (72) aligned, fixed bin (71), ptr, 163 char (32) aligned, fixed bin (35), fixed bin (35)); 164 dcl user_table_mgr_$free 165 entry (ptr); 166 167 /* External */ 168 169 dcl ( 170 as_error_table_$activity_unbump, 171 as_error_table_$automatic_logout, 172 as_error_table_$bump_cancelled, 173 as_error_table_$disc_hd_msg, 174 as_error_table_$illegal_new_proc, 175 as_error_table_$illegal_signal, 176 as_error_table_$init_err, 177 as_error_table_$no_disc_hd, 178 as_error_table_$no_init_proc, 179 as_error_table_$no_io_attach, 180 as_error_table_$no_logout_hold, 181 as_error_table_$no_perm_disc, 182 as_error_table_$no_signal, 183 as_error_table_$shutdown, 184 as_error_table_$term_by_operator 185 ) 186 fixed bin (35) external static; 187 dcl ( 188 error_table_$fatal_error, 189 error_table_$messages_deferred, 190 error_table_$messages_off, 191 error_table_$null_info_ptr 192 ) 193 fixed bin (35) ext static; 194 195 /* Constant */ 196 197 dcl ( 198 FALSE initial ("0"b), 199 TRUE initial ("1"b) 200 ) bit (1) aligned internal static options (constant); 201 202 dcl MAX_USER_SIGNALS fixed bin int static options (constant) init (19); 203 204 205 dcl ME char (21) initial ("uc_proc_term_handler_") internal static options (constant); 206 207 dcl ( 208 UNKNOWN_SOURCE init (0), 209 RING_0 init (1), 210 USER init (2), 211 USER_CONTROL init (3) 212 ) fixed bin int static options (constant); 213 214 dcl USEC_PER_MINUTE fixed bin (35) int static options (constant) init (60000000); 215 dcl USEC_PER_SECOND fixed bin (35) int static options (constant) init (1000000); 216 217 dcl WAKEUP_SOURCE (0:3) char (16) varying int static options (constant) init ( 218 "unknown source", 219 "ring 0", 220 "UTE user", 221 "user control"); 222 223 dcl ( 224 stopstop initial ("stopstop"), 225 termstop initial ("termstop") 226 ) char (8) internal static options (constant); 227 228 /* Conditions */ 229 230 dcl any_other condition; 231 dcl cleanup condition; 232 233 /* Builtin */ 234 235 dcl (addr, baseno, clock, currentsize, divide, hbound, lbound, length, 236 max, null, rtrim, substr, unspec) 237 builtin; 238 239 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 240 241 242 /* Program */ 243 244 code = 0; 245 event_call_info_ptr = P_event_call_info_ptr; 246 ansp = as_data_$ansp; 247 ip = as_data_$rs_ptrs (0); 248 whoptr = as_data_$whoptr; 249 250 anstbl.current_time = clock (); /* Read Clock */ 251 252 metering_enabled = FALSE; 253 on cleanup 254 call Clean_Up (); 255 256 on any_other 257 call as_any_other_handler_$no_cleanup (ME, RETURN); 258 259 if event_call_info_ptr = null () 260 then 261 call Abort (error_table_$null_info_ptr, 262 "Null event_call_info pointer."); 263 264 /**** TBS: This is not strictly correct, since we're not dialup */ 265 metering_enabled = TRUE; 266 call as_meter_$enter (DIALUP_METER); 267 268 unspec (signal_string) = unspec (event_call_info.message); 269 destroy_index = PT_FPE; /* fatal process error is default */ 270 271 utep = event_call_info.data_ptr; 272 273 /* Ensure ute points to one of our user tables. */ 274 call Validate_UTEp (); 275 276 wakeup_from = UNKNOWN_SOURCE; 277 278 if event_call_info.ring = 0 279 then 280 wakeup_from = RING_0; 281 else if event_call_info.sender = get_process_id_ () 282 then 283 wakeup_from = USER_CONTROL; 284 else if ute.active = NOW_HAS_PROCESS & 285 ute.proc_id = event_call_info.sender 286 then 287 wakeup_from = USER; 288 else 289 call Abort (-1, 290 "UTE (^d, ^p in ^a) received wakeup (^a, ^24.3b) from invalid process (^12.3b).", 291 ute.ute_index, utep, TABLE_NAMES (ute.process_type), 292 signal_string, unspec (signal_string), event_call_info.sender); 293 294 if ute.active = NOW_FREE 295 then 296 call Abort (-1, 297 "Free UTE (^d, ^p in ^a) received wakeup (^a, ^24.3b) from ^a.", 298 ute.ute_index, utep, TABLE_NAMES (ute.process_type), 299 signal_string, unspec (signal_string), 300 WAKEUP_SOURCE (wakeup_from)); 301 302 call Setup_LS_Termination_Response (); 303 304 /**** In the event that the operator tried to bump a user who was logged 305* in with no process, handle this case. Assume that any wakeup 306* sent to the UTE is a "bump" request, since no others make a whole 307* lot of sense, anyway. */ 308 309 if ute.destroy_flag < WAIT_LOGOUT_SIG 310 then 311 if ute.active = NOW_LOGGED_IN then do; 312 call Kill_Login_and_Notify_LS (); 313 end; 314 else call Abort (-1, 315 "UTE (^d, ^p in ^a) wakeup (^a, ^24.3b) from ^a with unexpected destroy_flag (^a, ^d).", 316 ute.ute_index, utep, TABLE_NAMES (ute.process_type), 317 signal_string, unspec(signal_string), WAKEUP_SOURCE (wakeup_from), 318 TRA_VEC_VALUES (ute.destroy_flag), ute.destroy_flag); 319 320 if wakeup_from = USER 321 then 322 call Process_User_Wakeup (); 323 else 324 call Process_System_Wakeup (); 325 326 if destroy_index < lbound (term_handler, 1) | 327 destroy_index > hbound (term_handler, 1) 328 then 329 call Abort (-1, 330 "UTE (^d, ^p in ^a) wakeup (^a, ^24.3b) from ^a with unexpected destroy_index (^d).", 331 ute.ute_index, utep, TABLE_NAMES (ute.process_type), 332 signal_string, unspec(signal_string), WAKEUP_SOURCE (wakeup_from), 333 destroy_index); 334 335 signal_left_half = 336 substr (signal_string, 1, length (signal_left_half)); 337 338 if signal_string ^= "stopstop" & 339 signal_string ^= "termsgnl" 340 then 341 ute.logout_type = signal_left_half; 342 343 goto term_handler (destroy_index); 344 345 /* PT_FPE */ 346 term_handler (1): 347 if signal_left_half = "init" | 348 signal_left_half = "term" then do; 349 unspec (signal_term_code) = unspec (signal_string); 350 login_server_termination_response.status_code = 351 signal_term_code.code; 352 end; 353 else /* We should have SOME error code */ 354 login_server_termination_response.status_code = 355 error_table_$fatal_error; 356 357 login_server_termination_response.flags.fatal_error = TRUE; 358 call Prepare_To_Terminate_Process (); 359 goto TERMINATE; 360 361 /**** PT_NEW_PROC */ 362 term_handler (2): 363 ute.destroy_flag = WAIT_NEW_PROC; 364 goto TERMINATE; 365 366 /**** PT_LOGOUT_HOLD */ 367 term_handler (3): 368 if installation_parms.trusted_path_login then do; 369 ute.destroy_flag = WAIT_LOGOUT; 370 login_server_termination_response.status_code = 371 as_error_table_$no_logout_hold; 372 end; 373 else /* ^trusted_path_login */ 374 ute.destroy_flag = WAIT_LOGOUT_HOLD; 375 goto TERMINATE; 376 377 /**** PT_LOGOUT */ 378 term_handler (4): 379 ute.destroy_flag = WAIT_LOGOUT; 380 goto TERMINATE; 381 382 /**** PT_LOGOUT_BRIEF */ 383 term_handler (5): 384 login_server_termination_response.flags.brief = TRUE; 385 ute.destroy_flag = WAIT_LOGOUT; 386 goto TERMINATE; 387 388 /**** PT_LOGOUT_HOLD_BRIEF */ 389 term_handler (6): 390 if installation_parms.trusted_path_login then do; 391 login_server_termination_response.status_code = 392 as_error_table_$no_logout_hold; 393 ute.destroy_flag = WAIT_LOGOUT; 394 end; 395 else do; /* ^trusted_path_login */ 396 login_server_termination_response.flags.brief = TRUE; 397 ute.destroy_flag = WAIT_LOGOUT_HOLD; 398 end; 399 goto TERMINATE; 400 401 /**** PT_INITIALIZATION_ERROR, init_err */ 402 term_handler (7): 403 login_server_termination_response.flags.offer_help = TRUE; 404 login_server_termination_response.flags.fpe_during_init = TRUE; 405 login_server_termination_response.status_code = 406 as_error_table_$init_err; 407 ute.destroy_flag = WAIT_LOGOUT_HOLD; 408 goto TERMINATE; 409 410 /**** PT_IO_ATTACHMENT_ERROR, no_ioatt */ 411 term_handler (8): 412 login_server_termination_response.flags.offer_help = TRUE; 413 login_server_termination_response.status_code = 414 as_error_table_$no_io_attach; 415 ute.destroy_flag = WAIT_LOGOUT_HOLD; 416 goto TERMINATE; 417 418 /**** PT_BAD_INITIAL_PROCEDURE, no_initp */ 419 term_handler (9): 420 login_server_termination_response.status_code = 421 as_error_table_$no_init_proc; 422 login_server_termination_response.flags.fpe_during_init = TRUE; 423 login_server_termination_response.flags.offer_help = TRUE; 424 ute.destroy_flag = WAIT_LOGOUT_HOLD; 425 goto TERMINATE; 426 427 /**** PT_DISCONNECT_COMMAND */ 428 term_handler (10): /* User typed disconnect */ 429 if ^ute.at.disconnect_ok then do; 430 login_server_termination_response.status_code = 431 as_error_table_$no_perm_disc; 432 login_server_termination_response.fatal_error = TRUE; 433 call Prepare_To_Terminate_Process(); 434 goto TERMINATE; 435 end; 436 if installation_parms.trusted_path_login then do; 437 login_server_termination_response.status_code = 438 as_error_table_$no_disc_hd; 439 end; 440 else login_server_termination_response.status_code = 441 as_error_table_$disc_hd_msg; 442 goto term_handler (20); 443 444 /**** PT_OBSOLETE_1 */ 445 term_handler (11): 446 goto term_handler (PT_LOGOUT); 447 448 /**** PT_INACTIVITY_RECEIVED */ 449 term_handler (12): 450 451 if (ute.preempted = PREEMPT_BUMPED & 452 ute.activity_can_unbump) then do; 453 /* user waiting on bump timer */ 454 call asu_$reschedule_bump_timer (utep, installation_parms.warning_time); 455 end; 456 go to RETURN; 457 458 /**** PT_NEW_PROC_AUTH */ 459 term_handler (13): 460 ute.destroy_flag = WAIT_NEW_PROC; 461 if ute.disconnected then do; 462 login_server_termination_response.status_code = 463 as_error_table_$illegal_new_proc; 464 ute.destroy_flag = WAIT_LOGOUT; 465 end; 466 else do; /* not a disconnected process */ 467 unspec (new_proc_auth) = unspec (signal_string); 468 if ^aim_check_$in_range ((new_proc_auth.authorization), 469 ute.process_authorization_range) then do; 470 login_server_termination_response.status_code = 471 as_error_table_$illegal_new_proc; 472 end; 473 /**** TBS: Check channel authorization */ 474 else if installation_parms.trusted_path_login then do; 475 if ^aim_check_$equal ((new_proc_auth.authorization), 476 ute.process_authorization) 477 then 478 login_server_termination_response.status_code = 479 as_error_table_$illegal_new_proc; 480 end; 481 else do; /* everything ok */ 482 ute.process_authorization = new_proc_auth.authorization; 483 if ute.whotabx > 0 484 then 485 whotab.e (ute.whotabx).process_authorization = 486 ute.process_authorization; 487 end; 488 end; 489 goto TERMINATE; 490 491 /**** PT_TERM_SIGNAL */ 492 term_handler (14): 493 494 /**** ute.preempted says what to do here: 495* -1 user unbumped after term signal sent 496* 0 user unbumped; ignore alarm___ 497* 1 value internally used in load_ctl_ 498* 2 user bumped; when alarm___ comes in, send term signal 499* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 500* signals come in 501* 4 user bumped; process sick, so destroy without sending term signal 502* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 503* termsgnl). */ 504 505 call timer_manager_$reset_alarm_wakeup (ute.event); 506 if ute.preempted = PREEMPT_UNBUMP then do; /* unbumped too late */ 507 login_server_termination_response.status_code = 508 as_error_table_$bump_cancelled; 509 ute.destroy_flag = WAIT_NEW_PROC; /* give user a new process. Best we can do. */ 510 call Prepare_To_Terminate_Process (); 511 end; 512 else if ute.preempted = PREEMPT_TERM_SENT then do;/* sent trm_ signal, expecting this */ 513 ute.preempted = PREEMPT_TERMSGNL_RECEIVED; /* no longer expected termsgnl */ 514 goto term_handler (ute.logout_index); /* continue doing it */ 515 end; 516 else do; /* unexpected termsgnl */ 517 login_server_termination_response.status_code = 518 as_error_table_$illegal_signal; 519 login_server_termination_response.fatal_error = TRUE; 520 ute.logout_type = "term"; 521 call Prepare_To_Terminate_Process (); 522 end; 523 goto TERMINATE; 524 525 /**** PT_UNUSED_1 */ 526 term_handler (15): 527 goto term_handler (PT_LOGOUT); 528 529 /**** PT_UNUSED_2 */ 530 term_handler (16): 531 goto term_handler (PT_LOGOUT); 532 533 /**** PT_UNUSED_3 */ 534 term_handler (17): 535 goto term_handler (PT_LOGOUT); 536 537 /**** PT_UNUSED_4 */ 538 term_handler (18): 539 goto term_handler (PT_LOGOUT); 540 541 /**** PT_UNUSED_5 */ 542 term_handler (19): 543 goto term_handler (PT_LOGOUT); 544 545 /**** PT_HANGUP */ 546 term_handler (20): 547 if ute.active = NOW_HAS_PROCESS & 548 ute.preempted <= PREEMPT_UNBUMP_IGNORE_ALARM 549 then 550 if ute.save_if_disconnected then do; 551 call Disconnect_Process (); 552 goto RETURN; 553 end; 554 else if signal_string = "disconn" then do; 555 call Disconnect_Process (); 556 call Notify_LS_After_Disconnect; 557 goto RETURN; 558 end; 559 if asu_$send_term_signal (utep, PT_HANGUP) 560 then 561 goto RETURN; /* come back later */ 562 else do; 563 ute.destroy_flag = WAIT_LOGOUT; 564 ute.logout_type = "hngp"; /* "hang" would be misleading */ 565 end; 566 goto TERMINATE; 567 568 /**** PT_SHUTDOWN */ 569 term_handler (21): 570 if asu_$send_term_signal (utep, PT_SHUTDOWN) 571 then 572 goto RETURN; 573 else do; 574 ute.destroy_flag = WAIT_LOGOUT; 575 login_server_termination_response.status_code = 576 as_error_table_$shutdown; 577 end; 578 goto TERMINATE; 579 580 /**** PT_BUMP */ 581 term_handler (22): 582 if asu_$send_term_signal (utep, PT_BUMP) 583 then 584 goto RETURN; 585 else do; 586 ute.destroy_flag = WAIT_LOGOUT; 587 login_server_termination_response.status_code = 588 as_error_table_$automatic_logout; 589 end; 590 goto TERMINATE; 591 592 /**** PT_ALARM */ 593 term_handler (23): 594 if ute.sus_sent & ^ute.suspended 595 then /* timeout on sus response */ 596 call Process_Ignored_Sus_Signal (); 597 else if ute.preempted <= PREEMPT_UNBUMP_IGNORE_ALARM 598 then /* unbumped */ 599 goto RETURN; 600 else do; 601 if (ute.preempted = PREEMPT_BUMPED & ute.activity_can_unbump) 602 then do; 603 call Process_Bump_Timer (code); /* bump timer went off, see if user woke up */ 604 if code = 0 605 then go to term_handler (PT_UNBUMP); /* unbump */ 606 end; 607 if asu_$send_term_signal (utep, PT_ALARM) 608 then 609 goto RETURN; 610 else if ute.preempted = PREEMPT_TERM_SENT then do; 611 /* already send trm_ signal */ 612 call Process_Ignored_Trm_Signal (); 613 end; 614 else do; 615 ute.destroy_flag = WAIT_LOGOUT; 616 if anstbl.session = AT_SHUTDOWN 617 then 618 login_server_termination_response.status_code = 619 as_error_table_$shutdown; 620 else 621 login_server_termination_response.status_code = 622 as_error_table_$automatic_logout; 623 end; 624 end; 625 goto TERMINATE; 626 627 /**** PT_DETACH, detach */ 628 term_handler (24): 629 if ute.active < NOW_HAS_PROCESS then do; /* never get here */ 630 goto RETURN; /* handled at top */ 631 end; /* of program. */ 632 else if asu_$send_term_signal (utep, PT_DETACH) 633 then 634 goto RETURN; 635 else do; 636 ute.destroy_flag = WAIT_LOGOUT; 637 login_server_termination_response.status_code = 638 as_error_table_$automatic_logout; 639 end; 640 goto TERMINATE; 641 642 /**** PT_UNBUMP */ 643 term_handler (25): 644 ute.activity_can_unbump = FALSE; 645 if ute.preempted = PREEMPT_TERM_SENT 646 then /* already sent trm_ */ 647 ute.preempted = PREEMPT_UNBUMP; /* remember this */ 648 else ute.preempted = PREEMPT_UNBUMP_IGNORE_ALARM; /* no longer preempted */ 649 goto RETURN; 650 651 /**** PT_STOPSTOP */ 652 term_handler (26): 653 if ute.destroy_flag <= WAIT_LOGOUT_SIG then do; 654 call Log ("Premature stopstop for ^[*^]^a.^a ^a ^12.3b.", 655 (ute.anonymous = 1), ute.person, ute.project, ute.tty_name, 656 ute.proc_id); 657 call hcs_$wakeup (anstbl.as_procid, ute.event, termstop_msg, (0)); 658 call hcs_$wakeup (anstbl.as_procid, ute.event, stopstop_msg, (0)); 659 end; 660 else do; 661 call dpg_$finish (utep); 662 call act_ctl_$dp (utep); 663 ute.active = NOW_LOGGED_IN; 664 665 /**** If the user has been bumped (by the operator or for a shutdown), don't 666* let him get out of the bump by getting a new process. Otherwise, 667* indicate that the user is no longer in the state of process 668* destruction. */ 669 670 if ute.destroy_flag ^= WAIT_NEW_PROC & ute.destroy_flag ^= WAIT_NEW_PROC_REQUEST 671 then 672 do; 673 call Close_Account_And_Logout (); 674 if ute.destroy_flag = WAIT_DESTROY_REQUEST 675 then 676 call Notify_LS_With_Process_Response (WAIT_DESTROY_REQUEST, 0); 677 end; 678 else do; /* user is getting a new process */ 679 saved_destroy_flag = ute.destroy_flag; /* uc_create_process_ will clobber ute.destroy_flag */ 680 681 if ute.preempted >= PREEMPT_TERM_SENT 682 then 683 ute.preempted = PREEMPT_UNBUMP_IGNORE_ALARM; 684 685 call uc_create_process_ (utep, code); 686 if code ^= 0 687 then 688 call Close_Account_And_Logout (); 689 690 if saved_destroy_flag = WAIT_NEW_PROC 691 then 692 call Send_New_Process_Response (code); 693 else 694 call Notify_LS_With_Process_Response (saved_destroy_flag, code); 695 696 if code = 0 697 then 698 goto RETURN; /* i.e. do not free UTE */ 699 end; 700 call user_table_mgr_$free (utep); 701 end; 702 goto RETURN; 703 704 /**** PT_OPERATOR_TERMINATE, terminat */ 705 term_handler (27): 706 if asu_$send_term_signal (utep, PT_OPERATOR_TERMINATE) 707 then 708 goto RETURN; 709 else do; 710 login_server_termination_response.status_code = 711 as_error_table_$term_by_operator; 712 login_server_termination_response.flags.fatal_error = TRUE; 713 call Prepare_To_Terminate_Process (); 714 end; 715 goto TERMINATE; 716 717 /**** PT_TERMSTOP */ 718 term_handler (28): 719 720 ute.destroy_flag = WAIT_LOGOUT_HOLD; 721 login_server_termination_response.status_code = 722 as_error_table_$no_signal; 723 goto TERMINATE; 724 725 /**** PT_CPU_LIMIT */ 726 term_handler (29): 727 728 if ute.ignore_cpulimit then do; 729 ute.ignore_cpulimit = FALSE; 730 goto RETURN; 731 end; 732 if ute.preempted = PREEMPT_TERM_SENT then do; 733 call timer_manager_$reset_alarm_wakeup (ute.event); 734 call Process_Ignored_Trm_Signal (); 735 end; 736 else if ute.sus_sent then do; 737 call timer_manager_$reset_alarm_wakeup (ute.event); 738 call Process_Ignored_Sus_Signal (); 739 goto TERMINATE; 740 end; 741 else 742 call Abort (-1, 743 "Unexpected cpulimit wakeup for ^[*^]^a.^a ^a ^12.3b.", 744 (ute.anonymous = 1), ute.person, ute.project, ute.tty_name, 745 ute.proc_id); 746 goto RETURN; 747 748 /**** PT_DESTROY_REQUEST */ 749 term_handler (30): 750 751 /**** We get here when the user has used the -destroy control argument to the 752* login command, or the "destroy" login server request. The user process 753* has been sent the trm_ signal, and has either responded properly with 754* the "termsgnl", or our real or cpu timer has gone off. In any case, we 755* must now destroy the process. When the process has destroyed itself, 756* we receive the "stopstop" wakeup from ring-0 and the handler for this 757* wakeup, above, will notify the login server for user. */ 758 759 ute.destroy_flag = WAIT_DESTROY_REQUEST; 760 call Kill_Process (); 761 goto RETURN; 762 763 /**** PT_NEW_PROC_REQUEST */ 764 term_handler (31): 765 766 /**** We get here when the user has used the -new_proc control argument to the 767* login command, or the "new_proc" login server request. The user process 768* has been sent the trm_ signal, and has responded (or timed out). Now 769* we must destroy the process. */ 770 771 ute.destroy_flag = WAIT_NEW_PROC_REQUEST; 772 call Kill_Process (); 773 goto RETURN; 774 775 TERMINATE: 776 call Kill_Process_And_Notify_LS (); 777 778 RETURN: 779 call Clean_Up (); 780 return; 781 782 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 783 784 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 785 /* */ 786 /* I N T E R N A L P R O C E D U R E S */ 787 /* */ 788 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 789 790 791 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 792 /* */ 793 /* Abort: Report errors via sys_log_$general and stop execution. */ 794 /* */ 795 /* Syntax: call Abort (code, ioa_ctl, args); */ 796 /* */ 797 /* */ 798 /* Log, Log_Error: Report errors via sys_log_$general. */ 799 /* */ 800 /* Syntax: call Log (ioa_ctl, args); */ 801 /* call Log_Error (code, ioa_ctl, args); */ 802 /* */ 803 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 804 805 Abort: 806 procedure options (variable); 807 808 dcl cu_$arg_list_ptr entry returns (ptr); 809 dcl sys_log_$general entry (ptr); 810 811 sl_info = sl_info_code_msg; 812 sl_info.arg_list_ptr = cu_$arg_list_ptr (); 813 sl_info.severity = SL_LOG_SILENT; 814 sl_info.caller = ME; 815 call sys_log_$general (addr (sl_info)); 816 code = sl_info.code; 817 if code ^= 0 818 then go to RETURN; 819 return; 820 821 Log: 822 entry options (variable); 823 sl_info = sl_info_msg; 824 sl_info.arg_list_ptr = cu_$arg_list_ptr (); 825 sl_info.severity = SL_LOG_SILENT; 826 sl_info.caller = ME; 827 call sys_log_$general (addr (sl_info)); 828 return; 829 830 Log_Error: 831 entry options (variable); 832 sl_info = sl_info_code_msg; 833 sl_info.arg_list_ptr = cu_$arg_list_ptr (); 834 sl_info.severity = SL_LOG_SILENT; 835 sl_info.caller = ME; 836 call sys_log_$general (addr (sl_info)); 837 return; 838 839 end Abort; 840 841 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 842 843 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 844 845 846 Clean_Up: 847 procedure (); 848 849 /**** Stop metering time in this procedure. */ 850 if metering_enabled 851 then 852 call as_meter_$exit (DIALUP_METER); 853 return; 854 end Clean_Up; 855 856 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 857 858 859 Close_Account_And_Logout: 860 procedure (); 861 862 call act_ctl_$close_account (utep); 863 call uc_logout_ (utep, ute.logout_type); 864 return; 865 end Close_Account_And_Logout; 866 867 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 868 869 870 Convert_Status_Code: 871 procedure (P_code) returns (char (100) aligned); 872 873 dcl P_code fixed bin (35) parameter; 874 dcl status_code_short char (8) aligned automatic; 875 dcl status_code_string char (100) aligned automatic; 876 877 call convert_status_code_ (P_code, status_code_short, 878 status_code_string); 879 return (status_code_string); 880 881 Convert_Status_Code_Short: 882 entry (P_code) returns (char (8) aligned); 883 884 call convert_status_code_ (P_code, status_code_short, 885 status_code_string); 886 return (status_code_short); 887 888 end Convert_Status_Code; 889 890 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 891 892 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 893 894 895 Disconnect_Process: 896 procedure (); 897 898 call asu_$suspend_process (utep); 899 ute.disconnected = TRUE; 900 ute.disconnection_rel_minutes = divide (clock () - ute.login_time, USEC_PER_MINUTE, 17, 0); 901 if ute.whotabx > 0 902 then 903 whotab.e (ute.whotabx).disconnected = TRUE; 904 ute.pdtep -> user.n_disconnected = 905 max (0, ute.pdtep -> user.n_disconnected + 1); 906 call as_access_audit_$process (utep, AS_AUDIT_PROCESS_DISCONNECT, "hangup"); 907 call as_access_audit_$logout (utep, "disconnect"); 908 return; 909 end Disconnect_Process; 910 911 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 912 913 914 Get_Group_ID: 915 procedure () returns (char (32) varying); 916 917 dcl group char (32) varying; 918 919 group = ""; 920 if ute.person ^= "" then do; 921 group = rtrim (ute.person); 922 group = group || "."; 923 group = group || rtrim (ute.project); 924 group = group || "."; 925 group = group || ute.tag; 926 end; 927 return (group); 928 end Get_Group_ID; 929 930 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 931 932 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 933 934 935 Get_Start_Event_Channel: 936 procedure () returns (fixed bin (71)); 937 938 dcl local_code fixed bin (35) automatic; 939 dcl r_factor fixed bin (35) automatic; 940 dcl r_offset fixed bin (18) automatic; 941 dcl start_event_channel fixed bin (71) automatic; 942 943 dcl hphcs_$get_ipc_operands 944 entry (bit (36) aligned, fixed bin (18), fixed bin (35), fixed bin (35)); 945 dcl ipc_validate_$encode_event_channel_name 946 entry (fixed bin (18), fixed bin (35), bit (3) aligned, 947 fixed bin (15), fixed bin (3), bit (1) aligned, fixed bin (18), fixed bin (71)); 948 949 /**** We must construct an event channel which will pass the IPC event 950* channel validation tests. To do this, we must learn the values of 951* R-Offset and R-Factor for the process. */ 952 953 call hphcs_$get_ipc_operands (ute.proc_id, r_offset, r_factor, local_code); 954 if local_code = 0 then do; 955 call ipc_validate_$encode_event_channel_name (r_offset, r_factor, 956 "000"b /* flags */, 1 /* index */, 4 /* ring */, 957 "1"b /* regular */, 1 /* unique id */, 958 start_event_channel); 959 end; 960 else do; 961 call Log_Error (local_code, 962 "Retrieving R-Offset and R-Factor for ^[*^]^a.^a ^a ^12.3b", 963 (ute.anonymous = 1), ute.person, ute.project, ute.tty_name, 964 ute.proc_id); 965 start_event_channel = 0; 966 end; 967 return (start_event_channel); 968 end Get_Start_Event_Channel; 969 970 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 971 972 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 973 974 975 Kill_Login_and_Notify_LS: 976 procedure; 977 978 dcl 1 local_ls_reply_message 979 aligned like ls_reply_message automatic; 980 981 ls_response_ptr = addr (auto_termination_response); 982 login_server_termination_response.process_id = /* dialed terms */ 983 ute.proc_id; /* have target */ 984 /* proc's ID. */ 985 login_server_termination_response.process_group_id = Get_Group_ID (); 986 login_server_termination_response.status_code = 987 as_error_table_$term_by_operator; 988 login_server_termination_response.flags.fatal_error = TRUE; 989 login_server_termination_response.flags.logout = TRUE; 990 login_server_termination_response.flags.hold = TRUE; 991 992 unspec (local_ls_reply_message) = ""b; 993 call uc_send_ls_response_ (ls_response_ptr, 994 currentsize (login_server_termination_response), 995 ute.login_server_info.process_id, 996 ute.login_server_info.his_handle, 997 ute.login_server_info.response_event_channel, 998 addr (local_ls_reply_message), (ute.tty_name), 0, code); 999 if code ^= 0 1000 then 1001 call Log_Error (code, 1002 "Sending termination response for ^[*^]^a.^a ^a ^12.3b to login server.", 1003 (ute.anonymous = 1), ute.person, ute.project, ute.tty_name, 1004 ute.proc_id); 1005 1006 call uc_logout_ (utep, "bump"); 1007 if ute.login_flags.operator | 1008 ute.login_flags.special_pw.dial_pw then do; 1009 /* MC terminal */ 1010 call mc_commands_$remove_tty (ute.tty_name, "1"b, code); 1011 if code ^= 0 1012 then 1013 call Log_Error (code, 1014 "Removing ^a from the MC answer table.", ute.tty_name); 1015 end; 1016 call user_table_mgr_$free (utep); 1017 goto RETURN; 1018 1019 end Kill_Login_and_Notify_LS; 1020 1021 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1022 1023 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1024 1025 1026 Kill_Process: 1027 procedure (); 1028 1029 if ute.active = NOW_HAS_PROCESS 1030 then 1031 call dpg_ (utep, (signal_string)); 1032 return; 1033 end Kill_Process; 1034 1035 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1036 1037 1038 Kill_Process_And_Notify_LS: 1039 procedure (); 1040 1041 call Kill_Process (); 1042 ls_response_ptr = addr (auto_termination_response); 1043 login_server_termination_response.process_id = ute.proc_id; 1044 login_server_termination_response.process_group_id = Get_Group_ID (); 1045 if ute.destroy_flag = WAIT_LOGOUT then do; 1046 login_server_termination_response.flags.logout = TRUE; 1047 login_server_termination_response.flags.hold = FALSE; 1048 end; 1049 else if ute.destroy_flag = WAIT_LOGOUT_HOLD then do; 1050 login_server_termination_response.flags.logout = TRUE; 1051 login_server_termination_response.flags.hold = TRUE; 1052 end; 1053 else if ute.destroy_flag = WAIT_NEW_PROC 1054 then 1055 login_server_termination_response.flags.new_proc = TRUE; 1056 else 1057 call Abort (-1, 1058 "ute.destroy_flag = ^d at after process destruction.", 1059 ute.destroy_flag); 1060 call Notify_LS (); 1061 return; 1062 1063 end Kill_Process_And_Notify_LS; 1064 1065 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1066 1067 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1068 1069 1070 Notify_LS: 1071 procedure; 1072 1073 dcl 1 local_ls_reply_message 1074 aligned like ls_reply_message automatic; 1075 1076 login_server_termination_response.accounting_info.cpu_usage = 1077 ute.cpu_usage; 1078 login_server_termination_response.accounting_info.cost = 1079 ute.session_cost; 1080 1081 unspec (local_ls_reply_message) = ""b; 1082 call uc_send_ls_response_ (ls_response_ptr, 1083 currentsize (login_server_termination_response), 1084 ute.login_server_info.process_id, 1085 ute.login_server_info.his_handle, 1086 ute.login_server_info.termination_event_channel, 1087 addr (local_ls_reply_message), (ute.tty_name), 0, code); 1088 if code ^= 0 1089 then 1090 call Log_Error (code, 1091 "Could not send process termination response for ^a.^a.^a to login server.", 1092 ute.person, ute.project, ute.tag); 1093 1094 end Notify_LS; 1095 1096 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1097 1098 1099 Notify_LS_After_Disconnect: /* Called for */ 1100 procedure (); /* user-typed */ 1101 /* disconnect */ 1102 /* command. */ 1103 1104 login_server_termination_response.flags.logout = TRUE; 1105 if login_server_termination_response.status_code = 1106 as_error_table_$disc_hd_msg 1107 then 1108 login_server_termination_response.flags.hold = TRUE; 1109 else login_server_termination_response.flags.hold = FALSE; 1110 call Notify_LS (); 1111 return; 1112 1113 end Notify_LS_After_Disconnect; 1114 1115 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1116 1117 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1118 1119 1120 Notify_LS_With_Process_Response: 1121 procedure (P_reason, P_code); 1122 1123 /**** This procedure is called to notify the Login Server for a user of the 1124* successful execution of the "destroy" or "new_proc" login server 1125* requests. */ 1126 1127 dcl P_reason fixed bin parameter; 1128 dcl P_code fixed bin (35) parameter; 1129 1130 dcl 1 local_ls_reply_message 1131 aligned like ls_reply_message automatic; 1132 1133 unspec (local_ls_reply_message) = ""b; 1134 local_ls_reply_message.code = P_code; 1135 1136 ls_process_response_accounting_message_length = 0; 1137 ls_response_ptr = addr (auto_process_response); 1138 unspec (login_server_process_response) = ""b; 1139 1140 login_server_process_response.header.message_type = LS_PROCESS_RESPONSE; 1141 login_server_process_response.header.version = LOGIN_SERVER_PROCESS_RESPONSE_VERSION_1; 1142 1143 login_server_process_response.status_code = P_code; 1144 login_server_process_response.process_id = ute.proc_id; 1145 /**** Since we've switched UTEs on the loging server, we need to apprise it 1146* of the new handle associated with this connection. */ 1147 1148 login_server_process_response.new_handle = ute.login_server_info.our_handle; 1149 login_server_process_response.authorization = ute.process_authorization; 1150 login_server_process_response.process_group_id = Get_Group_ID (); 1151 login_server_process_response.process_number = 0; 1152 1153 if ute.pdtep ^= null 1154 then 1155 login_server_process_response.n_disconnected_processes = 1156 ute.pdtep -> user.n_disconnected; 1157 else login_server_process_response.n_disconnected_processes = 0; 1158 1159 if P_reason = WAIT_NEW_PROC_REQUEST 1160 then 1161 login_server_process_response.start_event_channel = Get_Start_Event_Channel (); 1162 1163 login_server_process_response.login_instance = 0; 1164 1165 login_server_process_response.accounting_info.cpu_usage = ute.cpu_usage; 1166 login_server_process_response.accounting_info.cost = ute.session_cost; 1167 1168 if P_reason = WAIT_DESTROY_REQUEST 1169 then do; 1170 login_server_process_response.flags.destroyed = TRUE; 1171 /**** This could be based on an installation parameter */ 1172 login_server_process_response.flags.logout = TRUE; 1173 end; 1174 else if P_reason = WAIT_NEW_PROC_REQUEST 1175 then 1176 login_server_process_response.flags.new_proc = TRUE; 1177 1178 login_server_process_response.initial_ring = ute.initial_ring; 1179 login_server_process_response.already_logged_in_info.connection_name = ""; 1180 login_server_process_response.already_logged_in_info.terminal_type = ""; 1181 login_server_process_response.already_logged_in_info.terminal_id = ""; 1182 login_server_process_response.accounting_message_length = 0; 1183 1184 call uc_send_ls_response_ (ls_response_ptr, 1185 currentsize (login_server_process_response), 1186 ute.login_server_info.process_id, 1187 ute.login_server_info.his_handle, 1188 ute.login_server_info.response_event_channel, 1189 addr (local_ls_reply_message), (ute.tty_name), 0, code); 1190 if code ^= 0 1191 then 1192 call Log_Error (code, "Sending login server response for process destruction of ^a.^a.^a.", ute.person, 1193 ute.project, ute.tag); 1194 return; 1195 end Notify_LS_With_Process_Response; 1196 1197 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1198 1199 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1200 1201 1202 Prepare_To_Terminate_Process: 1203 procedure (); 1204 1205 call as_access_audit_$process (utep, AS_AUDIT_PROCESS_TERMINATE, 1206 Convert_Status_Code_Short( 1207 login_server_termination_response.status_code)); 1208 if ute.disconnected 1209 then 1210 ute.destroy_flag = WAIT_LOGOUT; 1211 else if substr (signal_string, 1, 4) = "init" then do; 1212 /* during init */ 1213 ute.destroy_flag = WAIT_LOGOUT_HOLD; 1214 login_server_termination_response.flags.fpe_during_init = TRUE; 1215 login_server_termination_response.flags.offer_help = TRUE; 1216 end; 1217 else do; /* not during init */ 1218 if ute.recent_fatal_error_time + 1219 installation_parms.fatal_error_loop_seconds * USEC_PER_SECOND < 1220 anstbl.current_time then do; 1221 if ute.uflags.fpe_causes_logout then do; 1222 login_server_termination_response.flags.fpe_caused_logout = TRUE; 1223 ute.destroy_flag = WAIT_LOGOUT_HOLD; 1224 end; 1225 else do; /* ^fpe_causes_logout */ 1226 ute.recent_fatal_error_time = anstbl.current_time; 1227 ute.recent_fatal_error_count = 1; 1228 ute.destroy_flag = WAIT_NEW_PROC; 1229 end; 1230 end; 1231 else do; /* recent fatal process error */ 1232 ute.recent_fatal_error_count = 1233 ute.recent_fatal_error_count + 1; 1234 if ute.recent_fatal_error_count < 1235 installation_parms.fatal_error_loop_count 1236 then 1237 ute.destroy_flag = WAIT_NEW_PROC; 1238 else /* exceeded fatal_error_loop_count */ 1239 do; 1240 ute.destroy_flag = WAIT_LOGOUT_HOLD; 1241 login_server_termination_response.flags.fpe_loop = TRUE; 1242 login_server_termination_response.flags.offer_help = TRUE; 1243 end; 1244 end; 1245 end; 1246 return; 1247 end Prepare_To_Terminate_Process; 1248 1249 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1250 1251 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1252 1253 1254 Process_Bump_Timer: 1255 procedure (P_code); 1256 1257 dcl P_code fixed bin (35); 1258 dcl code fixed bin (35); 1259 dcl user_id char (32); 1260 1261 call act_ctl_$activity_unbump (utep, P_code); 1262 if P_code = 0 then do; /* acceptably active */ 1263 call Log ("Cancelling inactivity bump of ^a.^a", ute.person, ute.project); 1264 /* notify user of unbump */ 1265 user_id = rtrim (ute.person) || "." || /* build Person.Project */ 1266 rtrim (ute.project); 1267 unspec (send_mail_info) = "0"b; 1268 send_mail_info.version = send_mail_info_version_2; 1269 send_mail_info.wakeup = "1"b; 1270 send_mail_info.always_add = "1"b; 1271 send_mail_info.sent_from = "answering service"; 1272 1273 call send_mail_$access_class (user_id, Convert_Status_Code (as_error_table_$activity_unbump), 1274 addr (send_mail_info), ute.process_authorization, code); 1275 if code ^= 0 & code ^= error_table_$messages_deferred & code ^= error_table_$messages_off 1276 then call Log_Error (code, "When attempting to notify user ^a of dialup event", user_id); 1277 end; 1278 end Process_Bump_Timer; 1279 1280 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1281 1282 1283 Process_Ignored_Sus_Signal: 1284 procedure (); 1285 1286 call Log ("sus_ signal ignored by ^[*^]^a.^a ^a ^12.3b.", 1287 (ute.anonymous = 1), ute.person, ute.project, ute.tty_name, 1288 ute.proc_id); 1289 1290 if asu_$send_term_signal (utep, PT_HANGUP) 1291 then 1292 goto RETURN; 1293 else 1294 ute.destroy_flag = WAIT_LOGOUT; 1295 return; 1296 end Process_Ignored_Sus_Signal; 1297 1298 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1299 1300 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1301 1302 1303 Process_Ignored_Trm_Signal: 1304 procedure (); 1305 1306 ute.preempted = PREEMPT_TERMSGNL_RECEIVED; /* no longer waiting termsgnl */ 1307 1308 call Log ("process ignored trm_ signal ^a.^a.^a on channel ^a.", 1309 ute.person, ute.project, ute.tag, ute.tty_name); 1310 1311 if ute.logout_index = PT_ALARM then do; /* bump */ 1312 ute.destroy_flag = WAIT_LOGOUT; 1313 if anstbl.session = AT_SHUTDOWN 1314 then 1315 login_server_termination_response.status_code = 1316 as_error_table_$shutdown; 1317 else 1318 login_server_termination_response.status_code = 1319 as_error_table_$automatic_logout; 1320 call Kill_Process_And_Notify_LS (); 1321 end; 1322 else goto term_handler (ute.logout_index); /* not bump */ 1323 1324 end Process_Ignored_Trm_Signal; 1325 1326 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1327 1328 1329 Process_Sus_Response: 1330 procedure (); 1331 1332 ute.sus_channel = event_call_info.message; 1333 if ^ute.ignore_cpulimit then do; /* not released before responded */ 1334 ute.suspended = TRUE; 1335 if ute.whotabx > 0 1336 then 1337 whotab.e (ute.whotabx).suspended = TRUE; 1338 /**** Turn off realtime timer we set for responded to sus_ signal. */ 1339 call timer_manager_$reset_alarm_wakeup (ute.event); 1340 end; 1341 else do; /* released before responded */ 1342 ute.sus_sent = FALSE; 1343 if ute.whotabx > 0 1344 then 1345 whotab.e (ute.whotabx).suspended = FALSE; 1346 /**** Tell process it may run again. */ 1347 call hcs_$wakeup (ute.proc_id, ute.sus_channel, 0, (0)); 1348 end; 1349 return; 1350 1351 end Process_Sus_Response; 1352 1353 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1354 1355 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1356 1357 1358 Process_System_Wakeup: 1359 procedure (); 1360 1361 do destroy_index = 1 to as_data_$system_signal_types.n_system_signals 1362 while (signal_string ^= 1363 as_data_$system_signal_types.system_signals (destroy_index)); 1364 end; 1365 1366 if destroy_index <= 1367 as_data_$system_signal_types.n_system_signals 1368 then 1369 destroy_index = destroy_index + MAX_USER_SIGNALS; 1370 else 1371 call Abort (-1, "Invalid system signal ^a.", signal_string); 1372 return; 1373 end Process_System_Wakeup; 1374 1375 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1376 1377 1378 Process_User_Wakeup: 1379 procedure (); 1380 1381 do destroy_index = 1 to as_data_$signal_types.n_signals 1382 while (signal_string ^= 1383 as_data_$signal_types.signals (destroy_index)); 1384 end; 1385 1386 if destroy_index <= as_data_$signal_types.n_signals 1387 then ; 1388 else if substr (signal_string, 1, 4) = "term" | 1389 substr (signal_string, 1, 4) = "init" 1390 then 1391 destroy_index = PT_FPE; 1392 else if substr (signal_string, 1, 2) = "np" 1393 then 1394 destroy_index = PT_NEW_PROC_AUTH; 1395 else if ute.sus_sent & ^ute.suspended then do; 1396 call Process_Sus_Response (); 1397 goto RETURN; 1398 end; 1399 else do; 1400 login_server_termination_response.status_code = 1401 as_error_table_$illegal_signal; 1402 login_server_termination_response.flags.fatal_error = TRUE; 1403 call Prepare_To_Terminate_Process (); 1404 goto TERMINATE; 1405 end; 1406 return; 1407 end Process_User_Wakeup; 1408 1409 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1410 1411 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1412 1413 1414 Setup_LS_Termination_Response: 1415 procedure (); 1416 1417 ls_response_ptr = addr (auto_termination_response); 1418 unspec (login_server_termination_response) = ""b; 1419 login_server_termination_response.header.message_type = 1420 LS_TERMINATION_RESPONSE; 1421 login_server_termination_response.header.version = 1422 LOGIN_SERVER_TERMINATION_RESPONSE_VERSION_1; 1423 login_server_termination_response.process_id = ute.proc_id; 1424 login_server_termination_response.process_group_id = Get_Group_ID (); 1425 return; 1426 end Setup_LS_Termination_Response; 1427 1428 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1429 1430 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1431 1432 1433 Send_New_Process_Response: 1434 procedure (P_code); 1435 1436 dcl P_code fixed bin (35) parameter; 1437 dcl 1 local_ls_reply_message 1438 aligned like ls_reply_message automatic; 1439 1440 if P_code ^= 0 1441 then 1442 do; 1443 call Log_Error (P_code, "Could not create new process for ^a.^a.^a.", ute.person, ute.project, ute.tag); 1444 return; 1445 end; 1446 1447 ls_response_ptr = addr (auto_new_proc_response); 1448 unspec (login_server_new_proc_response) = ""b; 1449 login_server_new_proc_response.header.message_type = 1450 LS_NEW_PROC_RESPONSE; 1451 login_server_new_proc_response.header.version = 1452 LOGIN_SERVER_NEW_PROC_RESPONSE_VERSION_1; 1453 login_server_new_proc_response.new_authorization = 1454 ute.process_authorization; 1455 login_server_new_proc_response.new_start_event_channel = 1456 Get_Start_Event_Channel (); 1457 login_server_new_proc_response.new_process_id = 1458 ute.proc_id; 1459 1460 unspec (local_ls_reply_message) = ""b; 1461 call uc_send_ls_response_ (ls_response_ptr, 1462 currentsize (login_server_new_proc_response), 1463 ute.login_server_info.process_id, 1464 ute.login_server_info.his_handle, 1465 ute.login_server_info.termination_event_channel, 1466 addr (local_ls_reply_message), (ute.tty_name), 0, code); 1467 if code ^= 0 1468 then 1469 call Log_Error (code, 1470 "Sending new process login server response for ^[*^]^a.^a ^a ^12.3b.", 1471 (ute.anonymous = 1), ute.person, ute.project, ute.tty_name, 1472 ute.proc_id); 1473 return; 1474 end Send_New_Process_Response; 1475 1476 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1477 1478 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1479 1480 1481 Validate_UTEp: 1482 procedure (); 1483 1484 /**** Ensure the utep supplied as the event call data pointer points into 1485* either the answer_table, the absentee_user_table, or the 1486* daemon_user_table. Otherwise, reject the wakeup. */ 1487 1488 if utep = null () 1489 then 1490 call Abort (error_table_$null_info_ptr, 1491 "Null UTE pointer with wakeup (^a, ^24.3b) from process ^12.3b.", 1492 signal_string, unspec (signal_string), 1493 event_call_info.sender); 1494 1495 if baseno (utep) ^= baseno (as_data_$ansp) & 1496 baseno (utep) ^= baseno (as_data_$autp) & 1497 baseno (utep) ^= baseno (as_data_$dutp) 1498 then 1499 call Abort (-1, 1500 "Invalid UTE pointer (^p) with wakeup (^a, ^24.3b) from process ^12.3b.", 1501 utep, signal_string, unspec (signal_string), 1502 event_call_info.sender); 1503 return; 1504 end Validate_UTEp; 1505 1506 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1507 /* format: off */ 1508 /* BEGIN include file access_audit_bin_header.incl.pl1 */ 1 2 1 3 /* format: style4 */ 1 4 1 5 /* NOTE: All changes must also be done to access_audit_bin_header.incl.alm */ 1 6 1 7 /* 85-01-18 E. Swenson - renamed to access_audit_bin_header.incl.pl1 */ 1 8 /* 85-01-17 E. Swenson - restructured, added session_uid, changed 1 9* min and max authorization to authorization range. */ 1 10 /* 85-01-07 EJ Sharpe - added min_authorization, cleanup */ 1 11 /* 84-11-15 EJ Sharpe - added event_flags word */ 1 12 /* 84-11-06 EJ Sharpe - added unaligned attr to version and proxy_flag */ 1 13 /* 84-10-24 EJ Sharpe - added the constants */ 1 14 /* 84-09-04 BIM - created */ 1 15 1 16 declare audit_record_ptr pointer; 1 17 1 18 dcl 1 audit_record_header aligned based (audit_record_ptr), 1 19 2 header aligned like arh_header_, 1 20 2 subject aligned like arh_user_info_; 1 21 1 22 dcl 1 audit_record_header_proxy aligned based (audit_record_ptr), 1 23 2 header aligned like arh_header_, 1 24 2 subjects (2) aligned like arh_user_info_; 1 25 1 26 dcl 1 arh_header_ aligned based, 1 27 2 type fixed bin (9) unsigned unaligned, 1 28 2 version fixed bin (9) unsigned unaligned, 1 29 2 flags unaligned, 1 30 3 ( 1 31 subject_is_process, /* binary data in subject is valid */ 1 32 object_is_valid /* There is an object */ 1 33 ) bit (1) unaligned, 1 34 3 pad bit (16) unaligned, 1 35 2 operation_code bit (36) aligned, /* like access_audit_encoded_op */ 1 36 2 event_flags bit (36) aligned, /* like access_audit_eventflags */ 1 37 2 session_uid fixed bin (35); /* uid for the login session */ 1 38 1 39 dcl 1 arh_user_info_ aligned based, 1 40 2 person char (22) unaligned, /* see anonymous bit */ 1 41 2 project char (9) unaligned, /* blank for nologin w/out proj */ 1 42 2 tag char (1) unaligned, 1 43 2 ring fixed bin (3) uns unaligned, 1 44 2 anonymous bit (1) unaligned, 1 45 2 pad3 bit (32) unaligned, 1 46 2 process_id bit (36) aligned, 1 47 2 authorization bit (72) aligned, 1 48 2 authorization_range (2) bit (72) aligned; 1 49 1 50 dcl ARH_TYPE_PROXY fixed bin init (2) 1 51 static options (constant); 1 52 dcl ARH_TYPE_NO_PROXY fixed bin init (1) 1 53 static options (constant); 1 54 dcl ACCESS_AUDIT_HEADER_VERSION_3 fixed bin (9) unsigned 1 55 init (3) static options (constant); 1 56 1 57 /* End include file access_audit_bin_header.incl.pl1 */ 1508 /* not used, but needed by PL/I */ 1509 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 2 2 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 4 /* */ 2 5 /* The answer table has one entry per "login instance" whether completed or */ 2 6 /* not. It is connected to the Channel Definition Table by the pointer */ 2 7 /* "channel". The header is used mostly by dialup_. */ 2 8 /* */ 2 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 2 10 /* */ 2 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 12 2 13 /****^ HISTORY COMMENTS: 2 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 2 15* Replace anstbl.incl.pl1. 2 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 2 17* Add anstbl.session_uid_counter. 2 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 2 19* Add anstbl.message_update_time and named constants for values of 2 20* anstbl.session, and to make all padding explicit. 2 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 2 22* Change "entry" to a placeholder so as not to require 2 23* user_table_entry.incl.pl1. 2 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 2 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 2 26* Added the flag login_server_present which indicates whether a login 2 27* server request has been received. This is used to determine whether 2 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 2 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 2 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 2 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 32* A) Moved constants for ute.pw_flags.mask_ctl into 2 33* user_table_entry.incl.pl1. 2 34* B) Added common table header to all user tables. 2 35* END HISTORY COMMENTS */ 2 36 2 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 38 /* */ 2 39 /* The anstbl structure below is divided into sections. Each section begins */ 2 40 /* with a comment describing the elements in the section. Elements are */ 2 41 /* placed within a section, based upon their function or the programs that */ 2 42 /* use them. Each section begins on a double word and is an even number of */ 2 43 /* words long. */ 2 44 /* */ 2 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 46 2 47 2 48 2 49 /* format: style4 */ 2 50 2 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 2 52 2 53 dcl ansp ptr automatic init (null); 2 54 2 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 2 56 2 header like ut_header, /* Header common to all user tables. */ 2 57 2 58 /* Counter elements. */ 2 59 2 nlin fixed bin, /* number of active lines */ 2 60 2 mxlin fixed bin, /* maximum number of active lines */ 2 61 2 n_users fixed bin, /* number of logged-in users */ 2 62 2 max_users fixed bin, /* maximum number of users allowed */ 2 63 2 n_units fixed bin, /* number of logged in units */ 2 64 2 max_units fixed bin, /* maximum number of units */ 2 65 2 n_sessions fixed bin, /* number of Multics sessions */ 2 66 2 n_pad fixed bin, 2 67 2 68 /* Name elements. */ 2 69 2 sysdir char (64) unal, /* name of main system control directory */ 2 70 2 as_tty char (8) unal, /* name of main answering service device. */ 2 71 2 72 /* Login elements. */ 2 73 2 login_word char (8) unal, /* login word if special_session=1 */ 2 74 2 session char (8) unal, /* session indicator */ 2 75 2 special_message char (128) unal, /* message to be printed for special session */ 2 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 2 77 2 message_lng fixed bin, /* length of special message */ 2 78 2 login_pad fixed bin, 2 79 2 80 /* Table update elements. */ 2 81 2 lock_count fixed bin, /* global lock for all system control tables */ 2 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 2 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 2 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 2 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 2 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 2 87 2 update_pad fixed bin, 2 88 2 89 /* dialup_ data values. */ 2 90 2 current_time fixed bin (71), /* Time of last transaction */ 2 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 2 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 2 93 2 94 /* load_ctl_ elements. */ 2 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 2 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 2 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 2 98 /* load_ctl_ load leveling desired response range: */ 2 99 2 response_high fixed bin, /* bad if user response time slower than this */ 2 100 2 response_low fixed bin, /* bad if user response time faster than this */ 2 101 2 load_ctl_pad fixed bin, 2 102 2 103 /* Login server request server data. */ 2 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 2 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 2 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 2 107 2 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 2 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 2 110 3 contents (UTE_SIZE) fixed bin; 2 111 2 112 /* constants */ 2 113 2 114 /* values for anstbl.session */ 2 115 2 116 dcl (AT_NORMAL init ("normal "), 2 117 AT_SPECIAL init ("special "), 2 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 2 119 2 120 dcl UTE_SIZE fixed bin internal static initial (300); 2 121 2 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 1509 1510 /* BEGIN: as_audit_structures.incl.pl1 * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(84-01-17,Swenson), approve(), audit(), install(): 3 5* Initial coding. 3 6* 2) change(87-06-08,GDixon), approve(87-07-13,MCR7741), 3 7* audit(87-07-31,Brunelle), install(87-08-04,MR12.1-1056): 3 8* A) Add AS_AUDIT_CHANNEL_ACTIONS, AS_AUDIT_CHANNEL_DIRECTION, and 3 9* AS_AUDIT_CHANNEL_SERVICE_INFO arrays. 3 10* B) Add channel audit actions for dialin, dialout and dial system. 3 11* C) Correct declaration of as_channel_audit_record_.pad2. 3 12* D) Revise channel_audit_info. 3 13* 3) change(87-07-15,GDixon), approve(87-07-15,MCR7741), 3 14* audit(87-07-31,Brunelle), install(87-08-04,MR12.1-1056): 3 15* A) Add AS_AUDIT_PROCESS_TERMINATE action code. 3 16* END HISTORY COMMENTS */ 3 17 3 18 /* format: style2 */ 3 19 3 20 /* This include file describes the binary data associated with 3 21* Answering Service audit records. */ 3 22 3 23 /**** This first structure defines the Identification and Authentication 3 24* (I&A) audit records associated with login attempts for interactive 3 25* and daemon logins */ 3 26 3 27 dcl 1 as_ia_audit_record_int_dmn 3 28 structure aligned based, 3 29 2 header like audit_record_header aligned, 3 30 2 record like as_ia_audit_record_; 3 31 3 32 /**** This one is for absentee logins which are not proxy absentees */ 3 33 3 34 dcl 1 as_ia_audit_record_abs 3 35 structure aligned based, 3 36 2 header like audit_record_header aligned, 3 37 2 record like as_ia_audit_record_, 3 38 2 absentee_input_path 3 39 char (168); 3 40 3 41 dcl 1 as_ia_audit_record_abs_proxy 3 42 structure aligned based, 3 43 2 header like audit_record_header aligned, 3 44 2 record like as_ia_audit_record_, 3 45 2 absentee_input_path 3 46 char (168), 3 47 2 proxy_user char (32); 3 48 3 49 /**** The following structure is common to all the I&A records. It 3 50* contains the relevant information about the I&A process. */ 3 51 3 52 dcl 1 as_ia_audit_record_ structure aligned based, 3 53 2 type fixed bin (9) unsigned unaligned, 3 54 2 version fixed bin (9) unsigned unaligned, 3 55 2 process_type fixed bin (3) unsigned unaligned, 3 56 2 min_ring fixed bin (3) unsigned unaligned, 3 57 2 max_ring fixed bin (3) unsigned unaligned, 3 58 2 pad1 bit (9) unaligned, 3 59 2 attributes like user_attributes, 3 60 2 audit_flags bit (36) aligned, 3 61 2 channel char (32) aligned, 3 62 2 terminal_type char (32) aligned, 3 63 2 answerback char (4) aligned; 3 64 3 65 /**** The following structure represents the binary information 3 66* associated with a communications channel access audit message. */ 3 67 3 68 dcl 1 as_channel_audit_record 3 69 structure aligned based, 3 70 2 header like audit_record_header aligned, 3 71 2 record like as_channel_audit_record_; 3 72 3 73 3 74 dcl 1 as_channel_audit_record_ 3 75 structure aligned based, 3 76 2 type fixed bin (9) unsigned unaligned, 3 77 2 version fixed bin (9) unsigned unaligned, 3 78 2 flags unaligned, 3 79 3 channel_info_valid 3 80 bit (1) unaligned, 3 81 3 current_access_class_valid 3 82 bit (1) unaligned, 3 83 3 pad1 bit (16) unaligned, 3 84 2 channel_name char (32), 3 85 2 current_access_class 3 86 (2) bit (72) aligned, 3 87 2 access_class_range (2) bit (72) aligned, 3 88 2 current_service_type 3 89 fixed bin (17) unaligned, 3 90 2 service_type fixed bin (17) unaligned, 3 91 2 terminal_type char (32), 3 92 2 authenticated_user aligned, 3 93 3 personid char (22) unaligned, 3 94 3 projectid char (9) unaligned, 3 95 3 pad2 bit (9) unaligned; 3 96 3 97 /**** The following structure represents the binary information 3 98* associated with a dial service audit record */ 3 99 3 100 dcl 1 as_dial_service_audit_record 3 101 structure aligned based, 3 102 2 header like audit_record_header aligned, 3 103 2 record like as_dial_service_audit_record_; 3 104 3 105 dcl 1 as_dial_service_audit_record_ 3 106 structure aligned based, 3 107 2 type fixed bin (9) unsigned unaligned, 3 108 2 version fixed bin (9) unsigned unaligned, 3 109 2 dial_server_ring fixed bin (3) unsigned unaligned, 3 110 2 flags unaligned, 3 111 3 registered_server 3 112 bit (1) unaligned, 3 113 3 privileged_server 3 114 bit (1) unaligned, 3 115 3 pad1 bit (13) unaligned, 3 116 2 dial_qualifier char (32); 3 117 3 118 /**** The following structure is used by dial_ctl_ to pass the required 3 119* information to as_access_audit_. This structure is necessary since 3 120* the data is not available in the user_table_entry or cdte. */ 3 121 3 122 dcl dial_server_info_ptr ptr; /* pointer to following structure */ 3 123 3 124 dcl 1 dial_server_info structure aligned based (dial_server_info_ptr), 3 125 2 server_ring fixed bin (3) unaligned, 3 126 2 flags unaligned, 3 127 3 registered bit (1) unaligned, 3 128 3 privileged bit (1) unaligned, 3 129 3 pad1 bit (31) unaligned, 3 130 2 dial_qualifier char (32); 3 131 3 132 /**** The following structure is used by dial_ctl_ to pass relevant information 3 133* to as_access_audit_. The channel name is passed here when we do not 3 134* have a cdtep, for instance. */ 3 135 3 136 dcl channel_audit_info_ptr ptr; 3 137 3 138 dcl 1 channel_audit_info aligned based (channel_audit_info_ptr), 3 139 2 channel_name char (32), 3 140 2 valid, 3 141 (3 service_info, 3 142 3 access_class, 3 143 3 access_class_range, 3 144 3 user_validation_level) 3 145 bit(1) unal, 3 146 3 mbz bit(32) unal, 3 147 2 service_info char (32), 3 148 2 access_class bit(72) aligned, 3 149 2 access_class_range (2) bit(72) aligned, 3 150 2 user_validation_level 3 151 fixed bin (3); 3 152 3 153 dcl AS_AUDIT_RECORD_IA_VERSION_1 3 154 fixed bin (9) initial (1) internal static options (constant); 3 155 3 156 dcl AS_AUDIT_RECORD_CHN_VERSION_1 3 157 fixed bin (9) initial (1) internal static options (constant); 3 158 3 159 dcl AS_AUDIT_RECORD_DIALID_VERSION_1 3 160 fixed bin (9) initial (1) internal static options (constant); 3 161 3 162 dcl ( 3 163 AS_AUDIT_PROCESS_CREATE 3 164 initial (1), 3 165 AS_AUDIT_PROCESS_DESTROY 3 166 initial (2), 3 167 AS_AUDIT_PROCESS_CONNECT 3 168 initial (3), 3 169 AS_AUDIT_PROCESS_DISCONNECT 3 170 initial (4), 3 171 AS_AUDIT_PROCESS_TERMINATE 3 172 initial (5) 3 173 ) fixed bin (17) internal static options (constant); 3 174 3 175 dcl ( 3 176 AS_AUDIT_CHANNEL_ATTACH 3 177 initial (1), 3 178 AS_AUDIT_CHANNEL_DETACH 3 179 initial (2), 3 180 AS_AUDIT_CHANNEL_DIALIN 3 181 initial (3), 3 182 AS_AUDIT_CHANNEL_DIALOUT 3 183 initial (4), 3 184 AS_AUDIT_CHANNEL_DIAL_SYSTEM 3 185 initial (5) 3 186 ) fixed bin (17) internal static options (constant); 3 187 3 188 dcl ( 3 189 AS_AUDIT_DIALID_START initial (1), 3 190 AS_AUDIT_DIALID_STOP initial (2) 3 191 ) fixed bin (17) internal static options (constant); 3 192 3 193 dcl AS_AUDIT_CHANNEL_ACTIONS 3 194 (5) char (12) internal static options (constant) 3 195 initial ("ATTACH", "DETACH", "DIALIN", "DIALOUT", "DIAL SYSTEM"); 3 196 dcl AS_AUDIT_CHANNEL_DIRECTION 3 197 (5) char (4) internal static options (constant) 3 198 initial ("to", "from", "to", "from", "to"); 3 199 dcl AS_AUDIT_CHANNEL_SERVICE_INFO 3 200 (5) char (12) internal static options (constant) 3 201 initial ("Service", "Service", "Dial ID", "Destination", "VChannel"); 3 202 dcl AS_AUDIT_PROCESS_ACTIONS 3 203 (5) char (10) internal static options (constant) 3 204 initial ("CREATE", "DESTROY", "CONNECT", "DISCONNECT", "TERMINATE"); 3 205 3 206 /* END OF: as_audit_structures.incl.pl1 * * * * * */ 1510 1511 /* BEGIN INCLUDE FILE ... as_data_.incl.pl1 ... */ 4 2 4 3 /* format: style4 */ 4 4 4 5 /* This file must be kept in sync with as_data_.alm */ 4 6 4 7 /****^ HISTORY COMMENTS: 4 8* 1) change(86-09-21,Beattie), approve(86-09-22,MCR7542), 4 9* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 4 10* Remove references to the 963 and 029 preaccess commands and remove support 4 11* for ARDS, 202_ETX, 2741 and 1050 in system interfaces. 4 12* 2) change(86-09-25,Swenson), approve(87-07-20,MCR7737), 4 13* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 4 14* Add references to as_data_ entrypoints added for Login Server. 4 15* 3) change(87-03-03,Brunelle), approve(87-07-20,MCR7697), 4 16* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 4 17* Added new user signal field of inacrcvd (14) to handle inactivity response 4 18* from user. 4 19* END HISTORY COMMENTS */ 4 20 4 21 dcl as_data_$BS char (1) aligned ext static; /* BACKSPACE character */ 4 22 dcl as_data_$CR char (1) aligned ext static; /* CARRIAGE RETURN character */ 4 23 dcl as_data_$abs_dim char (32) ext static; /* absentee DIM */ 4 24 dcl as_data_$acct_update_priority fixed bin ext static; /* accounting update IPC priority */ 4 25 dcl as_data_$acsdir char (168) ext static; /* Access Control Segment directory */ 4 26 dcl as_data_$ansp ptr ext static; /* answer_table */ 4 27 dcl as_data_$as_procid bit (36) aligned ext static; /* Answering Service process id */ 4 28 dcl as_data_$as_ring fixed bin (3) ext static; /* AS operating ring */ 4 29 dcl as_data_$as_tty char (6); /* AS master tty channel */ 4 30 dcl as_data_$asmtp ptr ext static; /* AS meter table */ 4 31 dcl as_data_$autp ptr ext static; /* absentee_user_table */ 4 32 dcl as_data_$buzzardp ptr ext static; /* dpg_ list of buteo processes */ 4 33 dcl as_data_$cdtp ptr ext static; /* CDT */ 4 34 dcl as_data_$default_weight fixed bin (35) ext; /* default user process load control weight */ 4 35 dcl as_data_$devtabp ptr ext static; /* device_table */ 4 36 dcl as_data_$dft_user_ring fixed bin (3) ext static; /* default user ring */ 4 37 dcl as_data_$dutp ptr ext static; /* daemon_user_table */ 4 38 dcl as_data_$g115_dim char (32) ext static; 4 39 dcl as_data_$lct_initialized bit (1) aligned ext static; /* LCT allocated in ring 0 */ 4 40 dcl as_data_$lct_size fixed bin ext static; /* CDT tty channels + spares */ 4 41 dcl as_data_$max_user_ring fixed bin (3) ext static; /* maximum user ring */ 4 42 dcl as_data_$mgtp ptr ext static; /* master group table */ 4 43 dcl as_data_$mrd_dim char (32) ext static; /* daemon's message routing DIM */ 4 44 dcl as_data_$ntty_dim char (32) ext static; /* network connection DIM */ 4 45 dcl as_data_$pdtdir char (168) ext static; /* PDT directory */ 4 46 dcl as_data_$pit_ptr ptr ext static; /* pit_temp_ */ 4 47 dcl as_data_$rcpdir char (168) ext static; /* RCP directory */ 4 48 dcl as_data_$request_priority fixed bin ext static; 4 49 dcl as_data_$rs_ptrs (0:9) ptr ext static; /* rate_structures */ 4 50 dcl as_data_$rtdtp ptr ext static; /* RTDT */ 4 51 dcl as_data_$sat_htp ptr ext static; /* SAT hash table */ 4 52 dcl as_data_$satp ptr ext static; /* SAT */ 4 53 dcl as_data_$suffix (0:9) char (2) unaligned ext static; 4 54 dcl as_data_$sysdir char (168) ext static; /* system control directory */ 4 55 dcl as_data_$teens_suffix (10:19) char (2) unaligned ext static; 4 56 dcl as_data_$terminet_tabs_string char (144) varying ext static; 4 57 dcl as_data_$tty_dim char (32) ext static; /* standard interactive DIM */ 4 58 dcl as_data_$update_priority fixed bin ext static; /* ??? */ 4 59 dcl as_data_$version char (8) ext static; /* AS version */ 4 60 dcl as_data_$whoptr ptr ext static; /* whotab */ 4 61 4 62 dcl 1 as_data_$login_args aligned ext static, /* control arguments for login */ 4 63 2 n_login_args fixed bin, 4 64 2 pad fixed bin, 4 65 2 login_args (55 /* as_data_$login_args.n_login_args */) char (24) unaligned; 4 66 4 67 dcl 1 as_data_$signal_types ext static aligned, /* IPC process control signals */ 4 68 2 n_signals fixed bin, 4 69 2 pad fixed bin, 4 70 2 signals (14 /* as_data_$signal_types.n_signals */) char (8) unaligned; 4 71 4 72 dcl 1 as_data_$system_signal_types ext static aligned, /* IPC process control signals */ 4 73 2 n_system_signals fixed bin, 4 74 2 pad fixed bin, 4 75 2 system_signals (10 /* as_data_$system_signal_types.n_system_signals */) char (8) unaligned; 4 76 4 77 dcl as_data_$login_words fixed bin ext static aligned, 4 78 /* interactive login words */ 4 79 1 as_data_login_words aligned based (addr (as_data_$login_words)), 4 80 2 n_words fixed bin, 4 81 2 pad fixed bin, 4 82 2 words (0 refer (as_data_login_words.n_words)) char (16) unaligned; 4 83 4 84 dcl as_data_$debug_flag bit (1) aligned external static; 4 85 dcl as_data_$ls_request_server_info_ptr ptr external static; 4 86 dcl as_data_$ls_message_buffer_cur_lth fixed bin (18) external static; 4 87 dcl as_data_$ls_message_buffer_max_lth fixed bin (18) external static; 4 88 dcl as_data_$ls_message_buffer_ptr ptr external static; 4 89 4 90 /* END INCLUDE FILE ... as_data_.incl.pl1 ... */ 1511 1512 /* BEGIN INCLUDE FILE as_meter_numbers.incl.pl1 */ 5 2 5 3 /* These are the names and numbers of the slots in as_meter_table 5 4* (see as_meter_table.incl.pl1). 5 5* 5 6* Written March 1980 by Tom Casey 5 7* Modified June 1981 by T. Casey for MR9.0 to add ABS_TRYLOG_METER. 5 8**/ 5 9 5 10 5 11 /****^ HISTORY COMMENTS: 5 12* 1) change(86-01-31,Herbst), approve(87-07-21,MCR7694), 5 13* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 5 14* A) Add NETUP_METER. 5 15* B) Add AS_METER_NAMES array. 5 16* END HISTORY COMMENTS */ 5 17 5 18 5 19 dcl ASINIT_METER fixed bin int static options (constant) init (1); /* as_init_, parts 1 and 2 */ 5 20 dcl DIALUP_METER fixed bin int static options (constant) init (2); /* dialup_ */ 5 21 dcl DUM_METER fixed bin int static options (constant) init (3); /* daemon_user_manager_ */ 5 22 dcl AUM_METER fixed bin int static options (constant) init (4); /* absentee_user_manager_ */ 5 23 dcl AU_METER fixed bin int static options (constant) init (5); /* absentee_utility_ */ 5 24 dcl CPG_METER fixed bin int static options (constant) init (6); /* cpg_ */ 5 25 dcl DPG_METER fixed bin int static options (constant) init (7); /* dpg_ */ 5 26 dcl ACCTUP_METER fixed bin int static options (constant) init (8); /* accounting updates */ 5 27 dcl INSTALL_METER fixed bin int static options (constant) init (9); /* installs (up_sysctl_) */ 5 28 dcl ABSQ_METER fixed bin int static options (constant) init (10); /* absentee queue reads and writes */ 5 29 dcl MSGCORD_METER fixed bin int static options (constant) init (11); /* message coordinator */ 5 30 dcl COMMAND_METER fixed bin int static options (constant) init (12); /* operator commands, other than admin */ 5 31 dcl SAC_METER fixed bin int static options (constant) init (13); /* sac (send_admin_command handling) */ 5 32 dcl ADMIN_METER fixed bin int static options (constant) init (14); /* admin mode */ 5 33 dcl SSU_METER fixed bin int static options (constant) init (15); /* system_start_up.ec, parts 1, 2, and 3 */ 5 34 dcl FIXPDT_METER fixed bin int static options (constant) init (16); /* cleanup of PDTs after crash (act_ctl_$init) */ 5 35 dcl ABS_TRYLOG_METER fixed bin int static options (constant) init (17); /* attempts to login absentees via call lg_ctl_ 5 36* (the attempts might fail because of load control limits) */ 5 37 dcl NETUP_METER fixed bin int static options (constant) init (18); /* a call to network_accounting_update_ */ 5 38 5 39 dcl recursion_possible bit (18) int static options (constant) init ("000000000011000000"b); /* 11 & 12 (MSGCORD and COMMAND) */ 5 40 5 41 /* Bit length of recursion_possible equals highest slot number given above. */ 5 42 5 43 dcl AS_METER_NAMES (18) char (8) int static options (constant) init ( 5 44 "ASINIT", "DIALUP", "DUM", "AUM", "AU", 5 45 "CPG", "DPG", "ACCTUP", "INSTALL", "ABSQ", 5 46 "MSGCORD", "COMMAND", "SAC", "ADMIN", "SSU", 5 47 "FIXPDT", "TRYABSLG", "NETUP"); 5 48 5 49 /* END INCLUDE FILE as_meter_numbers.incl.pl1 */ 1512 1513 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 6 2 6 3 /* format: style4 */ 6 4 6 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 6 6 6 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 6 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 6 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 6 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 6 11* WAIT_DISCARD_WAKEUP 6 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 6 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 6 14**/ 6 15 6 16 /****^ HISTORY COMMENTS: 6 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 6 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 6 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 6 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 22* Add named constants for instance tags. 6 23* END HISTORY COMMENTS */ 6 24 6 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 6 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 6 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 6 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 6 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 6 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 6 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 6 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 6 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 6 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 6 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 6 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 6 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 6 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 6 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 6 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 6 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 6 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 6 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 6 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 6 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 6 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 6 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 6 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 6 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 6 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 6 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 6 52 ) fixed bin internal static options (constant); 6 53 6 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 6 55 /* names of ute.destroy_flag values */ 6 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 6 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 6 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 6 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 6 60 "wait remove"); /* -13 */ 6 61 6 62 /* Values for "cdte.state", typewriter state. */ 6 63 6 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 6 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 6 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 6 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 6 68 ) fixed bin internal static options (constant); 6 69 6 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 6 71 /* names of cdte.state values */ 6 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 6 73 6 74 /* Values for "cdte.in_use" and "ate.active" */ 6 75 6 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 6 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 6 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 6 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 6 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 6 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 6 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 6 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 6 84 ) fixed bin internal static options (constant); 6 85 6 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 6 87 /* names of ute.active values */ 6 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 6 89 6 90 6 91 /**** Values for ute.tag */ 6 92 6 93 dcl (TAG_INTERACTIVE init("a"), 6 94 TAG_UFT init("f"), 6 95 TAG_ABSENTEE init("m"), 6 96 TAG_PROXY init("p"), 6 97 TAG_DAEMON init("z") 6 98 ) char(1) int static options(constant); 6 99 6 100 6 101 /**** Following are constants used to indicate to the process termination 6 102* handler the reason for the process termination. They are used by 6 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 6 104* uc_ls_destroy_request_. */ 6 105 6 106 dcl ( 6 107 PT_FPE initial (1), 6 108 PT_LOGOUT initial (4), 6 109 PT_NEW_PROC_AUTH initial (13), 6 110 PT_HANGUP initial (20), 6 111 PT_SHUTDOWN initial (21), 6 112 PT_BUMP initial (22), 6 113 PT_ALARM initial (23), 6 114 PT_DETACH initial (24), 6 115 PT_UNBUMP initial (25), 6 116 PT_OPERATOR_TERMINATE initial (27), 6 117 PT_DESTROY_REQUEST initial (30), 6 118 PT_NEW_PROC_REQUEST initial (31) 6 119 ) fixed bin (17) internal static options (constant); 6 120 6 121 /**** Values for ute.preempted: 6 122* -1 user unbumped after term signal sent 6 123* 0 user unbumped; ignore alarm___ 6 124* 1 value internally used in load_ctl_ 6 125* 2 user bumped; when alarm___ comes in, send term signal 6 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 6 127* signals come in 6 128* 4 user bumped; process sick, so destroy without sending term signal 6 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 6 130* termsgnl). */ 6 131 6 132 dcl ( 6 133 PREEMPT_UNBUMP initial (-1), 6 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 6 135 PREEMPT_LOAD_CTL initial (1), 6 136 PREEMPT_BUMPED initial (2), 6 137 PREEMPT_TERM_SENT initial (3), 6 138 PREEMPT_BUMPED_NO_TERM initial (4), 6 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 6 140 ) fixed bin (17) internal static options(constant); 6 141 6 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 6 143 "unbumped", 6 144 "not bumped, ignore alarm___", 6 145 "load_ctl_", 6 146 "bumped", 6 147 "bumped, trm_ sent", 6 148 "bumped without trm_", 6 149 "bumped, termsgnl received"); 6 150 6 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 1513 1514 /* BEGIN INCLUDE FILE event_call_info.incl.pl1 */ 7 2 7 3 /* T. Casey, May 1978 */ 7 4 7 5 dcl event_call_info_ptr ptr; 7 6 7 7 dcl 1 event_call_info aligned based (event_call_info_ptr), /* argument structure passed to event call procedure */ 7 8 2 channel_id fixed bin (71), /* event channel on which wakeup occurred */ 7 9 2 message fixed bin (71), /* 72 bits of information passed by sender of wakeup */ 7 10 2 sender bit (36), /* process id of sender */ 7 11 2 origin, 7 12 3 dev_signal bit (18) unaligned, /* "1"b if device signal */ 7 13 3 ring fixed bin (17) unaligned, /* ring from which sent */ 7 14 2 data_ptr ptr; /* ptr given to dcl_event_call_channel */ 7 15 7 16 /* END INCLUDE FILE event_call_info.incl.pl1 */ 1514 1515 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 8 2 8 3 /* Modified 740723 by PG to add short AIM access names */ 8 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 8 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 8 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 8 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 8 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 8 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 8 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 8 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 8 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 8 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 8 14* strict_trusted_path. */ 8 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 8 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 8 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 8 18 8 19 8 20 /****^ HISTORY COMMENTS: 8 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 8 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 8 23* added vchn_requires_accept parameter. 8 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 8 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 8 26* Correct formatting problems. 8 27* END HISTORY COMMENTS */ 8 28 8 29 8 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 8 31 8 32 8 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 8 34 2 part_1 like installation_parms_part_1 aligned, 8 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 8 36 8 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 8 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 8 39 8 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 8 41 2 installation_id char (32), /* Name printed at dialup and in who */ 8 42 2 company char (64), /* company name */ 8 43 2 department char (64), /* department */ 8 44 2 companyds char (120), /* company, double spaced */ 8 45 2 departmentds char (120), /* dpeartment double spaced */ 8 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 8 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 8 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 8 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 8 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 8 51 2 ndevices fixed bin, /* number of devices to charge */ 8 52 2 devtab (16), /* Maximum 16 */ 8 53 3 device_id char (8), /* Name of device */ 8 54 3 device_price (0: 7) float bin, /* Price by shift */ 8 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 8 56 2 warning_time fixed bin, /* seconds from warning to logout */ 8 57 2 login_time fixed bin, /* seconds in which to complete login */ 8 58 2 acct_update fixed bin, /* seconds between acct update */ 8 59 2 login_tries fixed bin, /* number of login tries allowed */ 8 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 8 61 2 registration_price float bin, /* fee per month per user */ 8 62 2 dolsign char (1), /* "dollar sign" */ 8 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 8 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 8 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 8 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 8 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 8 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 8 69* Initializer will copy the syserr_log */ 8 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 8 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 8 72 2 fatal_error_loop_count fixed bin (17) unaligned, 8 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 8 74 2 term_real_time_seconds fixed bin (17) unaligned, 8 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 8 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 8 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 8 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 8 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 8 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 8 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 8 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 8 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 8 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 8 85 2 level_names (0:7) char (32), /* Names for security levels. */ 8 86 2 category_names (18) char (32), /* Names for security categories. */ 8 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 8 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 8 89 2 ncon fixed bin, /* Number of config elements. */ 8 90 2 cona (51), /* each entry is 5 words long */ 8 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 8 92 3 shift fixed bin (5) unal, /* Shift number */ 8 93 3 x1 fixed bin (23) unal, 8 94 3 kmem fixed bin (17) unal, /* Memory size */ 8 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 8 96 3 x2 fixed bin (17) unal, 8 97 3 maxa fixed bin (11) unal, /* Max abs users */ 8 98 3 maxq fixed bin (5) unal, /* Max abs q */ 8 99 3 maxu_base fixed bin (17) unal, 8 100 3 response_high fixed bin (17) unal, 8 101 3 response_low fixed bin (17) unal, 8 102 3 x3 fixed bin (17) unal, 8 103 8 104 /* Absentee control parameters. New for MR7.0 */ 8 105 8 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 8 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 8 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 8 109 8 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 8 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 8 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 8 113 8 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 8 115 8 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 8 117 8 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 8 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 8 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 8 121 2 version fixed bin (35), /* must be 2 */ 8 122 2 nrates fixed bin, /* number of rate structures */ 8 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 8 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 8 125 2 require_operator_login bit (1) aligned, /* just what it says */ 8 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 8 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 8 128* mcacs segments for operators */ 8 129 2 password_min_length fixed bin, /* minimum length of passwords */ 8 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 8 131 2 password_change_interval fixed bin, /* number of days until must change */ 8 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 8 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 8 134* "accepted" by operator if personid is not 8 135* signed on system console */ 8 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 8 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 8 138* or someone miscounted when using part of pad2 */ 8 139 8 140 8 141 /* Entries in the following array may be accessed via system_info_$resource_price. 8 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 8 143 8 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 8 145 2 name char (32), 8 146 2 price float bin; 8 147 9 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 9 2 9 3 /* Created on 04/24/78 by Michael R. Jordan */ 9 4 /* Modified 04/10/79 by C. D. Tavares */ 9 5 9 6 dcl rifp ptr; 9 7 9 8 dcl 1 rcp_init_flags based (rifp), 9 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 9 10 2 pad1 bit (2) unaligned, /* obsolete */ 9 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 9 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 9 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 9 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 9 15 9 16 dcl (No_authentication initial (0), 9 17 Nominal_authentication initial (1), 9 18 Automatic_authentication initial (2), 9 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 9 20 9 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 9 22 ("none", "nominal", "automatic", "manual"); 9 23 9 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 8 148 8 149 8 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 1515 1516 /* BEGIN INCLUDE FILE ... login_server_messages.incl.pl1 */ 10 2 10 3 /****^ HISTORY COMMENTS: 10 4* 1) change(86-06-30,Coren), approve(86-06-30,MCR7415), 10 5* audit(86-07-02,Margolin), install(86-07-11,MR12.0-1092): 10 6* Initial implementation. 10 7* 2) change(87-04-16,GDixon), approve(87-07-13,MCR7679), 10 8* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 10 9* A) Add REQUEST_TYPES and RESPONSE_TYPES arrays. 10 10* B) Add login_server_validate_response.last_incorrect_password.time. 10 11* C) Add user_connection_info.line_type. 10 12* D) Add login_server_process_request.minimum_ring. 10 13* 3) change(87-05-14,GDixon), approve(87-07-13,MCR7737), 10 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 10 15* A) Add login_server_process_response.brief. 10 16* B) Add login_server_list_response.initial_ring. 10 17* C) Separate login_server_process_response into fixed and variable parts. 10 18* D) Move user_connection_info into login_server_request_header. 10 19* END HISTORY COMMENTS */ 10 20 10 21 /* This include file defines all the structures passed in message segments 10 22* between a login server process and the Initializer (or "answering service") 10 23* process. For convenience, messages from the server to the initializer, 10 24* passed using the send_ls_request_ subroutine, are called "requests"; 10 25* messages from the initializer to the server, passed using the user_message_ 10 26* mechanism, are called "responses". 10 27**/ 10 28 10 29 /* Request types */ 10 30 10 31 dcl (LS_VALIDATE_REQUEST initial (1), /* validate user ID and password */ 10 32 LS_PROCESS_REQUEST initial (2), /* create or connect to a process */ 10 33 LS_LIST_REQUEST initial (3), /* list disconnected processes */ 10 34 LS_DIAL_REQUEST initial (4), /* find a dial server */ 10 35 LS_DISCONNECT_REQUEST initial (5), /* report disconnection of a login channel */ 10 36 LS_LOGOUT_REQUEST initial (6), /* discard UTE (end of dialogue) */ 10 37 LS_OPERATOR_REQUEST initial (7)) /* log the user in as an operator */ 10 38 fixed bin internal static options (constant); 10 39 10 40 dcl LS_REQUEST_TYPES (7) char (10) internal static options (constant) initial 10 41 ( 10 42 "validate", 10 43 "process", 10 44 "list", 10 45 "dial", 10 46 "disconnect", 10 47 "logout", 10 48 "operator"); 10 49 10 50 dcl ls_request_ptr pointer; 10 51 10 52 /* common header for all requests */ 10 53 10 54 dcl 1 ls_request_header aligned based (ls_request_ptr), 10 55 2 header_version char (8), /* version for this header */ 10 56 2 request_version char (8), /* varies depending on the request */ 10 57 2 request_type fixed bin, 10 58 2 pad1 bit (36), 10 59 2 reply_event_channel fixed bin (71), /* event channel over which reply_message should be sent */ 10 60 2 reply_handle bit (72) aligned, /* used for dispatching response */ 10 61 2 connection_info like user_connection_info; /* connection making this request. */ 10 62 10 63 dcl LS_REQUEST_HEADER_VERSION_1 char (8) initial ("lsrh0001") internal static options (constant); 10 64 10 65 dcl 1 user_connection_info aligned based, /* common info passed in most requests */ 10 66 2 connection_name char (32), 10 67 2 access_class_range (2) bit (72), 10 68 2 terminal_type char (32), 10 69 2 terminal_id char (4), 10 70 2 line_type fixed bin; 10 71 10 72 10 73 10 74 /* "validate" request: validate user ID and password */ 10 75 10 76 dcl 1 login_server_validate_request aligned based (ls_request_ptr), 10 77 2 header like ls_request_header, /* request_type = LS_VALIDATE_REQUEST */ 10 78 2 current_password char (8), /* scrambled */ 10 79 2 authorization bit (72), /* only valid if auth_given = "1"b */ 10 80 2 terminate_event_channel fixed bin (71), /* event channel to notify server when process terminates */ 10 81 2 person_id char (22), /* as specified in login line */ 10 82 2 project_id char (9), /* likewise, might be null string */ 10 83 2 network_connection_type fixed bin, /* see below for values */ 10 84 2 new_password char (8), /* only valid if change_password = "1"b */ 10 85 2 flags, 10 86 3 gpw bit (1) unaligned, /* password generated in response to -generate_password */ 10 87 3 auth_given bit (1) unaligned, /* -authorization specified */ 10 88 3 anonymous bit (1) unaligned, /* "enterp" request */ 10 89 3 anon_no_password bit (1) unaligned, /* "enter" request */ 10 90 3 change_password bit (1) unaligned, /* gave -cpw or -gpw */ 10 91 3 change_default_auth bit (1) unaligned, /* gave -change_default_authorization */ 10 92 3 change_default_proj bit (1) unaligned, /* gave -change_default_project */ 10 93 3 operator bit (1) unaligned, /* gave -operator */ 10 94 3 pad bit (28) unaligned; 10 95 10 96 10 97 dcl LS_VALIDATE_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsvr0001"); 10 98 10 99 10 100 10 101 /* "process" request: create a process or reconnect to an existing process for the specified user */ 10 102 10 103 dcl 1 login_server_process_request aligned based (ls_request_ptr), 10 104 2 fixed_part, /* to allow for automatic copies */ 10 105 3 header like ls_request_header, /* request_type = LS_PROCESS_REQUEST */ 10 106 3 handle bit (72), /* as provided in validate_response */ 10 107 3 person_id char (22), /* the real one */ 10 108 3 project_id char (9), /* likewise */ 10 109 3 project_pad fixed bin, 10 110 3 command_type fixed bin, /* login, connect, etc.; see below for names */ 10 111 3 process_number fixed bin, /* 0 if unspecified or irrelevant */ 10 112 3 default_io_module char (32), /* I/O module to use if no outer_module specified */ 10 113 3 switch_flags, /* used to indicate if "switch"-type control args were specified */ 10 114 4 warn_given bit (1) unaligned, 10 115 4 force_given bit (1) unaligned, 10 116 4 save_given bit (1) unaligned, 10 117 4 preempt_given bit (1) unaligned, 10 118 4 brief_given bit (1) unaligned, 10 119 4 pad2 bit (31) unaligned, 10 120 3 switch_values, /* these are only valid if corresponding bit in switch_flags is on */ 10 121 4 warn bit (1) unaligned, 10 122 4 force bit (1) unaligned, 10 123 4 save_on_disconnect bit (1) unaligned, 10 124 4 preempt bit (1) unaligned, 10 125 4 brief bit (1) unaligned, /* "0"b & brief_given => -long */ 10 126 4 pad3 bit (31) unaligned, 10 127 3 other_flags, 10 128 4 init_ring_given bit (1) unaligned, /* "1"b if -ring */ 10 129 4 minimum_ring_given bit (1) unaligned, /* "1"b if MNA terminal interface ring > 1 */ 10 130 4 immediate bit (1) unaligned, /* "1"b => -new_proc (or -destroy) -immediate */ 10 131 4 no_start_up bit (1) unaligned, /* "1"b if -no_start_up */ 10 132 4 pad4 bit (32) unaligned, 10 133 3 initial_ring fixed bin, /* valid iff init_ring_given = "1"b */ 10 134 3 minimum_ring fixed bin, /* ring in which MNA terminal mgr operates */ 10 135 3 home_dir char (168), /* null if not specified */ 10 136 3 outer_module char (32), /* likewise */ 10 137 3 process_overseer char (168), /* likewise */ 10 138 3 subsystem char (168), /* likewise */ 10 139 3 n_args fixed bin, /* how many arguments specified after -ag; if 0, ignore the rest of the structure */ 10 140 2 login_arguments, /* variable part, describes stuff after -ag */ 10 141 3 arg_string_length fixed bin (21), 10 142 3 args (ls_process_request_n_args refer (login_server_process_request.n_args)), 10 143 4 start_index fixed bin (21), /* position in arg_string at which arg (i) starts */ 10 144 4 arg_length fixed bin (21), /* length of arg (i) */ 10 145 3 arg_string char (ls_process_request_arg_string_length refer (login_server_process_request.arg_string_length)); 10 146 10 147 dcl ls_process_request_n_args fixed bin; 10 148 dcl ls_process_request_arg_string_length fixed bin (21); 10 149 10 150 dcl LS_PROCESS_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lspr0001"); 10 151 10 152 10 153 10 154 /* "list" request: list the user's disconnected processes, if any */ 10 155 10 156 dcl 1 login_server_list_request aligned based (ls_request_ptr), 10 157 2 header like ls_request_header, /* request_type = LS_LIST_REQUEST */ 10 158 2 handle bit (72); 10 159 10 160 dcl LS_LIST_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lslr0001"); 10 161 10 162 10 163 10 164 /* "dial" request: find a process to accept a dial */ 10 165 10 166 /* Note: because a dial request may or may not have been preceded 10 167* by a validate request/response, the initializer_handle may be null. 10 168**/ 10 169 10 170 dcl 1 login_server_dial_request aligned based (ls_request_ptr), 10 171 2 header like ls_request_header, /* request_type = LS_DIAL_REQUEST */ 10 172 2 initializer_handle bit (72), /* as provided in validate_response (if any) */ 10 173 2 terminate_event_channel fixed bin (71), /* event channel to wake up login server when master process terminates */ 10 174 2 dial_qualifier char (22), 10 175 2 person_id char (22), /* null if not specified */ 10 176 2 project_id char (9), /* likewise */ 10 177 2 user_person_id char (22), /* if -user was specified, otherwise "" */ 10 178 2 user_project_id char (9); /* likewise */ 10 179 10 180 dcl LS_DIAL_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsdr0001"); 10 181 10 182 10 183 10 184 /* "disconnect" request: report that a login channel has disconnected */ 10 185 /* Note: this message is sent if the connection is broken either during the login dialogue 10 186* or later on when the process was using it */ 10 187 10 188 dcl 1 login_server_disconnect_request aligned based (ls_request_ptr), 10 189 2 header like ls_request_header, /* request_type = LS_DISCONNECT_REQUEST */ 10 190 2 handle bit (72), /* from original validate_response */ 10 191 2 process_id bit (36); /* ""b if no process established */ 10 192 10 193 dcl LS_DISCONNECT_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsdc0001"); 10 194 10 195 10 196 10 197 /* "logout" request: indicates that user entered the "logout" request, ending the dialogue; does not require any response */ 10 198 10 199 dcl 1 login_server_logout_request aligned based (ls_request_ptr), 10 200 2 header like ls_request_header, /* request_type = LS_LOGOUT_REQUEST */ 10 201 2 handle bit (72); 10 202 10 203 dcl LS_LOGOUT_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lslg0001"); 10 204 10 205 10 206 10 207 /* "operator" request: sign the user on as an operator, the result of either 10 208* "login -operator" or "dial system". Note that in the latter case, there may 10 209* not have been a validate request (if the -user control argument wasn't specified), 10 210* in which case initializer_handle is null, and the person_id and project_id 10 211* are blank. 10 212**/ 10 213 10 214 dcl 1 login_server_operator_request aligned based (ls_request_ptr), 10 215 2 header like ls_request_header, /* request_type = LS_OPERATOR_REQUEST */ 10 216 2 initializer_handle bit (72) aligned, /* as provided in validate_response (if any) */ 10 217 2 terminate_event_channel fixed bin (71), /* event channel for wakeup when connection is dropped */ 10 218 2 person_id char (22), /* likewise */ 10 219 2 project_id char (9), /* likewise */ 10 220 2 virtual_channel char (32); /* if -virtual_channel specified, otherwise "" */ 10 221 10 222 dcl LOGIN_SERVER_OPERATOR_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsor0001"); 10 223 10 224 10 225 10 226 /* Response types */ 10 227 10 228 dcl (LS_UNKNOWN_RESPONSE initial (100), /* unknown response type. */ 10 229 LS_VALIDATE_RESPONSE initial (101), /* response to validation request */ 10 230 LS_PROCESS_RESPONSE initial (102), /* response to process request */ 10 231 LS_LIST_RESPONSE initial (103), /* response to list request */ 10 232 LS_DIAL_RESPONSE initial (104), /* response to dial request */ 10 233 LS_TERMINATION_RESPONSE initial (105), /* to notify server of a logout */ 10 234 LS_NEW_PROC_RESPONSE initial (106), /* to notify server of process termination */ 10 235 LS_OPERATOR_RESPONSE initial (107)) /* response to operator request */ 10 236 fixed bin internal static options (constant); 10 237 10 238 dcl LS_RESPONSE_TYPES (100:107) char (10) internal static options (constant) initial 10 239 ( 10 240 "UNKNOWN", 10 241 "validate", 10 242 "process", 10 243 "list", 10 244 "dial", 10 245 "terminate", 10 246 "new_proc", 10 247 "operator"); 10 248 10 249 /* NOTE: the server_handle is not included in the response structures because 10 250* it is provided in the user_message_ structures */ 10 251 10 252 10 253 10 254 dcl ls_response_ptr pointer; 10 255 10 256 /* common header for all responses */ 10 257 10 258 dcl 1 login_server_response_header aligned based (ls_response_ptr), 10 259 2 message_type fixed bin, 10 260 2 header_pad bit (36), /* force doubleword alignment */ 10 261 2 version char (8); 10 262 10 263 10 264 10 265 /* "validate" response: indicate whether user_id/password is valid */ 10 266 10 267 dcl 1 login_server_validate_response aligned based (ls_response_ptr), 10 268 2 header like login_server_response_header, /* message_type = LS_VALIDATE_RESPONSE */ 10 269 2 handle bit (72), /* to be provided by the server in subsequent */ 10 270 /* messages for the same connection */ 10 271 2 authorization bit (72), /* default if none was supplied */ 10 272 2 authorization_range (2) bit (72), /* authorization range permitted for this user */ 10 273 2 status_code fixed bin (35), /* 0 iff user is validated */ 10 274 2 person_id char (22), /* primary name from the PNT */ 10 275 2 project_id char (9), /* primary name from the PNT or PDT */ 10 276 2 n_disconnected_processes fixed bin, /* number of disconnected processes for specified user */ 10 277 2 validate_pad fixed bin, 10 278 2 previous_login_info, /* for printing login message */ 10 279 3 time fixed bin (71), 10 280 3 terminal_type char (32), 10 281 3 terminal_id char (4), 10 282 2 incorrect_passwords fixed bin, /* number of times password given incorrectly */ 10 283 2 last_incorrect_password, /* where it came from */ 10 284 3 time fixed bin (71), 10 285 3 terminal_type char (32), 10 286 3 terminal_id char (4), 10 287 2 password_interval fixed bin, /* limit (in days) for password use or change */ 10 288 2 flags, 10 289 3 disconnect bit (1) unaligned, /* if "1"b, close the connection immediately */ 10 290 3 password_changed bit (1) unal, /* "1"b => changed password */ 10 291 3 default_auth_changed bit (1) unal, /* "1"b => changed default authorization */ 10 292 3 default_proj_changed bit (1) unal, /* "1"b => changed default project */ 10 293 3 password_expired bit (1) unal, /* "1"b => password not changed recently enough */ 10 294 3 password_unused_too_long bit (1) unal, /* "1"b => password hasn't been used recently */ 10 295 3 pad bit (30) unaligned; 10 296 10 297 dcl LS_VALIDATE_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsvs0001"); 10 298 10 299 10 300 10 301 /* "process" response: responds to request to create or connect */ 10 302 10 303 dcl 1 login_server_process_response aligned based (ls_response_ptr), 10 304 2 fixed_part, 10 305 3 header like login_server_response_header, /* message_type = LS_PROCESS_RESPONSE */ 10 306 3 status_code fixed bin (35), /* 0 iff process was created or requested process exists */ 10 307 3 process_id bit (36), 10 308 3 new_handle bit (72), /* changed if reconnecting, etc. to preexisting process, all 0 otherwise */ 10 309 3 authorization bit (72), /* authorization of created or existing process */ 10 310 3 process_group_id char (32), /* Person.Project.tag */ 10 311 3 process_number fixed bin, /* as in, "Your disconnected process #2..." */ 10 312 3 n_disconnected_processes fixed bin, /* valid even if code ^= 0, e.g., if request was ambiguous */ 10 313 3 start_event_channel fixed bin (71), /* event channel to wake up user process on */ 10 314 3 login_instance fixed bin, /* "This is your Nth interactive login" */ 10 315 3 accounting_info, /* for destroyed process, if any */ 10 316 4 cpu_usage fixed bin (71), 10 317 4 cost float bin, 10 318 3 flags, /* except for disconnect and logout, invalid if status_code ^= 0 */ 10 319 4 disconnect bit (1) unaligned, /* "1"b => break the connection immediately */ 10 320 4 logout bit (1) unaligned, /* "1"b => restart login sequence */ 10 321 4 created bit (1) unaligned, /* "1"b => new process created */ 10 322 4 connected bit (1) unaligned, /* "1"b => connected to old process */ 10 323 4 new_proc bit (1) unaligned, /* "1"b => connected after new_proc */ 10 324 4 destroyed bit (1) unaligned, /* "1"b => process destroyed */ 10 325 4 anonymous bit (1) unaligned, /* "1"b => anonymous user ("enter" or "enterp") */ 10 326 4 already_logged_in bit (1) unaligned, /* "1"b => user can't log in because he already is */ 10 327 4 message_coordinator bit (1) unaligned, /* "1"b => this connection is going to be used by the message coordinator */ 10 328 4 brief bit (1) unaligned, /* "1"b => brief user attribute from PDT */ 10 329 4 pad bit (26) unaligned, 10 330 3 initial_ring fixed bin, /* ring in which process was created */ 10 331 3 already_logged_in_info, /* relevant if already_logged_in flag is "1"b */ 10 332 4 connection_name char (32), 10 333 4 terminal_type char (32), 10 334 4 terminal_id char (4), 10 335 2 accounting_message_struc, /* character string assembled by initializer giving error or warnings about the user's account */ 10 336 3 accounting_message_length fixed bin, 10 337 3 accounting_message char (ls_process_response_accounting_message_length refer (login_server_process_response.accounting_message_length)); 10 338 10 339 dcl ls_process_response_accounting_message_length fixed bin; 10 340 10 341 dcl LOGIN_SERVER_PROCESS_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsps0001"); 10 342 10 343 10 344 10 345 /* "list" response: used if create request specified "list" command */ 10 346 10 347 dcl 1 login_server_list_response aligned based (ls_response_ptr), 10 348 2 header like login_server_response_header, /* message_type = LS_LIST_RESPONSE */ 10 349 2 n_processes fixed bin, /* number of disconnected processes (might be 0) */ 10 350 2 pad_header fixed bin, 10 351 2 process_info (login_server_list_response_n_processes refer (login_server_list_response.n_processes)), 10 352 3 creation_time fixed bin (71), 10 353 3 authorization bit (72), 10 354 3 initial_ring fixed bin, 10 355 3 pad_process_info fixed bin, 10 356 3 connection_info like user_connection_info; 10 357 10 358 dcl login_server_list_response_n_processes fixed bin; 10 359 10 360 dcl LOGIN_SERVER_LIST_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lslr0001"); 10 361 10 362 10 363 10 364 /* "dial" response: response to dial request */ 10 365 10 366 dcl 1 login_server_dial_response aligned based (ls_response_ptr), 10 367 2 header like login_server_response_header, /* message_type = LS_DIAL_RESPONSE */ 10 368 2 status_code fixed bin (35), /* 0 iff dial server was found and all is OK */ 10 369 2 process_id bit (36), /* of dial server */ 10 370 2 process_group_id char (32), /* likewise */ 10 371 2 authorization bit (72), /* likewise, to make sure connection is usable */ 10 372 2 start_event_channel fixed bin (71), /* event channel to wake up user process on */ 10 373 2 process_ring fixed bin, /* initial ring of dial server */ 10 374 2 flags, 10 375 3 disconnect bit (1) unaligned, /* "1"b => break connection immediately */ 10 376 3 pad bit (35) unaligned; 10 377 10 378 dcl LOGIN_SERVER_DIAL_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsds0001"); 10 379 10 380 10 381 10 382 /* "termination" response: (not a response to anything): notify server that a 10 383* process terminated other than by logout */ 10 384 10 385 dcl 1 login_server_termination_response aligned based (ls_response_ptr), 10 386 2 header like login_server_response_header, /* message_type = LS_TERMINATION_RESPONSE */ 10 387 2 accounting_info, /* for printing in logout message */ 10 388 3 cpu_usage fixed bin (71), 10 389 3 cost float bin, 10 390 3 pad bit (33) unaligned, 10 391 2 process_id bit (36), /* of the logged-out process */ 10 392 2 process_group_id char (32), 10 393 2 status_code fixed bin (35), /* e.g., to indicate reason for fatal error */ 10 394 2 flags, 10 395 3 logout bit (1) aligned, /* no new process coming */ 10 396 3 automatic_logout bit (1) unaligned, 10 397 3 hold bit (1) unaligned, 10 398 3 brief bit (1) unaligned, 10 399 3 new_proc bit (1) unaligned, /* user-requested new process */ 10 400 3 fatal_error bit (1) unaligned, /* process died unexpectedly */ 10 401 3 fpe_caused_logout bit (1) unaligned, /* fatal error doesn't generate new process */ 10 402 3 fpe_loop bit (1) unaligned, /* fatal error loop: too many in too short a time */ 10 403 3 fpe_during_init bit (1) unaligned, /* fatal error during process initialization */ 10 404 3 offer_help bit (1) unaligned, /* print a message offering "help" */ 10 405 3 pad bit (27) unaligned; 10 406 10 407 dcl LOGIN_SERVER_TERMINATION_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lstr0001"); 10 408 10 409 10 410 10 411 /* "new_proc" response: (not actually a response to anything) -- describes a 10 412* new process (after a termination_response) */ 10 413 10 414 dcl 1 login_server_new_proc_response aligned based (ls_response_ptr), 10 415 2 header like login_server_response_header, /* message_type = LS_NEW_PROC_RESPONSE */ 10 416 2 new_authorization bit (72), /* in case of new_proc -auth */ 10 417 2 new_start_event_channel fixed bin (71), /* event channel for starting new process */ 10 418 2 new_process_id bit (36); /* process_id of newly-created process */ 10 419 10 420 dcl LOGIN_SERVER_NEW_PROC_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsnp0001"); 10 421 10 422 10 423 10 424 /* "operator" response: indicates success or failure of operator request */ 10 425 10 426 dcl 1 login_server_operator_response aligned based (ls_response_ptr), 10 427 2 header like login_server_response_header, /* message_type = LS_OPERATOR_RESPONSE */ 10 428 2 status_code fixed bin (35), /* indicates success or failure */ 10 429 2 process_id bit (36), /* process ID of the message coordinator */ 10 430 2 process_group_id char (32), /* Person.Project.tag */ 10 431 2 event_channel fixed bin (71), /* event channel over which to send connect/disconnect wakeups */ 10 432 2 ring fixed bin, /* ring of message coordinator */ 10 433 2 flags, 10 434 3 disconnect bit (1) unaligned, /* "1" => break the connection immediately */ 10 435 3 mbz bit (35) unaligned; 10 436 10 437 10 438 dcl LOGIN_SERVER_OPERATOR_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsos0001"); 10 439 10 440 10 441 /* format of reply message sent to acknowledge receipt of a request */ 10 442 10 443 dcl ls_reply_message_ptr pointer; 10 444 10 445 dcl 1 ls_reply_message aligned based (ls_reply_message_ptr), 10 446 2 code fixed bin (35), 10 447 2 flags, 10 448 3 request_invalid bit (1) unaligned, /* "1"b => could not process request */ 10 449 3 response_sent bit (1) unaligned, /* "1"b => there is a response message */ 10 450 3 as_error_code bit (1) unaligned, /* "1"b => code is from as_error_table_ */ 10 451 3 do_not_reply bit (1) unaligned, /* "1"b => special flag for AS to prevent any reply from being sent to login server */ 10 452 3 mbz bit (32) unaligned; 10 453 10 454 /* The following are values used to identify the various requests internally; those from CREATE_REQ on 10 455* can appear as "command_type" in ls_process_requests. */ 10 456 10 457 dcl (LOGIN_REQ initial (1), 10 458 ENTER_REQ initial (2), 10 459 ENTERP_REQ initial (3), 10 460 CREATE_REQ initial (4), 10 461 DESTROY_REQ initial (5), 10 462 CONNECT_REQ initial (6), 10 463 NEW_PROC_REQ initial (7), 10 464 LIST_REQ initial (8)) 10 465 fixed bin internal static options (constant); 10 466 10 467 /* The following are the possible values for login_server_validate_request.network_connection_type. 10 468* They are used by the initializer to select a default process overseer and an instance tag. 10 469**/ 10 470 10 471 dcl (NETWORK_CONNECTION_LOGIN initial (1), 10 472 NETWORK_CONNECTION_DSA_FILE_TRANSFER initial (2)) 10 473 fixed bin internal static options (constant); 10 474 10 475 /* END INCLUDE FILE ... login_server_messages.incl.pl1 */ 1516 1517 /* BEGIN INCLUDE FILE ... pdt.incl.pl1 */ 11 2 /* Requires user_attributes.incl.pl1 */ 11 3 11 4 /* Modified 740723 by PG to add AIM info */ 11 5 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 11 6 /* Modified May 1976 by T. Casey to add cutoff warning thresholds and change version to 3 */ 11 7 /* Modified May 1977 by John Gintell to add reqfile, projfile, and SAT to header */ 11 8 /* Modified May 1978 by T. Casey to add pdir_quota to user entry */ 11 9 /* Modified June 1978 by T. Casey to add rel ptr to pdt hash table */ 11 10 /* Modified November 1978 by T. Casey to add max_(fore back)ground, n_(fore back)ground and abs_foreground_cpu_limit */ 11 11 /* Modified October 1979 by T. Casey to add counters for interactive and disconnected processes. */ 11 12 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 11 13 /* Modified May 1980 by R. McDonald to use iod cpu time field for page charging (UNCA) */ 11 14 /* Modified December 1981 by E. N. Kittlitz for user_warn fields */ 11 15 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 11 16 /* Modified September 1982 by E. N. Kittlitz for default ring. */ 11 17 /* Modified 1984-07-05 BIM for min authorization, version to 4 */ 11 18 11 19 dcl (PDT_version init (4), /* version of this declaration */ 11 20 PDT_header_lth init (256), /* length in words of PDT head */ 11 21 PDT_entry_lth init (256), /* length in words of PDT entry */ 11 22 11 23 PDT_project_name_length init (9), /* proper length of pdt.project_name */ 11 24 PDT_person_id_length init (22) /* proper length of user.person_id */ 11 25 ) fixed bin internal static options (constant); 11 26 11 27 dcl 1 pdt based (pdtp) aligned, 11 28 12 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 12 2 12 3 /* the "author" items must always be the first ones in the table. The 12 4* module which moves the converted table to the System Control process 12 5* fills in these data items and assumes them to be at the head of the segment 12 6* regardless of the specific table's actual declaration. The variables 12 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 12 8* respectively. For tables installed in multiple processes, these 12 9* are to be used to lock out multiple installations. */ 12 10 12 11 /* Lock should be used as a modification lock. Since, in general, 12 12* entries may not be moved in system tables, even by installations, 12 13* it is sufficient for only installers and programs that change threads 12 14* to set or respect the lock. Simply updating data in an entry 12 15* requires no such protection. 12 16* 12 17* Last_install_time is used by readers of system tables to detect 12 18* installations or other serious modifications. By checking it before 12 19* and after copying a block of data, they can be protected against 12 20* modifications. 12 21* 12 22* Modules that set the lock should save proc_group_id, and then 12 23* put their group id there for the time they hold the lock. 12 24* if they do not actually install the, they should restore the group id. 12 25**/ 12 26 12 27 2 author aligned, /* validation data about table's author */ 12 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 12 29 3 lock bit (36), /* installation lock */ 12 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 12 31 3 update_authorization bit (1) unal, /* update only authorizations */ 12 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 12 33 3 pad bit (33) unaligned, 12 34 3 last_install_time fixed bin (71), 12 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 12 36 3 w_dir char (64), /* author's working directory */ 12 37 12 38 /* END INCLUDE FILE author.incl.pl1 */ 11 29 11 30 2 max_size fixed bin, /* max number of entries table can grow */ 11 31 2 current_size fixed bin, /* current size of table (in entries) */ 11 32 2 version fixed bin, /* table version */ 11 33 2 freep fixed bin, /* relptr to begin of free chain */ 11 34 2 n_users fixed bin, /* number of entries actually used */ 11 35 2 project_name char (28), /* name of project */ 11 36 2 project_dir char (64), /* treename of project's directory */ 11 37 2 projfile_version fixed bin, 11 38 2 projentry bit (66*36), 11 39 2 pad3 (5) bit (36) aligned, 11 40 2 reqfile_version fixed bin, 11 41 2 reqentry bit (40*36), 11 42 2 pad4 (9) fixed bin, 11 43 2 sat_version fixed bin, 11 44 2 satentry bit (52*36), /* everything in sat.project from project.at on */ 11 45 2 pad5 (4) bit (36) aligned, 11 46 2 date_reqfile_copied fixed bin (71), 11 47 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number, easier than looking in satentry */ 11 48 2 pad2l bit (27) unaligned, 11 49 2 pad2 (16) fixed bin, /* make header 256 words long */ 11 50 2 ht_relp fixed bin (18) aligned, /* if nonzero, pdt has hash table at that loc */ 11 51 2 user (1019) aligned, /* the project definition table entries */ 11 52 3 pad (256) bit (36) aligned; /* each entry is 256 words long */ 11 53 11 54 /* The hash table, if there is one, is right after the last user, and is described in hashst.incl.pl1 */ 11 55 11 56 11 57 11 58 dcl 1 user based (pdtep) aligned, /* declaration of a single PDT entry */ 11 59 2 state fixed bin, /* 1 = normal, 2 = deleted 0 = free */ 11 60 2 lock bit (36), /* update lock */ 11 61 2 person_id char (24) aligned, /* login name of user */ 11 62 2 now_in fixed bin, /* count of users logged in on this entry */ 11 63 2 password char (8) aligned, /* password for anonymous user */ 11 64 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 11 65 2 initial_procedure char (64) aligned, /* initproc and subsystem name packed into one string */ 11 66 2 home_dir char (64) aligned, /* user's default working directory */ 11 67 2 bump_grace fixed bin, /* number of minutes he is protected */ 11 68 2 high_ring fixed bin, /* highest ring user may use */ 11 69 2 default_ring fixed bin (17) unal, /* ring user will start in */ 11 70 2 low_ring fixed bin (17) unal, /* lowest ring user may use */ 11 71 2 outer_module char (32), /* outer module used if user is interactive */ 11 72 2 lot_size fixed bin, /* size of linkage offset table */ 11 73 2 kst_size fixed bin, /* size of known segment table */ 11 74 2 cls_size fixed bin, /* size of combined linkage */ 11 75 2 uflags, /* various flags */ 11 76 3 dont_call_init_admin bit (1) unal, /* call overseer direct */ 11 77 3 ip_given bit (1) unal, /* ip_len gives length of initproc packed in initial_procedure */ 11 78 3 ss_given bit (1) unal, /* subsystem name is packed in initial_procedure */ 11 79 3 flagpad bit (33) unal, 11 80 2 ip_len fixed bin (17) unal, /* length of initproc name packed in initial_procedure */ 11 81 2 ss_len fixed bin (17) unal, /* length of subsystem name packed in initial_procedure */ 11 82 2 dollar_limit float bin, 11 83 2 dollar_charge float bin, /* total dollars spent this month */ 11 84 2 shift_limit (0: 7) float bin, 11 85 2 daton fixed bin (71), /* date user added to system */ 11 86 2 datof fixed bin (71), /* date user deleted */ 11 87 2 last_login_time fixed bin (71), /* time of last login */ 11 88 2 last_login_unit char (4), /* terminal id last used */ 11 89 2 last_login_type fixed bin (17) unal, /* terminal type */ 11 90 2 last_login_line_type fixed bin (17) unal, /* terminal line type */ 11 91 2 time_last_bump fixed bin (71), /* for bump-wait */ 11 92 2 last_update fixed bin (71), /* time of last transaction */ 11 93 2 logins fixed bin, /* number of logins */ 11 94 2 crashes fixed bin, /* sessions abnormally terminated */ 11 95 2 interactive (0: 7), /* interactive use, shifts 0-7 */ 11 96 3 charge float bin, /* total dollar charge this shift */ 11 97 3 xxx fixed bin, 11 98 3 cpu fixed bin (71), /* cpu usage in microseconds */ 11 99 3 core fixed bin (71), /* core demand in page-microseconds */ 11 100 3 connect fixed bin (71), /* total console time in microseconds */ 11 101 3 io_ops fixed bin (71), /* total i/o ops on terminal */ 11 102 2 absentee (4), /* absentee use, queues 1-4 */ 11 103 3 charge float bin, /* dollar charge this queue */ 11 104 3 jobs fixed bin, /* number of jobs submitted */ 11 105 3 cpu fixed bin (71), /* total cpu time in microseconds */ 11 106 3 memory fixed bin (71), /* total memory demand */ 11 107 2 iod (4), /* io daemon use, queues 1-4 */ 11 108 3 charge float bin, /* dollar charge this queue */ 11 109 3 pieces fixed bin, /* pieces of output requested */ 11 110 3 pad fixed bin (35), 11 111 3 pages fixed bin (35), /* number of pages output */ 11 112 3 lines fixed bin (71), /* total record count of output */ 11 113 2 devices (16) float bin, /* device charges */ 11 114 2 time_last_reset fixed bin (71), /* time PDT last updated */ 11 115 2 absolute_limit float bin, /* Limit, not reset monthly */ 11 116 2 absolute_spent float bin, /* Spending against this */ 11 117 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 11 118 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 11 119 2 pad_was_authorization bit (72) aligned, 11 120 2 group char (8), /* group for this user (if at.igroup = "1"b) */ 11 121 2 warn_days fixed bin (17) unaligned, /* warn user if less than this many days to cutoff */ 11 122 2 warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of funds left */ 11 123 2 warn_dollars float bin, /* warn user if less than this amount of funds left */ 11 124 2 n_foreground fixed bin (9) unsigned unaligned, /* number of foreground and background processes */ 11 125 2 n_background fixed bin (9) unsigned unaligned, /* that this user has. see limits just below */ 11 126 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and */ 11 127 2 max_background fixed bin (9) unsigned unaligned, /* background processes that this user can have */ 11 128 2 n_interactive fixed bin (9) unsigned unaligned, /* number of interactive processes that user has */ 11 129 2 n_disconnected fixed bin (9) unsigned unaligned, /* number of disconnected processes that user has */ 11 130 2 pdtupad1 fixed bin (18) unsigned unaligned, 11 131 2 user_warn_days fixed bin (17) unaligned, /* warn user if less than this many days to user cutoff */ 11 132 2 user_warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of user funds left */ 11 133 2 user_warn_dollars float bin, /* warn user if less than this amount of user funds left */ 11 134 2 user_authorization (2) bit (72) aligned, /* range */ 11 135 2 pdtupad (5) fixed bin, 11 136 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit (sec) on foreground absentee jobs */ 11 137 2 pdir_quota fixed bin (17) unaligned, /* quota to put on user's pdir (0 => use default) */ 11 138 2 chain fixed bin; /* free chain */ 11 139 11 140 /* END INCLUDE FILE ... pdt.incl.pl1 */ 1517 1518 1519 dcl pdtp pointer automatic init(null); /* required by pdt.incl.pl1 */ 1520 /* BEGIN send_mail_info include file */ 13 2 13 3 dcl send_mail_info_version_2 fixed bin init(2); 13 4 13 5 dcl 1 send_mail_info aligned, 13 6 2 version fixed bin, /* = 2 */ 13 7 2 sent_from char(32) aligned, 13 8 2 switches, 13 9 3 wakeup bit(1) unal, 13 10 3 mbz1 bit(1) unal, 13 11 3 always_add bit(1) unal, 13 12 3 never_add bit(1) unal, 13 13 3 notify bit(1) unal, 13 14 3 acknowledge bit(1) unal, 13 15 3 mbz bit(30) unal; 13 16 13 17 /* END send_mail_info include file */ 1520 1521 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 14 2 14 3 14 4 /****^ HISTORY COMMENTS: 14 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 14 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 14 7* Added sl_info structure and associated named constants for use in calling 14 8* sys_log_$general. 14 9* END HISTORY COMMENTS */ 14 10 14 11 14 12 /* format: style4 */ 14 13 14 14 dcl ( 14 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 14 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 14 17 SL_TYPE init (-1), /* type message */ 14 18 SL_LOG_SILENT init (0), /* log message */ 14 19 SL_LOG init (1), /* log & type message */ 14 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 14 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 14 22 ) fixed bin internal static options (constant); 14 23 14 24 dcl 1 sl_info aligned automatic, 14 25 2 version char(8), /* structure version */ 14 26 2 arg_list_ptr ptr, /* arg_list with values */ 14 27 2 loc, 14 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 14 29 /* These flags control where the corresponding data item is found.*/ 14 30 /* -1: data appears in the corresponding structure element below */ 14 31 /* 0: data is not present anywhere */ 14 32 /* +N: data is Nth item in argument list pointed to by */ 14 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 14 34 /* corresponding structure element. */ 14 35 /* if data = +N: */ 14 36 /* argN is data_ptr, argN+1 is data_len */ 14 37 /* if ioa_msg = +N: */ 14 38 /* argN+1, ... argLAST are arguments substituted into the */ 14 39 /* ioa_msg control string. The formatted msg is returned. */ 14 40 2 flags, 14 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 14 42 3 flags_pad bit(35) unal, 14 43 2 mode fixed bin, /* as-mode, command-mode */ 14 44 2 severity fixed bin, /* error severity */ 14 45 2 code fixed bin(35), /* error table code */ 14 46 2 caller char(65) varying, /* caller refname$entryname*/ 14 47 2 data, /* binary data ptr/length */ 14 48 3 data_ptr ptr, 14 49 3 data_lth fixed bin(21), 14 50 2 class char(10) varying, /* binary data class */ 14 51 2 ioa_msg char(500) varying; /* formatted message text */ 14 52 14 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 54 /* */ 14 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 14 56 /* their data types should be as shown in the structure above, except that */ 14 57 /* character strings should be char(*) nonvarying. */ 14 58 /* */ 14 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 60 14 61 /* value for sl_info.version */ 14 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 14 63 14 64 /* values for sl_info.mode */ 14 65 dcl (SL_INFO_as_mode init(1), 14 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 14 67 14 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 14 69 dcl (SL_INFO_arg_given_in_structure init(-1), 14 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 14 71 14 72 14 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 74 /* */ 14 75 /* The following static structures are commonly used in the Login Server */ 14 76 /* user control software. */ 14 77 /* */ 14 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 79 14 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 14 81 14 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 14 83 2 version char(8) init ("sl_info1"), 14 84 2 arg_list_ptr ptr init (null), 14 85 2 loc, 14 86 3 (mode init (-1), 14 87 severity init ( 1), 14 88 code init ( 2), 14 89 caller init (-1), 14 90 data init ( 0), 14 91 class init ( 0), 14 92 ioa_msg init ( 3)) fixed bin, 14 93 2 flags, 14 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 14 95 3 flags_pad bit(35) unal init ("0"b), 14 96 2 mode fixed bin init ( 1), 14 97 2 severity fixed bin init ( 0), 14 98 2 code fixed bin(35) init ( 0), 14 99 2 caller char(65) varying init (""), 14 100 2 data, 14 101 3 data_ptr ptr init (null), 14 102 3 data_lth fixed bin(21) init ( 0), 14 103 2 class char(10) varying init (""), 14 104 2 ioa_msg char(500) varying init (""); 14 105 14 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 14 107 14 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 14 109 2 version char(8) init ("sl_info1"), 14 110 2 arg_list_ptr ptr init (null), 14 111 2 loc, 14 112 3 (mode init (-1), 14 113 severity init ( 1), 14 114 code init ( 0), 14 115 caller init (-1), 14 116 data init ( 0), 14 117 class init ( 0), 14 118 ioa_msg init ( 2)) fixed bin, 14 119 2 flags, 14 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 14 121 3 flags_pad bit(35) unal init ("0"b), 14 122 2 mode fixed bin init ( 1), 14 123 2 severity fixed bin init ( 0), 14 124 2 code fixed bin(35) init ( 0), 14 125 2 caller char(65) varying init (""), 14 126 2 data, 14 127 3 data_ptr ptr init (null), 14 128 3 data_lth fixed bin(21) init ( 0), 14 129 2 class char(10) varying init (""), 14 130 2 ioa_msg char(500) varying init (""); 14 131 14 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 14 133 14 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 14 135 2 version char(8) init ("sl_info1"), 14 136 2 arg_list_ptr ptr init (null), 14 137 2 loc, 14 138 3 (mode init (-1), 14 139 severity init ( 1), 14 140 code init ( 0), 14 141 caller init (-1), 14 142 data init ( 0), 14 143 class init ( 0), 14 144 ioa_msg init ( 2)) fixed bin, 14 145 2 flags, 14 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 14 147 3 flags_pad bit(35) unal init ("0"b), 14 148 2 mode fixed bin init ( 1), 14 149 2 severity fixed bin init ( 0), 14 150 2 code fixed bin(35) init ( 0), 14 151 2 caller char(65) varying init (""), 14 152 2 data, 14 153 3 data_ptr ptr init (null), 14 154 3 data_lth fixed bin(21) init ( 0), 14 155 2 class char(10) varying init (""), 14 156 2 ioa_msg char(500) varying init (""); 14 157 14 158 14 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 14 160 14 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 14 162 2 version char(8) init ("sl_info1"), 14 163 2 arg_list_ptr ptr init (null), 14 164 2 loc, 14 165 3 (mode init (-1), 14 166 severity init ( 1), 14 167 code init ( 2), 14 168 caller init (-1), 14 169 data init ( 0), 14 170 class init ( 0), 14 171 ioa_msg init ( 4)) fixed bin, 14 172 2 flags, 14 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 14 174 3 flags_pad bit(35) unal init ("0"b), 14 175 2 mode fixed bin init ( 1), 14 176 2 severity fixed bin init ( 0), 14 177 2 code fixed bin(35) init ( 0), 14 178 2 caller char(65) varying init (""), 14 179 2 data, 14 180 3 data_ptr ptr init (null), 14 181 3 data_lth fixed bin(21) init ( 0), 14 182 2 class char(10) varying init (""), 14 183 2 ioa_msg char(500) varying init (""); 14 184 14 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 14 186 14 187 dcl 1 sl_info_code_msg aligned int static options(constant), 14 188 2 version char(8) init ("sl_info1"), 14 189 2 arg_list_ptr ptr init (null), 14 190 2 loc, 14 191 3 (mode init (-1), 14 192 severity init (-1), 14 193 code init ( 1), 14 194 caller init (-1), 14 195 data init ( 0), 14 196 class init ( 0), 14 197 ioa_msg init ( 2)) fixed bin, 14 198 2 flags, 14 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 14 200 3 flags_pad bit(35) unal init ("0"b), 14 201 2 mode fixed bin init ( 1), 14 202 2 severity fixed bin init ( 0), 14 203 2 code fixed bin(35) init ( 0), 14 204 2 caller char(65) varying init (""), 14 205 2 data, 14 206 3 data_ptr ptr init (null), 14 207 3 data_lth fixed bin(21) init ( 0), 14 208 2 class char(10) varying init (""), 14 209 2 ioa_msg char(500) varying init (""); 14 210 14 211 14 212 /* Syntax: call Trace (ioa_ctl, args); */ 14 213 14 214 dcl 1 sl_info_msg aligned int static options(constant), 14 215 2 version char(8) init ("sl_info1"), 14 216 2 arg_list_ptr ptr init (null), 14 217 2 loc, 14 218 3 (mode init (-1), 14 219 severity init (-1), 14 220 code init ( 0), 14 221 caller init (-1), 14 222 data init ( 0), 14 223 class init ( 0), 14 224 ioa_msg init ( 1)) fixed bin, 14 225 2 flags, 14 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 14 227 3 flags_pad bit(35) unal init ("0"b), 14 228 2 mode fixed bin init ( 1), 14 229 2 severity fixed bin init ( 0), 14 230 2 code fixed bin(35) init ( 0), 14 231 2 caller char(65) varying init (""), 14 232 2 data, 14 233 3 data_ptr ptr init (null), 14 234 3 data_lth fixed bin(21) init ( 0), 14 235 2 class char(10) varying init (""), 14 236 2 ioa_msg char(500) varying init (""); 14 237 14 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 1521 1522 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 15 2 15 3 15 4 /****^ HISTORY COMMENTS: 15 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 15 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 15 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 15 8* attribute switches. 15 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 15 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 15 12* be deleted. 15 13* B) Add constants identifying attributes that can be changed by user at 15 14* login, etc. 15 15* END HISTORY COMMENTS */ 15 16 15 17 15 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 15 19 15 20 /* format: style4 */ 15 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 15 22 (2 administrator bit (1), /* 1 system administrator privileges */ 15 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 15 24 2 nobump bit (1), /* 2 user cannot be bumped */ 15 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 15 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 15 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 15 28* . of same project (distinct from "nobump") */ 15 29 2 nolist bit (1), /* 7 don't list user on "who" */ 15 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 15 31 2 multip bit (1), /* 9 user may have several processes */ 15 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 15 33 2 brief bit (1), /* 11 no login or logout message */ 15 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 15 35 2 vhomedir bit (1), /* 13 user may change homedir */ 15 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 15 37 2 sb_ok bit (1), /* 15 user may be standby */ 15 38 2 pm_ok bit (1), /* 16 user may be primary */ 15 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 15 40 2 daemon bit (1), /* 18 user may login as daemon */ 15 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 15 42 2 no_warning bit (1), /* 20 no warning message */ 15 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 15 44* . in PDT: this user has an individual load control group */ 15 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 15 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 15 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 15 48 2 pad bit (12)) unaligned; 15 49 15 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 15 51 ("none", /* 0 */ 15 52 "administrator", /* 1 */ 15 53 "primary_line", /* 2 */ 15 54 "nobump", /* 3 */ 15 55 "guaranteed_login", /* 4 */ 15 56 "anonymous", /* 5 */ 15 57 "nopreempt", /* 6 */ 15 58 "nolist", /* 7 */ 15 59 "dialok", /* 8 */ 15 60 "multip", /* 9 */ 15 61 "bumping", /* 10 */ 15 62 "brief", /* 11 */ 15 63 "vinitproc", /* 12 */ 15 64 "vhomedir", /* 13 */ 15 65 "nostartup", /* 14 */ 15 66 "no_secondary", /* 15 */ 15 67 "no_prime", /* 16 */ 15 68 "no_eo", /* 17 */ 15 69 "daemon", /* 18 */ 15 70 "", /* 19 vdim OBSOLETE */ 15 71 "no_warning", /* 20 */ 15 72 "igroup", /* 21 */ 15 73 "save_pdir", /* 22 */ 15 74 "disconnect_ok", /* 23 */ 15 75 "save_on_disconnect"); /* 24 */ 15 76 15 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 15 78 ("null", /* 0 */ 15 79 "admin", /* 1 */ 15 80 "", "", /* 2 - 3 */ 15 81 "guar", /* 4 */ 15 82 "anon", /* 5 */ 15 83 "", "", /* 6 - 7 */ 15 84 "dial", /* 8 */ 15 85 "multi_login", /* 9 */ 15 86 "preempting", /* 10 */ 15 87 "", /* 11 */ 15 88 "v_process_overseer", /* 12 */ 15 89 "v_home_dir", /* 13 */ 15 90 "no_start_up", /* 14 */ 15 91 "no_sec", /* 15 */ 15 92 "no_primary", /* 16 */ 15 93 "no_edit_only", /* 17 */ 15 94 "op_login", /* 18 */ 15 95 "", /* 19 */ 15 96 "nowarn", /* 20 */ 15 97 "", "", "", /* 21 - 23 */ 15 98 "save"); /* 24 */ 15 99 15 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 15 101 options(constant) init("000000000010000000010000000000000000"b); 15 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 15 103 15 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 15 105 options(constant) init("000000000010000000010000000000000000"b); 15 106 /* PDT value for (brief, no_warning) is default */ 15 107 15 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 15 109 options(constant) init("000100000110010000010000000000000000"b); 15 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 15 111 16 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 16 2 16 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 4 /* */ 16 5 /* This include file describes the attributes of an absentee job. It is */ 16 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 16 7 /* and PIT.incl.pl1. */ 16 8 /* */ 16 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 16 10 16 11 /****^ HISTORY COMMENTS: 16 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 16 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 16 14* Separated abs_attributes from the request structure 16 15* (abs_message_format.incl.pl1) so that the identical structure could be 16 16* used in the ute structure (user_table_entry.incl.pl1). 16 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 16 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 16 19* Added ABS_ATTRIBUTE_NAMES array. 16 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 16 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 16 22* Added the no_start_up flag. SCP6367 16 23* END HISTORY COMMENTS */ 16 24 16 25 dcl 1 user_abs_attributes aligned based, 16 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 16 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 16 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 16 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 16 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 16 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 16 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 16 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 16 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 16 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 16 36 2 attributes_pad bit (26) unaligned; 16 37 16 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 16 39 "restartable", 16 40 "user_deferred_until_time", 16 41 "proxy", 16 42 "set_bit_cnt", 16 43 "time_in_gmt", 16 44 "user_deferred_indefinitely", 16 45 "secondary_ok", 16 46 "truncate_absout", 16 47 "restarted", 16 48 "no_start_up"); 16 49 16 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 16 51 15 112 15 113 15 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 1522 1523 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 17 2 17 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 4 /* */ 17 5 /* This include file requires that the user include */ 17 6 /* user_attributes.incl.pl1 as well. It also includes */ 17 7 /* abs_attributes.incl.pl1 itself. */ 17 8 /* */ 17 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 17 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 17 11 /* */ 17 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 13 17 14 /****^ HISTORY COMMENTS: 17 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 17 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 17 17* This comment for hcom. 17 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 17 19* anstbl.incl.pl1, and dutbl.incl.pl1. 17 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 17 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 17 22* 84-07-12 BIM added min_process_authorization 17 23* 84-12-31 Keith Loepere added pdir_dir_quota 17 24* 85-01-16 by E. Swenson to add ute.session_uid 17 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 17 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 17 27* Added fields for DSA login server support. 17 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 17 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 17 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 17 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 17 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 17 33* Added disconnection_rel_minutes. 17 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 17 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 17 36* Changed structure under ute.abs_attributes to use like structure in 17 37* abs_attributes.incl.pl1. This allows the same attributes to be used 17 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 17 39* file. 17 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 17 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 17 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 17 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 17 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 17 45* A) Global reorganization to locate things by type of data. 17 46* B) Eliminate ute.uflags.logged_in. 17 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 17 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 17 49* A) Reduced overlength person and project fields to proper length. 17 50* B) Adjusted dialed-console section to begin on even word boundary. 17 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 17 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 17 53* Add ute.line_type. 17 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 17 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 17 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 17 57* for the storage. SCP6367 17 58* END HISTORY COMMENTS */ 17 59 17 60 /* format: style4 */ 17 61 17 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 63 /* */ 17 64 /* Each of the named sections below defines a type of data. Typing comes */ 17 65 /* from data associated with the ute entry itself, with the person, with */ 17 66 /* login argument data, from the main user of the data (eg, dialup_, */ 17 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 17 68 /* and is an even number of words long. The total structure is 300 decimal */ 17 69 /* words long. */ 17 70 /* */ 17 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 17 72 17 73 17 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 17 75 17 76 dcl utep pointer automatic init (null); 17 77 17 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 17 79 17 80 /* Variables which give state of this entry */ 17 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 17 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 17 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 17 84 2 next_free fixed bin, /* points to previous free entry */ 17 85 17 86 /* Information user gave about person_id associated with this entry. */ 17 87 2 person char (24) unal, /* user's name */ 17 88 2 project char (12) unal, /* project of absentee user */ 17 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 17 90 2 tag_pad bit (27) unal, 17 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 17 92 2 login_flags, /* flags for login data */ 17 93 3 cpw bit (1) unal, /* flag for wish to change password */ 17 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 17 95 3 special_pw unal, /* dial or slave */ 17 96 4 dial_pw bit (1) unal, /* true if dial -user */ 17 97 4 slave_pw bit (1) unal, /* true if slave -user */ 17 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 17 99 3 cda bit (1) unal, /* flag to change default authorization */ 17 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 17 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 17 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 17 103 3 pw_pad bit (25) unal, /* spare parts */ 17 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 17 105 /* Must remain last in pw_flags so it does not */ 17 106 /* appear in PW_FLAG_VALUES array below. */ 17 107 2 generated_pw char (8) unal, /* user must type this as new password */ 17 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 17 109 2 process_authorization bit (72), /* access_authorization of this process */ 17 110 17 111 /* Information user gave about process associated with this entry. */ 17 112 2 outer_module char (32) unal, /* Name of console dim */ 17 113 2 home_dir char (64) unal, /* initial home directory */ 17 114 2 init_proc char (64) unal, /* name of login responder */ 17 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 17 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 17 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 17 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 17 119 2 initial_ring fixed bin, /* ring process will be started in */ 17 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 17 121 2 ln_args fixed bin, /* length of string containing arguments */ 17 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 17 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 17 124 17 125 /* Most of the following information is relevant only to absentee processes */ 17 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 17 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 17 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 17 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 17 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 17 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 17 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 17 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 17 134* (but see uflags.adjust_abs_q_no). */ 17 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 17 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 17 137 2 abs_flags, 17 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 17 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 17 140 3 abs_flags_pad bit (34) unal, 17 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 17 142 2 sender char (32) unal, /* name of RJE station that job is from */ 17 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 17 144 2 proxy_project char (9) unal, 17 145 2 proxy_project_pad char (3) unal, 17 146 2 abs_pad fixed bin, 17 147 17 148 /* Information about process actually created */ 17 149 2 proc_id bit (36), /* process id of absentee process */ 17 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 17 151 2 process_authorization_range (2) bit (72) aligned, 17 152 2 audit bit (36), /* audit flags for user */ 17 153 2 lot_size fixed bin, /* Size of linkage offset table */ 17 154 2 kst_size fixed bin, /* Size of process known segment table */ 17 155 2 cls_size fixed bin, /* Size of process combined linkage */ 17 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 17 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 17 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 17 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 17 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 17 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 17 162 2 pdir_pad fixed bin(17) unal, 17 163 2 process_pad fixed bin, 17 164 17 165 /* Information about primary terminal associated with this entry */ 17 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 17 167 2 terminal_type char (32) unaligned, /* terminal type */ 17 168 2 line_type fixed bin, /* line type */ 17 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 17 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 17 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 17 172 17 173 /* Variables useful for dialed terminals */ 17 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 17 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 17 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 17 177 2 dial_server_flags, 17 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 17 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 17 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 17 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 17 182 17 183 /* Information about usage/accounting. Device usage meters are in a 17 184* separate segment, "devtab" */ 17 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 17 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 17 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 17 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 17 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 17 190 2 last_update_time fixed bin (71), /* time of last account update */ 17 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 17 192 2 ndevices fixed bin, /* Count of attached devices */ 17 193 2 device_head fixed bin, /* Table index of head of device chain */ 17 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 17 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 17 196 2 rs_number_pad bit(30) unal, 17 197 2 usage_pad fixed bin, 17 198 17 199 /* Information for dialup_ (control variables). */ 17 200 2 event fixed bin (71), /* event associated with channel or user manager */ 17 201 2 uprojp ptr, /* ptr to user project sat entry */ 17 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 17 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 17 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 17 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 17 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 17 207 2 count fixed bin, /* counter for logins and dialups */ 17 208 2 n_processes fixed bin, /* number of processes created in this session */ 17 209 2 lock_value fixed bin, /* number of locks set for this entry */ 17 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 17 211 2 login_code char (8) unal, /* login command from LOGIN line */ 17 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 17 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 17 214 2 logout_type char (4) unal, /* type of logout */ 17 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 17 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 17 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 17 218 2 work_class fixed bin, /* work class used by priority scheduler */ 17 219 2 group char (8) unal, /* party group identifier */ 17 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 17 221 17 222 2 uflags, /* Miscellaneous flags */ 17 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 17 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 17 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 17 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 17 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 17 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 17 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 17 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 17 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 17 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 17 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 17 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 17 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 17 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 17 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 17 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 17 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 17 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 17 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 17 242 3 uflags_pad bit (17) unal, 17 243 17 244 /* Information used by load_ctl_ for the process */ 17 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 17 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 17 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 17 248 17 249 17 250 /* Information for login server */ 17 251 2 login_server_info, 17 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 17 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 17 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 17 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 17 256 3 process_id bit (36) aligned, /* process_id of login server */ 17 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 17 258 17 259 /* values for ute.process_type */ 17 260 17 261 dcl (PT_INTERACTIVE initial (1), 17 262 PT_ABSENTEE initial (2), 17 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 17 264 17 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 17 266 "INVALID-TYPE", 17 267 "interactive", 17 268 "absentee", 17 269 "daemon"); 17 270 17 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 17 272 "UNKNOWN-TABLE", 17 273 "answer_table", 17 274 "absentee_user_table", 17 275 "daemon_user_table"); 17 276 17 277 17 278 /* values for ute.pw_flags.mask_ctl */ 17 279 17 280 dcl (DO_MASK init ("00"b), 17 281 DONT_MASK init ("01"b), 17 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 17 283 17 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 17 285 "do_mask", "dont_mask", "derive_mask", ""); 17 286 17 287 17 288 /* names for ute.pw_flags */ 17 289 17 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 17 291 "cpw", 17 292 "generate_pw", 17 293 "dial_pw", 17 294 "slave_pw", 17 295 "cdp", 17 296 "cda", 17 297 "auth_given", 17 298 "noprint", 17 299 "operator"); 17 300 17 301 /* names for ute.uflags */ 17 302 17 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 17 304 "dont_call_init_admin", 17 305 "ip_given", 17 306 "ss_given", 17 307 "lvs_attached", 17 308 "send_initial_string", 17 309 "adjust_abs_q_no", 17 310 "foreground_secondary_ok", 17 311 "foreground_job", 17 312 "sus_sent", 17 313 "suspended", 17 314 "ignore_cpulimit", 17 315 "deferral_logged", 17 316 "save_if_disconnected", 17 317 "disconnected", 17 318 "disconnected_list", 17 319 "proc_create_ok", 17 320 "activity_can_unbump", 17 321 "fpe_causes_logout", 17 322 "user_specified_immediate"); 17 323 17 324 /* names for ute.abs_flags */ 17 325 17 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 17 327 "abs_run", 17 328 "notify"); 17 329 17 330 /* names of ute.dial_server_flags */ 17 331 17 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 17 333 "registered", 17 334 "privileged"); 17 335 17 336 /* values of ute.login_result */ 17 337 17 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 17 339 "logged in", 17 340 "login failed, hangup", 17 341 "login failed, try again"); 17 342 17 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 1523 1524 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 18 2 18 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 18 4 /* */ 18 5 /* This include file declares the header shared by the answer_table, */ 18 6 /* absentee_user_table and daemon_user_table include files. */ 18 7 /* */ 18 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 18 9 18 10 /****^ HISTORY COMMENTS: 18 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 18 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 18 13* Initial coding. 18 14* END HISTORY COMMENTS */ 18 15 18 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 18 17 2 header_version fixed bin, /* version of the header (3) */ 18 18 2 entry_version fixed bin, /* version of user table entries */ 18 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 18 20 2 header_length fixed bin, /* length of the header */ 18 21 2 max_size fixed bin, /* max number of entries in this table */ 18 22 2 current_size fixed bin, /* actual size of table (in entries) */ 18 23 2 number_free fixed bin, /* number of free entries in the table. */ 18 24 2 first_free fixed bin, /* index of first entry in the free list. */ 18 25 2 as_procid bit (36), /* process ID of user table manager process */ 18 26 2 ut_header_pad fixed bin; 18 27 18 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 1524 1525 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 19 2 19 3 /* Modified 740723 by PG to add security info */ 19 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 19 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 19 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 19 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 19 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 19 9 19 10 dcl 1 whotab based (whoptr) aligned, 19 11 2 mxusers fixed bin, /* max. number of users on system */ 19 12 2 n_users fixed bin, /* current number of users */ 19 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 19 14 2 n_units fixed bin, /* current load */ 19 15 2 timeup fixed bin (71), /* time system was started */ 19 16 2 session char (8), /* AS state, same as anstbl.session */ 19 17 2 nextsd fixed bin (71), /* time we will shutdown */ 19 18 2 until fixed bin (71), /* projected time we start up again */ 19 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 19 20 2 erfno char (8), /* if a crash, the error number */ 19 21 2 obsolete_why char (32), /* reason for last shutdown */ 19 22 2 installation_id char (32), /* name of installation */ 19 23 2 obsolete_message char (32), /* message for all users */ 19 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 19 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 19 26 2 max_abs_users fixed bin, /* max number of absentee users */ 19 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 19 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 19 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 19 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 19 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 19 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 19 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 19 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 19 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 19 36 2 pad1 bit (9) unal, 19 37 2 pad (3) fixed bin, 19 38 2 version fixed bin, /* structure version */ 19 39 2 header_size fixed bin, /* length of header in words */ 19 40 2 entry_size fixed bin, /* length of entry in words */ 19 41 /* laste_adjust is used only by Answering Service programs */ 19 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 19 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 19 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 19 45 19 46 /* whotab header extension: The header is extended from 64 words by 19 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 19 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 19 49* present. This allows existing programs to function with old definitions of 19 50* whotab. Obviously no new header field can be more than 31 contiguous words in 19 51* length. In the Answering Service, all programs using whotab must be compiled 19 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 19 53 19 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 19 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 19 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 19 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 19 58 2 abs_control, /* see absentee_user_table */ 19 59 3 mnbz bit (1) unal, /* must not be zero */ 19 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 19 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 19 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 19 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 19 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 19 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 19 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 19 67 3 control_pad bit (23) unal, 19 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 19 69 2 installation_request_pid bit (36), /* installation process identifier */ 19 70 2 sysid char (32), /* current system name */ 19 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 19 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 19 73 2 message char (124), /* message for all users */ 19 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 19 75 2 why char (124), /* reason for last shutdown */ 19 76 2 e (1000), /* offset 240o */ 19 77 3 active fixed bin, /* nonzero means logged in */ 19 78 3 person char (28) aligned, /* person name */ 19 79 3 project char (28), /* project id */ 19 80 3 anon fixed bin, /* 1 if anonymous user */ 19 81 3 padding fixed bin (71), 19 82 3 timeon fixed bin (71), /* time of login */ 19 83 3 units fixed bin, /* load units */ 19 84 3 stby fixed bin, /* 1 if stby */ 19 85 3 idcode char (4), /* tty id code */ 19 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 19 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 19 88 3 group char (8), /* party-line group */ 19 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 19 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 19 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 19 92 3 pad2 bit (33) unal, 19 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 19 94 3 process_authorization bit (72); /* access authorization of process */ 19 95 19 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 19 97 19 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 1525 1526 1527 end uc_proc_term_handler_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0938.3 uc_proc_term_handler_.pl1 >special_ldd>install>MR12.2-1047>uc_proc_term_handler_.pl1 1508 1 02/12/85 1429.5 access_audit_bin_header.incl.pl1 >ldd>include>access_audit_bin_header.incl.pl1 1509 2 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 1510 3 08/06/87 0913.4 as_audit_structures.incl.pl1 >ldd>include>as_audit_structures.incl.pl1 1511 4 08/06/87 0913.4 as_data_.incl.pl1 >ldd>include>as_data_.incl.pl1 1512 5 08/06/87 0913.4 as_meter_numbers.incl.pl1 >ldd>include>as_meter_numbers.incl.pl1 1513 6 08/06/87 0913.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 1514 7 06/29/79 1728.0 event_call_info.incl.pl1 >ldd>include>event_call_info.incl.pl1 1515 8 08/06/87 0913.4 installation_parms.incl.pl1 >ldd>include>installation_parms.incl.pl1 8-148 9 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 1516 10 08/06/87 0913.4 login_server_messages.incl.pl1 >ldd>include>login_server_messages.incl.pl1 1517 11 09/13/84 0921.6 pdt.incl.pl1 >ldd>include>pdt.incl.pl1 11-29 12 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 1520 13 04/27/78 1504.4 send_mail_info.incl.pl1 >ldd>include>send_mail_info.incl.pl1 1521 14 08/06/87 0913.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.incl.pl1 1522 15 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 15-112 16 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.incl.pl1 1523 17 07/13/88 0903.2 user_table_entry.incl.pl1 >special_ldd>install>MR12.2-1047>user_table_entry.incl.pl1 1524 18 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 1525 19 01/18/85 0953.2 whotab.incl.pl1 >ldd>include>whotab.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. AS_AUDIT_PROCESS_DISCONNECT 001116 constant fixed bin(17,0) initial dcl 3-162 set ref 906* AS_AUDIT_PROCESS_TERMINATE 001123 constant fixed bin(17,0) initial dcl 3-162 set ref 1205* AT_SHUTDOWN 001000 constant char(8) initial packed unaligned dcl 2-116 ref 616 1313 DIALUP_METER 001125 constant fixed bin(17,0) initial dcl 5-20 set ref 266* 850* FALSE constant bit(1) initial dcl 197 ref 252 643 729 1047 1109 1342 1343 LOGIN_SERVER_NEW_PROC_RESPONSE_VERSION_1 000604 constant char(8) initial packed unaligned dcl 10-420 ref 1451 LOGIN_SERVER_PROCESS_RESPONSE_VERSION_1 000610 constant char(8) initial packed unaligned dcl 10-341 ref 1141 LOGIN_SERVER_TERMINATION_RESPONSE_VERSION_1 000606 constant char(8) initial packed unaligned dcl 10-407 ref 1421 LS_NEW_PROC_RESPONSE constant fixed bin(17,0) initial dcl 10-228 ref 1449 LS_PROCESS_RESPONSE constant fixed bin(17,0) initial dcl 10-228 ref 1140 LS_TERMINATION_RESPONSE constant fixed bin(17,0) initial dcl 10-228 ref 1419 MAX_USER_SIGNALS constant fixed bin(17,0) initial dcl 202 ref 1366 ME 001034 constant char(21) initial packed unaligned dcl 205 set ref 256* 814 826 835 NOW_FREE constant fixed bin(17,0) initial dcl 6-76 ref 294 NOW_HAS_PROCESS constant fixed bin(17,0) initial dcl 6-76 ref 284 546 628 1029 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 6-76 ref 309 663 PREEMPT_BUMPED constant fixed bin(17,0) initial dcl 6-132 ref 449 601 PREEMPT_TERMSGNL_RECEIVED constant fixed bin(17,0) initial dcl 6-132 ref 513 1306 PREEMPT_TERM_SENT constant fixed bin(17,0) initial dcl 6-132 ref 512 610 645 681 732 PREEMPT_UNBUMP 007312 constant fixed bin(17,0) initial dcl 6-132 ref 506 645 PREEMPT_UNBUMP_IGNORE_ALARM constant fixed bin(17,0) initial dcl 6-132 ref 546 597 648 681 PT_ALARM 000612 constant fixed bin(17,0) initial dcl 6-106 set ref 607* 1311 PT_BUMP 000613 constant fixed bin(17,0) initial dcl 6-106 set ref 581* PT_DETACH 001063 constant fixed bin(17,0) initial dcl 6-106 set ref 632* PT_FPE constant fixed bin(17,0) initial dcl 6-106 ref 269 1388 PT_HANGUP 001061 constant fixed bin(17,0) initial dcl 6-106 set ref 559* 1290* PT_LOGOUT constant fixed bin(17,0) initial dcl 6-106 ref 445 526 530 534 538 542 PT_NEW_PROC_AUTH constant fixed bin(17,0) initial dcl 6-106 ref 1392 PT_OPERATOR_TERMINATE 000775 constant fixed bin(17,0) initial dcl 6-106 set ref 705* PT_SHUTDOWN 000614 constant fixed bin(17,0) initial dcl 6-106 set ref 569* PT_UNBUMP constant fixed bin(17,0) initial dcl 6-106 ref 604 P_code parameter fixed bin(35,0) dcl 1436 in procedure "Send_New_Process_Response" set ref 1433 1440 1443* P_code parameter fixed bin(35,0) dcl 873 in procedure "Convert_Status_Code" set ref 870 877* 881 884* P_code parameter fixed bin(35,0) dcl 1257 in procedure "Process_Bump_Timer" set ref 1254 1261* 1262 P_code parameter fixed bin(35,0) dcl 1128 in procedure "Notify_LS_With_Process_Response" ref 1120 1134 1143 P_event_call_info_ptr parameter pointer dcl 92 ref 87 245 P_reason parameter fixed bin(17,0) dcl 1127 ref 1120 1159 1168 1174 RING_0 constant fixed bin(17,0) initial dcl 207 ref 278 SL_LOG_SILENT constant fixed bin(17,0) initial dcl 14-14 ref 813 825 834 TABLE_NAMES 000557 constant char(20) initial array packed unaligned dcl 17-271 set ref 288* 294* 314* 326* TRA_VEC_VALUES 000615 constant char(32) initial array dcl 6-54 set ref 314* TRUE constant bit(1) initial dcl 197 ref 265 357 383 396 402 404 411 422 423 432 519 712 899 901 988 989 990 1046 1050 1051 1053 1104 1105 1170 1172 1174 1214 1215 1222 1241 1242 1334 1335 1402 UNKNOWN_SOURCE constant fixed bin(17,0) initial dcl 207 ref 276 USEC_PER_MINUTE 001033 constant fixed bin(35,0) initial dcl 214 ref 900 USEC_PER_SECOND 001032 constant fixed bin(35,0) initial dcl 215 ref 1218 USER constant fixed bin(17,0) initial dcl 207 ref 284 320 USER_CONTROL constant fixed bin(17,0) initial dcl 207 ref 281 WAIT_DESTROY_REQUEST 000776 constant fixed bin(17,0) initial dcl 6-25 set ref 674 674* 749 1168 WAIT_LOGOUT constant fixed bin(17,0) initial dcl 6-25 ref 369 378 385 393 464 563 574 586 615 636 1045 1208 1293 1312 WAIT_LOGOUT_HOLD constant fixed bin(17,0) initial dcl 6-25 ref 373 397 407 415 424 718 1049 1213 1223 1240 WAIT_LOGOUT_SIG constant fixed bin(17,0) initial dcl 6-25 ref 309 652 WAIT_NEW_PROC constant fixed bin(17,0) initial dcl 6-25 ref 362 459 509 670 690 1053 1228 1234 WAIT_NEW_PROC_REQUEST 000775 constant fixed bin(17,0) initial dcl 6-25 ref 670 764 1159 1174 WAKEUP_SOURCE 001006 constant varying char(16) initial array dcl 217 set ref 294* 314* 326* accounting_info 30 based structure level 3 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" accounting_info 4 based structure level 2 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" accounting_message_length 56 based fixed bin(17,0) level 3 dcl 10-303 set ref 1138 1182* 1184 1184 accounting_message_struc 56 based structure level 2 dcl 10-303 act_ctl_$activity_unbump 000010 constant entry external dcl 130 ref 1261 act_ctl_$close_account 000012 constant entry external dcl 132 ref 862 act_ctl_$dp 000014 constant entry external dcl 133 ref 662 active based fixed bin(17,0) level 2 dcl 17-78 set ref 284 294 309 546 628 663* 1029 activity_can_unbump 431(16) based bit(1) level 3 packed packed unaligned dcl 17-78 set ref 449 601 643* addr builtin function dcl 235 ref 657 658 815 815 827 827 836 836 981 993 993 1042 1082 1082 1137 1184 1184 1273 1273 1417 1447 1461 1461 aim_check_$equal 000016 constant entry external dcl 134 ref 475 aim_check_$in_range 000020 constant entry external dcl 135 ref 468 already_logged_in_info 35 based structure level 3 dcl 10-303 always_add 11(02) 000265 automatic bit(1) level 3 packed packed unaligned dcl 13-5 set ref 1270* anonymous 16 based fixed bin(17,0) level 2 dcl 17-78 ref 654 741 961 999 1286 1467 ansp 000252 automatic pointer initial dcl 2-53 set ref 246* 250 616 657 658 2-53* 1218 1226 1313 anstbl based structure level 1 dcl 2-55 any_other 000236 stack reference condition dcl 230 ref 256 arg_list_ptr 2 000300 automatic pointer level 2 dcl 14-24 set ref 812* 824* 833* arh_header_ based structure level 1 dcl 1-26 arh_user_info_ based structure level 1 dcl 1-39 as_access_audit_$logout 000022 constant entry external dcl 136 ref 907 as_access_audit_$process 000024 constant entry external dcl 138 ref 906 1205 as_any_other_handler_$no_cleanup 000026 constant entry external dcl 140 ref 256 as_channel_audit_record_ based structure level 1 dcl 3-74 as_data_$ansp 000140 external static pointer dcl 4-26 ref 246 1495 as_data_$autp 000142 external static pointer dcl 4-31 ref 1495 as_data_$dutp 000144 external static pointer dcl 4-37 ref 1495 as_data_$rs_ptrs 000146 external static pointer array dcl 4-49 ref 247 as_data_$signal_types 000152 external static structure level 1 dcl 4-67 as_data_$system_signal_types 000154 external static structure level 1 dcl 4-72 as_data_$whoptr 000150 external static pointer dcl 4-60 ref 248 as_dial_service_audit_record_ based structure level 1 dcl 3-105 as_error_table_$activity_unbump 000072 external static fixed bin(35,0) dcl 169 set ref 1273* 1273* as_error_table_$automatic_logout 000074 external static fixed bin(35,0) dcl 169 ref 587 620 637 1317 as_error_table_$bump_cancelled 000076 external static fixed bin(35,0) dcl 169 ref 507 as_error_table_$disc_hd_msg 000100 external static fixed bin(35,0) dcl 169 ref 440 1105 as_error_table_$illegal_new_proc 000102 external static fixed bin(35,0) dcl 169 ref 462 470 475 as_error_table_$illegal_signal 000104 external static fixed bin(35,0) dcl 169 ref 517 1400 as_error_table_$init_err 000106 external static fixed bin(35,0) dcl 169 ref 405 as_error_table_$no_disc_hd 000110 external static fixed bin(35,0) dcl 169 ref 437 as_error_table_$no_init_proc 000112 external static fixed bin(35,0) dcl 169 ref 419 as_error_table_$no_io_attach 000114 external static fixed bin(35,0) dcl 169 ref 413 as_error_table_$no_logout_hold 000116 external static fixed bin(35,0) dcl 169 ref 370 391 as_error_table_$no_perm_disc 000120 external static fixed bin(35,0) dcl 169 ref 430 as_error_table_$no_signal 000122 external static fixed bin(35,0) dcl 169 ref 721 as_error_table_$shutdown 000124 external static fixed bin(35,0) dcl 169 ref 575 616 1313 as_error_table_$term_by_operator 000126 external static fixed bin(35,0) dcl 169 ref 710 986 as_ia_audit_record_ based structure level 1 dcl 3-52 as_meter_$enter 000030 constant entry external dcl 142 ref 266 as_meter_$exit 000032 constant entry external dcl 143 ref 850 as_procid 10 based bit(36) level 3 dcl 2-55 set ref 657* 658* asu_$reschedule_bump_timer 000034 constant entry external dcl 144 ref 454 asu_$send_term_signal 000036 constant entry external dcl 146 ref 559 569 581 607 632 705 1290 asu_$suspend_process 000040 constant entry external dcl 147 ref 898 at 100 based structure level 2 dcl 17-78 audit_record_header based structure level 1 dcl 1-18 authorization 10 based bit(72) level 3 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1149* authorization 0(18) 000232 automatic bit(54) level 2 in structure "new_proc_auth" packed packed unaligned dcl 115 in procedure "uc_proc_term_handler_" set ref 468 475 482 auto_new_proc_response 000116 automatic structure level 1 dcl 109 set ref 1447 auto_process_response 000130 automatic structure level 1 dcl 111 set ref 1137 auto_termination_response 000206 automatic structure level 1 dcl 113 set ref 981 1042 1417 baseno builtin function dcl 235 ref 1495 1495 1495 1495 1495 1495 brief 23(02) based bit(1) level 3 packed packed unaligned dcl 10-385 set ref 383* 396* caller 17 000300 automatic varying char(65) level 2 dcl 14-24 set ref 814* 826* 835* cleanup 000244 stack reference condition dcl 231 ref 253 clock builtin function dcl 235 ref 250 900 code 000716 automatic fixed bin(35,0) level 2 in structure "local_ls_reply_message" dcl 1073 in procedure "Notify_LS" set ref 1082* 1088 1088* code 001042 automatic fixed bin(35,0) level 2 in structure "local_ls_reply_message" dcl 1437 in procedure "Send_New_Process_Response" set ref 1461* 1467 1467* code 000100 automatic fixed bin(35,0) dcl 96 in procedure "uc_proc_term_handler_" set ref 244* 603* 604 685* 686 690* 693* 696 816* 817 code 000672 automatic fixed bin(35,0) level 2 in structure "local_ls_reply_message" dcl 978 in procedure "Kill_Login_and_Notify_LS" set ref 993* 999 999* 1010* 1011 1011* code 000734 automatic fixed bin(35,0) level 2 in structure "local_ls_reply_message" dcl 1130 in procedure "Notify_LS_With_Process_Response" set ref 1134* 1184* 1190 1190* code 16 000300 automatic fixed bin(35,0) level 2 in structure "sl_info" dcl 14-24 in procedure "uc_proc_term_handler_" set ref 816 code 000752 automatic fixed bin(35,0) dcl 1258 in procedure "Process_Bump_Timer" set ref 1273* 1275 1275 1275 1275* code 1 000234 automatic fixed bin(35,0) level 2 in structure "signal_term_code" packed packed unaligned dcl 118 in procedure "uc_proc_term_handler_" set ref 350 connection_name 35 based char(32) level 4 dcl 10-303 set ref 1179* convert_status_code_ 000042 constant entry external dcl 148 ref 877 884 cost 6 based float bin(27) level 3 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" set ref 1078* cost 32 based float bin(27) level 4 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1166* cpu_usage 30 based fixed bin(71,0) level 4 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1165* cpu_usage 4 based fixed bin(71,0) level 3 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" set ref 1076* cpu_usage 360 based fixed bin(71,0) level 2 in structure "ute" dcl 17-78 in procedure "uc_proc_term_handler_" ref 1076 1165 cu_$arg_list_ptr 000156 constant entry external dcl 808 ref 812 824 833 current_time 126 based fixed bin(71,0) level 2 dcl 2-55 set ref 250* 1218 1226 currentsize builtin function dcl 235 ref 993 993 1082 1082 1184 1184 1461 1461 data_ptr 6 based pointer level 2 dcl 7-7 ref 271 destroy_flag 421 based fixed bin(17,0) level 2 dcl 17-78 set ref 309 314 314* 362* 369* 373* 378* 385* 393* 397* 407* 415* 424* 459* 464* 509* 563* 574* 586* 615* 636* 652 670 670 674 679 718* 749* 764* 1045 1049 1053 1056* 1208* 1213* 1223* 1228* 1234* 1240* 1293* 1312* destroy_index 000101 automatic fixed bin(17,0) dcl 97 set ref 269* 326 326 326* 343 1361* 1361* 1366 1366* 1366 1381* 1381* 1386 1388* 1392* destroyed 33(05) based bit(1) level 4 packed packed unaligned dcl 10-303 set ref 1170* dial_pw 17(02) based bit(1) level 4 packed packed unaligned dcl 17-78 ref 1007 disconnect_ok 100(22) based bit(1) level 3 packed packed unaligned dcl 17-78 ref 428 disconnected 273(01) based bit(1) array level 3 in structure "whotab" packed packed unaligned dcl 19-10 in procedure "uc_proc_term_handler_" set ref 901* disconnected 431(13) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 17-78 in procedure "uc_proc_term_handler_" set ref 461 899* 1208 disconnection_rel_minutes 424 based fixed bin(17,0) level 2 packed packed unaligned dcl 17-78 set ref 900* divide builtin function dcl 235 ref 900 dpg_ 000044 constant entry external dcl 149 ref 1029 dpg_$finish 000046 constant entry external dcl 150 ref 661 e 240 based structure array level 2 dcl 19-10 error_table_$fatal_error 000130 external static fixed bin(35,0) dcl 187 ref 353 error_table_$messages_deferred 000132 external static fixed bin(35,0) dcl 187 ref 1275 error_table_$messages_off 000134 external static fixed bin(35,0) dcl 187 ref 1275 error_table_$null_info_ptr 000136 external static fixed bin(35,0) dcl 187 set ref 259* 1488* event 376 based fixed bin(71,0) level 2 dcl 17-78 set ref 492* 657* 658* 733* 737* 1339* event_call_info based structure level 1 dcl 7-7 event_call_info_ptr 000254 automatic pointer dcl 7-5 set ref 245* 259 268 271 278 281 284 288 1332 1488 1495 fatal_error 23(04) based bit(1) level 3 packed packed unaligned dcl 10-385 set ref 357* 432* 519* 712* 988* 1402* fatal_error_loop_count 537 based fixed bin(17,0) level 3 packed packed unaligned dcl 8-33 ref 1234 fatal_error_loop_seconds 537(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 8-33 ref 1218 fixed_part based structure level 2 dcl 10-303 flags 33 based structure level 3 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" flags 22 based structure level 2 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" fpe_caused_logout 23(05) based bit(1) level 3 packed packed unaligned dcl 10-385 set ref 1222* fpe_causes_logout 431(17) based bit(1) level 3 packed packed unaligned dcl 17-78 ref 1221 fpe_during_init 23(07) based bit(1) level 3 packed packed unaligned dcl 10-385 set ref 404* 422* 1214* fpe_loop 23(06) based bit(1) level 3 packed packed unaligned dcl 10-385 set ref 1241* get_process_id_ 000050 constant entry external dcl 151 ref 281 group 000636 automatic varying char(32) dcl 917 set ref 919* 921* 922* 922 923* 923 924* 924 925* 925 927 hbound builtin function dcl 235 ref 326 hcs_$wakeup 000052 constant entry external dcl 152 ref 657 658 1347 header based structure level 2 in structure "anstbl" dcl 2-55 in procedure "uc_proc_term_handler_" header based structure level 2 in structure "login_server_new_proc_response" dcl 10-414 in procedure "uc_proc_term_handler_" header based structure level 3 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" header based structure level 2 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" his_handle 440 based bit(72) level 3 dcl 17-78 set ref 993* 1082* 1184* 1461* hold 23(01) based bit(1) level 3 packed packed unaligned dcl 10-385 set ref 990* 1047* 1051* 1105* 1109* hphcs_$get_ipc_operands 000162 constant entry external dcl 943 ref 953 ignore_cpulimit 431(10) based bit(1) level 3 packed packed unaligned dcl 17-78 set ref 726 729* 1333 initial_ring 34 based fixed bin(17,0) level 3 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1178* initial_ring 101 based fixed bin(17,0) level 2 in structure "ute" dcl 17-78 in procedure "uc_proc_term_handler_" ref 1178 installation_parms based structure level 1 dcl 8-33 installation_parms_part_1 based structure level 1 dcl 8-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 8-144 ip 000102 automatic pointer dcl 98 set ref 247* 367 389 436 454 474 1218 1234 ipc_validate_$encode_event_channel_name 000164 constant entry external dcl 945 ref 955 lbound builtin function dcl 235 ref 326 length builtin function dcl 235 ref 335 local_code 000656 automatic fixed bin(35,0) dcl 938 set ref 953* 954 961* local_ls_reply_message 000672 automatic structure level 1 dcl 978 in procedure "Kill_Login_and_Notify_LS" set ref 992* 993 993 local_ls_reply_message 001042 automatic structure level 1 dcl 1437 in procedure "Send_New_Process_Response" set ref 1460* 1461 1461 local_ls_reply_message 000716 automatic structure level 1 dcl 1073 in procedure "Notify_LS" set ref 1081* 1082 1082 local_ls_reply_message 000734 automatic structure level 1 dcl 1130 in procedure "Notify_LS_With_Process_Response" set ref 1133* 1184 1184 login_flags 17 based structure level 2 dcl 17-78 login_instance 26 based fixed bin(17,0) level 3 dcl 10-303 set ref 1163* login_server_info 436 based structure level 2 dcl 17-78 login_server_new_proc_response based structure level 1 dcl 10-414 set ref 1448* 1461 1461 login_server_process_response based structure level 1 dcl 10-303 set ref 1138* 1184 1184 login_server_response_header based structure level 1 dcl 10-258 login_server_termination_response based structure level 1 dcl 10-385 set ref 993 993 1082 1082 1418* login_time 402 based fixed bin(71,0) level 2 dcl 17-78 ref 900 logout 22 based bit(1) level 3 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" set ref 989* 1046* 1050* 1104* logout 33(01) based bit(1) level 4 in structure "login_server_process_response" packed packed unaligned dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1172* logout_index 423 based fixed bin(17,0) level 2 dcl 17-78 ref 514 1311 1311 logout_type 422 based char(4) level 2 packed packed unaligned dcl 17-78 set ref 338* 520* 564* 863* ls_process_response_accounting_message_length 000260 automatic fixed bin(17,0) dcl 10-339 set ref 1136* ls_reply_message based structure level 1 dcl 10-445 ls_request_header based structure level 1 dcl 10-54 ls_response_ptr 000256 automatic pointer dcl 10-254 set ref 350 353 357 370 383 391 396 402 404 405 411 413 419 422 423 430 432 437 440 462 470 475 507 517 519 575 587 616 620 637 710 712 721 981* 982 985 986 988 989 990 993* 993 993 1042* 1043 1044 1046 1047 1050 1051 1053 1076 1078 1082* 1082 1082 1104 1105 1105 1109 1137* 1138 1140 1141 1143 1144 1148 1149 1150 1151 1153 1157 1159 1163 1165 1166 1170 1172 1174 1178 1179 1180 1181 1182 1184* 1184 1184 1205 1205 1214 1215 1222 1241 1242 1313 1317 1400 1402 1417* 1418 1419 1421 1423 1424 1447* 1448 1449 1451 1453 1455 1457 1461* 1461 1461 max builtin function dcl 235 ref 904 mc_commands_$remove_tty 000054 constant entry external dcl 153 ref 1010 message 2 based fixed bin(71,0) level 2 dcl 7-7 ref 268 1332 message_type based fixed bin(17,0) level 3 in structure "login_server_new_proc_response" dcl 10-414 in procedure "uc_proc_term_handler_" set ref 1449* message_type based fixed bin(17,0) level 4 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1140* message_type based fixed bin(17,0) level 3 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" set ref 1419* metering_enabled 000104 automatic bit(1) dcl 99 set ref 252* 265* 850 n_disconnected 362(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 11-58 set ref 904* 904 1153 n_disconnected_processes 23 based fixed bin(17,0) level 3 dcl 10-303 set ref 1153* 1157* n_signals 000152 external static fixed bin(17,0) level 2 dcl 4-67 ref 1381 1386 n_system_signals 000154 external static fixed bin(17,0) level 2 dcl 4-72 ref 1361 1366 new_authorization 4 based bit(72) level 2 dcl 10-414 set ref 1453* new_handle 6 based bit(72) level 3 dcl 10-303 set ref 1148* new_proc 33(04) based bit(1) level 4 in structure "login_server_process_response" packed packed unaligned dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1174* new_proc 23(03) based bit(1) level 3 in structure "login_server_termination_response" packed packed unaligned dcl 10-385 in procedure "uc_proc_term_handler_" set ref 1053* new_proc_auth 000232 automatic structure level 1 dcl 115 set ref 467* new_process_id 10 based bit(36) level 2 dcl 10-414 set ref 1457* new_start_event_channel 6 based fixed bin(71,0) level 2 dcl 10-414 set ref 1455* null builtin function dcl 235 ref 259 2-53 1519 17-76 1153 1488 offer_help 23(08) based bit(1) level 3 packed packed unaligned dcl 10-385 set ref 402* 411* 423* 1215* 1242* operator 17(08) based bit(1) level 3 packed packed unaligned dcl 17-78 ref 1007 origin 5 based structure level 2 dcl 7-7 our_handle 436 based bit(72) level 3 dcl 17-78 ref 1148 part_1 based structure level 2 dcl 8-33 pdtep 354 based pointer level 2 dcl 17-78 ref 904 904 1153 1153 pdtp 000262 automatic pointer initial dcl 1519 set ref 1519* person 4 based char(24) level 2 packed packed unaligned dcl 17-78 set ref 654* 741* 920 921 961* 999* 1088* 1190* 1263* 1265 1286* 1308* 1443* 1467* preempted 420 based fixed bin(17,0) level 2 dcl 17-78 set ref 449 506 512 513* 546 597 601 610 645 645* 648* 681 681* 732 1306* proc_id 276 based bit(36) level 2 dcl 17-78 set ref 284 654* 741* 953* 961* 982 999* 1043 1144 1286* 1347* 1423 1457 1467* process_authorization 276 based bit(72) array level 3 in structure "whotab" dcl 19-10 in procedure "uc_proc_term_handler_" set ref 483* process_authorization 24 based bit(72) level 2 in structure "ute" dcl 17-78 in procedure "uc_proc_term_handler_" set ref 475* 482* 483 1149 1273* 1453 process_authorization_range 300 based bit(72) array level 2 dcl 17-78 set ref 468* process_group_id 12 based char(32) level 3 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1150* process_group_id 11 based char(32) level 2 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" set ref 985* 1044* 1424* process_id 10 based bit(36) level 2 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" set ref 982* 1043* 1423* process_id 5 based bit(36) level 3 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1144* process_id 446 based bit(36) level 3 in structure "ute" dcl 17-78 in procedure "uc_proc_term_handler_" set ref 993* 1082* 1184* 1461* process_number 22 based fixed bin(17,0) level 3 dcl 10-303 set ref 1151* process_type 1 based fixed bin(17,0) level 2 dcl 17-78 ref 288 294 314 326 project 12 based char(12) level 2 packed packed unaligned dcl 17-78 set ref 654* 741* 923 961* 999* 1088* 1190* 1263* 1265 1286* 1308* 1443* 1467* r_factor 000657 automatic fixed bin(35,0) dcl 939 set ref 953* 955* r_offset 000660 automatic fixed bin(18,0) dcl 940 set ref 953* 955* rcp_init_flags based structure level 1 packed packed unaligned dcl 9-8 recent_fatal_error_count 410 based fixed bin(17,0) level 2 dcl 17-78 set ref 1227* 1232* 1232 1234 recent_fatal_error_time 406 based fixed bin(71,0) level 2 dcl 17-78 set ref 1218 1226* response_event_channel 444 based fixed bin(71,0) level 3 dcl 17-78 set ref 993* 1184* ring 5(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 7-7 ref 278 rtrim builtin function dcl 235 ref 921 923 1265 1265 save_if_disconnected 431(12) based bit(1) level 3 packed packed unaligned dcl 17-78 ref 546 saved_destroy_flag 000105 automatic fixed bin(17,0) dcl 101 set ref 679* 690 693* send_mail_$access_class 000056 constant entry external dcl 155 ref 1273 send_mail_info 000265 automatic structure level 1 dcl 13-5 set ref 1267* 1273 1273 send_mail_info_version_2 000264 automatic fixed bin(17,0) initial dcl 13-3 set ref 13-3* 1268 sender 4 based bit(36) level 2 dcl 7-7 set ref 281 284 288* 1488* 1495* sent_from 1 000265 automatic char(32) level 2 dcl 13-5 set ref 1271* session 46 based char(8) level 2 packed packed unaligned dcl 2-55 ref 616 1313 session_cost 370 based float bin(27) level 2 dcl 17-78 ref 1078 1166 severity 15 000300 automatic fixed bin(17,0) level 2 dcl 14-24 set ref 813* 825* 834* signal_left_half 000106 automatic char(4) packed unaligned dcl 102 set ref 335* 335 338 346 346 signal_string 000110 automatic char(8) packed unaligned dcl 103 set ref 268* 288* 288 288 294* 294 294 314* 314 314 326* 326 326 335 338 338 349 467 554 1029 1211 1361 1370* 1381 1388 1388 1392 1488* 1488 1488 1495* 1495 1495 signal_term_code 000234 automatic structure level 1 dcl 118 set ref 349* signals 2 000152 external static char(8) array level 2 packed packed unaligned dcl 4-67 ref 1381 sl_info 000300 automatic structure level 1 dcl 14-24 set ref 811* 815 815 823* 827 827 832* 836 836 sl_info_code_msg 000040 constant structure level 1 dcl 14-187 ref 811 832 sl_info_msg 000310 constant structure level 1 dcl 14-214 ref 823 special_pw 17(02) based structure level 3 packed packed unaligned dcl 17-78 start_event_channel 000662 automatic fixed bin(71,0) dcl 941 in procedure "Get_Start_Event_Channel" set ref 955* 965* 967 start_event_channel 24 based fixed bin(71,0) level 3 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1159* status_code 21 based fixed bin(35,0) level 2 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" set ref 350* 353* 370* 391* 405* 413* 419* 430* 437* 440* 462* 470* 475* 507* 517* 575* 587* 616* 620* 637* 710* 721* 986* 1105 1205* 1205* 1313* 1317* 1400* status_code 4 based fixed bin(35,0) level 3 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1143* status_code_short 000566 automatic char(8) dcl 874 set ref 877* 884* 886 status_code_string 000570 automatic char(100) dcl 875 set ref 877* 879 884* stopstop 001004 constant char(8) initial packed unaligned dcl 223 set ref 658 stopstop_msg based fixed bin(71,0) dcl 125 set ref 658* substr builtin function dcl 235 ref 335 1211 1388 1388 1392 sus_channel 310 based fixed bin(71,0) level 2 dcl 17-78 set ref 1332* 1347* sus_sent 431(08) based bit(1) level 3 packed packed unaligned dcl 17-78 set ref 593 736 1342* 1395 suspended 431(09) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 17-78 in procedure "uc_proc_term_handler_" set ref 593 1334* 1395 suspended 273(02) based bit(1) array level 3 in structure "whotab" packed packed unaligned dcl 19-10 in procedure "uc_proc_term_handler_" set ref 1335* 1343* switches 11 000265 automatic structure level 2 dcl 13-5 sys_log_$general 000160 constant entry external dcl 809 ref 815 827 836 system_signals 2 000154 external static char(8) array level 2 packed packed unaligned dcl 4-72 ref 1361 tag 15 based char(1) level 2 packed packed unaligned dcl 17-78 set ref 925 1088* 1190* 1308* 1443* terminal_id 55 based char(4) level 4 dcl 10-303 set ref 1181* terminal_type 45 based char(32) level 4 dcl 10-303 set ref 1180* termination_event_channel 442 based fixed bin(71,0) level 3 dcl 17-78 set ref 1082* 1461* termstop 001002 constant char(8) initial packed unaligned dcl 223 set ref 657 termstop_msg based fixed bin(71,0) dcl 126 set ref 657* timer_manager_$reset_alarm_wakeup 000060 constant entry external dcl 157 ref 492 733 737 1339 trusted_path_login 2034 based bit(1) level 3 dcl 8-33 ref 367 389 436 474 tty_name 316 based char(32) level 2 packed packed unaligned dcl 17-78 set ref 654* 741* 961* 993 999* 1010* 1011* 1082 1184 1286* 1308* 1461 1467* uc_create_process_ 000062 constant entry external dcl 159 ref 685 uc_logout_ 000064 constant entry external dcl 160 ref 863 1006 uc_send_ls_response_ 000066 constant entry external dcl 161 ref 993 1082 1184 1461 uflags 431 based structure level 2 dcl 17-78 unspec builtin function dcl 235 set ref 268* 268 288 288 294 294 314 314 326 326 349* 349 467* 467 992* 1081* 1133* 1138* 1267* 1418* 1448* 1460* 1488 1488 1495 1495 user based structure level 1 dcl 11-58 user_abs_attributes based structure level 1 dcl 16-25 user_attributes based structure level 1 dcl 15-21 user_connection_info based structure level 1 dcl 10-65 user_id 000753 automatic char(32) packed unaligned dcl 1259 set ref 1265* 1273* 1275* user_table_mgr_$free 000070 constant entry external dcl 164 ref 700 1016 ut_header based structure level 1 dcl 18-16 ute based structure level 1 dcl 17-78 ute_index 2 based fixed bin(17,0) level 2 dcl 17-78 set ref 288* 294* 314* 326* utep 000550 automatic pointer initial dcl 17-76 set ref 271* 284 284 288 288* 288 294 294 294* 294 309 309 314 314* 314 314 314 326 326* 326 338 362 369 373 378 385 393 397 407 415 424 428 449 449 454* 459 461 464 468 475 482 483 483 483 492 506 509 512 513 514 520 546 546 546 559* 563 564 569* 574 581* 586 593 593 597 601 601 607* 610 615 628 632* 636 643 645 645 648 652 654 654 654 654 654 657 658 661* 662* 663 670 670 674 679 681 681 685* 700* 705* 718 726 729 732 733 736 737 741 741 741 741 741 749 764 17-76* 862* 863* 863 898* 899 900 900 901 901 904 904 906* 907* 920 921 923 925 953 961 961 961 961 961 982 993 993 993 993 999 999 999 999 999 1006* 1007 1007 1010 1011 1016* 1029 1029* 1043 1045 1049 1053 1056 1076 1078 1082 1082 1082 1082 1088 1088 1088 1144 1148 1149 1153 1153 1165 1166 1178 1184 1184 1184 1184 1190 1190 1190 1205* 1208 1208 1213 1218 1221 1223 1226 1227 1228 1232 1232 1234 1234 1240 1261* 1263 1263 1265 1265 1273 1286 1286 1286 1286 1286 1290* 1293 1306 1308 1308 1308 1308 1311 1311 1312 1332 1333 1334 1335 1335 1339 1342 1343 1343 1347 1347 1395 1395 1423 1443 1443 1443 1453 1457 1461 1461 1461 1461 1467 1467 1467 1467 1467 1488 1495 1495 1495 1495* version 2 based char(8) level 3 in structure "login_server_new_proc_response" dcl 10-414 in procedure "uc_proc_term_handler_" set ref 1451* version 2 based char(8) level 4 in structure "login_server_process_response" dcl 10-303 in procedure "uc_proc_term_handler_" set ref 1141* version 2 based char(8) level 3 in structure "login_server_termination_response" dcl 10-385 in procedure "uc_proc_term_handler_" set ref 1421* version 000265 automatic fixed bin(17,0) level 2 in structure "send_mail_info" dcl 13-5 in procedure "uc_proc_term_handler_" set ref 1268* wakeup 11 000265 automatic bit(1) level 3 packed packed unaligned dcl 13-5 set ref 1269* wakeup_from 000112 automatic fixed bin(17,0) dcl 104 set ref 276* 278* 281* 284* 294 314 320 326 warning_time 502 based fixed bin(17,0) level 3 dcl 8-33 set ref 454* whoptr 000114 automatic pointer dcl 105 set ref 248* 483 901 1335 1343 whotab based structure level 1 dcl 19-10 whotabx 430 based fixed bin(17,0) level 2 dcl 17-78 ref 483 483 901 901 1335 1335 1343 1343 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSQ_METER internal static fixed bin(17,0) initial dcl 5-28 ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 16-38 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 17-326 ABS_TRYLOG_METER internal static fixed bin(17,0) initial dcl 5-35 ACCESS_AUDIT_HEADER_VERSION_3 internal static fixed bin(9,0) initial unsigned dcl 1-54 ACCTUP_METER internal static fixed bin(17,0) initial dcl 5-26 ACTIVE_VALUES internal static char(18) initial array dcl 6-86 ADMIN_METER internal static fixed bin(17,0) initial dcl 5-32 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 15-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 2-51 ARH_TYPE_NO_PROXY internal static fixed bin(17,0) initial dcl 1-52 ARH_TYPE_PROXY internal static fixed bin(17,0) initial dcl 1-50 ASINIT_METER internal static fixed bin(17,0) initial dcl 5-19 AS_AUDIT_CHANNEL_ACTIONS internal static char(12) initial array packed unaligned dcl 3-193 AS_AUDIT_CHANNEL_ATTACH internal static fixed bin(17,0) initial dcl 3-175 AS_AUDIT_CHANNEL_DETACH internal static fixed bin(17,0) initial dcl 3-175 AS_AUDIT_CHANNEL_DIALIN internal static fixed bin(17,0) initial dcl 3-175 AS_AUDIT_CHANNEL_DIALOUT internal static fixed bin(17,0) initial dcl 3-175 AS_AUDIT_CHANNEL_DIAL_SYSTEM internal static fixed bin(17,0) initial dcl 3-175 AS_AUDIT_CHANNEL_DIRECTION internal static char(4) initial array packed unaligned dcl 3-196 AS_AUDIT_CHANNEL_SERVICE_INFO internal static char(12) initial array packed unaligned dcl 3-199 AS_AUDIT_DIALID_START internal static fixed bin(17,0) initial dcl 3-188 AS_AUDIT_DIALID_STOP internal static fixed bin(17,0) initial dcl 3-188 AS_AUDIT_PROCESS_ACTIONS internal static char(10) initial array packed unaligned dcl 3-202 AS_AUDIT_PROCESS_CONNECT internal static fixed bin(17,0) initial dcl 3-162 AS_AUDIT_PROCESS_CREATE internal static fixed bin(17,0) initial dcl 3-162 AS_AUDIT_PROCESS_DESTROY internal static fixed bin(17,0) initial dcl 3-162 AS_AUDIT_RECORD_CHN_VERSION_1 internal static fixed bin(9,0) initial dcl 3-156 AS_AUDIT_RECORD_DIALID_VERSION_1 internal static fixed bin(9,0) initial dcl 3-159 AS_AUDIT_RECORD_IA_VERSION_1 internal static fixed bin(9,0) initial dcl 3-153 AS_METER_NAMES internal static char(8) initial array packed unaligned dcl 5-43 AT_NORMAL internal static char(8) initial packed unaligned dcl 2-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 2-116 AUM_METER internal static fixed bin(17,0) initial dcl 5-22 AU_METER internal static fixed bin(17,0) initial dcl 5-23 Automatic_authentication internal static fixed bin(17,0) initial dcl 9-16 COMMAND_METER internal static fixed bin(17,0) initial dcl 5-30 CONNECT_REQ internal static fixed bin(17,0) initial dcl 10-457 CPG_METER internal static fixed bin(17,0) initial dcl 5-24 CREATE_REQ internal static fixed bin(17,0) initial dcl 10-457 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 17-280 DESTROY_REQ internal static fixed bin(17,0) initial dcl 10-457 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 17-332 DONT_MASK internal static bit(2) initial packed unaligned dcl 17-280 DO_MASK internal static bit(2) initial packed unaligned dcl 17-280 DPG_METER internal static fixed bin(17,0) initial dcl 5-25 DUM_METER internal static fixed bin(17,0) initial dcl 5-21 ENTERP_REQ internal static fixed bin(17,0) initial dcl 10-457 ENTER_REQ internal static fixed bin(17,0) initial dcl 10-457 FIXPDT_METER internal static fixed bin(17,0) initial dcl 5-34 INSTALL_METER internal static fixed bin(17,0) initial dcl 5-27 LIST_REQ internal static fixed bin(17,0) initial dcl 10-457 LOGIN_REQ internal static fixed bin(17,0) initial dcl 10-457 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 17-338 LOGIN_SERVER_DIAL_RESPONSE_VERSION_1 internal static char(8) initial packed unaligned dcl 10-378 LOGIN_SERVER_LIST_RESPONSE_VERSION_1 internal static char(8) initial packed unaligned dcl 10-360 LOGIN_SERVER_OPERATOR_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 10-222 LOGIN_SERVER_OPERATOR_RESPONSE_VERSION_1 internal static char(8) initial packed unaligned dcl 10-438 LS_DIAL_REQUEST internal static fixed bin(17,0) initial dcl 10-31 LS_DIAL_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 10-180 LS_DIAL_RESPONSE internal static fixed bin(17,0) initial dcl 10-228 LS_DISCONNECT_REQUEST internal static fixed bin(17,0) initial dcl 10-31 LS_DISCONNECT_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 10-193 LS_LIST_REQUEST internal static fixed bin(17,0) initial dcl 10-31 LS_LIST_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 10-160 LS_LIST_RESPONSE internal static fixed bin(17,0) initial dcl 10-228 LS_LOGOUT_REQUEST internal static fixed bin(17,0) initial dcl 10-31 LS_LOGOUT_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 10-203 LS_OPERATOR_REQUEST internal static fixed bin(17,0) initial dcl 10-31 LS_OPERATOR_RESPONSE internal static fixed bin(17,0) initial dcl 10-228 LS_PROCESS_REQUEST internal static fixed bin(17,0) initial dcl 10-31 LS_PROCESS_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 10-150 LS_REQUEST_HEADER_VERSION_1 internal static char(8) initial packed unaligned dcl 10-63 LS_REQUEST_TYPES internal static char(10) initial array packed unaligned dcl 10-40 LS_RESPONSE_TYPES internal static char(10) initial array packed unaligned dcl 10-238 LS_UNKNOWN_RESPONSE internal static fixed bin(17,0) initial dcl 10-228 LS_VALIDATE_REQUEST internal static fixed bin(17,0) initial dcl 10-31 LS_VALIDATE_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 10-97 LS_VALIDATE_RESPONSE internal static fixed bin(17,0) initial dcl 10-228 LS_VALIDATE_RESPONSE_VERSION_1 internal static char(8) initial packed unaligned dcl 10-297 MASK_CTL_NAMES internal static varying char(12) initial array dcl 17-284 MSGCORD_METER internal static fixed bin(17,0) initial dcl 5-29 Manual_authentication internal static fixed bin(17,0) initial dcl 9-16 NETUP_METER internal static fixed bin(17,0) initial dcl 5-37 NETWORK_CONNECTION_DSA_FILE_TRANSFER internal static fixed bin(17,0) initial dcl 10-471 NETWORK_CONNECTION_LOGIN internal static fixed bin(17,0) initial dcl 10-471 NEW_PROC_REQ internal static fixed bin(17,0) initial dcl 10-457 NOW_DIALED internal static fixed bin(17,0) initial dcl 6-76 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 6-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 6-76 NOW_HUNG_UP internal static fixed bin(17,0) initial dcl 6-76 NOW_LISTENING internal static fixed bin(17,0) initial dcl 6-76 No_authentication internal static fixed bin(17,0) initial dcl 9-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 9-16 PDT_entry_lth internal static fixed bin(17,0) initial dcl 11-19 PDT_header_lth internal static fixed bin(17,0) initial dcl 11-19 PDT_person_id_length internal static fixed bin(17,0) initial dcl 11-19 PDT_project_name_length internal static fixed bin(17,0) initial dcl 11-19 PDT_version internal static fixed bin(17,0) initial dcl 11-19 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 6-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 6-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 6-142 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 17-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 17-261 PT_DAEMON internal static fixed bin(17,0) initial dcl 17-261 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 6-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 17-261 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 6-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 17-290 SAC_METER internal static fixed bin(17,0) initial dcl 5-31 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 14-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 14-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 14-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 14-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 14-62 SL_LOG internal static fixed bin(17,0) initial dcl 14-14 SL_LOG_BEEP internal static fixed bin(17,0) initial dcl 14-14 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 14-14 SL_TYPE internal static fixed bin(17,0) initial dcl 14-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 14-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 14-14 SSU_METER internal static fixed bin(17,0) initial dcl 5-33 STATE_VALUES internal static char(15) initial array dcl 6-70 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 6-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 6-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 6-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 6-93 TAG_UFT internal static char(1) initial packed unaligned dcl 6-93 TTY_DIALED internal static fixed bin(17,0) initial dcl 6-64 TTY_HUNG internal static fixed bin(17,0) initial dcl 6-64 TTY_KNOWN internal static fixed bin(17,0) initial dcl 6-64 TTY_MASKED internal static fixed bin(17,0) initial dcl 6-64 UFLAG_NAMES internal static varying char(24) initial array dcl 17-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 15-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 15-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 15-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 15-50 UTE_SIZE internal static fixed bin(17,0) initial dcl 2-120 UTE_version_4 internal static fixed bin(17,0) initial dcl 17-74 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 6-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 6-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 6-25 WAIT_DELETE_CHANNEL internal static fixed bin(17,0) initial dcl 6-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 6-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 6-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 6-25 WAIT_DIAL_RELEASE internal static fixed bin(17,0) initial dcl 6-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 6-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 6-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 6-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 6-25 WAIT_HANGUP internal static fixed bin(17,0) initial dcl 6-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 6-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 6-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 6-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 6-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 6-25 WAIT_REMOVE internal static fixed bin(17,0) initial dcl 6-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 6-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 6-25 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 19-96 as_channel_audit_record based structure level 1 dcl 3-68 as_data_$BS external static char(1) dcl 4-21 as_data_$CR external static char(1) dcl 4-22 as_data_$abs_dim external static char(32) packed unaligned dcl 4-23 as_data_$acct_update_priority external static fixed bin(17,0) dcl 4-24 as_data_$acsdir external static char(168) packed unaligned dcl 4-25 as_data_$as_procid external static bit(36) dcl 4-27 as_data_$as_ring external static fixed bin(3,0) dcl 4-28 as_data_$as_tty automatic char(6) packed unaligned dcl 4-29 as_data_$asmtp external static pointer dcl 4-30 as_data_$buzzardp external static pointer dcl 4-32 as_data_$cdtp external static pointer dcl 4-33 as_data_$debug_flag external static bit(1) dcl 4-84 as_data_$default_weight external static fixed bin(35,0) dcl 4-34 as_data_$devtabp external static pointer dcl 4-35 as_data_$dft_user_ring external static fixed bin(3,0) dcl 4-36 as_data_$g115_dim external static char(32) packed unaligned dcl 4-38 as_data_$lct_initialized external static bit(1) dcl 4-39 as_data_$lct_size external static fixed bin(17,0) dcl 4-40 as_data_$login_args external static structure level 1 dcl 4-62 as_data_$login_words external static fixed bin(17,0) dcl 4-77 as_data_$ls_message_buffer_cur_lth external static fixed bin(18,0) dcl 4-86 as_data_$ls_message_buffer_max_lth external static fixed bin(18,0) dcl 4-87 as_data_$ls_message_buffer_ptr external static pointer dcl 4-88 as_data_$ls_request_server_info_ptr external static pointer dcl 4-85 as_data_$max_user_ring external static fixed bin(3,0) dcl 4-41 as_data_$mgtp external static pointer dcl 4-42 as_data_$mrd_dim external static char(32) packed unaligned dcl 4-43 as_data_$ntty_dim external static char(32) packed unaligned dcl 4-44 as_data_$pdtdir external static char(168) packed unaligned dcl 4-45 as_data_$pit_ptr external static pointer dcl 4-46 as_data_$rcpdir external static char(168) packed unaligned dcl 4-47 as_data_$request_priority external static fixed bin(17,0) dcl 4-48 as_data_$rtdtp external static pointer dcl 4-50 as_data_$sat_htp external static pointer dcl 4-51 as_data_$satp external static pointer dcl 4-52 as_data_$suffix external static char(2) array packed unaligned dcl 4-53 as_data_$sysdir external static char(168) packed unaligned dcl 4-54 as_data_$teens_suffix external static char(2) array packed unaligned dcl 4-55 as_data_$terminet_tabs_string external static varying char(144) dcl 4-56 as_data_$tty_dim external static char(32) packed unaligned dcl 4-57 as_data_$update_priority external static fixed bin(17,0) dcl 4-58 as_data_$version external static char(8) packed unaligned dcl 4-59 as_data_login_words based structure level 1 dcl 4-77 as_dial_service_audit_record based structure level 1 dcl 3-100 as_ia_audit_record_abs based structure level 1 dcl 3-34 as_ia_audit_record_abs_proxy based structure level 1 dcl 3-41 as_ia_audit_record_int_dmn based structure level 1 dcl 3-27 audit_record_header_proxy based structure level 1 dcl 1-22 audit_record_ptr automatic pointer dcl 1-16 authentication_level_names internal static char(12) initial array packed unaligned dcl 9-21 channel_audit_info based structure level 1 dcl 3-138 channel_audit_info_ptr automatic pointer dcl 3-136 dial_server_info based structure level 1 dcl 3-124 dial_server_info_ptr automatic pointer dcl 3-122 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 8-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 8-38 login_server_dial_request based structure level 1 dcl 10-170 login_server_dial_response based structure level 1 dcl 10-366 login_server_disconnect_request based structure level 1 dcl 10-188 login_server_list_request based structure level 1 dcl 10-156 login_server_list_response based structure level 1 dcl 10-347 login_server_list_response_n_processes automatic fixed bin(17,0) dcl 10-358 login_server_logout_request based structure level 1 dcl 10-199 login_server_operator_request based structure level 1 dcl 10-214 login_server_operator_response based structure level 1 dcl 10-426 login_server_process_request based structure level 1 dcl 10-103 login_server_validate_request based structure level 1 dcl 10-76 login_server_validate_response based structure level 1 dcl 10-267 ls_process_request_arg_string_length automatic fixed bin(21,0) dcl 10-148 ls_process_request_n_args automatic fixed bin(17,0) dcl 10-147 ls_reply_message_ptr automatic pointer dcl 10-443 ls_request_ptr automatic pointer dcl 10-50 pdt based structure level 1 dcl 11-27 pdtep automatic pointer dcl 100 recursion_possible internal static bit(18) initial packed unaligned dcl 5-39 rifp automatic pointer dcl 9-6 sl_info_sev_code_label_msg internal static structure level 1 dcl 14-161 sl_info_sev_code_msg internal static structure level 1 dcl 14-82 sl_info_sev_coded_msg internal static structure level 1 dcl 14-134 sl_info_sev_msg internal static structure level 1 dcl 14-108 NAMES DECLARED BY EXPLICIT CONTEXT. Abort 003775 constant entry internal dcl 805 ref 259 288 294 314 326 741 1056 1370 1488 1495 Clean_Up 004154 constant entry internal dcl 846 ref 253 778 Close_Account_And_Logout 004173 constant entry internal dcl 859 ref 673 686 Convert_Status_Code 004222 constant entry internal dcl 870 ref 1273 1273 Convert_Status_Code_Short 004257 constant entry internal dcl 881 ref 1205 1205 Disconnect_Process 004314 constant entry internal dcl 895 ref 551 555 Get_Group_ID 004424 constant entry internal dcl 914 ref 985 1044 1150 1424 Get_Start_Event_Channel 004534 constant entry internal dcl 935 ref 1159 1455 Kill_Login_and_Notify_LS 004674 constant entry internal dcl 975 ref 312 Kill_Process 005141 constant entry internal dcl 1026 ref 760 772 1041 Kill_Process_And_Notify_LS 005165 constant entry internal dcl 1038 ref 775 1320 Log 004046 constant entry internal dcl 821 ref 654 1263 1286 1308 Log_Error 004111 constant entry internal dcl 830 ref 961 999 1011 1088 1190 1275 1443 1467 Notify_LS 005257 constant entry internal dcl 1070 ref 1060 1110 Notify_LS_After_Disconnect 005366 constant entry internal dcl 1099 ref 556 Notify_LS_With_Process_Response 005405 constant entry internal dcl 1120 ref 674 693 Prepare_To_Terminate_Process 005650 constant entry internal dcl 1202 ref 358 433 510 521 713 1403 Process_Bump_Timer 006000 constant entry internal dcl 1254 ref 603 Process_Ignored_Sus_Signal 006236 constant entry internal dcl 1283 ref 593 738 Process_Ignored_Trm_Signal 006325 constant entry internal dcl 1303 ref 612 734 Process_Sus_Response 006413 constant entry internal dcl 1329 ref 1396 Process_System_Wakeup 006474 constant entry internal dcl 1358 ref 323 Process_User_Wakeup 006555 constant entry internal dcl 1378 ref 320 RETURN 003767 constant label dcl 778 ref 256 256 456 552 557 559 569 581 597 607 630 632 649 696 702 705 730 746 761 773 817 1017 1290 1397 Send_New_Process_Response 006675 constant entry internal dcl 1433 ref 690 Setup_LS_Termination_Response 006647 constant entry internal dcl 1414 ref 302 TERMINATE 003766 constant label dcl 775 ref 359 364 375 380 386 399 408 416 425 434 489 523 566 578 590 625 640 715 723 739 1404 Validate_UTEp 007103 constant entry internal dcl 1481 ref 274 term_handler 000000 constant label array(31) dcl 346 ref 326 326 343 442 445 514 526 530 534 538 542 604 1311 uc_proc_term_handler_ 001662 constant entry external dcl 87 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 10244 10432 7314 10254 Length 11412 7314 166 743 730 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME uc_proc_term_handler_ 1410 external procedure is an external procedure. on unit on line 253 64 on unit on unit on line 256 78 on unit Abort 70 internal procedure is declared options(variable). Clean_Up 68 internal procedure is called by several nonquick procedures. Close_Account_And_Logout internal procedure shares stack frame of external procedure uc_proc_term_handler_. Convert_Status_Code internal procedure shares stack frame of external procedure uc_proc_term_handler_. Disconnect_Process internal procedure shares stack frame of external procedure uc_proc_term_handler_. Get_Group_ID internal procedure shares stack frame of external procedure uc_proc_term_handler_. Get_Start_Event_Channel internal procedure shares stack frame of external procedure uc_proc_term_handler_. Kill_Login_and_Notify_LS internal procedure shares stack frame of external procedure uc_proc_term_handler_. Kill_Process internal procedure shares stack frame of external procedure uc_proc_term_handler_. Kill_Process_And_Notify_LS internal procedure shares stack frame of external procedure uc_proc_term_handler_. Notify_LS internal procedure shares stack frame of external procedure uc_proc_term_handler_. Notify_LS_After_Disconnect internal procedure shares stack frame of external procedure uc_proc_term_handler_. Notify_LS_With_Process_Response internal procedure shares stack frame of external procedure uc_proc_term_handler_. Prepare_To_Terminate_Process internal procedure shares stack frame of external procedure uc_proc_term_handler_. Process_Bump_Timer internal procedure shares stack frame of external procedure uc_proc_term_handler_. Process_Ignored_Sus_Signal internal procedure shares stack frame of external procedure uc_proc_term_handler_. Process_Ignored_Trm_Signal internal procedure shares stack frame of external procedure uc_proc_term_handler_. Process_Sus_Response internal procedure shares stack frame of external procedure uc_proc_term_handler_. Process_System_Wakeup internal procedure shares stack frame of external procedure uc_proc_term_handler_. Process_User_Wakeup internal procedure shares stack frame of external procedure uc_proc_term_handler_. Setup_LS_Termination_Response internal procedure shares stack frame of external procedure uc_proc_term_handler_. Send_New_Process_Response internal procedure shares stack frame of external procedure uc_proc_term_handler_. Validate_UTEp internal procedure shares stack frame of external procedure uc_proc_term_handler_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME uc_proc_term_handler_ 000100 code uc_proc_term_handler_ 000101 destroy_index uc_proc_term_handler_ 000102 ip uc_proc_term_handler_ 000104 metering_enabled uc_proc_term_handler_ 000105 saved_destroy_flag uc_proc_term_handler_ 000106 signal_left_half uc_proc_term_handler_ 000110 signal_string uc_proc_term_handler_ 000112 wakeup_from uc_proc_term_handler_ 000114 whoptr uc_proc_term_handler_ 000116 auto_new_proc_response uc_proc_term_handler_ 000130 auto_process_response uc_proc_term_handler_ 000206 auto_termination_response uc_proc_term_handler_ 000232 new_proc_auth uc_proc_term_handler_ 000234 signal_term_code uc_proc_term_handler_ 000252 ansp uc_proc_term_handler_ 000254 event_call_info_ptr uc_proc_term_handler_ 000256 ls_response_ptr uc_proc_term_handler_ 000260 ls_process_response_accounting_message_length uc_proc_term_handler_ 000262 pdtp uc_proc_term_handler_ 000264 send_mail_info_version_2 uc_proc_term_handler_ 000265 send_mail_info uc_proc_term_handler_ 000300 sl_info uc_proc_term_handler_ 000550 utep uc_proc_term_handler_ 000566 status_code_short Convert_Status_Code 000570 status_code_string Convert_Status_Code 000636 group Get_Group_ID 000656 local_code Get_Start_Event_Channel 000657 r_factor Get_Start_Event_Channel 000660 r_offset Get_Start_Event_Channel 000662 start_event_channel Get_Start_Event_Channel 000672 local_ls_reply_message Kill_Login_and_Notify_LS 000716 local_ls_reply_message Notify_LS 000734 local_ls_reply_message Notify_LS_With_Process_Response 000752 code Process_Bump_Timer 000753 user_id Process_Bump_Timer 001042 local_ls_reply_message Send_New_Process_Response THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as alloc_char_temp cat_realloc_chars call_ext_out_desc call_ext_out call_int_this_desc call_int_this call_int_other return_mac move_label_var make_label_var tra_ext_1 enable_op shorten_stack ext_entry int_entry divide_fx3 clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. act_ctl_$activity_unbump act_ctl_$close_account act_ctl_$dp aim_check_$equal aim_check_$in_range as_access_audit_$logout as_access_audit_$process as_any_other_handler_$no_cleanup as_meter_$enter as_meter_$exit asu_$reschedule_bump_timer asu_$send_term_signal asu_$suspend_process convert_status_code_ cu_$arg_list_ptr dpg_ dpg_$finish get_process_id_ hcs_$wakeup hphcs_$get_ipc_operands ipc_validate_$encode_event_channel_name mc_commands_$remove_tty send_mail_$access_class sys_log_$general timer_manager_$reset_alarm_wakeup uc_create_process_ uc_logout_ uc_send_ls_response_ user_table_mgr_$free THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$ansp as_data_$autp as_data_$dutp as_data_$rs_ptrs as_data_$signal_types as_data_$system_signal_types as_data_$whoptr as_error_table_$activity_unbump as_error_table_$automatic_logout as_error_table_$bump_cancelled as_error_table_$disc_hd_msg as_error_table_$illegal_new_proc as_error_table_$illegal_signal as_error_table_$init_err as_error_table_$no_disc_hd as_error_table_$no_init_proc as_error_table_$no_io_attach as_error_table_$no_logout_hold as_error_table_$no_perm_disc as_error_table_$no_signal as_error_table_$shutdown as_error_table_$term_by_operator error_table_$fatal_error error_table_$messages_deferred error_table_$messages_off error_table_$null_info_ptr LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 87 001657 2 53 001667 1519 001671 13 3 001672 17 76 001674 244 001676 245 001677 246 001703 247 001706 248 001711 250 001714 252 001717 253 001720 256 001742 259 002000 265 002024 266 002026 268 002035 269 002041 271 002043 274 002045 276 002046 278 002050 281 002060 284 002076 288 002110 294 002167 302 002252 309 002253 312 002262 313 002263 314 002264 320 002356 323 002363 326 002364 335 002455 338 002457 343 002467 346 002471 349 002476 350 002500 352 002503 353 002504 357 002510 358 002512 359 002513 362 002514 364 002517 367 002520 369 002523 370 002526 372 002532 373 002533 375 002536 378 002537 380 002542 383 002543 385 002546 386 002551 389 002552 391 002555 393 002561 394 002564 396 002565 397 002570 399 002573 402 002574 404 002577 405 002601 407 002604 408 002607 411 002610 413 002613 415 002616 416 002621 419 002622 422 002626 423 002630 424 002632 425 002635 428 002636 430 002642 432 002646 433 002650 434 002651 436 002652 437 002655 439 002661 440 002662 442 002666 445 002667 449 002671 454 002700 456 002712 459 002713 461 002716 462 002721 464 002725 465 002727 467 002730 468 002732 470 002753 472 002757 474 002760 475 002763 480 003011 482 003012 483 003017 489 003030 492 003031 506 003041 507 003045 509 003051 510 003053 511 003054 512 003055 513 003057 514 003061 517 003063 519 003067 520 003071 521 003073 523 003074 526 003075 530 003077 534 003101 538 003103 542 003105 546 003107 551 003120 552 003121 554 003122 555 003126 556 003127 557 003130 559 003131 563 003147 564 003152 566 003154 569 003155 574 003173 575 003176 578 003202 581 003203 586 003221 587 003224 590 003230 593 003231 597 003242 601 003244 603 003251 604 003253 607 003257 610 003275 612 003301 613 003302 615 003303 616 003305 620 003317 625 003323 628 003324 630 003327 632 003330 636 003346 637 003351 640 003355 643 003356 645 003361 648 003367 649 003371 652 003372 654 003376 657 003441 658 003461 659 003501 661 003502 662 003511 663 003520 670 003522 673 003530 674 003531 677 003540 679 003541 681 003542 685 003547 686 003560 690 003563 693 003571 696 003573 700 003575 702 003604 705 003605 710 003623 712 003627 713 003631 715 003632 718 003633 721 003636 723 003642 726 003643 729 003647 730 003651 732 003652 733 003655 734 003664 735 003665 736 003666 737 003671 738 003700 739 003701 741 003702 746 003753 749 003754 760 003757 761 003760 764 003761 772 003764 773 003765 775 003766 778 003767 780 003773 805 003774 811 004002 812 004006 813 004014 814 004017 815 004024 816 004035 817 004040 819 004044 821 004045 823 004053 824 004057 825 004066 826 004071 827 004076 828 004107 830 004110 832 004116 833 004122 834 004131 835 004134 836 004141 837 004152 846 004153 850 004161 853 004172 859 004173 862 004174 863 004203 864 004221 870 004222 877 004226 879 004241 881 004257 884 004262 886 004276 895 004314 898 004315 899 004324 900 004327 901 004337 904 004345 906 004357 907 004402 908 004423 914 004424 919 004426 920 004427 921 004434 922 004454 923 004463 924 004507 925 004516 927 004525 935 004534 953 004536 954 004554 955 004556 959 004615 961 004616 965 004666 967 004670 975 004674 981 004675 982 004677 985 004702 986 004711 988 004714 989 004716 990 004720 992 004722 993 004724 999 004763 1006 005035 1007 005054 1010 005060 1011 005103 1016 005131 1017 005140 1026 005141 1029 005142 1032 005164 1038 005165 1041 005166 1042 005167 1043 005171 1044 005174 1045 005203 1046 005207 1047 005211 1048 005213 1049 005214 1050 005216 1051 005220 1052 005222 1053 005223 1056 005230 1060 005255 1061 005256 1070 005257 1076 005260 1078 005264 1081 005266 1082 005270 1088 005327 1094 005365 1099 005366 1104 005367 1105 005372 1109 005401 1110 005403 1111 005404 1120 005405 1133 005407 1134 005411 1136 005413 1137 005414 1138 005416 1140 005430 1141 005432 1143 005435 1144 005437 1148 005442 1149 005446 1150 005452 1151 005461 1153 005462 1157 005475 1159 005476 1163 005510 1165 005512 1166 005515 1168 005517 1170 005523 1172 005525 1173 005527 1174 005530 1178 005534 1179 005536 1180 005541 1181 005544 1182 005546 1184 005547 1190 005611 1194 005647 1202 005650 1205 005651 1208 005705 1211 005714 1213 005717 1214 005721 1215 005724 1216 005726 1218 005727 1221 005740 1222 005743 1223 005746 1224 005750 1226 005751 1227 005753 1228 005755 1230 005757 1232 005760 1234 005761 1240 005770 1241 005772 1242 005775 1246 005777 1254 006000 1261 006002 1262 006014 1263 006017 1265 006043 1267 006116 1268 006122 1269 006124 1270 006126 1271 006130 1273 006133 1275 006203 1278 006235 1283 006236 1286 006237 1290 006303 1293 006321 1295 006324 1303 006325 1306 006326 1308 006331 1311 006364 1312 006371 1313 006373 1317 006405 1320 006411 1324 006412 1329 006413 1332 006414 1333 006420 1334 006423 1335 006425 1339 006433 1340 006442 1342 006443 1343 006445 1347 006453 1349 006473 1358 006474 1361 006475 1364 006516 1366 006520 1370 006527 1372 006554 1378 006555 1381 006556 1384 006600 1386 006602 1388 006607 1392 006617 1395 006626 1396 006635 1397 006636 1400 006637 1402 006642 1403 006644 1404 006645 1406 006646 1414 006647 1417 006650 1418 006652 1419 006655 1421 006657 1423 006662 1424 006665 1425 006674 1433 006675 1440 006677 1443 006701 1444 006735 1447 006736 1448 006740 1449 006743 1451 006745 1453 006750 1455 006755 1457 006763 1460 006767 1461 006771 1467 007030 1473 007102 1481 007103 1488 007104 1495 007147 1503 007241 ----------------------------------------------------------- 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