COMPILATION LISTING OF SEGMENT dialup_ Compiled by: Multics PL/I Compiler, Release 33a, of May 30, 1990 Compiled at: ACTC Technologies Inc. Compiled on: 10/14/90 0948.1 mdt Sun Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1990 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 8* * * 9* * Copyright (c) 1972 by Massachusetts Institute of * 10* * Technology and Honeywell Information Systems, Inc. * 11* * * 12* *********************************************************** */ 13 14 /* format: style4 */ 15 16 dialup_: proc (msg_ptr); 17 18 /**** This program, perhaps better called interactive_user_manager_ for 19* consistency, handles all the communications channels connected 20* to the answering service, processes all requests to login/logout/ 21* new_proc from interactive users, and performs other special actions 22* for communications channels. It is an event-call driven procedure 23* for the IPC event channels associated with answering service channels 24* and interactive user processes. */ 25 26 /* PLEASE DO NOT ADD ANY RETURN STATEMENTS TO (THE EXTERNAL PROCEDURE PORTION 27* OF) THIS PROGRAM. 28* 29* There should be only one return statement, at the label 30* "return_immediately", which is located at the end of the process creation 31* code, in the login section. 32* 33* A goto that label should be used instead of a return statement, so that all 34* "logical returns" will be noted in the cross reference section of the 35* listing, as references to that label. 36* 37* Note, however, that an immediate return is usually the wrong thing to do, 38* as there is some cleaning up that almost always needs to be done before a 39* return. The labels "exit" and "exit1" should be used in most cases; exit 40* if both answer table unlocking and termination of metering is needed, and 41* exit1 if just the latter is needed. 42* 43* If in doubt about the proper way to return, read the code for more details. 44* 45* * T. Casey, 5/19/81 46* 47**/ 48 49 /* Modification history: 50* Originally coded by J. F. Ossanna Jan 1969 51* Recoded by Michael J. Spier and Robert C. Daley February 1969 52* Revised by Michael D. Schroeder, July 53* Re-revised, converted to PL/1 and adapted to current System/User Control 54* by Michael J. Spier, 25.12.1969, 'twixt X-mas and New-Year 55* Modified for inactive bump & fixes THVV 9/70 56* Modified for new ttydim, removing many waits, 12/70 THVV 57* Modified for efficiency, ucs handler, login args THVV 58* Modified for garbage for consoles without poff, THVV 59* Modified for help function THVV 11/71 60* Modified for dynamic changing of password, J.Phillipps 8/72 61* Modified 740913 by PG for generated passwords 62* Modified 750226 by PG for Multics Communication System (MCS) 63* Modified 750328 by PG to use printer_on and printer_off order calls. 64* Modified 750417 by PG for new_proc -authorization 65* Modified 750502 by PG to fix bug which left logged-out users in whotab 66* Modified 750715 by PG & THVV for MCS Phase II 67* Modified 751110 by PG for bug fixes & ttydim/network dim changes 68* Modified April 1976 by T. Casey to detect fatal process error loops and 69* process initialization failures, and to ask for new password twice when 70* -cpw is given, and by P. Green to fix misc. bugs. 71* Modified 760601 by PG to fix pw mask handling and add resetreads. 72* Modified 760720 by D. Wells to fix problem with dialing (to match 73* ftp_dialup_) and, incidentally, to shorten blank padded messages 74* Modified 760819 by Roy Planalp to use error msg passed up from lg_ctl_ and to fix detach bug. 75* Modified Aug-Sept 1976 by T. Casey, M. Grady, and D. Wells, for as9.0 (v2CDT & FNP loading) 76* Modified Feb., 1977, by D. M. Wells, to get more info about terminal into CDT 77* Modified June 1977 by Robert Coren to use ttt_info_ for terminal information 78* Modified September 1977 by T. Casey to fix hung process bugs. 79* Modified October 1977 by T. Casey to send term signal to process being bumped, and wait for it to destroy itself. 80* Modified January 1978 by T. Casey and R. Coren to fix bugs in previous two modifications. 81* Modified May 1978 by T. Casey to use parameters in installation_parms in the fatal process error loop detector, 82* . and to try to destroy processes whose stopstop wakeups were apparently lost. 83* Modified August 1978 by T. Casey to call astty_$get_chars to read answerback. 84* Modified Fall 1978 by Larry Johnson for ring-0 demultiplexing. 85* Modified November 1978 by T. Casey for MR7.0 new installation_parms. 86* Modified April 1979 by T. Casey for MR7.0a to log lost initial wakeups, and fix bug in handling responses to trm_ signals. 87* Modified July 1979 by T. Casey for MR8.0 to implement process preservation across hangups. 88* Modified August 1979 by Larry Johnson for new pre-access commands echo, modes, and terminal_type. 89* Modified November 1979 by T. Casey for MR8.0 to fix bugs in process preservation. 90* Modified February 27, 1980 by T. Casey to fix a bug that was leaving the answer table locked. 91* Modified March 1980 by Tom Casey to add metering. 92* Modified December 1980 by E. N. Kittlitz for bugfixes, activity_unbump. 93* Modified March 1981 by Robert Coren to add WAIT_FIN_TANDD_ATTACH and WAIT_DISCARD_WAKEUPS wait types. 94* Modified April 1981 by Robert Coren to issue copy_meters order when assigning channel. 95* Modified April 1981 by E. N. Kittlitz for various bugfixes. 96* Modified May 1981 by T. Casey to fix bugs for MR9.0. 97* Modified July 1981 by T. Casey for MR9.0 to wait for logout message to print before hanging up. 98* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 99* Modified December 1981, E. N. Kittlitz. don't hangup on lg_ctl_ error, destroy connect request or special session. 100* Modified January 1982, E. N. Kittlitz. bugfixes, login_parse_ changes, -immediate, etc. 101* Modified January 1982, E. N. Kittlitz. eliminate edited and red mode fiddling. 102* Modified April 1982, E. N. Kittlitz. 'quit', etc. bugfixes 103* Modified May 1982, E. N. Kittlitz. New AS initialization. 104* Modified July 1982, E. N. Kittlitz. Support MCS channel (un)masking. 105* Modified February 1983, E. N. Kittlitz. Password prompt does printer-off before typing NL. 106* Modified May 1983, E. N. Kittlitz. set_required_access_class support. 107* Modified August 1983, E. N. Kittlitz (courtesy S. Harris) to not use whotab (ute.whotabx) if it's 0. 108* Modified 83-10-17, E. N. Kittlitz, handle fpe during new_proc connect. 109* Modified December 1983, C. Marker. Added terminal_id pre-access command. 110* Modified 84-04-03 BIM to finish channel AIM implementation. 111* Modified 84-10-03 by E. Swenson to incorporate Jim Falksen's changes 112* for date_time_$format. 113* Modified 84-10-28 by E. Swenson to prevent "Program error: null atep.." 114* for login lines released by dial_ctl_ which have hung up. 115* Modified 84-11-16 by E. Swenson for IPC event channel validation. 116* Modified 85-01-15 by E. Swenson for new AS auditing. 117* Modified 85-02-14 by E. Swenson fix multiple detach attempts. 118* Modified 85-03-04 by E. Swenson for password length restrictions. 119* Modified 85-03-26 by E. Swenson to disable realtime alarm upon logout 120* and make the audit message upon hangup print out something nice. 121* Modified 85-05-14 by E. Swenson to allow MC to give back terminals 122* to answering service. 123**/ 124 125 /****^ HISTORY COMMENTS: 126* 1) change(86-05-13,GJohnson), approve(86-05-13,MCR7387), 127* audit(86-05-13,Martinson), install(86-05-14,MR12.0-1055): 128* Correct error message documentation. 129* 2) change(86-07-29,Swenson), approve(86-08-13,MCR7512), 130* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 131* Modified to initialize tty_access_class structure and recompiled for 132* change in the tty_access_class include file. 133* (Actual change date was 85-07-29) 134* 3) change(86-08-03,Swenson), approve(86-08-13,MCR7512), 135* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 136* Modified to move "Your authorization is..." message into this program, 137* from act_ctl_, so that it is printed upon process reconnection as well as 138* upon process creation. 139* (Actual change date was 85-08-03) 140* 4) change(86-09-21,Beattie), approve(86-09-22,MCR7542), 141* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 142* Remove references to the 963 and 029 preaccess commands and 143* remove support for ARDS, 202_ETX, 2741 and 1050 in system 144* interfaces. 145* 5) change(87-03-03,Brunelle), approve(87-07-14,MCR7697), 146* audit(87-07-23,GDixon), install(87-08-04,MR12.1-1055): 147* Added code to handle inacrcvd (inactivity msg received and processed) 148* signal (signal type 12). This reschedules the bump timer scheduled for 149* the user to installation_parms.warning_time from the receipt of the 150* signal by calling asu_$reschedule_bump_timer. 151* 6) change(87-03-12,Swenson), approve(87-07-14,MCR7741), 152* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 153* A) Moved release of devices (RCP devices, logical volumes, dialed 154* terminals) into dpg_. 155* B) Moved resetting of process termination handler to properly 156* handle connect loop new_proc/destroy requests when process was 157* previously connected to an MNA terminal. 158* 7) change(87-03-26,GDixon), approve(87-07-14,MCR7741), 159* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 160* A) Corrected unset variable problem in the connect loop's return to 161* login code. 162* B) Allow special-session login on dial-up lines during shutdown 163* (ie, "word shutdown"). 164* C) Replace use of ute.logged_in flag with check for ute.active >= 165* NOW_LOGGED_IN. lg_ctl_ sets this. 166* D) Upgraded for change to answer_table.incl.pl1 and 167* user_table_entry.incl.pl1. 168* 8) change(87-05-11,GDixon), approve(87-07-14,MCR7741), 169* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 170* A) Use user_table_mgr_$free to free UTE rather than attempting it in 171* dialup_.pl1. 172* B) Use constants in dialup_values.incl.pl1 to set ute.tag. 173* 9) change(87-05-15,GDixon), approve(87-07-14,MCR7741), 174* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 175* A) Set ute.line_type from cdte.cur_line_type. 176* B) Use constants to set/test ute.preempted. 177* 10) change(87-05-18,Brunelle), approve(87-07-14,MCR7697), 178* audit(87-07-23,GDixon), install(87-08-04,MR12.1-1055): 179* Added code to check for inactivity for MCS user. 180* 11) change(87-05-20,GDixon), approve(87-07-14,MCR7741), 181* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 182* A) Set ute.terminal_type and ute.network_type whenever UTE is connected 183* with a CDTE. 184* 12) change(87-07-14,Parisek), approve(87-07-14,MCR7644), 185* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 186* A) Added code to handle the user "disconnect" command properly. 187* 13) change(87-07-15,GDixon), approve(87-07-15,MCR7741), 188* audit(87-07-23,Brunelle), install(87-08-04,MR12.1-1055): 189* A) Audit process terminations for fatal errors via calls to 190* as_access_audit_$process. 191* 14) change(87-08-18,GDixon), approve(87-08-18,MCR7741), 192* audit(87-08-19,Brunelle), install(87-08-20,MR12.1-1092): 193* A) Provide operator message documentation for error reported when call 194* to hcs_$wakeup fails upon reconnecting to an existing process. 195* B) Correct error message reported for "connect N" when fewer than N 196* disconnected processes exist. (phx14471) 197* 15) change(87-09-18,Parisek), approve(87-09-18,MCR7741), 198* audit(87-09-18,Brunelle), install(87-09-21,MR12.1-1111): 199* Send the proper term signal string to as_access_audit_$process for a 200* "term" signal. 201* 16) change(87-11-03,GDixon), approve(88-08-15,MCR7969), 202* audit(88-08-03,Lippard), install(88-08-29,MR12.2-1093): 203* A) SILENTLY ignore alarm___ signal for channel no longer dialed to a 204* process. (phx19261, Answering_Service 479) 205* B) Avoid referencing through unset utep when dialup_$re_introduce 206* detects a channel error and tries to unlock the anstbl. 207* (phx19383, Answering_Service 490) 208* 17) change(90-09-25,Schroth), approve(90-09-25,MCR8206), audit(90-10-05,Vu), 209* install(90-10-14,MR12.4-1040): 210* Honour the trusted_path_login flag if a user process does not signal 211* the AS before calling hcs_$stop_process. 212* END HISTORY COMMENTS */ 213 214 /* PARAMETERS */ 215 216 dcl msg_ptr ptr; /* argument to event-call procedure */ 217 218 /* BUILTINS */ 219 220 dcl (addr, addrel, baseno, bit, clock, divide, fixed, float, hbound, 221 index, lbound, length, max, mod, null, rtrim, size, string, 222 substr, translate, unspec) builtin; 223 224 /* ENTRIES */ 225 226 dcl act_ctl_$activity_unbump entry (ptr, fixed bin (35)); 227 dcl act_ctl_$close_account entry (ptr); 228 dcl act_ctl_$cp entry (ptr); 229 dcl act_ctl_$dp entry (ptr); /* charge user */ 230 dcl act_ctl_$open_account entry (ptr); 231 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 232 dcl aim_check_$in_range entry (bit (72) aligned, (2) bit (72) aligned) returns (bit (1) aligned); 233 dcl as_access_audit_$process entry (ptr, fixed bin (17), char (*)); 234 dcl as_access_audit_$process_connect_denied entry (ptr, ptr, char (*)); 235 dcl as_dump_ entry (char (*) aligned); /* take a dump on error */ 236 dcl as_meter_$enter entry (fixed bin); 237 dcl as_meter_$exit_values entry (fixed bin, fixed bin, fixed bin (71), fixed bin (71)); 238 dcl astty_$tty_abort entry (ptr, fixed bin, fixed bin (35)); /* astty_ is used for all terminal i/o */ 239 dcl astty_$tty_changemode entry (ptr, char (*), fixed bin (35)); 240 dcl astty_$tty_event entry (ptr, fixed bin (35)); /* cause device signals to come to caller */ 241 dcl astty_$tty_force entry (ptr, ptr, fixed bin, fixed bin (35)); 242 dcl astty_$tty_get_chars entry (ptr, ptr, fixed bin, fixed bin (35)); 243 dcl astty_$tty_getmode entry (ptr, char (*), fixed bin (35)); 244 dcl astty_$tty_new_proc entry (ptr, bit (36) aligned, fixed bin (35)); /* force "uproc" to processid */ 245 dcl astty_$tty_order entry (ptr, char (*), ptr, fixed bin (35)); 246 dcl astty_$tty_read entry (ptr, ptr, fixed bin, fixed bin (35)); 247 dcl astty_$tty_state entry (ptr, fixed bin (35)); 248 dcl asu_$asu_listen entry (ptr, fixed bin (35)); /* program makes event chan & orders listen */ 249 dcl asu_$asu_remove entry (ptr); /* completely removes tty chn from system */ 250 dcl asu_$attach_ate entry (ptr, fixed bin (35)); 251 dcl asu_$check_for_stopped_process entry (ptr, char (*)) returns (bit (1) aligned); 252 dcl asu_$find_process entry (bit (36) aligned, fixed bin, ptr); 253 dcl asu_$release_ate entry (ptr, fixed bin (35)); 254 dcl asu_$release_suspended_process entry (ptr); 255 dcl asu_$reschedule_bump_timer entry (ptr, fixed bin); 256 dcl asu_$reset_access_class entry (pointer); 257 dcl asu_$send_term_signal entry (ptr, fixed bin) returns (bit (1) aligned); 258 dcl asu_$start_process entry (ptr); /* used to start a process running */ 259 dcl asu_$suspend_process entry (ptr); 260 dcl asu_$write_chn_message entry (ptr, fixed bin (35), char (8) aligned, fixed bin (35)); 261 dcl asu_$write_message entry (ptr, fixed bin (35), char (8) aligned, fixed bin (35)); 262 dcl check_password_ entry (char (*), char (*), fixed bin (35)); 263 dcl condition_ entry (char (*), entry); 264 dcl connect_immediate bit (1) aligned init (""b); 265 dcl convert_access_class_$to_string entry (bit (72) aligned, char (*), fixed bin (35)); 266 dcl convert_authorization_$to_string_range entry ((2) bit (72) aligned, character (*), fixed binary (35)); 267 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 268 dcl cpg_ entry (ptr, fixed bin (35)); /* utility to create process */ 269 dcl cpg_$set_pit_tty_info entry (ptr, fixed bin (35)); /* to tell existing process about its new tty channel */ 270 dcl date_time_$format entry (char (*), fixed bin (71), char (*), char (*)) returns (char (250) varying); 271 dcl device_acct_$off entry (fixed bin, char (*) aligned, ptr); 272 dcl device_acct_$on entry (fixed bin, char (*) aligned, ptr); 273 dcl dial_ctl_ entry (ptr, char (*), char (*), fixed bin (35)); 274 dcl dial_ctl_$continue_tandd_attach entry (ptr); 275 dcl dial_ctl_$dial_term entry (ptr); 276 dcl dial_ctl_$finish_dial_out entry (ptr); 277 dcl dial_ctl_$finish_priv_attach entry (ptr); 278 dcl dial_ctl_$finish_tandd_attach entry (ptr); 279 dcl display_access_class_ entry (bit (72) aligned) returns (char (32) aligned); 280 dcl dpg_ entry (ptr, char (*)); /* utility to destroy process */ 281 dcl dpg_$finish entry (ptr); /* second half of process destruction */ 282 dcl generate_word_ entry (char (*), char (*), fixed bin, fixed bin); 283 dcl hcs_$initiate_count entry (char (*), char (*), char (*), fixed bin, fixed bin, ptr, fixed bin (35)); 284 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 285 dcl hcs_$wakeup entry (bit (*) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 286 dcl ioa_$rs entry options (variable); 287 dcl ioa_$rsnnl entry options (variable); 288 dcl ipc_$decl_ev_call_chn entry (fixed bin (71), entry, ptr, fixed bin, fixed bin (35)); 289 dcl ipc_$drain_chn entry (fixed bin (71), fixed bin (35)); 290 dcl ipc_$unmask_ev_calls entry (fixed bin (35)); 291 dcl lg_ctl_$login entry (ptr, char (8), char (*) varying, fixed bin (35)); 292 dcl lg_ctl_$logout entry (ptr); 293 dcl lg_ctl_$logout_channel entry (ptr, char (*)); 294 dcl lg_ctl_$logout_no_process entry (ptr, char (*)); 295 dcl lg_ctl_$validate entry (ptr, char (8), char (*) varying, fixed bin (35)); 296 dcl login_parse_ entry (ptr, fixed bin, char (*), fixed bin, fixed bin, fixed bin (35)); 297 dcl login_parse_$password entry (ptr, fixed bin, char (*), fixed bin, fixed bin, fixed bin (35)); 298 dcl match_star_name_ entry (char (*) aligned, char (*) aligned, fixed bin (35)); 299 dcl parse_login_line_ entry (ptr, fixed bin, ptr, char (*), char (*) aligned, fixed bin (35)); 300 dcl parse_login_line_$dial_line entry (ptr, fixed bin, ptr, char (*) aligned, fixed bin (35)); 301 dcl parse_login_line_$slave_line entry (ptr, fixed bin, ptr, char (*) aligned, fixed bin (35)); 302 dcl scramble_ entry (char (8)) returns (char (8)); 303 dcl send_mail_$access_class entry (char (*), char (*), ptr, bit (72) aligned, fixed bin (35)); 304 dcl sys_log_ entry options (variable); 305 dcl sys_log_$error_log entry options (variable); /* error reporting program */ 306 dcl timer_manager_$alarm_wakeup entry (fixed bin (71), bit (2), fixed bin (71)); 307 dcl timer_manager_$reset_alarm_wakeup entry (fixed bin (71)); 308 dcl ttt_info_$decode_answerback entry (char (*), fixed bin, char (*), char (*) aligned, fixed bin (35)); 309 dcl ttt_info_$default_term_type entry (fixed bin, fixed bin, char (*), fixed bin (35)); 310 dcl ttt_info_$dialup_flags entry (char (*), bit (1), bit (1), fixed bin (35)); 311 dcl ttt_info_$initial_string entry (char (*), char (*) varying, fixed bin (35)); 312 dcl ttt_info_$modes entry (char (*), char (*), fixed bin (35)); 313 dcl ttt_info_$preaccess_type entry (char (*), char (*), fixed bin (35)); 314 dcl user_table_mgr_$free entry (ptr); 315 316 /* EXTERNAL */ 317 318 dcl as_error_table_$aclass_banner_msg fixed bin (35) external; 319 dcl as_error_table_$activity_unbump fixed bin (35) ext; 320 dcl as_error_table_$ask_for_help fixed bin (35) ext; 321 dcl as_error_table_$automatic_logout fixed bin (35) ext; 322 dcl as_error_table_$bad_answerback fixed bin (35) external; 323 dcl as_error_table_$bad_login_word_msg fixed bin (35) ext; 324 dcl as_error_table_$bad_password_format fixed bin (35) ext; 325 dcl as_error_table_$bad_terminal_id fixed bin (35) ext static; 326 dcl as_error_table_$bump_cancelled fixed bin (35) ext; 327 dcl as_error_table_$coming_up fixed bin (35) ext; 328 dcl as_error_table_$detach fixed bin (35) ext; 329 dcl as_error_table_$dialup_error fixed bin (35) ext; 330 dcl as_error_table_$disc_hd_msg fixed bin (35) ext; 331 dcl as_error_table_$ds_user_ignored fixed bin (35) ext static; 332 dcl as_error_table_$ds_user_required fixed bin (35) ext static; 333 dcl as_error_table_$fpe_caused_logout fixed bin (35) ext; 334 dcl as_error_table_$generated_pw_err fixed bin (35) ext; 335 dcl as_error_table_$generated_pw_msg fixed bin (35) external; 336 dcl as_error_table_$give_connect_request fixed bin (35) ext; 337 dcl as_error_table_$give_connect_request_no_disc fixed bin (35) ext; 338 dcl as_error_table_$give_instructions fixed bin (35) ext; 339 dcl as_error_table_$greeting_msg fixed bin (35) ext; 340 dcl as_error_table_$hangup_msg fixed bin (35) ext; 341 dcl as_error_table_$help_gpw_verify fixed bin (35) ext; 342 dcl as_error_table_$help_new_pw fixed bin (35) ext; 343 dcl as_error_table_$help_npw_verify fixed bin (35) ext; 344 dcl as_error_table_$help_password fixed bin (35) ext; 345 dcl as_error_table_$illegal_new_proc fixed bin (35) external static; 346 dcl as_error_table_$illegal_signal fixed bin (35) ext; 347 dcl as_error_table_$init_err fixed bin (35) ext; 348 dcl as_error_table_$init_term_msg fixed bin (35) ext; 349 dcl as_error_table_$list_disconnected_msg fixed bin (35) ext; 350 dcl as_error_table_$login_args fixed bin (35) ext; 351 dcl as_error_table_$login_auth_msg fixed bin (35) external static; 352 dcl as_error_table_$logout1_msg fixed bin (35) ext; 353 dcl as_error_table_$logout_disconnected_msg fixed bin (35) ext; 354 dcl as_error_table_$logout_msg fixed bin (35) ext; 355 dcl as_error_table_$must_give_proc_no fixed bin (35) ext; 356 dcl as_error_table_$new_password_indistinct fixed bin (35) ext; 357 dcl as_error_table_$new_pw_err fixed bin (35) ext; 358 dcl as_error_table_$no_connect_aclass fixed bin (35) ext; 359 dcl as_error_table_$no_disc_hd fixed bin (35) ext; 360 dcl as_error_table_$no_disconnected_procs fixed bin (35) ext; 361 dcl as_error_table_$no_init_proc fixed bin (35) ext; 362 dcl as_error_table_$no_io_attach fixed bin (35) ext; 363 dcl as_error_table_$no_logout_hold fixed bin (35) ext static; 364 dcl as_error_table_$no_perm_disc fixed bin (35) ext static; 365 dcl as_error_table_$no_signal fixed bin (35) ext; 366 dcl as_error_table_$no_such_process_msg fixed bin (35) ext; 367 dcl as_error_table_$now_logged_in fixed bin (35) ext; 368 dcl as_error_table_$npw_again_msg fixed bin (35) ext; 369 dcl as_error_table_$npw_msg fixed bin (35) ext; 370 dcl as_error_table_$only_after_login_msg fixed bin (35) ext; 371 dcl as_error_table_$proc_term_loop_msg fixed bin (35) ext; 372 dcl as_error_table_$proc_term_msg fixed bin (35) ext; 373 dcl as_error_table_$process_create_fail fixed bin (35) ext; 374 dcl as_error_table_$pw_format_warning fixed bin (35) ext; 375 dcl as_error_table_$pw_msg fixed bin (35) ext; 376 dcl as_error_table_$rq_invalid_now_msg fixed bin (35) ext; 377 dcl as_error_table_$shutdown fixed bin (35) ext; 378 dcl as_error_table_$special_session fixed bin (35) ext; 379 dcl as_error_table_$sys_full fixed bin (35) ext; 380 dcl as_error_table_$term_by_operator fixed bin (35) external static; 381 dcl as_error_table_$try_again fixed bin (35) ext; 382 dcl as_error_table_$tty_no_room fixed bin (35) ext; 383 dcl as_error_table_$unknown_arg_msg fixed bin (35) ext; 384 dcl as_error_table_$unknown_request_msg fixed bin (35) ext; 385 dcl as_error_table_$user_typed_quit fixed bin (35) ext; 386 dcl error_table_$action_not_performed fixed bin (35) external static; 387 dcl error_table_$badstar fixed bin (35) external static; 388 dcl error_table_$messages_deferred fixed bin (35) ext static; 389 dcl error_table_$messages_off fixed bin (35) ext static; 390 dcl error_table_$noarg fixed bin (35) ext static; 391 dcl error_table_$smallarg fixed bin (35) external static; 392 dcl error_table_$undefined_order_request fixed bin (35) ext static; 393 394 /* CONSTANT */ 395 396 dcl ME char (7) int static init ("dialup_") options (constant); 397 dcl NL char (1) aligned int static init (" 398 ") options (constant); 399 dcl RANDOM char (32) aligned int static options (constant) init ("etaiosqwertyuioplkjhgfdsazxcvbnm"); 400 dcl STOPstop char (8) aligned int static init ("STOPstop") options (constant); 401 dcl STOPstop_msg fixed bin (71) based (addr (STOPstop)); 402 dcl USEC_PER_MINUTE fixed bin (35) int static options (constant) init (60000000); 403 dcl termstop char (8) aligned int static init ("termstop") options (constant); 404 dcl termstop_msg fixed bin (71) based (addr (termstop)); 405 dcl unlock_string char (8) int static options (constant) init ("unlock"); /* msg sent by unlock procedure */ 406 407 /* STATIC */ 408 409 dcl bad_login_word_fmt char (100) aligned varying int static; /* .. */ 410 dcl dum_msg fixed binary (71) int static; /* dummy ipc message */ 411 dcl garbg char (97) aligned int static; /* password-hiding lines */ 412 dcl garbg_lth fixed bin int static; /* length of message */ 413 dcl greeting_fmt char (100) aligned varying int static; /* Message format frm as_error_table_ */ 414 dcl hangup_msg char (8) aligned int static; /* we type it when hanging channel */ 415 dcl hangup_msg_lth fixed bin int static init (8); /* length of message */ 416 dcl (init_term_fmt, proc_term_fmt, proc_term_loop_fmt) char (100) aligned varying int static; 417 dcl (logout_fmt, logout_fmt1) char (100) aligned varying int static; /* .. */ 418 dcl loudsw bit (1) aligned init ("0"b) int static; /* 1 if super-loud */ 419 dcl npw_again_msg char (28) aligned int static; /* "New Password Again:" */ 420 dcl npw_again_msg_lth fixed bin int static; /* length, set by dialup_init */ 421 dcl npw_msg char (20) aligned int static; /* "new password" */ 422 dcl npw_msg_lth fixed bin int static; /* length of message */ 423 dcl pw_msg char (16) aligned int static; /* "password" */ 424 dcl pw_msg_lth fixed bin int static; /* length of message */ 425 dcl static_fault_sw bit (1) aligned int static init (""b); 426 dcl static_label label int static; /* where to go on error */ 427 dcl wcr char (1) aligned int static; /* carriage return */ 428 429 /* AUTOMATIC */ 430 431 dcl added_info char (256) automatic; /* additional info for log messages */ 432 dcl buff char (500) aligned; /* i-o buffer for writes */ 433 dcl (code, ignore_code) fixed bin (35); /* std status code */ 434 dcl date_time char (64) varying; /* character date and time */ 435 dcl (dial_qual, dial_arg1) char (32); /* for dial command */ 436 dcl error_mess char (100) aligned; /* ... for convert_status_code */ 437 dcl error_message char (64); 438 dcl format char (100) aligned; /* ... for message formats */ 439 dcl funct char (8); /* used at "hand (8)" - event message */ 440 dcl gpw_length fixed bin (17); /* length of generated password */ 441 dcl (have_ate, have_cdte) bit (1) aligned init (""b); /* "1"b if respective ptrs ^= null */ 442 dcl helphelp bit (1) aligned; /* 1 if user has many fatal process errors and might need help */ 443 dcl (i, j, k, lgwd, userx) fixed bin; /* temps */ 444 dcl jj fixed bin; /* temp for password parse */ 445 dcl just_dialed_up bit (1); /* Distinguaish between dialup and logout-hold */ 446 dcl logout_brief bit (1) aligned init (""b); 447 dcl logout_hold bit (1) aligned init (""b); 448 dcl modes_string char (512); /* to allow room for "force,init," */ 449 dcl nc fixed bin; /* char count for read */ 450 dcl new_modes char (100); /* New mode string for terminal. */ 451 dcl new_pf fixed bin; 452 dcl (old_cpu, new_cpu) fixed bin (71); 453 dcl old_type char (32); /* terminal type before calling parse_login_line_ */ 454 dcl (p, q, p1) ptr; /* misc pointers */ 455 dcl password_pronunciation char (16); /* 8 letters plus 8 hyphens */ 456 dcl (pdtp, pdtep) ptr init (null); 457 dcl reason char (168) varying; /* returned from lg_ctl_ */ 458 dcl say_hello bit (1); /* TRUE at login unless logout -hold -brief */ 459 dcl shxx char (8) aligned; /* error id */ 460 dcl simulated_wakeup_sw bit (1); /* indicates simulated wakeup entry called */ 461 dcl (t1, t2) float bin; /* temps for units message */ 462 dcl tab_string char (512) varying; 463 dcl tanswb char (4); 464 dcl tcode fixed bin (35); /* errcode */ 465 dcl temp_atep ptr; /* temporary answer table entry ptr */ 466 dcl temp_password char (8); /* for checking change */ 467 dcl time fixed bin (71); 468 dcl (tname, tsignal_type) char (64) varying; /* for printing in trace and error messages */ 469 dcl tra_vec fixed bin; /* copy of either cdte.tra_vec or ate.destroy_flag */ 470 dcl (tstate, ttv, tinuse) fixed bin; /* copied from either cdte or ate */ 471 dcl type_to_set char (32); 472 dcl ubits bit (72) aligned; /* trick value for garbage generator */ 473 dcl user_login_word char (16); 474 dcl user_password char (8); /* password typed by user. scrambled. */ 475 476 dcl (wakeup_for_channel, /* wakeup over a cdte event channel */ 477 wakeup_for_process, /* wakeup over an ate event channel */ 478 wakeup_from_as, /* wakeup came from answering service */ 479 wakeup_from_ring_zero, /* wakeup came from ring zero */ 480 wakeup_from_user /* wakeup came from user process */ 481 ) bit (1) aligned init (""b); /* switches to keep track of where wakeup came from */ 482 483 /* AUTOMATIC STRUCTURES */ 484 485 dcl 1 set_type_info like set_term_type_info; 486 dcl 1 term_info like terminal_info; 487 dcl 1 write_status_info aligned, 488 2 evchn fixed bin (71), 489 2 output_pending bit (1); 490 491 492 /* DECLARATION OF BASED STRUCTURES */ 493 494 dcl 1 based_tcode based (addr (tcode)) aligned, /* This is used to make sure that */ 495 2 tcode_left_half bit (18) unal, /* .. nobody is pulling a fast one */ 496 2 xxx bit (18) unal; /* .. because convert_status_code tends to blow up */ 497 498 dcl 1 bc based (addr (funct)) aligned, /* overlay for terminate_proc signal */ 499 2 signal_type1 char (4), /* "term" usually */ 500 2 code fixed bin; /* system error code */ 501 502 dcl 1 ev_msg based (msg_ptr) aligned, /* interprocess event message */ 503 2 ev_channel fixed bin (71), /* channel id */ 504 2 ev_message fixed bin (71), /* what user wants to tell me */ 505 2 fromproc bit (36), /* user's process id */ 506 2 origin, 507 3 dev_signal bit (18) unal, /* twx if hardcore */ 508 3 sender_ring bit (18) unal, /* execution ring at call to singal */ 509 2 data_ptr ptr; /* ptr to channel definition table entry (see asu_) */ 510 511 dcl 1 new_proc_auth based (p1) aligned, /* structure from new_proc -auth */ 512 2 np_signal char (2) unaligned, /* "np" */ 513 2 authorization bit (54) unaligned; /* the new authorization */ 514 515 dcl signal_type char (8) aligned based (p1); /* overlay when user signal is 8 chars */ 516 517 518 /* dialup_ is the procedure associated with the TTY event 519* call channels and is called by the Wait Coordinator whenever an interrupt is 520* signalled by one of the devices to which the answering-service is currently listening. 521* dialup_ never calls the wait_coordinator (directly nor indirectly), rather, 522* it sets conditional-go to variable cdte.tra_vec to the label desired and returns to 523* the wait coordinator. Upon re-invocation it transfers to that point. */ 524 525 simulated_wakeup_sw = "0"b; /* called thru normal entry */ 526 go to dialup_begin; 527 528 simulated_wakeup: entry (msg_ptr); /* entry used by multiplexer_mgr_ */ 529 530 simulated_wakeup_sw = "1"b; 531 532 dialup_begin: 533 if msg_ptr = null then go to evil3; /* Network programs could do this by mistake */ 534 if as_data_$ansp = null then go to evil2; /* called before initialization */ 535 ansp = as_data_$ansp; 536 537 /* Initialize */ 538 539 p1 = addr (ev_msg.ev_message); /* get ptr to 72-bit data item */ 540 static_label = exit; /* setup non-local go */ 541 tcode = 0; /* Clear temp code. */ 542 just_dialed_up = "0"b; /* .. */ 543 call condition_ ("any_other", ucs); /* Set up handler for any faults. */ 544 /* if any trouble */ 545 anstbl.current_time = clock (); /* Read clock. */ 546 547 call as_meter_$enter (DIALUP_METER); 548 549 /* See where the wakeup came from, and over which kind of channel (ate or cdte) */ 550 551 if baseno (ev_msg.data_ptr) = baseno (scdtp) then do; /* cdte */ 552 cdtep = ev_msg.data_ptr; /* copy pointer to cdte */ 553 wakeup_for_channel = "1"b; /* remember which kind */ 554 utep = cdte.process; /* will be null if not valid */ 555 tra_vec = cdte.tra_vec; /* copy the tra_vec we want to use */ 556 if cdte.in_use < NOW_DIALED /* it should be, that is */ 557 & utep ^= null then /* trap bugs */ 558 if tra_vec ^= WAIT_TANDD_HANGUP & /* is it OK to have non-null atep? */ 559 tra_vec ^= WAIT_FIN_TANDD_ATTACH & 560 tra_vec ^= WAIT_FIN_PRIV_ATTACH & 561 tra_vec ^= WAIT_DISCARD_WAKEUPS then do; /* out of luck */ 562 call sys_log_ (SL_LOG_SILENT, "^a: non-null atep (^p) for cdte (^p,^a), tv=^d,inuse=^d", 563 ME, utep, cdtep, cdte.name, cdte.tra_vec, cdte.in_use); 564 utep = null; 565 cdte.process = null; 566 end; 567 end; /* end wakeup over channel */ 568 569 else if baseno (ev_msg.data_ptr) = baseno (ansp) then do; /* ate */ 570 utep = ev_msg.data_ptr; /* copy ptr to ate */ 571 wakeup_for_process = "1"b; /* remember which kind */ 572 cdtep = ute.channel; /* unpack ptr to cdte */ 573 if cdtep ^= null then 574 if cdte.process ^= utep then do; /* trap bugs */ 575 call sys_log_ (SL_LOG_SILENT, "^a: re-used cdte (^p,^a) by ate ^p, destroy_flag=^d", 576 ME, cdtep, cdte.name, utep, ute.destroy_flag); 577 cdtep = null; 578 if ^ute.disconnected then do; 579 call sys_log_ (SL_LOG_SILENT, "^a: turning on disconnected flag for ate ^p", ME, utep); 580 ute.disconnected = "1"b; 581 if ute.whotabx > 0 then 582 whotab.e (ute.whotabx).disconnected = "1"b; 583 end; 584 end; /* end cdte.process not equal atep */ 585 586 if ute.disconnected & cdtep ^= null then do; 587 call sys_log_ (SL_LOG_SILENT, "^a: turning off disconnected flag for ate ^p, cdte ^p,^a", 588 ME, utep, cdtep, cdte.name); 589 ute.disconnected = ""b; 590 if ute.whotabx > 0 then 591 whotab.e (ute.whotabx).disconnected = ""b; 592 end; 593 594 tra_vec = ute.destroy_flag; /* copy the tra vec that we want to use */ 595 end; /* end wakeup over ate channel */ 596 597 else goto evil1; /* data pointer points to neither cdt nor answer table */ 598 599 if cdtep ^= null then have_cdte = "1"b; /* checking switches is cheaper than testing ptrs for null */ 600 if utep ^= null then have_ate = "1"b; 601 602 if loudsw then call trace; /* now we have enough info to print trace message if wanted */ 603 604 /* If wakeups on a channel are arriving at an excessive rate, hang up. 605* This is to prevent Initializer process overload or tty buffer space exhaustion. 606* An excessive rate is defined to be more than COUNT wakeups within INTERVAL, 607* where COUNT and INTERVAL are installation parameters with long, untypeable names. 608* Whenever we get through an interval with fewer than COUNT wakeups, 609* we reset the counter and start a new interval. Thus, in the most extreme 610* case, we could get 2 * COUNT -1 wakeups within INTERVAL + DELTA before we decide to hang up. */ 611 612 if wakeup_for_channel then 613 if cdte.recent_wakeup_time + installation_parms.chn_wakeup_error_loop_seconds * 1000000 614 < anstbl.current_time then do; 615 cdte.recent_wakeup_count = 1; 616 cdte.recent_wakeup_time = anstbl.current_time; 617 end; 618 else do; 619 cdte.recent_wakeup_count = cdte.recent_wakeup_count + 1; 620 if cdte.recent_wakeup_count > installation_parms.chn_wakeup_error_loop_count then do; 621 cdte.recent_wakeup_time = 0; /* reset the wakeup loop counters */ 622 cdte.recent_wakeup_count = 0; /* we'll start counting again at the next dialup */ 623 call astty_$tty_abort (cdtep, 3, code); /* flush all input and output */ 624 go to listen_again; /* go hang up; we got too many wakeups too quickly */ 625 end; 626 end; 627 628 /* We know what kind of wakeup it is. Now see where it's from. */ 629 630 if ev_msg.origin.sender_ring = ""b then /* from ring zero? */ 631 wakeup_from_ring_zero = "1"b; 632 633 else if ev_msg.fromproc = as_procid then /* or from answering service */ 634 wakeup_from_as = "1"b; 635 636 else do; /* either legal wakeup from user, or illegal wakeup 637* from someone playing games or experimenting */ 638 if have_ate then /* if we have an ate */ 639 if ute.active = NOW_HAS_PROCESS /* with a live process */ 640 & ute.proc_id = ev_msg.fromproc then /* and the wakeup is from that process */ 641 wakeup_from_user = "1"b; /* then it is legal */ 642 643 if ^wakeup_from_user then goto evil; /* illegal, so log it and exit */ 644 end; 645 646 /* Now, decide how to handle the wakeup. That's a function of all the above, plus the contents of the event message. */ 647 648 if wakeup_from_ring_zero then goto fan_out; /* trust all wakeups from ring zero */ 649 650 /**** Here, we special case some of the wakeups that the answering service 651* sends to itself. */ 652 653 if wakeup_from_as then do; /* I can signal myself. */ 654 655 /**** The following code checks for a case where a dial server has released 656* a channel whose normal service type is "login", and has attempted to 657* notify us to print the banner message and await a login on the channel. 658* However, between sending the "device" wakeup to us, the channel has 659* hung up and we've started listening for a dialup on the channel. 660* Although this may seem rather obscure, it has happened enough times 661* (and the ensuing "Program error: null utep..." error message is 662* annoying) that we check for the condition here, and ignore the wakeup. */ 663 664 if signal_type = "device" & wakeup_for_channel then do; 665 666 if cdte.in_use < NOW_DIALED & /* is it hung up? */ 667 cdte.tra_vec ^= WAIT_GREETING_MSG then 668 goto exit1; 669 end; 670 671 /* Here, we catch alarm___ wakeups for tty channels (but not for processes). 672* In some cases, we don't just goto the handler specified by tra_vec. 673* This is tricky, because any time a handler is changed to use an alarm 674* timer, this code must be made aware of it. */ 675 676 else if signal_type = "alarm___" & wakeup_for_channel then do; /* See if timeout. */ 677 678 /* If the channel is not dialed up (or rather, it was not dialed up at the end of the last wakeup), then ignore the alarm. */ 679 680 if cdte.in_use < NOW_DIALED then go to fals0; /* if user is not home, ignore silently */ 681 682 /* If there is a logged in user on this channel, assume it is a bump. 683* NOTE: this might be a mistake: we set an alarm on the process, not the 684* channel, for bumps. But this statement is probably harmless, so we leave 685* it as it has been for years. */ 686 687 if cdte.in_use > NOW_DIALED then go to hand (8); /* if user is logged in, probably bump */ 688 689 /* Here, we have to special case the alarm timer set when waiting for output to finish before hanging up a line. */ 690 691 if tra_vec = WAIT_BEFORE_HANGUP then 692 goto hand (WAIT_BEFORE_HANGUP); 693 694 /* Since in_use is equal to NOW_DIALED, assume the user is in the process of logging in, and the 3 minute timer 695* went off. Before hanging up on him, do a read to see if he just typed something. If he did, give him a break, and 696* go process it instead of hanging up. (Note that we no longer have a timer running.) */ 697 698 call astty_$tty_read (cdtep, addr (buff), nc, code); /* Dialed up, no process. */ 699 if code = 0 then /* If ev call backlog, mayhave finished line */ 700 if nc > 0 then do; /* .. any chars there? */ 701 j = cdte.tra_vec; /* verify the computed goto */ 702 if j < lbound (hand, 1) then go to eek; 703 if j > hbound (hand, 1) then go to eek; 704 go to timeout (j); /* pick up where we left off */ 705 /* set up new timer? */ 706 end; 707 go to listen_again; /* User didn't login in 3 minutes */ 708 end; 709 710 /* It was not an alarm for a channel. It might be an alarm for a process, 711* or some other kind of wakeup for either a process or a channel. If tra_vec 712* is greater than WAIT_LOGOUT_SIG, we are in the middle of a login, 713* waiting for either a login command or a password. In that situation, 714* we ignore a termstop (for unknown historical reasons), and we assume 715* any other wakeup is an operator bump command, so we change the tra_vec 716* to go to the process destructon code. We do no do this, however, if 717* the wakeup is a "device" wakeup for a channel. These special wakeups 718* are sent by the answering service to get dialup_ to notice a channel 719* and act on in. */ 720 721 if ^(signal_type = "device" & wakeup_for_channel) then 722 if tra_vec < WAIT_LOGOUT_SIG then 723 if signal_type = "termstop" then 724 goto fals0; /* Ignore if extra */ 725 else tra_vec = WAIT_LOGOUT_SIG; 726 end; /* end wakeup from answering service */ 727 728 /* It appears that it is ok to fall thru to fan_out, now */ 729 730 fan_out: /* go where tra_vec says to go */ 731 732 /* Check validity of wakeup/tra_vec combination, before going anywhere */ 733 734 /**** It is always ok to receive an operator "detach" command. */ 735 736 if wakeup_from_as & signal_type = "detach" & 737 tra_vec = WAIT_LOGOUT_SIG then ; 738 739 else if tra_vec = WAIT_LOGOUT_SIG /* if tra_vec says to expect a process termination signal */ 740 | tra_vec = WAIT_LOGOUT 741 | tra_vec = WAIT_LOGOUT_HOLD 742 | tra_vec = WAIT_NEW_PROC then do; /* then there must be a process */ 743 if ^have_ate then do; /* if there's no ate, there can't be a process */ 744 call sys_log_ (SL_LOG_BEEP, "^a: Program error: null atep with per-process tra_vec value", ME); 745 goto fals; /* fals prints all the relevant variables */ 746 end; 747 end; /* end tra_vec says to expect process termination signal */ 748 749 else /* but if tra_vec is anything else, wakeup must be for cdte */ 750 if wakeup_for_process then do; /* if wakeup isn't for a channel, complain and exit */ 751 if tra_vec = WAIT_DETACH 752 | tra_vec = WAIT_REMOVE 753 | tra_vec = WAIT_DELETE_CHANNEL then do;/* these can be for a process or a channel */ 754 if ^have_cdte then do; /* but we must have a channel */ 755 call sys_log_ (SL_LOG_BEEP, "^a: Program error: null cdtep with per-channel tra_vec value", ME); 756 goto fals; /* fals prints all the relevant variables */ 757 end; 758 end; 759 else do; /* rest of tra_vec values are restricted to per-channel wakeups */ 760 call sys_log_ (SL_LOG_BEEP, "^a: Program error: per-process wakeup with per-channel-only tra_vec value", ME); 761 goto fals; 762 end; 763 end; 764 765 if wakeup_for_process then /* trap bug */ 766 if ute.active = NOW_FREE then /* spurious wakeup for free ate */ 767 goto fals0; /* go log and ignore it */ 768 769 if tra_vec < lbound (hand, 1) /* Subscript range check. */ 770 | tra_vec > hbound (hand, 1) then do; /* if this fails, cdt or anstbl is garbaged. */ 771 eek: if simulated_wakeup_sw then 772 if tra_vec = 0 then goto exit1; /* multiplexer_mgr_ called too soon */ 773 call sys_log_ (SL_LOG_BEEP, "^a: ^[CDT^;answer table^] damaged at ^[^p^s^;^s^p^], tra_vec=^d", 774 ME, wakeup_for_channel, wakeup_for_channel, cdtep, utep, tra_vec); 775 776 goto exit1; /* clean up metering and exit */ 777 end; 778 779 go to hand (tra_vec); /* this is fast in v2pl1 */ 780 781 /* Come here when a terminal channel dials up. */ 782 783 hand (1): cdte.n_dialups = cdte.n_dialups + 1; /* count number of times TTY has been dialed up */ 784 cdte.dialup_time = anstbl.current_time; /* Note time of dialup. */ 785 786 call astty_$tty_state (cdtep, code); /* make sure tty now dialed up. */ 787 if code ^= 0 then go to chn_error; /* go get rid of channel if any error */ 788 789 if cdte.state < TTY_DIALED then go to listen_again; /* Transient wakeup. Phone is hung now, give up. */ 790 791 cdte.in_use = NOW_DIALED; /* record that channel is dialed up */ 792 793 call update_term_info; 794 795 call initialize_current_access_class; /* is it single class? can we read an access class from hcs_? */ 796 797 cdte.tty_id_code = "none"; /* but for other channels, we read answerback below */ 798 799 if cdte.initial_terminal_type ^= "" /* if type specified in CMF */ 800 then type_to_set = cdte.initial_terminal_type; 801 else do; /* else figure it out from line-type/baud-rate */ 802 call ttt_info_$default_term_type (term_info.line_type, term_info.baud_rate, type_to_set, code); 803 if code ^= 0 then go to ttt_error; 804 805 if type_to_set = "" 806 then do; 807 call sys_log_$error_log (SL_LOG_BEEP, 0, ME, 808 "Unable to determine initial terminal type for channel ^a", 809 cdte.name); 810 go to ttt_error; 811 end; 812 end; 813 814 call change_type (type_to_set, "0"b, "0"b, code); /* whatever it's supposed to be, set it */ 815 if code ^= 0 then go to chn_error; 816 817 call astty_$tty_abort (cdtep, 1, code); /* flush any trash */ 818 if code ^= 0 then go to chn_error; 819 820 if ^cdte.flags.dont_read_answerback /* they might have said not to try */ 821 then do; 822 call astty_$tty_order (cdtep, "wru", null, code); /* Initiate answerback read and send us a wakeup */ 823 /* whether answerback exists or not */ 824 if code ^= 0 then go to chn_error; /* Now that MCS is in, expect no error */ 825 826 cdte.tra_vec = WAIT_ANSWERBACK; /* and wait for it */ 827 go to exit1; /* Wait for tty dim Wakeup */ 828 829 hand (2): /* WAIT_ANSWERBACK - Got answerback wakeup */ 830 call astty_$tty_get_chars (cdtep, addr (buff), nc, code); /* read it & see if it's there */ 831 /* use get_chars 'cause some answerbacks don't end in a newline */ 832 if code ^= 0 then go to chn_error; 833 if nc > 0 then do; /* if there is an answerback, process it */ 834 timeout (2): /* come here if we timeout & find answerback there */ 835 call ttt_info_$decode_answerback (substr (buff, 1, nc), (cdte.cur_line_type), type_to_set, 836 cdte.tty_id_code, code); 837 if code ^= 0 then do; 838 type_to_set = ""; 839 cdte.tty_id_code = ""; ; 840 end; 841 842 if cdte.tty_id_code = "" 843 then cdte.tty_id_code = "none"; 844 if type_to_set ^= "" & 845 type_to_set ^= cdte.current_terminal_type /* answerback says different terminal type */ 846 then do; 847 call change_type (type_to_set, "0"b, "0"b, code); 848 if code ^= 0 then go to chn_user_error; 849 end; 850 851 call astty_$tty_abort (cdtep, 1, code); /* flush junk from multi-line answerbacks */ 852 if code ^= 0 then go to chn_error; 853 end; 854 end; 855 856 call set_tabs_and_modes (code); /* Get terminal normalized. */ 857 if code ^= 0 then go to chn_user_error; 858 859 /* Here is the login sequence. First, tell him it's Multics, etc. */ 860 861 say_hello = "1"b; /* Always be polite to strangers. */ 862 just_dialed_up = "1"b; /* .. */ 863 864 /* Come here after a logout -hold or after a dialed terminal's master process terminates */ 865 866 login: 867 cdte.count = 1; /* we count login tries and hang up if there are too many */ 868 call turn_printer_on (code); /* Make sure user can see this */ 869 if code ^= 0 then go to chn_error; 870 871 call astty_$tty_force (cdtep, addr (NL), length (NL), code); 872 if code ^= 0 then go to chn_error; /* send NL */ 873 874 if cdte.flags.ck_answerback then do; /* If we should check answerback */ 875 call match_star_name_ (cdte.tty_id_code, cdte.answerback, code); 876 if code ^= 0 877 then if code ^= error_table_$badstar /* ignore problems with starname */ 878 then do; 879 call sys_log_ (SL_LOG_BEEP, "^a: wrong answerback on ^a (^a); expected ""^a"", got ""^a"".", 880 ME, cdte.name, cdte.comment, cdte.answerback, cdte.tty_id_code); 881 /* now tell user */ 882 call asu_$write_chn_message (cdtep, as_error_table_$bad_answerback, shxx, code); 883 if code ^= 0 then go to chn_error; /* handle random errors */ 884 go to listen_again; /* hangup the terminal */ 885 end; 886 end; 887 888 if say_hello then call hello (0); /* Greeting message. */ 889 if code ^= 0 then go to chn_error; /* too bad */ 890 891 if cdte.flags.hardwired 892 then time = 1e20b; /* don't bug hardwired channels */ 893 else time = installation_parms.login_time; /* ask for wakeup if user asleep */ 894 call timer_manager_$alarm_wakeup (time, "11"b, cdte.event); 895 896 if just_dialed_up then /* Is this time for initial command? */ 897 if cdte.flags.execute_initial_command then do; /* .. is there one? */ 898 buff = cdte.initial_command; /* Yes. Do it. */ 899 nc = length (cdte.initial_command); 900 go to timeout (3); /* Skip the first read call. */ 901 end; 902 903 904 /* Come here after saying "Login incorrect. Please try again or type help for instructions." */ 905 906 read_login_line: 907 cdte.tra_vec = WAIT_LOGIN_LINE; /* Set up transfer vector. */ 908 909 hand (3): call astty_$tty_read (cdtep, addr (buff), nc, code); /* read the login line */ 910 if code ^= 0 then go to chn_error; 911 if nc <= 0 then go to exit1; /* is line in yet? */ 912 913 /* At this point we have a login line. Parse it. */ 914 915 timeout (3): /* come here if line read during timeout */ 916 call login_parse_ (addr (buff), nc, user_login_word, k, jj, tcode); /* Get login-word from line. */ 917 if tcode = error_table_$noarg then go to read_login_line; /* nothing but white space */ 918 if tcode ^= 0 then go to try_again_code; 919 920 do lgwd = lbound (as_data_login_words.words, 1) to 921 hbound (as_data_login_words.words, 1) 922 while (user_login_word ^= as_data_login_words.words (lgwd)); 923 end; 924 925 if anstbl.session ^= "normal " then /* Check for Special Session */ 926 if lgwd <= 6 then /* (normal login) */ 927 go to reject_login_word; /* ... not allowed during Special Session */ 928 else if lgwd <= hbound (as_data_login_words.words, 1) then ; /* (preaccess command) */ 929 else if user_login_word = anstbl.login_word /* (special session login) */ 930 & (anstbl.session ^= "shutdown" /* and not shutdown */ 931 | anstbl.login_word ^= "shutdown") then /* or shutting down but emergency logins are allowed */ 932 lgwd = 1; /* convert to "login" */ 933 else go to reject_login_word; /* Don't let user try to guess magic word */ 934 else if lgwd > hbound (as_data_login_words.words, 1) then /* Normal Session. Unknown word */ 935 go to bad_login_word; /* Tell user. Give 'em another chance */ 936 937 /* Note that anonymous users cannot login during special session. */ 938 939 if lgwd <= 6 then do; /* Command is of login type. Parse args. */ 940 call grab_ute; /* get a user_table_entry */ 941 call ipc_$decl_ev_call_chn (ute.event, dialup_, utep, INT_LOGIN_PRIO, code); 942 if code ^= 0 then do; 943 call sys_log_$error_log (SL_LOG_BEEP, code, ME, 944 "Unable to declare handler for ev chn ^24.3b for ate ^p for ^a", 945 ute.event, utep, cdte.name); 946 call asu_$write_chn_message (cdtep, as_error_table_$dialup_error, shxx, code); 947 if code ^= 0 then goto chn_error; 948 goto listen_again; 949 end; 950 ute.login_code = substr (user_login_word, 1, 8); 951 if nc <= jj then do; /* Is line currently empty? */ 952 read_login_args: cdte.tra_vec = WAIT_LOGIN_ARGS; /* Set up wait point */ 953 ute.count = lgwd; /* Remember what we're up to. */ 954 call asu_$write_chn_message (cdtep, as_error_table_$login_args, shxx, code); 955 if code ^= 0 then go to chn_error; 956 957 hand (4): call astty_$tty_read (cdtep, addr (buff), nc, code); /* Read rest of login command */ 958 if code ^= 0 then go to chn_error; 959 if nc <= 0 then go to exit1; /* Wait for him to type */ 960 timeout (4): jj = 1; /* Now parse the rest of the line. */ 961 lgwd = ute.count; /* .. and then execute the command. */ 962 end; 963 old_type = cdte.current_terminal_type; /* save this in case parse_login_line_ changes it */ 964 ute.tty_id_code = cdte.tty_id_code; /* as_who will want this */ 965 ute.line_type = cdte.cur_line_type; 966 ute.network_connection_type = MCS_NETWORK_TYPE; 967 968 call parse_login_line_ (addr (substr (buff, jj, 1)), nc - jj + 1, utep, new_modes, error_mess, code); 969 if code = error_table_$noarg then go to read_login_args; /* If user gave no args, ask for them. */ 970 if code ^= 0 then do; /* If any error, fuss. */ 971 cdte.current_terminal_type = old_type; /* because we won't do any changing this time */ 972 bad_login_slave_dial_request: 973 call ioa_$rs (convert_message (code), buff, i, error_mess); /* Object to bad argument. */ 974 call astty_$tty_force (cdtep, addr (buff), i, code); 975 if code ^= 0 then go to chn_error; 976 go to try_again; 977 end; 978 979 if ute.ur_at.brief then /* if user SPECIFIED -lg or -bf */ 980 logout_brief = ute.at.brief; 981 connect_immediate = cdte.immediate_arg; 982 983 if cdte.current_terminal_type ^= old_type /* user changed his terminal type */ 984 then do; 985 call change_type (cdte.current_terminal_type, "1"b, "0"b, code); 986 if code ^= 0 then go to chn_user_error; 987 end; 988 else if ute.uflags.send_initial_string /* he said -ttp but specified same type */ 989 then do; 990 call set_tabs_and_modes_gently (code); 991 if code ^= 0 then go to chn_user_error; 992 end; 993 ute.terminal_type = cdte.current_terminal_type; 994 995 if new_modes ^= "" then do; /* Did user specify "-modes" ? */ 996 call astty_$tty_changemode (cdtep, (new_modes), code); 997 if code = -1 then go to chn_error; /* Check if user hung up. */ 998 if code ^= 0 then do; /* If can't make modes, dump login attempt. */ 999 j = lgwd + mod (lgwd, 2); /* get long name of login command */ 1000 call ioa_$rs ("^a: ^a ^a", buff, i, as_data_login_words.words (j), convert_message (code), new_modes); 1001 call astty_$tty_force (cdtep, addr (buff), i, code); 1002 if code ^= 0 then go to chn_error; 1003 go to try_again; 1004 end; 1005 end; 1006 call astty_$tty_order (cdtep, "store_id", addr (cdte.tty_id_code), ignore_code); /* Store the terminal_id */ 1007 end; 1008 1009 go to login_handler (lgwd); /* Dispatch on login command. */ 1010 1011 1012 bad_login_word: 1013 call ioa_$rs (bad_login_word_fmt, buff, i, user_login_word); /* Not legal login word. Complain. */ 1014 call astty_$tty_force (cdtep, addr (buff), i, code); /* .. */ 1015 if code ^= 0 then go to chn_error; 1016 call astty_$tty_abort (cdtep, 1, code); /* flush type-ahead */ 1017 if code ^= 0 then go to chn_error; 1018 go to try_again; 1019 1020 user_typed_quit: 1021 call asu_$write_chn_message (cdtep, as_error_table_$user_typed_quit, shxx, code); 1022 if code ^= 0 then go to chn_error; 1023 go to try_again; 1024 1025 try_again_code: 1026 call print_ascii_msg (code, ""); 1027 1028 try_again: /* transfer point for repeat login attempts */ 1029 call free_ute; /* If a ute was allocated, free it */ 1030 cdte.count = cdte.count + 1; /* Count errors. */ 1031 if cdte.count > installation_parms.login_tries then go to listen_again; 1032 /* Has user tried us too many times? */ 1033 call asu_$write_chn_message (cdtep, as_error_table_$try_again, shxx, code); 1034 if code ^= 0 then go to chn_error; 1035 go to read_login_line; /* Read another line. */ 1036 1037 reject_login_word: 1038 if anstbl.session = "shutdown" then /* Is the system coming down? */ 1039 tcode = as_error_table_$shutdown; /* Yes, tell user */ 1040 else if anstbl.session = "init " then /* Not up yet. */ 1041 tcode = as_error_table_$coming_up; /* Tell him we will be up shortly. */ 1042 else tcode = as_error_table_$special_session; /* Go way kid you bother me */ 1043 call asu_$write_chn_message (cdtep, tcode, shxx, code); /* .. */ 1044 if code ^= 0 then go to chn_error; 1045 if tcode = as_error_table_$special_session then go to try_again; /* Be a little loose */ 1046 else go to listen_again; /* Hang up on the fella. */ 1047 1048 1049 login_handler (5): /* "ep" */ 1050 login_handler (6): /* "enterp" */ 1051 if cdte.disconnected_proc_command ^= 0 then do; /* -connect specified */ 1052 no_anon_connect_loop: 1053 call asu_$write_chn_message (cdtep, as_error_table_$no_disconnected_procs, shxx, code); 1054 if code ^= 0 then go to chn_error; 1055 go to try_again; 1056 end; 1057 1058 ute.anonymous = 1; /* Set anonymous-login flag. */ 1059 ute.login_flags.cpw = "0"b; /* Can't change password. */ 1060 ute.login_flags.generate_pw = "0"b; /* ... */ 1061 1062 login_handler (1): /* "l" */ 1063 login_handler (2): /* "login" */ 1064 read_password: /* for "slave" and "dial" */ 1065 if ute.mask_ctl = DERIVE_MASK /* user didn't say -pf or -npf */ 1066 then if cdte.dialup_flags.cpo /* this terminal type's printer depends on id */ 1067 then if substr (cdte.tty_id_code, 1, 1) < "A" 1068 then ute.mask_ctl = DONT_MASK; 1069 else ute.mask_ctl = DO_MASK; 1070 1071 if ute.mask_ctl = DONT_MASK /* either as result above or it already was */ 1072 then do; 1073 call astty_$tty_order (cdtep, "accept_printer_off", null, code); 1074 if code ^= 0 then go to chn_error; 1075 end; 1076 1077 else if ute.mask_ctl = DO_MASK /* this terminal really doesn't have printer_off */ 1078 then do; 1079 call astty_$tty_order (cdtep, "refuse_printer_off", null, code); 1080 if code ^= 0 then go to chn_error; 1081 end; 1082 1083 user_password = ""; /* Preset password to blanks */ 1084 call astty_$tty_force (cdtep, addr (pw_msg), pw_msg_lth, code); /* Ask for password. */ 1085 if code ^= 0 then go to chn_error; 1086 1087 call type_black; /* Hide password */ 1088 1089 if ute.login_flags.cpw then do; /* If changing password, need special stuff. */ 1090 cdte.tra_vec = WAIT_OLD_PASSWORD; /* Set transfer vector so we come back here. */ 1091 hand (5): call astty_$tty_read (cdtep, addr (buff), nc, code); /* read password */ 1092 if code ^= 0 then go to chn_error; 1093 if nc <= 0 then go to exit1; /* Was anything typed? */ 1094 timeout (5): /* come here if line read during timeout */ 1095 call login_parse_$password (addr (buff), nc, user_password, k, jj, tcode); /* Get password from line. */ 1096 if tcode = error_table_$noarg then go to hand (5); /* Ignore all blank line. */ 1097 call turn_printer_on (code); 1098 if code ^= 0 then go to chn_error; 1099 if tcode ^= 0 | k > length (user_password) then do; /* just a slap on the wrist */ 1100 call asu_$write_chn_message (cdtep, as_error_table_$pw_format_warning, shxx, code); 1101 if code ^= 0 then go to chn_error; 1102 end; 1103 if user_password = "HELP" | user_password = "help" | user_password = "?" then do; 1104 call asu_$write_chn_message (cdtep, as_error_table_$help_password, shxx, code); 1105 if code ^= 0 then go to chn_error; 1106 go to login_handler (2); 1107 end; 1108 if user_password = "quit" | user_password = "QUIT" then go to user_typed_quit; 1109 ute.old_password = scramble_ (user_password);/* Stow in anstbl, all mashed up. */ 1110 user_password = ""; /* Keep secure */ 1111 buff = ""; /* .. */ 1112 1113 if ute.login_flags.generate_pw /* does user want us to give pw? */ 1114 then do; /* get one that is 6 chars long */ 1115 1116 /**** Determine the length of the password to generate. We use the value 1117* of ip.password_gpw_length, unless ip.password_min_length is greater 1118* than this, in which case we use the latter */ 1119 1120 gpw_length = max (installation_parms.password_gpw_length, 1121 installation_parms.password_min_length); 1122 if gpw_length < 1 then 1123 gpw_length = 1; /* don't allow absurd values */ 1124 1125 do k = 1 to 5; /* allow up to 5 tries to generate a different pw */ 1126 1127 call generate_word_ (user_password, password_pronunciation, gpw_length, gpw_length); 1128 ute.generated_pw = scramble_ (user_password); /* save it for later */ 1129 if ute.generated_pw ^= ute.old_password then go to have_different_pw; 1130 end; 1131 new_pw_same_as_old: 1132 call asu_$write_chn_message (cdtep, as_error_table_$new_password_indistinct, shxx, code); 1133 if code ^= 0 then go to chn_error; 1134 go to try_again; 1135 have_different_pw: 1136 call ioa_$rs (convert_message (as_error_table_$generated_pw_msg), 1137 buff, i, user_password, password_pronunciation); 1138 1139 user_password = ""; /* To the best of my recollection, Senator ... */ 1140 password_pronunciation = ""; /* at that point in time ... */ 1141 call astty_$tty_force (cdtep, addr (buff), i, code); /* show user the generated password */ 1142 buff = ""; /* I don't remember a thing. */ 1143 if code ^= 0 then go to chn_error; /* (clear buff before checking code!) */ 1144 end; /* end -gpw do group */ 1145 1146 /* For either -gpw or -cpw, we say: "New Password:" at this point. */ 1147 1148 prompt_npw: call astty_$tty_force (cdtep, addr (npw_msg), npw_msg_lth, code); 1149 if code ^= 0 then goto chn_error; 1150 1151 if ^ute.login_flags.generate_pw then do; /* User said -cpw; wait for him to type it, 1152* and then ask him to repeat it */ 1153 call type_black; /* turn off printer or type mask, to hide new password */ 1154 cdte.tra_vec = WAIT_NEW_PASSWORD; /* remember where to resume after user types it */ 1155 1156 hand (7): call astty_$tty_read (cdtep, addr (buff), nc, code); 1157 if code ^= 0 then goto chn_error; 1158 if nc <= 0 then goto exit1; /* if user has not typed it yet, go 'way 'til he does */ 1159 1160 timeout (7): 1161 call login_parse_$password (addr (buff), nc, temp_password, k, jj, tcode); 1162 if tcode = error_table_$noarg then goto hand (7); /* if blank line, read again */ 1163 call turn_printer_on (code); 1164 if code ^= 0 then goto chn_error; 1165 if tcode ^= 0 | k > length (temp_password) then do; 1166 bad_password_format: call asu_$write_chn_message (cdtep, as_error_table_$bad_password_format, shxx, code); 1167 if code ^= 0 then go to chn_error; 1168 go to try_again; 1169 end; 1170 if temp_password = "help" | temp_password = "HELP" | temp_password = "?" then do; 1171 call asu_$write_chn_message (cdtep, as_error_table_$help_new_pw, shxx, code); 1172 if code ^= 0 then go to chn_error; 1173 go to prompt_npw; 1174 end; 1175 if temp_password = "quit" | temp_password = "QUIT" then go to user_typed_quit; /* giving up? */ 1176 1177 buff = ""; /* be sure unscrambled password is blanked out */ 1178 1179 /**** Call check_password_ to ensure the password is valid at this 1180* site. */ 1181 1182 call check_password_ (temp_password, error_message, code); 1183 if code ^= 0 then 1184 do; 1185 call ioa_$rs ("login: Invalid password. ^a.", 1186 buff, i, error_message); 1187 call astty_$tty_force (cdtep, addr (buff), i, code); 1188 if code ^= 0 then 1189 goto chn_error; 1190 goto prompt_npw; 1191 end; 1192 1193 temp_password = scramble_ (temp_password); /* working with scrambled versions is more secure */ 1194 if temp_password = ute.old_password then 1195 goto new_pw_same_as_old; /* if you say -cpw, you should change it! */ 1196 1197 prompt_npw_vfy: call astty_$tty_force (cdtep, addr (npw_again_msg), npw_again_msg_lth, code); 1198 /* ask for repeat of new password */ 1199 if code ^= 0 then goto chn_error; 1200 1201 ute.generated_pw = temp_password; /* save new pw in anstbl entry while waiting for repeat */ 1202 end; /* end of -cpw do group */ 1203 1204 call type_black; /* turn off printer or type mask, to hide new password */ 1205 1206 end; /* end of -gpw or -cpw do group */ 1207 1208 cdte.tra_vec = WAIT_PASSWORD; /* Set transfer vector to come back here. */ 1209 1210 /* At this point, we are waiting for one of three things: 1211* 1) user to repeat new password, if -cpw; 1212* 2) user to type generated password for the first time, if -gpw; 1213* 3) user to type current password, if neither -cpw or -gpw. 1214**/ 1215 1216 hand (6): call astty_$tty_read (cdtep, addr (buff), nc, code); /* read the password */ 1217 if code ^= 0 then go to chn_error; 1218 if nc <= 0 then go to exit1; /* wait for him */ 1219 timeout (6): /* come here if line read during timeout */ 1220 call login_parse_$password (addr (buff), nc, user_password, k, jj, tcode); /* extract password */ 1221 if tcode = error_table_$noarg then go to hand (6);/* Ignore all blank line. */ 1222 call turn_printer_on (code); 1223 if code ^= 0 then go to chn_error; 1224 if tcode ^= 0 | k > length (user_password) then /* something naughty */ 1225 if ^ute.login_flags.cpw then do; /* this is real password */ 1226 /* so just make it a warning */ 1227 call asu_$write_chn_message (cdtep, as_error_table_$pw_format_warning, shxx, code); 1228 if code ^= 0 then go to chn_error; 1229 end; /* if -cpw, it has to match, anyhow! */ 1230 if user_password = "quit" | user_password = "QUIT" then go to user_typed_quit; /* he wants to give up */ 1231 if user_password = "help" | user_password = "HELP" | user_password = "?" then do; 1232 if ute.login_flags.cpw then 1233 if ute.login_flags.generate_pw then tcode = as_error_table_$help_gpw_verify; 1234 else tcode = as_error_table_$help_npw_verify; 1235 else tcode = as_error_table_$help_password; 1236 call asu_$write_chn_message (cdtep, tcode, shxx, code); 1237 if code ^= 0 then go to chn_error; 1238 if ute.login_flags.cpw then 1239 if ute.login_flags.generate_pw then go to prompt_npw; 1240 else go to prompt_npw_vfy; 1241 else go to login_handler (2); 1242 end; 1243 1244 user_password = scramble_ (user_password); /* No peeking. */ 1245 buff = ""; /* blank out unscrambled version */ 1246 1247 if ute.login_flags.cpw then do; /* if this is repeat of new password, compare to first one */ 1248 if user_password ^= ute.generated_pw then do;/* note that they are both scrambled */ 1249 if ute.login_flags.generate_pw then /* get the right error message */ 1250 ignore_code = as_error_table_$generated_pw_err; 1251 else ignore_code = as_error_table_$new_pw_err; 1252 call asu_$write_chn_message (cdtep, ignore_code, shxx, code); 1253 if code ^= 0 then goto chn_error; 1254 goto try_again; /* Please try again or type help for instructions */ 1255 end; 1256 end; 1257 1258 go to trylog; 1259 1260 login_handler (3): /* "e" - no password needed. */ 1261 login_handler (4): /* "enter" */ 1262 if cdte.disconnected_proc_command ^= 0 then /* -connected specified */ 1263 go to no_anon_connect_loop; 1264 ute.anonymous = 1; /* No password needed */ 1265 1266 trylog: static_label = abort; /* in case error */ 1267 call lock; /* interlock answer table to prevent updates */ 1268 1269 /* The answer table lock prevents up_sysctl_ from installing a system table. 1270* We don't want the SAT or a PDT installed out from under us while we are logging 1271* someone in, so we lock it before calling lg_ctl_ (which looks in the tables 1272* to see if the user can log in), and we leave it locked (if we are going to 1273* create a process) until act_ctl_ has recorded the login in the PDT entry. */ 1274 1275 cdte.n_disconnected_procs = 0; /* make sure there's no leftover garbage in these */ 1276 cdte.disconnected_ate_index = 0; 1277 1278 /**** lg_ctl_ checks passwords, aim, attributes, and channel aim and acs's. 1279* If there is a disconnected process, though, it returns control 1280* prematurely. However, ute.process_authorization is always set 1281* to the default auth or the -auth value, and is validated against 1282* SAT/PDT/PNT values. (if one or more check_acs fields are disabled, 1283* though, it will not do this). If cdte.current_access_class_valid 1284* was "0"b when lg_ctl_ was called, then it will be set to "1"b if 1285* a user name/password was processed. */ 1286 1287 ute.tag = TAG_INTERACTIVE; /* set this before calling lg_ctl_ */ 1288 1289 if string (ute.login_flags.special_pw) then 1290 call lg_ctl_$validate (utep, user_password, reason, code); /* check pw, etc. */ 1291 else call lg_ctl_$login (utep, user_password, reason, code); /* get permission to log in */ 1292 ute.old_password, ute.generated_pw = ""; /* for added security */ 1293 1294 /* Check for success or failure of the login */ 1295 1296 if ute.login_result ^= 0 then do; /* did he fail? */ 1297 call unlock; /* Allow logins */ 1298 if reason ^= "" /* if lg_ctl_ had something to say */ 1299 then do; 1300 substr (buff, 1, length (reason)) = reason; 1301 call astty_$tty_force (cdtep, addr (buff), length (reason), code); 1302 if code ^= 0 then go to chn_error; 1303 end; 1304 if ute.active >= NOW_LOGGED_IN then /* if we told him he was logged in */ 1305 call print_logged_out; /* tell him that he isn't, anymore */ 1306 if ute.login_result = 1 then go to listen_again; /* don't allow another attempt */ 1307 else go to try_again; /* get another chance to login */ 1308 end; 1309 1310 /* See if this is dial or slave with a -user control argument */ 1311 1312 if string (ute.login_flags.special_pw) ^= ""b then do; 1313 call unlock; /* no use of PDT/SAT follows here */ 1314 if ute.login_flags.dial_pw then go to dial_command_join; 1315 else if ute.login_flags.slave_pw then go to slave_command_join; 1316 end; 1317 1318 /* See if lg_ctl_ found a disconnected process */ 1319 1320 if cdte.n_disconnected_procs > 0 /* if user has disconnected processes */ 1321 & cdte.disconnected_proc_command ^= 2 then do; /* and didn't ask for another one */ 1322 call unlock; /* we aren't going to create a proc, so unlock anstbl */ 1323 if cdte.disconnected_proc_number > cdte.n_disconnected_procs then 1324 goto no_such_process; /* user asked for process N but doesn't have that many */ 1325 1326 if cdte.disconnected_proc_command = 0 then /* disconnected procs, but no relevant login control args */ 1327 if ute.at.brief then go to read_connect_request_brief; /* right into the request loop */ 1328 else goto give_instructions; /* supply more information */ 1329 1330 if cdte.disconnected_proc_command = 1 then /* -list */ 1331 goto list_request; 1332 1333 if cdte.disconnected_proc_number = 0 /* if user didn't specify a process number */ 1334 & cdte.disconnected_proc_command > 2 then do; /* but gave an arg that goes with a process */ 1335 if cdte.n_disconnected_procs > 1 then /* if he has more than one, we don't know which one he wants */ 1336 goto must_give_proc_no; 1337 cdte.disconnected_proc_number = 1; /* default to process number 1 if that's the only one there is */ 1338 end; 1339 1340 logout_hold = ^cdte.no_hold_arg; /* set up automatic variable */ 1341 1342 /* command not 0, 1, or 2, so must be 3, 4, or 5 (connect, new_proc, or destroy) */ 1343 1344 execute_connect_request: 1345 1346 do j = 1 to cdte.disconnected_proc_number; /* search list for user-specified proc */ 1347 call get_next_disc_ate_jkp; /* get next disconnected ate; 1348* global variables j, k, and p are implied arguments */ 1349 end; 1350 1351 /**** NOTE: 1352* p -> disconnected process ute. 1353* j = process number 1354* k = the index of the ute in the answer table. 1355* 1356* Now we check that user has enough AIM authorization to 1357* " do anything to this process. We require EQUAL auth for 1358* any of connect, new_proc, and destroy, to avoid 1359* write-down or destruction of information. */ 1360 1361 if ^cdte.current_access_class_valid 1362 then do; /* This should never happen, since the login command always required Identification and Authentication */ 1363 call sys_log_ (SL_LOG, "^a: program error. cdte.current_access_class_valid = ""0""b at disconnected process manipulation for ^a.^a channel ^a.", ME, ute.person, ute.project, cdte.name); 1364 call print_ascii_msg (as_error_table_$dialup_error, 1365 ""); 1366 go to read_connect_request; 1367 end; 1368 1369 if ^aim_check_$equal (ute.process_authorization, /* contains -auth which was forced to be reasonable W.R.T. channel AIM. */ 1370 p -> ute.process_authorization) 1371 then do; 1372 call ioa_$rsnnl ("User authorization = ^a, Process authorization = ^a", 1373 added_info, (0), 1374 display_access_class_ (ute.process_authorization), 1375 display_access_class_ (p -> ute.process_authorization)); 1376 call as_access_audit_$process_connect_denied (utep, p, added_info); 1377 call convert_status_code_ (as_error_table_$no_connect_aclass, shxx, format); 1378 call ioa_$rs (rtrim (format), buff, i, (cdte.n_disconnected_procs > 1), cdte.disconnected_proc_number); 1379 call print_buff; 1380 go to read_connect_request; 1381 end; 1382 1383 temp_atep = utep; /* remember temporary atep */ 1384 utep = p; /* get ptr to disconnected process ate */ 1385 call timer_manager_$reset_alarm_wakeup (cdte.event); 1386 ute.lock_value = ute.lock_value + temp_atep -> ute.lock_value; 1387 ute.outer_module = temp_atep -> ute.outer_module; /* lg_ctl_ will have determined 1388* the correct outer module for this connection */ 1389 ute.at.brief = temp_atep -> ute.at.brief; 1390 1391 call asu_$release_ate (cdtep, code); /* give back the ate that we were using */ 1392 cdte.process = utep; /* connect cdte to existing ate */ 1393 ute.channel = cdtep; /* in both directions */ 1394 ute.tty_name = cdte.name; /* copy new channel name into existing ate */ 1395 ute.tty_id_code = cdte.tty_id_code; /* also copy answerback */ 1396 ute.terminal_type = cdte.current_terminal_type; 1397 ute.line_type = cdte.cur_line_type; 1398 ute.network_connection_type = MCS_NETWORK_TYPE; 1399 1400 if cdte.charge_type > 0 then /* if we normally charge for this channel */ 1401 call device_acct_$on ((cdte.charge_type), cdte.name, utep); /* then start doing so */ 1402 cdte.n_logins = cdte.n_logins + 1; /* count number of successful logins on channel */ 1403 1404 call as_access_audit_$process (utep, AS_AUDIT_PROCESS_CONNECT, 1405 ""); /* Audit the process connection */ 1406 1407 /* Tell the user what we're about to do. 1408* This message could not be put into as_error_table_ because the conditionals contain semicolons, 1409* and the error_table_compiler doesn't allow semicolons imbedded in messages. */ 1410 1411 if ^ute.at.brief then do; /* unless user thinks he knows it all */ 1412 call ioa_$rs 1413 ("Your disconnected process ^[#^d ^;^s^]will be ^[destroyed^s^;connected to this terminal^[ after new_proc^]^].", 1414 buff, i, 1415 /* Your disconnected process */ 1416 (cdte.n_disconnected_procs > 1), cdte.disconnected_proc_number, /* #N */ 1417 /* will be */ 1418 (cdte.disconnected_proc_command = 5), /* destroyed */ 1419 /* connected to this terminal */ 1420 (cdte.disconnected_proc_command = 4)); /* after new_proc */ 1421 call print_buff; 1422 end; 1423 i = 0; /* don't print twice */ 1424 1425 /**** Reset the process termination handler to be us, dialup_, in case 1426* this is a reconnection from a previous MNA connection, in which case 1427* uc_proc_term_handler_ is still associated with the channel as the 1428* process termination handler */ 1429 1430 call ipc_$decl_ev_call_chn (ute.event, dialup_, utep, INT_LOGIN_PRIO, code); 1431 if code ^= 0 then do; 1432 call sys_log_$error_log (SL_LOG_BEEP, code, ME, 1433 "Unable to declare handler for ev chn ^24.3b for UTE ^p for ^a", 1434 ute.event, utep, cdte.name); 1435 call asu_$write_chn_message (cdtep, as_error_table_$dialup_error, shxx, code); 1436 if code ^= 0 then goto chn_error; 1437 goto listen_again; 1438 end; 1439 1440 if cdte.disconnected_proc_command = 3 then goto connect_tty; /* -connect */ 1441 1442 else do; /* -new_proc or -destroy */ 1443 cdte.in_use = NOW_HAS_PROCESS; /* get ready to jump into the middle of */ 1444 cdte.tra_vec = WAIT_LOGOUT_SIG; /* the process destruction code */ 1445 static_label = abort; 1446 tcode = 0; 1447 error_mess = ""; 1448 helphelp = ""b; 1449 ute.pdtep -> user.n_disconnected = /* decrement count of user's disconnected processes */ 1450 max (0, ute.pdtep -> user.n_disconnected - 1); 1451 ute.disconnected = ""b; 1452 if ute.whotabx > 0 then do; 1453 whotab.e (ute.whotabx).disconnected = ""b; 1454 whotab.e (ute.whotabx).idcode = cdte.tty_id_code; 1455 end; 1456 call unlock; 1457 1458 if cdte.disconnected_proc_command = 4 then do; /* -new_proc */ 1459 ute.logout_type = "new_"; /* set for audit messages */ 1460 j = 2; /* table position of new_proc wakeup */ 1461 end; 1462 else do; /* -destroy */ 1463 ute.logout_type = "dest"; /* set for audit messages */ 1464 if cdte.n_disconnected_procs = 1 & /* if only one disconnected proc, regular logout */ 1465 ^logout_hold then /* user said -no_hold */ 1466 j = 4; /* table position of logout wakeup */ 1467 else /* if more than one, logout -hold */ 1468 j = 3; /* table position of logout -hold wakeup */ 1469 end; 1470 1471 if ^connect_immediate then /* user didn't say -immediate */ 1472 if asu_$send_term_signal (utep, j) then /* see if we want to send trm_ to the process */ 1473 goto exit1; /* if we did, we'll get a wakeup when it destroys itself */ 1474 1475 goto logout_handler (j); /* if -immediate or no trm_ sent, go shoot it down immediately */ 1476 end; 1477 1478 end; /* end disconnected procs > 0 & command ^= create */ 1479 1480 if cdte.n_disconnected_procs = 0 /* if user has no disconnected processes */ 1481 & cdte.disconnected_proc_command ^= 0 /* but gave an argument pertaining to disconnected processes */ 1482 & cdte.disconnected_proc_command ^= 2 /* and it wasn't -create */ 1483 then do; /* then go complain */ 1484 call unlock; /* but make sure not to leave anstbl locked */ 1485 go to read_connect_request; /* don't tell him twice he has no processes */ 1486 end; 1487 1488 /* If we get here, the user wanted a process created, either -create or no args and no disconnected processes */ 1489 1490 1491 /* Check for persistent bug */ 1492 1493 if ^ute.uflags.proc_create_ok then do; /* if lg_ctl_ did not fill in the process creation variables */ 1494 call sys_log_ (SL_LOG, "^a: program error: attempt to create process for ^a.^a ^a, 1495 with ate ^p not filled in; n_disc=^d,disc_com=^d,disc_ate_ix=^d", 1496 ME, ute.person, ute.project, cdte.name, utep, cdte.n_disconnected_procs, 1497 cdte.disconnected_proc_command, cdte.disconnected_ate_index); 1498 tcode = as_error_table_$dialup_error; 1499 call asu_$write_chn_message (cdtep, tcode, shxx, code); 1500 if code ^= 0 then goto chn_error; 1501 logout_hold = "1"b; /* don't hang up */ 1502 call unlock; /* make sure not to leave anstbl locked */ 1503 goto log_disconnected_user_out; /* if we printed logged in, print logged out */ 1504 end; 1505 1506 /* User is authorized to log in. */ 1507 1508 call timer_manager_$reset_alarm_wakeup (cdte.event); 1509 /* Turn off egg timer on logins */ 1510 ute.n_processes = 0; /* set to 'initial process creation' */ 1511 1512 call act_ctl_$open_account (utep); /* open and activate user's account */ 1513 cdte.n_logins = cdte.n_logins + 1; /* count number of successful logins on channel */ 1514 cdte.current_access_class (*) = ute.process_authorization; /* note the single class of the connection in the cdte */ 1515 1516 /* Come here to create new process on login, new_proc, or fatal error termination */ 1517 1518 create: if cdte.charge_type > 0 1519 then call device_acct_$on ((cdte.charge_type), cdte.name, utep); /* Charge for fancy devices */ 1520 call lock; /* interlock answer table to prevent updates */ 1521 if ute.whotabx > 0 then 1522 whotab.e (ute.whotabx).suspended = "0"b; /* KLUDGE - this should be better */ 1523 ute.ignore_cpulimit = "1"b; /* KLUDGE - this should be better */ 1524 ute.suspended, ute.sus_sent = ""b; /* KLUDGE - this should be better */ 1525 ute.n_processes = ute.n_processes + 1; /* count number of processes in session */ 1526 if ute.preempted >= PREEMPT_TERM_SENT then 1527 ute.preempted = PREEMPT_UNBUMP_IGNORE_ALARM; /* in case we came here after operator term command */ 1528 1529 call cpg_ (utep, code); /* Call utility to create process (calls actproc) */ 1530 if code ^= 0 then do; /* should never happen */ 1531 call sys_log_$error_log (SL_LOG_BEEP, code, ME, "creating process for ^a.^a", 1532 ute.person, ute.project); 1533 /* Clean up after the aborted login (thank you, Steve Landry) */ 1534 ute.logout_type = "cpg"; /* act_ctl_$close_account needs a reason for the logout */ 1535 call act_ctl_$close_account (utep); /* close account and print logout message for operator */ 1536 call lg_ctl_$logout (utep); /* remove user from whotab and return his load units */ 1537 tcode = as_error_table_$process_create_fail; /* Tell user we failed. */ 1538 i = 0; /* No further message. */ 1539 cdte.tra_vec, ute.destroy_flag = WAIT_LOGOUT_HOLD; /* and after destroying process, let user try again */ 1540 call unlock; /* Unlock ate */ 1541 go to kill; /* Get tty back. */ 1542 end; 1543 1544 call act_ctl_$cp (utep); /* Record the creation of the user process. */ 1545 ute.active = NOW_HAS_PROCESS; /* User now has a process. */ 1546 1547 connect_tty: 1548 cdte.in_use = NOW_HAS_PROCESS; /* Indicate that there is a process. */ 1549 1550 /* Display the message "Your authorization is ..." upon process creation 1551* or connection. */ 1552 1553 call DISPLAY_PROCESS_AUTHORIZATION (); 1554 1555 call astty_$tty_new_proc (cdtep, ute.proc_id, code); /* give tty to new process before it runs */ 1556 if code ^= 0 then go to abort; /* kill proc if hungup */ 1557 1558 call astty_$tty_order (cdtep, "copy_meters", null (), code); 1559 1560 if ute.disconnected then do; /* if we're reconnecting a process */ 1561 call cpg_$set_pit_tty_info (utep, code); /* tell process about it's new terminal */ 1562 if code ^= 0 then do; 1563 call sys_log_$error_log (SL_LOG_SILENT, code, ME, "setting new tty info for ^a", cdte.name); 1564 /* for now, keep going and see what happens */ 1565 end; 1566 call asu_$release_suspended_process (utep); /* tell process that it may run again */ 1567 1568 /**** Now send the process a wakeup over the event channel setup by the 1569* sus_ signal handler, to kick the process into action again. */ 1570 1571 call hcs_$wakeup (ute.proc_id, ute.sus_channel, (0), code); 1572 if code ^= 0 then 1573 call sys_log_$error_log (SL_LOG_SILENT, code, ME, 1574 "Trying to wakeup process after reconnection for ^a.^a.^a.", ute.person, ute.project, ute.tag); 1575 1576 ute.pdtep -> user.n_disconnected = /* decrement count of user's disconnected processes */ 1577 max (0, ute.pdtep -> user.n_disconnected - 1); 1578 ute.disconnected = ""b; 1579 if ute.whotabx > 0 then do; 1580 whotab.e (ute.whotabx).disconnected = ""b; /* publish it */ 1581 whotab.e (ute.whotabx).idcode = cdte.tty_id_code; 1582 end; 1583 end; 1584 1585 else call asu_$start_process (utep); /* we're creating a new process, so start it. */ 1586 1587 cdte.tra_vec = WAIT_LOGOUT_SIG; /* Set transfer vector. */ 1588 ute.destroy_flag = WAIT_LOGOUT_SIG; /* .. */ 1589 exit: static_label = exit1; /* in case fault in unlock */ 1590 call unlock; /* release answer table, permit updates */ 1591 1592 exit1: static_label = return_immediately; 1593 call as_meter_$exit_values (DIALUP_METER, new_pf, new_cpu, old_cpu); /* using old_cpu to hold real_time */ 1594 1595 scdtp -> cdt.realtime_in_dialup = scdtp -> cdt.realtime_in_dialup + old_cpu; 1596 scdtp -> cdt.pf_in_dialup = scdtp -> cdt.pf_in_dialup + new_pf; 1597 scdtp -> cdt.cpu_in_dialup = scdtp -> cdt.cpu_in_dialup + new_cpu; 1598 scdtp -> cdt.entries_to_dialup = scdtp -> cdt.entries_to_dialup + 1; 1599 1600 return_immediately: 1601 return; /* This is the main exit. */ 1602 1603 1604 login_handler (7): /* "d" */ 1605 login_handler (8): /* "dial" */ 1606 call grab_ute; /* set up */ 1607 call parse_login_line_$dial_line (addr (substr (buff, jj, 1)), nc - jj + 1, utep, error_mess, code); 1608 if code = error_table_$noarg then go to read_login_args; /* If user gave no args, ask for them. */ 1609 if code ^= 0 then go to bad_login_slave_dial_request; 1610 if ute.person = "anonymous" then ute.anonymous = 1; /* special hack */ 1611 if cdte.flags.access_control.slave_dial 1612 then /* -user needed */ 1613 if ute.person ^= "" 1614 then go to read_password; 1615 else do; 1616 call asu_$write_chn_message (cdtep, as_error_table_$ds_user_required, shxx, ignore_code); 1617 go to try_again; 1618 end; 1619 else /* no -user needed */ 1620 if ute.person ^= "" then 1621 call asu_$write_chn_message (cdtep, as_error_table_$ds_user_ignored, shxx, ignore_code); 1622 1623 dial_command_join: /* back here after password validated */ 1624 dial_qual = ute.dial_qualifier; /* copy ute values */ 1625 dial_arg1 = ute.sender; 1626 1627 call free_ute; /* release the ute */ 1628 call dial_ctl_ (cdtep, dial_qual, dial_arg1, code); 1629 if code ^= 0 1630 then do; 1631 call asu_$write_chn_message (cdtep, code, shxx, ignore_code); /* try to write the error message */ 1632 1633 /**** If he was authenticated, and we logged an LOGIN message, then we 1634* must log an LOGOUT message now. */ 1635 1636 if cdte.flags.access_control.slave_dial then 1637 call lg_ctl_$logout_channel (cdtep, "dial failed"); 1638 1639 if cdte.state < TTY_DIALED then go to listen_again; /* if user hung up during dial */ 1640 else go to try_again; /* all other errors */ 1641 end; 1642 call timer_manager_$reset_alarm_wakeup (cdte.event); /* Success. */ 1643 cdte.tra_vec = WAIT_DIAL_RELEASE; /* Set transfer vector to reclaim channel. */ 1644 go to exit1; /* Note that cdte.in_use is still NOW_DIALED */ 1645 1646 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1647 1648 login_handler (10): /* "HELP" */ 1649 login_handler (9): /* "help" */ 1650 call print_help ("login_help"); 1651 go to try_again; /* Tell him he can try again. */ 1652 1653 login_handler (11): /* "MAP" - The Padlipsky command. */ 1654 call ttt_info_$preaccess_type ("MAP", type_to_set, code); /* find out what type corresponds */ 1655 if code ^= 0 then go to chn_user_error; 1656 if type_to_set ^= "" then do; 1657 call change_type (type_to_set, "1"b, "1"b, code); 1658 if code ^= 0 then go to chn_user_error; 1659 end; 1660 go to read_login_line; /* Try again. */ 1661 1662 login_handler (12): /* "hello" command */ 1663 call hello (0); /* Repeat greeting */ 1664 if code ^= 0 then go to chn_error; 1665 go to read_login_line; /* Let him try login now. */ 1666 1667 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1668 1669 login_handler (13): /* "slave" command */ 1670 call grab_ute; /* set up */ 1671 call parse_login_line_$slave_line (addr (substr (buff, jj, 1)), nc - jj + 1, utep, error_mess, code); 1672 1673 if code ^= 0 then go to bad_login_slave_dial_request; 1674 if ute.person = "anonymous" then ute.anonymous = 1; 1675 if cdte.flags.access_control.slave_dial 1676 then /* -user needed */ 1677 if ute.person ^= "" 1678 then go to read_password; 1679 else do; 1680 call asu_$write_chn_message (cdtep, as_error_table_$ds_user_required, shxx, ignore_code); 1681 go to try_again; 1682 end; 1683 else /* no -user needed */ 1684 if ute.person ^= "" then 1685 call asu_$write_chn_message (cdtep, as_error_table_$ds_user_ignored, shxx, ignore_code); 1686 1687 1688 1689 slave_command_join: /* back here after password verified */ 1690 call free_ute; 1691 cdte.current_service_type = SLAVE_SERVICE; /* Set channel up to wait for Godot. */ 1692 cdte.tra_vec = WAIT_DIAL_RELEASE; /* Do something reasonable if it hangs up */ 1693 cdte.process = null; /* .. */ 1694 call timer_manager_$reset_alarm_wakeup (cdte.event); 1695 1696 call sys_log_ (SL_LOG_SILENT, "SLAVE^12t^[^a.^a^;^s^s^] ^a", 1697 cdte.flags.access_control.slave_dial, cdte.user_name.person, cdte.user_name.project, cdte.name); 1698 go to exit1; 1699 1700 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1701 /* Preaccess commands for setting terminal types and modes */ 1702 1703 login_handler (14): /* "modes" command */ 1704 call login_parse_ (addr (substr (buff, jj, 1)), nc - jj + 1, new_modes, k, j, code); 1705 if code = error_table_$noarg then do; 1706 call astty_$tty_getmode (cdtep, modes_string, code); 1707 if code ^= 0 then modes_string = "?"; 1708 call ioa_$rs ("Current modes: ^a", buff, i, modes_string); 1709 call print_buff; 1710 go to read_login_line; 1711 end; 1712 else if code ^= 0 then go to try_again_code; 1713 1714 go to login_modes_join; 1715 1716 login_handler (25): /* "noecho" command */ 1717 new_modes = "^echoplex"; 1718 goto login_modes_join; 1719 1720 login_handler (15): /* "echo" command */ 1721 new_modes = "echoplex"; 1722 1723 login_modes_join: 1724 call astty_$tty_changemode (cdtep, (new_modes), code); 1725 if code ^= 0 then go to chn_user_error; 1726 go to read_login_line; 1727 1728 1729 login_handler (16): /* "terminal_type" command */ 1730 login_handler (17): /* "ttp" command */ 1731 call login_parse_ (addr (substr (buff, jj, 1)), nc - jj + 1, new_modes, k, j, code); 1732 if code = error_table_$noarg then do; 1733 call ioa_$rs ("Current terminal type is ""^a"".", buff, i, cdte.current_terminal_type); 1734 call print_buff; 1735 go to read_login_line; 1736 end; 1737 else if code ^= 0 then go to try_again_code; 1738 1739 set_type_info.version = stti_version_1; 1740 set_type_info.name = substr (translate (new_modes, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"), 1, 32); 1741 string (set_type_info.flags) = "0"b; 1742 call astty_$tty_order (cdtep, "set_term_type", addr (set_type_info), code); 1743 if code ^= 0 then do; 1744 call convert_status_code_ (code, shxx, error_mess); 1745 call ioa_$rs ("^a ^a", buff, i, error_mess, set_type_info.name); 1746 call print_buff; 1747 go to read_login_line; 1748 end; 1749 cdte.current_terminal_type = set_type_info.name; 1750 call set_tabs_and_modes_gently (code); 1751 call ttt_info_$dialup_flags (set_type_info.name, cdte.dialup_flags.ppm, cdte.dialup_flags.cpo, code); 1752 go to read_login_line; 1753 1754 login_handler (26): /* terminal_id command */ 1755 login_handler (27): /* tid command */ 1756 call login_parse_ (addr (substr (buff, jj, 1)), nc - jj + 1, new_modes, k, j, code); 1757 if code = error_table_$noarg then do; 1758 call ioa_$rs ("Current terminal id is ""^a"".", buff, i, cdte.tty_id_code); 1759 call print_buff; 1760 go to read_login_line; 1761 end; 1762 else if code ^= 0 then go to try_again_code; 1763 1764 if cdte.flags.ck_answerback | nc > jj + j then do; 1765 call print_ascii_msg (as_error_table_$bad_terminal_id, (user_login_word)); 1766 go to read_login_line; 1767 end; 1768 cdte.tty_id_code = substr (new_modes, 1, 4); 1769 go to read_login_line; 1770 1771 login_handler (28): /* access_class command */ 1772 login_handler (29): /* acc */ 1773 call login_parse_ (addr (substr (buff, jj, 1)), nc - jj + 1, "", k, j, code); 1774 if code = 0 then do; 1775 call ioa_$rs ("Usage: access_class", buff, i); 1776 call print_buff; 1777 go to read_login_line; 1778 end; 1779 call print_access_class; 1780 go to read_login_line; 1781 1782 /* ******************** */ 1783 1784 /* The following are only valid when the user is logged in, and we are now awaiting a login command */ 1785 1786 login_handler (20): /* list */ 1787 login_handler (21): /* create */ 1788 login_handler (22): /* connect */ 1789 login_handler (23): /* new_proc */ 1790 login_handler (24): /* destroy */ 1791 1792 call print_ascii_msg (as_error_table_$only_after_login_msg, (user_login_word)); 1793 goto try_again; 1794 1795 /* We come to one of the following labels to print an error message related to disconnected processes, 1796* and then prompt for, and read, a connect request */ 1797 1798 no_such_process: 1799 call ioa_$rs (convert_message (as_error_table_$no_such_process_msg), buff, i, cdte.disconnected_proc_number); 1800 call print_buff; 1801 goto read_connect_request; 1802 1803 no_disconnected_procs: 1804 tcode = as_error_table_$no_disconnected_procs; 1805 goto connect_error; 1806 1807 must_give_proc_no: 1808 tcode = as_error_table_$must_give_proc_no; 1809 goto connect_error; 1810 1811 give_instructions: 1812 if ute.at.brief then go to read_connect_request; /* user doesn't want instructions */ 1813 tcode = as_error_table_$give_instructions; 1814 1815 connect_error: 1816 call asu_$write_chn_message (cdtep, tcode, shxx, code); 1817 if code ^= 0 then goto chn_error; 1818 go to read_connect_request; /* unconditionally write request prompt */ 1819 1820 /* read_connect_request_brief is for use if no error occurred. Then we pay attention to the user's brief bit. 1821* But if he made an error, the read_connect_request label is used, resulting 1822* in the user always getting a prompting message */ 1823 1824 read_connect_request_brief: /* honour brief bit */ 1825 if ute.at.brief then do; /* user doesn't want a prompt */ 1826 cdte.tra_vec = WAIT_CONNECT_REQUEST; 1827 go to wait_connect_request; /* so just wait for him */ 1828 end; 1829 1830 read_connect_request: 1831 cdte.tra_vec = WAIT_CONNECT_REQUEST; /* ask for and wait for connect request */ 1832 if cdte.n_disconnected_procs > 0 then code = as_error_table_$give_connect_request; 1833 else code = as_error_table_$give_connect_request_no_disc; 1834 call asu_$write_chn_message (cdtep, (code), shxx, code); 1835 if code ^= 0 then goto chn_error; 1836 1837 /* WAIT_CONNECT_REQUEST */ 1838 hand (21): 1839 wait_connect_request: 1840 call astty_$tty_read (cdtep, addr (buff), nc, code); 1841 if code ^= 0 then goto chn_error; 1842 if nc <= 0 then goto exit1; /* if user hasn't typed anything yet, 1843* we'll get a wakeup when he does */ 1844 1845 /* We hope we have a connect request */ 1846 1847 timeout (21): 1848 call login_parse_ (addr (buff), nc, user_login_word, k, jj, code); /* get first word on line */ 1849 if code = error_table_$noarg then goto read_connect_request; /* happens if user hits just blanks and carriage return */ 1850 if code ^= 0 then go to try_again_code; 1851 /* look up the word in the table */ 1852 do lgwd = lbound (as_data_login_words.words, 1) to 1853 hbound (as_data_login_words.words, 1) 1854 while (user_login_word ^= as_data_login_words.words (lgwd)); 1855 end; 1856 1857 if lgwd > hbound (as_data_login_words.words, 1) then do; /* user typed an unknown word */ 1858 call print_ascii_msg (as_error_table_$unknown_request_msg, (user_login_word)); 1859 goto read_connect_request; 1860 end; 1861 1862 if lgwd = 9 then do; /* help */ 1863 call print_help ("connect_help"); 1864 goto read_connect_request; 1865 end; 1866 1867 /* Some time, allow the terminal mode setting requests in here */ 1868 1869 if lgwd < 18 | lgwd > 24 then do; /* word recognized but invalid now */ 1870 call print_ascii_msg (as_error_table_$rq_invalid_now_msg, (user_login_word)); 1871 call asu_$write_chn_message (cdtep, as_error_table_$now_logged_in, shxx, code); /* say "You're logged in now; 1872* tell us what to do about your disconnected processes" */ 1873 if code ^= 0 then goto chn_error; 1874 if cdte.n_disconnected_procs > 0 then 1875 goto give_instructions; 1876 else goto read_connect_request; 1877 end; 1878 1879 /* It is a legal connect request */ 1880 1881 goto connect_handler (lgwd - 17); /* map 18 thru 24 into 1 thru 7 */ 1882 1883 connect_handler (1): /* logout */ 1884 login_handler (18): /* logout when not really logged in */ 1885 1886 logout_hold, logout_brief = ""b; /* assume not -hold */ 1887 k = 1; /* get the do while started */ 1888 code = 0; 1889 do while (code = 0); /* as long as there's anything more on the line */ 1890 call login_parse_ (addr (substr (buff, jj, 1)), nc - jj + 1, user_login_word, k, j, code); /* see if there's another word */ 1891 if code ^= error_table_$noarg then 1892 if code ^= 0 then go to try_again_code; 1893 if code = 0 then do; /* there is; see what it is */ 1894 if user_login_word = "-hd" | user_login_word = "-hold" then logout_hold = "1"b; 1895 else if user_login_word = "-no_hold" | user_login_word = "-nhd" then logout_hold = "0"b; 1896 else if user_login_word = "-bf" | user_login_word = "-brief" then logout_brief = "1"b; 1897 else if user_login_word = "-long" | user_login_word = "-lg" then logout_brief = "0"b; 1898 else do; 1899 call print_ascii_msg (as_error_table_$unknown_arg_msg, (user_login_word)); 1900 if cdte.tra_vec = WAIT_CONNECT_REQUEST then /* can user be in connect loop? */ 1901 goto read_connect_request; /* yes */ 1902 else goto try_again; /* silly boy */ 1903 end; 1904 jj = jj + j; /* move cursor past this argument */ 1905 end; 1906 end; 1907 1908 log_disconnected_user_out: 1909 1910 if logout_brief then say_hello = ""b; 1911 else say_hello = "1"b; 1912 1913 if have_ate & ^logout_brief then /* if there's a user and he didn't say -brief */ 1914 if ute.active >= NOW_LOGGED_IN then /* and he got a login message, give him a logout message */ 1915 call print_logged_out; 1916 1917 if logout_hold then do; /* if -hold, clean up and then go print a greeting message */ 1918 call free_ute; 1919 just_dialed_up = "0"b; 1920 goto login; 1921 end; 1922 1923 goto listen_again; 1924 1925 connect_handler (2): /* hangup command while logged in */ 1926 login_handler (19): /* hangup command while not logged in */ 1927 if have_ate then 1928 if ute.active >= NOW_LOGGED_IN then 1929 call lg_ctl_$logout_no_process (utep, "hangup, no process"); 1930 goto listen_again; /* that was easy */ 1931 1932 connect_handler (3): /* list */ 1933 list_request: 1934 if cdte.n_disconnected_procs = 0 then goto no_disconnected_procs; 1935 do j = 1 to cdte.n_disconnected_procs; 1936 call get_next_disc_ate_jkp; /* get next disconnected ate; 1937* global variables j, k, and p are implied arguments */ 1938 date_time = date_time_$format ("date_time", p -> ute.login_time, "", ""); 1939 call ioa_$rs (convert_message (as_error_table_$list_disconnected_msg), buff, i, 1940 j, date_time, p -> ute.tty_name, p -> ute.tty_id_code); 1941 call print_buff; 1942 end; 1943 goto read_connect_request_brief; /* be quiet if the user wants it */ 1944 1945 connect_handler (4): /* create */ 1946 cdte.disconnected_proc_command = 2; /* -create */ 1947 cdte.disconnected_proc_number = 0; 1948 goto trylog; /* go pretend user said login -create */ 1949 1950 connect_handler (5): /* connect */ 1951 cdte.disconnected_proc_command = 3; /* -connect */ 1952 goto connect_common; 1953 1954 connect_handler (6): /* new_proc */ 1955 cdte.disconnected_proc_command = 4; /* -new_proc */ 1956 goto connect_common; 1957 1958 connect_handler (7): /* destroy */ 1959 cdte.disconnected_proc_command = 5; /* -destroy */ 1960 1961 connect_common: 1962 if cdte.n_disconnected_procs = 0 then /* if none, say so before going any further */ 1963 goto no_disconnected_procs; 1964 1965 cdte.disconnected_proc_number = 0; /* illegal value; changes if user gives number */ 1966 logout_hold = "1"b; /* default to -hold */ 1967 do while ("1"b); /* handle all control args */ 1968 call login_parse_ (addr (substr (buff, jj, 1)), nc - jj + 1, user_login_word, k, j, code); /* see if there's another word */ 1969 if code = error_table_$noarg then do; /* no more args - check what we have */ 1970 if cdte.disconnected_proc_number = 0 then /* if user did not give process number */ 1971 if cdte.n_disconnected_procs = 1 then /* if user only has one */ 1972 cdte.disconnected_proc_number = 1; /* default to 1 if no number given */ 1973 else go to must_give_proc_no; /* error if more than one and user didn't say which */ 1974 go to execute_connect_request; /* go connect terminal to process; then do what user requested */ 1975 end; /* end no more arguments */ 1976 else if code ^= 0 then go to try_again_code; 1977 1978 jj = jj + j; /* advance index */ 1979 k = cv_dec_check_ (user_login_word, code); /* think of it as a number */ 1980 if code = 0 then do; /* it was a number */ 1981 if cdte.disconnected_proc_number ^= 0 then do; /* but user already specified a process */ 1982 connect_arg_error: code = as_error_table_$unknown_arg_msg; 1983 call print_ascii_msg (code, (user_login_word)); 1984 go to read_connect_request; /* have the user try again */ 1985 end; 1986 1987 cdte.disconnected_proc_number = k; /* remember it */ 1988 if k <= 0 | k > cdte.n_disconnected_procs then 1989 go to no_such_process; /* user gave nonsense value */ 1990 end; /* it was a number */ 1991 else if user_login_word = "-immediate" | user_login_word = "-im" then do; 1992 if cdte.disconnected_proc_command = 4 | /* new_proc */ 1993 cdte.disconnected_proc_command = 5 then /* destroy */ 1994 connect_immediate = "1"b; /* user want's process destroyed immediately */ 1995 else go to connect_arg_error; 1996 end; 1997 else if user_login_word = "-hold" | user_login_word = "-hd" then do; 1998 if cdte.disconnected_proc_command = 5 | /* destroy */ 1999 cdte.disconnected_proc_command = 1 /* logout */ 2000 then logout_hold = "1"b; /* don't hang up */ 2001 else go to connect_arg_error; 2002 end; 2003 else if user_login_word = "-no_hold" | user_login_word = "-nhd" then do; 2004 if cdte.disconnected_proc_command = 5 | /* destroy */ 2005 cdte.disconnected_proc_command = 1 /* logout */ 2006 then logout_hold = "0"b; /* hang up */ 2007 else go to connect_arg_error; 2008 end; 2009 else go to connect_arg_error; /* invalid control arg */ 2010 end; /* connect control arg loop */ 2011 2012 2013 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 2014* * * 2015* * Here if a logged-in user has something happen to him * 2016* * which involves destroying his process. * 2017* * * 2018* * logout * 2019* * logout hold * 2020* * fatal error in process * 2021* * out of funds * 2022* * can't start process * 2023* * preempted * 2024* * system coming down * 2025* * standby bump * 2026* * inactive too long * 2027* * bumped/unbumped/terminated/detached by operator * 2028* * hung up phone * 2029* * * 2030* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 2031 2032 /* WAIT_LOGOUT_SIG */ 2033 hand (8): funct = signal_type; /* extract event message, tells what to do */ 2034 static_label = abort; /* in case error */ 2035 tcode = 0; /* Assume no special termination code. */ 2036 error_mess = ""; /* clear string used to hold converted status code */ 2037 helphelp = ""b; /* assume user is not in fatal process error trouble */ 2038 if wakeup_from_user then do; 2039 do j = 1 to n_signals while (funct ^= signals (j)); /* check in as_data_ */ 2040 end; 2041 if j <= n_signals then ; /* is it known? */ 2042 else if signal_type1 = "term" | signal_type1 = "init" then do; /* these messages have error code in word 2 */ 2043 tcode = bc.code; /* extract code (xxxx) from "term"xxxx or "init"xxxx */ 2044 if tcode ^= 0 /* Validate it. We don't want to be hacked. */ 2045 then if tcode_left_half ^= baseno (null)/* Oops. Not an error_table_ code. */ 2046 then do; /* wonder what is is ... */ 2047 call ioa_$rsnnl ("Code = ^w", error_mess, i, tcode); /* lets see */ 2048 tcode = 0; /* don't try to convert_status_code_ it */ 2049 end; 2050 j = 1; /* Terminate his process. */ 2051 end; 2052 else if new_proc_auth.np_signal = "np" then /* new_proc -auth AUTH */ 2053 j = 13; /* new_proc to new authorization */ 2054 else if ute.sus_sent & ^ute.suspended then do; /* if waiting for response from sus_, this must be it */ 2055 ute.sus_channel = ev_msg.ev_message; /* save event channel that process is blocked on */ 2056 if ute.ignore_cpulimit then do; /* if process got released before it responded */ 2057 ute.sus_sent = ""b; /* clear the suspended flag */ 2058 if ute.whotabx > 0 then 2059 whotab.e (ute.whotabx).suspended = ""b; /* publish it */ 2060 call hcs_$wakeup (ute.proc_id, ute.sus_channel, (0), (0)); /* tell process it may run */ 2061 end; /* leave the ignore_cpulimit switch on */ 2062 else do; /* not released already (normal case) */ 2063 ute.suspended = "1"b; /* remember that process responded correctly */ 2064 if ute.whotabx > 0 then 2065 whotab.e (ute.whotabx).suspended = "1"b; /* publish it */ 2066 call timer_manager_$reset_alarm_wakeup (ute.event); /* turn off the alarm timer */ 2067 end; 2068 goto exit1; /* and get out */ 2069 end; /* end sus sent */ 2070 else do; /* That's all a user can signal. */ 2071 j = 1; /* Creative user tried to write own logout, and goofed. */ 2072 funct = "badsignl"; /* Or he may have tried to hack us. */ 2073 tcode = as_error_table_$illegal_signal; /* Might as well tell user. */ 2074 end; 2075 end; 2076 else do; /* Must be a system-generated event. */ 2077 do j = 1 to n_system_signals while (funct ^= system_signals (j)); end; 2078 if j <= n_system_signals then j = j + 19; /* See if it is a system signal. */ 2079 else do; /* Probably a hangup ... check it out */ 2080 if ^have_cdte then goto fals0; /* can't be hangup if no cdte */ 2081 call astty_$tty_state (cdtep, code); 2082 if code ^= 0 then go to chn_error; /* tolerate no errors */ 2083 2084 if cdte.state = TTY_DIALED /* not a hangup cause terminal is still there */ 2085 then go to fals0; /* ignore it (but log it first) */ 2086 2087 j = 20; /* set jump index to hangup */ 2088 end; 2089 end; 2090 2091 if have_ate then do; /* watch out for detach of tty with no process (no ate) */ 2092 if ute.preempted ^= PREEMPT_TERM_SENT then /* unless we have already done so */ 2093 ute.logout_type = signal_type1; /* remember the reason for the logout */ 2094 ute.login_flags.noprint = "0"b; /* usually print logout message. */ 2095 end; 2096 2097 i = 0; /* message length = 0 until we build a message */ 2098 2099 go to logout_handler (j); /* Fast dispatch. */ 2100 2101 logout_handler (27): /* ("terminat") Operator terminated process. */ 2102 if asu_$send_term_signal (utep, j) /* send term signal if appropriate */ 2103 then goto exit1; /* if we did, wait for process to destroy itself */ 2104 tcode = as_error_table_$term_by_operator; /* Tell user why process died. */ 2105 /* Fall through into normal case. */ 2106 2107 logout_handler (1): /* ("term"xxxx or "init"xxxx) Process termination. */ 2108 if have_cdte then 2109 call astty_$tty_abort (cdtep, 1, ignore_code); /* abort any read ahead (let writing finish!) */ 2110 if tcode ^= 0 then do; /* If code is not zero then */ 2111 call convert_status_code_ (tcode, shxx, error_mess); 2112 call sys_log_ (SL_LOG_SILENT, "^a: process terminated ^a.^a ^a ^a", 2113 ME, ute.person, ute.project, ute.tty_name, shxx); 2114 tcode = 0; /* Don't print it again... */ 2115 end; 2116 2117 if ute.disconnected then do; /* if a disconnected process gets a fatal error */ 2118 ute.destroy_flag = WAIT_LOGOUT; /* log the user out (no point in anything else) */ 2119 2120 /* TO BE CODED: send the user a message with the reason in it (error_mess contains the reason) */ 2121 2122 end; 2123 2124 else if signal_type1 = "init" then do; /* fatal error during process initialization */ 2125 ute.destroy_flag = WAIT_LOGOUT_HOLD; /* a new process would just get another fatal error */ 2126 call ioa_$rs (init_term_fmt, buff, i, error_mess); /* Put reason for fatal error into message: 2127* Fatal error during process initialization. */ 2128 call sys_log_ (SL_LOG, "^a: fatal error during process creation for ^a.^a ^a", 2129 ME, ute.person, ute.project, cdte.name); 2130 helphelp = "1"b; /* offer some help - its the least we can do */ 2131 end; 2132 2133 else do; /* fatal error not during initialization - 2134* but check for fatal error loop anyway, since 2135* user might be getting errors during start_up.ec */ 2136 if ute.recent_fatal_error_time + installation_parms.fatal_error_loop_seconds * 1000000 < anstbl.current_time then 2137 do; /* if previous fatal error was long ago */ 2138 if ute.uflags.fpe_causes_logout then do; 2139 call convert_status_code_ (as_error_table_$fpe_caused_logout, shxx, error_mess); 2140 call ioa_$rs ("^a", buff, i, error_mess); 2141 ute.destroy_flag = WAIT_LOGOUT_HOLD; 2142 end; 2143 else do; 2144 ute.recent_fatal_error_time = anstbl.current_time; /* reset the fatal error loop timer */ 2145 ute.recent_fatal_error_count = 1; /* and set the counter back to 1 */ 2146 create_another_new_proc: 2147 ute.destroy_flag = WAIT_NEW_PROC; /* let user have another new process after destroying this one. */ 2148 call ioa_$rs (proc_term_fmt, buff, i, error_mess); /* put reason for fatal error into message: 2149* Fatal error. Process has terminated. 2150* New process created. */ 2151 end; 2152 end; /* not too many FPEs */ 2153 2154 else do; /* we seem to have a loop */ 2155 ute.recent_fatal_error_count = ute.recent_fatal_error_count + 1; /* count times around it */ 2156 if ute.recent_fatal_error_count < installation_parms.fatal_error_loop_count then /* if not too many */ 2157 goto create_another_new_proc; /* keep going a while longer */ 2158 ute.destroy_flag = WAIT_LOGOUT_HOLD; /* too many. get out of the loop, but don't hang up */ 2159 call ioa_$rs (proc_term_loop_fmt, buff, i, error_mess); /* put reason for fatal error into message: 2160* Fatal error. Process has terminated. 2161* You appear to be in a fatal process error loop. */ 2162 2163 call sys_log_ (SL_LOG, "^a: terminating fatal process error loop for ^a.^a ^a", 2164 ME, ute.person, ute.project, ute.tty_name); 2165 helphelp = "1"b; /* offer some help */ 2166 end; 2167 end; 2168 2169 kill_audit: 2170 call as_access_audit_$process (utep, AS_AUDIT_PROCESS_TERMINATE, 2171 (signal_type1)); 2172 go to kill; 2173 2174 logout_handler (2): /* New_proc */ 2175 ute.destroy_flag = WAIT_NEW_PROC; /* Create new process after destroying process. */ 2176 ute.login_flags.noprint = "1"b; /* no message from us. */ 2177 go to kill; 2178 2179 logout_handler (3): /* logout -hold */ 2180 if installation_parms.trusted_path_login then do; 2181 ute.destroy_flag = WAIT_LOGOUT; 2182 tcode = as_error_table_$no_logout_hold; 2183 end; 2184 else ute.destroy_flag = WAIT_LOGOUT_HOLD; /* User wants to login again. */ 2185 go to kill; 2186 2187 logout_handler (5): /* logout -bf */ 2188 ute.destroy_flag = WAIT_LOGOUT; 2189 ute.login_flags.noprint = "1"b; /* Inhibit printing of messages. */ 2190 go to kill; 2191 2192 logout_handler (6): /* logout -hold -bf */ 2193 if installation_parms.trusted_path_login then do; 2194 ute.destroy_flag = WAIT_LOGOUT; 2195 tcode = as_error_table_$no_logout_hold; 2196 end; 2197 else do; 2198 ute.login_flags.noprint = "1"b; /* Inhibit printing of logout message. */ 2199 ute.destroy_flag = WAIT_LOGOUT_HOLD; /* Set transfer vector to mallow login */ 2200 end; 2201 go to kill; 2202 2203 logout_handler (7): /* init_err */ 2204 ute.destroy_flag = WAIT_LOGOUT_HOLD; 2205 tcode = as_error_table_$init_err; /* Process cannot be initialized. */ 2206 helphelp = "1"b; /* offer some help */ 2207 go to kill; 2208 2209 logout_handler (8): /* no_ioatt */ 2210 ute.destroy_flag = WAIT_LOGOUT_HOLD; 2211 tcode = as_error_table_$no_io_attach; /* Cannot attach process I/O streams */ 2212 helphelp = "1"b; /* offer some help */ 2213 go to kill; 2214 2215 logout_handler (9): /* no_initproc */ 2216 ute.destroy_flag = WAIT_LOGOUT_HOLD; 2217 tcode = as_error_table_$no_init_proc; /* Cannot locate initial procedure. */ 2218 helphelp = "1"b; /* offer some help */ 2219 go to kill; 2220 2221 logout_handler (10): 2222 /* disconnect command */ 2223 if ^ute.at.disconnect_ok then do; 2224 tcode = as_error_table_$no_perm_disc; /* Error: No permission to disconnect */ 2225 call asu_$write_message (utep, as_error_table_$no_perm_disc, 2226 shxx, ignore_code); 2227 call as_access_audit_$process (utep, 2228 -AS_AUDIT_PROCESS_DISCONNECT, (shxx)); 2229 ute.destroy_flag = WAIT_LOGOUT_HOLD; 2230 goto kill_audit; 2231 end; 2232 if installation_parms.trusted_path_login then do; 2233 tcode = as_error_table_$no_disc_hd; /* Error: Cannot hold line after disconnect */ 2234 end; 2235 else tcode = as_error_table_$disc_hd_msg; /* Not an error msg, just information for user */ 2236 go to logout_handler (20); 2237 2238 logout_handler (13): /* new_proc -auth AUTH */ 2239 ute.destroy_flag = WAIT_NEW_PROC; /* always get new process */ 2240 2241 if ^have_cdte then do; /* can't new_proc -auth in a disconnected process */ 2242 tcode = as_error_table_$illegal_new_proc; 2243 goto kill; 2244 end; 2245 2246 if ^aim_check_$in_range ((new_proc_auth.authorization), ute.process_authorization_range) then do; 2247 illegal_new_proc: tcode = as_error_table_$illegal_new_proc; /* Can't go above max auth */ 2248 go to kill; /* leave at old auth */ 2249 end; 2250 2251 if ^aim_check_$in_range ((new_proc_auth.authorization), cdte.access_class) then 2252 go to illegal_new_proc; 2253 2254 2255 if installation_parms.trusted_path_login 2256 then if ^aim_check_$equal ((new_proc_auth.authorization), cdte.current_access_class (1)) then 2257 go to illegal_new_proc; 2258 else ; 2259 else do; /* ^trusted_path_login */ 2260 call initialize_current_access_class; /* forget and relearn */ 2261 if cdte.current_access_class_valid /* We know definitively */ 2262 then if ^aim_check_$equal ((new_proc_auth.authorization), cdte.current_access_class (1)) then /* so we must enforce */ 2263 go to illegal_new_proc; /* still no dice */ 2264 else ; 2265 else do; /* we are setting to whatever the user logs in as */ 2266 /*** so we can switch auth to requested proc auth */ 2267 cdte.current_access_class (*) = new_proc_auth.authorization; 2268 cdte.current_access_class_valid = "1"b; 2269 end; 2270 end; 2271 2272 ute.process_authorization = new_proc_auth.authorization; /* CHANGE AUTHORIZATION */ 2273 userx = ute.whotabx; /* find user's whotab entry */ 2274 if userx ^= 0 /* if he has one */ 2275 then whotab.e (userx).process_authorization = ute.process_authorization; 2276 2277 go to kill; 2278 2279 logout_handler (14): /* termsgnl */ 2280 2281 /* ate.preempted says what to do here: 2282* -1 user unbumped after term signal sent 2283* 0 user unbumped; ignore alarm___ 2284* 1 value internally used in load_ctl_ 2285* 2 user bumped; when alarm___ comes in, send term signal 2286* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit signals come in 2287* 4 user bumped; process sick, so destroy without sending term signal 2288* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the termsgnl). 2289**/ 2290 2291 call timer_manager_$reset_alarm_wakeup (ute.event); /* turn off realtime limit */ 2292 if ute.preempted = PREEMPT_UNBUMP then do; /* unbumped just a little late */ 2293 tcode = as_error_table_$bump_cancelled; /* apologize */ 2294 goto logout_handler (1); /* give the guy a new process */ 2295 end; 2296 else if ute.preempted = PREEMPT_TERM_SENT then do;/* sent term signal, expecting termsgnl */ 2297 ute.preempted = PREEMPT_TERMSGNL_RECEIVED; /* remember that we're no longer waiting for termsgnl */ 2298 goto logout_handler (ute.logout_index); /* go finish what we started to do */ 2299 end; 2300 else do; /* unexpected termsgnl */ 2301 call sys_log_ (SL_LOG_SILENT, "^a: Unexpected termsgnl for ^a.^a ^a (preempted=^a, ^d).", 2302 ME, ute.person, ute.project, ute.tty_name, 2303 PREEMPT_VALUES (ute.preempted), ute.preempted); 2304 /* tell sysprogs */ 2305 tcode = as_error_table_$illegal_signal; /* complain to user */ 2306 goto logout_handler (1); /* but give the guy a new process */ 2307 end; 2308 2309 logout_handler (12): /* inacrcvd */ 2310 2311 if (ute.preempted = PREEMPT_BUMPED & ute.activity_can_unbump) then do; 2312 /* user waiting on bump timer */ 2313 call asu_$reschedule_bump_timer (utep, installation_parms.warning_time); 2314 end; 2315 go to exit1; 2316 2317 /* User may not signal any of the functions below */ 2318 2319 logout_handler (20): /* hangup */ 2320 2321 if have_ate then /* if we have an ate */ 2322 if ute.active = NOW_HAS_PROCESS /* with a process */ 2323 & ute.preempted <= PREEMPT_UNBUMP_IGNORE_ALARM then 2324 /* that's not already being destroyed */ 2325 if ute.save_if_disconnected | (signal_type = "disconn" & ute.at.disconnect_ok) then do; 2326 /* that the user wants saved across hangups */ 2327 2328 call asu_$suspend_process (utep); /* try to save it */ 2329 ute.disconnected = "1"b; /* remember that it's disconnected */ 2330 ute.disconnection_rel_minutes = 2331 divide (clock () - ute.login_time, USEC_PER_MINUTE, 17, 0); 2332 if ute.whotabx > 0 then 2333 whotab.e (ute.whotabx).disconnected = "1"b; 2334 /* publish it */ 2335 ute.pdtep -> user.n_disconnected = /* increment count of user's disconnected processes */ 2336 max (0, ute.pdtep -> user.n_disconnected + 1); 2337 ute.channel = null; /* and don't try to use the old cdte again for this process */ 2338 if cdte.state = TTY_DIALED then /* if operator disconnect command */ 2339 cdte.tra_vec = WAIT_HANGUP; 2340 cdte.process = null; /* also, don't let future channel operations affect the process */ 2341 if cdte.charge_type > 0 then /* if we were charging for the channel */ 2342 call device_acct_$off ((cdte.charge_type), cdte.name, utep); /* stop charging - it's hung up */ 2343 2344 /**** When a process disconnects, we need two audit messages. One, for 2345* the disconnect itself, in order to preserve CONNECT/DISCONNECT 2346* audit message consistency, and the other, for a LOGOUT message 2347* since the communications channel is no longer identified and 2348* authenticated. */ 2349 2350 call as_access_audit_$process (utep, 2351 AS_AUDIT_PROCESS_DISCONNECT, "hangup"); /* Audit the process disconnection */ 2352 2353 call lg_ctl_$logout_no_process (utep, "disconnect"); 2354 2355 code = 0; /* nothing wrong with the channel */ 2356 if tcode = as_error_table_$disc_hd_msg then do; 2357 call grab_tty; 2358 call timer_manager_$reset_alarm_wakeup (cdte.event); 2359 cdte.in_use = NOW_DIALED; 2360 just_dialed_up = "1"b; 2361 say_hello = "1"b; 2362 call initialize_current_access_class; 2363 call set_tabs_and_modes (code); 2364 call ioa_$rs (convert_message (as_error_table_$disc_hd_msg), buff, i); 2365 call astty_$tty_force (cdtep, addr (buff), i, ignore_code); 2366 go to login; 2367 end; 2368 2369 goto cleanup_hangup; /* go clean up and listen on hung-up channel */ 2370 end; 2371 2372 if asu_$send_term_signal (utep, j) then /* send a term signal if appropriate */ 2373 goto exit1; /* if we did, wait for process to destroy itself */ 2374 ute.destroy_flag = WAIT_LOGOUT; 2375 ute.logout_type = "hngp"; /* for audit message */ 2376 goto kill; 2377 2378 logout_handler (21): /* Shutdown */ 2379 if asu_$send_term_signal (utep, j) then /* send term signal if appropriate */ 2380 goto exit1; /* if we did, wait for process to destroy itself */ 2381 ute.destroy_flag = WAIT_LOGOUT; 2382 tcode = as_error_table_$shutdown; /* Multics is shutting down. */ 2383 go to kill; 2384 2385 logout_handler (22): /* bump */ 2386 if asu_$send_term_signal (utep, j) then /* send term signal if appropriate */ 2387 goto exit1; /* if we did, wait for process to destroy itself */ 2388 ute.destroy_flag = WAIT_LOGOUT; 2389 tcode = as_error_table_$automatic_logout; /* Automatic logout. */ 2390 go to kill; 2391 2392 logout_handler (23): /* alarm___ */ 2393 2394 /* alarm___ can occur as a result of several conditions. 2395* Also, we can come here from the termsgnl handler if we sent term in response to alarm___. 2396* Sort it all out here. 2397* 2398* ***** CHECK FOR LEFT OVER ALARM AFTER PROCESS HAS BEEN DESTROYED 2399**/ 2400 2401 if funct = "alarm___" then do; /* if really alarm rather than termsgnl */ 2402 2403 /* TEMPORARY - NEEDS BETTER ERROR MESSAGES */ 2404 2405 if ute.sus_sent & ^ute.suspended then do; /* process ignored sus_ */ 2406 ignored_sus: /* come here from cpulimit */ 2407 call sys_log_ (SL_LOG, "^a: process ignored sus_ signal ^a.^a ^a", 2408 ME, ute.person, ute.project, ute.tty_name); 2409 2410 if asu_$send_term_signal (utep, 20) then goto exit1; 2411 ute.destroy_flag = WAIT_LOGOUT; 2412 goto kill; 2413 end; 2414 2415 /* END TEMPORARY */ 2416 if ute.preempted <= PREEMPT_UNBUMP_IGNORE_ALARM then 2417 /* if user has been unbumped */ 2418 goto exit1; /* go away quietly */ 2419 else if (ute.preempted = PREEMPT_BUMPED & ute.activity_can_unbump) then do; 2420 /* see if user woke up */ 2421 call act_ctl_$activity_unbump (utep, code); 2422 if code = 0 then do; /* acceptably active */ 2423 call sys_log_ (SL_LOG, "^a: cancelling inactivity bump of ^a.^a", ME, ute.person, ute.project); 2424 call convert_status_code_ (as_error_table_$activity_unbump, shxx, error_mess); 2425 call send_mail ((error_mess)); 2426 go to logout_handler (25); /* unbump */ 2427 end; 2428 end; 2429 if asu_$send_term_signal (utep, j) then /* send term signal if appropriate */ 2430 goto exit1; /* if we did, wait for process to destroy itself */ 2431 else if ute.preempted = PREEMPT_TERM_SENT then do; 2432 /* sent term and process failed to respond */ 2433 ignored_term: /* come here if cpu timer runs out after term sent */ 2434 ute.preempted = PREEMPT_TERMSGNL_RECEIVED; 2435 /* indicate that we're no longer waiting for termsgnl */ 2436 call sys_log_ (SL_LOG, "^a: process ignored trm_ signal ^a.^a ^a", ME, ute.person, ute.project, ute.tty_name); 2437 if ute.logout_index = 23 then /* if original objective was bump after X minutes */ 2438 goto bump_or_shut; /* go do it */ 2439 else goto logout_handler (ute.logout_index); /* go finish what we started to do */ 2440 end; 2441 end; 2442 2443 bump_or_shut: 2444 2445 ute.destroy_flag = WAIT_LOGOUT; 2446 if anstbl.session = "shutdown" then tcode = as_error_table_$shutdown; 2447 else tcode = as_error_table_$automatic_logout; /* Three minutes' grace expired. */ 2448 go to kill; 2449 2450 logout_handler (24): /* detach */ 2451 if cdte.in_use < NOW_LOGGED_IN then /* operator detach. someone on line? */ 2452 tcode = as_error_table_$detach; /* No. Automatic detach. */ 2453 else do; /* Yes. Must destroy user. Automatic logout. */ 2454 if asu_$send_term_signal (utep, j) then /* send term signal if appropriate */ 2455 goto exit1; /* if we did, wait for process to destroy itself */ 2456 tcode = as_error_table_$automatic_logout; 2457 end; 2458 if have_ate then 2459 ute.destroy_flag = WAIT_DETACH; /* After proc is destroyed, leave phone hung. */ 2460 else cdte.tra_vec = WAIT_DETACH; /* if no process, use cdte to remember what to do */ 2461 go to kill; 2462 2463 logout_handler (25): /* ("unbump") is operator cancelling a bump? */ 2464 ute.activity_can_unbump = "0"b; /* tidy up */ 2465 if ute.preempted = PREEMPT_TERM_SENT then /* if term signal sent before unbump */ 2466 ute.preempted = PREEMPT_UNBUMP; /* remember that it happened */ 2467 else ute.preempted = PREEMPT_UNBUMP_IGNORE_ALARM; /* else just cancel the bump */ 2468 go to exit1; 2469 2470 logout_handler (26): /* "stopstop" Check for out-of-sequence signals. */ 2471 call sys_log_ (SL_LOG_SILENT, "^a: premature stopstop for ^a.^a ^a", 2472 ME, ute.person, ute.project, ute.tty_name); 2473 call hcs_$wakeup (anstbl.as_procid, ute.event, termstop_msg, code); 2474 call hcs_$wakeup (anstbl.as_procid, ute.event, STOPstop_msg, code); 2475 go to exit1; 2476 2477 logout_handler (28): /* "termstop" */ 2478 tcode = as_error_table_$no_signal; /* Process terminated without signalling answering service. */ 2479 if installation_parms.trusted_path_login then 2480 ute.destroy_flag = WAIT_LOGOUT; /* hangup channel */ 2481 else ute.destroy_flag = WAIT_LOGOUT_HOLD; /* hangup not needed */ 2482 goto kill; 2483 2484 logout_handler (29): /* cpulimit: Process used too much cpu time after sus_ or trm_ */ 2485 if ute.ignore_cpulimit then do; /* there's no way to turn of cpulimit timer */ 2486 ute.ignore_cpulimit = ""b; /* except for this switch, which we now turn off */ 2487 goto exit1; /* and go away quietly */ 2488 end; 2489 2490 call timer_manager_$reset_alarm_wakeup (ute.event); /* turn off realtime timer */ 2491 2492 if ute.preempted = PREEMPT_TERM_SENT then /* if we had sent trm_ */ 2493 goto ignored_term; /* go complain and kill process */ 2494 else if ute.sus_sent then /* or, if we had sent sus_ */ 2495 goto ignored_sus; /* likewise, complain and kill process */ 2496 else goto fals; /* otherwise, log and ignore this unexpected signal */ 2497 2498 2499 logout_handler (4): /* Standard logout. */ 2500 logout_handler (11): /* Unused. Treat as logout. */ 2501 logout_handler (15): /* Unused. Treat as logout. */ 2502 logout_handler (16): /* Unused. Treat as logout. */ 2503 logout_handler (17): /* Unused. Treat as logout. */ 2504 logout_handler (18): /* Unused. Treat as logout. */ 2505 logout_handler (19): /* Unused. Treat as logout. */ 2506 ute.destroy_flag = WAIT_LOGOUT; 2507 2508 kill: 2509 2510 if have_ate then do; /* if there is an answer table entry for this channel */ 2511 2512 /**** The following check turns off the real-time timer which was set 2513* if this process was bumped. If this is not disabled, then we 2514* log an "ignored alarm___" message when the alarm goes off. Also, 2515* if the ute is reused, then the poor user whose ute it is will be 2516* bumped. We do not do this, however, if the user is new_proc'ing. 2517* Otherwise, we would allow him/her to escape a bump command. */ 2518 2519 if ute.preempted = PREEMPT_BUMPED & /* awaiting bump */ 2520 ute.destroy_flag ^= WAIT_NEW_PROC then /* not new_proc */ 2521 call timer_manager_$reset_alarm_wakeup (ute.event); /* disable the realtime timer */ 2522 2523 if ute.preempted = PREEMPT_TERM_SENT then do;/* if we were waiting for termsgnl and never got it */ 2524 call sys_log_ (SL_LOG_SILENT, "^a: process did not respond properly to trm_ signal. ^a.^a ^a", 2525 ME, ute.person, ute.project, ute.tty_name); 2526 if ute.logout_index ^= 27 & /* if original objective was other than terminate */ 2527 ute.logout_index ^= 2 then /* or connect new_proc */ 2528 if ute.destroy_flag = WAIT_NEW_PROC then /* if response was f.p.e or newproc */ 2529 /* don't allow tricky user to get out of being bumped */ 2530 if ute.logout_index = 24 then /* put back the original objective */ 2531 ute.destroy_flag = WAIT_DETACH; 2532 else ute.destroy_flag = WAIT_LOGOUT; 2533 end; 2534 2535 if ute.active = NOW_HAS_PROCESS then /* if user has a process then destroy it */ 2536 call dpg_ (utep, (funct)); 2537 2538 if have_cdte then /* if we have a cdte also */ 2539 cdte.tra_vec = ute.destroy_flag; /* tell cdte what we're about to do to the ate */ 2540 end; /* end have ate */ 2541 2542 if have_cdte then do; /* if we have a cdte */ 2543 2544 call grab_tty; /* Take over the typewriter */ 2545 2546 if tcode ^= 0 then call asu_$write_chn_message (cdtep, tcode, shxx, ignore_code); 2547 if i > 0 then call astty_$tty_force (cdtep, addr (buff), i, ignore_code); 2548 /* Write nice message if process terminated. */ 2549 2550 if helphelp then /* if user is having fatal process error problems */ 2551 call asu_$write_chn_message (cdtep, as_error_table_$ask_for_help, shxx, ignore_code); /* offer help */ 2552 2553 if cdte.charge_type > 0 then 2554 if have_ate then /* don't try to turn off charging if no user owns device */ 2555 call device_acct_$off ((cdte.charge_type), cdte.name, utep); 2556 2557 i = 0; /* Don't print twice. */ 2558 2559 if cdte.in_use < NOW_LOGGED_IN then goto process_destroyed; /* if no process to destroy, don't try */ 2560 if cdte.in_use = NOW_LOGGED_IN then go to process_stopped; /* Do we need to wait for a process to die? */ 2561 if cdte.in_use > NOW_LOGGED_IN then goto exit1; /* wait for process to be stopped by ring zero */ 2562 2563 end; /* end have cdte */ 2564 2565 /* If we get here, we don't have a cdte */ 2566 2567 if ute.active = NOW_LOGGED_IN then goto process_stopped; 2568 if ute.active > NOW_LOGGED_IN then goto exit1; /* wait for ring zero to stop process */ 2569 2570 /* If we get here, there's a bug */ 2571 2572 call sys_log_ (SL_LOG_BEEP, "^a: cdtep = null and ate.active = ^d for ^p", ME, ute.active, utep); 2573 goto exit1; /* what else should we do? */ 2574 2575 /* Return here when the process has had a chance to run and destroy itself. 2576* Call accounting to log him out completely, get his channel back, type nice messages. */ 2577 2578 hand (9): /* WAIT_LOGOUT */ 2579 hand (10): /* WAIT_LOGOUT_HOLD */ 2580 hand (11): /* WAIT_DETACH */ 2581 hand (12): /* WAIT_NEW_PROC */ 2582 hand (13): /* WAIT_REMOVE */ 2583 hand (20): /* WAIT_DELETE_CHANNEL */ 2584 2585 if wakeup_from_user then go to fals0; /* User cannot send this. */ 2586 if signal_type ^= "STOPstop" then 2587 if signal_type ^= "stopstop" then do; /* we're waiting for a stopstop, and this isn't one */ 2588 2589 if signal_type = "device" then 2590 goto fals0; /* worse-than-useless signal from network */ 2591 2592 /**** The following code fragment checks for an operator "detach" command 2593* after the channel has already been detached and is hung up. */ 2594 2595 if wakeup_from_as & signal_type = "detach" then 2596 if have_cdte then 2597 if cdte.in_use = NOW_HUNG_UP then 2598 goto exit1; /* ignore detach attempt */ 2599 2600 if asu_$check_for_stopped_process (utep, ME) then /* if process is stopped */ 2601 goto process_stopped; /* the stopstop wakeup must have been lost */ 2602 else goto fals0; /* process not stopped; log and ignore this wakeup */ 2603 end; 2604 2605 process_stopped: 2606 2607 call dpg_$finish (utep); 2608 call act_ctl_$dp (utep); 2609 ute.active = NOW_LOGGED_IN; /* No process any more. */ 2610 if have_cdte then 2611 cdte.in_use = NOW_LOGGED_IN; 2612 i = 0; 2613 if ute.destroy_flag ^= WAIT_NEW_PROC then do; /* Unless a new_proc, log him out. */ 2614 call act_ctl_$close_account (utep); /* Close account and print logged out msg to opr */ 2615 call lg_ctl_$logout (utep); 2616 2617 if ^have_cdte then goto process_destroyed; /* if no cdte, skip the following channel stuff */ 2618 2619 if cdte.tra_vec = WAIT_DELETE_CHANNEL then do; /* channel was deleted by CDT installation */ 2620 cdte.in_use = CHANNEL_DELETED; /* but we had to keep it long enough to destroy the process */ 2621 cdte.tra_vec = WAIT_HANGUP; /* ignore all wakeups */ 2622 cdte.current_service_type = INACTIVE; /* INACTIVE */ 2623 goto exit1; /* now we can mark it deleted and get out */ 2624 end; 2625 2626 if cdte.tra_vec = WAIT_REMOVE then do; /* we hung up the channel before destroying the process */ 2627 cdte.in_use = NOW_HUNG_UP; /* line will be ignored until ATTACHed or CDT installed */ 2628 go to exit1; /* we quit before trying to print message, listen, etc. */ 2629 end; 2630 if ^ute.login_flags.noprint then do; /* If logout message will be needed. */ 2631 i = float (ute.cpu_usage, 63) / 1e6 + .5e0; /* convert usec to sec, rounded */ 2632 j = divide (i, 60, 17, 0); /* j= number of usage minutes */ 2633 i = i - j * 60; /* i= mod (usage, minutes) */ 2634 t1 = float (ute.mem_usage, 63) / 1e3; /* Get memory usage. */ 2635 date_time = date_time_$format ("date_time", anstbl.current_time, "", ""); 2636 if j > 0 then /* Use different message if there were minutes. */ 2637 call ioa_$rs (logout_fmt, buff, i, ute.person, ute.project, date_time, j, i, t1, ute.session_cost); 2638 else call ioa_$rs (logout_fmt1, buff, i, ute.person, ute.project, date_time, i, t1, ute.session_cost); 2639 end; 2640 end; 2641 2642 process_destroyed: 2643 if ^have_cdte then do; /* if no cdte, we just destroyed a disconnected process */ 2644 call unlock; /* so clean up the way listen_again (below) does */ 2645 call user_table_mgr_$free (utep); /* imitate a little bit of asu_$release_ate */ 2646 goto exit1; /* and then get out quickly */ 2647 end; 2648 2649 2650 call astty_$tty_state (cdtep, code); /* Verify that user has not hung up. */ 2651 if code ^= 0 then go to cleanup_hangup; /* random error */ 2652 if cdte.state < TTY_DIALED then go to cleanup_hangup; /* Is tty hung up already? */ 2653 2654 if i > 0 then /* Do we have logout message? */ 2655 if ^ute.login_flags.noprint then do; /* User want messages? */ 2656 call astty_$tty_force (cdtep, addr (buff), i, code); /* write logout message */ 2657 if code ^= 0 then go to cleanup_hangup; 2658 end; 2659 2660 call update_term_info (); /* go get the latest about the term */ 2661 2662 if cdte.tra_vec = WAIT_LOGOUT_HOLD then do; /* Was logout hold, type "users" message. */ 2663 call timer_manager_$reset_alarm_wakeup (cdte.event); 2664 if ute.login_flags.noprint then say_hello = "0"b; 2665 else say_hello = "1"b; 2666 just_dialed_up = "0"b; 2667 call free_ute; /* we'll get a new one if we must */ 2668 call initialize_current_access_class; 2669 cdte.in_use = NOW_DIALED; 2670 go to login; 2671 end; 2672 else if cdte.tra_vec = WAIT_NEW_PROC then go to create; /* Make new process as result of term or new_proc */ 2673 2674 cdte.in_use = NOW_DIALED; /* No user any more. */ 2675 2676 /* Hang up the terminal, and set up to listen for next dialup (unless detach) */ 2677 2678 listen_again: 2679 timeout (1): 2680 timeout (8): 2681 timeout (9): 2682 timeout (10): 2683 timeout (11): 2684 timeout (12): 2685 timeout (13): 2686 timeout (14): 2687 timeout (15): 2688 call unlock; /* release answer table, permit updates */ 2689 call free_ute; 2690 call timer_manager_$reset_alarm_wakeup (cdte.event); 2691 call ipc_$drain_chn (cdte.event, code); /* .. he's got no future */ 2692 2693 /**** * NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE NOTE * ****/ 2694 /**** * * ****/ 2695 /**** * The following tests should be replaced by * ****/ 2696 /**** * code that classifies a wakeup as a hangup * ****/ 2697 /**** * wakeup, rather than taking an error * ****/ 2698 /**** * elsewhere. * ****/ 2699 2700 if cdte.state = TTY_DIALED then do; /* If he's still there, tell him hang is on purpose */ 2701 call turn_printer_on (ignore_code); 2702 if tcode = as_error_table_$no_disc_hd then do; 2703 call ioa_$rs (convert_message (as_error_table_$no_disc_hd), buff, i); 2704 call astty_$tty_force (cdtep, addr (buff), i, ignore_code); 2705 end; 2706 else call astty_$tty_force (cdtep, addr (hangup_msg), hangup_msg_lth, ignore_code); 2707 2708 /* Don't order the hangup until all the output is finished printing. */ 2709 2710 cdte.detach_after_hangup = (cdte.tra_vec = WAIT_DETACH); /* remember if detaching */ 2711 cdte.tra_vec = WAIT_BEFORE_HANGUP; 2712 hand (25): /* WAIT_BEFORE_HANGUP */ 2713 call timer_manager_$reset_alarm_wakeup (cdte.event); /* we don't know if we got a timer or an output complete */ 2714 call ipc_$drain_chn (cdte.event, code); /* so we'll clear out both, to avoid an extraneous wakeup */ 2715 write_status_info.output_pending = ""b; 2716 call astty_$tty_order (cdtep, "write_status", addr (write_status_info), code); 2717 2718 if code ^= 0 then /* FOR DEBUGGING */ 2719 if loudsw then do; /* only if tracing is on */ 2720 if ^loud_select_sw /* if tracing all channels */ 2721 | substr (cdte.name, 1, length (loud_select_channel)) = loud_select_channel /* or tracing this one */ 2722 then call sys_log_$error_log (SL_LOG, code, ME, "From write_status order on ^a", cdte.name); 2723 end; /* END DEBUGGING CODE */ 2724 /* Note that the write_status order might fail legitimately, 2725* if the dim doesn't support it; that's not a real error. */ 2726 if code = 0 then /* if write status order worked */ 2727 if write_status_info.output_pending then do; /* and there's stuff yet to be printed */ 2728 call timer_manager_$alarm_wakeup (10, "11"b, cdte.event); /* set 10 second timer, since we don't 2729* always get a wakeup when output is complete */ 2730 goto exit1; /* don't hang up until it's all done */ 2731 end; /* we'll get a wakeup when it's done */ 2732 if cdte.detach_after_hangup then /* if we were detaching the channel */ 2733 cdte.tra_vec = WAIT_DETACH; /* put back the proper tra_vec value */ 2734 2735 call astty_$tty_order (cdtep, "hangup", null, ignore_code); /* also clears modes & flags in ttydim */ 2736 cdte.in_use = NOW_HUNG_UP; /* keep our records straight */ 2737 end; 2738 2739 if cdte.in_use > NOW_LISTENING then do; /* TRAP BUG where state and in_use get inconsistent */ 2740 call sys_log_ (SL_LOG_SILENT, "^a: cdte ^p (^a) state ^d in use ^d - notify system programmer", 2741 ME, cdtep, cdte.name, cdte.state, cdte.in_use); 2742 cdte.in_use = NOW_HUNG_UP; /* to avoid losing the channel */ 2743 end; 2744 2745 cdte.dialed_up_time = cdte.dialed_up_time + /* Compute running total, in seconds */ 2746 float (anstbl.current_time - cdte.dialup_time, 63) / 1e6 + .5e0; 2747 2748 if cdte.tra_vec ^= WAIT_DETACH then do; /* If operator wants this tty detached, omit the listen */ 2749 call astty_$tty_state (cdtep, code); /* We want the channel back again */ 2750 if cdte.state = TTY_DIALED then /* Still dialed, wait for hangup to happen */ 2751 cdte.tra_vec = WAIT_HANGUP; /* hand(17) does listen after hangup wakeup, ignores others */ 2752 else do; /* channel is already hung up */ 2753 call ipc_$drain_chn (cdte.event, code); /* so discard the hangup wakeup, which would 2754* just confuse us if it came along later */ 2755 if ^sc_stat_$shutdown_typed then /* if not shutting down */ 2756 if cdte.state ^= TTY_MASKED then 2757 call asu_$asu_listen (cdtep, code); /* Turn on channel again. Reset CDTE */ 2758 end; 2759 end; 2760 go to exit1; 2761 2762 /* Come here if cannot write fatal process error message, or if user 2763* hangs up during a new_proc */ 2764 2765 cleanup_hangup: 2766 if cdte.tra_vec = WAIT_NEW_PROC then do; /* were we going to give a new process? */ 2767 call act_ctl_$close_account (utep); /* close account & log logout */ 2768 call lg_ctl_$logout (utep); /* remove user from whotab */ 2769 end; 2770 2771 /* If the error was caused by an FNP crash, the cdte could be in any state, 2772* and asu_listen will quit before fixing it up - so we fix it up a little, here */ 2773 2774 call astty_$tty_order (cdtep, "hangup", null, ignore_code); /* be sure of hangup, and set cdte.state */ 2775 cdte.in_use = NOW_HUNG_UP; /* or it will be, real soon */ 2776 2777 if code = 0 then go to listen_again; /* just a hangup, do normal reset */ 2778 go to chn_error; /* some other error, bomb out */ 2779 2780 2781 /* Come here if any call to astty_ returns a non-zero code */ 2782 /* If -1 (hangup) is always returned when the FNP has gone down, then there is no problem - 2783* otherwise, FNP crashes will result in channels being removed, which we don't want */ 2784 2785 chn_error: 2786 if channel_error () then go to exit1; 2787 else go to listen_again; 2788 2789 /* come here when something goes wrong with the tty channel which can 2790* probably be blamed on something the user did. For example, typing in 2791* an outrageous answerback, or causes some invalid combination of modes and 2792* line types. */ 2793 2794 chn_user_error: 2795 call convert_status_code_ (code, shxx, error_mess); /* tell user 'what' went wrong */ 2796 call ioa_$rs ("Error during initialization or while processing last pre-access command:^/ ^a", buff, i, error_mess); 2797 call print_buff; 2798 go to try_again; /* count offences and proceed */ 2799 2800 ttt_error: 2801 call remove_channel ("ttt"); 2802 go to exit1; 2803 2804 /* Come here in case of fault during login or logout. */ 2805 2806 abort: static_label = exit; /* so as not to loop */ 2807 if utep = null then go to listen_again; /* not much to do */ 2808 funct = "ucs "; 2809 ute.destroy_flag = WAIT_LOGOUT_HOLD; /* pretend logout hold */ 2810 if have_cdte then 2811 cdte.tra_vec = WAIT_LOGOUT_HOLD; /* make cdte tra_vec equal the one in ate */ 2812 ute.logout_type = "ucs "; 2813 ute.login_flags.noprint = "0"b; 2814 tcode = as_error_table_$dialup_error; 2815 i = 0; /* Buff is empty */ 2816 go to kill; 2817 2818 evil3: call sys_log_ (SL_LOG_BEEP, "^a: called with null message ptr", ME); 2819 goto return_immediately; /* metering was not turned on */ 2820 2821 evil2: call sys_log_ (SL_LOG_BEEP, "^a: called while ansp = null", ME); 2822 goto return_immediately; /* metering was not turned on */ 2823 2824 evil1: call sys_log_ (SL_LOG_BEEP, "^a: called with bad ptr ^p by ^w", ME, ev_msg.data_ptr, ev_msg.fromproc); 2825 goto exit1; /* metering was on; go turn it off before returning */ 2826 2827 evil: call asu_$find_process (ev_msg.fromproc, i, q); /* find out who sent signal */ 2828 if q ^= null then do; 2829 call get_trace_info; 2830 call sys_log_ (SL_LOG_BEEP, "^a: ignored ^a from ^a.^a for ^a st=^d,inuse=^d,tv=^d", 2831 ME, tsignal_type, q -> ute.person, q -> ute.project, tname, tstate, tinuse, ttv); 2832 goto exit1; /* metering was turned on so go turn it off */ 2833 end; /* can't find process; fall thru and print a different message */ 2834 fals: i = SL_LOG_BEEP; /* print with alarm */ 2835 falsi: call get_trace_info; 2836 call sys_log_ (i, "^a: ignored ^a for ^a st=^d,inuse=^d,tv=^d", 2837 ME, tsignal_type, tname, tstate, tinuse, ttv); 2838 goto exit1; /* metering was turned on, so go turn it off */ 2839 fals0: i = SL_LOG_SILENT; /* just log */ 2840 goto falsi; 2841 2842 2843 /* Come here when a channel (terminal) that has been requested by a user 2844* process finally dials up. TTYDIM won't let us connect it to user unless 2845* it is actually dialed up. */ 2846 2847 hand (14): /* WAIT_FIN_PRIV_ATTACH */ 2848 call astty_$tty_state (cdtep, code); /* get current state of channel */ 2849 if cdte.state = TTY_DIALED then do; 2850 call initialize_current_access_class; 2851 call dial_ctl_$finish_priv_attach (cdtep); /* do the work */ 2852 end; 2853 else if cdte.state <= TTY_HUNG then do; /* up and then down too fast for us */ 2854 call ipc_$drain_chn (cdte.event, code); /* get rid of any dross */ 2855 if ^sc_stat_$shutdown_typed then 2856 if cdte.state ^= TTY_MASKED then 2857 call asu_$asu_listen (cdtep, code);/* turn on channel again. Reset CDTE */ 2858 end; 2859 go to exit1; 2860 2861 /* Next section of code takes care of dialed consoles' events */ 2862 2863 hand (15): /* WAIT_DIAL_RELEASE */ 2864 call astty_$tty_state (cdtep, code); /* get current state of channel */ 2865 if cdte.state > TTY_HUNG then go to exit1; /* wait for correct event */ 2866 call dial_ctl_$dial_term (cdtep); /* Reset CDTE & tell master */ 2867 go to exit1; /* All done. */ 2868 2869 /* This code handles completion of auto_call dialing */ 2870 2871 hand (16): /* WAIT_DIAL_OUT */ 2872 call dial_ctl_$finish_dial_out (cdtep); /* That's all folks! */ 2873 go to exit1; 2874 2875 /* This code handles waiting for the hangup event to occur. When */ 2876 /* it does, we will listen to the channel */ 2877 2878 hand (17): /* WAIT_HANGUP */ 2879 call astty_$tty_state (cdtep, code); /* get current state of channel */ 2880 if cdte.state > TTY_HUNG then go to exit1; /* wait for correct event */ 2881 2882 if ^sc_stat_$shutdown_typed /* if we're not shutting down */ 2883 & cdte.in_use ^= CHANNEL_DELETED /* or being deconfigured */ 2884 & (cdte.current_service_type = ANS_SERVICE | /* and this is still live */ 2885 cdte.current_service_type = SLAVE_SERVICE) 2886 then if cdte.state ^= TTY_MASKED 2887 then call asu_$asu_listen (cdtep, code); /* ready for use, reconnect to channel */ 2888 /**** * This will swallow all wakeups for channel from now on. */ 2889 go to exit1; 2890 2891 /* This code handles wakeups for slave service channels before anyone has asked 2892* for them. It just ignores the wakeups */ 2893 2894 hand (18): /* WAIT_SLAVE_REQUEST */ 2895 go to hand (17); /* go discard all wakeups except hangups */ 2896 2897 /* This code allows a procedure other than dialup_ to invite a user to log in 2898* on an already dialed up channel. It is used by dial_ctl_$dial_broom, when 2899* the master process of a dialed channel terminates. That procedure sets 2900* cdte.tra_vec to WAIT_GREETING_MSG and sends a wakeup with "device" as a 2901* message */ 2902 2903 hand (19): /* WAIT_GREETING_MSG */ 2904 call grab_tty; /* make sure we can read and write on the channel */ 2905 say_hello = "1"b; 2906 just_dialed_up = ""b; 2907 cdte.in_use = NOW_DIALED; 2908 goto login; 2909 2910 /* Come here when a channel that has been requested for T & D attachment hangs up. It must be hung up and not listening 2911* in order for the attachment to continue. */ 2912 2913 hand (22): /* WAIT_TANDD_HANGUP */ 2914 call astty_$tty_state (cdtep, code); /* get current state of channel */ 2915 if cdte.state > TTY_HUNG then go to exit1; /* wait for correct event */ 2916 call dial_ctl_$continue_tandd_attach (cdtep); /* do the work */ 2917 go to exit1; 2918 2919 /* Come here when a channel that has been requested for T & D attachment signals dialup. 2920* This is a simulated dialup that allows the attaching process to communicate with the 2921* channel in a normal fashion. */ 2922 2923 hand (23): /* WAIT_FIN_TANDD_ATTACH */ 2924 call astty_$tty_state (cdtep, code); 2925 if cdte.state ^= TTY_DIALED then go to exit1; /* wait for correct event */ 2926 call initialize_current_access_class; 2927 call dial_ctl_$finish_tandd_attach (cdtep); /* if so, process it */ 2928 go to exit1; 2929 2930 /* Come here when changes in a channel's state are uninteresting -- it is not available for use until the master 2931* process lets go of it. */ 2932 2933 hand (24): /* WAIT_DISCARD_WAKEUPS */ 2934 go to exit1; /* really just discard it */ 2935 2936 2937 /**** INTERNAL PROCEDURES, IN ALPHA ORDER BY NAME. 2938* keep it that way! --bim */ 2939 2940 change_type: proc (new_type, do_tabs, do_init, code); 2941 2942 dcl new_type char (*); 2943 dcl do_tabs bit (1); 2944 dcl do_init bit (1); 2945 dcl code fixed bin (35); 2946 2947 set_type_info.version = stti_version_1; 2948 set_type_info.name = new_type; 2949 string (set_type_info.flags) = "0"b; 2950 call astty_$tty_order (cdtep, "set_term_type", addr (set_type_info), code); 2951 if code ^= 0 then return; 2952 2953 call ttt_info_$dialup_flags (new_type, cdte.dialup_flags.ppm, cdte.dialup_flags.cpo, code); 2954 if code ^= 0 then return; 2955 2956 cdte.current_terminal_type = new_type; 2957 if ^do_tabs then return; 2958 if do_init then call set_tabs_and_modes (code); /* Reset options for new type. */ 2959 else call set_tabs_and_modes_gently (code); 2960 2961 end change_type; 2962 2963 channel_error: proc returns (bit (1) aligned); /* "1"b if a real error happened */ 2964 call astty_$tty_state (cdtep, (0)); /* Make sure we dont remove a merely hung-up terminal */ 2965 if code = -1 then do; /* code = -1 means "it hung up." */ 2966 /* even if it comes right back we should process that putative */ 2967 /* hangup. */ 2968 /* We trust that ring 0 or mpx_mgr_ will send us a hangup note */ 2969 /* to clean up this mess. */ 2970 cdte.in_use = NOW_HUNG_UP; /* keep cdte consistent */ 2971 return ("0"b); 2972 end; 2973 if code = 0 & cdte.state = TTY_DIALED /* code bug */ 2974 then do; 2975 call sys_log_ (SL_LOG, "^a: channel_error called with cdte in functional state.", ME); 2976 return ("0"b); 2977 end; 2978 call remove_channel ("tty_dim"); 2979 return ("1"b); 2980 end; 2981 2982 convert_message: proc (p_status_code) returns (char (100) varying); 2983 2984 declare p_status_code fixed binary (35) parameter; 2985 2986 declare short character (8) aligned automatic, 2987 long character (100) aligned automatic; 2988 2989 call convert_status_code_ (p_status_code, short, long); 2990 2991 return (rtrim (long, " ")); 2992 2993 end convert_message; 2994 2995 DISPLAY_PROCESS_AUTHORIZATION: 2996 procedure (); 2997 2998 /* This procedure displays the "Your authorization is ..." message on the 2999* interactive user's terminal upon process creation and reconnection. */ 3000 3001 dcl authorization_string char (200) automatic; 3002 dcl code fixed bin (35) automatic; 3003 dcl format char (100) aligned automatic; 3004 dcl line char (200) automatic; 3005 dcl line_lth fixed bin automatic; 3006 3007 call convert_access_class_$to_string (ute.process_authorization, 3008 authorization_string, code); 3009 if code ^= 0 then 3010 if code = error_table_$smallarg then ; /* we'll use what we can */ 3011 else authorization_string = "Unknown"; 3012 3013 if authorization_string ^= "" then do; 3014 call convert_status_code_ (as_error_table_$login_auth_msg, 3015 (""), format); 3016 if format ^= "" then do; 3017 call ioa_$rs (format, line, line_lth, 3018 authorization_string); 3019 call astty_$tty_force ((ute.channel), addr (line), 3020 line_lth, (0)); 3021 end; 3022 end; 3023 3024 end DISPLAY_PROCESS_AUTHORIZATION; 3025 3026 free_ute: proc; 3027 3028 call asu_$release_ate (cdtep, code); /* Free the ATE */ 3029 utep = null; 3030 have_ate = ""b; 3031 end; 3032 3033 get_next_disc_ate_jkp: proc; 3034 3035 /* This procedure gets the next disconnected ate in a disconnected list, and checks the list for consistency. 3036* Global variables j, k, and p are implied arguments. j is the position in the list (input), 3037* and k and p are the ate index, and pointer, respectively, of the next ate in the list (output). */ 3038 3039 if j = 1 then 3040 k = cdte.disconnected_ate_index; 3041 else k = p -> ute.next_disconnected_ate_index; 3042 if k <= 0 | k > anstbl.current_size then do; 3043 call sys_log_ (SL_LOG, "^a: program error: disconnected ate index no. ^d for ^a.^a is ^d", 3044 ME, j, ute.person, ute.project, k); 3045 goto abort; 3046 end; 3047 p = addr (anstbl.entry (k)); /* get ptr to next ate in list */ 3048 3049 if ^p -> ute.disconnected /* if ate is not disconnected */ 3050 | ^(p -> ute.person = ute.person /* or doesn't belong to this user */ 3051 & p -> ute.project = ute.project) 3052 | ^(p -> ute.active = NOW_HAS_PROCESS) /* or doesn't have a live process */ 3053 then do; /* inform user, and logout -hold */ 3054 call ioa_$rs ("Your disconnected process^x^[#^d^x^;^s^]has changed state unexpectedly; 3055 it may have been bumped or connected to another terminal.", 3056 buff, i, (cdte.n_disconnected_procs > 1), j); 3057 call print_buff; 3058 logout_hold = "1"b; 3059 goto log_disconnected_user_out; 3060 end; 3061 return; 3062 3063 end get_next_disc_ate_jkp; 3064 3065 get_trace_info: proc; /* format information for printing, 3066* either in trace or error message */ 3067 3068 dcl i fixed bin; 3069 dcl o_sw bit (1); /* says whether to print msg in octal or character */ 3070 dcl char8 char (8); 3071 3072 3073 /* First, format the contents of the wakeup message, in ASCII, octal, or both */ 3074 3075 char8 = "........"; 3076 o_sw = "0"b; /* assume character */ 3077 do i = 1 to length (signal_type); /* check each character */ 3078 if unspec (substr (signal_type, i, 1)) < "040"b3 | 3079 unspec (substr (signal_type, i, 1)) > "176"b3 then 3080 o_sw = "1"b; /* if nonprinting char, remember to print in octal */ 3081 else substr (char8, i, 1) = substr (signal_type, i, 1); /* copy printing char into ASCII string */ 3082 end; 3083 call ioa_$rsnnl ("^[""^a""^x^;^s^]^[(^w ^w)^;^2s^]", tsignal_type, (0), (char8 ^= "........"), char8, o_sw, 3084 substr (unspec (signal_type), 1, 36), substr (unspec (signal_type), 37, 36)); 3085 3086 /* Then get state information from either the cdte or ate (whichever we have) or maybe both */ 3087 3088 if wakeup_for_channel & cdtep ^= null then do; /* if wakeup came in over a cdte channel */ 3089 tname = rtrim (cdte.name); 3090 if utep ^= null then 3091 tname = tname || " (" || rtrim (ute.person) || "." || rtrim (ute.project) || ")"; 3092 tanswb = cdte.tty_id_code; 3093 tstate = cdte.state; 3094 ttv = cdte.tra_vec; 3095 tinuse = cdte.in_use; 3096 end; 3097 3098 else if wakeup_for_process & utep ^= null then do;/* or, if it came in over an ate channel */ 3099 tname = rtrim (ute.person) || "." || rtrim (ute.project); /* construct an informative name */ 3100 if cdtep ^= null then do; /* if we have a cdte, get more debugging info */ 3101 tname = tname || " (" || rtrim (cdte.name) || ")"; 3102 tstate = cdte.state; 3103 end; 3104 else do; 3105 tname = tname || " (" || rtrim (ute.tty_name) || ")"; 3106 tstate = 0; /* no channel state info in ate */ 3107 end; 3108 tanswb = ute.tty_id_code; /* a copy of cdte.tty_id_code */ 3109 ttv = ute.destroy_flag; /* a copy of cdte.tra_vec */ 3110 tinuse = ute.active; /* a copy of cdte.in_use */ 3111 end; 3112 3113 else do; /* should never happen, but be cautious */ 3114 tname = "???"; 3115 tanswb = ""; 3116 tstate, tinuse, ttv = 0; 3117 end; 3118 return; 3119 3120 end get_trace_info; 3121 3122 grab_tty: proc; 3123 3124 /* Internal procedure to assign a channel back to the answering service so 3125* we can talk to it. It must always work, so we ignore any codes which 3126* might indicate errors or hangups */ 3127 3128 call astty_$tty_order (cdtep, "quit_disable", null, ignore_code); 3129 call astty_$tty_event (cdtep, ignore_code); /* Set read terminations to come to me */ 3130 call turn_printer_on (ignore_code); 3131 3132 end grab_tty; 3133 3134 grab_ute: proc; 3135 call asu_$attach_ate (cdtep, code); /* allocate user table entry */ 3136 if code ^= 0 then do; 3137 call sys_log_$error_log (SL_LOG, code, ME, "attempting to allocate a user table entry for ^a", cdte.name); 3138 if code = as_error_table_$tty_no_room then do; /* if answer table is full */ 3139 call sys_log_ (SL_LOG, "^a: The answer table is full (^d entries).", ME, anstbl.max_size); 3140 code = as_error_table_$sys_full; /* don't burden user with details, just say "System full." */ 3141 end; 3142 call asu_$write_chn_message (cdtep, code, shxx, ignore_code); 3143 if ignore_code ^= 0 then goto chn_error; /* don't really ignore the code */ 3144 goto listen_again; /* go hang up and listen - no use saying please try again */ 3145 end; 3146 utep = cdte.process; /* copy ptr to ate that we just got */ 3147 have_ate = "1"b; /* and tell everyone else that it's ok to reference the ate */ 3148 end; 3149 3150 hello: proc (leading_NLs); /* returns code from write_force */ 3151 3152 dcl leading_NLs fixed bin; 3153 dcl special_msg_fmt char (5) static options (constant) init ("^v/^a"); 3154 dcl special_message char (anstbl.message_lng) based (addr (anstbl.special_message)); 3155 3156 if anstbl.message_lng > 0 | leading_NLs > 0 then do; /* Any special flash for all users? */ 3157 call ioa_$rsnnl (special_msg_fmt, buff, i, leading_NLs, special_message); /* already have NL */ 3158 call astty_$tty_force (cdtep, addr (buff), i, code); 3159 if code ^= 0 then return; /* Lay it on them */ 3160 end; 3161 t1 = anstbl.n_units / 10.0e0; /* format load message */ 3162 t2 = anstbl.max_units / 10.0e0; /* ... */ 3163 date_time = date_time_$format ("date_time", anstbl.current_time, "", ""); 3164 call ioa_$rs (greeting_fmt, buff, i, whotab.sysid, installation_parms.installation_id, cdte.name, 3165 t1, t2, anstbl.n_users, date_time); 3166 call astty_$tty_force (cdtep, addr (buff), i, code); 3167 end hello; 3168 3169 3170 initialize_current_access_class: procedure; 3171 3172 declare 1 tac aligned like tty_access_class; 3173 3174 call asu_$reset_access_class (cdtep); 3175 if ^cdte.current_access_class_valid then do; 3176 unspec (tac) = ""b; 3177 call astty_$tty_order (cdtep, "get_required_access_class", 3178 addr (tac), code); 3179 if code = 0 & tac.access_class_set then do; 3180 cdte.current_access_class_valid = "1"b; 3181 cdte.current_access_class = tac.access_class; 3182 end; 3183 else if code = 0 | code = error_table_$undefined_order_request /* noonme set it, or this MPX dosen't grok */ 3184 then ; /* leave cdte as is, leave it to lg_ctl_ and dial_ctl_ */ 3185 /* to notice that the access class is undetermined. */ 3186 else do; 3187 call sys_log_$error_log (SL_LOG, code, ME, "get_required_access_class order failed for ^a", cdte.name); 3188 go to chn_error; 3189 end; 3190 end; 3191 return; 3192 end initialize_current_access_class; 3193 3194 lock: procedure; 3195 3196 ute.lock_value = ute.lock_value + 1; 3197 anstbl.lock_count = anstbl.lock_count + 1; 3198 3199 return; 3200 3201 end lock; 3202 3203 3204 print_access_class: procedure; /* prints a banner line */ 3205 3206 if cdte.current_access_class_valid 3207 then call print_access_class_ (cdte.current_access_class); 3208 else call print_access_class_ (cdte.access_class); 3209 return; 3210 3211 print_access_class_: 3212 procedure (range); 3213 3214 declare range (2) bit (72) aligned; 3215 declare c_a_c char (500); 3216 call convert_authorization_$to_string_range (range, c_a_c, code); 3217 if code = 0 then call print_ascii_msg (as_error_table_$aclass_banner_msg, c_a_c); 3218 return; 3219 end print_access_class_; 3220 end print_access_class; 3221 3222 print_ascii_msg: proc (a_code, a_string); 3223 3224 dcl a_code fixed bin (35); 3225 dcl a_string char (*); 3226 3227 call ioa_$rs (convert_message (a_code), buff, i, a_string); 3228 call print_buff; 3229 return; 3230 3231 end print_ascii_msg; 3232 3233 print_buff: proc; /* replaces dozens of copies of these two lines */ 3234 3235 call astty_$tty_force (cdtep, addr (buff), i, code); 3236 if code ^= 0 then goto chn_error; 3237 return; 3238 3239 end print_buff; 3240 3241 print_help: proc (ename); 3242 3243 dcl ename char (*); 3244 3245 dcl segp ptr init (null); 3246 dcl segl fixed bin; 3247 dcl seg char (segl) based (segp); 3248 3249 call hcs_$initiate_count (anstbl.sysdir, (ename), "", segl, (0), segp, code); 3250 if segp = null then do; 3251 call sys_log_$error_log (SL_LOG_BEEP, code, ME, 3252 "Getting pointer to help file, ^a>^a", 3253 anstbl.sysdir, ename); 3254 call ioa_$rs ("^a ^a>^a", buff, i, convert_message (code), anstbl.sysdir, ename); 3255 call astty_$tty_force (cdtep, addr (buff), i, code); 3256 if code ^= 0 then goto chn_error; 3257 end; 3258 else do; 3259 segl = divide (segl, 9, 17, 0); /* get length in characters */ 3260 3261 do i = 1 repeat i + j while (i < segl); /* Write one line at a time of help file */ 3262 j = index (substr (seg, i), NL); /* Scan for end of line. */ 3263 if j = 0 then j = segl - i + 1; /* if last newline missing, print what's there */ 3264 call astty_$tty_force (cdtep, addr (substr (seg, i, 1)), j, code); 3265 if code ^= 0 then go to chn_error; 3266 end; 3267 call astty_$tty_force (cdtep, addr (NL), length (NL), code); /* put out a blank line */ 3268 if code ^= 0 then goto chn_error; 3269 call hcs_$terminate_noname (segp, code); 3270 end; 3271 3272 return; 3273 3274 end print_help; 3275 3276 print_logged_out: proc; 3277 3278 date_time = date_time_$format ("date_time", anstbl.current_time, "", ""); 3279 call ioa_$rs (convert_message (as_error_table_$logout_disconnected_msg), buff, i, 3280 ute.person, ute.project, date_time); 3281 call print_buff; 3282 3283 call lg_ctl_$logout_no_process (utep, "logout, no process"); 3284 return; 3285 3286 end print_logged_out; 3287 3288 remove_channel: proc (err_type); 3289 3290 dcl err_type char (*); 3291 3292 call sys_log_$error_log (SL_LOG_BEEP, code, ME, "^a error, removing channel ^a ^a", 3293 err_type, cdte.name, cdte.comment); 3294 call unlock; /* release answer table, permit updates */ 3295 call free_ute; /* Free the UTE */ 3296 call timer_manager_$reset_alarm_wakeup (cdte.event); 3297 call asu_$asu_remove (cdtep); 3298 end; 3299 3300 send_mail: 3301 proc (message); 3302 3303 dcl message char (*); 3304 3305 dcl user_id char (32); 3306 3307 if utep = null 3308 then return; /* can't do anything */ 3309 user_id = rtrim (ute.person) || "."; /* build Person.Project */ 3310 user_id = rtrim (user_id) || ute.project; 3311 unspec (send_mail_info) = "0"b; 3312 send_mail_info.version = send_mail_info_version_2; 3313 send_mail_info.wakeup = "1"b; 3314 send_mail_info.always_add = "1"b; 3315 send_mail_info.sent_from = "answering service"; 3316 3317 call send_mail_$access_class (user_id, message, addr (send_mail_info), ute.process_authorization, code); 3318 if code ^= 0 & code ^= error_table_$messages_deferred & code ^= error_table_$messages_off 3319 then call sys_log_$error_log (SL_LOG_SILENT, code, ME, "when attempting to notify user ^a of dialup event", user_id); 3320 return; 3321 3322 end send_mail; 3323 3324 set_tabs_and_modes: procedure (bv_tabs_code); 3325 3326 declare bv_tabs_code fixed bin (35) parameter; 3327 3328 dcl init_sw bit (1) init ("1"b); 3329 3330 join: if cdte.cur_line_type ^= LINE_TELNET /* this isn't the way to set network tabs */ 3331 then do; 3332 call ttt_info_$initial_string (cdte.current_terminal_type, tab_string, bv_tabs_code); 3333 if bv_tabs_code ^= 0 then return; 3334 if length (tab_string) ^= 0 then do; 3335 call astty_$tty_changemode (cdtep, "rawo", bv_tabs_code); /* write string out exactly */ 3336 if bv_tabs_code ^= 0 then return; 3337 3338 p = addrel (addr (tab_string), 1); /* varying string */ 3339 call astty_$tty_force (cdtep, p, length (tab_string), bv_tabs_code); 3340 if bv_tabs_code ^= 0 then return; 3341 end; 3342 end; 3343 3344 call ttt_info_$modes (cdte.current_terminal_type, modes_string, bv_tabs_code); 3345 if bv_tabs_code ^= 0 then return; 3346 3347 if init_sw then call astty_$tty_changemode (cdtep, "force,init," || modes_string, bv_tabs_code); 3348 else call astty_$tty_changemode (cdtep, "force," || modes_string, bv_tabs_code); 3349 return; 3350 3351 set_tabs_and_modes_gently: entry (bv_tabs_code); 3352 3353 init_sw = "0"b; 3354 go to join; 3355 3356 end set_tabs_and_modes; 3357 3358 trace: proc; 3359 3360 if loud_select_sw then do; /* trace only specified channel(s) */ 3361 if have_cdte then do; 3362 if loud_select_channel ^= /* if specified string is not equal to */ 3363 substr (cdte.name, 1, length (loud_select_channel)) /* the beginning of this channel's name */ 3364 then return; /* then don't trace it */ 3365 end; 3366 else if have_ate then do; 3367 if loud_select_channel ^= 3368 substr (ute.tty_name, 1, length (loud_select_channel)) 3369 then return; 3370 end; 3371 end; 3372 call get_trace_info; 3373 call sys_log_ (SL_LOG, "^a: trace event ^a ^a ^w ^p st=^d,inuse=^d,tv=^d", 3374 ME, /* "dialup_" */ 3375 tname, /* channel name */ 3376 tsignal_type, /* what was signalled */ 3377 ev_msg.fromproc, /* signalling processid */ 3378 ev_msg.data_ptr, /* ptr to cdte or ate */ 3379 tstate, tinuse, ttv); /* line state, entry state, wait point */ 3380 3381 end trace; 3382 3383 turn_printer_on: proc (bv_turn_code); 3384 3385 declare bv_turn_code fixed bin (35) parameter; 3386 3387 call astty_$tty_order (cdtep, "printer_on", null, bv_turn_code); 3388 if bv_turn_code ^= 0 3389 then if bv_turn_code = error_table_$action_not_performed 3390 then bv_turn_code = 0; 3391 3392 return; 3393 3394 end turn_printer_on; 3395 3396 type_black: proc; 3397 3398 call astty_$tty_order (cdtep, "printer_off", null, code); 3399 if code ^= 0 /* allow only 0 or action_not_performed */ 3400 then if code ^= error_table_$action_not_performed 3401 then go to chn_error; 3402 3403 if (ute.mask_ctl = DO_MASK) 3404 | (ute.mask_ctl = DERIVE_MASK & (code ^= 0)) 3405 then do; 3406 substr (ubits, 1, 36) = bit (fixed (anstbl.current_time, 36, 0), 36); 3407 substr (ubits, 37, 36) = bit (fixed (fixed (anstbl.current_time, 35) * 99991, 36, 0), 36); 3408 do i = 2 to 13; 3409 substr (garbg, 39 + i, 1) = substr (RANDOM, fixed (substr (ubits, 1 + 5 * i, 5), 17) + 1, 1); 3410 end; 3411 call astty_$tty_force (cdtep, addr (garbg), garbg_lth, code); 3412 end; 3413 else call astty_$tty_force (cdtep, addr (NL), size (NL), code); /* now that printer is off, signal user */ 3414 if code ^= 0 then go to chn_error; 3415 return; 3416 3417 end type_black; 3418 3419 ucs: proc (mcptr, condname, coptr, infoptr, continue); 3420 3421 dcl (mcptr, coptr, infoptr) ptr, condname char (*), continue bit (1); 3422 dcl errm char (120) aligned, erri fixed bin; 3423 dcl non_local bit (1); 3424 dcl as_check_condition_ entry (char (*), bit (1), bit (1)); 3425 3426 call as_check_condition_ (condname, continue, non_local); 3427 if continue | non_local then return; 3428 3429 tname, tanswb = ""; 3430 tstate, tinuse, ttv = -999; 3431 3432 if ^static_fault_sw then do; /* avoid infinite loop of get_trace_info faults */ 3433 static_fault_sw = "1"b; 3434 call get_trace_info; /* get info out of either ate or cdte */ 3435 static_fault_sw = ""b; 3436 end; 3437 call ioa_$rsnnl ("^a: Error ^a ^a ""^a"" ^a st=^d,inuse=^d,tv=^d", 3438 errm, erri, ME, condname, tname, tanswb, tsignal_type, tstate, tinuse, ttv); 3439 call as_dump_ (errm); 3440 go to static_label; 3441 3442 end ucs; 3443 3444 unlock: proc; 3445 3446 if utep ^= null /* Might unlock when not needed. */ 3447 then anstbl.lock_count = anstbl.lock_count - ute.lock_value; 3448 if anstbl.lock_count < 0 then anstbl.lock_count = 0; 3449 if anstbl.lock_count = 0 then do; 3450 code = 0; 3451 if ^simulated_wakeup_sw then do while (code = 0); 3452 call ipc_$unmask_ev_calls (code); 3453 if code = 0 then call sys_log_ (SL_LOG, "^a: error - event calls were masked", ME); 3454 end; 3455 end; 3456 if utep ^= null then ute.lock_value = 0; 3457 if ((anstbl.lock_count = 0) & (anstbl.update_pending = "1"b)) then do; 3458 anstbl.update_pending = "0"b; /* reset update-pending flag */ 3459 call hcs_$wakeup (as_procid, anstbl.update_channel, dum_msg, code); 3460 /* trigger dormant update procedure */ 3461 end; 3462 3463 return; 3464 3465 end unlock; 3466 3467 update_term_info: proc; 3468 3469 3470 term_info.version = terminal_info_version; 3471 call astty_$tty_order (cdtep, "terminal_info", addr (term_info), code); 3472 if code ^= 0 then go to chn_error; /* Get the info that's available. */ 3473 3474 cdte.current_terminal_type = term_info.term_type; /* Store info in CDTE for this channel */ 3475 cdte.tty_id_code = term_info.id; /* .. */ 3476 cdte.cur_line_type = term_info.line_type; /* .. */ 3477 if cdte.flags.autobaud then /* if it changes, save what he said */ 3478 cdte.baud_rate = term_info.baud_rate; /* .. */ 3479 3480 return; 3481 3482 end update_term_info; 3483 3484 /* ADDITIONAL ENTRY POINTS */ 3485 3486 /* initialize: we're happy to do this as many times as asked, because we 3487* don't touch any tables. */ 3488 3489 init: entry; 3490 3491 wcr = as_data_$CR; /* set up characters hard to type */ 3492 greeting_fmt = convert_message (as_error_table_$greeting_msg); 3493 bad_login_word_fmt = convert_message (as_error_table_$bad_login_word_msg); 3494 proc_term_fmt = convert_message (as_error_table_$proc_term_msg); 3495 init_term_fmt = convert_message (as_error_table_$init_term_msg); 3496 proc_term_loop_fmt = convert_message (as_error_table_$proc_term_loop_msg); 3497 logout_fmt = convert_message (as_error_table_$logout_msg); 3498 logout_fmt1 = convert_message (as_error_table_$logout1_msg); 3499 3500 call convert_status_code_ (as_error_table_$pw_msg, shxx, format); 3501 call ioa_$rsnnl (rtrim (format), pw_msg, pw_msg_lth); 3502 3503 call convert_status_code_ (as_error_table_$npw_msg, shxx, format); 3504 call ioa_$rsnnl (rtrim (format), npw_msg, npw_msg_lth); 3505 3506 call convert_status_code_ (as_error_table_$npw_again_msg, shxx, format); 3507 call ioa_$rsnnl (rtrim (format), npw_again_msg, npw_again_msg_lth); 3508 3509 call ioa_$rsnnl ("^/YourPassword^aXWXWXWXWXWXW^a986543986543^agqypjmmjpyqg^a", garbg, garbg_lth, 3510 wcr, wcr, wcr, wcr); 3511 3512 call convert_status_code_ (as_error_table_$hangup_msg, shxx, format); 3513 call ioa_$rsnnl (rtrim (format), hangup_msg, hangup_msg_lth); 3514 3515 unspec (dum_msg) = unspec (unlock_string); /* wakeup message sent by unlock */ 3516 3517 return; 3518 3519 trace_on: entry options (variable); 3520 3521 dcl cu_$arg_count entry returns (fixed bin); 3522 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 3523 dcl argp ptr, argl fixed bin, arg char (argl) based (argp); 3524 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 3525 dcl loud_select_sw bit (1) aligned int static init (""b); 3526 dcl loud_select_channel char (32) varying int static init (""); 3527 3528 loudsw = "1"b; 3529 3530 if cu_$arg_count () = 0 then /* if no argument, trace all channels */ 3531 loud_select_sw = ""b; 3532 else do; /* trace the specified channel(s) */ 3533 loud_select_sw = "1"b; 3534 call cu_$arg_ptr (1, argp, argl, code); 3535 loud_select_channel = arg; /* can be something like "a.h1" */ 3536 end; 3537 3538 call sys_log_ (SL_LOG, "^a: tracing turned on^[ for channel ^a^].", 3539 ME, loud_select_sw, loud_select_channel); 3540 3541 return; 3542 3543 trace_off: entry; 3544 3545 loudsw = "0"b; 3546 3547 call sys_log_ (SL_LOG, "^a: tracing turned off.", ME); 3548 3549 return; 3550 3551 re_introduce: entry; /* say hello to dialed up channels again */ 3552 3553 begin; 3554 dcl i fixed bin; /* no interference from anyone! */ 3555 ansp = as_data_$ansp; 3556 do i = 1 to scdtp -> cdt.current_size; 3557 cdtep = addr (scdtp -> cdt.cdt_entry (i)); 3558 utep = cdte.process; 3559 if cdte.service_type = ANS_SERVICE & 3560 cdte.tra_vec = WAIT_LOGIN_LINE then do; 3561 call astty_$tty_state (cdtep, code); /* let's double-check */ 3562 if code ^= 0 then say_hello = ^channel_error (); /* ignore return value */ 3563 else if cdte.in_use = NOW_DIALED & 3564 cdte.state = TTY_DIALED then do; /* should do a read_status or check the ipc channel */ 3565 call astty_$tty_abort (cdtep, 2, code); /* conserve tty_buf, flush anything backed */ 3566 if code ^= 0 then go to reintro_fails; 3567 call hello (2); /* keep talking */ 3568 if code ^= 0 then 3569 reintro_fails: say_hello = ^channel_error (); /* ignore return value */ 3570 end; /* have a client */ 3571 end; 3572 end; /* all CDTEs */ 3573 return; 3574 end; 3575 3576 /* format: off */ 3577 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* The answer table has one entry per "login instance" whether completed or */ 1 6 /* not. It is connected to the Channel Definition Table by the pointer */ 1 7 /* "channel". The header is used mostly by dialup_. */ 1 8 /* */ 1 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 1 10 /* */ 1 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 12 1 13 /****^ HISTORY COMMENTS: 1 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 1 15* Replace anstbl.incl.pl1. 1 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 1 17* Add anstbl.session_uid_counter. 1 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 1 19* Add anstbl.message_update_time and named constants for values of 1 20* anstbl.session, and to make all padding explicit. 1 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 1 22* Change "entry" to a placeholder so as not to require 1 23* user_table_entry.incl.pl1. 1 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 1 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 1 26* Added the flag login_server_present which indicates whether a login 1 27* server request has been received. This is used to determine whether 1 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 1 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 1 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 1 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 32* A) Moved constants for ute.pw_flags.mask_ctl into 1 33* user_table_entry.incl.pl1. 1 34* B) Added common table header to all user tables. 1 35* END HISTORY COMMENTS */ 1 36 1 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 38 /* */ 1 39 /* The anstbl structure below is divided into sections. Each section begins */ 1 40 /* with a comment describing the elements in the section. Elements are */ 1 41 /* placed within a section, based upon their function or the programs that */ 1 42 /* use them. Each section begins on a double word and is an even number of */ 1 43 /* words long. */ 1 44 /* */ 1 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 46 1 47 1 48 1 49 /* format: style4 */ 1 50 1 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 1 52 1 53 dcl ansp ptr automatic init (null); 1 54 1 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 1 56 2 header like ut_header, /* Header common to all user tables. */ 1 57 1 58 /* Counter elements. */ 1 59 2 nlin fixed bin, /* number of active lines */ 1 60 2 mxlin fixed bin, /* maximum number of active lines */ 1 61 2 n_users fixed bin, /* number of logged-in users */ 1 62 2 max_users fixed bin, /* maximum number of users allowed */ 1 63 2 n_units fixed bin, /* number of logged in units */ 1 64 2 max_units fixed bin, /* maximum number of units */ 1 65 2 n_sessions fixed bin, /* number of Multics sessions */ 1 66 2 n_pad fixed bin, 1 67 1 68 /* Name elements. */ 1 69 2 sysdir char (64) unal, /* name of main system control directory */ 1 70 2 as_tty char (8) unal, /* name of main answering service device. */ 1 71 1 72 /* Login elements. */ 1 73 2 login_word char (8) unal, /* login word if special_session=1 */ 1 74 2 session char (8) unal, /* session indicator */ 1 75 2 special_message char (128) unal, /* message to be printed for special session */ 1 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 1 77 2 message_lng fixed bin, /* length of special message */ 1 78 2 login_pad fixed bin, 1 79 1 80 /* Table update elements. */ 1 81 2 lock_count fixed bin, /* global lock for all system control tables */ 1 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 1 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 1 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 1 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 1 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 1 87 2 update_pad fixed bin, 1 88 1 89 /* dialup_ data values. */ 1 90 2 current_time fixed bin (71), /* Time of last transaction */ 1 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 1 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 1 93 1 94 /* load_ctl_ elements. */ 1 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 1 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 1 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 1 98 /* load_ctl_ load leveling desired response range: */ 1 99 2 response_high fixed bin, /* bad if user response time slower than this */ 1 100 2 response_low fixed bin, /* bad if user response time faster than this */ 1 101 2 load_ctl_pad fixed bin, 1 102 1 103 /* Login server request server data. */ 1 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 1 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 1 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 1 107 1 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 1 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 1 110 3 contents (UTE_SIZE) fixed bin; 1 111 1 112 /* constants */ 1 113 1 114 /* values for anstbl.session */ 1 115 1 116 dcl (AT_NORMAL init ("normal "), 1 117 AT_SPECIAL init ("special "), 1 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 1 119 1 120 dcl UTE_SIZE fixed bin internal static initial (300); 1 121 1 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 3577 3578 /* BEGIN include file access_audit_bin_header.incl.pl1 */ 2 2 2 3 /* format: style4 */ 2 4 2 5 /* NOTE: All changes must also be done to access_audit_bin_header.incl.alm */ 2 6 2 7 /* 85-01-18 E. Swenson - renamed to access_audit_bin_header.incl.pl1 */ 2 8 /* 85-01-17 E. Swenson - restructured, added session_uid, changed 2 9* min and max authorization to authorization range. */ 2 10 /* 85-01-07 EJ Sharpe - added min_authorization, cleanup */ 2 11 /* 84-11-15 EJ Sharpe - added event_flags word */ 2 12 /* 84-11-06 EJ Sharpe - added unaligned attr to version and proxy_flag */ 2 13 /* 84-10-24 EJ Sharpe - added the constants */ 2 14 /* 84-09-04 BIM - created */ 2 15 2 16 declare audit_record_ptr pointer; 2 17 2 18 dcl 1 audit_record_header aligned based (audit_record_ptr), 2 19 2 header aligned like arh_header_, 2 20 2 subject aligned like arh_user_info_; 2 21 2 22 dcl 1 audit_record_header_proxy aligned based (audit_record_ptr), 2 23 2 header aligned like arh_header_, 2 24 2 subjects (2) aligned like arh_user_info_; 2 25 2 26 dcl 1 arh_header_ aligned based, 2 27 2 type fixed bin (9) unsigned unaligned, 2 28 2 version fixed bin (9) unsigned unaligned, 2 29 2 flags unaligned, 2 30 3 ( 2 31 subject_is_process, /* binary data in subject is valid */ 2 32 object_is_valid /* There is an object */ 2 33 ) bit (1) unaligned, 2 34 3 pad bit (16) unaligned, 2 35 2 operation_code bit (36) aligned, /* like access_audit_encoded_op */ 2 36 2 event_flags bit (36) aligned, /* like access_audit_eventflags */ 2 37 2 session_uid fixed bin (35); /* uid for the login session */ 2 38 2 39 dcl 1 arh_user_info_ aligned based, 2 40 2 person char (22) unaligned, /* see anonymous bit */ 2 41 2 project char (9) unaligned, /* blank for nologin w/out proj */ 2 42 2 tag char (1) unaligned, 2 43 2 ring fixed bin (3) uns unaligned, 2 44 2 anonymous bit (1) unaligned, 2 45 2 pad3 bit (32) unaligned, 2 46 2 process_id bit (36) aligned, 2 47 2 authorization bit (72) aligned, 2 48 2 authorization_range (2) bit (72) aligned; 2 49 2 50 dcl ARH_TYPE_PROXY fixed bin init (2) 2 51 static options (constant); 2 52 dcl ARH_TYPE_NO_PROXY fixed bin init (1) 2 53 static options (constant); 2 54 dcl ACCESS_AUDIT_HEADER_VERSION_3 fixed bin (9) unsigned 2 55 init (3) static options (constant); 2 56 2 57 /* End include file access_audit_bin_header.incl.pl1 */ 3578 /* not used by needed by PL/I */ 3579 /* 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 * * * * * */ 3579 3580 /* 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 ... */ 3580 3581 /* BEGIN INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 5 6* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 7* Removed ansp, autp and dutp from this include file, adding them to 5 8* answer_table.incl.pl1, absentee_user_table.incl.pl1 and 5 9* daemon_user_table.incl.pl1. 5 10* END HISTORY COMMENTS */ 5 11 5 12 5 13 /* This include file requires as_data_.incl.pl1 */ 5 14 5 15 /* format: style4 */ 5 16 5 17 dcl as_procid bit (36) aligned defined (as_data_$as_procid); 5 18 dcl as_tty char (6) based (addr (as_data_$as_tty)); 5 19 dcl asmtp ptr defined (as_data_$asmtp); 5 20 dcl devtabp ptr defined (as_data_$devtabp); 5 21 dcl ip ptr defined (as_data_$rs_ptrs (0)); 5 22 dcl mgtp ptr defined (as_data_$mgtp); 5 23 dcl pdtdir char (168) based (addr (as_data_$pdtdir)); 5 24 dcl rs_ptrs (0:9) ptr based (addr (as_data_$rs_ptrs (0))); 5 25 dcl sat_htp ptr defined (as_data_$sat_htp); 5 26 dcl satp ptr defined (as_data_$satp); 5 27 dcl scdtp ptr defined (as_data_$cdtp); 5 28 dcl sysdir char (168) defined (as_data_$sysdir); 5 29 dcl whoptr ptr defined (as_data_$whoptr); 5 30 5 31 /* END INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 3581 3582 /* BEGIN INCLUDE FILE as_meter_numbers.incl.pl1 */ 6 2 6 3 /* These are the names and numbers of the slots in as_meter_table 6 4* (see as_meter_table.incl.pl1). 6 5* 6 6* Written March 1980 by Tom Casey 6 7* Modified June 1981 by T. Casey for MR9.0 to add ABS_TRYLOG_METER. 6 8**/ 6 9 6 10 6 11 /****^ HISTORY COMMENTS: 6 12* 1) change(86-01-31,Herbst), approve(87-07-21,MCR7694), 6 13* audit(87-07-21,GDixon), install(87-08-04,MR12.1-1056): 6 14* A) Add NETUP_METER. 6 15* B) Add AS_METER_NAMES array. 6 16* END HISTORY COMMENTS */ 6 17 6 18 6 19 dcl ASINIT_METER fixed bin int static options (constant) init (1); /* as_init_, parts 1 and 2 */ 6 20 dcl DIALUP_METER fixed bin int static options (constant) init (2); /* dialup_ */ 6 21 dcl DUM_METER fixed bin int static options (constant) init (3); /* daemon_user_manager_ */ 6 22 dcl AUM_METER fixed bin int static options (constant) init (4); /* absentee_user_manager_ */ 6 23 dcl AU_METER fixed bin int static options (constant) init (5); /* absentee_utility_ */ 6 24 dcl CPG_METER fixed bin int static options (constant) init (6); /* cpg_ */ 6 25 dcl DPG_METER fixed bin int static options (constant) init (7); /* dpg_ */ 6 26 dcl ACCTUP_METER fixed bin int static options (constant) init (8); /* accounting updates */ 6 27 dcl INSTALL_METER fixed bin int static options (constant) init (9); /* installs (up_sysctl_) */ 6 28 dcl ABSQ_METER fixed bin int static options (constant) init (10); /* absentee queue reads and writes */ 6 29 dcl MSGCORD_METER fixed bin int static options (constant) init (11); /* message coordinator */ 6 30 dcl COMMAND_METER fixed bin int static options (constant) init (12); /* operator commands, other than admin */ 6 31 dcl SAC_METER fixed bin int static options (constant) init (13); /* sac (send_admin_command handling) */ 6 32 dcl ADMIN_METER fixed bin int static options (constant) init (14); /* admin mode */ 6 33 dcl SSU_METER fixed bin int static options (constant) init (15); /* system_start_up.ec, parts 1, 2, and 3 */ 6 34 dcl FIXPDT_METER fixed bin int static options (constant) init (16); /* cleanup of PDTs after crash (act_ctl_$init) */ 6 35 dcl ABS_TRYLOG_METER fixed bin int static options (constant) init (17); /* attempts to login absentees via call lg_ctl_ 6 36* (the attempts might fail because of load control limits) */ 6 37 dcl NETUP_METER fixed bin int static options (constant) init (18); /* a call to network_accounting_update_ */ 6 38 6 39 dcl recursion_possible bit (18) int static options (constant) init ("000000000011000000"b); /* 11 & 12 (MSGCORD and COMMAND) */ 6 40 6 41 /* Bit length of recursion_possible equals highest slot number given above. */ 6 42 6 43 dcl AS_METER_NAMES (18) char (8) int static options (constant) init ( 6 44 "ASINIT", "DIALUP", "DUM", "AUM", "AU", 6 45 "CPG", "DPG", "ACCTUP", "INSTALL", "ABSQ", 6 46 "MSGCORD", "COMMAND", "SAC", "ADMIN", "SSU", 6 47 "FIXPDT", "TRYABSLG", "NETUP"); 6 48 6 49 /* END INCLUDE FILE as_meter_numbers.incl.pl1 */ 3582 3583 /* BEGIN INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 7 2 7 3 /* This include file defines the priorities of all of the event channels used by the answering service. 7 4* 7 5* They are declared as named constants. They are used in calls to ipc_$decl_ev_call_chn. 7 6* The names correspond to the functions of the event call handlers. 7 7* For brevity in names, MC means message coordinator, and LOGIN includes logout as well. 7 8* 7 9* The comment on each constant lists the procedure(s) that use it to set event channel priorities. 7 10* See the code in those procedures for information on the handlers themselves 7 11* (which are entry variables in some cases, and thus could not be documented in this file). 7 12* 7 13* The priorities range from zero (highest) to 22 (lowest used by the answering service). 7 14* 7 15* The event wait channel on which the A.S. goes blocked awaiting input on the initializer console has highest 7 16* of all priorities, set by as_init_ calling ipc_$set_wait_prior. 7 17* 7 18* Written June 1981 by T. Casey for MR9.0 7 19* Modified 1984-10-15 BIM for sac -> as_request. 7 20* as_request is above login, since sac is important and 7 21* dial requests for already logged in users can take 7 22* first dibs over new logins. 7 23**/ 7 24 7 25 dcl MC_PRIO fixed bin int static options (constant) init (1); /* mc_commands_, mc_con_rec_, mc_util_, mrd_tester */ 7 26 dcl SYSERR_COPY_PRIO fixed bin int static options (constant) init (2); /* syserr_log_man_ */ 7 27 dcl SHUTDOWN_PRIO fixed bin int static options (constant) init (3); /* admin */ 7 28 dcl ACCT_UPDATE_PRIO fixed bin int static options (constant) init (4); /* act_ctl_ */ 7 29 dcl DAEMON_LOGIN_PRIO fixed bin int static options (constant) init (8); /* daemon_user_manager_ */ 7 30 dcl AS_REQUEST_PRIO fixed bin int static options (constant) init (7); /* as_request_ */ 7 31 dcl INSTALL_PRIO fixed bin int static options (constant) init (8); /* up_sysctl_ */ 7 32 dcl INT_LOGIN_PRIO fixed bin int static options (constant) init (8); /* asu_, dialup_, ftp_dialup_ */ 7 33 dcl MPX_LOAD_PRIO fixed bin int static options (constant) init (11); 7 34 /* as_vip7760_mpx_, as_mcs_mpx_, as_ibm3270_mpx_, as_hasp_mpx_ */ 7 35 dcl ABS_DEFER_PRIO fixed bin int static options (constant) init (19); /* absentee_utility_ */ 7 36 dcl ABS_LOGIN_PRIO fixed bin int static options (constant) init (20); /* abentee_user_manager_ */ 7 37 dcl CORE_FLUSH_PRIO fixed bin int static options (constant) init (22); /* as_meter_ */ 7 38 7 39 /* END INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 3583 3584 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 8 2 8 3 /* This include file declares the "author" substructure 8 4* in a form suitable for using the PL/I "like" attribute. 8 5* 8 6* Written 750304 by PG 8 7**/ 8 8 8 9 dcl 1 author_dcl aligned based, 9 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 9 2 9 3 /* the "author" items must always be the first ones in the table. The 9 4* module which moves the converted table to the System Control process 9 5* fills in these data items and assumes them to be at the head of the segment 9 6* regardless of the specific table's actual declaration. The variables 9 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 9 8* respectively. For tables installed in multiple processes, these 9 9* are to be used to lock out multiple installations. */ 9 10 9 11 /* Lock should be used as a modification lock. Since, in general, 9 12* entries may not be moved in system tables, even by installations, 9 13* it is sufficient for only installers and programs that change threads 9 14* to set or respect the lock. Simply updating data in an entry 9 15* requires no such protection. 9 16* 9 17* Last_install_time is used by readers of system tables to detect 9 18* installations or other serious modifications. By checking it before 9 19* and after copying a block of data, they can be protected against 9 20* modifications. 9 21* 9 22* Modules that set the lock should save proc_group_id, and then 9 23* put their group id there for the time they hold the lock. 9 24* if they do not actually install the, they should restore the group id. 9 25**/ 9 26 9 27 2 author aligned, /* validation data about table's author */ 9 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 9 29 3 lock bit (36), /* installation lock */ 9 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 9 31 3 update_authorization bit (1) unal, /* update only authorizations */ 9 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 9 33 3 pad bit (33) unaligned, 9 34 3 last_install_time fixed bin (71), 9 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 9 36 3 w_dir char (64), /* author's working directory */ 9 37 9 38 /* END INCLUDE FILE author.incl.pl1 */ 8 10 8 11 2 pad; 8 12 8 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 3584 3585 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 10 2 10 3 /* format: style3,idind25,indcomtxt */ 10 4 10 5 /* Channel Definition Table. 10 6* This table lists all of the hardware channels (ports) connected 10 7* to the system, and maintains the attributes of each one. 10 8* 10 9* PG 741230 10 10* Modified by Mike Grady 5/6/76 to add FNP info. 10 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 10 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 10 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 10 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 10 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 10 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 10 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 10 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 10 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 10 20* Modified August 1982 by E. N. Kittlitz for check_acs. 10 21* Modified January 1983 by Keith Loepere for generic_destination. 10 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 10 23* Modified 831216 by E. N. Kittlitz for required_access_class. 10 24* Modified 84-04-01 by BIM to finish communications AIM: 10 25* access class ranges, 10 26* access_control flags. 10 27**/ 10 28 10 29 10 30 /****^ HISTORY COMMENTS: 10 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 10 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 10 33* Add support for answering service to use IOCBs when tty_ cannot be 10 34* used to service login channels. 10 35* END HISTORY COMMENTS */ 10 36 10 37 10 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 10 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 10 40 10 41 dcl (cdtp, cdtep, fnpep, mpxep) 10 42 ptr; 10 43 10 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 10 45 2 author like author_dcl.author, /* standard header */ 10 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 10 47 2 current_size fixed bin, /* number of last cdte. */ 10 48 2 version fixed bin, 10 49 2 freep fixed bin, /* chain of free cdte's */ 10 50 2 n_cdtes fixed bin, /* number of used cdte's */ 10 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 10 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 10 53 2 cpu_in_dialup fixed bin (71), /* .. */ 10 54 2 pf_in_dialup fixed bin, /* .. */ 10 55 2 pp_in_dialup fixed bin, /* .. */ 10 56 2 entries_to_dialup fixed bin, /* .. */ 10 57 2 flags, 10 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 10 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 10 60 3 mux_mgr_system_init 10 61 bit (1) unal, /* mux mgr has loaded top-levels */ 10 62 3 pad1 bit (33) unal, 10 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 10 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 10 65 2 threads aligned like channel_threads, 10 66 /* root of non-fnp-top-level-multiplexers */ 10 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 10 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 10 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 10 70 10 71 10 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 10 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 10 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 10 75 2 pad1 bit (36) aligned, 10 76 2 name char (32), /* ASCII name of channel */ 10 77 2 access_class (2) bit (72) aligned, /* access class range */ 10 78 2 comment char (48), /* printable message about channel */ 10 79 2 charge_type fixed bin (17) unal, /* billing group */ 10 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 10 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 10 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 10 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 10 84 2 pad2 bit (18) unaligned, 10 85 2 answerback char (8), /* answerback string expected */ 10 86 2 initial_terminal_type 10 87 char (32) unal, /* as specified in the CMF */ 10 88 2 mpx_data unal, /* data used only for multiplexed channels */ 10 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 10 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 10 91 2 flags, 10 92 ( 3 attributes, 10 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 10 94 4 audit_access_error 10 95 bit (1), /* ON means ck that person auth is inside access class range */ 10 96 /* this implies that the access_class describes a range of 10 97* legitimate user auths. */ 10 98 4 hardwired bit (1), /* ON means it is */ 10 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 10 100 4 dont_read_answerback 10 101 bit (1), /* ON means don't try to read answerback */ 10 102 4 pada bit (4), 10 103 3 access_control unaligned, /* As below */ 10 104 4 dial_out bit (1), /* dialing user must be on ACS */ 10 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 10 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 10 107 4 login bit (1), /* logging in user must be on acs */ 10 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 10 109 4 pado bit (3), 10 110 3 options, 10 111 4 execute_initial_command 10 112 bit (1), /* ON means to do it */ 10 113 4 attached_by_operator 10 114 bit (1), /* ON means temporary attachment. */ 10 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 10 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 10 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 10 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 10 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 10 120 4 generic_destination_present 10 121 bit (1), /* ON means that the initial_command field contains 10 122* a generic destination to match on dial_out or priv attach */ 10 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 10 124 4 pado bit (9) 10 125 ) unaligned, 10 126 2 initial_command char (64), /* pseudo first input line */ 10 127 /**** The following variables represent dynamic control info, and 10 128* are used mostly by dialup_ and asu_ */ 10 129 2 event fixed bin (71), /* event call channel for channel events */ 10 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 10 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 10 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 10 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 10 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 10 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 10 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 10 137 /* 0 = dialup_, 1 = mc_tty_ */ 10 138 3 save_arg bit (1) unal, /* -save login arg given */ 10 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 10 140 3 detach_after_hangup 10 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 10 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 10 143 3 hold_arg bit (1) unal, /* -hold arg given */ 10 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 10 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 10 146 3 current_access_class_valid 10 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 10 148 3 pad bit (7) unal, 10 149 2 twx fixed bin, /* channel device index */ 10 150 2 state fixed bin, /* channel state */ 10 151 2 tty_id_code char (4), /* channel id (answerback) */ 10 152 2 current_terminal_type 10 153 char (32) unal, /* most recently-set terminal type */ 10 154 2 process ptr unal, /* ptr to ATE owning this channel */ 10 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 10 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 10 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 10 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 10 159* We do not yet define multi-class connections, but we will someday. */ 10 160 2 disconnected_ate_index 10 161 fixed bin (17) unal, /* index of ate of disconnected process */ 10 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 10 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 10 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 10 165 2 pad3 bit (14) unaligned, 10 166 /**** The following variables are kept for metering purposes. */ 10 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 10 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 10 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 10 170 2 dialup_time fixed bin (71), /* time of present dialup */ 10 171 2 disconnected_proc_command 10 172 fixed bin (12) unsigned unal, 10 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 10 174 2 disconnected_proc_number 10 175 fixed bin (12) unsigned unal, 10 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 10 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 10 178 /* number of disconnected processes that user has */ 10 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 10 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 10 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 10 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 10 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 10 184 /**** had the space. */ 10 185 2 threads aligned like channel_threads, 10 186 /**** The use name is that of the user who gave the dial or slave ****/ 10 187 /**** preaccess request. ****/ 10 188 2 user_name unaligned, 10 189 3 person char (20) unaligned, 10 190 3 project char (9) unaligned, 10 191 3 pad char (3) unaligned, /* no tag */ 10 192 2 iocbp ptr unaligned; /* 104 words */ 10 193 10 194 10 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 10 196* overlays initial_command field for slave and autocall lines */ 10 197 10 198 10 199 10 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 10 201 /* These variables are filled in from the CMF */ 10 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 10 203 2 memory fixed bin, /* amount of memory on this FNP */ 10 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 10 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 10 206 2 service_type fixed bin, /* service type */ 10 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 10 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 10 209 /**** The following are used during system operation to remember the state of the FNP */ 10 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 10 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 10 212 2 mpxe like mpxe, /* standard multiplexer data */ 10 213 2 threads aligned like channel_threads, 10 214 /* same mpx threads as channel */ 10 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 10 216 10 217 /* This structure describes the data necessary to control a multiplexer. 10 218* For FNP's., a copy appears in the fnpe. For communications lines, it 10 219* overlays the initial_command field in the cdte. */ 10 220 10 221 dcl 1 mpxe based (mpxep) aligned, 10 222 2 state fixed bin, /* current state, up, down, loading */ 10 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 10 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 10 225 2 n_bootloads fixed bin, /* count of load attempts */ 10 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 10 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 10 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 10 229 2 time_load_start fixed bin (71), /* time current load started */ 10 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 10 231 2 flags unal, 10 232 3 go bit (1), /* start MPX after it loads */ 10 233 3 listening bit (1), /* listen has been done on subchannels */ 10 234 3 check bit (1), /* loaded with check option */ 10 235 3 retry_load bit (1), /* reload if load fails */ 10 236 3 pad1 bit (32), 10 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 10 238 10 239 /* These threads define the tree of multiplexers in the cdt. */ 10 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 10 241 /* by alpha sort order of the channel name. Daughter points to the */ 10 242 /* first child of this node, if any. Daughter count is the number */ 10 243 /* of children, as a consistency check. Mother is a back pointer to */ 10 244 /* the parent, present in all the children, not just the first. */ 10 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 10 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 10 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 10 248 10 249 dcl 1 channel_threads aligned based, 10 250 2 next_sister fixed bin unaligned, 10 251 2 prev_sister fixed bin unaligned, 10 252 2 daughter fixed bin unaligned, 10 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 10 254 2 pad bit (18) unaligned, 10 255 2 daughter_count fixed bin unaligned; 10 256 10 257 /* Values for cdte.service_type field */ 10 258 10 259 dcl ( 10 260 ANS_SERVICE init (1), /* login or dial */ 10 261 FTP_SERVICE init (2), /* file transfer service */ 10 262 MC_SERVICE init (3), /* message coordinator */ 10 263 SLAVE_SERVICE init (4), /* special channel */ 10 264 DIAL_SERVICE init (5), /* transient state */ 10 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 10 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 10 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 10 268 ) fixed bin internal static options (constant); 10 269 10 270 /* Values for service type in both cdte and fnpe */ 10 271 10 272 dcl ( 10 273 INACTIVE init (7), /* not to be used, even though configured */ 10 274 ACTIVE init (1) 10 275 ) /* for FNP only, configured and to be used */ 10 276 fixed bin internal static options (constant); 10 277 10 278 /* Value for both cdte.in_use and fnpe.state */ 10 279 10 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 10 281 /* was not configured at Multics bootload time */ 10 282 10 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 10 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 10 285 10 286 /* Value for cdte.in_use */ 10 287 10 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 10 289 /* channel deleted by CDT installation */ 10 290 10 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 10 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 10 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 10 294 10 295 10 296 /* Values for mpxe.state field */ 10 297 10 298 dcl ( 10 299 FNP_FREE init (0), /* this fnpe is not used */ 10 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 10 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 10 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 10 303 FNP_UP init (4) /* FNP is up and running fine */ 10 304 ) fixed bin internal static options (constant); 10 305 10 306 dcl ( 10 307 MPX_FREE init (0), /* this mpxe is not used */ 10 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 10 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 10 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 10 311 MPX_UP init (4) /* MPX is up and running fine */ 10 312 ) fixed bin internal static options (constant); 10 313 11 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 11 2 11 3 11 4 11 5 /****^ HISTORY COMMENTS: 11 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 11 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 11 8* Add data needed for the uncp multiplexer (DSA gateway) interface 11 9* implementation. 11 10* END HISTORY COMMENTS */ 11 11 11 12 11 13 /* Values for fnpe.type field */ 11 14 /* 11 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 11 16* Added in March 1982 - DN7100.fd. 11 17**/ 11 18 11 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 11 20 DN6600 init (2), /* a DataNet 6600 FNP */ 11 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 11 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 11 23 ) fixed bin internal static options (constant); 11 24 11 25 dcl fnp_types (4) char (8) int static options (constant) 11 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 11 27 11 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 11 29 init (355, 6600, 6670, 7100); 11 30 11 31 dcl supported_fnp (4) bit (1) int static options (constant) 11 32 init ("0"b, "0"b, "1"b, "1"b); 11 33 11 34 11 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 10 314 10 315 10 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 3585 3586 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 12 2 12 3 /* format: style4 */ 12 4 12 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 12 6 12 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 12 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 12 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 12 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 12 11* WAIT_DISCARD_WAKEUP 12 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 12 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 12 14**/ 12 15 12 16 /****^ HISTORY COMMENTS: 12 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 12 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 12 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 12 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 22* Add named constants for instance tags. 12 23* END HISTORY COMMENTS */ 12 24 12 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 12 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 12 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 12 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 12 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 12 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 12 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 12 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 12 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 12 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 12 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 12 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 12 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 12 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 12 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 12 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 12 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 12 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 12 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 12 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 12 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 12 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 12 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 12 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 12 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 12 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 12 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 12 52 ) fixed bin internal static options (constant); 12 53 12 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 12 55 /* names of ute.destroy_flag values */ 12 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 12 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 12 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 12 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 12 60 "wait remove"); /* -13 */ 12 61 12 62 /* Values for "cdte.state", typewriter state. */ 12 63 12 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 12 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 12 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 12 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 12 68 ) fixed bin internal static options (constant); 12 69 12 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 12 71 /* names of cdte.state values */ 12 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 12 73 12 74 /* Values for "cdte.in_use" and "ate.active" */ 12 75 12 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 12 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 12 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 12 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 12 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 12 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 12 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 12 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 12 84 ) fixed bin internal static options (constant); 12 85 12 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 12 87 /* names of ute.active values */ 12 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 12 89 12 90 12 91 /**** Values for ute.tag */ 12 92 12 93 dcl (TAG_INTERACTIVE init("a"), 12 94 TAG_UFT init("f"), 12 95 TAG_ABSENTEE init("m"), 12 96 TAG_PROXY init("p"), 12 97 TAG_DAEMON init("z") 12 98 ) char(1) int static options(constant); 12 99 12 100 12 101 /**** Following are constants used to indicate to the process termination 12 102* handler the reason for the process termination. They are used by 12 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 12 104* uc_ls_destroy_request_. */ 12 105 12 106 dcl ( 12 107 PT_FPE initial (1), 12 108 PT_LOGOUT initial (4), 12 109 PT_NEW_PROC_AUTH initial (13), 12 110 PT_HANGUP initial (20), 12 111 PT_SHUTDOWN initial (21), 12 112 PT_BUMP initial (22), 12 113 PT_ALARM initial (23), 12 114 PT_DETACH initial (24), 12 115 PT_UNBUMP initial (25), 12 116 PT_OPERATOR_TERMINATE initial (27), 12 117 PT_DESTROY_REQUEST initial (30), 12 118 PT_NEW_PROC_REQUEST initial (31) 12 119 ) fixed bin (17) internal static options (constant); 12 120 12 121 /**** Values for ute.preempted: 12 122* -1 user unbumped after term signal sent 12 123* 0 user unbumped; ignore alarm___ 12 124* 1 value internally used in load_ctl_ 12 125* 2 user bumped; when alarm___ comes in, send term signal 12 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 12 127* signals come in 12 128* 4 user bumped; process sick, so destroy without sending term signal 12 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 12 130* termsgnl). */ 12 131 12 132 dcl ( 12 133 PREEMPT_UNBUMP initial (-1), 12 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 12 135 PREEMPT_LOAD_CTL initial (1), 12 136 PREEMPT_BUMPED initial (2), 12 137 PREEMPT_TERM_SENT initial (3), 12 138 PREEMPT_BUMPED_NO_TERM initial (4), 12 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 12 140 ) fixed bin (17) internal static options(constant); 12 141 12 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 12 143 "unbumped", 12 144 "not bumped, ignore alarm___", 12 145 "load_ctl_", 12 146 "bumped", 12 147 "bumped, trm_ sent", 12 148 "bumped without trm_", 12 149 "bumped, termsgnl received"); 12 150 12 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 3586 3587 /* BEGIN INCLUDE FILE ... net_event_message.incl.pl1 */ 13 2 13 3 /****^ HISTORY COMMENTS: 13 4* 1) change(86-07-30,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 13 5* install(86-10-09,MR12.0-1181): 13 6* This include file was formerly tty_event_message.incl.pl1. It has been 13 7* updated with different fields and new constants, and renamed to 13 8* net_event_message.incl.pl1 13 9* 2) change(87-04-20,GDixon), approve(87-07-13,MCR7694), 13 10* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 13 11* Add NETWORK_TYPE_VALUES array. 13 12* END HISTORY COMMENTS */ 13 13 13 14 /* describes event message passed with wakeups from the tty DIM */ 13 15 /* Created 5/24/76 by Robert S. Coren */ 13 16 13 17 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 13 18 13 19 dcl net_event_message_arg fixed bin (71); /* For calling IPC */ 13 20 dcl NET_EVENT_MESSAGE_VERSION_1 bit (2) internal static options (constant) init ("10"b); 13 21 13 22 dcl 1 net_event_message aligned based (addr (net_event_message_arg)), 13 23 2 version bit (2) unaligned, /* Currently version 1 */ 13 24 2 reason bit (16) unaligned, /* Additional info about the event */ 13 25 2 pad bit (6) unaligned, /* Must be zero */ 13 26 2 network_type fixed bin (4) unsigned unaligned, 13 27 /* See below for constants */ 13 28 2 type fixed bin (8) unsigned unaligned, 13 29 /* Type of interrupt, see below */ 13 30 2 handle fixed bin (35) aligned;/* Caller's handle (devx for MCS, handle for DSA) */ 13 31 13 32 /* Network type constants */ 13 33 13 34 dcl MCS_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (0); 13 35 dcl DSA_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (1); 13 36 dcl MOWSE_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (2); 13 37 13 38 dcl NETWORK_TYPE_VALUES (0:2) char(8) varying int static options(constant) init( 13 39 "MCS", 13 40 "DSA", 13 41 "MOWSE"); 13 42 13 43 13 44 /* MCS event message type constants */ 13 45 13 46 dcl MAX_MCS_EVENT_MSG_TYPE fixed bin internal static options (constant) init (8); 13 47 13 48 dcl MCS_UNSPECIFIED_MSG fixed bin internal static options (constant) init (0); 13 49 /* used for "start" order, etc. */ 13 50 dcl MCS_DIALUP_MSG fixed bin internal static options (constant) init (1); 13 51 /* dialup */ 13 52 dcl MCS_HANGUP_MSG fixed bin internal static options (constant) init (2); 13 53 /* hangup */ 13 54 dcl MCS_DIALOUT_MSG fixed bin internal static options (constant) init (3); 13 55 /* dialout status returned */ 13 56 dcl MCS_QUIT_MSG fixed bin internal static options (constant) init (4); 13 57 /* quit */ 13 58 dcl MCS_READ_MSG fixed bin internal static options (constant) init (5); 13 59 /* input arrived */ 13 60 dcl MCS_WRITE_MSG fixed bin internal static options (constant) init (6); 13 61 /* output completed */ 13 62 dcl MCS_LINE_STATUS_MSG fixed bin internal static options (constant) init (7); 13 63 /* control tables sent status */ 13 64 dcl MCS_MASKED_MSG fixed bin internal static options (constant) init (8); 13 65 /* channel masked by FNP */ 13 66 13 67 dcl MCS_MSG_TYPE_TO_PNAME (0:8) char (20) internal static options (constant) init ("unspecified", 13 68 /* 0 */ 13 69 "dialup", /* 1 */ 13 70 "hangup", /* 2 */ 13 71 "dialout status", /* 3 */ 13 72 "quit", /* 4 */ 13 73 "read", /* 5 */ 13 74 "write", /* 6 */ 13 75 "line status", /* 7 */ 13 76 "masked"); /* 8 */ 13 77 13 78 /* DSA event message type constants */ 13 79 13 80 dcl MAX_DSA_EVENT_MSG_TYPE fixed bin internal static options (constant) init (19); 13 81 13 82 dcl DSA_UNSPECIFIED_MSG fixed bin (8) uns internal static options (constant) init (0); 13 83 dcl DSA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (1); 13 84 dcl DSA_DATA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (2); 13 85 dcl DSA_DEMAND_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (3); 13 86 dcl DSA_DEMAND_TURN_MSG fixed bin (8) uns internal static options (constant) init (4); 13 87 dcl DSA_DEMAND_TURN_ACK_MSG fixed bin (8) uns internal static options (constant) init (5); 13 88 dcl DSA_PURGE_MSG fixed bin (8) uns internal static options (constant) init (6); 13 89 dcl DSA_RECOVER_MSG fixed bin (8) uns internal static options (constant) init (7); 13 90 dcl DSA_RECOVER_ACK_MSG fixed bin (8) uns internal static options (constant) init (8); 13 91 dcl DSA_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (9); 13 92 dcl DSA_RESUME_MSG fixed bin (8) uns internal static options (constant) init (10); 13 93 dcl DSA_RESUME_ACK_MSG fixed bin (8) uns internal static options (constant) init (11); 13 94 dcl DSA_SUSPEND_MSG fixed bin (8) uns internal static options (constant) init (12); 13 95 dcl DSA_SUSPEND_ACK_MSG fixed bin (8) uns internal static options (constant) init (13); 13 96 dcl DSA_TERM_ABNORMAL_MSG fixed bin (8) uns internal static options (constant) init (14); 13 97 dcl DSA_ESTABLISHMENT_MSG fixed bin (8) uns internal static options (constant) init (15); 13 98 dcl DSA_TERMINATED_MSG fixed bin (8) uns internal static options (constant) init (16); 13 99 dcl DSA_USER_UNASSIGN_MSG fixed bin (8) uns internal static options (constant) init (17); 13 100 dcl DSA_DATA_INPUT_MSG fixed bin (8) uns internal static options (constant) init (18); 13 101 dcl DSA_DATA_OUTPUT_MSG fixed bin (8) uns internal static options (constant) init (19); 13 102 13 103 dcl DSA_MSG_TYPE_TO_PNAME (0:19) char (20) internal static options (constant) init ("unspecified", 13 104 /* 0 */ 13 105 "attention", /* 1 */ 13 106 "data_attention", /* 2 */ 13 107 "demand_release_sru", /* 3 */ 13 108 "demand_turn", /* 4 */ 13 109 "demand_turn_ack", /* 5 */ 13 110 "purge", /* 6 */ 13 111 "recover", /* 7 */ 13 112 "recover_ack", /* 8 */ 13 113 "release_sru", /* 9 */ 13 114 "resume", /* 10 */ 13 115 "resume_ack", /* 11 */ 13 116 "suspend", /* 12 */ 13 117 "suspend_ack", /* 13 */ 13 118 "terminate_abnormal", /* 14 */ 13 119 "establishment", /* 15 */ 13 120 "terminated", /* 16 */ 13 121 "user_unassign", /* 17 */ 13 122 "data input", /* 18 */ 13 123 "data output"); /* 19 */ 13 124 13 125 /* END INCLUDE FILE ... net_event_message.incl.pl1 */ 3587 3588 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 14 2 14 3 /* Modified 740723 by PG to add short AIM access names */ 14 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 14 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 14 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 14 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 14 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 14 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 14 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 14 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 14 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 14 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 14 14* strict_trusted_path. */ 14 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 14 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 14 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 14 18 14 19 14 20 /****^ HISTORY COMMENTS: 14 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 14 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 14 23* added vchn_requires_accept parameter. 14 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 14 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 14 26* Correct formatting problems. 14 27* END HISTORY COMMENTS */ 14 28 14 29 14 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 14 31 14 32 14 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 14 34 2 part_1 like installation_parms_part_1 aligned, 14 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 14 36 14 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 14 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 14 39 14 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 14 41 2 installation_id char (32), /* Name printed at dialup and in who */ 14 42 2 company char (64), /* company name */ 14 43 2 department char (64), /* department */ 14 44 2 companyds char (120), /* company, double spaced */ 14 45 2 departmentds char (120), /* dpeartment double spaced */ 14 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 14 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 14 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 14 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 14 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 14 51 2 ndevices fixed bin, /* number of devices to charge */ 14 52 2 devtab (16), /* Maximum 16 */ 14 53 3 device_id char (8), /* Name of device */ 14 54 3 device_price (0: 7) float bin, /* Price by shift */ 14 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 14 56 2 warning_time fixed bin, /* seconds from warning to logout */ 14 57 2 login_time fixed bin, /* seconds in which to complete login */ 14 58 2 acct_update fixed bin, /* seconds between acct update */ 14 59 2 login_tries fixed bin, /* number of login tries allowed */ 14 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 14 61 2 registration_price float bin, /* fee per month per user */ 14 62 2 dolsign char (1), /* "dollar sign" */ 14 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 14 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 14 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 14 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 14 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 14 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 14 69* Initializer will copy the syserr_log */ 14 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 14 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 14 72 2 fatal_error_loop_count fixed bin (17) unaligned, 14 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 14 74 2 term_real_time_seconds fixed bin (17) unaligned, 14 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 14 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 14 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 14 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 14 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 14 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 14 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 14 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 14 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 14 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 14 85 2 level_names (0:7) char (32), /* Names for security levels. */ 14 86 2 category_names (18) char (32), /* Names for security categories. */ 14 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 14 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 14 89 2 ncon fixed bin, /* Number of config elements. */ 14 90 2 cona (51), /* each entry is 5 words long */ 14 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 14 92 3 shift fixed bin (5) unal, /* Shift number */ 14 93 3 x1 fixed bin (23) unal, 14 94 3 kmem fixed bin (17) unal, /* Memory size */ 14 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 14 96 3 x2 fixed bin (17) unal, 14 97 3 maxa fixed bin (11) unal, /* Max abs users */ 14 98 3 maxq fixed bin (5) unal, /* Max abs q */ 14 99 3 maxu_base fixed bin (17) unal, 14 100 3 response_high fixed bin (17) unal, 14 101 3 response_low fixed bin (17) unal, 14 102 3 x3 fixed bin (17) unal, 14 103 14 104 /* Absentee control parameters. New for MR7.0 */ 14 105 14 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 14 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 14 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 14 109 14 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 14 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 14 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 14 113 14 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 14 115 14 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 14 117 14 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 14 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 14 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 14 121 2 version fixed bin (35), /* must be 2 */ 14 122 2 nrates fixed bin, /* number of rate structures */ 14 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 14 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 14 125 2 require_operator_login bit (1) aligned, /* just what it says */ 14 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 14 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 14 128* mcacs segments for operators */ 14 129 2 password_min_length fixed bin, /* minimum length of passwords */ 14 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 14 131 2 password_change_interval fixed bin, /* number of days until must change */ 14 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 14 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 14 134* "accepted" by operator if personid is not 14 135* signed on system console */ 14 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 14 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 14 138* or someone miscounted when using part of pad2 */ 14 139 14 140 14 141 /* Entries in the following array may be accessed via system_info_$resource_price. 14 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 14 143 14 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 14 145 2 name char (32), 14 146 2 price float bin; 14 147 15 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 15 2 15 3 /* Created on 04/24/78 by Michael R. Jordan */ 15 4 /* Modified 04/10/79 by C. D. Tavares */ 15 5 15 6 dcl rifp ptr; 15 7 15 8 dcl 1 rcp_init_flags based (rifp), 15 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 15 10 2 pad1 bit (2) unaligned, /* obsolete */ 15 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 15 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 15 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 15 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 15 15 15 16 dcl (No_authentication initial (0), 15 17 Nominal_authentication initial (1), 15 18 Automatic_authentication initial (2), 15 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 15 20 15 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 15 22 ("none", "nominal", "automatic", "manual"); 15 23 15 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 14 148 14 149 14 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 3588 3589 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 16 2 16 3 /* Written November 10 1975 by Paul Green */ 16 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 16 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 16 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 16 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 16 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 16 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 16 10 16 11 16 12 /****^ HISTORY COMMENTS: 16 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 16 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 16 15* Add a DSA line type. 16 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 16 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 16 18* Add HASP_OPR to identify HASP workstation consoles with login service. 16 19* END HISTORY COMMENTS */ 16 20 16 21 16 22 declare (LINE_MC initial (-2), 16 23 LINE_TELNET initial (-1), 16 24 LINE_UNKNOWN initial (0), 16 25 LINE_ASCII initial (1), 16 26 LINE_1050 initial (2), 16 27 LINE_2741 initial (3), 16 28 LINE_ARDS initial (4), 16 29 LINE_SYNCH initial (5), 16 30 LINE_G115 initial (6), 16 31 LINE_BSC initial (7), 16 32 LINE_ETX initial (8), 16 33 LINE_VIP initial (9), 16 34 LINE_ASYNC1 initial (10), 16 35 LINE_ASYNC2 initial (11), 16 36 LINE_ASYNC3 initial (12), 16 37 LINE_SYNC1 initial (13), 16 38 LINE_SYNC2 initial (14), 16 39 LINE_SYNC3 initial (15), 16 40 LINE_POLLED_VIP initial (16), 16 41 LINE_X25LAP initial (17), 16 42 LINE_HDLC initial (18), 16 43 LINE_COLTS initial (19), 16 44 LINE_DSA initial (20), 16 45 LINE_HASP_OPR initial (21) 16 46 ) fixed bin internal static options (constant); 16 47 16 48 dcl max_line_type fixed bin int static options (constant) init (21); 16 49 16 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 16 51 16 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 16 53 16 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 16 55 "MC", /* -2 */ 16 56 "TELNET", /* -1 */ 16 57 "none", /* 0 */ 16 58 "ASCII", /* 1 */ 16 59 "1050", /* 2 */ 16 60 "2741", /* 3 */ 16 61 "ARDS", /* 4 */ 16 62 "Sync", /* 5 */ 16 63 "G115", /* 6 */ 16 64 "BSC", /* 7 */ 16 65 "202ETX", /* 8 */ 16 66 "VIP", /* 9 */ 16 67 "ASYNC1", /* 10 */ 16 68 "ASYNC2", /* 11 */ 16 69 "ASYNC3", /* 12 */ 16 70 "SYNC1", /* 13 */ 16 71 "SYNC2", /* 14 */ 16 72 "SYNC3", /* 15 */ 16 73 "POLLED_VIP", /* 16 */ 16 74 "X25LAP", /* 17 */ 16 75 "HDLC", /* 18 */ 16 76 "COLTS", /* 19 */ 16 77 "DSA", /* 20 */ 16 78 "HASP_OPR"); /* 21 */ 16 79 16 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 3589 3590 /* BEGIN INCLUDE FILE ... pdt.incl.pl1 */ 17 2 /* Requires user_attributes.incl.pl1 */ 17 3 17 4 /* Modified 740723 by PG to add AIM info */ 17 5 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 17 6 /* Modified May 1976 by T. Casey to add cutoff warning thresholds and change version to 3 */ 17 7 /* Modified May 1977 by John Gintell to add reqfile, projfile, and SAT to header */ 17 8 /* Modified May 1978 by T. Casey to add pdir_quota to user entry */ 17 9 /* Modified June 1978 by T. Casey to add rel ptr to pdt hash table */ 17 10 /* Modified November 1978 by T. Casey to add max_(fore back)ground, n_(fore back)ground and abs_foreground_cpu_limit */ 17 11 /* Modified October 1979 by T. Casey to add counters for interactive and disconnected processes. */ 17 12 /* Modified Feb 1980 by M. B. Armstrong to implement multiple rate structures (UNCA). */ 17 13 /* Modified May 1980 by R. McDonald to use iod cpu time field for page charging (UNCA) */ 17 14 /* Modified December 1981 by E. N. Kittlitz for user_warn fields */ 17 15 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 17 16 /* Modified September 1982 by E. N. Kittlitz for default ring. */ 17 17 /* Modified 1984-07-05 BIM for min authorization, version to 4 */ 17 18 17 19 dcl (PDT_version init (4), /* version of this declaration */ 17 20 PDT_header_lth init (256), /* length in words of PDT head */ 17 21 PDT_entry_lth init (256), /* length in words of PDT entry */ 17 22 17 23 PDT_project_name_length init (9), /* proper length of pdt.project_name */ 17 24 PDT_person_id_length init (22) /* proper length of user.person_id */ 17 25 ) fixed bin internal static options (constant); 17 26 17 27 dcl 1 pdt based (pdtp) aligned, 17 28 18 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 18 2 18 3 /* the "author" items must always be the first ones in the table. The 18 4* module which moves the converted table to the System Control process 18 5* fills in these data items and assumes them to be at the head of the segment 18 6* regardless of the specific table's actual declaration. The variables 18 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 18 8* respectively. For tables installed in multiple processes, these 18 9* are to be used to lock out multiple installations. */ 18 10 18 11 /* Lock should be used as a modification lock. Since, in general, 18 12* entries may not be moved in system tables, even by installations, 18 13* it is sufficient for only installers and programs that change threads 18 14* to set or respect the lock. Simply updating data in an entry 18 15* requires no such protection. 18 16* 18 17* Last_install_time is used by readers of system tables to detect 18 18* installations or other serious modifications. By checking it before 18 19* and after copying a block of data, they can be protected against 18 20* modifications. 18 21* 18 22* Modules that set the lock should save proc_group_id, and then 18 23* put their group id there for the time they hold the lock. 18 24* if they do not actually install the, they should restore the group id. 18 25**/ 18 26 18 27 2 author aligned, /* validation data about table's author */ 18 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 18 29 3 lock bit (36), /* installation lock */ 18 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 18 31 3 update_authorization bit (1) unal, /* update only authorizations */ 18 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 18 33 3 pad bit (33) unaligned, 18 34 3 last_install_time fixed bin (71), 18 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 18 36 3 w_dir char (64), /* author's working directory */ 18 37 18 38 /* END INCLUDE FILE author.incl.pl1 */ 17 29 17 30 2 max_size fixed bin, /* max number of entries table can grow */ 17 31 2 current_size fixed bin, /* current size of table (in entries) */ 17 32 2 version fixed bin, /* table version */ 17 33 2 freep fixed bin, /* relptr to begin of free chain */ 17 34 2 n_users fixed bin, /* number of entries actually used */ 17 35 2 project_name char (28), /* name of project */ 17 36 2 project_dir char (64), /* treename of project's directory */ 17 37 2 projfile_version fixed bin, 17 38 2 projentry bit (66*36), 17 39 2 pad3 (5) bit (36) aligned, 17 40 2 reqfile_version fixed bin, 17 41 2 reqentry bit (40*36), 17 42 2 pad4 (9) fixed bin, 17 43 2 sat_version fixed bin, 17 44 2 satentry bit (52*36), /* everything in sat.project from project.at on */ 17 45 2 pad5 (4) bit (36) aligned, 17 46 2 date_reqfile_copied fixed bin (71), 17 47 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number, easier than looking in satentry */ 17 48 2 pad2l bit (27) unaligned, 17 49 2 pad2 (16) fixed bin, /* make header 256 words long */ 17 50 2 ht_relp fixed bin (18) aligned, /* if nonzero, pdt has hash table at that loc */ 17 51 2 user (1019) aligned, /* the project definition table entries */ 17 52 3 pad (256) bit (36) aligned; /* each entry is 256 words long */ 17 53 17 54 /* The hash table, if there is one, is right after the last user, and is described in hashst.incl.pl1 */ 17 55 17 56 17 57 17 58 dcl 1 user based (pdtep) aligned, /* declaration of a single PDT entry */ 17 59 2 state fixed bin, /* 1 = normal, 2 = deleted 0 = free */ 17 60 2 lock bit (36), /* update lock */ 17 61 2 person_id char (24) aligned, /* login name of user */ 17 62 2 now_in fixed bin, /* count of users logged in on this entry */ 17 63 2 password char (8) aligned, /* password for anonymous user */ 17 64 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 17 65 2 initial_procedure char (64) aligned, /* initproc and subsystem name packed into one string */ 17 66 2 home_dir char (64) aligned, /* user's default working directory */ 17 67 2 bump_grace fixed bin, /* number of minutes he is protected */ 17 68 2 high_ring fixed bin, /* highest ring user may use */ 17 69 2 default_ring fixed bin (17) unal, /* ring user will start in */ 17 70 2 low_ring fixed bin (17) unal, /* lowest ring user may use */ 17 71 2 outer_module char (32), /* outer module used if user is interactive */ 17 72 2 lot_size fixed bin, /* size of linkage offset table */ 17 73 2 kst_size fixed bin, /* size of known segment table */ 17 74 2 cls_size fixed bin, /* size of combined linkage */ 17 75 2 uflags, /* various flags */ 17 76 3 dont_call_init_admin bit (1) unal, /* call overseer direct */ 17 77 3 ip_given bit (1) unal, /* ip_len gives length of initproc packed in initial_procedure */ 17 78 3 ss_given bit (1) unal, /* subsystem name is packed in initial_procedure */ 17 79 3 flagpad bit (33) unal, 17 80 2 ip_len fixed bin (17) unal, /* length of initproc name packed in initial_procedure */ 17 81 2 ss_len fixed bin (17) unal, /* length of subsystem name packed in initial_procedure */ 17 82 2 dollar_limit float bin, 17 83 2 dollar_charge float bin, /* total dollars spent this month */ 17 84 2 shift_limit (0: 7) float bin, 17 85 2 daton fixed bin (71), /* date user added to system */ 17 86 2 datof fixed bin (71), /* date user deleted */ 17 87 2 last_login_time fixed bin (71), /* time of last login */ 17 88 2 last_login_unit char (4), /* terminal id last used */ 17 89 2 last_login_type fixed bin (17) unal, /* terminal type */ 17 90 2 last_login_line_type fixed bin (17) unal, /* terminal line type */ 17 91 2 time_last_bump fixed bin (71), /* for bump-wait */ 17 92 2 last_update fixed bin (71), /* time of last transaction */ 17 93 2 logins fixed bin, /* number of logins */ 17 94 2 crashes fixed bin, /* sessions abnormally terminated */ 17 95 2 interactive (0: 7), /* interactive use, shifts 0-7 */ 17 96 3 charge float bin, /* total dollar charge this shift */ 17 97 3 xxx fixed bin, 17 98 3 cpu fixed bin (71), /* cpu usage in microseconds */ 17 99 3 core fixed bin (71), /* core demand in page-microseconds */ 17 100 3 connect fixed bin (71), /* total console time in microseconds */ 17 101 3 io_ops fixed bin (71), /* total i/o ops on terminal */ 17 102 2 absentee (4), /* absentee use, queues 1-4 */ 17 103 3 charge float bin, /* dollar charge this queue */ 17 104 3 jobs fixed bin, /* number of jobs submitted */ 17 105 3 cpu fixed bin (71), /* total cpu time in microseconds */ 17 106 3 memory fixed bin (71), /* total memory demand */ 17 107 2 iod (4), /* io daemon use, queues 1-4 */ 17 108 3 charge float bin, /* dollar charge this queue */ 17 109 3 pieces fixed bin, /* pieces of output requested */ 17 110 3 pad fixed bin (35), 17 111 3 pages fixed bin (35), /* number of pages output */ 17 112 3 lines fixed bin (71), /* total record count of output */ 17 113 2 devices (16) float bin, /* device charges */ 17 114 2 time_last_reset fixed bin (71), /* time PDT last updated */ 17 115 2 absolute_limit float bin, /* Limit, not reset monthly */ 17 116 2 absolute_spent float bin, /* Spending against this */ 17 117 2 absolute_cutoff fixed bin (71), /* Spending will be reset on this date */ 17 118 2 absolute_increm fixed bin, /* .. time increment code. 0 = don't reset */ 17 119 2 pad_was_authorization bit (72) aligned, 17 120 2 group char (8), /* group for this user (if at.igroup = "1"b) */ 17 121 2 warn_days fixed bin (17) unaligned, /* warn user if less than this many days to cutoff */ 17 122 2 warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of funds left */ 17 123 2 warn_dollars float bin, /* warn user if less than this amount of funds left */ 17 124 2 n_foreground fixed bin (9) unsigned unaligned, /* number of foreground and background processes */ 17 125 2 n_background fixed bin (9) unsigned unaligned, /* that this user has. see limits just below */ 17 126 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and */ 17 127 2 max_background fixed bin (9) unsigned unaligned, /* background processes that this user can have */ 17 128 2 n_interactive fixed bin (9) unsigned unaligned, /* number of interactive processes that user has */ 17 129 2 n_disconnected fixed bin (9) unsigned unaligned, /* number of disconnected processes that user has */ 17 130 2 pdtupad1 fixed bin (18) unsigned unaligned, 17 131 2 user_warn_days fixed bin (17) unaligned, /* warn user if less than this many days to user cutoff */ 17 132 2 user_warn_pct fixed bin (17) unaligned, /* warn user if less than this percent of user funds left */ 17 133 2 user_warn_dollars float bin, /* warn user if less than this amount of user funds left */ 17 134 2 user_authorization (2) bit (72) aligned, /* range */ 17 135 2 pdtupad (5) fixed bin, 17 136 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit (sec) on foreground absentee jobs */ 17 137 2 pdir_quota fixed bin (17) unaligned, /* quota to put on user's pdir (0 => use default) */ 17 138 2 chain fixed bin; /* free chain */ 17 139 17 140 /* END INCLUDE FILE ... pdt.incl.pl1 */ 3590 3591 /* BEGIN: sc_stat_.incl.pl1 * * * * * */ 19 2 19 3 19 4 /****^ HISTORY COMMENTS: 19 5* 1) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 19 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 19 7* Add sc_stat_$vchn_requires_accept in support of DSA virtual channels. 19 8* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7680), 19 9* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 19 10* Reorganized by type of data to improve readability. 19 11* END HISTORY COMMENTS */ 19 12 19 13 19 14 /* ACCESS NAMES */ 19 15 dcl ( 19 16 sc_stat_$exec_access_name, /* check MC access in an exec request */ 19 17 sc_stat_$unidentified_access_name /* check access if no one is logged in. */ 19 18 ) char(32) ext static; 19 19 19 20 /* PATHNAMES */ 19 21 dcl ( 19 22 sc_stat_$info_dir, /* admin info segs directory */ 19 23 sc_stat_$log_dir, /* as log segs directory */ 19 24 sc_stat_$mc_acs_dir, /* message coordinator ACS segments (.mcacs) dir */ 19 25 sc_stat_$sysdir /* system control directory */ 19 26 ) char(168) ext static; 19 27 19 28 /* OTHER CHAR STRINGS */ 19 29 dcl ( 19 30 sc_stat_$master_channel /* Master TTY channel. */ 19 31 ) char(6) aligned ext static; 19 32 19 33 /* LABELS */ 19 34 dcl ( 19 35 sc_stat_$admin_listener_exit_label, /* GO here to exit admin mode. Set to */ 19 36 /* ssu_$null_label unless */ 19 37 /* admin_listener is active. */ 19 38 sc_stat_$master_abort_label, /* GO here after fault that is not */ 19 39 /* attributable to a particular */ 19 40 /* command. */ 19 41 sc_stat_$system_shutdown_label /* GO here to shut down system */ 19 42 ) label variable ext static; 19 43 19 44 /* POINTERS TO */ 19 45 dcl ( 19 46 sc_stat_$admin_log_iocb, /* IOCB for admin log */ 19 47 sc_stat_$admin_log_write_ptr, /* DATA for log_write_ calls on the admin log */ 19 48 sc_stat_$admin_sci_ptr, /* DATA ssu_ for terminal currently executing */ 19 49 sc_stat_$as_log_write_ptr, /* DATA for log_write_ calls on as log, used */ 19 50 /* by sys_log_. */ 19 51 sc_stat_$initzer_ttyp, /* ENT mc_ate for initializer terminal */ 19 52 sc_stat_$master_iocb, /* IOCB for "master_i/o" */ 19 53 sc_stat_$master_sci_ptr, /* DATA ssu_ (permanent) for system control */ 19 54 sc_stat_$mc_ansp, /* HEAD of mc_anstbl */ 19 55 sc_stat_$mc_iocb, /* IOCB ptr for "mc_i/o" */ 19 56 sc_stat_$sv1_iocb, /* IOCB ptr for "severity1" */ 19 57 sc_stat_$sv2_iocb, /* IOCB ptr for "severity2" */ 19 58 sc_stat_$sv3_iocb /* IOCB ptr for "severity3" */ 19 59 ) ptr ext static; 19 60 19 61 /* SWITCHES */ 19 62 dcl ( 19 63 sc_stat_$Go, /* TRUE after answering service is listening*/ 19 64 sc_stat_$Go_typed, /* TRUE immediately after 'go' is typed */ 19 65 sc_stat_$Multics, /* TRUE after answering service started */ 19 66 sc_stat_$Multics_typed, /* TRUE immediately after 'mult' is typed */ 19 67 sc_stat_$Star_typed, /* TRUE if 'mult' and 'go' came from 'star' */ 19 68 sc_stat_$admin_listener_switch, /* TRUE if in the admin listener */ 19 69 sc_stat_$did_part1, /* TRUE if part 1 of system startup ec done */ 19 70 sc_stat_$did_part2, /* TRUE if part 2 of system startup ec done */ 19 71 sc_stat_$did_part3, /* TRUE if part 3 of system startup ec done */ 19 72 sc_stat_$mc_is_on, /* TRUE if message coordinator running */ 19 73 sc_stat_$no_operator_login, /* TRUE if operator login not required, or */ 19 74 /* if PNT not yet available. */ 19 75 sc_stat_$shutdown_typed, /* TRUE if 'shutdown' command in progress. */ 19 76 sc_stat_$test_mode, /* TRUE if in test environment */ 19 77 sc_stat_$vchn_requires_accept /* TRUE if vchn may only be used if accepted*/ 19 78 /* by operator signed on system console*/ 19 79 ) bit(1) aligned ext static; 19 80 19 81 19 82 /* END OF: sc_stat_.incl.pl1 * * * * * */ 3591 3592 /* BEGIN send_mail_info include file */ 20 2 20 3 dcl send_mail_info_version_2 fixed bin init(2); 20 4 20 5 dcl 1 send_mail_info aligned, 20 6 2 version fixed bin, /* = 2 */ 20 7 2 sent_from char(32) aligned, 20 8 2 switches, 20 9 3 wakeup bit(1) unal, 20 10 3 mbz1 bit(1) unal, 20 11 3 always_add bit(1) unal, 20 12 3 never_add bit(1) unal, 20 13 3 notify bit(1) unal, 20 14 3 acknowledge bit(1) unal, 20 15 3 mbz bit(30) unal; 20 16 20 17 /* END send_mail_info include file */ 3592 3593 /* BEGIN INCLUDE FILE ... set_term_type_info.incl.pl1 */ 21 2 /* Created 7/18/77 by Robert Coren */ 21 3 /* Defines info structure for set_term_type order */ 21 4 21 5 dcl stti_version_1 fixed bin int static options (constant) init (1); 21 6 dcl sttip ptr; 21 7 21 8 dcl 1 set_term_type_info aligned based (sttip), 21 9 2 version fixed bin, 21 10 2 name char (32) unal, 21 11 2 flags unal, 21 12 3 send_initial_string bit (1), 21 13 3 set_modes bit (1), 21 14 3 ignore_line_type bit (1), 21 15 3 mbz bit (33); 21 16 21 17 /* END INCLUDE FILE ... set_term_type_info.incl.pl1 */ 3593 3594 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 22 2 22 3 22 4 /****^ HISTORY COMMENTS: 22 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 22 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 22 7* Added sl_info structure and associated named constants for use in calling 22 8* sys_log_$general. 22 9* END HISTORY COMMENTS */ 22 10 22 11 22 12 /* format: style4 */ 22 13 22 14 dcl ( 22 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 22 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 22 17 SL_TYPE init (-1), /* type message */ 22 18 SL_LOG_SILENT init (0), /* log message */ 22 19 SL_LOG init (1), /* log & type message */ 22 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 22 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 22 22 ) fixed bin internal static options (constant); 22 23 22 24 dcl 1 sl_info aligned automatic, 22 25 2 version char(8), /* structure version */ 22 26 2 arg_list_ptr ptr, /* arg_list with values */ 22 27 2 loc, 22 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 22 29 /* These flags control where the corresponding data item is found.*/ 22 30 /* -1: data appears in the corresponding structure element below */ 22 31 /* 0: data is not present anywhere */ 22 32 /* +N: data is Nth item in argument list pointed to by */ 22 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 22 34 /* corresponding structure element. */ 22 35 /* if data = +N: */ 22 36 /* argN is data_ptr, argN+1 is data_len */ 22 37 /* if ioa_msg = +N: */ 22 38 /* argN+1, ... argLAST are arguments substituted into the */ 22 39 /* ioa_msg control string. The formatted msg is returned. */ 22 40 2 flags, 22 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 22 42 3 flags_pad bit(35) unal, 22 43 2 mode fixed bin, /* as-mode, command-mode */ 22 44 2 severity fixed bin, /* error severity */ 22 45 2 code fixed bin(35), /* error table code */ 22 46 2 caller char(65) varying, /* caller refname$entryname*/ 22 47 2 data, /* binary data ptr/length */ 22 48 3 data_ptr ptr, 22 49 3 data_lth fixed bin(21), 22 50 2 class char(10) varying, /* binary data class */ 22 51 2 ioa_msg char(500) varying; /* formatted message text */ 22 52 22 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 22 54 /* */ 22 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 22 56 /* their data types should be as shown in the structure above, except that */ 22 57 /* character strings should be char(*) nonvarying. */ 22 58 /* */ 22 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 22 60 22 61 /* value for sl_info.version */ 22 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 22 63 22 64 /* values for sl_info.mode */ 22 65 dcl (SL_INFO_as_mode init(1), 22 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 22 67 22 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 22 69 dcl (SL_INFO_arg_given_in_structure init(-1), 22 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 22 71 22 72 22 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 22 74 /* */ 22 75 /* The following static structures are commonly used in the Login Server */ 22 76 /* user control software. */ 22 77 /* */ 22 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 22 79 22 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 22 81 22 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 22 83 2 version char(8) init ("sl_info1"), 22 84 2 arg_list_ptr ptr init (null), 22 85 2 loc, 22 86 3 (mode init (-1), 22 87 severity init ( 1), 22 88 code init ( 2), 22 89 caller init (-1), 22 90 data init ( 0), 22 91 class init ( 0), 22 92 ioa_msg init ( 3)) fixed bin, 22 93 2 flags, 22 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 22 95 3 flags_pad bit(35) unal init ("0"b), 22 96 2 mode fixed bin init ( 1), 22 97 2 severity fixed bin init ( 0), 22 98 2 code fixed bin(35) init ( 0), 22 99 2 caller char(65) varying init (""), 22 100 2 data, 22 101 3 data_ptr ptr init (null), 22 102 3 data_lth fixed bin(21) init ( 0), 22 103 2 class char(10) varying init (""), 22 104 2 ioa_msg char(500) varying init (""); 22 105 22 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 22 107 22 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 22 109 2 version char(8) init ("sl_info1"), 22 110 2 arg_list_ptr ptr init (null), 22 111 2 loc, 22 112 3 (mode init (-1), 22 113 severity init ( 1), 22 114 code init ( 0), 22 115 caller init (-1), 22 116 data init ( 0), 22 117 class init ( 0), 22 118 ioa_msg init ( 2)) fixed bin, 22 119 2 flags, 22 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 22 121 3 flags_pad bit(35) unal init ("0"b), 22 122 2 mode fixed bin init ( 1), 22 123 2 severity fixed bin init ( 0), 22 124 2 code fixed bin(35) init ( 0), 22 125 2 caller char(65) varying init (""), 22 126 2 data, 22 127 3 data_ptr ptr init (null), 22 128 3 data_lth fixed bin(21) init ( 0), 22 129 2 class char(10) varying init (""), 22 130 2 ioa_msg char(500) varying init (""); 22 131 22 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 22 133 22 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 22 135 2 version char(8) init ("sl_info1"), 22 136 2 arg_list_ptr ptr init (null), 22 137 2 loc, 22 138 3 (mode init (-1), 22 139 severity init ( 1), 22 140 code init ( 0), 22 141 caller init (-1), 22 142 data init ( 0), 22 143 class init ( 0), 22 144 ioa_msg init ( 2)) fixed bin, 22 145 2 flags, 22 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 22 147 3 flags_pad bit(35) unal init ("0"b), 22 148 2 mode fixed bin init ( 1), 22 149 2 severity fixed bin init ( 0), 22 150 2 code fixed bin(35) init ( 0), 22 151 2 caller char(65) varying init (""), 22 152 2 data, 22 153 3 data_ptr ptr init (null), 22 154 3 data_lth fixed bin(21) init ( 0), 22 155 2 class char(10) varying init (""), 22 156 2 ioa_msg char(500) varying init (""); 22 157 22 158 22 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 22 160 22 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 22 162 2 version char(8) init ("sl_info1"), 22 163 2 arg_list_ptr ptr init (null), 22 164 2 loc, 22 165 3 (mode init (-1), 22 166 severity init ( 1), 22 167 code init ( 2), 22 168 caller init (-1), 22 169 data init ( 0), 22 170 class init ( 0), 22 171 ioa_msg init ( 4)) fixed bin, 22 172 2 flags, 22 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 22 174 3 flags_pad bit(35) unal init ("0"b), 22 175 2 mode fixed bin init ( 1), 22 176 2 severity fixed bin init ( 0), 22 177 2 code fixed bin(35) init ( 0), 22 178 2 caller char(65) varying init (""), 22 179 2 data, 22 180 3 data_ptr ptr init (null), 22 181 3 data_lth fixed bin(21) init ( 0), 22 182 2 class char(10) varying init (""), 22 183 2 ioa_msg char(500) varying init (""); 22 184 22 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 22 186 22 187 dcl 1 sl_info_code_msg aligned int static options(constant), 22 188 2 version char(8) init ("sl_info1"), 22 189 2 arg_list_ptr ptr init (null), 22 190 2 loc, 22 191 3 (mode init (-1), 22 192 severity init (-1), 22 193 code init ( 1), 22 194 caller init (-1), 22 195 data init ( 0), 22 196 class init ( 0), 22 197 ioa_msg init ( 2)) fixed bin, 22 198 2 flags, 22 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 22 200 3 flags_pad bit(35) unal init ("0"b), 22 201 2 mode fixed bin init ( 1), 22 202 2 severity fixed bin init ( 0), 22 203 2 code fixed bin(35) init ( 0), 22 204 2 caller char(65) varying init (""), 22 205 2 data, 22 206 3 data_ptr ptr init (null), 22 207 3 data_lth fixed bin(21) init ( 0), 22 208 2 class char(10) varying init (""), 22 209 2 ioa_msg char(500) varying init (""); 22 210 22 211 22 212 /* Syntax: call Trace (ioa_ctl, args); */ 22 213 22 214 dcl 1 sl_info_msg aligned int static options(constant), 22 215 2 version char(8) init ("sl_info1"), 22 216 2 arg_list_ptr ptr init (null), 22 217 2 loc, 22 218 3 (mode init (-1), 22 219 severity init (-1), 22 220 code init ( 0), 22 221 caller init (-1), 22 222 data init ( 0), 22 223 class init ( 0), 22 224 ioa_msg init ( 1)) fixed bin, 22 225 2 flags, 22 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 22 227 3 flags_pad bit(35) unal init ("0"b), 22 228 2 mode fixed bin init ( 1), 22 229 2 severity fixed bin init ( 0), 22 230 2 code fixed bin(35) init ( 0), 22 231 2 caller char(65) varying init (""), 22 232 2 data, 22 233 3 data_ptr ptr init (null), 22 234 3 data_lth fixed bin(21) init ( 0), 22 235 2 class char(10) varying init (""), 22 236 2 ioa_msg char(500) varying init (""); 22 237 22 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 3594 3595 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 23 2 23 3 /* Created 5/25/77 by J. Stern */ 23 4 23 5 23 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 23 7 2 version fixed bin, /* version number of this sturcture */ 23 8 2 id char (4) unaligned, /* terminal id from answerback */ 23 9 2 term_type char (32) unaligned, /* terminal type name */ 23 10 2 line_type fixed bin, /* line type number */ 23 11 2 baud_rate fixed bin, 23 12 2 reserved (4) fixed bin; /* reserved for future use */ 23 13 23 14 23 15 dcl terminal_info_ptr ptr; 23 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 23 17 23 18 23 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 3595 3596 /* BEGIN INCLUDE FILE...tty_access_class.incl.pl1 */ 24 2 24 3 24 4 24 5 /****^ HISTORY COMMENTS: 24 6* 1) change(85-07-29,Swenson), approve(86-08-13,MCR7512), 24 7* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 24 8* Modified to align an unaligned bit value to get around compiler's padded 24 9* reference bug. 24 10* END HISTORY COMMENTS */ 24 11 24 12 24 13 /* Defines structure used by "get_required_access_class" control order */ 24 14 24 15 /* History: 24 16* 1983-04-25, Robert Coren. 24 17**/ 24 18 24 19 dcl tty_access_class_ptr pointer; 24 20 24 21 dcl 1 tty_access_class aligned based (tty_access_class_ptr), 24 22 2 access_class bit (72), /* access class assigned to the channel */ 24 23 2 access_class_set bit (1) aligned; /* "1"b => there is an access class associated with the channel */ 24 24 24 25 /* NOTE: if access_class_set = "0"b, access_class field is meaningless */ 24 26 24 27 /* END INCLUDE FILE...tty_access_class.incl.pl1 */ 3596 3597 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 25 2 25 3 25 4 /****^ HISTORY COMMENTS: 25 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 25 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 25 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 25 8* attribute switches. 25 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 25 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 25 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 25 12* be deleted. 25 13* B) Add constants identifying attributes that can be changed by user at 25 14* login, etc. 25 15* END HISTORY COMMENTS */ 25 16 25 17 25 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 25 19 25 20 /* format: style4 */ 25 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 25 22 (2 administrator bit (1), /* 1 system administrator privileges */ 25 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 25 24 2 nobump bit (1), /* 2 user cannot be bumped */ 25 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 25 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 25 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 25 28* . of same project (distinct from "nobump") */ 25 29 2 nolist bit (1), /* 7 don't list user on "who" */ 25 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 25 31 2 multip bit (1), /* 9 user may have several processes */ 25 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 25 33 2 brief bit (1), /* 11 no login or logout message */ 25 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 25 35 2 vhomedir bit (1), /* 13 user may change homedir */ 25 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 25 37 2 sb_ok bit (1), /* 15 user may be standby */ 25 38 2 pm_ok bit (1), /* 16 user may be primary */ 25 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 25 40 2 daemon bit (1), /* 18 user may login as daemon */ 25 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 25 42 2 no_warning bit (1), /* 20 no warning message */ 25 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 25 44* . in PDT: this user has an individual load control group */ 25 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 25 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 25 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 25 48 2 pad bit (12)) unaligned; 25 49 25 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 25 51 ("none", /* 0 */ 25 52 "administrator", /* 1 */ 25 53 "primary_line", /* 2 */ 25 54 "nobump", /* 3 */ 25 55 "guaranteed_login", /* 4 */ 25 56 "anonymous", /* 5 */ 25 57 "nopreempt", /* 6 */ 25 58 "nolist", /* 7 */ 25 59 "dialok", /* 8 */ 25 60 "multip", /* 9 */ 25 61 "bumping", /* 10 */ 25 62 "brief", /* 11 */ 25 63 "vinitproc", /* 12 */ 25 64 "vhomedir", /* 13 */ 25 65 "nostartup", /* 14 */ 25 66 "no_secondary", /* 15 */ 25 67 "no_prime", /* 16 */ 25 68 "no_eo", /* 17 */ 25 69 "daemon", /* 18 */ 25 70 "", /* 19 vdim OBSOLETE */ 25 71 "no_warning", /* 20 */ 25 72 "igroup", /* 21 */ 25 73 "save_pdir", /* 22 */ 25 74 "disconnect_ok", /* 23 */ 25 75 "save_on_disconnect"); /* 24 */ 25 76 25 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 25 78 ("null", /* 0 */ 25 79 "admin", /* 1 */ 25 80 "", "", /* 2 - 3 */ 25 81 "guar", /* 4 */ 25 82 "anon", /* 5 */ 25 83 "", "", /* 6 - 7 */ 25 84 "dial", /* 8 */ 25 85 "multi_login", /* 9 */ 25 86 "preempting", /* 10 */ 25 87 "", /* 11 */ 25 88 "v_process_overseer", /* 12 */ 25 89 "v_home_dir", /* 13 */ 25 90 "no_start_up", /* 14 */ 25 91 "no_sec", /* 15 */ 25 92 "no_primary", /* 16 */ 25 93 "no_edit_only", /* 17 */ 25 94 "op_login", /* 18 */ 25 95 "", /* 19 */ 25 96 "nowarn", /* 20 */ 25 97 "", "", "", /* 21 - 23 */ 25 98 "save"); /* 24 */ 25 99 25 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 25 101 options(constant) init("000000000010000000010000000000000000"b); 25 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 25 103 25 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 25 105 options(constant) init("000000000010000000010000000000000000"b); 25 106 /* PDT value for (brief, no_warning) is default */ 25 107 25 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 25 109 options(constant) init("000100000110010000010000000000000000"b); 25 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 25 111 26 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 26 2 26 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 26 4 /* */ 26 5 /* This include file describes the attributes of an absentee job. It is */ 26 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 26 7 /* and PIT.incl.pl1. */ 26 8 /* */ 26 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 26 10 26 11 /****^ HISTORY COMMENTS: 26 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 26 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 26 14* Separated abs_attributes from the request structure 26 15* (abs_message_format.incl.pl1) so that the identical structure could be 26 16* used in the ute structure (user_table_entry.incl.pl1). 26 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 26 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 26 19* Added ABS_ATTRIBUTE_NAMES array. 26 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 26 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 26 22* Added the no_start_up flag. SCP6367 26 23* END HISTORY COMMENTS */ 26 24 26 25 dcl 1 user_abs_attributes aligned based, 26 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 26 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 26 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 26 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 26 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 26 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 26 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 26 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 26 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 26 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 26 36 2 attributes_pad bit (26) unaligned; 26 37 26 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 26 39 "restartable", 26 40 "user_deferred_until_time", 26 41 "proxy", 26 42 "set_bit_cnt", 26 43 "time_in_gmt", 26 44 "user_deferred_indefinitely", 26 45 "secondary_ok", 26 46 "truncate_absout", 26 47 "restarted", 26 48 "no_start_up"); 26 49 26 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 26 51 25 112 25 113 25 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 3597 3598 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 27 2 27 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 27 4 /* */ 27 5 /* This include file requires that the user include */ 27 6 /* user_attributes.incl.pl1 as well. It also includes */ 27 7 /* abs_attributes.incl.pl1 itself. */ 27 8 /* */ 27 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 27 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 27 11 /* */ 27 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 27 13 27 14 /****^ HISTORY COMMENTS: 27 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 27 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 27 17* This comment for hcom. 27 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 27 19* anstbl.incl.pl1, and dutbl.incl.pl1. 27 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 27 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 27 22* 84-07-12 BIM added min_process_authorization 27 23* 84-12-31 Keith Loepere added pdir_dir_quota 27 24* 85-01-16 by E. Swenson to add ute.session_uid 27 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 27 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 27 27* Added fields for DSA login server support. 27 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 27 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 27 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 27 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 27 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 27 33* Added disconnection_rel_minutes. 27 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 27 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 27 36* Changed structure under ute.abs_attributes to use like structure in 27 37* abs_attributes.incl.pl1. This allows the same attributes to be used 27 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 27 39* file. 27 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 27 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 27 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 27 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 27 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 27 45* A) Global reorganization to locate things by type of data. 27 46* B) Eliminate ute.uflags.logged_in. 27 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 27 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 27 49* A) Reduced overlength person and project fields to proper length. 27 50* B) Adjusted dialed-console section to begin on even word boundary. 27 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 27 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 27 53* Add ute.line_type. 27 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 27 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 27 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 27 57* for the storage. SCP6367 27 58* END HISTORY COMMENTS */ 27 59 27 60 /* format: style4 */ 27 61 27 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 27 63 /* */ 27 64 /* Each of the named sections below defines a type of data. Typing comes */ 27 65 /* from data associated with the ute entry itself, with the person, with */ 27 66 /* login argument data, from the main user of the data (eg, dialup_, */ 27 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 27 68 /* and is an even number of words long. The total structure is 300 decimal */ 27 69 /* words long. */ 27 70 /* */ 27 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 27 72 27 73 27 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 27 75 27 76 dcl utep pointer automatic init (null); 27 77 27 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 27 79 27 80 /* Variables which give state of this entry */ 27 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 27 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 27 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 27 84 2 next_free fixed bin, /* points to previous free entry */ 27 85 27 86 /* Information user gave about person_id associated with this entry. */ 27 87 2 person char (24) unal, /* user's name */ 27 88 2 project char (12) unal, /* project of absentee user */ 27 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 27 90 2 tag_pad bit (27) unal, 27 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 27 92 2 login_flags, /* flags for login data */ 27 93 3 cpw bit (1) unal, /* flag for wish to change password */ 27 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 27 95 3 special_pw unal, /* dial or slave */ 27 96 4 dial_pw bit (1) unal, /* true if dial -user */ 27 97 4 slave_pw bit (1) unal, /* true if slave -user */ 27 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 27 99 3 cda bit (1) unal, /* flag to change default authorization */ 27 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 27 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 27 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 27 103 3 pw_pad bit (25) unal, /* spare parts */ 27 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 27 105 /* Must remain last in pw_flags so it does not */ 27 106 /* appear in PW_FLAG_VALUES array below. */ 27 107 2 generated_pw char (8) unal, /* user must type this as new password */ 27 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 27 109 2 process_authorization bit (72), /* access_authorization of this process */ 27 110 27 111 /* Information user gave about process associated with this entry. */ 27 112 2 outer_module char (32) unal, /* Name of console dim */ 27 113 2 home_dir char (64) unal, /* initial home directory */ 27 114 2 init_proc char (64) unal, /* name of login responder */ 27 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 27 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 27 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 27 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 27 119 2 initial_ring fixed bin, /* ring process will be started in */ 27 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 27 121 2 ln_args fixed bin, /* length of string containing arguments */ 27 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 27 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 27 124 27 125 /* Most of the following information is relevant only to absentee processes */ 27 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 27 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 27 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 27 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 27 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 27 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 27 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 27 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 27 134* (but see uflags.adjust_abs_q_no). */ 27 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 27 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 27 137 2 abs_flags, 27 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 27 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 27 140 3 abs_flags_pad bit (34) unal, 27 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 27 142 2 sender char (32) unal, /* name of RJE station that job is from */ 27 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 27 144 2 proxy_project char (9) unal, 27 145 2 proxy_project_pad char (3) unal, 27 146 2 abs_pad fixed bin, 27 147 27 148 /* Information about process actually created */ 27 149 2 proc_id bit (36), /* process id of absentee process */ 27 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 27 151 2 process_authorization_range (2) bit (72) aligned, 27 152 2 audit bit (36), /* audit flags for user */ 27 153 2 lot_size fixed bin, /* Size of linkage offset table */ 27 154 2 kst_size fixed bin, /* Size of process known segment table */ 27 155 2 cls_size fixed bin, /* Size of process combined linkage */ 27 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 27 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 27 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 27 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 27 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 27 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 27 162 2 pdir_pad fixed bin(17) unal, 27 163 2 process_pad fixed bin, 27 164 27 165 /* Information about primary terminal associated with this entry */ 27 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 27 167 2 terminal_type char (32) unaligned, /* terminal type */ 27 168 2 line_type fixed bin, /* line type */ 27 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 27 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 27 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 27 172 27 173 /* Variables useful for dialed terminals */ 27 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 27 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 27 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 27 177 2 dial_server_flags, 27 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 27 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 27 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 27 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 27 182 27 183 /* Information about usage/accounting. Device usage meters are in a 27 184* separate segment, "devtab" */ 27 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 27 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 27 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 27 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 27 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 27 190 2 last_update_time fixed bin (71), /* time of last account update */ 27 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 27 192 2 ndevices fixed bin, /* Count of attached devices */ 27 193 2 device_head fixed bin, /* Table index of head of device chain */ 27 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 27 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 27 196 2 rs_number_pad bit(30) unal, 27 197 2 usage_pad fixed bin, 27 198 27 199 /* Information for dialup_ (control variables). */ 27 200 2 event fixed bin (71), /* event associated with channel or user manager */ 27 201 2 uprojp ptr, /* ptr to user project sat entry */ 27 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 27 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 27 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 27 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 27 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 27 207 2 count fixed bin, /* counter for logins and dialups */ 27 208 2 n_processes fixed bin, /* number of processes created in this session */ 27 209 2 lock_value fixed bin, /* number of locks set for this entry */ 27 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 27 211 2 login_code char (8) unal, /* login command from LOGIN line */ 27 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 27 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 27 214 2 logout_type char (4) unal, /* type of logout */ 27 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 27 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 27 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 27 218 2 work_class fixed bin, /* work class used by priority scheduler */ 27 219 2 group char (8) unal, /* party group identifier */ 27 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 27 221 27 222 2 uflags, /* Miscellaneous flags */ 27 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 27 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 27 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 27 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 27 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 27 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 27 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 27 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 27 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 27 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 27 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 27 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 27 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 27 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 27 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 27 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 27 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 27 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 27 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 27 242 3 uflags_pad bit (17) unal, 27 243 27 244 /* Information used by load_ctl_ for the process */ 27 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 27 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 27 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 27 248 27 249 27 250 /* Information for login server */ 27 251 2 login_server_info, 27 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 27 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 27 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 27 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 27 256 3 process_id bit (36) aligned, /* process_id of login server */ 27 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 27 258 27 259 /* values for ute.process_type */ 27 260 27 261 dcl (PT_INTERACTIVE initial (1), 27 262 PT_ABSENTEE initial (2), 27 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 27 264 27 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 27 266 "INVALID-TYPE", 27 267 "interactive", 27 268 "absentee", 27 269 "daemon"); 27 270 27 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 27 272 "UNKNOWN-TABLE", 27 273 "answer_table", 27 274 "absentee_user_table", 27 275 "daemon_user_table"); 27 276 27 277 27 278 /* values for ute.pw_flags.mask_ctl */ 27 279 27 280 dcl (DO_MASK init ("00"b), 27 281 DONT_MASK init ("01"b), 27 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 27 283 27 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 27 285 "do_mask", "dont_mask", "derive_mask", ""); 27 286 27 287 27 288 /* names for ute.pw_flags */ 27 289 27 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 27 291 "cpw", 27 292 "generate_pw", 27 293 "dial_pw", 27 294 "slave_pw", 27 295 "cdp", 27 296 "cda", 27 297 "auth_given", 27 298 "noprint", 27 299 "operator"); 27 300 27 301 /* names for ute.uflags */ 27 302 27 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 27 304 "dont_call_init_admin", 27 305 "ip_given", 27 306 "ss_given", 27 307 "lvs_attached", 27 308 "send_initial_string", 27 309 "adjust_abs_q_no", 27 310 "foreground_secondary_ok", 27 311 "foreground_job", 27 312 "sus_sent", 27 313 "suspended", 27 314 "ignore_cpulimit", 27 315 "deferral_logged", 27 316 "save_if_disconnected", 27 317 "disconnected", 27 318 "disconnected_list", 27 319 "proc_create_ok", 27 320 "activity_can_unbump", 27 321 "fpe_causes_logout", 27 322 "user_specified_immediate"); 27 323 27 324 /* names for ute.abs_flags */ 27 325 27 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 27 327 "abs_run", 27 328 "notify"); 27 329 27 330 /* names of ute.dial_server_flags */ 27 331 27 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 27 333 "registered", 27 334 "privileged"); 27 335 27 336 /* values of ute.login_result */ 27 337 27 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 27 339 "logged in", 27 340 "login failed, hangup", 27 341 "login failed, try again"); 27 342 27 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 3598 3599 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 28 2 28 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 4 /* */ 28 5 /* This include file declares the header shared by the answer_table, */ 28 6 /* absentee_user_table and daemon_user_table include files. */ 28 7 /* */ 28 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 9 28 10 /****^ HISTORY COMMENTS: 28 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 28 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 28 13* Initial coding. 28 14* END HISTORY COMMENTS */ 28 15 28 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 28 17 2 header_version fixed bin, /* version of the header (3) */ 28 18 2 entry_version fixed bin, /* version of user table entries */ 28 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 28 20 2 header_length fixed bin, /* length of the header */ 28 21 2 max_size fixed bin, /* max number of entries in this table */ 28 22 2 current_size fixed bin, /* actual size of table (in entries) */ 28 23 2 number_free fixed bin, /* number of free entries in the table. */ 28 24 2 first_free fixed bin, /* index of first entry in the free list. */ 28 25 2 as_procid bit (36), /* process ID of user table manager process */ 28 26 2 ut_header_pad fixed bin; 28 27 28 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 3599 3600 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 29 2 29 3 /* Modified 740723 by PG to add security info */ 29 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 29 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 29 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 29 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 29 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 29 9 29 10 dcl 1 whotab based (whoptr) aligned, 29 11 2 mxusers fixed bin, /* max. number of users on system */ 29 12 2 n_users fixed bin, /* current number of users */ 29 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 29 14 2 n_units fixed bin, /* current load */ 29 15 2 timeup fixed bin (71), /* time system was started */ 29 16 2 session char (8), /* AS state, same as anstbl.session */ 29 17 2 nextsd fixed bin (71), /* time we will shutdown */ 29 18 2 until fixed bin (71), /* projected time we start up again */ 29 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 29 20 2 erfno char (8), /* if a crash, the error number */ 29 21 2 obsolete_why char (32), /* reason for last shutdown */ 29 22 2 installation_id char (32), /* name of installation */ 29 23 2 obsolete_message char (32), /* message for all users */ 29 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 29 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 29 26 2 max_abs_users fixed bin, /* max number of absentee users */ 29 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 29 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 29 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 29 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 29 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 29 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 29 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 29 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 29 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 29 36 2 pad1 bit (9) unal, 29 37 2 pad (3) fixed bin, 29 38 2 version fixed bin, /* structure version */ 29 39 2 header_size fixed bin, /* length of header in words */ 29 40 2 entry_size fixed bin, /* length of entry in words */ 29 41 /* laste_adjust is used only by Answering Service programs */ 29 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 29 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 29 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 29 45 29 46 /* whotab header extension: The header is extended from 64 words by 29 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 29 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 29 49* present. This allows existing programs to function with old definitions of 29 50* whotab. Obviously no new header field can be more than 31 contiguous words in 29 51* length. In the Answering Service, all programs using whotab must be compiled 29 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 29 53 29 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 29 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 29 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 29 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 29 58 2 abs_control, /* see absentee_user_table */ 29 59 3 mnbz bit (1) unal, /* must not be zero */ 29 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 29 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 29 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 29 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 29 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 29 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 29 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 29 67 3 control_pad bit (23) unal, 29 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 29 69 2 installation_request_pid bit (36), /* installation process identifier */ 29 70 2 sysid char (32), /* current system name */ 29 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 29 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 29 73 2 message char (124), /* message for all users */ 29 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 29 75 2 why char (124), /* reason for last shutdown */ 29 76 2 e (1000), /* offset 240o */ 29 77 3 active fixed bin, /* nonzero means logged in */ 29 78 3 person char (28) aligned, /* person name */ 29 79 3 project char (28), /* project id */ 29 80 3 anon fixed bin, /* 1 if anonymous user */ 29 81 3 padding fixed bin (71), 29 82 3 timeon fixed bin (71), /* time of login */ 29 83 3 units fixed bin, /* load units */ 29 84 3 stby fixed bin, /* 1 if stby */ 29 85 3 idcode char (4), /* tty id code */ 29 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 29 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 29 88 3 group char (8), /* party-line group */ 29 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 29 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 29 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 29 92 3 pad2 bit (33) unal, 29 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 29 94 3 process_authorization bit (72); /* access authorization of process */ 29 95 29 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 29 97 29 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 3600 3601 3602 /* format: on */ 3603 3604 /* BEGIN MESSAGE DOCUMENTATION 3605* 3606* Message: 3607* dialup_: ERROR_MESSAGE. Trying to wakeup process after reconnection 3608* for PERSON.PROJECT.TAG 3609* 3610* S: $as0 3611* 3612* T: Called in response to a user reconnecting to an interactive process. 3613* 3614* M: A failure occurred while sending a wakeup to the process being 3615* connected to the terminal. ERROR_MESSAGE is the text associated with the 3616* error code returned by hcs_$wakeup. 3617* 3618* A: $ignore 3619* 3620* 3621* Message: 3622* dialup_: non-null atep (UTEP) for cdte (CDTEP,CHANNEL), tv=TRAVEC,inuse=INUSE 3623* 3624* S: $as0 3625* 3626* T: $run 3627* 3628* M: A wakeup occurred for CHANNEL whose user table entry pointer (UTEP) 3629* was non-null. A test on the above information determined that the state of 3630* the channel to be inconsistant. The system will null the UTEP pointer in 3631* the CDT for the above channel. 3632* 3633* A: $contact 3634* 3635* Message: 3636* dialup_: re-used cdte (CDTEP,CHANNEL) by ate UTEP, destroy_flag=DDDD 3637* 3638* S: $as0 3639* 3640* T: $run 3641* 3642* M: An ate wakeup occurred which pointed to a CDTEP that was already in 3643* use by another process. 3644* 3645* A: $inform 3646* 3647* Message: 3648* dialup_: turning on disconnected flag for ate UTEP 3649* 3650* S: $as0 3651* 3652* T: $run 3653* 3654* M: If after detecting a re-used cdte and the disconnected flag is not 3655* on, the disconnected flag will be turned on and noted by this message. 3656* 3657* A: $inform 3658* 3659* Message: 3660* dialup_: turning off disconnected flag for ate UTEP, cdte CDTEP,CHANNEL 3661* 3662* S: $as0 3663* 3664* T: $run 3665* 3666* M: If processing an ate wakeup, the CHANNEL is known and the process is 3667* disconnected, the disconnected flag for the ate will be turned off. 3668* 3669* A: $inform 3670* 3671* Message: 3672* dialup_: Program error: null atep with per-process tra_vec value 3673* 3674* S: $as2 3675* 3676* T: $run 3677* 3678* M: A system programming error in the answering service has occurred as a 3679* wakeup occurred when tra_vec indicated to expect a process termination but 3680* the ate pointer was null. 3681* 3682* A: $inform 3683* 3684* Message: 3685* dialup_: Program error: null cdtep with per-channel tra_vec value 3686* 3687* S: $as2 3688* 3689* T: $run 3690* 3691* M: A wakeup was received when the tra_vec value indicated a channel 3692* operation was required but the cdtep was null. This is considered to be a 3693* programming error. 3694* 3695* A: $inform 3696* 3697* Message: 3698* dialup_: Program error: per-process wakeup with per-channel-only tra_vec value 3699* 3700* S: $as2 3701* 3702* T: $run 3703* 3704* M: A process wakeup occurred when the tra_vec value indicated it should 3705* be a channel wakeup. This is considered a programing error. 3706* 3707* A: $inform 3708* 3709* Message: 3710* dialup_: CDT damaged at CDTEP, tra_vec=TTTT 3711* 3712* S: $as2 3713* 3714* T: $run 3715* 3716* M: The tra_vec value was found to be invalid for a channel wakeup. 3717* Damage to the CDT is indicated. 3718* 3719* A: $inform 3720* 3721* Message: 3722* dialup_: answer table damaged at UTEP, tra_vec=TTTT 3723* 3724* S: $as2 3725* 3726* T: $run 3727* 3728* M: The tra_vec value was found to be invalid for an answer table wakeup. 3729* Damage to the answer table is indicated. 3730* 3731* A: $inform 3732* 3733* Message: 3734* dialup_: Unable to determine initial terminal type for channel CHAN 3735* 3736* S: $as2 3737* 3738* T: $run 3739* 3740* M: cdte.initial_terminal_type is not set, indicating CDT damage. 3741* Channel CHAN is removed from the system. 3742* 3743* A: $inform 3744* 3745* Message: 3746* dialup_: wrong answerback on CHANNEL (COMMENT); expected "ID1", got "ID2". 3747* 3748* S: $as2 3749* 3750* T: $run 3751* 3752* M: A terminal attempted to connect on CHANNEL (whose CDT comment is 3753* COMMENT) that is restricted to a specific answerback and did not return the 3754* expected value. ID1 is the answerback expected; ID2 is the answerback 3755* actually received. The terminal is hung up. 3756* 3757* A: $ignore 3758* 3759* Message: 3760* dialup_: ERROR_MESSAGE Unable to declare handler for ev chn EVENT_CHN for ate UTEP for CDT_CHANNEL 3761* 3762* S: $as2 3763* 3764* T: $run 3765* 3766* M: An ERROR_MESSAGE was returned when an attempt was made to declare an 3767* event call channel for new process (UTEP) on EVENT_CHN attached to 3768* CDT_CHANNEL. 3769* 3770* A: $inform 3771* 3772* Message: 3773* dialup_: program error. cdte.current_access_class_valid = "0"b at disconnected process manipulation for PERSON.PROJECT channel CHANNEL. 3774* 3775* S: $as1 3776* 3777* T: $run 3778* 3779* M: When the AIM authorization of the current process was to be checked, 3780* the cdte.current_access_class_valid flag was found to be off. It should 3781* never be at this point in the software. 3782* 3783* A: $inform_ssa 3784* 3785* Message: 3786* dialup_: program error: attempt to create process for PERSON.PROJECT CHANNEL, 3787* .brf 3788* with ate UTEP not filled in; n_disc=XX,disc_com=YY,disc_ate_ix=ZZ 3789* 3790* S: $as1 3791* 3792* T: $run 3793* 3794* M: The lg_ctl_ program is supposed to have filled in process creation 3795* variables and set ute.uflags.proc_create_ok but apparently did not. This 3796* message in the log indicates a program error. 3797* 3798* A: $inform 3799* 3800* Message: 3801* dialup_: ERROR_MESSAGE creating process for PERSON.PROJECT 3802* 3803* S: $as2 3804* 3805* T: $run 3806* 3807* M: An ERROR_MESSAGE was returned and the system was unable to create a 3808* user process for PERSON.PROJECT. 3809* 3810* A: If possible, get in touch with the user. (He got a 3811* message to contact you.) Ask him to try again and to tell 3812* you of any peculiarities of his login. Note all particulars 3813* and contact the programming staff. 3814* 3815* Message: 3816* dialup_: ERROR_MESSAGE setting new tty info for CHANNEL 3817* 3818* S: $as0 3819* 3820* T: $run 3821* 3822* M: An ERROR_MESSAGE was returned by a call to cpg_$set_pit_tty_info when 3823* setting new terminal attributes in a reconnected process on channel CHANNEL. 3824* 3825* A: $inform 3826* 3827* Message: 3828* dialup_: SLAVE CHANNEL 3829* 3830* S: $as0 3831* 3832* T: $run 3833* 3834* M: Logging message indicating that the slave command has been entered in 3835* on channel CHANNEL which does not have the "slave_dial" keyword in its 3836* check_acs statement. 3837* 3838* A: $ignore 3839* 3840* Message: 3841* dialup_: SLAVE PERSON.PROJECT CHANNEL 3842* 3843* S: $as0 3844* 3845* T: $run 3846* 3847* M: Logging message indicating that the slave command has been entered in 3848* on channel CHANNEL which does have the "slave_dial" keyword in its 3849* check_acs statement. 3850* 3851* A: $ignore 3852* 3853* Message: 3854* dialup_: process terminated PERSON.PROJECT CHANNEL TERM_MESSAGE 3855* 3856* S: $as0 3857* 3858* T: $run 3859* 3860* M: The process for PERSON.PROJECT on CHANNEL was terminated abnormally 3861* due to reason in TERM_MESSAGE. 3862* 3863* A: $ignore 3864* 3865* Message: 3866* dialup_: fatal error during process creation for PERSON.PROJECT CHANNEL 3867* 3868* S: $as1 3869* 3870* T: $run 3871* 3872* M: A fatal error occurred during process creation for PERSON.PROJECT on 3873* CHANNEL. Reason is given in previous log entry. This may be due to a user 3874* error: incorrect segments in the user's home directory or bad login 3875* arguments can cause this problem. 3876* 3877* A: $ignore 3878* 3879* Message: 3880* dialup_: terminating fatal process error loop for PERSON.PROJECT CHANNEL 3881* 3882* S: $as1 3883* 3884* T: $run 3885* 3886* M: The process for PERSON.PROJECT on CHANNEL has taken too many fatal 3887* process errors. This is governed by fatal_error_loop_seconds and 3888* fatal_error_loop_count in the installation_parms. The user will not get a 3889* new process. The channel will not be hungup but will get a message 3890* indicating this condition. This message may be due to a user error. 3891* 3892* A: $ignore 3893* 3894* Message: 3895* dialup_: Unexpected termsgnl for PERSON.PROJECT CHANNEL (preempted=DDDD). 3896* 3897* S: $as0 3898* 3899* T: $run 3900* 3901* M: A "termsgnl" wakeup was received for the PERSON.PROJECT process on 3902* CHANNEL whose ute.preempted value DDDD did not indicate one was allowed. 3903* This is considered to be a program error. User will be given a new process. 3904* 3905* A: $inform 3906* 3907* Message: 3908* dialup_: process ignored sus_ signal PERSON.PROJECT CHANNEL 3909* 3910* S: $as1 3911* 3912* T: $run 3913* 3914* M: The PERSON.PROJECT process on CHANNEL ignored the sus_ signal that 3915* had been sent to it. The user can cause this message. 3916* 3917* A: $ignore 3918* 3919* Message: 3920* dialup_: cancelling inactivity bump of PERSON.PROJECT 3921* 3922* S: $as1 3923* 3924* T: $run 3925* 3926* M: This is a logging message indicating that the PERSON.PROJECT process 3927* that had been previously bumped due to inactivity has become active. The 3928* automatic logout was therefore cancelled. The user will receive a message 3929* to this effect. 3930* 3931* A: $ignore 3932* 3933* Message: 3934* dialup_: process ignored trm_ signal PERSON.PROJECT CHANNEL 3935* 3936* S: $as1 3937* 3938* T: $run 3939* 3940* M: The PERSON.PROJECT process on CHANNEL had been sent a trm_ signal but 3941* the process did not respond to it. The process will be handled as was 3942* intended to be; bumped, logged out, etc. 3943* 3944* A: $ignore 3945* 3946* Message: 3947* dialup_: premature stopstop for PERSON.PROJECT CHANNEL 3948* 3949* S: $as0 3950* 3951* T: $run 3952* 3953* M: $err 3954* 3955* A: $inform 3956* 3957* Message: 3958* dialup_: process did not respond properly to trm_ signal. PERSON.PROJECT CHANNEL 3959* 3960* S: $as0 3961* 3962* T: $run 3963* 3964* M: The PERSON.PROJECT process on CHANNEL was being terminated and had 3965* been sent the trm_ signal but it did not respond. User process will be 3966* bumped, logged out or new_proced. It is possible that the user can cause 3967* this message. 3968* 3969* A: $ignore 3970* 3971* Message: 3972* dialup_: cdtep = null and ate.active = DDDD for UTEP 3973* 3974* S: $as2 3975* 3976* T: $run 3977* 3978* M: $err 3979* 3980* A: $inform 3981* 3982* Message: 3983* dialup_: ERROR_MESSAGE From write_status order on CHANNEL 3984* 3985* S: $as1 3986* 3987* T: $run 3988* 3989* M: This is a debugging message that will only appear if tracing has been 3990* enabled. An ERROR_MESSAGE by a call to astty_$tty_order with a 3991* "write_status" order. 3992* 3993* A: $inform 3994* 3995* Message: 3996* dialup_: cdte CDTEP (CHANNEL) state M in use N - notify system programmer", 3997* 3998* S: $as0 3999* 4000* T: $run 4001* 4002* M: $err 4003* 4004* A: $contact 4005* 4006* Message: 4007* dialup_: called with null message ptr 4008* 4009* S: $as2 4010* 4011* T: $run 4012* 4013* M: A programming error in the interprocess communication 4014* system, the network software, or the Answering Service itself 4015* has occurred. An invalid message pointer has been passed to 4016* the Answering Service. The system ignores the message and 4017* attempts to continue. This message may be the result of an incorrect 4018* library installation. 4019* 4020* A: Shut down the system and perform a bootload operation. 4021* Inform the system programming staff. 4022* 4023* Message: 4024* dialup_: called while ansp = null 4025* 4026* S: $as2 4027* 4028* T: $run 4029* 4030* M: A programming error in the Answering Service or an incorrect 4031* library installation has caused the Answering Service to be called 4032* before being initialized. The system will ignore the error and attempt 4033* to continue. 4034* 4035* A: Shut down the system and perform a bootload operation. 4036* 4037* Message: 4038* dialup_: called with bad ptr EVENT_MSG_PTR by WWWWWWWWWWWW 4039* 4040* S: $as2 4041* 4042* T: $run 4043* 4044* M: A programming error in the interprocess communication 4045* system, the network software, or the Answering Service itself has 4046* occurred. An invalid message pointer has been passed to the Answering 4047* Service. The system ignores the message and attempts to continue. 4048* This message may be the result of an incorrect library installation. 4049* 4050* A: Shut down the system and perform a bootload operation. 4051* 4052* Message: 4053* dialup_: ignored SSSS from PERSON.PROJECT for CHANNEL state=DDDD,inuse=UUUU,tv=TTTT 4054* 4055* S: $as2 4056* 4057* T: $run 4058* 4059* M: A spurious signal SSSS from user PERSON.PROJECT has arrived for 4060* CHANNEL. The state of the channel is DDD, inuse is UUUU and tra_vec is 4061* TTTT. 4062* 4063* A: This may be some user trying to disrupt the system. Do a 4064* who and save it for the programming staff. 4065* 4066* Message: 4067* dialup_: ignored SSSS for CHANNEL st=DDDD,inuse=UUUU,tv=TTTT 4068* 4069* S: $as2 4070* 4071* T: $run 4072* 4073* M: A spurious signal SSSS has arrived for CHANNEL. The state of the 4074* channel is DDD, inuse is UUUU and tra_vec is TTTT. 4075* 4076* A: This may be some user trying to disrupt the system. Notify the 4077* programming staff. 4078* 4079* Message: 4080* dialup_: channel_error called with cdte in functional state. 4081* 4082* S: $as1 4083* 4084* T: $run 4085* 4086* M: $err 4087* 4088* A: $inform 4089* 4090* Message: 4091* dialup_: program error: disconnected ate index no. CUR_IDX for PERSON.PROJECT is NEXT_IDX 4092* 4093* S: $as1 4094* 4095* T: $run 4096* 4097* M: $err 4098* 4099* A: $inform 4100* 4101* Message: 4102* dialup_: ERROR_MESSAGE attempting to allocate a user table entry for CHANNEL 4103* 4104* S: $as1 4105* 4106* T: $run 4107* 4108* M: An ERROR_MESSAGE was returned from a call to asu_$attach_ate which 4109* allocates a user table entry. 4110* 4111* A: $inform 4112* 4113* Message: 4114* dialup_: The answer table is full (MAX entries). 4115* 4116* S: $as1 4117* 4118* T: $run 4119* 4120* M: The system answer table is full and has MAX entries. No more users 4121* will be able to login. 4122* 4123* A: $inform 4124* 4125* Message: 4126* dialup_: ERROR_MESSAGE get_required_access_class order failed for CHANNEL 4127* 4128* S: $as1 4129* 4130* T: $run 4131* 4132* M: An ERROR_MESSAGE was returned by a call to astty_$tty_order with a 4133* get_required_access_class order for CHANNEL. The channel will be hungup. 4134* 4135* A: $inform_ssa 4136* 4137* Message: 4138* dialup_: ERROR_MESSAGE Getting pointer to help file, SYS_DIR>ENTRY_NAME 4139* 4140* S: $as2 4141* 4142* T: $run 4143* 4144* M: An ERROR_MESSAGE was returned when an attempt was made to find the 4145* login_help or connect_help segment in the SYS_DIR, usually >sc1. 4146* 4147* A: $inform 4148* 4149* Message: 4150* dialup_: ERROR_MESSAGE ttt error, removing channel CHANNEL COMMENT 4151* 4152* S: $as2 4153* 4154* T: $run 4155* 4156* M: An ERROR_MESSAGE resulting from accessing the TTT has caused the 4157* CHANNEL with COMMENT to be unusable when attempting to set the default 4158* terminal type based on line-type/baud-rate. The channel has been removed 4159* from known channels. 4160* 4161* A: $inform 4162* An attach of the CHANNEL can be tried. If the channel is to be left 4163* detached, busy out the modem. 4164* 4165* Message: 4166* dialup_: ERROR_MESSAGE tty_dim error, removing channel CHANNEL COMMENT 4167* 4168* S: $as2 4169* 4170* T: $run 4171* 4172* M: An ERROR_MESSAGE caused the CHANNEL to be unusable. The 4173* CHANNEL with COMMENT will be removed from service. 4174* 4175* A: You may try to attach the channel. If that fails, notify the system 4176* programmers. If the channel is to be left detached, busy out the modem. 4177* 4178* Message: 4179* dialup_: ERROR_MESSAGE when attempting to notify user PERSON.PROJECT of dialup event 4180* 4181* S: $as0 4182* 4183* T: $run 4184* 4185* M: An ERROR_MESSAGE was returned when an attempt was made to send a 4186* message to PERSON.PROJECT about a dialup event. 4187* 4188* A: $inform 4189* 4190* Message: 4191* dialup_: trace event CHANNEL FFFFFFFF WWWWWWWWWWWW RRRRRRDDDDDD SS XXXX st N wp M 4192* 4193* S: $as1 4194* 4195* T: $run 4196* 4197* M: This is trace output. When dialup_$trace_on is called, 4198* these messages are printed out for every signal concerning a device 4199* channel. FFFFFFFF is the function being performed. WWWWWWWWWWWW is 4200* the sending process ID. RRRRRR is the ring origin of the signal. 4201* DDDDDD is the device signal information. The pointer SS XXXX locates the 4202* answer table entry for CHANNEL. The channel state is N and the wait 4203* point (transaction vector) is M. 4204* 4205* A: $ignore To turn these messages 4206* off, type dialup_$trace_off while in admin mode. 4207* 4208* Message: 4209* dialup_: error - event calls were masked 4210* 4211* S: $as1 4212* 4213* T: $run 4214* 4215* M: This message indicates a serious error in the Initializer 4216* programs. The system attempts to recover and keep running. 4217* 4218* A: $inform 4219* 4220* Message: 4221* dialup_: tracing turned on. 4222* 4223* S: $as1 4224* 4225* T: $run 4226* 4227* M: The dialup_$trace_on entry point was called without arguments. All 4228* channels will be traced. 4229* 4230* A: $ignore If tracing is to be turned off, type dialup_$trace_off in 4231* admin mode. 4232* 4233* Message: 4234* dialup_: tracing turned on for channel CHANNEL. 4235* 4236* S: $as1 4237* 4238* T: $run 4239* 4240* M: The dialup_$trace_on entry point was called with an argument, the 4241* begining part of a CDT channel name; to trace all channels on FNP a, then 4242* supply "a"; to trace all channels on second hsla of FNP B, supply "b.h1". 4243* 4244* A: $ignore If tracing is to be turned off, type dialup_$trace_off in 4245* admin mode. 4246* 4247* Message: 4248* dialup_: tracing turned off. 4249* 4250* S: $as1 4251* 4252* T: $run 4253* 4254* M: The dialup_ tracing function has been turned off. 4255* 4256* A: $ignore 4257* 4258* END MESSAGE DOCUMENTATION */ 4259 4260 end dialup_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/14/90 0948.1 dialup_.pl1 >spec>install>1040>dialup_.pl1 3577 1 08/06/87 1013.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 3578 2 02/12/85 1529.5 access_audit_bin_header.incl.pl1 >ldd>include>access_audit_bin_header.incl.pl1 3579 3 08/06/87 1013.4 as_audit_structures.incl.pl1 >ldd>include>as_audit_structures.incl.pl1 3580 4 08/06/87 1013.4 as_data_.incl.pl1 >ldd>include>as_data_.incl.pl1 3581 5 08/06/87 1013.4 as_data_definitions_.incl.pl1 >ldd>include>as_data_definitions_.incl.pl1 3582 6 08/06/87 1013.4 as_meter_numbers.incl.pl1 >ldd>include>as_meter_numbers.incl.pl1 3583 7 01/21/85 1012.2 as_wakeup_priorities.incl.pl1 >ldd>include>as_wakeup_priorities.incl.pl1 3584 8 09/09/75 2107.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 8-10 9 04/21/82 1311.8 author.incl.pl1 >ldd>include>author.incl.pl1 3585 10 08/06/87 1013.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 10-314 11 07/21/88 2136.0 fnp_types.incl.pl1 >ldd>include>fnp_types.incl.pl1 3586 12 08/06/87 1013.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 3587 13 08/06/87 1013.5 net_event_message.incl.pl1 >ldd>include>net_event_message.incl.pl1 3588 14 08/06/87 1013.4 installation_parms.incl.pl1 >ldd>include>installation_parms.incl.pl1 14-148 15 11/21/79 1558.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 3589 16 08/06/87 1013.4 line_types.incl.pl1 >ldd>include>line_types.incl.pl1 3590 17 09/13/84 1021.6 pdt.incl.pl1 >ldd>include>pdt.incl.pl1 17-29 18 04/21/82 1311.8 author.incl.pl1 >ldd>include>author.incl.pl1 3591 19 08/06/87 1013.5 sc_stat_.incl.pl1 >ldd>include>sc_stat_.incl.pl1 3592 20 04/27/78 1604.4 send_mail_info.incl.pl1 >ldd>include>send_mail_info.incl.pl1 3593 21 09/01/77 1459.3 set_term_type_info.incl.pl1 >ldd>include>set_term_type_info.incl.pl1 3594 22 08/06/87 1013.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.incl.pl1 3595 23 06/29/77 1724.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 3596 24 09/18/86 1408.0 tty_access_class.incl.pl1 >ldd>include>tty_access_class.incl.pl1 3597 25 08/06/87 1013.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 25-112 26 07/14/88 2115.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 3598 27 07/14/88 2115.0 user_table_entry.incl.pl1 >ldd>include>user_table_entry.incl.pl1 3599 28 08/06/87 1013.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 3600 29 01/18/85 1053.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. ANS_SERVICE constant fixed bin(17,0) initial dcl 10-259 ref 2882 3559 AS_AUDIT_PROCESS_CONNECT 000466 constant fixed bin(17,0) initial dcl 3-162 set ref 1404* AS_AUDIT_PROCESS_DISCONNECT 000465 constant fixed bin(17,0) initial dcl 3-162 set ref 2227 2350* AS_AUDIT_PROCESS_TERMINATE 000463 constant fixed bin(17,0) initial dcl 3-162 set ref 2169* CHANNEL_DELETED 030426 constant fixed bin(17,0) initial dcl 10-288 ref 2620 2882 DERIVE_MASK constant bit(2) initial packed unaligned dcl 27-280 ref 1062 3403 DIALUP_METER 000475 constant fixed bin(17,0) initial dcl 6-20 set ref 547* 1593* DONT_MASK constant bit(2) initial packed unaligned dcl 27-280 ref 1062 1071 DO_MASK constant bit(2) initial packed unaligned dcl 27-280 ref 1069 1077 3403 INACTIVE constant fixed bin(17,0) initial dcl 10-272 ref 2622 INT_LOGIN_PRIO 000464 constant fixed bin(17,0) initial dcl 7-32 set ref 941* 1430* LINE_TELNET 030425 constant fixed bin(17,0) initial dcl 16-22 ref 3330 MCS_NETWORK_TYPE constant fixed bin(4,0) initial unsigned dcl 13-34 ref 966 1398 ME 000274 constant char(7) initial packed unaligned dcl 396 set ref 562* 575* 579* 587* 744* 755* 760* 773* 807* 879* 943* 1363* 1432* 1494* 1531* 1563* 1572* 2112* 2128* 2163* 2301* 2406* 2423* 2436* 2470* 2524* 2572* 2600* 2720* 2740* 2818* 2821* 2824* 2830* 2836* 2975* 3043* 3137* 3139* 3187* 3251* 3292* 3318* 3373* 3437* 3453* 3538* 3547* NL 000272 constant char(1) initial dcl 397 set ref 871 871 871 871 3262 3267 3267 3267 3267 3413 3413 3413 3413 NOW_DIALED constant fixed bin(17,0) initial dcl 12-76 ref 556 666 680 687 791 2359 2669 2674 2907 3563 NOW_FREE constant fixed bin(17,0) initial dcl 12-76 ref 765 NOW_HAS_PROCESS constant fixed bin(17,0) initial dcl 12-76 ref 638 1443 1545 1547 2319 2535 3049 NOW_HUNG_UP constant fixed bin(17,0) initial dcl 12-76 ref 2595 2627 2736 2742 2775 2970 NOW_LISTENING constant fixed bin(17,0) initial dcl 12-76 ref 2739 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 12-76 ref 1304 1913 1925 2450 2559 2560 2561 2567 2568 2609 2610 PREEMPT_BUMPED constant fixed bin(17,0) initial dcl 12-132 ref 2309 2419 2519 PREEMPT_TERMSGNL_RECEIVED constant fixed bin(17,0) initial dcl 12-132 ref 2297 2433 PREEMPT_TERM_SENT constant fixed bin(17,0) initial dcl 12-132 ref 1526 2092 2296 2431 2465 2492 2523 PREEMPT_UNBUMP 030425 constant fixed bin(17,0) initial dcl 12-132 ref 2292 2465 PREEMPT_UNBUMP_IGNORE_ALARM constant fixed bin(17,0) initial dcl 12-132 ref 1526 2319 2416 2467 PREEMPT_VALUES 000162 constant varying char(28) initial array dcl 12-142 set ref 2301* RANDOM 000262 constant char(32) initial dcl 399 ref 3409 SLAVE_SERVICE constant fixed bin(17,0) initial dcl 10-259 ref 1691 2882 SL_LOG 000477 constant fixed bin(17,0) initial dcl 22-14 set ref 1363* 1494* 2128* 2163* 2406* 2423* 2436* 2720* 2975* 3043* 3137* 3139* 3187* 3373* 3453* 3538* 3547* SL_LOG_BEEP 000475 constant fixed bin(17,0) initial dcl 22-14 set ref 744* 755* 760* 773* 807* 879* 943* 1432* 1531* 2572* 2818* 2821* 2824* 2830* 2834 3251* 3292* SL_LOG_SILENT 000462 constant fixed bin(17,0) initial dcl 22-14 set ref 562* 575* 579* 587* 1563* 1572* 1696* 2112* 2301* 2470* 2524* 2740* 2839 3318* STOPstop 000260 constant char(8) initial dcl 400 set ref 2474 STOPstop_msg based fixed bin(71,0) dcl 401 set ref 2474* TAG_INTERACTIVE constant char(1) initial packed unaligned dcl 12-93 ref 1287 TTY_DIALED constant fixed bin(17,0) initial dcl 12-64 ref 789 1639 2084 2338 2652 2700 2750 2849 2925 2973 3563 TTY_HUNG constant fixed bin(17,0) initial dcl 12-64 ref 2853 2865 2880 2915 TTY_MASKED 030425 constant fixed bin(17,0) initial dcl 12-64 ref 2755 2855 2882 USEC_PER_MINUTE 000256 constant fixed bin(35,0) initial dcl 402 ref 2330 UTE_SIZE constant fixed bin(17,0) initial dcl 1-120 ref 3047 3047 WAIT_ANSWERBACK constant fixed bin(17,0) initial dcl 12-25 ref 826 WAIT_BEFORE_HANGUP constant fixed bin(17,0) initial dcl 12-25 ref 691 691 2711 WAIT_CONNECT_REQUEST constant fixed bin(17,0) initial dcl 12-25 ref 1826 1830 1900 WAIT_DELETE_CHANNEL constant fixed bin(17,0) initial dcl 12-25 ref 751 2619 WAIT_DETACH constant fixed bin(17,0) initial dcl 12-25 ref 751 2458 2460 2526 2710 2732 2748 WAIT_DIAL_RELEASE constant fixed bin(17,0) initial dcl 12-25 ref 1643 1692 WAIT_DISCARD_WAKEUPS constant fixed bin(17,0) initial dcl 12-25 ref 556 WAIT_FIN_PRIV_ATTACH constant fixed bin(17,0) initial dcl 12-25 ref 556 WAIT_FIN_TANDD_ATTACH constant fixed bin(17,0) initial dcl 12-25 ref 556 WAIT_GREETING_MSG constant fixed bin(17,0) initial dcl 12-25 ref 666 WAIT_HANGUP constant fixed bin(17,0) initial dcl 12-25 ref 2338 2621 2750 WAIT_LOGIN_ARGS constant fixed bin(17,0) initial dcl 12-25 ref 952 WAIT_LOGIN_LINE constant fixed bin(17,0) initial dcl 12-25 ref 906 3559 WAIT_LOGOUT constant fixed bin(17,0) initial dcl 12-25 ref 739 2118 2181 2187 2194 2374 2381 2388 2411 2443 2479 2499 2532 WAIT_LOGOUT_HOLD constant fixed bin(17,0) initial dcl 12-25 ref 739 1539 2125 2141 2158 2184 2199 2203 2209 2215 2229 2481 2662 2809 2810 WAIT_LOGOUT_SIG constant fixed bin(17,0) initial dcl 12-25 ref 721 725 730 739 1444 1587 1588 WAIT_NEW_PASSWORD constant fixed bin(17,0) initial dcl 12-25 ref 1154 WAIT_NEW_PROC constant fixed bin(17,0) initial dcl 12-25 ref 739 2146 2174 2238 2519 2526 2613 2672 2765 WAIT_OLD_PASSWORD constant fixed bin(17,0) initial dcl 12-25 ref 1090 WAIT_PASSWORD constant fixed bin(17,0) initial dcl 12-25 ref 1208 WAIT_REMOVE constant fixed bin(17,0) initial dcl 12-25 ref 751 2626 WAIT_TANDD_HANGUP constant fixed bin(17,0) initial dcl 12-25 ref 556 a_code parameter fixed bin(35,0) dcl 3224 set ref 3222 3227* a_string parameter char packed unaligned dcl 3225 set ref 3222 3227* access_class 12 based bit(72) array level 2 in structure "cdte" dcl 10-72 in procedure "dialup_" set ref 2251* 3208* access_class 002110 automatic bit(72) level 2 in structure "tac" dcl 3172 in procedure "initialize_current_access_class" set ref 3181 access_class_set 2 002110 automatic bit(1) level 2 dcl 3172 set ref 3179 access_control 50(09) based structure level 3 packed packed unaligned dcl 10-72 act_ctl_$activity_unbump 000402 constant entry external dcl 226 ref 2421 act_ctl_$close_account 000404 constant entry external dcl 227 ref 1535 2614 2767 act_ctl_$cp 000406 constant entry external dcl 228 ref 1544 act_ctl_$dp 000410 constant entry external dcl 229 ref 2608 act_ctl_$open_account 000412 constant entry external dcl 230 ref 1512 active based fixed bin(17,0) level 2 dcl 27-78 set ref 638 765 1304 1545* 1913 1925 2319 2535 2567 2568 2572* 2609* 3049 3110 activity_can_unbump 431(16) based bit(1) level 3 packed packed unaligned dcl 27-78 set ref 2309 2419 2463* added_info 000101 automatic char(256) packed unaligned dcl 431 set ref 1372* 1376* addr builtin function dcl 220 ref 539 698 698 829 829 871 871 909 909 915 915 920 920 920 928 934 957 957 968 968 974 974 1000 1001 1001 1006 1006 1014 1014 1084 1084 1091 1091 1094 1094 1141 1141 1148 1148 1156 1156 1160 1160 1187 1187 1197 1197 1216 1216 1219 1219 1301 1301 1607 1607 1671 1671 1703 1703 1729 1729 1742 1742 1754 1754 1771 1771 1838 1838 1847 1847 1852 1852 1852 1857 1890 1890 1968 1968 2042 2042 2043 2044 2092 2124 2169 2365 2365 2473 2474 2547 2547 2656 2656 2704 2704 2706 2706 2716 2716 2950 2950 3019 3019 3047 3157 3158 3158 3166 3166 3177 3177 3235 3235 3255 3255 3264 3264 3267 3267 3317 3317 3338 3411 3411 3413 3413 3471 3471 3557 addrel builtin function dcl 220 ref 3338 aim_check_$equal 000414 constant entry external dcl 231 ref 1369 2255 2261 aim_check_$in_range 000416 constant entry external dcl 232 ref 2246 2251 always_add 11(02) 001505 automatic bit(1) level 3 packed packed unaligned dcl 20-5 set ref 3314* anonymous 16 based fixed bin(17,0) level 2 dcl 27-78 set ref 1058* 1264* 1610* 1674* ansp 001500 automatic pointer initial dcl 1-53 set ref 535* 545 569 612 616 784 925 929 929 929 1037 1040 2136 2144 2446 2473 2474 2635 2745 1-53* 3042 3047 3139 3156 3157 3157 3157 3161 3162 3163 3164 3197 3197 3249 3251 3254 3278 3406 3407 3446 3446 3448 3448 3449 3457 3457 3458 3459 3555* anstbl based structure level 1 dcl 1-55 answerback 35 based char(8) level 2 dcl 10-72 set ref 875* 879* arg based char packed unaligned dcl 3523 ref 3535 argl 001476 automatic fixed bin(17,0) dcl 3523 set ref 3534* 3535 argp 001474 automatic pointer dcl 3523 set ref 3534* 3535 arh_header_ based structure level 1 dcl 2-26 arh_user_info_ based structure level 1 dcl 2-39 as_access_audit_$process 000420 constant entry external dcl 233 ref 1404 2169 2227 2350 as_access_audit_$process_connect_denied 000422 constant entry external dcl 234 ref 1376 as_channel_audit_record_ based structure level 1 dcl 3-74 as_check_condition_ 001142 constant entry external dcl 3424 ref 3426 as_data_$CR 001116 external static char(1) dcl 4-22 ref 3491 as_data_$ansp 001120 external static pointer dcl 4-26 ref 534 535 3555 as_data_$as_procid 001122 external static bit(36) dcl 4-27 ref 633 633 3459 3459 as_data_$cdtp 001124 external static pointer dcl 4-33 ref 551 551 1595 1595 1595 1595 1596 1596 1596 1596 1597 1597 1597 1597 1598 1598 1598 1598 3556 3556 3557 3557 as_data_$login_words 001136 external static fixed bin(17,0) dcl 4-77 set ref 920 920 920 928 934 1000 1852 1852 1852 1857 as_data_$rs_ptrs 001126 external static pointer array dcl 4-49 ref 612 612 620 620 893 893 1031 1031 1120 1120 1120 1120 2136 2136 2156 2156 2179 2179 2192 2192 2232 2232 2255 2255 2313 2313 2479 2479 3164 3164 as_data_$signal_types 001132 external static structure level 1 dcl 4-67 as_data_$system_signal_types 001134 external static structure level 1 dcl 4-72 as_data_$whoptr 001130 external static pointer dcl 4-60 ref 581 581 590 590 1453 1453 1454 1454 1521 1521 1580 1580 1581 1581 2058 2058 2064 2064 2274 2274 2332 2332 3164 3164 as_data_login_words based structure level 1 dcl 4-77 as_dial_service_audit_record_ based structure level 1 dcl 3-105 as_dump_ 000424 constant entry external dcl 235 ref 3439 as_error_table_$aclass_banner_msg 000662 external static fixed bin(35,0) dcl 318 set ref 3217* as_error_table_$activity_unbump 000664 external static fixed bin(35,0) dcl 319 set ref 2424* as_error_table_$ask_for_help 000666 external static fixed bin(35,0) dcl 320 set ref 2550* as_error_table_$automatic_logout 000670 external static fixed bin(35,0) dcl 321 ref 2389 2447 2456 as_error_table_$bad_answerback 000672 external static fixed bin(35,0) dcl 322 set ref 882* as_error_table_$bad_login_word_msg 000674 external static fixed bin(35,0) dcl 323 set ref 3493* as_error_table_$bad_password_format 000676 external static fixed bin(35,0) dcl 324 set ref 1166* as_error_table_$bad_terminal_id 000700 external static fixed bin(35,0) dcl 325 set ref 1765* as_error_table_$bump_cancelled 000702 external static fixed bin(35,0) dcl 326 ref 2293 as_error_table_$coming_up 000704 external static fixed bin(35,0) dcl 327 ref 1040 as_error_table_$detach 000706 external static fixed bin(35,0) dcl 328 ref 2450 as_error_table_$dialup_error 000710 external static fixed bin(35,0) dcl 329 set ref 946* 1364* 1435* 1498 2814 as_error_table_$disc_hd_msg 000712 external static fixed bin(35,0) dcl 330 set ref 2235 2356 2364* as_error_table_$ds_user_ignored 000714 external static fixed bin(35,0) dcl 331 set ref 1619* 1683* as_error_table_$ds_user_required 000716 external static fixed bin(35,0) dcl 332 set ref 1616* 1680* as_error_table_$fpe_caused_logout 000720 external static fixed bin(35,0) dcl 333 set ref 2139* as_error_table_$generated_pw_err 000722 external static fixed bin(35,0) dcl 334 ref 1249 as_error_table_$generated_pw_msg 000724 external static fixed bin(35,0) dcl 335 set ref 1135* as_error_table_$give_connect_request 000726 external static fixed bin(35,0) dcl 336 ref 1832 as_error_table_$give_connect_request_no_disc 000730 external static fixed bin(35,0) dcl 337 ref 1833 as_error_table_$give_instructions 000732 external static fixed bin(35,0) dcl 338 ref 1813 as_error_table_$greeting_msg 000734 external static fixed bin(35,0) dcl 339 set ref 3492* as_error_table_$hangup_msg 000736 external static fixed bin(35,0) dcl 340 set ref 3512* as_error_table_$help_gpw_verify 000740 external static fixed bin(35,0) dcl 341 ref 1232 as_error_table_$help_new_pw 000742 external static fixed bin(35,0) dcl 342 set ref 1171* as_error_table_$help_npw_verify 000744 external static fixed bin(35,0) dcl 343 ref 1234 as_error_table_$help_password 000746 external static fixed bin(35,0) dcl 344 set ref 1104* 1235 as_error_table_$illegal_new_proc 000750 external static fixed bin(35,0) dcl 345 ref 2242 2247 as_error_table_$illegal_signal 000752 external static fixed bin(35,0) dcl 346 ref 2073 2305 as_error_table_$init_err 000754 external static fixed bin(35,0) dcl 347 ref 2205 as_error_table_$init_term_msg 000756 external static fixed bin(35,0) dcl 348 set ref 3495* as_error_table_$list_disconnected_msg 000760 external static fixed bin(35,0) dcl 349 set ref 1939* as_error_table_$login_args 000762 external static fixed bin(35,0) dcl 350 set ref 954* as_error_table_$login_auth_msg 000764 external static fixed bin(35,0) dcl 351 set ref 3014* as_error_table_$logout1_msg 000766 external static fixed bin(35,0) dcl 352 set ref 3498* as_error_table_$logout_disconnected_msg 000770 external static fixed bin(35,0) dcl 353 set ref 3279* as_error_table_$logout_msg 000772 external static fixed bin(35,0) dcl 354 set ref 3497* as_error_table_$must_give_proc_no 000774 external static fixed bin(35,0) dcl 355 ref 1807 as_error_table_$new_password_indistinct 000776 external static fixed bin(35,0) dcl 356 set ref 1131* as_error_table_$new_pw_err 001000 external static fixed bin(35,0) dcl 357 ref 1251 as_error_table_$no_connect_aclass 001002 external static fixed bin(35,0) dcl 358 set ref 1377* as_error_table_$no_disc_hd 001004 external static fixed bin(35,0) dcl 359 set ref 2233 2702 2703* as_error_table_$no_disconnected_procs 001006 external static fixed bin(35,0) dcl 360 set ref 1052* 1803 as_error_table_$no_init_proc 001010 external static fixed bin(35,0) dcl 361 ref 2217 as_error_table_$no_io_attach 001012 external static fixed bin(35,0) dcl 362 ref 2211 as_error_table_$no_logout_hold 001014 external static fixed bin(35,0) dcl 363 ref 2182 2195 as_error_table_$no_perm_disc 001016 external static fixed bin(35,0) dcl 364 set ref 2224 2225* as_error_table_$no_signal 001020 external static fixed bin(35,0) dcl 365 ref 2477 as_error_table_$no_such_process_msg 001022 external static fixed bin(35,0) dcl 366 set ref 1798* as_error_table_$now_logged_in 001024 external static fixed bin(35,0) dcl 367 set ref 1871* as_error_table_$npw_again_msg 001026 external static fixed bin(35,0) dcl 368 set ref 3506* as_error_table_$npw_msg 001030 external static fixed bin(35,0) dcl 369 set ref 3503* as_error_table_$only_after_login_msg 001032 external static fixed bin(35,0) dcl 370 set ref 1786* as_error_table_$proc_term_loop_msg 001034 external static fixed bin(35,0) dcl 371 set ref 3496* as_error_table_$proc_term_msg 001036 external static fixed bin(35,0) dcl 372 set ref 3494* as_error_table_$process_create_fail 001040 external static fixed bin(35,0) dcl 373 ref 1537 as_error_table_$pw_format_warning 001042 external static fixed bin(35,0) dcl 374 set ref 1100* 1227* as_error_table_$pw_msg 001044 external static fixed bin(35,0) dcl 375 set ref 3500* as_error_table_$rq_invalid_now_msg 001046 external static fixed bin(35,0) dcl 376 set ref 1870* as_error_table_$shutdown 001050 external static fixed bin(35,0) dcl 377 ref 1037 2382 2446 as_error_table_$special_session 001052 external static fixed bin(35,0) dcl 378 ref 1042 1045 as_error_table_$sys_full 001054 external static fixed bin(35,0) dcl 379 ref 3140 as_error_table_$term_by_operator 001056 external static fixed bin(35,0) dcl 380 ref 2104 as_error_table_$try_again 001060 external static fixed bin(35,0) dcl 381 set ref 1033* as_error_table_$tty_no_room 001062 external static fixed bin(35,0) dcl 382 ref 3138 as_error_table_$unknown_arg_msg 001064 external static fixed bin(35,0) dcl 383 set ref 1899* 1982 as_error_table_$unknown_request_msg 001066 external static fixed bin(35,0) dcl 384 set ref 1858* as_error_table_$user_typed_quit 001070 external static fixed bin(35,0) dcl 385 set ref 1020* as_ia_audit_record_ based structure level 1 dcl 3-52 as_meter_$enter 000426 constant entry external dcl 236 ref 547 as_meter_$exit_values 000430 constant entry external dcl 237 ref 1593 as_procid 10 based bit(36) level 3 in structure "anstbl" dcl 1-55 in procedure "dialup_" set ref 2473* 2474* as_procid defined bit(36) dcl 5-17 in procedure "dialup_" set ref 633 3459* astty_$tty_abort 000432 constant entry external dcl 238 ref 623 817 851 1016 2107 3565 astty_$tty_changemode 000434 constant entry external dcl 239 ref 996 1723 3335 3347 3348 astty_$tty_event 000436 constant entry external dcl 240 ref 3129 astty_$tty_force 000440 constant entry external dcl 241 ref 871 974 1001 1014 1084 1141 1148 1187 1197 1301 2365 2547 2656 2704 2706 3019 3158 3166 3235 3255 3264 3267 3339 3411 3413 astty_$tty_get_chars 000442 constant entry external dcl 242 ref 829 astty_$tty_getmode 000444 constant entry external dcl 243 ref 1706 astty_$tty_new_proc 000446 constant entry external dcl 244 ref 1555 astty_$tty_order 000450 constant entry external dcl 245 ref 822 1006 1073 1079 1558 1742 2716 2735 2774 2950 3128 3177 3387 3398 3471 astty_$tty_read 000452 constant entry external dcl 246 ref 698 909 957 1091 1156 1216 1838 astty_$tty_state 000454 constant entry external dcl 247 ref 786 2081 2650 2749 2847 2863 2878 2913 2923 2964 3561 asu_$asu_listen 000456 constant entry external dcl 248 ref 2755 2855 2882 asu_$asu_remove 000460 constant entry external dcl 249 ref 3297 asu_$attach_ate 000462 constant entry external dcl 250 ref 3135 asu_$check_for_stopped_process 000464 constant entry external dcl 251 ref 2600 asu_$find_process 000466 constant entry external dcl 252 ref 2827 asu_$release_ate 000470 constant entry external dcl 253 ref 1391 3028 asu_$release_suspended_process 000472 constant entry external dcl 254 ref 1566 asu_$reschedule_bump_timer 000474 constant entry external dcl 255 ref 2313 asu_$reset_access_class 000476 constant entry external dcl 256 ref 3174 asu_$send_term_signal 000500 constant entry external dcl 257 ref 1471 2101 2372 2378 2385 2410 2429 2454 asu_$start_process 000502 constant entry external dcl 258 ref 1585 asu_$suspend_process 000504 constant entry external dcl 259 ref 2328 asu_$write_chn_message 000506 constant entry external dcl 260 ref 882 946 954 1020 1033 1043 1052 1100 1104 1131 1166 1171 1227 1236 1252 1435 1499 1616 1619 1631 1680 1683 1815 1834 1871 2546 2550 3142 asu_$write_message 000510 constant entry external dcl 261 ref 2225 at 100 based structure level 2 dcl 27-78 attributes 50 based structure level 3 packed packed unaligned dcl 10-72 audit_record_header based structure level 1 dcl 2-18 author based structure level 2 dcl 8-9 author_dcl based structure level 1 dcl 8-9 authorization 0(18) based bit(54) level 2 packed packed unaligned dcl 511 ref 2246 2251 2255 2261 2267 2272 authorization_string 001644 automatic char(200) packed unaligned dcl 3001 set ref 3007* 3011* 3013 3017* autobaud 50(23) based bit(1) level 4 packed packed unaligned dcl 10-72 ref 3477 bad_login_word_fmt 000010 internal static varying char(100) dcl 409 set ref 1012* 3493* based_tcode based structure level 1 dcl 494 baseno builtin function dcl 220 ref 551 551 569 569 2044 baud_rate 33(18) based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 10-72 in procedure "dialup_" set ref 3477* baud_rate 13 001447 automatic fixed bin(17,0) level 2 in structure "term_info" dcl 486 in procedure "dialup_" set ref 802* 3477 bc based structure level 1 dcl 498 bit builtin function dcl 220 ref 3406 3407 brief 77(10) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 27-78 in procedure "dialup_" ref 979 brief 100(10) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 27-78 in procedure "dialup_" set ref 979 1326 1389* 1389 1411 1811 1824 buff 000201 automatic char(500) dcl 432 set ref 698 698 829 829 834 834 898* 909 909 915 915 957 957 968 968 972* 974 974 1000* 1001 1001 1012* 1014 1014 1091 1091 1094 1094 1111* 1135* 1141 1141 1142* 1156 1156 1160 1160 1177* 1185* 1187 1187 1216 1216 1219 1219 1245* 1300* 1301 1301 1378* 1412* 1607 1607 1671 1671 1703 1703 1708* 1729 1729 1733* 1745* 1754 1754 1758* 1771 1771 1775* 1798* 1838 1838 1847 1847 1890 1890 1939* 1968 1968 2126* 2140* 2148* 2159* 2364* 2365 2365 2547 2547 2636* 2638* 2656 2656 2703* 2704 2704 2796* 3054* 3157* 3158 3158 3164* 3166 3166 3227* 3235 3235 3254* 3255 3255 3279* bv_tabs_code parameter fixed bin(35,0) dcl 3326 set ref 3324 3332* 3333 3335* 3336 3339* 3340 3344* 3345 3347* 3348* 3351 bv_turn_code parameter fixed bin(35,0) dcl 3385 set ref 3383 3387* 3388 3388 3388* c_a_c 002136 automatic char(500) packed unaligned dcl 3215 set ref 3216* 3217* cdt based structure level 1 dcl 10-44 cdt_entry 1520 based structure array level 2 dcl 10-44 set ref 3557 cdte based structure level 1 dcl 10-72 cdtep 001502 automatic pointer dcl 10-41 set ref 552* 554 555 556 562* 562 562 562 565 572* 573 573 575* 575 577* 586 587* 587 599 612 615 616 619 619 620 621 622 623* 666 666 680 687 698* 701 773* 783 783 784 786* 789 791 797 799 799 807 817* 820 822* 826 829* 834 834 839 842 842 844 851* 866 871* 874 875 875 879 879 879 879 882* 891 894 896 898 899 906 909* 943 946* 952 954* 957* 963 964 965 971 974* 981 983 985 993 996* 1001* 1006* 1006 1006 1014* 1016* 1020* 1030 1030 1031 1033* 1043* 1049 1052* 1062 1062 1073* 1079* 1084* 1090 1091* 1100* 1104* 1131* 1141* 1148* 1154 1156* 1166* 1171* 1187* 1197* 1208 1216* 1227* 1236* 1252* 1260 1275 1276 1301* 1320 1320 1323 1323 1326 1330 1333 1333 1335 1337 1340 1344 1361 1363 1378 1378 1385 1391* 1392 1393 1394 1395 1396 1397 1400 1400 1400 1402 1402 1412 1412 1412 1412 1432 1435* 1440 1443 1444 1454 1458 1464 1480 1480 1480 1494 1494 1494 1494 1499* 1508 1513 1513 1514 1518 1518 1518 1539 1547 1555* 1558* 1563 1581 1587 1611 1616* 1619* 1628* 1631* 1636 1636* 1639 1642 1643 1675 1680* 1683* 1691 1692 1693 1694 1696 1696 1696 1696 1706* 1723* 1733 1742* 1749 1751 1751 1758 1764 1768 1798 1815* 1826 1830 1832 1834* 1838* 1871* 1874 1900 1932 1935 1945 1947 1950 1954 1958 1961 1965 1970 1970 1970 1981 1987 1988 1992 1992 1998 1998 2004 2004 2081* 2084 2107* 2128 2251 2255 2261 2261 2267 2268 2338 2338 2340 2341 2341 2341 2358 2359 2365* 2450 2460 2538 2546* 2547* 2550* 2553 2553 2553 2559 2560 2561 2595 2610 2619 2620 2621 2622 2626 2627 2650* 2652 2656* 2662 2663 2669 2672 2674 2690 2691 2700 2704* 2706* 2710 2710 2711 2712 2714 2716* 2720 2720 2728 2732 2732 2735* 2736 2739 2740* 2740 2740 2740 2742 2745 2745 2745 2748 2749* 2750 2750 2753 2755 2755* 2765 2774* 2775 2810 2847* 2849 2851* 2853 2854 2855 2855* 2863* 2865 2866* 2871* 2878* 2880 2882 2882 2882 2882 2882* 2907 2913* 2915 2916* 2923* 2925 2927* 2950* 2953 2953 2956 2964* 2970 2973 3028* 3039 3054 3088 3089 3092 3093 3094 3095 3100 3101 3102 3128* 3129* 3135* 3137 3142* 3146 3158* 3164 3166* 3174* 3175 3177* 3180 3181 3187 3206 3206 3208 3235* 3255* 3264* 3267* 3292 3292 3296 3297* 3330 3332 3335* 3339* 3344 3347* 3348* 3362 3387* 3398* 3411* 3413* 3471* 3474 3475 3476 3477 3477 3557* 3558 3559 3559 3561* 3563 3563 3565* channel 341 based pointer level 2 packed packed unaligned dcl 27-78 set ref 572 1393* 2337* 3019 channel_threads based structure level 1 dcl 10-249 char8 000102 automatic char(8) packed unaligned dcl 3070 set ref 3075* 3081* 3083 3083* charge_type 32 based fixed bin(17,0) level 2 packed packed unaligned dcl 10-72 ref 1400 1400 1518 1518 2341 2341 2553 2553 check_password_ 000512 constant entry external dcl 262 ref 1182 chn_wakeup_error_loop_count 1710(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 14-33 ref 620 chn_wakeup_error_loop_seconds 1711 based fixed bin(17,0) level 3 packed packed unaligned dcl 14-33 ref 612 ck_answerback 50 based bit(1) level 4 packed packed unaligned dcl 10-72 ref 874 1764 clock builtin function dcl 220 ref 545 2330 code 1 based fixed bin(17,0) level 2 in structure "bc" dcl 498 in procedure "dialup_" ref 2043 code 000376 automatic fixed bin(35,0) dcl 433 in procedure "dialup_" set ref 623* 698* 699 786* 787 802* 803 814* 815 817* 818 822* 824 829* 832 834* 837 847* 848 851* 852 856* 857 868* 869 871* 872 875* 876 876 882* 883 889 909* 910 941* 942 943* 946* 947 954* 955 957* 958 968* 969 970 972* 974* 975 985* 986 990* 991 996* 997 998 1000* 1001* 1002 1014* 1015 1016* 1017 1020* 1022 1025* 1033* 1034 1043* 1044 1052* 1054 1073* 1074 1079* 1080 1084* 1085 1091* 1092 1097* 1098 1100* 1101 1104* 1105 1131* 1133 1141* 1143 1148* 1149 1156* 1157 1163* 1164 1166* 1167 1171* 1172 1182* 1183 1187* 1188 1197* 1199 1216* 1217 1222* 1223 1227* 1228 1236* 1237 1252* 1253 1289* 1291* 1301* 1302 1391* 1430* 1431 1432* 1435* 1436 1499* 1500 1529* 1530 1531* 1555* 1556 1558* 1561* 1562 1563* 1571* 1572 1572* 1607* 1608 1609 1628* 1629 1631* 1653* 1655 1657* 1658 1664 1671* 1673 1703* 1705 1706* 1707 1712 1723* 1725 1729* 1732 1737 1742* 1743 1744* 1750* 1751* 1754* 1757 1762 1771* 1774 1815* 1817 1832* 1833* 1834 1834* 1835 1838* 1841 1847* 1849 1850 1871* 1873 1888* 1889 1890* 1891 1891 1893 1968* 1969 1976 1979* 1980 1982* 1983* 2081* 2082 2355* 2363* 2421* 2422 2473* 2474* 2650* 2651 2656* 2657 2691* 2714* 2716* 2718 2720* 2726 2749* 2753* 2755* 2777 2794* 2847* 2854* 2855* 2863* 2878* 2882* 2913* 2923* 2965 2973 3028* 3135* 3136 3137* 3138 3140* 3142* 3158* 3159 3166* 3177* 3179 3183 3183 3187* 3216* 3217 3235* 3236 3249* 3251* 3254* 3255* 3256 3264* 3265 3267* 3268 3269* 3292* 3317* 3318 3318 3318 3318* 3398* 3399 3399 3403 3411* 3413* 3414 3450* 3451 3452* 3453 3459* 3471* 3472 3534* 3561* 3562 3565* 3566 3568 code parameter fixed bin(35,0) dcl 2945 in procedure "change_type" set ref 2940 2950* 2951 2953* 2954 2958* 2959* code 001726 automatic fixed bin(35,0) dcl 3002 in procedure "DISPLAY_PROCESS_AUTHORIZATION" set ref 3007* 3009 3009 comment 16 based char(48) level 2 dcl 10-72 set ref 879* 3292* condition_ 000514 constant entry external dcl 263 ref 543 condname parameter char packed unaligned dcl 3421 set ref 3419 3426* 3437* connect_immediate 000100 automatic bit(1) initial dcl 264 set ref 264* 981* 1471 1992* continue parameter bit(1) packed unaligned dcl 3421 set ref 3419 3426* 3427 convert_access_class_$to_string 000516 constant entry external dcl 265 ref 3007 convert_authorization_$to_string_range 000520 constant entry external dcl 266 ref 3216 convert_status_code_ 000522 constant entry external dcl 267 ref 1377 1744 2111 2139 2424 2794 2989 3014 3500 3503 3506 3512 coptr parameter pointer dcl 3421 ref 3419 count 75 based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 10-72 in procedure "dialup_" set ref 866* 1030* 1030 1031 count 412 based fixed bin(17,0) level 2 in structure "ute" dcl 27-78 in procedure "dialup_" set ref 953* 961 cpg_ 000524 constant entry external dcl 268 ref 1529 cpg_$set_pit_tty_info 000526 constant entry external dcl 269 ref 1561 cpo 75(19) based bit(1) level 3 packed packed unaligned dcl 10-72 set ref 1062 1751* 2953* cpu_in_dialup 46 based fixed bin(71,0) level 2 dcl 10-44 set ref 1597* 1597 cpu_usage 360 based fixed bin(71,0) level 2 dcl 27-78 ref 2631 cpw 17 based bit(1) level 3 packed packed unaligned dcl 27-78 set ref 1059* 1089 1224 1232 1238 1247 cu_$arg_count 001110 constant entry external dcl 3521 ref 3530 cu_$arg_ptr 001112 constant entry external dcl 3522 ref 3534 cur_line_type 113(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 10-72 set ref 834 965 1397 3330 3476* current_access_class 114 based bit(72) array level 2 dcl 10-72 set ref 1514* 2255* 2261* 2267* 3181* 3206* current_access_class_valid 75(28) based bit(1) level 3 packed packed unaligned dcl 10-72 set ref 1361 2261 2268* 3175 3180* 3206 current_service_type 74 based fixed bin(17,0) level 2 packed packed unaligned dcl 10-72 set ref 1691* 2622* 2882 2882 current_size 36 based fixed bin(17,0) level 2 in structure "cdt" dcl 10-44 in procedure "dialup_" ref 3556 current_size 5 based fixed bin(17,0) level 3 in structure "anstbl" dcl 1-55 in procedure "dialup_" ref 3042 current_terminal_type 101 based char(32) level 2 packed packed unaligned dcl 10-72 set ref 844 963 971* 983 985* 993 1396 1733* 1749* 2956* 3332* 3344* 3474* current_time 126 based fixed bin(71,0) level 2 dcl 1-55 set ref 545* 612 616 784 2136 2144 2635* 2745 3163* 3278* 3406 3407 cv_dec_check_ 001114 constant entry external dcl 3524 ref 1979 data_ptr 6 based pointer level 2 dcl 502 set ref 551 552 569 570 2824* 3373* date_time 000400 automatic varying char(64) dcl 434 set ref 1938* 1939* 2635* 2636* 2638* 3163* 3164* 3278* 3279* date_time_$format 000530 constant entry external dcl 270 ref 1938 2635 3163 3278 destroy_flag 421 based fixed bin(17,0) level 2 dcl 27-78 set ref 575* 594 1539* 1588* 2118* 2125* 2141* 2146* 2158* 2174* 2181* 2184* 2187* 2194* 2199* 2203* 2209* 2215* 2229* 2238* 2374* 2381* 2388* 2411* 2443* 2458* 2479* 2481* 2499* 2519 2526 2526* 2532* 2538 2613 2809* 3109 detach_after_hangup 75(23) based bit(1) level 3 packed packed unaligned dcl 10-72 set ref 2710* 2732 device_acct_$off 000532 constant entry external dcl 271 ref 2341 2553 device_acct_$on 000534 constant entry external dcl 272 ref 1400 1518 dial_arg1 000431 automatic char(32) packed unaligned dcl 435 set ref 1625* 1628* dial_ctl_ 000536 constant entry external dcl 273 ref 1628 dial_ctl_$continue_tandd_attach 000540 constant entry external dcl 274 ref 2916 dial_ctl_$dial_term 000542 constant entry external dcl 275 ref 2866 dial_ctl_$finish_dial_out 000544 constant entry external dcl 276 ref 2871 dial_ctl_$finish_priv_attach 000546 constant entry external dcl 277 ref 2851 dial_ctl_$finish_tandd_attach 000550 constant entry external dcl 278 ref 2927 dial_pw 17(02) based bit(1) level 4 packed packed unaligned dcl 27-78 ref 1314 dial_qual 000421 automatic char(32) packed unaligned dcl 435 set ref 1623* 1628* dial_qualifier 343 based char(22) level 2 packed packed unaligned dcl 27-78 ref 1623 dialed_up_time 123 based fixed bin(35,0) level 2 dcl 10-72 set ref 2745* 2745 dialup_flags 75(18) based structure level 2 packed packed unaligned dcl 10-72 dialup_time 124 based fixed bin(71,0) level 2 dcl 10-72 set ref 784* 2745 disconnect_ok 100(22) based bit(1) level 3 packed packed unaligned dcl 27-78 ref 2221 2319 disconnected 431(13) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 27-78 in procedure "dialup_" set ref 578 580* 586 589* 1451* 1560 1578* 2117 2329* 3049 disconnected 273(01) based bit(1) array level 3 in structure "whotab" packed packed unaligned dcl 29-10 in procedure "dialup_" set ref 581* 590* 1453* 1580* 2332* disconnected_ate_index 120 based fixed bin(17,0) level 2 packed packed unaligned dcl 10-72 set ref 1276* 1494* 3039 disconnected_proc_command 126 based fixed bin(12,0) level 2 packed packed unsigned unaligned dcl 10-72 set ref 1049 1260 1320 1326 1330 1333 1412 1412 1440 1458 1480 1480 1494* 1945* 1950* 1954* 1958* 1992 1992 1998 1998 2004 2004 disconnected_proc_number 126(12) based fixed bin(12,0) level 2 packed packed unsigned unaligned dcl 10-72 set ref 1323 1333 1337* 1344 1378* 1412* 1798* 1947* 1965* 1970 1970* 1981 1987* disconnection_rel_minutes 424 based fixed bin(17,0) level 2 packed packed unaligned dcl 27-78 set ref 2330* display_access_class_ 000552 constant entry external dcl 279 ref 1372 1372 1372 1372 divide builtin function dcl 220 ref 2330 2632 3259 do_init parameter bit(1) packed unaligned dcl 2944 ref 2940 2958 do_tabs parameter bit(1) packed unaligned dcl 2943 ref 2940 2957 dont_read_answerback 50(04) based bit(1) level 4 packed packed unaligned dcl 10-72 ref 820 dpg_ 000554 constant entry external dcl 280 ref 2535 dpg_$finish 000556 constant entry external dcl 281 ref 2605 dum_msg 000042 internal static fixed bin(71,0) dcl 410 set ref 3459* 3515* e 240 based structure array level 2 dcl 29-10 ename parameter char packed unaligned dcl 3243 set ref 3241 3249 3251* 3254* entries_to_dialup 52 based fixed bin(17,0) level 2 dcl 10-44 set ref 1598* 1598 entry 200 based structure array level 2 dcl 1-55 set ref 3047 err_type parameter char packed unaligned dcl 3290 set ref 3288 3292* erri 000136 automatic fixed bin(17,0) dcl 3422 set ref 3437* errm 000100 automatic char(120) dcl 3422 set ref 3437* 3439* error_mess 000441 automatic char(100) dcl 436 set ref 968* 972* 1447* 1607* 1671* 1744* 1745* 2036* 2047* 2111* 2126* 2139* 2140* 2148* 2159* 2424* 2425 2794* 2796* error_message 000472 automatic char(64) packed unaligned dcl 437 set ref 1182* 1185* error_table_$action_not_performed 001072 external static fixed bin(35,0) dcl 386 ref 3388 3399 error_table_$badstar 001074 external static fixed bin(35,0) dcl 387 ref 876 error_table_$messages_deferred 001076 external static fixed bin(35,0) dcl 388 ref 3318 error_table_$messages_off 001100 external static fixed bin(35,0) dcl 389 ref 3318 error_table_$noarg 001102 external static fixed bin(35,0) dcl 390 ref 917 969 1096 1162 1221 1608 1705 1732 1757 1849 1891 1969 error_table_$smallarg 001104 external static fixed bin(35,0) dcl 391 ref 3009 error_table_$undefined_order_request 001106 external static fixed bin(35,0) dcl 392 ref 3183 ev_message 2 based fixed bin(71,0) level 2 dcl 502 set ref 539 2055 ev_msg based structure level 1 dcl 502 event 72 based fixed bin(71,0) level 2 in structure "cdte" dcl 10-72 in procedure "dialup_" set ref 894* 1385* 1508* 1642* 1694* 2358* 2663* 2690* 2691* 2712* 2714* 2728* 2753* 2854* 3296* event 376 based fixed bin(71,0) level 2 in structure "ute" dcl 27-78 in procedure "dialup_" set ref 941* 943* 1430* 1432* 2066* 2279* 2473* 2474* 2490* 2519* execute_initial_command 50(17) based bit(1) level 4 packed packed unaligned dcl 10-72 ref 896 fatal_error_loop_count 537 based fixed bin(17,0) level 3 packed packed unaligned dcl 14-33 ref 2156 fatal_error_loop_seconds 537(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 14-33 ref 2136 fixed builtin function dcl 220 ref 3406 3407 3407 3409 flags 11 001435 automatic structure level 2 in structure "set_type_info" packed packed unaligned dcl 485 in procedure "dialup_" set ref 1741* 2949* flags 50 based structure level 2 in structure "cdte" dcl 10-72 in procedure "dialup_" float builtin function dcl 220 ref 2631 2634 2745 fnpe based structure level 1 dcl 10-200 format 001727 automatic char(100) dcl 3003 in procedure "DISPLAY_PROCESS_AUTHORIZATION" set ref 3014* 3016 3017* format 000512 automatic char(100) dcl 438 in procedure "dialup_" set ref 1377* 1378 1378 3500* 3501 3501 3503* 3504 3504 3506* 3507 3507 3512* 3513 3513 fpe_causes_logout 431(17) based bit(1) level 3 packed packed unaligned dcl 27-78 ref 2138 fromproc 4 based bit(36) level 2 dcl 502 set ref 633 638 2824* 2827* 3373* funct 000544 automatic char(8) packed unaligned dcl 439 set ref 2033* 2039 2042 2042 2043 2072* 2077 2092 2124 2169 2392 2535 2808* garbg 000044 internal static char(97) dcl 411 set ref 3409* 3411 3411 3509* garbg_lth 000075 internal static fixed bin(17,0) dcl 412 set ref 3411* 3509* generate_pw 17(01) based bit(1) level 3 packed packed unaligned dcl 27-78 set ref 1060* 1113 1151 1232 1238 1249 generate_word_ 000560 constant entry external dcl 282 ref 1127 generated_pw 20 based char(8) level 2 packed packed unaligned dcl 27-78 set ref 1128* 1129 1201* 1248 1292* gpw_length 000546 automatic fixed bin(17,0) dcl 440 set ref 1120* 1122 1122* 1127* 1127* greeting_fmt 000076 internal static varying char(100) dcl 413 set ref 3164* 3492* hangup_msg 000130 internal static char(8) dcl 414 set ref 2706 2706 3513* hangup_msg_lth 000132 internal static fixed bin(17,0) initial dcl 415 set ref 2706* 3513* hardwired 50(02) based bit(1) level 4 packed packed unaligned dcl 10-72 ref 891 have_ate 000547 automatic bit(1) initial dcl 441 set ref 441* 600* 638 743 1913 1925 2091 2319 2458 2508 2553 3030* 3147* 3366 have_cdte 000550 automatic bit(1) initial dcl 441 set ref 441* 599* 754 2080 2107 2241 2538 2542 2595 2610 2617 2642 2810 3361 hbound builtin function dcl 220 ref 703 769 920 928 934 1852 1857 hcs_$initiate_count 000562 constant entry external dcl 283 ref 3249 hcs_$terminate_noname 000564 constant entry external dcl 284 ref 3269 hcs_$wakeup 000566 constant entry external dcl 285 ref 1571 2060 2473 2474 3459 header based structure level 2 dcl 1-55 helphelp 000551 automatic bit(1) dcl 442 set ref 1448* 2037* 2130* 2165* 2206* 2212* 2218* 2550 i 000100 automatic fixed bin(17,0) dcl 3068 in procedure "get_trace_info" set ref 3077* 3078 3078 3081 3081* i 002462 automatic fixed bin(17,0) dcl 3554 in begin block on line 3553 set ref 3556* 3557* i 000552 automatic fixed bin(17,0) dcl 443 in procedure "dialup_" set ref 972* 974* 1000* 1001* 1012* 1014* 1135* 1141* 1185* 1187* 1378* 1412* 1423* 1538* 1708* 1733* 1745* 1758* 1775* 1798* 1939* 2047* 2097* 2126* 2140* 2148* 2159* 2364* 2365* 2547 2547* 2557* 2612* 2631* 2632 2633* 2633 2636* 2636* 2638* 2638* 2654 2656* 2703* 2704* 2796* 2815* 2827* 2834* 2836* 2839* 3054* 3157* 3158* 3164* 3166* 3227* 3235* 3254* 3255* 3261* 3261* 3262 3263 3264 3264* 3266 3279* 3408* 3409 3409* id 1 001447 automatic char(4) level 2 packed packed unaligned dcl 486 set ref 3475 idcode 266 based char(4) array level 3 dcl 29-10 set ref 1454* 1581* ignore_code 000377 automatic fixed bin(35,0) dcl 433 set ref 1006* 1249* 1251* 1252* 1616* 1619* 1631* 1680* 1683* 2107* 2225* 2365* 2546* 2547* 2550* 2701* 2704* 2706* 2735* 2774* 3128* 3129* 3130* 3142* 3143 ignore_cpulimit 431(10) based bit(1) level 3 packed packed unaligned dcl 27-78 set ref 1523* 2056 2484 2486* immediate_arg 75(27) based bit(1) level 3 packed packed unaligned dcl 10-72 ref 981 in_use based fixed bin(17,0) level 2 dcl 10-72 set ref 556 562* 666 680 687 791* 1443* 1547* 2359* 2450 2559 2560 2561 2595 2610* 2620* 2627* 2669* 2674* 2736* 2739 2740* 2742* 2775* 2882 2907* 2970* 3095 3563 index builtin function dcl 220 ref 3262 infoptr parameter pointer dcl 3421 ref 3419 init_sw 002422 automatic bit(1) initial packed unaligned dcl 3328 set ref 3328* 3347 3353* init_term_fmt 000133 internal static varying char(100) dcl 416 set ref 2126* 3495* initial_command 51 based char(64) level 2 dcl 10-72 ref 898 899 initial_terminal_type 37 based char(32) level 2 packed packed unaligned dcl 10-72 ref 799 799 installation_id based char(32) level 3 dcl 14-33 set ref 3164* installation_parms based structure level 1 dcl 14-33 installation_parms_part_1 based structure level 1 dcl 14-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 14-144 ioa_$rs 000570 constant entry external dcl 286 ref 972 1000 1012 1135 1185 1378 1412 1708 1733 1745 1758 1775 1798 1939 2126 2140 2148 2159 2364 2636 2638 2703 2796 3017 3054 3164 3227 3254 3279 ioa_$rsnnl 000572 constant entry external dcl 287 ref 1372 2047 3083 3157 3437 3501 3504 3507 3509 3513 ip defined pointer dcl 5-21 ref 612 620 893 1031 1120 1120 2136 2156 2179 2192 2232 2255 2313 2479 3164 ipc_$decl_ev_call_chn 000574 constant entry external dcl 288 ref 941 1430 ipc_$drain_chn 000576 constant entry external dcl 289 ref 2691 2714 2753 2854 ipc_$unmask_ev_calls 000600 constant entry external dcl 290 ref 3452 j 000553 automatic fixed bin(17,0) dcl 443 set ref 701* 702 703 704 999* 1000 1344* 1460* 1464* 1467* 1471* 1475 1703* 1729* 1754* 1764 1771* 1890* 1904 1935* 1939* 1968* 1978 2039* 2039* 2041 2050* 2052* 2071* 2077* 2077* 2078 2078* 2078 2087* 2099 2101* 2372* 2378* 2385* 2429* 2454* 2632* 2633 2636 2636* 3039 3043* 3054* 3262* 3263 3263* 3264* 3266 jj 000557 automatic fixed bin(17,0) dcl 444 set ref 915* 951 960* 968 968 968 1094* 1160* 1219* 1607 1607 1607 1671 1671 1671 1703 1703 1703 1729 1729 1729 1754 1754 1754 1764 1771 1771 1771 1847* 1890 1890 1890 1904* 1904 1968 1968 1968 1978* 1978 just_dialed_up 000560 automatic bit(1) packed unaligned dcl 445 set ref 542* 862* 896 1919* 2360* 2666* 2906* k 000554 automatic fixed bin(17,0) dcl 443 set ref 915* 1094* 1099 1125* 1160* 1165 1219* 1224 1703* 1729* 1754* 1771* 1847* 1887* 1890* 1968* 1979* 1987 1988 1988 3039* 3041* 3042 3042 3043* 3047 lbound builtin function dcl 220 ref 702 769 920 1852 leading_NLs parameter fixed bin(17,0) dcl 3152 set ref 3150 3156 3157* length builtin function dcl 220 ref 871 871 899 1099 1165 1224 1300 1301 1301 2720 3077 3267 3267 3334 3339 3339 3362 3367 lg_ctl_$login 000602 constant entry external dcl 291 ref 1291 lg_ctl_$logout 000604 constant entry external dcl 292 ref 1536 2615 2768 lg_ctl_$logout_channel 000606 constant entry external dcl 293 ref 1636 lg_ctl_$logout_no_process 000610 constant entry external dcl 294 ref 1925 2353 3283 lg_ctl_$validate 000612 constant entry external dcl 295 ref 1289 lgwd 000555 automatic fixed bin(17,0) dcl 443 set ref 920* 920* 925 928 929* 934 939 953 961* 999 999 1009 1852* 1852* 1857 1862 1869 1869 1881 line 001760 automatic char(200) packed unaligned dcl 3004 set ref 3017* 3019 3019 line_lth 002042 automatic fixed bin(17,0) dcl 3005 set ref 3017* 3019* line_type 12 001447 automatic fixed bin(17,0) level 2 in structure "term_info" dcl 486 in procedure "dialup_" set ref 802* 3476 line_type 336 based fixed bin(17,0) level 2 in structure "ute" dcl 27-78 in procedure "dialup_" set ref 965* 1397* lock_count 114 based fixed bin(17,0) level 2 dcl 1-55 set ref 3197* 3197 3446* 3446 3448 3448* 3449 3457 lock_value 414 based fixed bin(17,0) level 2 dcl 27-78 set ref 1386* 1386 1386 3196* 3196 3446 3456* login_code 416 based char(8) level 2 packed packed unaligned dcl 27-78 set ref 950* login_flags 17 based structure level 2 dcl 27-78 login_parse_ 000614 constant entry external dcl 296 ref 915 1703 1729 1754 1771 1847 1890 1968 login_parse_$password 000616 constant entry external dcl 297 ref 1094 1160 1219 login_result 415 based fixed bin(17,0) level 2 dcl 27-78 ref 1296 1306 login_time 402 based fixed bin(71,0) level 2 in structure "ute" dcl 27-78 in procedure "dialup_" set ref 1938* 2330 login_time 503 based fixed bin(17,0) level 3 in structure "installation_parms" dcl 14-33 in procedure "dialup_" ref 893 login_tries 505 based fixed bin(17,0) level 3 dcl 14-33 ref 1031 login_word 44 based char(8) level 2 packed packed unaligned dcl 1-55 ref 929 929 logout_brief 000561 automatic bit(1) initial dcl 446 set ref 446* 979* 1883* 1896* 1897* 1908 1913 logout_fmt 000251 internal static varying char(100) dcl 417 set ref 2636* 3497* logout_fmt1 000303 internal static varying char(100) dcl 417 set ref 2638* 3498* logout_hold 000562 automatic bit(1) initial dcl 447 set ref 447* 1340* 1464 1501* 1883* 1894* 1895* 1917 1966* 1998* 2004* 3058* logout_index 423 based fixed bin(17,0) level 2 dcl 27-78 ref 2298 2437 2439 2526 2526 2526 logout_type 422 based char(4) level 2 packed packed unaligned dcl 27-78 set ref 1459* 1463* 1534* 2092* 2375* 2812* long 001604 automatic char(100) dcl 2986 set ref 2989* 2991 loud_select_channel 000370 internal static varying char(32) initial dcl 3526 set ref 2720 2720 3362 3362 3367 3367 3535* 3538* loud_select_sw 000367 internal static bit(1) initial dcl 3525 set ref 2720 3360 3530* 3533* 3538* loudsw 000335 internal static bit(1) initial dcl 418 set ref 602 2718 3528* 3545* mask_ctl 17(34) based bit(2) level 3 packed packed unaligned dcl 27-78 set ref 1062 1062* 1069* 1071 1077 3403 3403 match_star_name_ 000620 constant entry external dcl 298 ref 875 max builtin function dcl 220 ref 1120 1449 1576 2335 max_size 4 based fixed bin(17,0) level 3 dcl 1-55 set ref 3139* max_units 17 based fixed bin(17,0) level 2 dcl 1-55 ref 3162 mcptr parameter pointer dcl 3421 ref 3419 mem_usage 362 based fixed bin(71,0) level 2 dcl 27-78 ref 2634 message parameter char packed unaligned dcl 3303 set ref 3300 3317* message_lng 112 based fixed bin(17,0) level 2 dcl 1-55 ref 3156 3157 3157 mod builtin function dcl 220 ref 999 modes_string 000563 automatic char(512) packed unaligned dcl 448 set ref 1706* 1707* 1708* 3344* 3347 3348 mpxe based structure level 1 dcl 10-221 msg_ptr parameter pointer dcl 216 ref 16 528 532 539 551 552 569 570 630 633 638 2055 2824 2824 2827 3373 3373 n_dialups 121 based fixed bin(17,0) level 2 dcl 10-72 set ref 783* 783 n_disconnected 362(09) based fixed bin(9,0) level 2 packed packed unsigned unaligned dcl 17-58 set ref 1449* 1449 1576* 1576 2335* 2335 n_disconnected_procs 126(24) based fixed bin(12,0) level 2 packed packed unsigned unaligned dcl 10-72 set ref 1275* 1320 1323 1335 1378 1412 1464 1480 1494* 1832 1874 1932 1935 1961 1970 1988 3054 n_logins 122 based fixed bin(17,0) level 2 dcl 10-72 set ref 1402* 1402 1513* 1513 n_processes 413 based fixed bin(17,0) level 2 dcl 27-78 set ref 1510* 1525* 1525 n_signals 001132 external static fixed bin(17,0) level 2 dcl 4-67 ref 2039 2041 n_system_signals 001134 external static fixed bin(17,0) level 2 dcl 4-72 ref 2077 2078 n_units 16 based fixed bin(17,0) level 2 dcl 1-55 ref 3161 n_users 14 based fixed bin(17,0) level 2 dcl 1-55 set ref 3164* n_words based fixed bin(17,0) level 2 dcl 4-77 ref 920 928 934 1852 1857 name 1 001435 automatic char(32) level 2 in structure "set_type_info" packed packed unaligned dcl 485 in procedure "dialup_" set ref 1740* 1745* 1749 1751* 2948* name 2 based char(32) level 2 in structure "cdte" dcl 10-72 in procedure "dialup_" set ref 562* 575* 587* 807* 879* 943* 1363* 1394 1400* 1432* 1494* 1518* 1563* 1696* 2128* 2341* 2553* 2720 2720* 2740* 3089 3101 3137* 3164* 3187* 3292* 3362 nc 000763 automatic fixed bin(17,0) dcl 449 set ref 698* 699 829* 833 834 834 899* 909* 911 915* 951 957* 959 968 1091* 1093 1094* 1156* 1158 1160* 1216* 1218 1219* 1607 1671 1703 1729 1754 1764 1771 1838* 1842 1847* 1890 1968 network_connection_type 340 based fixed bin(17,0) level 2 dcl 27-78 set ref 966* 1398* new_cpu 001020 automatic fixed bin(71,0) dcl 452 set ref 1593* 1597 new_modes 000764 automatic char(100) packed unaligned dcl 450 set ref 968* 995 996 1000* 1703* 1716* 1720* 1723 1729* 1740 1754* 1768 new_pf 001015 automatic fixed bin(17,0) dcl 451 set ref 1593* 1596 new_proc_auth based structure level 1 dcl 511 new_type parameter char packed unaligned dcl 2942 set ref 2940 2948 2953* 2956 next_disconnected_ate_index 424(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 27-78 ref 3041 no_hold_arg 75(26) based bit(1) level 3 packed packed unaligned dcl 10-72 ref 1340 non_local 000137 automatic bit(1) packed unaligned dcl 3423 set ref 3426* 3427 noprint 17(07) based bit(1) level 3 packed packed unaligned dcl 27-78 set ref 2094* 2176* 2189* 2198* 2630 2654 2664 2813* np_signal based char(2) level 2 packed packed unaligned dcl 511 ref 2052 npw_again_msg 000336 internal static char(28) dcl 419 set ref 1197 1197 3507* npw_again_msg_lth 000345 internal static fixed bin(17,0) dcl 420 set ref 1197* 3507* npw_msg 000346 internal static char(20) dcl 421 set ref 1148 1148 3504* npw_msg_lth 000353 internal static fixed bin(17,0) dcl 422 set ref 1148* 3504* null builtin function dcl 220 ref 456 456 532 534 556 564 565 573 577 586 599 600 822 822 1073 1073 1079 1079 1558 1558 1693 2044 2337 2340 2735 2735 2774 2774 2807 2828 1-53 27-76 3029 3088 3090 3098 3100 3128 3128 3245 3250 3307 3387 3387 3398 3398 3446 3456 o_sw 000101 automatic bit(1) packed unaligned dcl 3069 set ref 3076* 3078* 3083* old_cpu 001016 automatic fixed bin(71,0) dcl 452 set ref 1593* 1595 old_password 22 based char(8) level 2 packed packed unaligned dcl 27-78 set ref 1109* 1129 1194 1292* old_type 001022 automatic char(32) packed unaligned dcl 453 set ref 963* 971 983 options 50(17) based structure level 3 packed packed unaligned dcl 10-72 origin 5 based structure level 2 dcl 502 outer_module 26 based char(32) level 2 packed packed unaligned dcl 27-78 set ref 1387* 1387 output_pending 2 001470 automatic bit(1) level 2 dcl 487 set ref 2715* 2726 p 001032 automatic pointer dcl 454 set ref 1369 1372 1372 1376* 1384 1938 1939 1939 3041 3047* 3049 3049 3049 3049 3338* 3339* p1 001036 automatic pointer dcl 454 set ref 539* 664 676 721 721 730 2033 2052 2246 2251 2255 2261 2267 2272 2319 2586 2586 2589 2595 3077 3078 3078 3081 3083 3083 3083 3083 p_status_code parameter fixed bin(35,0) dcl 2984 set ref 2982 2989* parse_login_line_ 000622 constant entry external dcl 299 ref 968 parse_login_line_$dial_line 000624 constant entry external dcl 300 ref 1607 parse_login_line_$slave_line 000626 constant entry external dcl 301 ref 1671 part_1 based structure level 2 dcl 14-33 password_gpw_length 2041 based fixed bin(17,0) level 3 dcl 14-33 ref 1120 password_min_length 2040 based fixed bin(17,0) level 3 dcl 14-33 ref 1120 password_pronunciation 001040 automatic char(16) packed unaligned dcl 455 set ref 1127* 1135* 1140* pdtep 354 based pointer level 2 in structure "ute" dcl 27-78 in procedure "dialup_" ref 1449 1449 1576 1576 2335 2335 pdtep 001046 automatic pointer initial dcl 456 in procedure "dialup_" set ref 456* pdtp 001044 automatic pointer initial dcl 456 set ref 456* person 4 based char(24) level 2 in structure "ute" packed packed unaligned dcl 27-78 in procedure "dialup_" set ref 1363* 1494* 1531* 1572* 1610 1611 1619 1674 1675 1683 2112* 2128* 2163* 2301* 2406* 2423* 2436* 2470* 2524* 2636* 2638* 2830* 3043* 3049 3049 3090 3099 3279* 3309 person 137 based char(20) level 3 in structure "cdte" packed packed unaligned dcl 10-72 in procedure "dialup_" set ref 1696* pf_in_dialup 50 based fixed bin(17,0) level 2 dcl 10-44 set ref 1596* 1596 ppm 75(18) based bit(1) level 3 packed packed unaligned dcl 10-72 set ref 1751* 2953* preempted 420 based fixed bin(17,0) level 2 dcl 27-78 set ref 1526 1526* 2092 2292 2296 2297* 2301 2301* 2309 2319 2416 2419 2431 2433* 2465 2465* 2467* 2492 2519 2523 proc_create_ok 431(15) based bit(1) level 3 packed packed unaligned dcl 27-78 ref 1493 proc_id 276 based bit(36) level 2 dcl 27-78 set ref 638 1555* 1571* 2060* proc_term_fmt 000165 internal static varying char(100) dcl 416 set ref 2148* 3494* proc_term_loop_fmt 000217 internal static varying char(100) dcl 416 set ref 2159* 3496* process 111 based pointer level 2 packed packed unaligned dcl 10-72 set ref 554 565* 573 1392* 1693* 2340* 3146 3558 process_authorization 24 based bit(72) level 2 in structure "ute" dcl 27-78 in procedure "dialup_" set ref 1369* 1369* 1372* 1372* 1372* 1372* 1514 2272* 2274 3007* 3317* process_authorization 276 based bit(72) array level 3 in structure "whotab" dcl 29-10 in procedure "dialup_" set ref 2274* process_authorization_range 300 based bit(72) array level 2 dcl 27-78 set ref 2246* project 144 based char(9) level 3 in structure "cdte" packed packed unaligned dcl 10-72 in procedure "dialup_" set ref 1696* project 12 based char(12) level 2 in structure "ute" packed packed unaligned dcl 27-78 in procedure "dialup_" set ref 1363* 1494* 1531* 1572* 2112* 2128* 2163* 2301* 2406* 2423* 2436* 2470* 2524* 2636* 2638* 2830* 3043* 3049 3049 3090 3099 3279* 3310 pw_msg 000354 internal static char(16) dcl 423 set ref 1084 1084 3501* pw_msg_lth 000360 internal static fixed bin(17,0) dcl 424 set ref 1084* 3501* q 001034 automatic pointer dcl 454 set ref 2827* 2828 2830 2830 range parameter bit(72) array dcl 3214 set ref 3211 3216* rcp_init_flags based structure level 1 packed packed unaligned dcl 15-8 realtime_in_dialup 44 based fixed bin(71,0) level 2 dcl 10-44 set ref 1595* 1595 reason 001050 automatic varying char(168) dcl 457 set ref 1289* 1291* 1298 1300 1300 1301 1301 recent_fatal_error_count 410 based fixed bin(17,0) level 2 dcl 27-78 set ref 2145* 2155* 2155 2156 recent_fatal_error_time 406 based fixed bin(71,0) level 2 dcl 27-78 set ref 2136 2144* recent_wakeup_count 127 based fixed bin(17,0) level 2 dcl 10-72 set ref 615* 619* 619 620 622* recent_wakeup_time 130 based fixed bin(71,0) level 2 dcl 10-72 set ref 612 616* 621* rtrim builtin function dcl 220 ref 1378 1378 2991 3089 3090 3090 3099 3099 3101 3105 3309 3310 3501 3501 3504 3504 3507 3507 3513 3513 save_if_disconnected 431(12) based bit(1) level 3 packed packed unaligned dcl 27-78 ref 2319 say_hello 001123 automatic bit(1) packed unaligned dcl 458 set ref 861* 888 1908* 1911* 2361* 2664* 2665* 2905* 3562* 3568* sc_stat_$shutdown_typed 001140 external static bit(1) dcl 19-62 ref 2755 2855 2882 scdtp defined pointer dcl 5-27 ref 551 1595 1595 1596 1596 1597 1597 1598 1598 3556 3557 scramble_ 000630 constant entry external dcl 302 ref 1109 1128 1193 1244 seg based char packed unaligned dcl 3247 set ref 3262 3264 3264 segl 002360 automatic fixed bin(17,0) dcl 3246 set ref 3249* 3259* 3259 3261 3262 3263 3264 3264 segp 002356 automatic pointer initial dcl 3245 set ref 3245* 3249* 3250 3262 3264 3264 3269* send_initial_string 431(04) based bit(1) level 3 packed packed unaligned dcl 27-78 ref 988 send_mail_$access_class 000632 constant entry external dcl 303 ref 3317 send_mail_info 001505 automatic structure level 1 dcl 20-5 set ref 3311* 3317 3317 send_mail_info_version_2 001504 automatic fixed bin(17,0) initial dcl 20-3 set ref 20-3* 3312 sender 253 based char(32) level 2 packed packed unaligned dcl 27-78 ref 1625 sender_ring 5(18) based bit(18) level 3 packed packed unaligned dcl 502 ref 630 sent_from 1 001505 automatic char(32) level 2 dcl 20-5 set ref 3315* service_type 32(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 10-72 ref 3559 session 46 based char(8) level 2 packed packed unaligned dcl 1-55 ref 925 929 1037 1040 2446 session_cost 370 based float bin(27) level 2 dcl 27-78 set ref 2636* 2638* set_term_type_info based structure level 1 dcl 21-8 set_type_info 001435 automatic structure level 1 unaligned dcl 485 set ref 1742 1742 2950 2950 short 001602 automatic char(8) dcl 2986 set ref 2989* shxx 001124 automatic char(8) dcl 459 set ref 882* 946* 954* 1020* 1033* 1043* 1052* 1100* 1104* 1131* 1166* 1171* 1227* 1236* 1252* 1377* 1435* 1499* 1616* 1619* 1631* 1680* 1683* 1744* 1815* 1834* 1871* 2111* 2112* 2139* 2225* 2227 2424* 2546* 2550* 2794* 3142* 3500* 3503* 3506* 3512* signal_type based char(8) dcl 515 ref 664 676 721 721 730 2033 2319 2586 2586 2589 2595 3077 3078 3078 3081 3083 3083 3083 3083 signal_type1 based char(4) level 2 dcl 498 ref 2042 2042 2092 2124 2169 signals 2 001132 external static char(8) array level 2 packed packed unaligned dcl 4-67 ref 2039 simulated_wakeup_sw 001126 automatic bit(1) packed unaligned dcl 460 set ref 525* 530* 771 3451 size builtin function dcl 220 ref 3413 3413 slave_dial 50(13) based bit(1) level 4 packed packed unaligned dcl 10-72 set ref 1611 1636 1675 1696* slave_pw 17(03) based bit(1) level 4 packed packed unaligned dcl 27-78 ref 1315 special_message 50 based char(128) level 2 in structure "anstbl" packed packed unaligned dcl 1-55 in procedure "dialup_" set ref 3157 special_message based char packed unaligned dcl 3154 in procedure "hello" set ref 3157* special_msg_fmt 000160 constant char(5) initial packed unaligned dcl 3153 set ref 3157* special_pw 17(02) based structure level 3 packed packed unaligned dcl 27-78 ref 1289 1312 state 77 based fixed bin(17,0) level 2 dcl 10-72 set ref 789 1639 2084 2338 2652 2700 2740* 2750 2755 2849 2853 2855 2865 2880 2882 2915 2925 2973 3093 3102 3563 static_fault_sw 000361 internal static bit(1) initial dcl 425 set ref 3432 3433* 3435* static_label 000362 internal static label variable dcl 426 set ref 540* 1266* 1445* 1589* 1592* 2034* 2806* 3440 string builtin function dcl 220 set ref 1289 1312 1741* 2949* stti_version_1 constant fixed bin(17,0) initial dcl 21-5 ref 1739 2947 substr builtin function dcl 220 set ref 834 834 950 968 968 1062 1300* 1607 1607 1671 1671 1703 1703 1729 1729 1740 1754 1754 1768 1771 1771 1890 1890 1968 1968 2720 3078 3078 3081* 3081 3083 3083 3083 3083 3262 3264 3264 3362 3367 3406* 3407* 3409* 3409 3409 sus_channel 310 based fixed bin(71,0) level 2 dcl 27-78 set ref 1571* 2055* 2060* sus_sent 431(08) based bit(1) level 3 packed packed unaligned dcl 27-78 set ref 1524* 2054 2057* 2405 2494 suspended 431(09) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 27-78 in procedure "dialup_" set ref 1524* 2054 2063* 2405 suspended 273(02) based bit(1) array level 3 in structure "whotab" packed packed unaligned dcl 29-10 in procedure "dialup_" set ref 1521* 2058* 2064* switches 11 001505 automatic structure level 2 dcl 20-5 sys_log_ 000634 constant entry external dcl 304 ref 562 575 579 587 744 755 760 773 879 1363 1494 1696 2112 2128 2163 2301 2406 2423 2436 2470 2524 2572 2740 2818 2821 2824 2830 2836 2975 3043 3139 3373 3453 3538 3547 sys_log_$error_log 000636 constant entry external dcl 305 ref 807 943 1432 1531 1563 1572 2720 3137 3187 3251 3292 3318 sysdir 22 based char(64) level 2 packed packed unaligned dcl 1-55 set ref 3249* 3251* 3254* sysid 121 based char(32) level 2 dcl 29-10 set ref 3164* system_signals 2 001134 external static char(8) array level 2 packed packed unaligned dcl 4-72 ref 2077 t1 001127 automatic float bin(27) dcl 461 set ref 2634* 2636* 2638* 3161* 3164* t2 001130 automatic float bin(27) dcl 461 set ref 3162* 3164* tab_string 001131 automatic varying char(512) dcl 462 set ref 3332* 3334 3338 3339 3339 tac 002110 automatic structure level 1 dcl 3172 set ref 3176* 3177 3177 tag 15 based char(1) level 2 packed packed unaligned dcl 27-78 set ref 1287* 1572* tanswb 001332 automatic char(4) packed unaligned dcl 463 set ref 3092* 3108* 3115* 3429* 3437* tcode 001333 automatic fixed bin(35,0) dcl 464 set ref 541* 915* 917 918 1037* 1040* 1042* 1043* 1045 1094* 1096 1099 1160* 1162 1165 1219* 1221 1224 1232* 1234* 1235* 1236* 1446* 1498* 1499* 1537* 1803* 1807* 1813* 1815* 2035* 2043* 2044 2044 2047* 2048* 2073* 2104* 2110 2111* 2114* 2182* 2195* 2205* 2211* 2217* 2224* 2233* 2235* 2242* 2247* 2293* 2305* 2356 2382* 2389* 2446* 2447* 2450* 2456* 2477* 2546 2546* 2702 2814* tcode_left_half based bit(18) level 2 packed packed unaligned dcl 494 ref 2044 temp_atep 001334 automatic pointer dcl 465 set ref 1383* 1386 1387 1389 temp_password 001336 automatic char(8) packed unaligned dcl 466 set ref 1160* 1165 1170 1170 1170 1175 1175 1182* 1193* 1193* 1194 1201 term_info 001447 automatic structure level 1 unaligned dcl 486 set ref 3471 3471 term_type 2 001447 automatic char(32) level 2 packed packed unaligned dcl 486 set ref 3474 terminal_info based structure level 1 dcl 23-6 terminal_info_version constant fixed bin(17,0) initial dcl 23-16 ref 3470 terminal_type 326 based char(32) level 2 packed packed unaligned dcl 27-78 set ref 993* 1396* termstop 000254 constant char(8) initial dcl 403 set ref 2473 termstop_msg based fixed bin(71,0) dcl 404 set ref 2473* time 001340 automatic fixed bin(71,0) dcl 467 set ref 891* 893* 894* timer_manager_$alarm_wakeup 000640 constant entry external dcl 306 ref 894 2728 timer_manager_$reset_alarm_wakeup 000642 constant entry external dcl 307 ref 1385 1508 1642 1694 2066 2279 2358 2490 2519 2663 2690 2712 3296 tinuse 001407 automatic fixed bin(17,0) dcl 470 set ref 2830* 2836* 3095* 3110* 3116* 3373* 3430* 3437* tname 001342 automatic varying char(64) dcl 468 set ref 2830* 2836* 3089* 3090* 3090 3099* 3101* 3101 3105* 3105 3114* 3373* 3429* 3437* tra_vec 001404 automatic fixed bin(17,0) dcl 469 in procedure "dialup_" set ref 555* 556 556 556 556 594* 691 721 725* 730 739 739 739 739 751 751 751 769 769 771 773* 779 tra_vec 74(18) based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 10-72 in procedure "dialup_" set ref 555 562* 666 701 826* 906* 952* 1090* 1154* 1208* 1444* 1539* 1587* 1643* 1692* 1826* 1830* 1900 2338* 2460* 2538* 2619 2621* 2626 2662 2672 2710 2711* 2732* 2748 2750* 2765 2810* 3094 3559 translate builtin function dcl 220 ref 1740 trusted_path_login 2034 based bit(1) level 3 dcl 14-33 ref 2179 2192 2232 2255 2479 tsignal_type 001363 automatic varying char(64) dcl 468 set ref 2830* 2836* 3083* 3373* 3437* tstate 001405 automatic fixed bin(17,0) dcl 470 set ref 2830* 2836* 3093* 3102* 3106* 3116* 3373* 3430* 3437* ttt_info_$decode_answerback 000644 constant entry external dcl 308 ref 834 ttt_info_$default_term_type 000646 constant entry external dcl 309 ref 802 ttt_info_$dialup_flags 000650 constant entry external dcl 310 ref 1751 2953 ttt_info_$initial_string 000652 constant entry external dcl 311 ref 3332 ttt_info_$modes 000654 constant entry external dcl 312 ref 3344 ttt_info_$preaccess_type 000656 constant entry external dcl 313 ref 1653 ttv 001406 automatic fixed bin(17,0) dcl 470 set ref 2830* 2836* 3094* 3109* 3116* 3373* 3430* 3437* tty_access_class based structure level 1 dcl 24-21 tty_id_code 100 based char(4) level 2 in structure "cdte" dcl 10-72 in procedure "dialup_" set ref 797* 834* 839* 842 842* 875* 879* 964 1006 1006 1062 1395 1454 1581 1758* 1768* 3092 3475* tty_id_code 337 based char(4) level 2 in structure "ute" packed packed unaligned dcl 27-78 in procedure "dialup_" set ref 964* 1395* 1939* 3108 tty_name 316 based char(32) level 2 packed packed unaligned dcl 27-78 set ref 1394* 1939* 2112* 2163* 2301* 2406* 2436* 2470* 2524* 3105 3367 type_to_set 001410 automatic char(32) packed unaligned dcl 471 set ref 799* 802* 805 814* 834* 838* 844 844 847* 1653* 1656 1657* ubits 001420 automatic bit(72) dcl 472 set ref 3406* 3407* 3409 uflags 431 based structure level 2 dcl 27-78 unlock_string 000252 constant char(8) initial packed unaligned dcl 405 ref 3515 unspec builtin function dcl 220 set ref 3078 3078 3083 3083 3083 3083 3176* 3311* 3515* 3515 update_channel 116 based fixed bin(71,0) level 2 dcl 1-55 set ref 3459* update_pending 115 based bit(1) level 2 dcl 1-55 set ref 3457 3458* ur_at 77 based structure level 2 dcl 27-78 user based structure level 1 dcl 17-58 user_abs_attributes based structure level 1 dcl 26-25 user_attributes based structure level 1 dcl 25-21 user_id 002404 automatic char(32) packed unaligned dcl 3305 set ref 3309* 3310* 3310 3317* 3318* user_login_word 001422 automatic char(16) packed unaligned dcl 473 set ref 915* 920 929 950 1012* 1765 1786 1847* 1852 1858 1870 1890* 1894 1894 1895 1895 1896 1896 1897 1897 1899 1968* 1979* 1983 1991 1991 1997 1997 2003 2003 user_name 137 based structure level 2 packed packed unaligned dcl 10-72 user_password 001426 automatic char(8) packed unaligned dcl 474 set ref 1083* 1094* 1099 1103 1103 1103 1108 1108 1109* 1110* 1127* 1128* 1135* 1139* 1219* 1224 1230 1230 1231 1231 1231 1244* 1244* 1248 1289* 1291* user_table_mgr_$free 000660 constant entry external dcl 314 ref 2645 userx 000556 automatic fixed bin(17,0) dcl 443 set ref 2273* 2274 2274 ut_header based structure level 1 dcl 28-16 ute based structure level 1 dcl 27-78 utep 001520 automatic pointer initial dcl 27-76 set ref 554* 556 562* 564* 570* 572 573 575* 575 578 579* 580 581 581 586 587* 589 590 590 594 600 638 638 765 773* 941 941* 943 943* 950 953 961 964 965 966 968* 979 979 988 993 1058 1059 1060 1062 1062 1069 1071 1077 1089 1109 1113 1128 1129 1129 1151 1194 1201 1224 1232 1232 1238 1238 1247 1248 1249 1264 1287 1289 1289* 1291* 1292 1292 1296 1304 1306 1312 1314 1315 1326 1363 1363 1369 1372 1372 1376* 1383 1384* 1386 1386 1387 1389 1392 1393 1394 1395 1396 1397 1398 1400* 1404* 1411 1430 1430* 1432 1432* 1449 1449 1451 1452 1453 1454 1459 1463 1471* 1493 1494 1494 1494* 1510 1512* 1514 1518* 1521 1521 1523 1524 1524 1525 1525 1526 1526 1529* 1531 1531 1534 1535* 1536* 1539 1544* 1545 1555 1560 1561* 1566* 1571 1571 1572 1572 1572 1576 1576 1578 1579 1580 1581 1585* 1588 1607* 1610 1610 1611 1619 1623 1625 1671* 1674 1674 1675 1683 1811 1824 1913 1925 1925* 2054 2054 2055 2056 2057 2058 2058 2060 2060 2063 2064 2064 2066 2092 2092 2094 2101* 2112 2112 2112 2117 2118 2125 2128 2128 2136 2138 2141 2144 2145 2146 2155 2155 2156 2158 2163 2163 2163 2169* 2174 2176 2181 2184 2187 2189 2194 2198 2199 2203 2209 2215 2221 2225* 2227* 2229 2238 2246 2272 2273 2274 2279 2292 2296 2297 2298 2301 2301 2301 2301 2301 2309 2309 2313* 2319 2319 2319 2319 2328* 2329 2330 2330 2332 2332 2335 2335 2337 2341* 2350* 2353* 2372* 2374 2375 2378* 2381 2385* 2388 2405 2405 2406 2406 2406 2410* 2411 2416 2419 2419 2421* 2423 2423 2429* 2431 2433 2436 2436 2436 2437 2439 2443 2454* 2458 2463 2465 2465 2467 2470 2470 2470 2473 2474 2479 2481 2484 2486 2490 2492 2494 2499 2519 2519 2519 2523 2524 2524 2524 2526 2526 2526 2526 2526 2532 2535 2535* 2538 2553* 2567 2568 2572 2572* 2600* 2605* 2608* 2609 2613 2614* 2615* 2630 2631 2634 2636 2636 2636 2638 2638 2638 2645* 2654 2664 2767* 2768* 2807 2809 2812 2813 27-76* 3007 3019 3029* 3043 3043 3049 3049 3090 3090 3090 3098 3099 3099 3105 3108 3109 3110 3146* 3196 3196 3279 3279 3283* 3307 3309 3310 3317 3367 3403 3403 3446 3446 3456 3456 3558* version 001447 automatic fixed bin(17,0) level 2 in structure "term_info" dcl 486 in procedure "dialup_" set ref 3470* version 001505 automatic fixed bin(17,0) level 2 in structure "send_mail_info" dcl 20-5 in procedure "dialup_" set ref 3312* version 001435 automatic fixed bin(17,0) level 2 in structure "set_type_info" dcl 485 in procedure "dialup_" set ref 1739* 2947* wakeup 11 001505 automatic bit(1) level 3 packed packed unaligned dcl 20-5 set ref 3313* wakeup_for_channel 001430 automatic bit(1) initial dcl 476 set ref 476* 553* 612 664 676 721 773* 773* 3088 wakeup_for_process 001431 automatic bit(1) initial dcl 476 set ref 476* 571* 749 765 3098 wakeup_from_as 001432 automatic bit(1) initial dcl 476 set ref 476* 633* 653 730 2595 wakeup_from_ring_zero 001433 automatic bit(1) initial dcl 476 set ref 476* 630* 648 wakeup_from_user 001434 automatic bit(1) initial dcl 476 set ref 476* 638* 643 2038 2578 warning_time 502 based fixed bin(17,0) level 3 dcl 14-33 set ref 2313* wcr 000366 internal static char(1) dcl 427 set ref 3491* 3509* 3509* 3509* 3509* whoptr defined pointer dcl 5-29 ref 581 590 1453 1454 1521 1580 1581 2058 2064 2274 2332 3164 whotab based structure level 1 dcl 29-10 whotabx 430 based fixed bin(17,0) level 2 dcl 27-78 ref 581 581 590 590 1452 1453 1454 1521 1521 1579 1580 1581 2058 2058 2064 2064 2273 2332 2332 words 2 based char(16) array level 2 packed packed unaligned dcl 4-77 set ref 920 920 920 928 934 1000* 1852 1852 1852 1857 write_status_info 001470 automatic structure level 1 dcl 487 set ref 2716 2716 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSQ_METER internal static fixed bin(17,0) initial dcl 6-28 ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 26-38 ABS_DEFER_PRIO internal static fixed bin(17,0) initial dcl 7-35 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 27-326 ABS_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 7-36 ABS_TRYLOG_METER internal static fixed bin(17,0) initial dcl 6-35 ACCESS_AUDIT_HEADER_VERSION_3 internal static fixed bin(9,0) initial unsigned dcl 2-54 ACCTUP_METER internal static fixed bin(17,0) initial dcl 6-26 ACCT_UPDATE_PRIO internal static fixed bin(17,0) initial dcl 7-28 ACTIVE internal static fixed bin(17,0) initial dcl 10-272 ACTIVE_VALUES internal static char(18) initial array dcl 12-86 ADMIN_METER internal static fixed bin(17,0) initial dcl 6-32 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 25-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 1-51 ARH_TYPE_NO_PROXY internal static fixed bin(17,0) initial dcl 2-52 ARH_TYPE_PROXY internal static fixed bin(17,0) initial dcl 2-50 ASINIT_METER internal static fixed bin(17,0) initial dcl 6-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_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 6-43 AS_REQUEST_PRIO internal static fixed bin(17,0) initial dcl 7-30 AT_NORMAL internal static char(8) initial packed unaligned dcl 1-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 1-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 1-116 AUM_METER internal static fixed bin(17,0) initial dcl 6-22 AU_METER internal static fixed bin(17,0) initial dcl 6-23 Automatic_authentication internal static fixed bin(17,0) initial dcl 15-16 CDT_version internal static fixed bin(17,0) initial dcl 10-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 10-38 COMMAND_METER internal static fixed bin(17,0) initial dcl 6-30 CORE_FLUSH_PRIO internal static fixed bin(17,0) initial dcl 7-37 CPG_METER internal static fixed bin(17,0) initial dcl 6-24 DAEMON_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 7-29 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 10-259 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 27-332 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 10-259 DN355 internal static fixed bin(17,0) initial dcl 11-19 DN6600 internal static fixed bin(17,0) initial dcl 11-19 DN6670 internal static fixed bin(17,0) initial dcl 11-19 DN7100 internal static fixed bin(17,0) initial dcl 11-19 DPG_METER internal static fixed bin(17,0) initial dcl 6-25 DSA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 13-83 DSA_DATA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 13-84 DSA_DATA_INPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 13-100 DSA_DATA_OUTPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 13-101 DSA_DEMAND_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 13-85 DSA_DEMAND_TURN_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 13-87 DSA_DEMAND_TURN_MSG internal static fixed bin(8,0) initial unsigned dcl 13-86 DSA_ESTABLISHMENT_MSG internal static fixed bin(8,0) initial unsigned dcl 13-97 DSA_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 13-103 DSA_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 13-35 DSA_PURGE_MSG internal static fixed bin(8,0) initial unsigned dcl 13-88 DSA_RECOVER_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 13-90 DSA_RECOVER_MSG internal static fixed bin(8,0) initial unsigned dcl 13-89 DSA_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 13-91 DSA_RESUME_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 13-93 DSA_RESUME_MSG internal static fixed bin(8,0) initial unsigned dcl 13-92 DSA_SUSPEND_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 13-95 DSA_SUSPEND_MSG internal static fixed bin(8,0) initial unsigned dcl 13-94 DSA_TERMINATED_MSG internal static fixed bin(8,0) initial unsigned dcl 13-98 DSA_TERM_ABNORMAL_MSG internal static fixed bin(8,0) initial unsigned dcl 13-96 DSA_UNSPECIFIED_MSG internal static fixed bin(8,0) initial unsigned dcl 13-82 DSA_USER_UNASSIGN_MSG internal static fixed bin(8,0) initial unsigned dcl 13-99 DUM_METER internal static fixed bin(17,0) initial dcl 6-21 FIXPDT_METER internal static fixed bin(17,0) initial dcl 6-34 FNP_BOOT internal static fixed bin(17,0) initial dcl 10-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 10-298 FNP_FREE internal static fixed bin(17,0) initial dcl 10-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 10-298 FNP_UP internal static fixed bin(17,0) initial dcl 10-298 FTP_SERVICE internal static fixed bin(17,0) initial dcl 10-259 INSTALL_METER internal static fixed bin(17,0) initial dcl 6-27 INSTALL_PRIO internal static fixed bin(17,0) initial dcl 7-31 LINE_1050 internal static fixed bin(17,0) initial dcl 16-22 LINE_2741 internal static fixed bin(17,0) initial dcl 16-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 16-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 16-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 16-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 16-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 16-22 LINE_BSC internal static fixed bin(17,0) initial dcl 16-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 16-22 LINE_DSA internal static fixed bin(17,0) initial dcl 16-22 LINE_ETX internal static fixed bin(17,0) initial dcl 16-22 LINE_G115 internal static fixed bin(17,0) initial dcl 16-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 16-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 16-22 LINE_MC internal static fixed bin(17,0) initial dcl 16-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 16-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 16-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 16-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 16-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 16-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 16-22 LINE_VIP internal static fixed bin(17,0) initial dcl 16-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 16-22 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 27-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 27-284 MAX_DSA_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 13-80 MAX_MCS_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 13-46 MCS_DIALOUT_MSG internal static fixed bin(17,0) initial dcl 13-54 MCS_DIALUP_MSG internal static fixed bin(17,0) initial dcl 13-50 MCS_HANGUP_MSG internal static fixed bin(17,0) initial dcl 13-52 MCS_LINE_STATUS_MSG internal static fixed bin(17,0) initial dcl 13-62 MCS_MASKED_MSG internal static fixed bin(17,0) initial dcl 13-64 MCS_MSG_TYPE_TO_PNAME internal static char(20) initial array packed unaligned dcl 13-67 MCS_QUIT_MSG internal static fixed bin(17,0) initial dcl 13-56 MCS_READ_MSG internal static fixed bin(17,0) initial dcl 13-58 MCS_UNSPECIFIED_MSG internal static fixed bin(17,0) initial dcl 13-48 MCS_WRITE_MSG internal static fixed bin(17,0) initial dcl 13-60 MC_PRIO internal static fixed bin(17,0) initial dcl 7-25 MC_SERVICE internal static fixed bin(17,0) initial dcl 10-259 MOWSE_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 13-36 MPX_BOOT internal static fixed bin(17,0) initial dcl 10-306 MPX_DOWN internal static fixed bin(17,0) initial dcl 10-306 MPX_FREE internal static fixed bin(17,0) initial dcl 10-306 MPX_LOAD_PRIO internal static fixed bin(17,0) initial dcl 7-33 MPX_SERVICE internal static fixed bin(17,0) initial dcl 10-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 10-306 MPX_UP internal static fixed bin(17,0) initial dcl 10-306 MSGCORD_METER internal static fixed bin(17,0) initial dcl 6-29 Manual_authentication internal static fixed bin(17,0) initial dcl 15-16 NETUP_METER internal static fixed bin(17,0) initial dcl 6-37 NETWORK_TYPE_VALUES internal static varying char(8) initial array dcl 13-38 NET_EVENT_MESSAGE_VERSION_1 internal static bit(2) initial packed unaligned dcl 13-20 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 10-280 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 12-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 12-76 No_authentication internal static fixed bin(17,0) initial dcl 15-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 15-16 PDT_entry_lth internal static fixed bin(17,0) initial dcl 17-19 PDT_header_lth internal static fixed bin(17,0) initial dcl 17-19 PDT_person_id_length internal static fixed bin(17,0) initial dcl 17-19 PDT_project_name_length internal static fixed bin(17,0) initial dcl 17-19 PDT_version internal static fixed bin(17,0) initial dcl 17-19 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 12-132 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 27-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 27-261 PT_ALARM internal static fixed bin(17,0) initial dcl 12-106 PT_BUMP internal static fixed bin(17,0) initial dcl 12-106 PT_DAEMON internal static fixed bin(17,0) initial dcl 27-261 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 12-106 PT_DETACH internal static fixed bin(17,0) initial dcl 12-106 PT_FPE internal static fixed bin(17,0) initial dcl 12-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 12-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 27-261 PT_LOGOUT internal static fixed bin(17,0) initial dcl 12-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 12-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 12-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 12-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 12-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 12-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 27-290 SAC_METER internal static fixed bin(17,0) initial dcl 6-31 SHUTDOWN_PRIO internal static fixed bin(17,0) initial dcl 7-27 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 22-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 22-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 22-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 22-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 22-62 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 22-14 SL_TYPE internal static fixed bin(17,0) initial dcl 22-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 22-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 22-14 SSU_METER internal static fixed bin(17,0) initial dcl 6-33 STATE_VALUES internal static char(15) initial array dcl 12-70 SYSERR_COPY_PRIO internal static fixed bin(17,0) initial dcl 7-26 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 27-271 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 12-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 12-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 12-93 TAG_UFT internal static char(1) initial packed unaligned dcl 12-93 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 10-259 TRA_VEC_VALUES internal static char(32) initial array dcl 12-54 TTY_KNOWN internal static fixed bin(17,0) initial dcl 12-64 UFLAG_NAMES internal static varying char(24) initial array dcl 27-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 25-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 25-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 25-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 25-50 UTE_version_4 internal static fixed bin(17,0) initial dcl 27-74 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 12-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 12-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 29-96 as_channel_audit_record based structure level 1 dcl 3-68 as_data_$BS external static char(1) dcl 4-21 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_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_$autp external static pointer dcl 4-31 as_data_$buzzardp external static pointer dcl 4-32 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_$dutp external static pointer dcl 4-37 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_$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_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 as_tty based char(6) packed unaligned dcl 5-18 asmtp defined pointer dcl 5-19 audit_record_header_proxy based structure level 1 dcl 2-22 audit_record_ptr automatic pointer dcl 2-16 authentication_level_names internal static char(12) initial array packed unaligned dcl 15-21 cdtp automatic pointer dcl 10-41 channel_audit_info based structure level 1 dcl 3-138 channel_audit_info_ptr automatic pointer dcl 3-136 devtabp defined pointer dcl 5-20 dial_server_info based structure level 1 dcl 3-124 dial_server_info_ptr automatic pointer dcl 3-122 fnp_models internal static fixed bin(17,0) initial array dcl 11-28 fnp_types internal static char(8) initial array packed unaligned dcl 11-25 fnpep automatic pointer dcl 10-41 generic_destination based char(32) packed unaligned dcl 10-195 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 14-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 14-38 line_types internal static char(16) initial array packed unaligned dcl 16-54 max_line_type internal static fixed bin(17,0) initial dcl 16-48 mgtp defined pointer dcl 5-22 mpxep automatic pointer dcl 10-41 n_sync_line_types internal static fixed bin(17,0) initial dcl 16-50 net_event_message based structure level 1 dcl 13-22 net_event_message_arg automatic fixed bin(71,0) dcl 13-19 pdt based structure level 1 dcl 17-27 pdtdir based char(168) packed unaligned dcl 5-23 recursion_possible internal static bit(18) initial packed unaligned dcl 6-39 rifp automatic pointer dcl 15-6 rs_ptrs based pointer array dcl 5-24 sat_htp defined pointer dcl 5-25 satp defined pointer dcl 5-26 sc_stat_$Go external static bit(1) dcl 19-62 sc_stat_$Go_typed external static bit(1) dcl 19-62 sc_stat_$Multics external static bit(1) dcl 19-62 sc_stat_$Multics_typed external static bit(1) dcl 19-62 sc_stat_$Star_typed external static bit(1) dcl 19-62 sc_stat_$admin_listener_exit_label external static label variable dcl 19-34 sc_stat_$admin_listener_switch external static bit(1) dcl 19-62 sc_stat_$admin_log_iocb external static pointer dcl 19-45 sc_stat_$admin_log_write_ptr external static pointer dcl 19-45 sc_stat_$admin_sci_ptr external static pointer dcl 19-45 sc_stat_$as_log_write_ptr external static pointer dcl 19-45 sc_stat_$did_part1 external static bit(1) dcl 19-62 sc_stat_$did_part2 external static bit(1) dcl 19-62 sc_stat_$did_part3 external static bit(1) dcl 19-62 sc_stat_$exec_access_name external static char(32) packed unaligned dcl 19-15 sc_stat_$info_dir external static char(168) packed unaligned dcl 19-21 sc_stat_$initzer_ttyp external static pointer dcl 19-45 sc_stat_$log_dir external static char(168) packed unaligned dcl 19-21 sc_stat_$master_abort_label external static label variable dcl 19-34 sc_stat_$master_channel external static char(6) dcl 19-29 sc_stat_$master_iocb external static pointer dcl 19-45 sc_stat_$master_sci_ptr external static pointer dcl 19-45 sc_stat_$mc_acs_dir external static char(168) packed unaligned dcl 19-21 sc_stat_$mc_ansp external static pointer dcl 19-45 sc_stat_$mc_iocb external static pointer dcl 19-45 sc_stat_$mc_is_on external static bit(1) dcl 19-62 sc_stat_$no_operator_login external static bit(1) dcl 19-62 sc_stat_$sv1_iocb external static pointer dcl 19-45 sc_stat_$sv2_iocb external static pointer dcl 19-45 sc_stat_$sv3_iocb external static pointer dcl 19-45 sc_stat_$sysdir external static char(168) packed unaligned dcl 19-21 sc_stat_$system_shutdown_label external static label variable dcl 19-34 sc_stat_$test_mode external static bit(1) dcl 19-62 sc_stat_$unidentified_access_name external static char(32) packed unaligned dcl 19-15 sc_stat_$vchn_requires_accept external static bit(1) dcl 19-62 sl_info automatic structure level 1 dcl 22-24 sl_info_code_msg internal static structure level 1 dcl 22-187 sl_info_msg internal static structure level 1 dcl 22-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 22-161 sl_info_sev_code_msg internal static structure level 1 dcl 22-82 sl_info_sev_coded_msg internal static structure level 1 dcl 22-134 sl_info_sev_msg internal static structure level 1 dcl 22-108 sttip automatic pointer dcl 21-6 supported_fnp internal static bit(1) initial array packed unaligned dcl 11-31 sync_line_type internal static fixed bin(17,0) initial array dcl 16-52 sysdir defined char(168) packed unaligned dcl 5-28 terminal_info_ptr automatic pointer dcl 23-15 tty_access_class_ptr automatic pointer dcl 24-19 NAMES DECLARED BY EXPLICIT CONTEXT. DISPLAY_PROCESS_AUTHORIZATION 023435 constant entry internal dcl 2995 ref 1553 abort 021364 constant label dcl 2806 ref 1266 1445 1556 2034 3045 bad_login_slave_dial_request 005050 constant label dcl 972 ref 1609 1673 bad_login_word 005402 constant label dcl 1012 ref 934 bad_password_format 006566 constant label dcl 1166 bump_or_shut 017152 constant label dcl 2443 ref 2437 change_type 023124 constant entry internal dcl 2940 ref 814 847 985 1657 channel_error 023303 constant entry internal dcl 2963 ref 2785 3562 3568 chn_error 021303 constant label dcl 2785 ref 787 815 818 824 832 852 869 872 883 889 910 947 955 958 975 997 1002 1015 1017 1022 1034 1044 1054 1074 1080 1085 1092 1098 1101 1105 1133 1143 1149 1157 1164 1167 1172 1188 1199 1217 1223 1228 1237 1253 1302 1436 1500 1664 1817 1835 1841 1873 2082 2778 3143 3188 3236 3256 3265 3268 3399 3414 3472 chn_user_error 021311 constant label dcl 2794 set ref 848 857 986 991 1655 1658 1725 cleanup_hangup 021222 constant label dcl 2765 ref 2369 2651 2652 2657 connect_arg_error 014362 constant label dcl 1982 ref 1992 1998 2003 2004 connect_common 014232 constant label dcl 1961 ref 1952 1956 connect_error 013305 constant label dcl 1815 ref 1805 1809 connect_handler 000113 constant label array(7) dcl 1883 ref 1881 connect_tty 011166 constant label dcl 1547 set ref 1440 convert_message 023375 constant entry internal dcl 2982 ref 972 1000 1135 1798 1939 2364 2703 3227 3254 3279 3492 3493 3494 3495 3496 3497 3498 create 010771 constant label dcl 1518 ref 2672 create_another_new_proc 015350 constant label dcl 2146 ref 2156 dial_command_join 011656 constant label dcl 1623 ref 1314 dialup_ 002366 constant entry external dcl 16 ref 941 941 1430 1430 dialup_begin 002410 constant label dcl 532 ref 526 eek 003473 constant label dcl 771 ref 702 703 evil 021523 constant label dcl 2827 ref 643 evil1 021467 constant label dcl 2824 ref 569 evil2 021443 constant label dcl 2821 ref 534 evil3 021416 constant label dcl 2818 ref 532 execute_connect_request 007603 constant label dcl 1344 ref 1974 exit 011470 constant label dcl 1589 ref 540 2806 exit1 011475 constant label dcl 1592 ref 666 771 776 827 911 959 1093 1158 1218 1471 1589 1644 1698 1842 2068 2101 2315 2372 2378 2385 2410 2416 2429 2454 2468 2475 2487 2561 2568 2573 2595 2623 2628 2646 2730 2760 2785 2802 2825 2832 2838 2859 2865 2867 2873 2880 2889 2915 2917 2925 2928 2933 fals 021623 constant label dcl 2834 ref 745 756 761 2496 fals0 021676 constant label dcl 2839 ref 680 721 765 2080 2084 2578 2589 2602 falsi 021625 constant label dcl 2835 ref 2840 fan_out 003315 constant label dcl 730 ref 648 free_ute 023566 constant entry internal dcl 3026 ref 1028 1627 1689 1918 2667 2689 3295 get_next_disc_ate_jkp 023604 constant entry internal dcl 3033 ref 1347 1936 get_trace_info 023764 constant entry internal dcl 3065 ref 2829 2835 3372 3434 give_instructions 013276 constant label dcl 1811 ref 1328 1874 grab_tty 024551 constant entry internal dcl 3122 ref 2357 2544 2903 grab_ute 024621 constant entry internal dcl 3134 ref 940 1604 1669 hand 000000 constant label array(25) dcl 783 ref 687 691 702 703 769 769 779 1096 1162 1221 2894 have_different_pw 006345 constant label dcl 1135 ref 1129 hello 024755 constant entry internal dcl 3150 ref 888 1662 3567 ignored_sus 016672 constant label dcl 2406 ref 2494 ignored_term 017102 constant label dcl 2433 ref 2492 illegal_new_proc 015755 constant label dcl 2247 ref 2251 2255 2261 init 022153 constant entry external dcl 3489 initialize_current_access_class 025215 constant entry internal dcl 3170 ref 795 2260 2362 2668 2850 2926 join 026605 constant label dcl 3330 ref 3354 kill 017436 constant label dcl 2508 ref 1541 2172 2177 2185 2190 2201 2207 2213 2219 2243 2248 2277 2376 2383 2390 2412 2448 2461 2482 2816 kill_audit 015477 constant label dcl 2169 ref 2230 list_request 014052 constant label dcl 1932 ref 1330 listen_again 020476 constant label dcl 2678 ref 624 707 789 884 948 1031 1046 1306 1437 1639 1923 1930 2777 2787 2807 3144 lock 025362 constant entry internal dcl 3194 ref 1267 1520 log_disconnected_user_out 014000 constant label dcl 1908 ref 1503 3059 login 004151 constant label dcl 866 ref 1920 2366 2670 2908 login_handler 000056 constant label array(29) dcl 1049 ref 1009 1106 1238 login_modes_join 012426 constant label dcl 1723 ref 1714 1718 logout_handler 000122 constant label array(29) dcl 2101 ref 1475 2099 2236 2294 2298 2306 2426 2439 must_give_proc_no 013272 constant label dcl 1807 ref 1335 1970 new_pw_same_as_old 006325 constant label dcl 1131 ref 1194 no_anon_connect_loop 005617 constant label dcl 1052 ref 1260 no_disconnected_procs 013266 constant label dcl 1803 ref 1932 1961 no_such_process 013223 constant label dcl 1798 ref 1323 1988 print_access_class 025370 constant entry internal dcl 3204 ref 1779 print_access_class_ 025413 constant entry internal dcl 3211 ref 3206 3208 print_ascii_msg 025456 constant entry internal dcl 3222 ref 1025 1364 1765 1786 1858 1870 1899 1983 3217 print_buff 025531 constant entry internal dcl 3233 ref 1379 1421 1709 1734 1746 1759 1776 1800 1941 2797 3057 3228 3281 print_help 025554 constant entry internal dcl 3241 ref 1648 1863 print_logged_out 026121 constant entry internal dcl 3276 ref 1304 1913 process_destroyed 020354 constant label dcl 2642 ref 2559 2617 process_stopped 020034 constant label dcl 2605 ref 2560 2567 2600 prompt_npw 006440 constant label dcl 1148 ref 1173 1190 1238 prompt_npw_vfy 006775 constant label dcl 1197 ref 1240 re_introduce 022765 constant entry external dcl 3551 read_connect_request 013334 constant label dcl 1830 ref 1366 1380 1485 1801 1811 1818 1849 1859 1864 1876 1900 1984 read_connect_request_brief 013324 constant label dcl 1824 ref 1326 1943 read_login_args 004700 constant label dcl 952 ref 969 1608 read_login_line 004376 constant label dcl 906 ref 917 1035 1660 1665 1710 1726 1735 1747 1752 1760 1766 1769 1777 1780 read_password 005646 constant label dcl 1062 ref 1611 1675 reintro_fails 023111 constant label dcl 3568 ref 3566 reject_login_word 005547 constant label dcl 1037 ref 925 929 remove_channel 026263 constant entry internal dcl 3288 ref 2800 2978 return_immediately 011531 constant label dcl 1600 ref 1592 2819 2822 send_mail 026364 constant entry internal dcl 3300 ref 2425 set_tabs_and_modes 026602 constant entry internal dcl 3324 ref 856 2363 2958 set_tabs_and_modes_gently 027033 constant entry internal dcl 3351 ref 990 1750 2959 simulated_wakeup 002400 constant entry external dcl 528 slave_command_join 012202 constant label dcl 1689 ref 1315 timeout 000031 constant label array(21) dcl 834 ref 704 900 trace 027040 constant entry internal dcl 3358 ref 602 trace_off 022725 constant entry external dcl 3543 trace_on 022611 constant entry external dcl 3519 try_again 005512 constant label dcl 1028 ref 976 1003 1018 1023 1045 1055 1134 1168 1254 1307 1617 1640 1651 1681 1793 1902 2798 try_again_code 005507 constant label dcl 1025 ref 918 1712 1737 1762 1850 1891 1976 trylog 007334 constant label dcl 1266 ref 1258 1948 ttt_error 021356 constant label dcl 2800 ref 803 810 turn_printer_on 027156 constant entry internal dcl 3383 ref 868 1097 1163 1222 2701 3130 type_black 027224 constant entry internal dcl 3396 ref 1087 1153 1204 ucs 027401 constant entry internal dcl 3419 ref 543 543 unlock 027567 constant entry internal dcl 3444 ref 1297 1313 1322 1456 1484 1502 1540 1590 2644 2678 3294 update_term_info 027714 constant entry internal dcl 3467 ref 793 2660 user_typed_quit 005467 constant label dcl 1020 ref 1108 1175 1230 wait_connect_request 013370 constant label dcl 1838 ref 1827 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 33122 34266 30433 33132 Length 36202 30433 1144 1677 2466 372 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dialup_ 2668 external procedure is an external procedure. change_type internal procedure shares stack frame of external procedure dialup_. channel_error internal procedure shares stack frame of external procedure dialup_. convert_message internal procedure shares stack frame of external procedure dialup_. DISPLAY_PROCESS_AUTHORIZATION internal procedure shares stack frame of external procedure dialup_. free_ute internal procedure shares stack frame of external procedure dialup_. get_next_disc_ate_jkp internal procedure shares stack frame of external procedure dialup_. get_trace_info 114 internal procedure is called by several nonquick procedures. grab_tty internal procedure shares stack frame of external procedure dialup_. grab_ute internal procedure shares stack frame of external procedure dialup_. hello internal procedure shares stack frame of external procedure dialup_. initialize_current_access_class internal procedure shares stack frame of external procedure dialup_. lock internal procedure shares stack frame of external procedure dialup_. print_access_class internal procedure shares stack frame of external procedure dialup_. print_access_class_ internal procedure shares stack frame of external procedure dialup_. print_ascii_msg internal procedure shares stack frame of external procedure dialup_. print_buff internal procedure shares stack frame of external procedure dialup_. print_help internal procedure shares stack frame of external procedure dialup_. print_logged_out internal procedure shares stack frame of external procedure dialup_. remove_channel internal procedure shares stack frame of external procedure dialup_. send_mail internal procedure shares stack frame of external procedure dialup_. set_tabs_and_modes internal procedure shares stack frame of external procedure dialup_. trace internal procedure shares stack frame of external procedure dialup_. turn_printer_on internal procedure shares stack frame of external procedure dialup_. type_black internal procedure shares stack frame of external procedure dialup_. ucs 158 internal procedure is assigned to an entry variable. unlock internal procedure shares stack frame of external procedure dialup_. update_term_info internal procedure shares stack frame of external procedure dialup_. begin block on line 3553 begin block shares stack frame of external procedure dialup_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 bad_login_word_fmt dialup_ 000042 dum_msg dialup_ 000044 garbg dialup_ 000075 garbg_lth dialup_ 000076 greeting_fmt dialup_ 000130 hangup_msg dialup_ 000132 hangup_msg_lth dialup_ 000133 init_term_fmt dialup_ 000165 proc_term_fmt dialup_ 000217 proc_term_loop_fmt dialup_ 000251 logout_fmt dialup_ 000303 logout_fmt1 dialup_ 000335 loudsw dialup_ 000336 npw_again_msg dialup_ 000345 npw_again_msg_lth dialup_ 000346 npw_msg dialup_ 000353 npw_msg_lth dialup_ 000354 pw_msg dialup_ 000360 pw_msg_lth dialup_ 000361 static_fault_sw dialup_ 000362 static_label dialup_ 000366 wcr dialup_ 000367 loud_select_sw dialup_ 000370 loud_select_channel dialup_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dialup_ 000100 connect_immediate dialup_ 000101 added_info dialup_ 000201 buff dialup_ 000376 code dialup_ 000377 ignore_code dialup_ 000400 date_time dialup_ 000421 dial_qual dialup_ 000431 dial_arg1 dialup_ 000441 error_mess dialup_ 000472 error_message dialup_ 000512 format dialup_ 000544 funct dialup_ 000546 gpw_length dialup_ 000547 have_ate dialup_ 000550 have_cdte dialup_ 000551 helphelp dialup_ 000552 i dialup_ 000553 j dialup_ 000554 k dialup_ 000555 lgwd dialup_ 000556 userx dialup_ 000557 jj dialup_ 000560 just_dialed_up dialup_ 000561 logout_brief dialup_ 000562 logout_hold dialup_ 000563 modes_string dialup_ 000763 nc dialup_ 000764 new_modes dialup_ 001015 new_pf dialup_ 001016 old_cpu dialup_ 001020 new_cpu dialup_ 001022 old_type dialup_ 001032 p dialup_ 001034 q dialup_ 001036 p1 dialup_ 001040 password_pronunciation dialup_ 001044 pdtp dialup_ 001046 pdtep dialup_ 001050 reason dialup_ 001123 say_hello dialup_ 001124 shxx dialup_ 001126 simulated_wakeup_sw dialup_ 001127 t1 dialup_ 001130 t2 dialup_ 001131 tab_string dialup_ 001332 tanswb dialup_ 001333 tcode dialup_ 001334 temp_atep dialup_ 001336 temp_password dialup_ 001340 time dialup_ 001342 tname dialup_ 001363 tsignal_type dialup_ 001404 tra_vec dialup_ 001405 tstate dialup_ 001406 ttv dialup_ 001407 tinuse dialup_ 001410 type_to_set dialup_ 001420 ubits dialup_ 001422 user_login_word dialup_ 001426 user_password dialup_ 001430 wakeup_for_channel dialup_ 001431 wakeup_for_process dialup_ 001432 wakeup_from_as dialup_ 001433 wakeup_from_ring_zero dialup_ 001434 wakeup_from_user dialup_ 001435 set_type_info dialup_ 001447 term_info dialup_ 001470 write_status_info dialup_ 001474 argp dialup_ 001476 argl dialup_ 001500 ansp dialup_ 001502 cdtep dialup_ 001504 send_mail_info_version_2 dialup_ 001505 send_mail_info dialup_ 001520 utep dialup_ 001602 short convert_message 001604 long convert_message 001644 authorization_string DISPLAY_PROCESS_AUTHORIZATION 001726 code DISPLAY_PROCESS_AUTHORIZATION 001727 format DISPLAY_PROCESS_AUTHORIZATION 001760 line DISPLAY_PROCESS_AUTHORIZATION 002042 line_lth DISPLAY_PROCESS_AUTHORIZATION 002110 tac initialize_current_access_class 002136 c_a_c print_access_class_ 002356 segp print_help 002360 segl print_help 002404 user_id send_mail 002422 init_sw set_tabs_and_modes 002462 i begin block on line 3553 get_trace_info 000100 i get_trace_info 000101 o_sw get_trace_info 000102 char8 get_trace_info ucs 000100 errm ucs 000136 erri ucs 000137 non_local ucs THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_g_a r_e_as r_ne_as alloc_char_temp unpk_to_pk cat_realloc_chars call_ext_out_desc call_ext_out call_int_this call_int_other begin_return_mac return_mac fl2_to_fx1 tra_ext_2 mdfx1 shorten_stack ext_entry int_entry int_entry_desc divide_fx3 clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. act_ctl_$activity_unbump act_ctl_$close_account act_ctl_$cp act_ctl_$dp act_ctl_$open_account aim_check_$equal aim_check_$in_range as_access_audit_$process as_access_audit_$process_connect_denied as_check_condition_ as_dump_ as_meter_$enter as_meter_$exit_values astty_$tty_abort astty_$tty_changemode astty_$tty_event astty_$tty_force astty_$tty_get_chars astty_$tty_getmode astty_$tty_new_proc astty_$tty_order astty_$tty_read astty_$tty_state asu_$asu_listen asu_$asu_remove asu_$attach_ate asu_$check_for_stopped_process asu_$find_process asu_$release_ate asu_$release_suspended_process asu_$reschedule_bump_timer asu_$reset_access_class asu_$send_term_signal asu_$start_process asu_$suspend_process asu_$write_chn_message asu_$write_message check_password_ condition_ convert_access_class_$to_string convert_authorization_$to_string_range convert_status_code_ cpg_ cpg_$set_pit_tty_info cu_$arg_count cu_$arg_ptr cv_dec_check_ date_time_$format device_acct_$off device_acct_$on dial_ctl_ dial_ctl_$continue_tandd_attach dial_ctl_$dial_term dial_ctl_$finish_dial_out dial_ctl_$finish_priv_attach dial_ctl_$finish_tandd_attach display_access_class_ dpg_ dpg_$finish generate_word_ hcs_$initiate_count hcs_$terminate_noname hcs_$wakeup ioa_$rs ioa_$rsnnl ipc_$decl_ev_call_chn ipc_$drain_chn ipc_$unmask_ev_calls lg_ctl_$login lg_ctl_$logout lg_ctl_$logout_channel lg_ctl_$logout_no_process lg_ctl_$validate login_parse_ login_parse_$password match_star_name_ parse_login_line_ parse_login_line_$dial_line parse_login_line_$slave_line scramble_ send_mail_$access_class sys_log_ sys_log_$error_log timer_manager_$alarm_wakeup timer_manager_$reset_alarm_wakeup ttt_info_$decode_answerback ttt_info_$default_term_type ttt_info_$dialup_flags ttt_info_$initial_string ttt_info_$modes ttt_info_$preaccess_type user_table_mgr_$free THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$CR as_data_$ansp as_data_$as_procid as_data_$cdtp as_data_$login_words as_data_$rs_ptrs as_data_$signal_types as_data_$system_signal_types as_data_$whoptr as_error_table_$aclass_banner_msg as_error_table_$activity_unbump as_error_table_$ask_for_help as_error_table_$automatic_logout as_error_table_$bad_answerback as_error_table_$bad_login_word_msg as_error_table_$bad_password_format as_error_table_$bad_terminal_id as_error_table_$bump_cancelled as_error_table_$coming_up as_error_table_$detach as_error_table_$dialup_error as_error_table_$disc_hd_msg as_error_table_$ds_user_ignored as_error_table_$ds_user_required as_error_table_$fpe_caused_logout as_error_table_$generated_pw_err as_error_table_$generated_pw_msg as_error_table_$give_connect_request as_error_table_$give_connect_request_no_disc as_error_table_$give_instructions as_error_table_$greeting_msg as_error_table_$hangup_msg as_error_table_$help_gpw_verify as_error_table_$help_new_pw as_error_table_$help_npw_verify as_error_table_$help_password as_error_table_$illegal_new_proc as_error_table_$illegal_signal as_error_table_$init_err as_error_table_$init_term_msg as_error_table_$list_disconnected_msg as_error_table_$login_args as_error_table_$login_auth_msg as_error_table_$logout1_msg as_error_table_$logout_disconnected_msg as_error_table_$logout_msg as_error_table_$must_give_proc_no as_error_table_$new_password_indistinct as_error_table_$new_pw_err as_error_table_$no_connect_aclass as_error_table_$no_disc_hd as_error_table_$no_disconnected_procs 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_$no_such_process_msg as_error_table_$now_logged_in as_error_table_$npw_again_msg as_error_table_$npw_msg as_error_table_$only_after_login_msg as_error_table_$proc_term_loop_msg as_error_table_$proc_term_msg as_error_table_$process_create_fail as_error_table_$pw_format_warning as_error_table_$pw_msg as_error_table_$rq_invalid_now_msg as_error_table_$shutdown as_error_table_$special_session as_error_table_$sys_full as_error_table_$term_by_operator as_error_table_$try_again as_error_table_$tty_no_room as_error_table_$unknown_arg_msg as_error_table_$unknown_request_msg as_error_table_$user_typed_quit error_table_$action_not_performed error_table_$badstar error_table_$messages_deferred error_table_$messages_off error_table_$noarg error_table_$smallarg error_table_$undefined_order_request sc_stat_$shutdown_typed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 264 002337 441 002340 446 002342 447 002343 456 002344 476 002347 1 53 002354 20 3 002355 27 76 002357 16 002363 525 002374 526 002375 528 002376 530 002406 532 002410 534 002415 535 002422 539 002425 540 002431 541 002434 542 002435 543 002436 545 002461 547 002464 551 002473 552 002511 553 002513 554 002515 555 002520 556 002525 562 002545 564 002614 565 002616 567 002621 569 002622 570 002626 571 002630 572 002632 573 002634 575 002644 577 002705 578 002707 579 002713 580 002743 581 002746 586 002756 587 002766 589 003026 590 003031 594 003041 599 003043 600 003051 602 003057 612 003063 615 003101 616 003103 617 003105 619 003106 620 003107 621 003114 622 003116 623 003117 624 003133 630 003134 633 003145 638 003154 643 003167 648 003171 653 003173 664 003175 666 003212 669 003223 676 003224 680 003233 687 003236 691 003237 698 003244 699 003263 701 003267 702 003274 703 003276 704 003300 707 003301 721 003302 725 003313 730 003315 739 003334 743 003345 744 003347 745 003373 747 003374 749 003375 751 003377 754 003405 755 003407 756 003433 758 003434 760 003435 761 003461 765 003462 769 003466 771 003473 773 003477 776 003543 779 003544 783 003545 784 003547 786 003552 787 003563 789 003565 791 003571 793 003573 795 003574 797 003575 799 003600 802 003610 803 003634 805 003636 807 003642 810 003700 814 003701 815 003707 817 003711 818 003726 820 003730 822 003734 824 003764 826 003766 827 003771 829 003772 832 004011 833 004013 834 004015 837 004062 838 004065 839 004070 842 004073 844 004103 847 004113 848 004121 851 004123 852 004140 856 004142 857 004144 861 004146 862 004150 866 004151 868 004154 869 004156 871 004160 872 004201 874 004203 875 004207 876 004230 879 004235 882 004301 883 004316 884 004320 888 004321 889 004326 891 004330 893 004337 894 004345 896 004362 898 004370 899 004373 900 004375 906 004376 909 004401 910 004420 911 004422 915 004424 917 004461 918 004465 920 004467 923 004507 925 004511 928 004521 929 004526 934 004545 939 004551 940 004554 941 004555 942 004601 943 004603 946 004651 947 004666 948 004670 950 004671 951 004675 952 004700 953 004703 954 004706 955 004723 957 004725 958 004744 959 004746 960 004750 961 004752 963 004755 964 004761 965 004763 966 004767 968 004771 969 005036 970 005042 971 005044 972 005050 974 005077 975 005116 976 005120 979 005121 981 005131 983 005136 985 005142 986 005171 987 005173 988 005174 990 005177 991 005201 993 005203 995 005210 996 005214 997 005240 998 005243 999 005245 1000 005252 1001 005325 1002 005344 1003 005346 1006 005347 1009 005400 1012 005402 1014 005426 1015 005445 1016 005447 1017 005464 1018 005466 1020 005467 1022 005504 1023 005506 1025 005507 1028 005512 1030 005513 1031 005521 1033 005530 1034 005544 1035 005546 1037 005547 1040 005557 1042 005565 1043 005570 1044 005604 1045 005606 1046 005612 1049 005613 1052 005617 1054 005634 1055 005636 1058 005637 1059 005642 1060 005644 1062 005646 1069 005670 1071 005672 1073 005677 1074 005730 1075 005732 1077 005733 1079 005735 1080 005771 1083 005773 1084 005775 1085 006014 1087 006016 1089 006017 1090 006023 1091 006026 1092 006045 1093 006047 1094 006051 1096 006106 1097 006112 1098 006114 1099 006116 1100 006123 1101 006140 1103 006142 1104 006161 1105 006176 1106 006200 1108 006201 1109 006213 1110 006225 1111 006227 1113 006232 1120 006236 1122 006246 1125 006252 1127 006257 1128 006302 1129 006314 1130 006323 1131 006325 1133 006342 1134 006344 1135 006345 1139 006407 1140 006411 1141 006414 1142 006433 1143 006436 1148 006440 1149 006457 1151 006461 1153 006465 1154 006466 1156 006471 1157 006510 1158 006512 1160 006514 1162 006551 1163 006555 1164 006557 1165 006561 1166 006566 1167 006603 1168 006605 1170 006606 1171 006625 1172 006642 1173 006644 1175 006645 1177 006657 1182 006662 1183 006703 1185 006705 1187 006735 1188 006754 1190 006756 1193 006757 1194 006767 1197 006775 1199 007014 1201 007016 1204 007022 1208 007023 1216 007026 1217 007045 1218 007047 1219 007051 1221 007106 1222 007112 1223 007114 1224 007116 1227 007127 1228 007144 1230 007146 1231 007160 1232 007177 1234 007212 1235 007216 1236 007221 1237 007235 1238 007237 1240 007246 1244 007247 1245 007257 1247 007262 1248 007266 1249 007273 1251 007302 1252 007305 1253 007321 1254 007323 1258 007324 1260 007325 1264 007331 1266 007334 1267 007340 1275 007341 1276 007344 1287 007346 1289 007351 1291 007402 1292 007427 1296 007435 1297 007437 1298 007440 1300 007445 1301 007452 1302 007473 1304 007475 1306 007501 1307 007505 1312 007506 1313 007511 1314 007512 1315 007516 1320 007521 1322 007536 1323 007537 1326 007550 1328 007561 1330 007562 1333 007564 1335 007571 1337 007574 1340 007576 1344 007603 1347 007615 1349 007616 1361 007620 1363 007624 1364 007665 1366 007702 1369 007703 1372 007723 1376 010003 1377 010023 1378 010036 1379 010117 1380 010121 1383 010122 1384 010124 1385 010126 1386 010136 1387 010142 1389 010145 1391 010151 1392 010162 1393 010165 1394 010166 1395 010171 1396 010173 1397 010176 1398 010202 1400 010204 1402 010231 1404 010233 1411 010254 1412 010260 1421 010342 1423 010343 1430 010344 1431 010370 1432 010372 1435 010440 1436 010455 1437 010457 1440 010460 1443 010465 1444 010467 1445 010471 1446 010475 1447 010476 1448 010501 1449 010502 1451 010515 1452 010517 1453 010521 1454 010526 1456 010530 1458 010531 1459 010536 1460 010541 1461 010543 1463 010544 1464 010547 1467 010560 1471 010562 1475 010602 1480 010604 1484 010612 1485 010613 1493 010614 1494 010617 1498 010700 1499 010703 1500 010717 1501 010721 1502 010723 1503 010724 1508 010725 1510 010734 1512 010736 1513 010745 1514 010747 1518 010771 1520 011017 1521 011020 1523 011031 1524 011033 1525 011037 1526 011040 1529 011045 1530 011056 1531 011060 1534 011121 1535 011124 1536 011133 1537 011142 1538 011145 1539 011146 1540 011153 1541 011154 1544 011155 1545 011164 1547 011166 1553 011170 1555 011171 1556 011205 1558 011207 1560 011241 1561 011245 1562 011256 1563 011260 1566 011315 1571 011324 1572 011353 1576 011422 1578 011435 1579 011437 1580 011441 1581 011447 1583 011452 1585 011453 1587 011462 1588 011465 1589 011470 1590 011474 1592 011475 1593 011501 1595 011515 1596 011523 1597 011525 1598 011530 1600 011531 1604 011532 1607 011533 1608 011574 1609 011600 1610 011602 1611 011611 1616 011621 1617 011635 1619 011636 1623 011656 1625 011662 1627 011665 1628 011666 1629 011712 1631 011714 1636 011731 1639 011756 1640 011762 1642 011763 1643 011773 1644 011776 1648 011777 1651 012007 1653 012010 1655 012033 1656 012035 1657 012041 1658 012047 1660 012051 1662 012052 1664 012055 1665 012057 1669 012060 1671 012061 1673 012122 1674 012124 1675 012133 1680 012143 1681 012160 1683 012161 1689 012202 1691 012203 1692 012206 1693 012210 1694 012212 1696 012221 1698 012264 1703 012265 1705 012331 1706 012335 1707 012355 1708 012362 1709 012412 1710 012413 1712 012414 1714 012416 1716 012417 1718 012422 1720 012423 1723 012426 1725 012452 1726 012454 1729 012455 1732 012521 1733 012525 1734 012555 1735 012556 1737 012557 1739 012561 1740 012563 1741 012572 1742 012573 1743 012626 1744 012630 1745 012643 1746 012676 1747 012677 1749 012700 1750 012704 1751 012706 1752 012737 1754 012740 1757 013004 1758 013010 1759 013040 1760 013041 1762 013042 1764 013044 1765 013054 1766 013074 1768 013075 1769 013077 1771 013100 1774 013144 1775 013146 1776 013175 1777 013176 1779 013177 1780 013200 1786 013201 1793 013222 1798 013223 1800 013264 1801 013265 1803 013266 1805 013271 1807 013272 1809 013275 1811 013276 1813 013302 1815 013305 1817 013321 1818 013323 1824 013324 1826 013330 1827 013333 1830 013334 1832 013337 1833 013346 1834 013351 1835 013366 1838 013370 1841 013407 1842 013411 1847 013413 1849 013450 1850 013454 1852 013456 1855 013475 1857 013477 1858 013503 1859 013523 1862 013524 1863 013527 1864 013537 1869 013540 1870 013544 1871 013564 1873 013601 1874 013603 1876 013607 1881 013610 1883 013611 1887 013613 1888 013615 1889 013616 1890 013620 1891 013664 1893 013672 1894 013674 1895 013707 1896 013721 1897 013734 1899 013746 1900 013766 1902 013774 1904 013775 1906 013777 1908 014000 1911 014004 1913 014006 1917 014016 1918 014020 1919 014021 1920 014022 1923 014023 1925 014024 1930 014051 1932 014052 1935 014056 1936 014065 1938 014066 1939 014133 1941 014205 1942 014206 1943 014210 1945 014211 1947 014214 1948 014216 1950 014217 1952 014222 1954 014223 1956 014226 1958 014227 1961 014232 1965 014235 1966 014237 1967 014241 1968 014242 1969 014306 1970 014312 1974 014325 1976 014326 1978 014330 1979 014332 1980 014353 1981 014355 1982 014362 1983 014365 1984 014374 1987 014375 1988 014400 1990 014406 1991 014407 1992 014417 1996 014431 1997 014432 1998 014442 2002 014454 2003 014455 2004 014465 2010 014476 2033 014477 2034 014503 2035 014507 2036 014510 2037 014513 2038 014514 2039 014516 2040 014536 2041 014540 2042 014545 2043 014554 2044 014556 2047 014566 2048 014616 2050 014617 2051 014621 2052 014622 2054 014631 2055 014640 2056 014645 2057 014650 2058 014652 2060 014661 2061 014707 2063 014710 2064 014712 2066 014721 2068 014727 2071 014730 2072 014732 2073 014734 2075 014736 2077 014737 2077 014760 2078 014762 2080 014771 2081 014773 2082 015003 2084 015005 2087 015011 2091 015013 2092 015015 2094 015023 2097 015025 2099 015026 2101 015030 2104 015046 2107 015051 2110 015070 2111 015072 2112 015105 2114 015152 2117 015153 2118 015157 2122 015161 2124 015162 2125 015165 2126 015167 2128 015214 2130 015256 2131 015260 2136 015261 2138 015274 2139 015277 2140 015311 2141 015340 2142 015343 2144 015344 2145 015346 2146 015350 2148 015353 2152 015400 2155 015401 2156 015402 2158 015406 2159 015410 2163 015434 2165 015475 2169 015477 2172 015522 2174 015523 2176 015526 2177 015530 2179 015531 2181 015536 2182 015541 2183 015543 2184 015544 2185 015547 2187 015550 2189 015553 2190 015555 2192 015556 2194 015563 2195 015566 2196 015570 2198 015571 2199 015574 2201 015576 2203 015577 2205 015602 2206 015605 2207 015607 2209 015610 2211 015613 2212 015616 2213 015620 2215 015621 2217 015624 2218 015627 2219 015631 2221 015632 2224 015636 2225 015641 2227 015655 2229 015702 2230 015705 2232 015706 2233 015713 2234 015715 2235 015716 2236 015720 2238 015721 2241 015724 2242 015726 2243 015731 2246 015732 2247 015755 2248 015760 2251 015761 2255 016005 2258 016035 2260 016036 2261 016037 2264 016066 2267 016067 2268 016111 2272 016113 2273 016122 2274 016124 2277 016136 2279 016137 2292 016147 2293 016153 2294 016156 2296 016157 2297 016161 2298 016163 2301 016165 2305 016235 2306 016240 2309 016241 2313 016250 2315 016263 2319 016264 2328 016311 2329 016320 2330 016323 2332 016333 2335 016343 2337 016355 2338 016357 2340 016365 2341 016367 2350 016414 2353 016437 2355 016461 2356 016462 2357 016466 2358 016467 2359 016477 2360 016501 2361 016503 2362 016504 2363 016505 2364 016507 2365 016541 2366 016560 2369 016561 2372 016562 2374 016600 2375 016603 2376 016605 2378 016606 2381 016624 2382 016627 2383 016632 2385 016633 2388 016651 2389 016654 2390 016657 2392 016660 2405 016663 2406 016672 2410 016733 2411 016753 2412 016756 2416 016757 2419 016761 2421 016766 2422 016777 2423 017001 2424 017036 2425 017051 2426 017057 2429 017060 2431 017076 2433 017102 2436 017105 2437 017145 2439 017151 2443 017152 2446 017155 2447 017166 2448 017171 2450 017172 2454 017201 2456 017217 2458 017222 2460 017230 2461 017233 2463 017234 2465 017237 2467 017245 2468 017247 2470 017250 2473 017311 2474 017337 2475 017365 2477 017366 2479 017371 2481 017401 2482 017404 2484 017405 2486 017411 2487 017413 2490 017414 2492 017423 2494 017427 2496 017432 2499 017433 2508 017436 2519 017440 2523 017456 2524 017462 2526 017522 2532 017541 2535 017543 2538 017565 2542 017573 2544 017575 2546 017576 2547 017615 2550 017636 2553 017655 2557 017705 2559 017706 2560 017711 2561 017712 2567 017713 2568 017716 2572 017717 2573 017752 2578 017753 2586 017755 2589 017764 2595 017772 2600 020007 2602 020033 2605 020034 2608 020043 2609 020052 2610 020054 2612 020057 2613 020060 2614 020064 2615 020073 2617 020102 2619 020104 2620 020113 2621 020115 2622 020117 2623 020121 2626 020122 2627 020124 2628 020126 2630 020127 2631 020133 2632 020144 2633 020146 2634 020152 2635 020161 2636 020226 2638 020304 2642 020354 2644 020356 2645 020357 2646 020366 2650 020367 2651 020400 2652 020402 2654 020406 2656 020414 2657 020433 2660 020435 2662 020436 2663 020445 2664 020454 2665 020462 2666 020464 2667 020465 2668 020466 2669 020467 2670 020471 2672 020472 2674 020474 2678 020476 2689 020477 2690 020500 2691 020510 2700 020522 2701 020526 2702 020530 2703 020534 2704 020565 2705 020604 2706 020605 2710 020623 2711 020635 2712 020637 2714 020647 2715 020661 2716 020662 2718 020714 2720 020721 2726 020767 2728 020773 2730 021013 2732 021014 2735 021022 2736 021052 2739 021054 2740 021057 2742 021122 2745 021124 2748 021144 2749 021151 2750 021162 2753 021171 2755 021202 2760 021221 2765 021222 2767 021230 2768 021237 2774 021246 2775 021276 2777 021300 2778 021302 2785 021303 2787 021310 2794 021311 2796 021324 2797 021354 2798 021355 2800 021356 2802 021363 2806 021364 2807 021370 2808 021374 2809 021376 2810 021401 2812 021406 2813 021410 2814 021412 2815 021414 2816 021415 2818 021416 2819 021442 2821 021443 2822 021466 2824 021467 2825 021522 2827 021523 2828 021535 2829 021541 2830 021545 2832 021622 2834 021623 2835 021625 2836 021631 2838 021675 2839 021676 2840 021700 2847 021701 2849 021712 2850 021716 2851 021717 2852 021726 2853 021727 2854 021731 2855 021742 2859 021761 2863 021762 2865 021773 2866 021777 2867 022006 2871 022007 2873 022016 2878 022017 2880 022030 2882 022034 2889 022065 2894 022066 2903 022067 2905 022070 2906 022072 2907 022073 2908 022075 2913 022076 2915 022107 2916 022113 2917 022122 2923 022123 2925 022134 2926 022140 2927 022141 2928 022150 2933 022151 3489 022152 3491 022161 3492 022164 3493 022174 3494 022205 3495 022216 3496 022227 3497 022240 3498 022251 3500 022262 3501 022275 3503 022336 3504 022352 3506 022413 3507 022427 3509 022470 3512 022527 3513 022542 3515 022603 3517 022607 3519 022610 3528 022617 3530 022622 3533 022635 3534 022640 3535 022656 3538 022670 3541 022723 3543 022724 3545 022733 3547 022735 3549 022763 3551 022764 3555 022773 3556 022777 3557 023011 3558 023017 3559 023021 3561 023034 3562 023044 3563 023055 3565 023064 3566 023101 3567 023103 3568 023107 3572 023117 3573 023121 4260 023123 2940 023124 2947 023135 2948 023137 2949 023145 2950 023146 2951 023202 2953 023206 2954 023240 2956 023244 2957 023252 2958 023260 2959 023274 2961 023302 2963 023303 2964 023305 2965 023317 2970 023322 2971 023324 2973 023327 2975 023335 2976 023361 2978 023364 2979 023371 2982 023375 2989 023377 2991 023412 2995 023435 3007 023436 3009 023460 3011 023466 3013 023471 3014 023475 3016 023512 3017 023516 3019 023542 3024 023565 3026 023566 3028 023567 3029 023600 3030 023602 3031 023603 3033 023604 3039 023605 3041 023615 3042 023622 3043 023626 3045 023671 3047 023672 3049 023676 3054 023715 3057 023756 3058 023757 3059 023761 3061 023762 3065 023763 3075 023771 3076 023773 3077 023774 3078 024001 3081 024020 3082 024024 3083 024026 3088 024110 3089 024120 3090 024141 3092 024257 3093 024262 3094 024264 3095 024270 3096 024272 3098 024273 3099 024301 3100 024360 3101 024365 3102 024444 3103 024447 3105 024450 3106 024526 3108 024530 3109 024532 3110 024534 3111 024536 3114 024537 3115 024543 3116 024545 3118 024550 3122 024551 3128 024552 3129 024605 3130 024616 3132 024620 3134 024621 3135 024622 3136 024633 3137 024635 3138 024672 3139 024676 3140 024725 3142 024730 3143 024744 3144 024746 3146 024747 3147 024752 3148 024754 3150 024755 3156 024757 3157 024764 3158 025020 3159 025037 3161 025042 3162 025047 3163 025053 3164 025117 3166 025175 3167 025214 3170 025215 3174 025216 3175 025225 3176 025231 3177 025234 3179 025265 3180 025273 3181 025276 3182 025315 3183 025316 3187 025324 3188 025360 3191 025361 3194 025362 3196 025363 3197 025365 3199 025367 3204 025370 3206 025371 3208 025404 3209 025412 3211 025413 3216 025415 3217 025436 3218 025455 3222 025456 3227 025467 3228 025527 3229 025530 3233 025531 3235 025532 3236 025551 3237 025553 3241 025554 3245 025565 3249 025567 3250 025642 3251 025647 3254 025712 3255 025756 3256 025775 3257 025777 3259 026000 3261 026003 3262 026011 3263 026030 3264 026035 3265 026057 3266 026061 3267 026064 3268 026105 3269 026107 3272 026120 3276 026121 3278 026122 3279 026167 3281 026236 3283 026237 3284 026262 3288 026263 3292 026274 3294 026342 3295 026343 3296 026344 3297 026354 3298 026363 3300 026364 3307 026375 3309 026402 3310 026431 3311 026460 3312 026464 3313 026466 3314 026470 3315 026472 3317 026475 3318 026532 3320 026574 3328 026576 3324 026602 3330 026605 3332 026613 3333 026635 3334 026641 3335 026643 3336 026666 3338 026672 3339 026676 3340 026716 3344 026722 3345 026745 3347 026751 3348 027003 3349 027032 3351 027033 3353 027036 3354 027037 3358 027040 3360 027041 3361 027045 3362 027047 3365 027057 3366 027060 3367 027062 3372 027072 3373 027076 3381 027155 3383 027156 3387 027160 3388 027214 3392 027223 3396 027224 3398 027225 3399 027257 3403 027264 3406 027275 3407 027303 3408 027311 3409 027317 3410 027332 3411 027334 3412 027353 3413 027354 3414 027375 3415 027377 3419 027400 3426 027414 3427 027434 3429 027445 3430 027451 3432 027455 3433 027460 3434 027462 3435 027467 3437 027471 3439 027553 3440 027564 3444 027567 3446 027570 3448 027600 3449 027604 3450 027606 3451 027607 3452 027614 3453 027623 3454 027651 3456 027652 3457 027660 3458 027666 3459 027667 3463 027713 3467 027714 3470 027715 3471 027717 3472 027753 3474 027755 3475 027761 3476 027763 3477 027765 3480 027772 ----------------------------------------------------------- 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