COMPILATION LISTING OF SEGMENT ftp_dialup_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 09/01/88 1338.5 mst Thu Options: optimize map 1 /****^ ****************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright (C) 1982 by Massachusetts Institute of * 6* * Technology and Honeywell Information Systems Inc. * 7* * * 8* * Copyright (c) 1972 by Massachusetts Institute of * 9* * Technology and Honeywell Information Systems, Inc. * 10* * * 11* ****************************************************** */ 12 13 /* format: style4 */ 14 ftp_dialup_: procedure (msg_ptr); 15 16 /* Answering service module for FTP users ... 17* This module performs functions for FTP users analogous to those performed 18* by dialup_ for interactive users. 19* 20* Lifted from dialup_ with miscellaneous changes by Roy P. Planalp 760628 21* Also changed by D. M. Wells to prevent password alteration from FTP 22* Heavily modified by Roy Planalp, summer 1976, to talk FTP language directly. 23* Last modified by D. M. Wells, Oct. 1976, to fix ftp reply code for special 24* sessions and to not check return code for disable_xmog order call. 25* 26* Modified: 15 December 1978 by G. Palter to release ATE 27* entry when dialing to ARPANET_mail. 28* 29* Previous history of original dialup_: 30* 31* Originally coded by J. F. Ossanna Jan 1969 32* Recoded by Michael J. Spier and Robert C. Daley February 1969 33* Revised by Michael D. Schroeder, July 34* Re-revised, converted to PL/1 and adapted to current System/User Control 35* by Michael J. Spier, 25.12.1969, 'twixt X-mas and New-Year 36* Modified for inactive bump & fixes THVV 9/70 37* Modified for new ttydim, removing many waits, 12/70 THVV 38* Modified for efficiency, ucs handler, login args THVV 39* Modified for garbage for consoles without poff, THVV 40* Modified for help function THVV 11/71 41* Modified for dynamic changing of password, J.Phillipps 8/72 42* Modified 740913 by PG for generated passwords 43* Modified 750226 by PG for Multics Communication System (MCS) 44* Modified 750328 by PG to use printer_on and printer_off order calls. 45* Modified 750417 by PG for new_proc -authorization 46* Modified 750502 by PG to fix bug which left logged-out users in whotab 47* Modified 750715 by PG & THVV for MCS Phase II 48* Modified 751110 by PG for bug fixes & ttydim/network dim changes 49* Modified April 1976 by T. Casey to detect fatal process error loops and process initialization failures, 50* . and to ask for new password twice when -cpw is given, 51* . and by P. Green to fix misc. bugs. 52* Modified 760601 by PG to fix pw mask handling and add resetreads. 53* Modified by D. M. Wells, Feb. 1977, to get more info about term and to 54* fix a problem with states and dialed terminals. 55* Modified by Robert Coren, 8/4/77, for site-settable named terminal types. 56* Modified September 1977 by T. Casey to fix hung process bugs. 57* Modified October 1977 by T. Casey to send term signal to process being bumped, and wait for it to destroy itself. 58* Modified January 1978 by T. Casey and R. Coren to fix bugs in previous two modifications. 59* Modified May 1978 by T. Casey to use parameters in installation_parms in the fatal process error loop detector, 60* . and to try to destroy processes whose stopstop wakeups were apparently lost. 61* Modified July 1979 by T. Casey for MR8.0 to implement the ate management strategy needed for 62* process preservation across hangups, (but note that ftp processes are not preserved across hangups). 63* Modified June 1981 by T. Casey for MR9.0 for new wakeup priorities, and bugfixes. 64* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 65* Modified December 1981, E. N. Kittlitz. changes to login_parse_. 66* Modified January 1982, E. N. Kittlitz. eliminate edited modes fiddling. 67* Modified May 1982, E. N. Kittlitz. New AS initialization. 68* Modified September 1982, E. N. Kittlitz. Channel name in login banner. 69* Modified October 1982 by J. G. Ata for RFC765 support. 70* Modified February 1983 by E. N. Kittlitz for new Password: prompt. 71* Modified May 1983 by E. N. Kittlitz for AIMish sty support. 72* Modified September 1983 by J. Spencer Love to use channel access class rather than default authorization. 73* Modified January 1983 by J. G. Ata to fix reply codes, put back answerback 74* processing, and miscellaneous bug fixes. 75* Modified September 1984 by J. G. Ata to install WAIT_HANGUP functionality. 76* Modified 1984-12-13 by E. Swenson to start processes with asu_$start_process 77* Modified 1985-04-19 by E. Swenson for signal_io_ condition. 78**/ 79 80 /****^ HISTORY COMMENTS: 81* 1) change(85-07-29,Swenson), approve(86-08-13,MCR7512), 82* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 83* Modified to initialize tty_access_class structure and recompiled for 84* tty_access_class include file change. 85* 2) change(86-01-29,Swenson), approve(86-08-13,MCR7512), 86* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 87* Added display of process AIM authorization upon login. This used to be 88* displayed by act_ctl_, but now is done by dialup_ and ftp_dialup_. 89* 3) change(86-09-21,Beattie), approve(86-09-22,MCR7542), 90* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 91* Remove references to the 963 and 029 preaccess commands and 92* remove support for ARDS, 202_ETX, 2741 and 1050 in system 93* interfaces. 94* 4) change(87-04-27,GDixon), approve(87-08-03,MCR7741), 95* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1055): 96* A) Upgraded for change to answer_table.incl.pl1 and 97* user_table_entry.incl.pl1. 98* B) Note new user-signalled event for the disconnect command (disconn). 99* Although the command cannot be used in absentee processes, if the user 100* attempts to call terminate_process_ for a disconnection, we will 101* instead destroy the process. 102* 5) change(87-05-11,GDixon), approve(87-08-03,MCR7741), 103* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1055): 104* A) Replace freeing of UTE with call to user_table_mgr_$free. 105* B) Use constant from dialup_values.incl.pl1 to set ute.tag. 106* 6) change(87-05-15,GDixon), approve(87-08-03,MCR7741), 107* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1055): 108* A) Set ute.line_type from cdte.line_type. 109* B) Use constants to test/set ute.preempted. 110* 7) change(88-08-03,GDixon), approve(88-08-03,MCR7973), 111* audit(88-08-11,Lippard), install(88-09-01,MR12.2-1096): 112* A) Always check whether a CDTE is available before testing it to 113* determine if using RFC765 protocol or earlier protocol. 114* (phx20445) 115* B) Restore saved cdte.process pointer to UTE when a NETML person ID 116* attempts to dial to the ARPANET_mail dial ID (network mail server) 117* and fails. This allows the user to login his own NETML process 118* rather than getting a null pointer fault referencing cdte.process 119* (which failed dial_ctl_ attempt set to null). (phx20444) 120* C) Correct problem in sending special session message as a separate 121* response, rather than as part of the greeting banner response. 122* When a "word login MESSAGE" pre-greeting banner message is 123* present, ftp_dialup_ was sending that message as a separate 124* response: 125* 126* 120 Unattended Service. 127* 220-Multics MR12.2: Honeywell Bull, Phoenix AZ, SysM (Channel CHAN) 128* 220 Load = 29.4 out of 200.0 units: users = 45, 08/03/88 1400. 129* 130* rather than as part of the greeting banner response: 131* 132* 220-Unattended Service. 133* Multics MR12.2: Honeywell Bull, Phoenix AZ, SysM (Channel CHAN) 134* 220 Load = 29.4 out of 200.0 units: users = 45, 08/03/88 1400. 135* 136* Sending two responses in a row (without a response from the 137* sending end) violates FTP protocols in RFC765. In addition, use 138* of the 120 response code for the special message is inappropriate, 139* since it means: 140* 141* 120 Service ready in nnn minutes 142* 143* rather than: 144* 145* 220 Service ready for new user 146* 147* FTP protocols require that the two ends alternate responses, but 148* without this change, Multics was sending two different responses 149* in a row. 150* END HISTORY COMMENTS */ 151 152 /* parameters */ 153 154 dcl msg_ptr ptr; /* argument to event-call procedure */ 155 156 /* builtins */ 157 158 dcl (addr, baseno, clock, divide, float, hbound, index, lbound, length, 159 min, null, reverse, rtrim, string, substr, translate, unspec, verify) builtin; 160 161 /* entries */ 162 163 dcl act_ctl_$close_account entry (ptr); 164 dcl act_ctl_$cp entry (ptr); 165 dcl act_ctl_$dp entry (ptr); /* charge user */ 166 dcl act_ctl_$open_account entry (ptr); 167 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 168 dcl as_dump_ entry (char (*)); 169 dcl astty_$tty_abort entry (ptr, fixed bin, fixed bin (35)); /* astty_ is used for all terminal i/o */ 170 dcl astty_$tty_changemode entry (ptr, char (*), fixed bin (35)); 171 dcl astty_$tty_event entry (ptr, fixed bin (35)); /* cause device signals to come to caller */ 172 dcl astty_$tty_force entry (ptr, ptr, fixed bin, fixed bin (35)); 173 dcl astty_$tty_get_chars entry (ptr, ptr, fixed bin, fixed bin (35)); 174 dcl astty_$tty_new_proc entry (ptr, bit (36) aligned, fixed bin (35)); /* force "uproc" to processid */ 175 dcl astty_$tty_order entry (ptr, char (*), ptr, fixed bin (35)); 176 dcl astty_$tty_read entry (ptr, ptr, fixed bin, fixed bin (35)); 177 dcl astty_$tty_state entry (ptr, fixed bin (35)); 178 dcl asu_$asu_listen entry (ptr, fixed bin (35)); /* program makes event chan & orders listen */ 179 dcl asu_$asu_remove entry (ptr); /* completely removes tty chn from system */ 180 dcl asu_$attach_ate entry (ptr, fixed bin (35)); 181 dcl asu_$check_for_stopped_process entry (ptr, char (*)) returns (bit (1) aligned); 182 dcl asu_$find_process entry (bit (36) aligned, fixed bin, ptr); 183 dcl asu_$release_ate entry (ptr, fixed bin (35)); 184 dcl asu_$remove_cdte entry (ptr); /* remove channel of garbaged cdte, if possible */ 185 dcl asu_$send_term_signal entry (ptr, fixed bin) returns (bit (1) aligned); 186 dcl asu_$start_process entry (ptr); 187 dcl condition_ entry (char (*), entry); 188 dcl convert_ipc_code_ entry (fixed bin (35)); 189 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 190 dcl cpg_ entry (ptr, fixed bin (35)); /* utility to create process */ 191 dcl cpu_time_and_paging_ entry (fixed bin, fixed bin (71), fixed bin); 192 dcl date_time_ entry (fixed bin (71), char (*) aligned); /* formats date and time */ 193 dcl device_acct_$off entry (fixed bin, char (*) aligned, ptr); 194 dcl device_acct_$on entry (fixed bin, char (*) aligned, ptr); 195 dcl dial_ctl_ entry (ptr, char (*), char (*), fixed bin (35)); 196 dcl dial_ctl_$dial_broom entry (ptr, char (8) aligned); 197 dcl dial_ctl_$dial_term entry (ptr); 198 dcl dial_ctl_$finish_priv_attach entry (ptr); 199 dcl dpg_ entry (ptr, char (*)); /* utility to destroy process */ 200 dcl dpg_$finish entry (ptr); /* second half of process destruction */ 201 dcl hcs_$wakeup entry (bit (*) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 202 dcl (ioa_, ioa_$rs, ioa_$rsnnl) entry options (variable); 203 dcl ipc_$decl_ev_call_chn entry (fixed bin (71), entry, ptr, fixed bin, fixed bin (35)); 204 dcl ipc_$drain_chn entry (fixed bin (71), fixed bin (35)); 205 dcl ipc_$unmask_ev_calls entry (fixed bin (35)); 206 dcl lg_ctl_$login entry (ptr, char (8), char (*) varying, fixed bin (35)); 207 dcl lg_ctl_$logout entry (ptr); 208 dcl login_parse_ entry (ptr, fixed bin, char (*), fixed bin, fixed bin, fixed bin (35)); 209 dcl login_parse_$password entry (ptr, fixed bin, char (*), fixed bin, fixed bin, fixed bin (35)); 210 dcl lv_request_$cleanup_process entry (bit (36) aligned); 211 dcl match_star_name_ entry (char (*) aligned, char (*) aligned, fixed bin (35)); 212 dcl parse_ftp_login_line_ entry (ptr, fixed bin, ptr, char (*) aligned, fixed bin (35)); 213 dcl rcp_sys_$unassign_process entry (bit (36) aligned, fixed bin (35)); 214 dcl scramble_ entry (char (8)) returns (char (8)); 215 dcl sub_err_ entry () options (variable); 216 dcl (sys_log_, sys_log_$error_log) entry options (variable); /* error reporting program */ 217 dcl timer_manager_$alarm_wakeup entry (fixed bin (71), bit (2), fixed bin (71)); 218 dcl timer_manager_$reset_alarm_wakeup entry (fixed bin (71)); 219 dcl ttt_info_$decode_answerback entry (char (*), fixed bin, char (*), char (*) aligned, fixed bin (35)); 220 dcl ttt_info_$default_term_type entry (fixed bin, fixed bin, char (*), fixed bin (35)); 221 dcl ttt_info_$preaccess_type entry (char (*), char (*), fixed bin (35)); 222 dcl user_table_mgr_$free entry (ptr); 223 224 /* external static */ 225 226 dcl error_table_$bad_arg fixed bin (35) ext static; 227 dcl error_table_$badstar fixed bin (35) ext static; 228 dcl error_table_$noarg fixed bin (35) ext static; 229 dcl error_table_$out_of_sequence fixed bin (35) ext static; 230 dcl as_error_table_$illegal_new_proc fixed bin (35) external static; 231 dcl as_error_table_$term_by_operator fixed bin (35) external static; 232 dcl as_error_table_$bad_answerback fixed bin (35) external; 233 dcl as_error_table_$illegal_signal fixed bin (35) ext; 234 dcl as_error_table_$dialup_error fixed bin (35) ext; 235 dcl as_error_table_$automatic_logout fixed bin (35) ext; 236 dcl as_error_table_$greeting_msg fixed bin (35) ext; 237 dcl as_error_table_$bad_login_word_msg fixed bin (35) ext; 238 dcl as_error_table_$bad_login_arg_msg fixed bin (35) ext; 239 dcl as_error_table_$no_login_arg_msg fixed bin (35) ext; 240 dcl as_error_table_$init_err fixed bin (35) ext; 241 dcl as_error_table_$logout_msg fixed bin (35) ext; 242 dcl as_error_table_$logout1_msg fixed bin (35) ext; 243 dcl as_error_table_$no_init_proc fixed bin (35) ext; 244 dcl as_error_table_$no_io_attach fixed bin (35) ext; 245 dcl as_error_table_$proc_term_msg fixed bin (35) ext; 246 dcl as_error_table_$init_term_msg fixed bin (35) ext; 247 dcl as_error_table_$proc_term_loop_msg fixed bin (35) ext; 248 dcl as_error_table_$pw_msg fixed bin (35) ext; 249 dcl as_error_table_$shutdown fixed bin (35) ext; 250 dcl as_error_table_$special_session fixed bin (35) ext; 251 dcl as_error_table_$coming_up fixed bin (35) ext; 252 dcl as_error_table_$detach fixed bin (35) ext; 253 dcl as_error_table_$process_create_fail fixed bin (35) ext; 254 dcl as_error_table_$no_signal fixed bin (35) ext; 255 dcl as_error_table_$bump_cancelled fixed bin (35) ext; 256 dcl as_error_table_$sys_full fixed bin (35) ext; 257 dcl as_error_table_$tty_no_room fixed bin (35) ext; 258 dcl 1 ftp_misc_$ftp_login_responder aligned external static, 259 2 pathlen fixed bin (35), 260 2 overseer char (168) aligned; 261 262 /* DECLARATION OF INTERNAL STATIC VARIABLES */ 263 264 dcl static_label label int static; /* where to go on error */ 265 dcl loudsw bit (1) aligned init ("0"b) int static; /* 1 if super-loud */ 266 dcl NL char (1) aligned int static init (" 267 "); 268 dcl dum_msg fixed binary (71) int static initial (0); /* dummy ipc message */ 269 dcl STOPstop char (8) aligned int static init ("STOPstop"); 270 dcl STOPstop_msg fixed bin (71) based (addr (STOPstop)); 271 dcl termstop char (8) aligned int static init ("termstop"); 272 dcl termstop_msg fixed bin (71) based (addr (termstop)); 273 dcl greeting_fmt char (100) aligned varying int static; /* Message format frm as_error_table_ */ 274 dcl bad_login_word_fmt char (100) aligned varying int static; /* .. */ 275 dcl (proc_term_fmt, init_term_fmt, proc_term_loop_fmt) char (100) aligned varying int static; 276 dcl (logout_fmt, logout_fmt1) char (100) aligned varying int static; /* .. */ 277 dcl pw_msg char (16) varying int static; /* "password" */ 278 279 dcl ME char (11) init ("ftp_dialup_") static options (constant); 280 281 /* AUTOMATIC */ 282 283 dcl time fixed bin (71); 284 dcl ftp_765 bit (1); /* On IFF we are using RFC 765 protocol */ 285 dcl ftp_code fixed bin (17); 286 dcl (i, j, k, lgwd) fixed bin; /* temps */ 287 dcl user_login_word char (16); 288 dcl (code, ignore_code) fixed bin (35); /* std status code */ 289 dcl tcode fixed bin (35); /* errcode */ 290 dcl (old_pf, new_pf) fixed bin; 291 dcl (old_cpu, new_cpu) fixed bin (71); 292 dcl (old_pp, new_pp) fixed bin; 293 dcl (saved_atep1, saved_atep2, q, p1) ptr; /* misc pointers */ 294 dcl say_hello bit (1); /* TRUE at login unless logout -hold -brief */ 295 dcl just_dialed_up bit (1); /* Distinguaish between dialup and logout-hold */ 296 dcl user_password char (8); /* password typed by user. scrambled. */ 297 dcl jj fixed bin; /* temp for password parse */ 298 dcl (dial_qual, dial_arg1) char (32); /* for dial command */ 299 dcl funct char (8) aligned; /* used at "hand (8)" - event message */ 300 dcl nc fixed bin; /* char count for read */ 301 dcl (t1, t2) float bin; /* temps for units message */ 302 dcl shxx char (8) aligned; /* error id */ 303 dcl error_mess char (100) aligned; /* ... for convert_status_code */ 304 dcl date_time char (24) aligned; /* character date and time */ 305 dcl buff char (300) aligned; /* i-o buffer for writes */ 306 dcl lg_err char (168) varying; /* reason user couldn't log in, ret. from lg_ctl_ */ 307 dcl type_to_set char (32); /* terminal type to be set */ 308 309 dcl (wakeup_for_channel, /* wakeup over a cdte event channel */ 310 wakeup_for_process, /* wakeup over an ate event channel */ 311 wakeup_from_as, /* wakeup came from answering service */ 312 wakeup_from_ring_zero, /* wakeup came from ring zero */ 313 wakeup_from_user /* wakeup came from user process */ 314 ) bit (1) aligned init (""b); /* switches to keep track of where wakeup came from */ 315 316 dcl tra_vec fixed bin; /* copy of either cdte.tra_vec or ate.destroy_flag */ 317 318 dcl (have_ate, have_cdte) bit (1) aligned init (""b); /* "1"b if respective ptrs ^= null */ 319 320 dcl (tname, tsignal_type) char (64) varying; /* for printing in trace and error messages */ 321 dcl tanswb char (4); 322 dcl (tstate, ttv, tinuse) fixed bin; /* copied from either cdte or ate */ 323 324 dcl 1 term_info like terminal_info; /* for terminal_info order */ 325 326 dcl 1 set_type_info like set_term_type_info; /* for set_term_type order */ 327 328 dcl 1 TTY_ACCESS_CLASS aligned like tty_access_class; 329 330 /* DECLARATION OF BASED STRUCTURES */ 331 332 dcl 1 ev_msg based (msg_ptr) aligned, /* interprocess event message */ 333 2 ev_channel fixed bin (71), /* channel id */ 334 2 ev_message fixed bin (71), /* what user wants to tell me */ 335 2 fromproc bit (36), /* user's process id */ 336 2 origin, 337 3 dev_signal bit (18) unal, /* twx if hardcore */ 338 3 sender_ring bit (18) unal, /* execution ring at call to singal */ 339 2 data_ptr ptr; /* ptr to channel definition table entry (see asu_) */ 340 341 dcl signal_type char (8) aligned based (p1); /* overlay when user signal is 8 chars */ 342 343 dcl 1 bc based (addr (funct)) aligned, /* overlay for terminate_proc signal */ 344 2 signal_type1 char (4), /* "term" usually */ 345 2 code fixed bin; /* system error code */ 346 347 dcl 1 new_proc_auth based (p1) aligned, /* structure from new_proc -auth */ 348 2 np_signal char (2) unaligned, /* "np" */ 349 2 authorization bit (54) unaligned; /* the new authorization */ 350 351 dcl 1 based_tcode based (addr (tcode)) aligned, /* This is used to make sure that */ 352 2 tcode_left_half bit (18) unal, /* .. nobody is pulling a fast one */ 353 2 xxx bit (18) unal; /* .. because convert_status_code tends to blow up */ 354 355 /* */ 356 /* ftp_dialup_ is the procedure associated with the FTP event 357* call channels and is called by the Wait Coordinator whenever an interrupt is 358* signalled by one of the FTP channels to which the answering-service is currently listening. 359* ftp_dialup_ never calls the wait_coordinator (directly nor indirectly), rather, 360* it sets conditional-go to variable cdte.tra_vec to the label desired and returns to 361* the wait coordinator. Upon re-invocation it transfers to that point. */ 362 363 364 if msg_ptr = null then go to evil3; /* Has somebody messed up the pointer? */ 365 if as_data_$ansp = null then go to evil2; /* called before initialization */ 366 ansp = as_data_$ansp; 367 368 /* Initialize */ 369 370 p1 = addr (ev_msg.ev_message); /* get ptr to 72-bit data item */ 371 static_label = exit; /* setup non-local go */ 372 tcode = 0; /* Clear temp code. */ 373 just_dialed_up = "0"b; /* .. */ 374 call condition_ ("any_other", ftp_dialup_ucs); /* Set up handler for any faults. */ 375 /* if any trouble */ 376 anstbl.current_time = clock (); /* Read clock. */ 377 call cpu_time_and_paging_ (old_pf, old_cpu, old_pp); 378 379 /* See where the wakeup came from, and over which kind of channel (ate or cdte) */ 380 381 if baseno (ev_msg.data_ptr) = baseno (scdtp) then do; /* cdte */ 382 cdtep = ev_msg.data_ptr; /* copy pointer to cdte */ 383 wakeup_for_channel = "1"b; /* remember which kind */ 384 utep = cdte.process; /* will be null if not valid */ 385 if cdte.in_use < NOW_DIALED /* it should be, that is */ 386 & utep ^= null then do; /* trap bugs */ 387 call sys_log_ (SL_LOG_SILENT, "^a: non-null atep (^p) for cdte (^p,^a), tv=^d,inuse=^d", 388 ME, utep, cdtep, cdte.name, cdte.tra_vec, cdte.in_use); 389 utep = null; 390 end; 391 tra_vec = cdte.tra_vec; /* copy the tra_vec we want to use */ 392 end; /* end wakeup over channel */ 393 394 else if baseno (ev_msg.data_ptr) = baseno (ansp) then do; /* ate */ 395 utep = ev_msg.data_ptr; /* copy ptr to ate */ 396 wakeup_for_process = "1"b; /* remember which kind */ 397 cdtep = ute.channel; /* unpack ptr to cdte */ 398 if cdtep ^= null then 399 if cdte.process ^= utep then do; /* trap bugs */ 400 call sys_log_ (SL_LOG_SILENT, "^a: re-used cdte (^p,^a) by ate ^p, destroy_flag=^d", 401 ME, cdtep, cdte.name, utep, ute.destroy_flag); 402 cdtep = null; 403 if ^ute.disconnected then do; 404 call sys_log_ (SL_LOG_SILENT, "^a: turning on disconnected flag for ate ^p", 405 ME, utep); 406 ute.disconnected = "1"b; 407 end; 408 end; /* end cdte.process not equal atep */ 409 410 if ute.disconnected & cdtep ^= null then do; 411 call sys_log_ (SL_LOG_SILENT, "^a: turning off disconnected flag for ate ^p, cdte ^p,^a", 412 ME, utep, cdtep, cdte.name); 413 ute.disconnected = ""b; 414 end; 415 416 tra_vec = ute.destroy_flag; /* copy the tra vec that we want to use */ 417 end; /* end wakeup over ate channel */ 418 419 else goto evil1; /* data pointer points to neither cdt nor answer table */ 420 421 if cdtep ^= null then have_cdte = "1"b; /* checking switches is cheaper than testing ptrs for null */ 422 if utep ^= null then have_ate = "1"b; 423 424 if loudsw then call trace; /* now we have enough info to print trace message if wanted */ 425 426 /* We know what kind of wakeup it is. Now see where it's from. */ 427 428 if ev_msg.origin.sender_ring = ""b then /* from ring zero? */ 429 wakeup_from_ring_zero = "1"b; 430 431 else if ev_msg.fromproc = as_procid then /* or from answering service */ 432 wakeup_from_as = "1"b; 433 434 else do; /* either legal wakeup from user, or illegal wakeup 435* from someone playing games or experimenting */ 436 if have_ate then /* if we have an ate */ 437 if ute.active = NOW_HAS_PROCESS /* with a live process */ 438 & ute.proc_id = ev_msg.fromproc then /* and the wakeup is from that process */ 439 wakeup_from_user = "1"b; /* then it is legal */ 440 441 if ^wakeup_from_user then goto evil; /* illegal, so log it and exit */ 442 end; 443 444 /* Now, decide how to handle the wakeup. That's a function of all the above, plus the contents of the event message. */ 445 446 if wakeup_from_ring_zero then goto fan_out; /* trust all wakeups from ring zero */ 447 448 /* ***** The following code is OLD, and needs rethinking and perhaps rewriting */ 449 450 451 if wakeup_from_as then do; /* I can signal myself. */ 452 if signal_type = "device " then go to fan_out; /* software-simulated device signal */ 453 if signal_type = "alarm___" & wakeup_for_channel then do; /* See if timeout. */ 454 if cdte.in_use < NOW_DIALED then go to fals; /* if user is not home, ignore */ 455 if cdte.in_use > NOW_DIALED then go to hand (8); /* if user is logged in, probably bump */ 456 call astty_$tty_read (cdtep, addr (buff), nc, code); /* Dialed up, no process. */ 457 if code = 0 then /* If ev call backlog, mayhave finished line */ 458 if nc > 0 then do; /* .. any chars there? */ 459 j = cdte.tra_vec; /* verify the computed goto */ 460 if j < lbound (hand, 1) then go to eek; 461 if j > hbound (hand, 1) then go to eek; 462 go to timeout (j); /* pick up where we left off */ 463 /* set up new timer? */ 464 end; 465 /* We ought to give the use a reason why we hung up */ 466 go to listen_again; /* User didn't login in 3 minutes */ 467 end; 468 if tra_vec < WAIT_LOGOUT_SIG then /* If not a regular user. */ 469 if signal_type = "termstop" then goto fals0; /* Ignore if extra */ 470 else tra_vec = WAIT_LOGOUT_SIG; /* Make opr command into command even if login pending */ 471 go to fan_out; /* Go bump user. */ 472 end; /* end wakeup from answering service */ 473 474 /* ***** END of OLD CODE */ 475 476 /* It appears that it is ok to fall thru to fan_out, now */ 477 478 /* * COMMENT OUT APPARENTLY UNNECESSARY CODE: */ 479 /* * if cdte.tra_vec > WAIT_LOGOUT_SIG then go to hand (9); /* Nothing else if waiting logout */ 480 /* * if cdte.tra_vec = WAIT_LOGOUT_SIG then /* also, allow process to log itself out */ 481 /* * if ev_msg.fromproc = ate.proc_id then do; /* Assume ipc_ is secure. Our records and his must agree. */ 482 /* * user_signal = "1"b; /* note that is from user */ 483 /* * go to hand (8); /* Go directly to logout point. */ 484 /* * end;/* */ 485 /* * go to evil; /* oh, no you don't */ 486 487 fan_out: /* go where tra_vec says to go */ 488 489 /* Check validity of wakeup/tra_vec combination, before going anywhere */ 490 491 if tra_vec = WAIT_LOGOUT_SIG /* if tra_vec says to expect a process termination signal */ 492 | tra_vec = WAIT_LOGOUT 493 | tra_vec = WAIT_LOGOUT_HOLD 494 | tra_vec = WAIT_NEW_PROC then do; /* then there must be a process */ 495 if ^have_ate then do; /* if there's no ate, there can't be a process */ 496 call sys_log_ (SL_LOG_BEEP, "^a: Program error: null atep with per-process tra_vec value", ME); 497 goto fals; 498 end; 499 end; /* end tra_vec says to expect process termination signal */ 500 501 else /* but if tra_vec is anything else, wakeup must be for cdte */ 502 if wakeup_for_process then do; /* if wakeup isn't for a channel, complain and exit */ 503 if tra_vec = WAIT_DETACH 504 | tra_vec = WAIT_REMOVE 505 | tra_vec = WAIT_DELETE_CHANNEL then do;/* these can be for a process or a channel */ 506 if ^have_cdte then do; /* but we must have a channel */ 507 call sys_log_ (SL_LOG_BEEP, "^a: Program error: null cdtep with per-channel tra_vec value", ME); 508 goto fals; /* fals prints all the relevant variables */ 509 end; 510 end; 511 else do; /* rest of tra_vec values are restricted to per-channel wakeups */ 512 call sys_log_ (SL_LOG_BEEP, "^a: Program error: per-process wakeup with per-channel-only tra_vec value", ME); 513 goto fals; 514 end; 515 end; 516 517 if wakeup_for_process then /* trap bug */ 518 if ute.active = NOW_FREE then /* spurious wakeup for free ate */ 519 goto fals0; /* go log and ignore it */ 520 521 if tra_vec < lbound (hand, 1) /* Subscript range check. */ 522 | tra_vec > hbound (hand, 1) then do; /* if this fails, cdt or anstbl is garbaged. */ 523 eek: 524 call sys_log_ (SL_LOG_BEEP, "^a: ^[CDT^;answer table^] damaged at ^[^p^s^;^s^p^], tra_vec=^d", 525 ME, wakeup_for_channel, wakeup_for_channel, cdtep, utep, tra_vec); 526 527 /* * call asu_$remove_cdte (cdtep); /* remove channel, if cdte is not so garbaged that we can't */ 528 goto exit1; /* clean up metering and exit */ 529 end; 530 531 if have_cdte then 532 if cdte.line_type = LINE_TELNET then /* Use "old" FTP protocol */ 533 ftp_765 = "0"b; 534 else ftp_765 = "1"b; /* Use "new" FTP 535* else ftp_765 = "0"b; /* Without CDTE, use "old" FTP protocol */ 536 537 go to hand (tra_vec); /* this is fast in v2pl1 */ 538 hand (4): timeout (4): /* WAIT_LOGIN_ARGS */ 539 hand (5): timeout (5): /* WAIT_OLD_PASSWORD */ 540 hand (7): timeout (7): /* WAIT_NEW_PASSWORD */ 541 hand (16): timeout (16): /* WAIT_DIAL_OUT */ 542 hand (18): timeout (18): /* WAIT_SLAVE_REQUEST */ 543 hand (19): timeout (19): /* WAIT_GREETING_MSG */ 544 call sys_log_ (SL_LOG_BEEP, "^a: unexpected state ^d for channel definition table at ^p", 545 ME, cdtep -> cdte.tra_vec, cdtep); 546 call asu_$remove_cdte (cdtep); /* remove channel unless cdte is so messed up that we can't */ 547 return; 548 549 /* Come here when a terminal channel dials up. */ 550 551 hand (1): cdte.n_dialups = cdte.n_dialups + 1; /* count number of times TTY has been dialed up */ 552 cdte.dialup_time = anstbl.current_time; /* Note time of dialup. */ 553 554 call astty_$tty_state (cdtep, code); /* make sure tty now dialed up. */ 555 if code ^= 0 then call channel_error (code); /* go get rid of channel if any error */ 556 557 if cdte.state < TTY_DIALED then go to listen_again; /* Transient wakeup. Phone is hung now, give up. */ 558 559 cdte.in_use = NOW_DIALED; /* record that channel is dialed up */ 560 561 call update_term_info; 562 563 if cdte.line_type ^= LINE_TELNET then /* if network channel, we just got host id */ 564 cdte.tty_id_code = "none"; /* but for other channels, we read answerback below */ 565 566 if cdte.initial_terminal_type ^= "" /* if type specified in CMF */ 567 then type_to_set = cdte.initial_terminal_type; 568 else do; /* else figure it out from line-type/baud-rate */ 569 call ttt_info_$default_term_type (term_info.line_type, term_info.baud_rate, type_to_set, code); 570 if code ^= 0 then call channel_error (code); 571 572 if type_to_set = "" 573 then do; 574 call sys_log_ (SL_LOG_BEEP, "^a: Unable to determine initial terminal type for channel ^a", 575 ME, cdte.name); 576 call channel_error (0); 577 end; 578 end; 579 call change_type (type_to_set); /* make this into right kind of terminal */ 580 581 call resetread (); /* flush any trash */ 582 if cdte.line_type ^= LINE_TELNET /* Network channels can't return answerback. */ 583 & ^cdte.flags.dont_read_answerback /* or they might have said not to try */ 584 then do; 585 call astty_$tty_order (cdtep, "wru", null, code); /* Initiate answerback read and send us a wakeup */ 586 /* whether answerback exists or not */ 587 if code ^= 0 then call channel_error (code); /* Now that MCS is in, expect no error */ 588 589 cdte.tra_vec = WAIT_ANSWERBACK; /* and wait for it */ 590 go to exit1; /* Wait for tty dim Wakeup */ 591 592 hand (2): /* WAIT_ANSWERBACK - Got answerback wakeup */ 593 call astty_$tty_get_chars (cdtep, addr (buff), nc, code); /* read it & see if it's there */ 594 /* use get_chars 'cause some answerbacks don't end in a newline */ 595 if code ^= 0 then call channel_error (code); 596 if nc > 0 then do; /* if there is an answerback, process it */ 597 timeout (2): /* come here if we timeout & find answerback there */ 598 call ttt_info_$decode_answerback (substr (buff, 1, nc), (cdte.cur_line_type), type_to_set, 599 cdte.tty_id_code, code); 600 if code ^= 0 then do; 601 type_to_set = ""; 602 cdte.tty_id_code = ""; ; 603 end; 604 605 if cdte.tty_id_code = "" 606 then cdte.tty_id_code = "none"; 607 if type_to_set ^= "" & 608 type_to_set ^= cdte.current_terminal_type /* answerback says different terminal type */ 609 then do; 610 call change_type (type_to_set); 611 if code ^= 0 then call channel_error (code); 612 end; 613 614 call astty_$tty_order (cdtep, "store_id", addr (cdte.tty_id_code), ignore_code); 615 call resetread (); /* flush junk from multi-line answerbacks */ 616 end; 617 end; 618 619 /* Turn off transmogrification - this program uses ftp language */ 620 call astty_$tty_order (cdtep, "disable_xmog", null, code); 621 622 call astty_$tty_changemode (cdtep, "^ll", code); /* insure no line folding */ 623 if code ^= 0 then call channel_error (code); 624 625 /* Here is the login sequence. First, tell him it's Multics, etc. */ 626 627 say_hello = "1"b; /* Always be polite to strangers. */ 628 just_dialed_up = "1"b; /* .. */ 629 630 /* Come here after a logout -hold or after a dialed terminal's master process terminates */ 631 632 login: 633 cdte.count = 1; /* we count login tries and hang up if there are too many */ 634 if cdte.flags.ck_answerback then do; /* If we should check answerback */ 635 call match_star_name_ (cdte.tty_id_code, cdte.answerback, code); 636 if code ^= 0 637 then if code ^= error_table_$badstar /* ignore problems with starname */ 638 then do; 639 call sys_log_ (SL_LOG_BEEP, "^a: wrong answerback on ^a (^a); expected ""^a"", got ""^a"".", 640 ME, cdte.name, cdte.comment, cdte.answerback, cdte.tty_id_code); 641 /* now tell user */ 642 call format_ecode (as_error_table_$bad_answerback, buff, i, 400, 421); 643 call astty_$tty_force (cdtep, addr (buff), i, code); 644 if code ^= 0 then call channel_error (code); /* handle random errors */ 645 go to listen_again; /* hangup the terminal */ 646 end; 647 end; 648 649 if anstbl.session = "shutdown" 650 then do; 651 call hello (); 652 go to listen_again; 653 end; 654 else if say_hello 655 then call hello (); /* Greeting message. */ 656 /* If user dialup during shutdown, hang up */ 657 time = installation_parms.login_time; 658 call timer_manager_$alarm_wakeup (time, "11"b, cdte.event); /* limit time to log in */ 659 660 if just_dialed_up then /* Is this time for initial command? */ 661 if cdte.flags.execute_initial_command then do; /* .. is there one? */ 662 buff = cdte.initial_command; /* Yes. Do it. */ 663 nc = length (cdte.initial_command); 664 go to timeout (3); /* Skip the first read call. */ 665 end; 666 667 read_login_line: 668 cdte.tra_vec = WAIT_LOGIN_LINE; /* Set up transfer vector. */ 669 670 hand (3): call astty_$tty_read (cdtep, addr (buff), nc, code); /* read the login line */ 671 if code ^= 0 then call channel_error (code); 672 if nc = 0 then go to exit1; /* is line in yet? */ 673 674 /* At this point we have a login line. Parse it. */ 675 676 timeout (3): /* come here if line read during timeout */ 677 call interpret_ftp_cmd (buff, nc, jj, user_login_word, code); 678 if code = 0 then go to listen_again; /* BYE or QUIT */ 679 if code = 1 | code = 5 then go to read_login_line; 680 if code = 2 | code = 6 then do; 681 call print_ftp_msg ("Give USER command please. 682 ", 504, 503); 683 goto read_login_line; 684 end; 685 if code = 4 then go to handle_word; 686 687 /* Arriving here we process USER cmd */ 688 call asu_$attach_ate (cdtep, code); /* Allocate anstbl entry */ 689 if code ^= 0 then do; 690 call sys_log_$error_log (SL_LOG, code, ME, "attempting to allocate a user table entry for ^a", cdte.name); 691 if code = as_error_table_$tty_no_room then do; /* if answer table is full */ 692 call sys_log_ (SL_LOG, "^a: The answer table is full (^d entries).", 693 ME, anstbl.max_size); 694 code = as_error_table_$sys_full; /* don't burden user with details, just say "System full." */ 695 end; 696 697 call format_ecode (code, buff, i, 401, 421); /* 421=Service not accepting users now. */ 698 call astty_$tty_force (cdtep, addr (buff), i, code); 699 if code ^= 0 then call channel_error (code); 700 goto listen_again; /* go hang up and listen - no use saying please try again */ 701 end; 702 utep = cdte.process; /* copy ptr to ate that we just got */ 703 have_ate = "1"b; /* and tell everyone else that it's ok to reference the ate */ 704 call ipc_$decl_ev_call_chn (ute.event, ftp_dialup_, utep, INT_LOGIN_PRIO, code); 705 if code ^= 0 then do; 706 call convert_ipc_code_ (code); 707 call sys_log_$error_log (SL_LOG_BEEP, code, ME, 708 "occurred attempting to declare handler for ev chn ^24.3b for ate ^p for ^a", 709 ute.event, utep, cdte.name); 710 711 call format_ecode (as_error_table_$dialup_error, buff, i, 435, 421); /* 435, 421=Log-out forced by system problem. */ 712 call astty_$tty_force (cdtep, addr (buff), i, code); 713 if code ^= 0 then call channel_error (code); 714 goto listen_again; 715 end; 716 ute.tty_id_code = cdte.tty_id_code; 717 ute.line_type = cdte.line_type; 718 719 call parse_ftp_login_line_ (addr (substr (buff, jj, 1)), nc - jj + 1, utep, error_mess, code); 720 if code = error_table_$noarg then do; 721 call print_ftp_msg ("Expected argument for USER command missing. 722 ", 502, 501); 723 goto read_login_line; 724 end; 725 if code = error_table_$bad_arg then do; 726 call print_ftp_msg ("Bad syntax for USER command. 727 ", 501, 501); 728 goto read_login_line; 729 end; 730 731 if code = as_error_table_$bad_login_arg_msg | code = as_error_table_$no_login_arg_msg 732 then do; 733 lg_err = convert_message_nnl (code); 734 call ioa_$rs (convert_message_nnl (code), buff, j, error_mess); 735 buff = format_msg (buff, j, i, 431, 501); 736 call astty_$tty_force (cdtep, addr (buff), i, code); 737 if code ^= 0 then call channel_error (code); 738 goto try_again; 739 end; 740 741 if code ^= 0 then do; 742 call format_ecode (code, buff, i, 431, 501); 743 call astty_$tty_force (cdtep, addr (buff), i, code); 744 if code ^= 0 then call channel_error (code); 745 go to try_again; 746 end; 747 748 if ftp_765 then do; 749 ute.init_proc = substr (ftp_misc_$ftp_login_responder.overseer, 1, length (ute.init_proc)); 750 ute.ip_len = ftp_misc_$ftp_login_responder.pathlen; 751 end; 752 753 user_login_word = ute.login_code; /* obtain lgwd from where parser put it */ 754 handle_word: 755 756 do lgwd = lbound (as_data_login_words.words, 1) to 757 hbound (as_data_login_words.words, 1) 758 while (user_login_word ^= as_data_login_words.words (lgwd)); 759 end; 760 761 if anstbl.session ^= "normal " then /* Check for Special Session */ 762 if lgwd <= 6 then /* (normal login) */ 763 go to reject_login_word; /* ... not allowed during Special Session */ 764 else if lgwd <= hbound (as_data_login_words.words, 1) then ; /* (preaccess command) */ 765 else if user_login_word = anstbl.login_word /* (special session login) */ 766 & anstbl.session ^= "shutdown" then /* and not shutdown */ 767 lgwd = 1; /* convert to "login" */ 768 else go to reject_login_word; /* Don't let user try to guess magic word */ 769 else if lgwd > hbound (as_data_login_words.words, 1) then /* Normal Session. Unknown word */ 770 go to bad_login_word; /* Tell user. Give 'em another chance */ 771 772 /* Note that anonymous users cannot login during special session. */ 773 774 go to login_handler (lgwd); /* Dispatch on login command. */ 775 776 777 login_handler (9): /* "help" */ 778 login_handler (10): /* "HELP" */ 779 login_handler (14): /* "modes" */ 780 login_handler (15): /* "echo" */ 781 login_handler (16): /* "terminal_type" */ 782 login_handler (17): /* "ttp" */ 783 bad_login_word: /* none of these work for FTP */ 784 call ioa_$rs (bad_login_word_fmt, buff, j, user_login_word); /* Not legal login word. Complain. */ 785 buff = format_msg (buff, j, i, 431, 501); 786 go to wm_join; 787 788 try_again_code: 789 buff = convert_message (code, j); 790 buff = format_msg (buff, j, i, 500, 501); 791 792 wm_join: call astty_$tty_force (cdtep, addr (buff), i, code); 793 if code ^= 0 then call channel_error (code); 794 call resetread (); /* flush type-ahead */ 795 796 try_again: /* transfer point for repeat login attempts */ 797 call asu_$release_ate (cdtep, code); /* If an ate was allocated, free it */ 798 cdte.count = cdte.count + 1; /* Count errors. */ 799 if cdte.count > installation_parms.login_tries then go to listen_again; 800 /* Has user tried us too many times? */ 801 go to read_login_line; /* Read another line. */ 802 803 reject_login_word: 804 if anstbl.session = "shutdown" then /* Is the system coming down? */ 805 tcode = as_error_table_$shutdown; /* Yes, tell user */ 806 else if anstbl.session = "init " then /* Not up yet. */ 807 tcode = as_error_table_$coming_up; /* Tell him we will be up shortly. */ 808 else tcode = as_error_table_$special_session; /* Go way kid you bother me */ 809 call format_ecode (tcode, buff, i, 432, 421); 810 call astty_$tty_force (cdtep, addr (buff), i, code); /* tell the user */ 811 if code ^= 0 then call channel_error (code); 812 go to listen_again; /* Hang up on the fella. */ 813 814 815 login_handler (5): /* "ep" */ 816 login_handler (6): /* "enterp" */ 817 ute.anonymous = 1; /* Set anonymous-login flag. */ 818 819 login_handler (1): /* "l" */ 820 login_handler (2): /* "login" */ 821 user_password = ""; /* Preset password to blanks */ 822 substr (buff, 1, length (pw_msg)) = pw_msg; 823 buff = format_msg (buff, length (pw_msg), j, 330, 331); 824 call astty_$tty_force (cdtep, addr (buff), j, code); 825 if code ^= 0 then call channel_error (code); 826 827 cdte.tra_vec = WAIT_PASSWORD; /* Set transfer vector to come back here. */ 828 829 /* Here we are waiting for the password. */ 830 831 hand (6): call astty_$tty_read (cdtep, addr (buff), nc, code); /* read the password */ 832 if code ^= 0 then call channel_error (code); 833 if nc = 0 then go to exit1; /* wait for him */ 834 timeout (6): /* come here if line read during timeout */ 835 call interpret_ftp_cmd (buff, nc, jj, user_password, code); 836 if code ^= 6 837 then if code = 0 then go to listen_again; 838 else if code = 1 | code = 5 839 then goto hand (6); 840 else do; /* tell him off */ 841 call print_ftp_msg ("Give PASS command please. 842 ", 504, 530); 843 goto login_handler (1); 844 end; 845 846 847 user_password = scramble_ (user_password); /* No peeking. */ 848 buff = ""; /* blank out unscrambled version */ 849 850 /* check to see if user is NETML, if so try to dial to network mail server process */ 851 /* if dial succedes no check of the NETML passowrd will occur */ 852 /* In the code for successful dials, saved_atep1 is used to hold the atep for 853* NETML which will need to be released on success. Saved_atep2 holds the 854* atep of the process handling the dials to make the rest of the Answering 855* Server be consistent. DO NOT CHANGE THIS CODE! */ 856 if ute.person = "NETML" 857 then do; /* this is really an attempt to send mail to this ARPANET site */ 858 saved_atep1 = cdte.process; /* need for freeing later */ 859 call dial_ctl_ (cdtep, "ARPANET_mail", "", code); /* try to dial on this registered dial qualifier */ 860 if code = 0 then do; /* if dial worked handle as any dial */ 861 saved_atep2 = cdte.process; /* remember new owner */ 862 cdte.process = saved_atep1; /* dial_ctl_ sets this to server's dutep */ 863 call asu_$release_ate (cdtep, (0)); /* release the answer table slot */ 864 cdte.process = saved_atep2; /* fix cdte to be right */ 865 go to dialed; 866 end; 867 else cdte.process = saved_atep1; /* if dial failed, we will fall through */ 868 end; /* and try to login as USER NETML */ 869 870 871 go to trylog; 872 873 login_handler (3): /* "e" - no password needed. */ 874 login_handler (4): /* "enter" */ 875 ute.anonymous = 1; /* No password needed */ 876 877 trylog: 878 ute.login_flags.cpw, ute.login_flags.generate_pw, ute.login_flags.cdp, ute.login_flags.cda = "0"b; 879 /* Not allowed to change things */ 880 static_label = abort; /* in case error */ 881 882 unspec (TTY_ACCESS_CLASS) = ""b; 883 call astty_$tty_order (cdtep, "get_required_access_class", addr (TTY_ACCESS_CLASS), tcode); 884 if tcode = 0 885 then if TTY_ACCESS_CLASS.access_class_set 886 then do; 887 ute.process_authorization = TTY_ACCESS_CLASS.access_class; 888 ute.login_flags.auth_given = "1"b; 889 end; 890 891 call lock; /* interlock answer table to prevent updates */ 892 893 ute.tag = TAG_INTERACTIVE; /* set instance tag */ 894 895 call lg_ctl_$login (utep, user_password, lg_err, code); /* get permission to log in */ 896 897 if ute.login_result ^= 0 /* did he fail */ 898 then do; 899 call unlock; /* Allow logins */ 900 substr (buff, 1, length (lg_err)) = lg_err; 901 if ute.failure_reason = 1 902 then buff = format_msg (buff, length (lg_err), i, 431, 530); 903 else if ute.failure_reason = 2 | ute.failure_reason = 3 /* act_ctl_ or load_ctl_ threw him out */ 904 then buff = format_msg (buff, length (lg_err), i, 430, 530); 905 call astty_$tty_force (cdtep, addr (buff), i, code); /* tell user what went wrong */ 906 if code ^= 0 then call channel_error (code); 907 if ute.login_result = 1 then go to listen_again; 908 /* don't allow another attempt */ 909 else go to try_again; /* get another chance to login */ 910 end; 911 912 /* User is authorized to log in. */ 913 914 call timer_manager_$reset_alarm_wakeup (cdte.event); 915 /* Turn off egg timer on logins */ 916 917 ute.n_processes = 0; /* set to 'initial process creation' */ 918 919 call act_ctl_$open_account (utep); /* open and activate user's account */ 920 cdte.n_logins = cdte.n_logins + 1; /* count number of successful logins on channel */ 921 922 /* Come here to create new process on login, new_proc, or fatal error termination */ 923 924 create: if cdte.charge_type > 0 then 925 call device_acct_$on ((cdte.charge_type), cdte.name, utep); /* Charge for fancy devices */ 926 call lock; /* interlock answer table to prevent updates */ 927 ute.n_processes = ute.n_processes + 1; /* count number of processes in session */ 928 ute.preempted = PREEMPT_UNBUMP_IGNORE_ALARM; /* in case we came here after operator term command */ 929 930 call cpg_ (utep, code); /* Call utility to create process (calls actproc) */ 931 if code ^= 0 then do; /* should never happen */ 932 call sys_log_$error_log (SL_LOG_BEEP, code, ME, 933 "when creating process for ^a.^a", 934 ute.person, ute.project); 935 /* Clean up after the aborted login (thank you, Steve Landry) */ 936 ute.logout_type = "cpg"; /* act_ctl_$close_account needs a reason for the logout */ 937 call act_ctl_$close_account (utep); /* close account and print logout message for operator */ 938 call lg_ctl_$logout (utep); /* remove user from whotab and return his load units */ 939 tcode = as_error_table_$process_create_fail; /* Tell user we failed. */ 940 i = 0; /* No further message. */ 941 cdte.tra_vec = WAIT_LOGOUT; /* .. and after destroying process, hang up */ 942 call unlock; /* Unlock ate */ 943 go to kill; /* Get tty back. */ 944 end; 945 946 call act_ctl_$cp (utep); /* Record the creation of the user process. */ 947 ute.active = NOW_HAS_PROCESS; /* User now has a process. */ 948 cdte.in_use = NOW_HAS_PROCESS; /* Indicate that there is a process. */ 949 950 /* Display the message "Your authorization is ..." upon process creation 951* or connection. */ 952 953 call DISPLAY_PROCESS_AUTHORIZATION (); 954 955 call astty_$tty_new_proc (cdtep, ute.proc_id, code); /* give tty to new process before it runs */ 956 if code ^= 0 then go to abort; /* kill proc if hungup */ 957 call asu_$start_process (utep); /* Kick the process loose from initial block state */ 958 959 cdte.tra_vec = WAIT_LOGOUT_SIG; /* Set transfer vector. */ 960 ute.destroy_flag = WAIT_LOGOUT_SIG; /* .. */ 961 exit: static_label = exit1; /* in case fault in unlock */ 962 call unlock; /* release answer table, permit updates */ 963 exit1: scdtp -> cdt.realtime_in_dialup = scdtp -> cdt.realtime_in_dialup + (clock () - anstbl.current_time); 964 call cpu_time_and_paging_ (new_pf, new_cpu, new_pp); 965 scdtp -> cdt.pf_in_dialup = scdtp -> cdt.pf_in_dialup + (new_pf - old_pf); 966 scdtp -> cdt.cpu_in_dialup = scdtp -> cdt.cpu_in_dialup + (new_cpu - old_cpu); 967 scdtp -> cdt.pp_in_dialup = scdtp -> cdt.pp_in_dialup + (new_pp - old_pp); 968 scdtp -> cdt.entries_to_dialup = scdtp -> cdt.entries_to_dialup + 1; 969 return; /* This is the main exit. */ 970 971 972 login_handler (7): /* "d" */ 973 login_handler (8): /* "dial" */ 974 call login_parse_ (addr (substr (buff, jj, 1)), nc - jj + 1, dial_qual, k, j, code); 975 if code ^= 0 then go to try_again_code; 976 jj = jj + j; /* Read the "dial qualifier" (machine name) */ 977 call login_parse_ (addr (substr (buff, jj, 1)), nc - jj + 1, dial_arg1, k, j, code); 978 if code ^= 0 then go to try_again_code; 979 call dial_ctl_ (cdtep, dial_qual, dial_arg1, code); 980 if code ^= 0 981 then do; 982 call format_ecode (code, buff, i, 431, 451); /* construct a neat FTP message */ 983 call astty_$tty_force (cdtep, addr (buff), i, ignore_code); 984 if cdte.state < TTY_DIALED then go to listen_again; /* user hung up during dial */ 985 else go to try_again; /* all other errors */ 986 end; 987 dialed: call timer_manager_$reset_alarm_wakeup (cdte.event); /* Success. */ 988 cdte.tra_vec = WAIT_DIAL_RELEASE; /* Set transfer vector to reclaim channel. */ 989 go to exit1; /* Note that cdte.in_use is still NOW_DIALED */ 990 991 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 992 993 994 login_handler (11): /* "MAP" - The Padlipsky command. */ 995 call ttt_info_$preaccess_type ("MAP", type_to_set, code); 996 if code ^= 0 then call channel_error (code); 997 998 if type_to_set ^= "" /* if there's an appropriate type */ 999 then call change_type (type_to_set); /* make upper case input go to lower case */ 1000 call print_ftp_msg ("MAPping will be performed. 1001 ", 200, 200); 1002 go to read_login_line; /* Try again. */ 1003 1004 login_handler (12): /* "hello" command */ 1005 call hello (); /* Repeat greeting */ 1006 go to read_login_line; /* Let him try login now. */ 1007 1008 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1009 1010 login_handler (13): /* "slave" command */ 1011 cdte.current_service_type = SLAVE_SERVICE; /* Set channel up to wait for Godot. */ 1012 cdte.tra_vec = WAIT_DIAL_RELEASE; /* Do something reasonable if it hangs up */ 1013 cdte.process = null; /* .. */ 1014 call timer_manager_$reset_alarm_wakeup (cdte.event); 1015 go to exit1; 1016 1017 1018 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 1019* * * 1020* * Here if a logged-in user has something happen to him * 1021* * which involves destroying his process. * 1022* * * 1023* * logout * 1024* * logout hold * 1025* * fatal error in process * 1026* * out of funds * 1027* * can't start process * 1028* * preempted * 1029* * system coming down * 1030* * standby bump * 1031* * inactive too long * 1032* * bumped/unbumped/terminated/detached by operator * 1033* * hung up phone * 1034* * * 1035* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1036 1037 /* WAIT_LOGOUT_SIG */ 1038 hand (8): funct = signal_type; /* extract event message, tells what to do */ 1039 static_label = abort; /* in case error */ 1040 tcode = 0; /* Assume no special termination code. */ 1041 error_mess = ""; /* clear string used to hold converted status code */ 1042 if wakeup_from_user then do; 1043 do j = 1 to n_signals while (funct ^= signals (j)); /* check in as_data_ */ 1044 end; 1045 if j <= n_signals then ; /* is it known? */ 1046 else if signal_type1 = "term" | signal_type1 = "init" then do; /* these messages have error code in word 2 */ 1047 tcode = bc.code; /* extract code (xxxx) from "term"xxxx or "init"xxxx */ 1048 if tcode ^= 0 /* Validate it. We don't want to be hacked. */ 1049 then if tcode_left_half ^= baseno (null)/* Oops. Not an error_table_ code. */ 1050 then do; /* wonder what is is ... */ 1051 call ioa_$rsnnl ("Code = ^w", error_mess, i, tcode); /* lets see */ 1052 tcode = 0; /* don't try to convert_status_code_ it */ 1053 end; 1054 j = 1; /* Terminate his process. */ 1055 end; 1056 else if new_proc_auth.np_signal = "np" then /* new_proc -auth AUTH */ 1057 j = 13; /* new_proc to new authorization */ 1058 else do; /* That's all a user can signal. */ 1059 j = 1; /* Creative user tried to write own logout, and goofed. */ 1060 funct = "badsignl"; /* Or he may have tried to hack us. */ 1061 tcode = as_error_table_$illegal_signal; /* Might as well tell user. */ 1062 end; 1063 end; 1064 else do; /* Must be a system-generated event. */ 1065 do j = 1 to n_system_signals while (funct ^= system_signals (j)); end; 1066 if j <= n_system_signals then j = j + 19; /* See if it is a system signal. */ 1067 else do; /* Probably a hangup ... check it out */ 1068 if ^have_cdte then goto fals0; /* can't be hangup if no cdte */ 1069 call astty_$tty_state (cdtep, code); 1070 if code ^= 0 then call channel_error (code); /* tolerate no errors */ 1071 1072 if cdte.state = TTY_DIALED /* not a hangup cause terminal is still there */ 1073 then go to fals0; /* ignore it (but log it first) */ 1074 1075 j = 20; /* set jump index to hangup */ 1076 end; 1077 end; 1078 1079 if utep ^= null then do; /* watch out for detach of tty with no process (no ate) */ 1080 if ute.preempted ^= PREEMPT_TERM_SENT then /* unless we have already done so */ 1081 ute.logout_type = signal_type1; /* remember the reason for the logout */ 1082 ute.login_flags.noprint = "0"b; /* usually print logout message. */ 1083 end; 1084 1085 i = 0; /* message length = 0 until we build a message */ 1086 1087 go to logout_handler (j); /* Fast dispatch. */ 1088 1089 logout_handler (27): /* ("terminat") Operator terminated process. */ 1090 if asu_$send_term_signal (utep, j) /* send term signal if appropriate */ 1091 then goto exit1; /* if we did, wait for process to destroy itself */ 1092 tcode = as_error_table_$term_by_operator; /* Tell user why process died. */ 1093 /* Fall through into normal case. */ 1094 1095 logout_handler (1): /* ("term"xxxx or "init"xxxx) Process termination. */ 1096 if have_cdte then 1097 call resetread (); /* abort any read ahead (let writing finish!) */ 1098 if tcode ^= 0 then do; /* If code is not zero then */ 1099 call convert_status_code_ (tcode, shxx, error_mess); /* keep message in error_mess for printing later */ 1100 call sys_log_ (SL_LOG_SILENT, "^a: process terminated ^a.^a ^a ^a", 1101 ME, ute.person, ute.project, cdte.name, shxx); 1102 tcode = 0; /* Don't print it again... */ 1103 end; 1104 1105 if signal_type1 = "init" then do; /* fatal error during process initialization */ 1106 ute.destroy_flag = WAIT_LOGOUT; /* a new process would just get another fatal error */ 1107 call ioa_$rs (init_term_fmt, buff, i, error_mess); /* Put reason for fatal error into message: 1108* Fatal error during process initialization. */ 1109 call sys_log_ (SL_LOG, "^a: fatal error during process creation for ^a.^a ^a", 1110 ME, ute.person, ute.project, cdte.name); 1111 end; 1112 1113 else do; /* fatal error not during initialization - 1114* but check for fatal error loop anyway, since 1115* user might be getting errors during start_up.ec */ 1116 if ute.recent_fatal_error_time + installation_parms.fatal_error_loop_seconds * 1000000 < anstbl.current_time then 1117 do; /* if previous fatal error was long ago */ 1118 ute.recent_fatal_error_time = anstbl.current_time; /* reset the fatal error loop timer */ 1119 ute.recent_fatal_error_count = 1; /* and set the counter back to 1 */ 1120 create_another_new_proc: 1121 ute.destroy_flag = WAIT_NEW_PROC; /* let user have another new process after destroying this one. */ 1122 call ioa_$rs (proc_term_fmt, buff, i, error_mess); /* put reason for fatal error into message: 1123* Fatal error. Process has terminated. 1124* New process created. */ 1125 end; 1126 1127 else do; /* we seem to have a loop */ 1128 ute.recent_fatal_error_count = ute.recent_fatal_error_count + 1; /* count times around it */ 1129 if ute.recent_fatal_error_count < installation_parms.fatal_error_loop_count then /* if not too many */ 1130 goto create_another_new_proc; /* keep going a while longer */ 1131 ute.destroy_flag = WAIT_LOGOUT; /* too many. get out of the loop */ 1132 call ioa_$rs (proc_term_loop_fmt, buff, i, error_mess); /* put reason for fatal error into message: 1133* Fatal error. Process has terminated. 1134* You appear to be in a fatal process error loop. */ 1135 1136 call sys_log_ (SL_LOG, "^a: terminating fatal process error loop for ^a.^a ^a", 1137 ME, ute.person, ute.project, ute.tty_name); 1138 end; 1139 end; 1140 1141 go to kill; 1142 1143 logout_handler (2): /* New_proc */ 1144 ute.destroy_flag = WAIT_NEW_PROC; /* Create new process after destroying process. */ 1145 ute.login_flags.noprint = "1"b; /* no message from us. */ 1146 go to kill; 1147 1148 logout_handler (3): /* logout -hold */ 1149 ute.destroy_flag = WAIT_LOGOUT_HOLD; /* User wants to login again. */ 1150 go to kill; 1151 1152 logout_handler (5): /* logout -bf */ 1153 ute.destroy_flag = WAIT_LOGOUT; 1154 ute.login_flags.noprint = "1"b; /* Inhibit printing of messages. */ 1155 go to kill; 1156 1157 logout_handler (6): /* logout -hold -bf */ 1158 ute.login_flags.noprint = "1"b; /* Inhibit printing of logout message. */ 1159 ute.destroy_flag = WAIT_LOGOUT_HOLD; /* Set transfer vector to allow login */ 1160 go to kill; 1161 1162 logout_handler (7): /* init_err */ 1163 ute.destroy_flag = WAIT_LOGOUT; 1164 tcode = as_error_table_$init_err; /* Process cannot be initialized. */ 1165 go to kill; 1166 1167 logout_handler (8): /* no_ioatt */ 1168 ute.destroy_flag = WAIT_LOGOUT; 1169 tcode = as_error_table_$no_io_attach; /* Cannot attach process I/O streams */ 1170 go to kill; 1171 1172 logout_handler (9): /* no_initproc */ 1173 ute.destroy_flag = WAIT_LOGOUT; 1174 tcode = as_error_table_$no_init_proc; /* Cannot locate initial procedure. */ 1175 go to kill; 1176 1177 logout_handler (13): /* new_proc -auth AUTH */ 1178 ute.destroy_flag = WAIT_NEW_PROC; /* always get new process */ 1179 if ^have_cdte then do; /* can't new_proc -auth in a disconnected process */ 1180 tcode = as_error_table_$illegal_new_proc; 1181 goto kill; 1182 end; 1183 1184 code = 0; 1185 if ^aim_check_$equal (ute.process_authorization, (new_proc_auth.authorization)) then do; 1186 bad_ai_np: tcode = as_error_table_$illegal_new_proc; 1187 call sys_log_$error_log (SL_LOG_SILENT, code, ME, 1188 "new_proc of ^a.a denied by AIM restriction.", ute.person, ute.project); 1189 tcode = as_error_table_$illegal_new_proc; 1190 end; 1191 1192 go to kill; 1193 1194 logout_handler (14): /* termsgnl */ 1195 1196 /* ate.preempted says what to do here: 1197* -1 user unbumped after term signal sent 1198* 0 user unbumped; ignore alarm___ 1199* 1 value internally used in load_ctl_ 1200* 2 user bumped; when alarm___ comes in, send term signal 1201* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit signals come in 1202* 4 user bumped; process sick, so destroy without sending term signal 1203* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the termsgnl). 1204**/ 1205 1206 call timer_manager_$reset_alarm_wakeup (ute.event); /* turn off realtime limit */ 1207 if ute.preempted = PREEMPT_UNBUMP then do; /* unbumped just a little late */ 1208 tcode = as_error_table_$bump_cancelled; /* apologize */ 1209 goto logout_handler (1); /* give the guy a new process */ 1210 end; 1211 else if ute.preempted = PREEMPT_TERM_SENT then do;/* sent term signal, expecting termsgnl */ 1212 ute.preempted = PREEMPT_TERMSGNL_RECEIVED; /* remember that we're no longer waiting for termsgnl */ 1213 goto logout_handler (ute.logout_index); /* go finish what we started to do */ 1214 end; 1215 else do; /* unexpected termsgnl */ 1216 call sys_log_ (SL_LOG_SILENT, "^a: Unexpected termsgnl for ^a.^a ^a", 1217 ME, ute.person, ute.project, ute.tty_name); /* tell sysprogs */ 1218 tcode = as_error_table_$illegal_signal; /* complain to user */ 1219 goto logout_handler (1); /* but give the guy a new process */ 1220 end; 1221 1222 1223 /* User may not signal any of the functions below */ 1224 1225 logout_handler (20): /* hangup */ 1226 if asu_$send_term_signal (utep, j) then /* send a term signal if appropriate */ 1227 goto exit1; /* if we did, wait for process to destroy itself */ 1228 ute.destroy_flag = WAIT_LOGOUT; 1229 goto kill; 1230 1231 logout_handler (21): /* Shutdown */ 1232 if asu_$send_term_signal (utep, j) then /* send term signal if appropriate */ 1233 goto exit1; /* if we did, wait for process to destroy itself */ 1234 ute.destroy_flag = WAIT_LOGOUT; 1235 tcode = as_error_table_$shutdown; /* Multics is shutting down. */ 1236 go to kill; 1237 1238 logout_handler (22): /* bump */ 1239 if asu_$send_term_signal (utep, j) then /* send term signal if appropriate */ 1240 goto exit1; /* if we did, wait for process to destroy itself */ 1241 ute.destroy_flag = WAIT_LOGOUT; 1242 tcode = as_error_table_$automatic_logout; /* Automatic logout. */ 1243 go to kill; 1244 1245 logout_handler (23): /* alarm___ */ 1246 1247 /* alarm___ can occur as a result of several conditions. 1248* Also, we can come here from the termsgnl handler if we sent term in response to alarm___. 1249* Sort it all out here. 1250* ***** CHECK FOR LEFT OVER ALARM AFTER PROCESS HAS BEEN DESTROYED 1251**/ 1252 1253 if funct = "alarm___" then do; /* if really alarm rather than termsgnl */ 1254 if ute.preempted <= PREEMPT_UNBUMP_IGNORE_ALARM then 1255 /* if user has been unbumped */ 1256 goto exit1; /* go away quietly */ 1257 else if asu_$send_term_signal (utep, j) then /* send term signal if appropriate */ 1258 goto exit1; /* if we did, wait for process to destroy itself */ 1259 else if ute.preempted = PREEMPT_TERM_SENT then do; 1260 /* sent term and process failed to respond */ 1261 ignored_term: /* come here if cpu timer runs out after term sent */ 1262 call sys_log_ (SL_LOG, "^a: process ignored term signal ^a.^a ^a", 1263 ME, ute.person, ute.project, ute.tty_name); 1264 if ute.logout_index = 23 then /* if original objective was bump after X minutes */ 1265 goto bump_or_shut; /* go do it */ 1266 else goto logout_handler (ute.logout_index); /* go finish what we started to do */ 1267 end; 1268 end; 1269 1270 bump_or_shut: 1271 1272 ute.destroy_flag = WAIT_LOGOUT; 1273 if anstbl.session = "shutdown" then tcode = as_error_table_$shutdown; 1274 else tcode = as_error_table_$automatic_logout; /* Three minutes' grace expired. */ 1275 go to kill; 1276 1277 logout_handler (24): /* detach */ 1278 if cdte.in_use < NOW_LOGGED_IN then /* operator detach. someone on line? */ 1279 tcode = as_error_table_$detach; /* No. Automatic detach. */ 1280 else do; /* Yes. Must destroy user. Automatic logout. */ 1281 if asu_$send_term_signal (utep, j) then /* send term signal if appropriate */ 1282 goto exit1; /* if we did, wait for process to destroy itself */ 1283 tcode = as_error_table_$automatic_logout; 1284 end; 1285 if have_ate then 1286 ute.destroy_flag = WAIT_DETACH; /* After proc is destroyed, leave phone hung. */ 1287 else cdte.tra_vec = WAIT_DETACH; /* if no process, use cdte to remember what to do */ 1288 go to kill; 1289 1290 logout_handler (25): /* ("unbump") is operator cancelling a bump? */ 1291 if ute.preempted = PREEMPT_TERM_SENT then /* if term signal sent before unbump */ 1292 ute.preempted = PREEMPT_UNBUMP; /* remember that it happened */ 1293 else ute.preempted = PREEMPT_UNBUMP_IGNORE_ALARM; /* else just cancel the bump */ 1294 go to exit1; 1295 1296 logout_handler (26): /* "stopstop" Check for out-of-sequence signals. */ 1297 call sys_log_ (SL_LOG_SILENT, "^a: premature stopstop for ^a.^a ^a", 1298 ME, ute.person, ute.project, cdte.name); 1299 call hcs_$wakeup (anstbl.as_procid, ute.event, termstop_msg, code); 1300 call hcs_$wakeup (anstbl.as_procid, ute.event, STOPstop_msg, code); 1301 go to exit1; 1302 1303 logout_handler (28): /* "termstop" */ 1304 tcode = as_error_table_$no_signal; /* Process terminated without signalling asnwering service. */ 1305 ute.destroy_flag = WAIT_LOGOUT; 1306 goto kill; 1307 1308 logout_handler (29): /* cpulimit: Process used too much cpu time after term sent */ 1309 if ute.preempted ^= PREEMPT_TERM_SENT then goto fals; 1310 /* if not expecting termsgnl, ignore this */ 1311 call timer_manager_$reset_alarm_wakeup (ute.event); /* turn off realtime timer */ 1312 goto ignored_term; /* go complain and kill process */ 1313 1314 1315 logout_handler (4): /* Standard logout. */ 1316 logout_handler (10): /* Disconnect command. Treat as logout. */ 1317 logout_handler (11): /* Unused. Treat as logout. */ 1318 logout_handler (12): /* Unused. Treat as logout. */ 1319 logout_handler (15): /* Unused. Treat as logout. */ 1320 logout_handler (16): /* Unused. Treat as logout. */ 1321 logout_handler (17): /* Unused. Treat as logout. */ 1322 logout_handler (18): /* Unused. Treat as logout. */ 1323 logout_handler (19): /* Unused. Treat as logout. */ 1324 ute.destroy_flag = WAIT_LOGOUT; 1325 1326 kill: 1327 1328 if have_ate then do; /* if there is an answer table entry for this channel */ 1329 if ute.preempted = PREEMPT_TERM_SENT then do;/* if we were waiting for termsgnl and never got it */ 1330 call sys_log_ (SL_LOG_SILENT, "^a: process did not respond properly to trm_ signal. ^a.^a ^a", 1331 ME, ute.person, ute.project, ute.tty_name); 1332 if ute.logout_index ^= 27 then /* if original objective was other than terminate */ 1333 if ute.destroy_flag = WAIT_NEW_PROC then /* if response was f.p.e or newproc */ 1334 /* don't allow tricky user to get out of being bumped */ 1335 if ute.logout_index = 24 then /* put back the original objective */ 1336 ute.destroy_flag = WAIT_DETACH; 1337 else ute.destroy_flag = WAIT_LOGOUT; 1338 end; 1339 1340 if ute.active = NOW_HAS_PROCESS then do; /* if user has a process then destroy it */ 1341 call dial_ctl_$dial_broom (utep, funct);/* clean out attached consoles */ 1342 call rcp_sys_$unassign_process (ute.proc_id, ignore_code); 1343 if ute.lvs_attached then 1344 call lv_request_$cleanup_process (ute.proc_id); 1345 call dpg_ (utep, (funct)); 1346 end; 1347 if have_cdte then /* if we have a cdte also */ 1348 cdte.tra_vec = ute.destroy_flag; /* tell cdte what we're about to do to the ate */ 1349 end; /* end have ate */ 1350 1351 if have_cdte then do; /* if we have a cdte */ 1352 1353 call grab_tty; /* Take over the typewriter */ 1354 1355 if tcode ^= 0 1356 then do; 1357 if ftp_765 1358 then ftp_code = 421; 1359 else do; 1360 if tcode = as_error_table_$automatic_logout 1361 then ftp_code = 434; 1362 else if tcode = as_error_table_$shutdown 1363 then ftp_code = 436; 1364 else if tcode = as_error_table_$detach 1365 then ftp_code = 434; 1366 else ftp_code = 435; 1367 end; 1368 1369 if i > 0 1370 then do; 1371 lg_err = convert_message_nnl (tcode); 1372 buff = lg_err || NL || buff; 1373 i = length (lg_err) + i + 1; 1374 buff = format_msg (buff, i, j, ftp_code, ftp_code); 1375 call astty_$tty_force (cdtep, addr (buff), j, ignore_code); /* give the user the termination msg */ 1376 end; 1377 else do; 1378 call format_ecode (tcode, buff, i, ftp_code, ftp_code); 1379 call astty_$tty_force (cdtep, addr (buff), i, ignore_code); 1380 end; 1381 end; 1382 1383 if cdte.charge_type > 0 then 1384 if have_ate then 1385 if utep ^= null then /* don't try to turn off charging if no user owns device */ 1386 call device_acct_$off ((cdte.charge_type), cdte.name, utep); 1387 1388 i = 0; /* Don't print twice. */ 1389 if cdte.in_use < NOW_LOGGED_IN then goto process_destroyed; /* if no process to destroy, don't try */ 1390 if cdte.in_use = NOW_LOGGED_IN then go to process_stopped; /* Do we need to wait for a process to die? */ 1391 if cdte.in_use > NOW_LOGGED_IN then goto exit1; /* wait for process to be stopped by ring zero */ 1392 1393 end; /* end have cdte */ 1394 1395 /* If we get here, we don't have a cdte */ 1396 1397 if ute.active = NOW_LOGGED_IN then goto process_stopped; 1398 if ute.active > NOW_LOGGED_IN then goto exit1; /* wait for ring zero to stop process */ 1399 1400 /* If we get here, there's a bug */ 1401 1402 call sys_log_ (SL_LOG_BEEP, "^a: cdtep = null and ate.active = ^d for ^p", 1403 ME, ute.active, utep); 1404 goto exit1; /* what else should we do? */ 1405 1406 /* Return here when the process has had a chance to run and destroy itself. 1407* Call accounting to log him out completely, get his channel back, type nice messages. */ 1408 1409 /* WAIT_(LOGOUT LOGOUT_HOLD DETACH NEW_PROC REMOVE DELETE_CHANNEL) */ 1410 hand (9): hand (10): hand (11): hand (12): hand (13): hand (20): 1411 if wakeup_from_user then go to fals0; /* User cannot send this. */ 1412 if signal_type ^= "STOPstop" then 1413 if signal_type ^= "stopstop" then do; /* we're waiting for a stopstop, and this isn't one */ 1414 1415 if signal_type = "device " then goto fals0; /* worse-than-useless signal from network */ 1416 1417 if asu_$check_for_stopped_process (utep, ME) then /* if process is stopped */ 1418 goto process_stopped; /* the stopstop wakeup must have been lost */ 1419 else goto fals0; /* process not stopped; log and ignore this wakeup */ 1420 end; 1421 1422 process_stopped: 1423 call dpg_$finish (utep); 1424 call act_ctl_$dp (utep); 1425 ute.active = NOW_LOGGED_IN; /* No process any more. */ 1426 if have_cdte then 1427 cdte.in_use = NOW_LOGGED_IN; 1428 i = 0; 1429 if ute.destroy_flag ^= WAIT_NEW_PROC then do; /* Unless a new_proc, log him out. */ 1430 call act_ctl_$close_account (utep); /* Close account and print logged out msg to opr */ 1431 call lg_ctl_$logout (utep); 1432 1433 if ^have_cdte then goto process_destroyed; /* if no cdte, skip the following channel stuff */ 1434 1435 if cdte.tra_vec = WAIT_DELETE_CHANNEL then do; /* channel was deleted by CDT installation */ 1436 cdte.in_use = CHANNEL_DELETED; /* but we had to keep it long enough to destroy the process */ 1437 cdte.tra_vec = WAIT_HANGUP; /* ignore all wakeups */ 1438 cdte.current_service_type = INACTIVE; /* INACTIVE */ 1439 goto exit1; /* now we can mark it deleted and get out */ 1440 end; 1441 1442 if cdte.tra_vec = WAIT_REMOVE then do; /* we hung up the channel before destroying the process */ 1443 cdte.in_use = NOW_HUNG_UP; /* line will be ignored until ATTACHed or CDT installed */ 1444 go to exit1; /* we quit before trying to print message, listen, etc. */ 1445 end; 1446 if ^ute.login_flags.noprint then do; /* If logout message will be needed. */ 1447 i = float (ute.cpu_usage, 63) / 1e6 + .5e0; /* convert usec to sec, rounded */ 1448 j = divide (i, 60, 17, 0); /* j= number of usage minutes */ 1449 i = i - j * 60; /* i= mod (usage, minutes) */ 1450 t1 = float (ute.mem_usage, 63) / 1e3; /* Get memory usage. */ 1451 call date_time_ (anstbl.current_time, date_time); 1452 if j > 0 then /* Use different message if there were minutes. */ 1453 call ioa_$rs (logout_fmt, buff, i, ute.person, ute.project, date_time, j, i, t1, ute.session_cost); 1454 else call ioa_$rs (logout_fmt1, buff, i, ute.person, ute.project, date_time, i, t1, ute.session_cost); 1455 end; 1456 end; 1457 1458 process_destroyed: 1459 if ^have_cdte then do; /* if no cdte, we just destroyed a disconnected process */ 1460 call unlock; /* so clean up the way listen_again (below) does */ 1461 call user_table_mgr_$free (utep); /* imitate a little bit of asu_$release_ate */ 1462 goto exit1; /* and then get out quickly */ 1463 end; 1464 1465 1466 call astty_$tty_state (cdtep, code); /* Verify that user has not hung up. */ 1467 if code ^= 0 then go to cleanup_hangup; /* random error */ 1468 if cdte.state < TTY_DIALED then go to cleanup_hangup; /* Is tty hung up already? */ 1469 1470 if i > 0 then /* Do we have logout message? */ 1471 if ^ute.login_flags.noprint then do; /* User want messages? */ 1472 buff = format_msg (buff, i, j, 231, 221); 1473 call astty_$tty_force (cdtep, addr (buff), j, code); /* write logout message */ 1474 if code ^= 0 then go to cleanup_hangup; 1475 end; 1476 1477 call update_term_info (); 1478 1479 if cdte.tra_vec = WAIT_LOGOUT_HOLD then do; /* Was logout hold, type "users" message. */ 1480 call timer_manager_$reset_alarm_wakeup (cdte.event); 1481 if ute.login_flags.noprint then say_hello = "0"b; 1482 else say_hello = "1"b; 1483 just_dialed_up = "0"b; 1484 call asu_$release_ate (cdtep, code); /* Free the ATE. New one will be made if necessary. */ 1485 utep = null; 1486 have_ate = "0"b; 1487 cdte.in_use = NOW_DIALED; 1488 go to login; 1489 end; 1490 else if cdte.tra_vec = WAIT_NEW_PROC then go to create; /* Make new process as result of term or new_proc */ 1491 1492 cdte.in_use = NOW_DIALED; /* user has been logged out */ 1493 1494 /* Hang up the terminal, and set up to listen for next dialup (unless detach) */ 1495 1496 listen_again: 1497 timeout (1): 1498 timeout (8): 1499 timeout (9): 1500 timeout (10): 1501 timeout (11): 1502 timeout (12): 1503 timeout (13): 1504 timeout (14): 1505 timeout (15): 1506 call unlock; /* release answer table, permit updates */ 1507 call asu_$release_ate (cdtep, code); /* Free the answer table entry. */ 1508 utep = null; 1509 have_ate = "0"b; 1510 1511 call timer_manager_$reset_alarm_wakeup (cdte.event); 1512 call ipc_$drain_chn (cdte.event, code); /* .. he's got no future */ 1513 1514 if cdte.state = TTY_DIALED then do; /* If he's still there, get rid of him */ 1515 call astty_$tty_order (cdtep, "hangup", null, ignore_code); /* also clears modes & flags in ttydim */ 1516 cdte.in_use = NOW_HUNG_UP; /* keep our records straight */ 1517 end; 1518 1519 if cdte.in_use > NOW_LISTENING then do; /* TRAP BUG where state and in_use get inconsistent */ 1520 call sys_log_ (SL_LOG_SILENT, "^a: cdte ^p (^a) state ^d in use ^d - notify system programmer", 1521 ME, cdtep, cdte.name, cdte.state, cdte.in_use); 1522 cdte.in_use = NOW_HUNG_UP; /* to avoid losing the channel */ 1523 end; 1524 1525 cdte.dialed_up_time = cdte.dialed_up_time + /* Compute running total, in seconds */ 1526 float (anstbl.current_time - cdte.dialup_time, 63) / 1e6 + .5e0; 1527 1528 if cdte.tra_vec ^= WAIT_DETACH then /* Done if operator wants this tty made free. */ 1529 call asu_$asu_listen (cdtep, code); /* Turn channel on again. Reset CDTE. */ 1530 go to exit1; 1531 1532 /* Come here if cannot write fatal process error message, or if user 1533* hangs up during a new_proc */ 1534 1535 cleanup_hangup: 1536 if cdte.tra_vec = WAIT_NEW_PROC then do; /* were we going to give a new process? */ 1537 call act_ctl_$close_account (utep); /* close account & log logout */ 1538 call lg_ctl_$logout (utep); /* remove user from whotab */ 1539 end; 1540 1541 call astty_$tty_order (cdtep, "hangup", null (), ignore_code); /* be certain that actual state of channel */ 1542 cdte.in_use = NOW_HUNG_UP; /* and record of state in cdte, are consistent */ 1543 1544 if code = 0 then go to listen_again; /* just a hangup, do normal reset */ 1545 call channel_error (code); /* some other error, bomb out */ 1546 1547 /* Come here in case of fault during login or logout. */ 1548 1549 abort: static_label = exit; /* so as not to loop */ 1550 if utep = null then go to listen_again; /* not much to do */ 1551 funct = "ucs "; 1552 ute.destroy_flag = WAIT_LOGOUT_HOLD; /* pretend logout hold */ 1553 if have_cdte then 1554 cdte.tra_vec = WAIT_LOGOUT_HOLD; /* make cdte tra_vec equal the one in ate */ 1555 ute.logout_type = "ucs "; 1556 ute.login_flags.noprint = "0"b; 1557 tcode = as_error_table_$dialup_error; 1558 i = 0; /* Buff is empty */ 1559 go to kill; 1560 1561 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * */ 1562 1563 evil3: call sys_log_ (SL_LOG_BEEP, "^a: called with null message ptr", ME); 1564 return; /* metering was not turned on */ 1565 1566 evil2: call sys_log_ (SL_LOG_BEEP, "^a: called while ansp = null", ME); 1567 return; /* metering was not turned on */ 1568 1569 evil1: call sys_log_ (SL_LOG_BEEP, "^a: called with bad ptr ^p by ^w", 1570 ME, ev_msg.data_ptr, ev_msg.fromproc); 1571 return; /* metering was not turned on */ 1572 1573 evil: call asu_$find_process (ev_msg.fromproc, i, q); /* find out who sent signal */ 1574 if q ^= null then do; 1575 call get_trace_info; 1576 call sys_log_ (SL_LOG_BEEP, "^a: ignored ^a from ^a.^a for ^a st=^d,inuse=^d,tv=^d", 1577 ME, tsignal_type, q -> ute.person, q -> ute.project, tname, tstate, tinuse, ttv); 1578 goto exit1; /* metering was turned on so go turn it off */ 1579 end; /* can't find process; fall thru and print a different message */ 1580 fals: i = SL_LOG_BEEP; /* print with alarm */ 1581 falsi: call get_trace_info; 1582 call sys_log_ (i, "^a: ignored ^a for ^a st=^d,inuse=^d,tv=^d", 1583 ME, tsignal_type, tname, tstate, tinuse, ttv); 1584 goto exit1; /* metering was turned on, so go turn it off */ 1585 fals0: i = SL_LOG_SILENT; /* just log */ 1586 goto falsi; 1587 1588 1589 /* Come here when a channel (terminal) that has been requested by a user 1590* process finally dials up. TTYDIM won't let us connect it to user unless 1591* it is actually dialed up. */ 1592 1593 hand (14): /* WAIT_FIN_PRIV_ATTACH */ 1594 call astty_$tty_state (cdtep, code); /* get current state of channel */ 1595 if cdte.state ^= TTY_DIALED then goto exit1; /* wait for correct event */ 1596 call dial_ctl_$finish_priv_attach (cdtep); /* do the work */ 1597 go to exit1; 1598 1599 /* Next section of code takes care of dialed consoles' events */ 1600 1601 hand (15): /* WAIT_DIAL_RELEASE */ 1602 call astty_$tty_state (cdtep, code); 1603 if cdte.state ^= TTY_HUNG then goto exit1; /* wait for correct event */ 1604 1605 call dial_ctl_$dial_term (cdtep); /* Reset CDTE and tell master */ 1606 goto exit1; 1607 1608 /**** This code handles waiting for the hangup event to occur. When */ 1609 /**** it does, we will listen to the channel. */ 1610 1611 hand (17): /* WAIT_HANGUP */ 1612 call astty_$tty_state (cdtep, code); /* get current state of channel */ 1613 if cdte.state > TTY_HUNG then go to exit1; /* wait for correct event */ 1614 1615 if ^sc_stat_$shutdown_typed /* if we're not shutting down */ 1616 & cdte.in_use ^= CHANNEL_DELETED /* or being deconfigured */ 1617 & (cdte.current_service_type = FTP_SERVICE | /* and this is still live */ 1618 cdte.current_service_type = SLAVE_SERVICE) 1619 then if cdte.state ^= TTY_MASKED 1620 then call asu_$asu_listen (cdtep, code); /* ready for use, reconnect to channel */ 1621 /**** This will swallow all wakeups from channel from now on */ 1622 go to exit1; 1623 1624 /* INTERNAL PROCEDURES */ 1625 1626 1627 1628 interpret_ftp_cmd: 1629 proc (P_line, P_ll, P_cursor, P_lgwd, P_code); 1630 1631 dcl P_line char (*) aligned, 1632 P_ll fixed bin, 1633 P_cursor fixed bin, 1634 P_lgwd char (*), 1635 P_code fixed bin (35); /* meanings of this code: 1636* 0 user gave BYE or QUIT cmd 1637* 1 user gave 'null' cmd (something allowed before login) 1638* 2 gave illegal cmd 1639* 3 USER cmd 1640* 4 other login/preaccess cmd (XATT, XMAP) 1641* 5 MAIL/MLFL 1642* 6 PASS 1643* Roy Planalp, 760819 */ 1644 1645 dcl cursor fixed bin; 1646 dcl cmd char (4); 1647 dcl password char (8); 1648 dcl size fixed bin; 1649 dcl cmdno fixed bin; 1650 dcl code fixed bin; 1651 dcl lpcode fixed bin (35); 1652 1653 dcl n_ftp_cmds fixed bin int static options (constant) init (14); 1654 dcl ftp_cmd (14) char (4) aligned int static options (constant) init ( 1655 "NOOP", "BYE ", "STAT", "BYTE", "TYPE", "STRU", "MODE", "USER", "XMAP", 1656 "XATT", "MAIL", "MLFL", "PASS", "QUIT"); 1657 1658 call login_parse_ (addr (P_line), P_ll, cmd, size, cursor, lpcode); 1659 if lpcode ^= 0 & lpcode ^= error_table_$noarg then go to lp_error; 1660 if lpcode = error_table_$noarg then do; /* Null string sent */ 1661 P_code = 1; 1662 return; 1663 end; 1664 if (size < 1) | (size > 4) then go to illegal_cmd;/* Should never be < 1 */ 1665 cmd = translate (cmd, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"); 1666 1667 do cmdno = 1 to n_ftp_cmds while (cmd ^= ftp_cmd (cmdno)); end; 1668 if cmdno > n_ftp_cmds then go to illegal_cmd; 1669 go to handle (cmdno); /* dispatch on cmd */ 1670 1671 handle (1): /* NOOP */ 1672 buff = "NOOP command received 1673 "; i = 22; 1674 code = 200; 1675 go to null_return; 1676 1677 handle (14): 1678 if ^ftp_765 then 1679 goto illegal_cmd; /* Illegal for "old" FTP */ 1680 goto quit_common; 1681 1682 handle (2): 1683 if ftp_765 then 1684 goto illegal_cmd; /* Illegal for "new FTP */ 1685 1686 quit_common: 1687 buff = "Disconnect requested. 1688 "; i = 22; 1689 if ftp_765 then 1690 code = 221; 1691 else code = 231; 1692 go to hang_return; 1693 1694 handle (3): /* STAT */ 1695 call login_parse_ (addr (substr (P_line, cursor, 1)), P_ll - cursor + 1, cmd, size, cursor, lpcode); 1696 if lpcode ^= 0 & lpcode ^= error_table_$noarg 1697 then go to lp_error; 1698 if size > 0 1699 then do; 1700 buff = "You must login before getting file status. 1701 "; i = 43; 1702 if ftp_765 then 1703 code = 530; 1704 else code = 504; 1705 go to null_return; 1706 end; 1707 else do; 1708 buff = "Connected to Multics answering service. Please log in. 1709 "; i = 56; 1710 if ftp_765 then 1711 code = 211; 1712 else code = 100; 1713 go to null_return; 1714 end; 1715 1716 handle (4): /* BYTE */ 1717 if ftp_765 then /* Illegal for "new" FTP */ 1718 goto illegal_cmd; 1719 call login_parse_ (addr (substr (P_line, cursor, 1)), P_ll - cursor + 1, cmd, size, cursor, lpcode); 1720 if cmd = "8" 1721 then do; 1722 buff = "Default BYTE 8 still in effect. 1723 "; i = 32; 1724 code = 200; 1725 go to null_return; 1726 end; 1727 else do; 1728 buff = "Unable to alter BYTEsize before login. 1729 "; i = 39; 1730 code = 504; 1731 go to null_return; 1732 end; 1733 1734 handle (5): /* TYPE */ 1735 call login_parse_ (addr (substr (P_line, cursor, 1)), P_ll - cursor + 1, cmd, size, cursor, lpcode); 1736 if cmd = "A" | cmd = "a" 1737 then do; 1738 buff = "Default TYPE ASCII still in effect. 1739 "; i = 36; 1740 code = 200; 1741 go to null_return; 1742 end; 1743 else do; 1744 buff = "Unable to change Representation TYPE before login. 1745 "; i = 51; 1746 if ftp_765 then 1747 code = 530; 1748 else code = 504; 1749 go to null_return; 1750 end; 1751 1752 handle (6): /* STRU */ 1753 call login_parse_ (addr (substr (P_line, cursor, 1)), P_ll - cursor + 1, cmd, size, cursor, lpcode); 1754 if cmd = "F" | cmd = "f" 1755 then do; 1756 buff = "Default STRUcture File still in effect. 1757 "; i = 39; 1758 code = 200; 1759 go to null_return; 1760 end; 1761 else do; 1762 buff = "Unable to change STRUcture before login. 1763 "; i = 41; 1764 if ftp_765 then 1765 code = 530; 1766 else code = 504; 1767 goto null_return; 1768 end; 1769 1770 handle (7): /* MODE */ 1771 call login_parse_ (addr (substr (P_line, cursor, 1)), P_ll - cursor + 1, cmd, size, cursor, lpcode); 1772 if cmd = "S" | cmd = "s" 1773 then do; 1774 buff = "Default Transfer MODE Stream still in effect. 1775 "; i = 46; 1776 code = 200; 1777 goto null_return; 1778 end; 1779 else do; 1780 buff = "Unable to change Transfer MODE before login. 1781 "; i = 45; 1782 if ftp_765 then 1783 code = 530; 1784 else code = 504; 1785 goto null_return; 1786 end; 1787 1788 handle (8): /* USER */ 1789 P_cursor = cursor; /* accept this cmd as is, */ 1790 P_code = 3; /* let parse_ftp_login_line_ figure it out */ 1791 return; 1792 1793 handle (9): 1794 P_cursor = cursor; 1795 P_lgwd = "MAP"; 1796 P_code = 4; 1797 return; 1798 1799 handle (10): /* XATT */ 1800 P_cursor = cursor; 1801 P_lgwd = "dial"; 1802 P_code = 4; 1803 return; 1804 1805 handle (11): /* MAIL, MLFL */ 1806 handle (12): 1807 if ftp_765 then 1808 goto illegal_cmd; /* Illegal for "new" FTP */ 1809 buff = "Please use USER NETML (PASS NETML) to send mail. 1810 "; i = 49; 1811 code = 504; 1812 P_code = 5; 1813 go to return_common; 1814 1815 handle (13): /* PASS */ 1816 call login_parse_$password (addr (substr (P_line, cursor, 1)), P_ll - cursor + 1, password, size, cursor, lpcode); 1817 P_lgwd = password; /* never mind that code */ 1818 P_code = 6; 1819 return; 1820 1821 lp_error: buff = convert_message (lpcode, i); 1822 go to illegal_cmd_join; 1823 1824 illegal_cmd: 1825 buff = "Command not understood, please login. 1826 "; 1827 i = 38; 1828 illegal_cmd_join: 1829 P_code = 1; 1830 code = 500; 1831 call resetread (); 1832 go to return_common; 1833 1834 hang_return: 1835 P_code = 0; 1836 go to return_common; 1837 1838 null_return: 1839 P_code = 1; 1840 1841 return_common: 1842 buff = format_msg (buff, i, i, code, code); 1843 call astty_$tty_force (cdtep, addr (buff), i, tcode); 1844 if tcode ^= 0 then call channel_error (tcode); 1845 return; 1846 1847 end interpret_ftp_cmd; 1848 1849 /* Internal procedure to assign a channel back to the answering service so 1850* we can talk to it. It must always work, so we ignore any codes which 1851* might indicate errors or hangups */ 1852 1853 grab_tty: proc; 1854 1855 call astty_$tty_order (cdtep, "quit_disable", null, ignore_code); 1856 call astty_$tty_event (cdtep, ignore_code); /* Set read terminations to come to me */ 1857 1858 end grab_tty; 1859 1860 hello: proc (); 1861 1862 t1 = anstbl.n_units / 10.0e0; /* format load message */ 1863 t2 = anstbl.max_units / 10.0e0; /* ... */ 1864 call date_time_ (anstbl.current_time, date_time); 1865 call ioa_$rs (greeting_fmt, buff, j, whotab.sysid, installation_parms.installation_id, 1866 cdte.name, t1, t2, anstbl.n_users, date_time); 1867 1868 if anstbl.message_lng ^= 0 & anstbl.session = "shutdown" 1869 then do; /* print shutdown message rather than greeting banner */ 1870 buff = anstbl.special_message; 1871 buff = format_msg (buff, anstbl.message_lng, i, 401, 421); 1872 end; 1873 else if anstbl.message_lng ^= 0 & anstbl.session = "special" 1874 then do; /* prefix greeting banner with special session message. */ 1875 buff = substr(anstbl.special_message,1,anstbl.message_lng) || substr(buff,1,j); 1876 buff = format_msg (buff, length(rtrim(buff)), i, 030, 120); 1877 end; 1878 else if anstbl.message_lng ^= 0 /* prefix greeting banner with extra login message */ 1879 then do; /* eg, "Unattended Service" */ 1880 buff = substr(anstbl.special_message,1,anstbl.message_lng) || substr(buff,1,j); 1881 buff = format_msg (buff, length(rtrim(buff)), i, 300, 220); 1882 end; 1883 else buff = format_msg (buff, j, i, 300, 220); /* just format greeting banner */ 1884 1885 call astty_$tty_force (cdtep, addr (buff), i, code); /* write message */ 1886 if code ^= 0 then call channel_error (code); /* any trouble? */ 1887 1888 end hello; 1889 1890 change_type: proc (new_type); 1891 1892 dcl new_type char (*); 1893 1894 set_type_info.version = stti_version_1; 1895 set_type_info.name = new_type; 1896 string (set_type_info.flags) = "0"b; 1897 1898 call astty_$tty_order (cdtep, "set_term_type", addr (set_type_info), code); 1899 if code ^= 0 then call channel_error (code); 1900 cdte.current_terminal_type = new_type; /* Set new type */ 1901 1902 end change_type; 1903 1904 1905 1906 update_term_info: 1907 procedure (); 1908 1909 1910 term_info.version = terminal_info_version; 1911 call astty_$tty_order (cdtep, "terminal_info", addr (term_info), code); 1912 if code ^= 0 then call channel_error (code); /* Get the info that's available. */ 1913 1914 cdte.current_terminal_type = term_info.term_type; /* Store info in CDTE for this channel */ 1915 cdte.tty_id_code = term_info.id; /* .. */ 1916 cdte.cur_line_type = term_info.line_type; /* .. */ 1917 cdte.baud_rate = term_info.baud_rate; /* .. */ 1918 1919 return; 1920 1921 end update_term_info; 1922 1923 1924 1925 lock: procedure; 1926 1927 ute.lock_value = ute.lock_value + 1; 1928 anstbl.lock_count = anstbl.lock_count + 1; 1929 1930 return; 1931 1932 end lock; 1933 1934 unlock: procedure; 1935 1936 if utep ^= null /* Might unlock when not needed. */ 1937 then anstbl.lock_count = anstbl.lock_count - ute.lock_value; 1938 if anstbl.lock_count < 0 then anstbl.lock_count = 0; 1939 if anstbl.lock_count = 0 then do; 1940 code = 0; 1941 do while (code = 0); 1942 call ipc_$unmask_ev_calls (code); 1943 if code = 0 then call ioa_ ("^RError detected in ftp_dialup_: ^B event calls were masked"); 1944 end; 1945 end; 1946 if utep ^= null then ute.lock_value = 0; 1947 if ((anstbl.lock_count = 0) & (anstbl.update_pending = "1"b)) then do; 1948 anstbl.update_pending = "0"b; /* reset update-pending flag */ 1949 call hcs_$wakeup (as_procid, anstbl.update_channel, dum_msg, code); 1950 /* trigger dormant update procedure */ 1951 end; 1952 1953 return; 1954 1955 end unlock; 1956 1957 convert_message: 1958 procedure (P_status_code, P_len) returns (char (100) aligned); 1959 1960 /* parameter */ 1961 1962 declare P_status_code fixed binary (35) parameter, 1963 P_len fixed bin; 1964 1965 1966 1967 /* automatic */ 1968 1969 declare short character (8) aligned automatic, 1970 long character (100) aligned automatic; 1971 1972 /* program */ 1973 1974 call convert_status_code_ (P_status_code, short, long); 1975 P_len = length (long) + 1 - verify (reverse (long), " "); 1976 1977 if P_len = length (long) + 1 1978 then do; 1979 P_len = 1; 1980 return (NL); 1981 end; 1982 else do; 1983 P_len = P_len + 1; 1984 return (substr (long, 1, P_len - 1) || NL); 1985 end; 1986 1987 end convert_message; 1988 1989 convert_message_nnl: 1990 procedure (p_status_code) returns (char (100) varying); 1991 1992 /* parameter */ 1993 1994 declare p_status_code fixed binary (35) parameter; 1995 1996 /* automatic */ 1997 1998 declare short character (8) aligned automatic, 1999 long character (100) aligned automatic; 2000 2001 /* program */ 2002 2003 call convert_status_code_ (p_status_code, short, long); 2004 2005 return (rtrim (long, " ")); 2006 2007 end convert_message_nnl; 2008 2009 format_ftp_output: 2010 proc (P_message, P_msg_lng, P_new_lng, P_ftp_code) returns (char (300) aligned); 2011 2012 dcl P_message char (*) aligned, 2013 P_msg_lng fixed bin, 2014 P_new_lng fixed bin, 2015 P_ftp_code char (4) aligned; 2016 2017 dcl build_string char (300) varying, 2018 i fixed bin, 2019 temp fixed bin; 2020 2021 build_string = P_ftp_code; 2022 2023 if P_msg_lng = 0 2024 then do; /* caller had nothing to say */ 2025 build_string = build_string || NL; 2026 P_new_lng = 5; 2027 return (build_string); 2028 end; 2029 2030 i = 1; 2031 2032 temp = index (substr (P_message, i, P_msg_lng - i + 1), NL); 2033 2034 do while ((temp ^= P_msg_lng - i + 1) & (temp ^= 0)); 2035 /* while we are not at the last line in the message */ 2036 substr (build_string, 4, 1) = "-"; /* indicate this is a multiple line msg */ 2037 build_string = build_string || (4)" "; 2038 build_string = build_string || substr (P_message, i, temp); 2039 i = i + temp; 2040 temp = index (substr (P_message, i, P_msg_lng - i + 1), NL); 2041 end; 2042 2043 if substr (build_string, 4, 1) = "-" 2044 then do; 2045 build_string = build_string || P_ftp_code; /* multiple concatenations are inefficient */ 2046 build_string = build_string || substr (P_message, i, P_msg_lng - i + 1); 2047 /* so build it up piece by piece */ 2048 end; 2049 else build_string = build_string || substr (P_message, i, P_msg_lng - i + 1); 2050 P_new_lng = length (build_string); 2051 2052 return (build_string); 2053 2054 end format_ftp_output; 2055 2056 2057 format_ecode: 2058 proc (P_code, P_bufr, P_lng, P_old_ftp_code, P_new_ftp_code); 2059 2060 dcl P_code fixed bin (35), 2061 P_bufr char (*) aligned, 2062 P_lng fixed bin, 2063 P_old_ftp_code fixed bin, 2064 P_new_ftp_code fixed bin; 2065 2066 dcl len fixed bin, 2067 result picture "999b"; 2068 2069 P_bufr = convert_message (P_code, len); 2070 if ftp_765 then 2071 result = min (999, P_new_ftp_code); 2072 else result = min (999, P_old_ftp_code); 2073 P_bufr = format_ftp_output (P_bufr, len, P_lng, (result)); 2074 2075 return; 2076 2077 end format_ecode; 2078 2079 format_msg: 2080 proc (P_bufr, P_in_lng, P_lng, P_old_ftp_code, P_new_ftp_code) returns (char (300) aligned); 2081 2082 dcl P_bufr char (*) aligned, 2083 P_lng fixed bin, 2084 P_new_ftp_code fixed bin, 2085 P_old_ftp_code fixed bin, 2086 P_in_lng fixed bin; 2087 2088 dcl result picture "999b"; 2089 2090 if ftp_765 then 2091 result = min (999, P_new_ftp_code); 2092 else result = min (999, P_old_ftp_code); 2093 return (format_ftp_output (P_bufr, P_in_lng, P_lng, (result))); 2094 2095 end format_msg; 2096 2097 print_ftp_msg: 2098 procedure (P_msg, P_old_ftp_code, P_new_ftp_code); 2099 2100 dcl P_msg char (*) aligned, 2101 P_new_ftp_code fixed bin, 2102 P_old_ftp_code fixed bin; 2103 2104 dcl temp_buff char (300) aligned, 2105 tb_len fixed bin; 2106 2107 temp_buff = format_msg (P_msg, length (P_msg), tb_len, P_old_ftp_code, P_new_ftp_code); 2108 call astty_$tty_force (cdtep, addr (temp_buff), tb_len, code); 2109 if code ^= 0 then call channel_error (code); 2110 2111 return; 2112 2113 end print_ftp_msg; 2114 2115 resetread: 2116 procedure (); 2117 2118 dcl temp_code fixed binary (35); 2119 2120 call astty_$tty_abort (cdtep, 1, temp_code); 2121 if temp_code ^= 0 then call channel_error (temp_code); 2122 2123 return; 2124 2125 end resetread; 2126 2127 /* Come here if any call to astty_ returns a non-zero code */ 2128 channel_error: 2129 procedure (p_code); 2130 2131 dcl p_code fixed binary (35) parameter; 2132 2133 if p_code = -1 then if cdte.state < TTY_DIALED then do; /* code = -1 means "it hung up" */ 2134 cdte.in_use = NOW_HUNG_UP; /* keep cdte consistent */ 2135 go to listen_again; 2136 end; 2137 /* as_tty_ uses -1 to mean "tty hung up" */ 2138 call sys_log_$error_log (SL_LOG_BEEP, p_code, ME, 2139 "tty_dim error, removing channel ^a ^a", 2140 cdte.name, cdte.comment); 2141 call unlock; /* release answer table, permit updates */ 2142 call asu_$release_ate (cdtep, code); /* Free the ATE */ 2143 utep = null; 2144 call timer_manager_$reset_alarm_wakeup (cdte.event); 2145 call asu_$asu_remove (cdtep); 2146 go to exit1; 2147 2148 end channel_error; 2149 2150 trace: procedure; 2151 2152 if loud_select_sw then /* trace only specified channel(s) */ 2153 if loud_select_channel ^= /* if specified string is not equal to */ 2154 substr (cdte.name, 1, length (loud_select_channel)) /* the beginning of this channel's name */ 2155 then return; /* then don't trace it */ 2156 2157 2158 call get_trace_info; 2159 call sys_log_ (SL_LOG, "^a: trace event ^a ^a ^w ^p st=^d,inuse=^d,tv=^d", 2160 ME, 2161 tname, /* channel name */ 2162 tsignal_type, /* what was signalled */ 2163 ev_msg.fromproc, /* signalling processid */ 2164 ev_msg.data_ptr, /* ptr to cdte or ate */ 2165 tstate, tinuse, ttv); /* line state, entry state, wait point */ 2166 2167 end trace; 2168 2169 /* -------------------- */ 2170 2171 get_trace_info: proc; /* format information for printing, 2172* either in trace or error message */ 2173 2174 dcl i fixed bin; 2175 dcl o_sw bit (1); /* says whether to print msg in octal or character */ 2176 dcl char8 char (8); 2177 2178 2179 /* First, format the contents of the wakeup message, in ASCII, octal, or both */ 2180 2181 char8 = "........"; 2182 o_sw = "0"b; /* assume character */ 2183 do i = 1 to length (signal_type); /* check each character */ 2184 if unspec (substr (signal_type, i, 1)) < "040"b3 | 2185 unspec (substr (signal_type, i, 1)) > "176"b3 then 2186 o_sw = "1"b; /* if nonprinting char, remember to print in octal */ 2187 else substr (char8, i, 1) = substr (signal_type, i, 1); /* copy printing char into ASCII string */ 2188 end; 2189 call ioa_$rsnnl ("^[""^a""^x^;^s^]^[(^w ^w)^;^2s^]", tsignal_type, (0), (char8 ^= "........"), char8, o_sw, 2190 substr (unspec (signal_type), 1, 36), substr (unspec (signal_type), 37, 36)); 2191 2192 /* Then get state information from either the cdte or ate (whichever we have) or maybe both */ 2193 2194 if wakeup_for_channel then do; /* if wakeup came in over a cdte channel */ 2195 tname = rtrim (cdte.name); 2196 if have_ate then 2197 tname = tname || " (" || rtrim (ute.person) || "." || rtrim (ute.project) || ")"; 2198 tanswb = cdte.tty_id_code; 2199 tstate = cdte.state; 2200 ttv = cdte.tra_vec; 2201 tinuse = cdte.in_use; 2202 end; 2203 2204 else if wakeup_for_process then do; /* or, if it came in over an ate channel */ 2205 tname = rtrim (ute.person) || "." || rtrim (ute.project); /* construct an informative name */ 2206 if have_cdte then do; /* if we have a cdte, get more debugging info */ 2207 tname = tname || " (" || rtrim (cdte.name) || ")"; 2208 tstate = cdte.state; 2209 end; 2210 else tstate = 0; /* no channel state info in ate */ 2211 tanswb = ute.tty_id_code; /* a copy of cdte.tty_id_code */ 2212 ttv = ute.destroy_flag; /* a copy of cdte.tra_vec */ 2213 tinuse = ute.active; /* a copy of cdte.in_use */ 2214 end; 2215 2216 else do; /* should never happen, but be cautious */ 2217 tname = "???"; 2218 tanswb = ""; 2219 tstate, tinuse, ttv = 0; 2220 end; 2221 return; 2222 2223 end get_trace_info; 2224 2225 init: entry; /* do this as often as we're asked */ 2226 2227 if ^sc_stat_$Multics_typed then 2228 call sub_err_ (error_table_$out_of_sequence, "ftp_dialup_$init", "s"); 2229 greeting_fmt = convert_message_nnl (as_error_table_$greeting_msg); 2230 bad_login_word_fmt = convert_message_nnl (as_error_table_$bad_login_word_msg); 2231 proc_term_fmt = convert_message_nnl (as_error_table_$proc_term_msg); 2232 init_term_fmt = convert_message_nnl (as_error_table_$init_term_msg); 2233 proc_term_loop_fmt = convert_message_nnl (as_error_table_$proc_term_loop_msg); 2234 logout_fmt = convert_message_nnl (as_error_table_$logout_msg); 2235 logout_fmt1 = convert_message_nnl (as_error_table_$logout1_msg); 2236 pw_msg = convert_message_nnl (as_error_table_$pw_msg); 2237 call ioa_$rs ((pw_msg), pw_msg, i); 2238 2239 return; 2240 2241 ftp_dial_loud: entry; 2242 2243 dcl cu_$arg_count entry returns (fixed bin); 2244 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)); 2245 dcl argp ptr, argl fixed bin, arg char (argl) based (argp); 2246 dcl loud_select_sw bit (1) aligned int static init (""b); 2247 dcl loud_select_channel char (32) varying int static init (""); 2248 2249 loudsw = "1"b; 2250 2251 if cu_$arg_count () = 0 then /* if no argument, trace all channels */ 2252 loud_select_sw = ""b; 2253 else do; /* trace the specified channel(s) */ 2254 loud_select_sw = "1"b; 2255 call cu_$arg_ptr (1, argp, argl, code); 2256 loud_select_channel = arg; /* can be something like "a.h1" */ 2257 end; 2258 2259 return; 2260 2261 ftp_dial_soft: entry; 2262 2263 loudsw = "0"b; 2264 2265 return; 2266 2267 /* This internal procedure is the default handler for errors encountered during ftp_dialup_ */ 2268 2269 ftp_dialup_ucs: proc (mcptr, condname, coptr, infoptr, continue); 2270 2271 dcl mcptr ptr parameter; 2272 dcl condname char (*) parameter; 2273 dcl coptr ptr parameter; 2274 dcl infoptr ptr parameter; 2275 dcl continue bit (1) parameter; 2276 2277 dcl errm char (120); 2278 dcl erri fixed bin; 2279 dcl non_local_exit bit (1); 2280 dcl as_check_condition_ entry (char (*), bit (1), bit (1)); 2281 2282 call as_check_condition_ (condname, continue, non_local_exit); 2283 if continue | non_local_exit then 2284 return; 2285 2286 call get_trace_info; /* get info out of either ate or cdte */ 2287 call ioa_$rsnnl ("^a: Error ^a ^a ""^a"" st=^d,inuse^=d,tv=^d", 2288 ME, errm, erri, condname, tname, tanswb, tstate, tinuse, ttv); 2289 call as_dump_ (errm); 2290 go to static_label; 2291 2292 end ftp_dialup_ucs; 2293 2294 DISPLAY_PROCESS_AUTHORIZATION: 2295 procedure (); 2296 2297 /* This procedure displays the "Your authorization is ..." message on the 2298* interactive user's terminal upon process creation and reconnection. */ 2299 2300 dcl authorization_string char (200) automatic; 2301 dcl buff_lth fixed bin; /* length of string to display */ 2302 dcl code fixed bin (35) automatic; 2303 dcl format char (100) aligned automatic; 2304 2305 dcl convert_access_class_$to_string entry (bit (72) aligned, char (*), fixed bin (35)); 2306 2307 dcl as_error_table_$login_auth_msg fixed bin (35) ext static; 2308 dcl error_table_$smallarg fixed bin (35) ext static; 2309 2310 call convert_access_class_$to_string (ute.process_authorization, 2311 authorization_string, code); 2312 if code ^= 0 then 2313 if code = error_table_$smallarg then ; /* we'll use what we can */ 2314 else authorization_string = "Unknown"; 2315 2316 if authorization_string ^= "" then do; 2317 call convert_status_code_ (as_error_table_$login_auth_msg, 2318 (""), format); 2319 if format ^= "" then do; 2320 call ioa_$rs (format, buff, buff_lth, 2321 authorization_string); 2322 buff = format_msg (buff, buff_lth, buff_lth, 231, 221); 2323 call astty_$tty_force ((ute.channel), addr (buff), 2324 buff_lth, (0)); 2325 end; 2326 end; 2327 2328 end DISPLAY_PROCESS_AUTHORIZATION; 2329 2330 /* format: on */ 2331 /* 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 */ 2331 2332 /* BEGIN INCLUDE FILE ... as_data_.incl.pl1 ... */ 2 2 2 3 /* format: style4 */ 2 4 2 5 /* This file must be kept in sync with as_data_.alm */ 2 6 2 7 /****^ HISTORY COMMENTS: 2 8* 1) change(86-09-21,Beattie), approve(86-09-22,MCR7542), 2 9* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 2 10* Remove references to the 963 and 029 preaccess commands and remove support 2 11* for ARDS, 202_ETX, 2741 and 1050 in system interfaces. 2 12* 2) change(86-09-25,Swenson), approve(87-07-20,MCR7737), 2 13* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 2 14* Add references to as_data_ entrypoints added for Login Server. 2 15* 3) change(87-03-03,Brunelle), approve(87-07-20,MCR7697), 2 16* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 2 17* Added new user signal field of inacrcvd (14) to handle inactivity response 2 18* from user. 2 19* END HISTORY COMMENTS */ 2 20 2 21 dcl as_data_$BS char (1) aligned ext static; /* BACKSPACE character */ 2 22 dcl as_data_$CR char (1) aligned ext static; /* CARRIAGE RETURN character */ 2 23 dcl as_data_$abs_dim char (32) ext static; /* absentee DIM */ 2 24 dcl as_data_$acct_update_priority fixed bin ext static; /* accounting update IPC priority */ 2 25 dcl as_data_$acsdir char (168) ext static; /* Access Control Segment directory */ 2 26 dcl as_data_$ansp ptr ext static; /* answer_table */ 2 27 dcl as_data_$as_procid bit (36) aligned ext static; /* Answering Service process id */ 2 28 dcl as_data_$as_ring fixed bin (3) ext static; /* AS operating ring */ 2 29 dcl as_data_$as_tty char (6); /* AS master tty channel */ 2 30 dcl as_data_$asmtp ptr ext static; /* AS meter table */ 2 31 dcl as_data_$autp ptr ext static; /* absentee_user_table */ 2 32 dcl as_data_$buzzardp ptr ext static; /* dpg_ list of buteo processes */ 2 33 dcl as_data_$cdtp ptr ext static; /* CDT */ 2 34 dcl as_data_$default_weight fixed bin (35) ext; /* default user process load control weight */ 2 35 dcl as_data_$devtabp ptr ext static; /* device_table */ 2 36 dcl as_data_$dft_user_ring fixed bin (3) ext static; /* default user ring */ 2 37 dcl as_data_$dutp ptr ext static; /* daemon_user_table */ 2 38 dcl as_data_$g115_dim char (32) ext static; 2 39 dcl as_data_$lct_initialized bit (1) aligned ext static; /* LCT allocated in ring 0 */ 2 40 dcl as_data_$lct_size fixed bin ext static; /* CDT tty channels + spares */ 2 41 dcl as_data_$max_user_ring fixed bin (3) ext static; /* maximum user ring */ 2 42 dcl as_data_$mgtp ptr ext static; /* master group table */ 2 43 dcl as_data_$mrd_dim char (32) ext static; /* daemon's message routing DIM */ 2 44 dcl as_data_$ntty_dim char (32) ext static; /* network connection DIM */ 2 45 dcl as_data_$pdtdir char (168) ext static; /* PDT directory */ 2 46 dcl as_data_$pit_ptr ptr ext static; /* pit_temp_ */ 2 47 dcl as_data_$rcpdir char (168) ext static; /* RCP directory */ 2 48 dcl as_data_$request_priority fixed bin ext static; 2 49 dcl as_data_$rs_ptrs (0:9) ptr ext static; /* rate_structures */ 2 50 dcl as_data_$rtdtp ptr ext static; /* RTDT */ 2 51 dcl as_data_$sat_htp ptr ext static; /* SAT hash table */ 2 52 dcl as_data_$satp ptr ext static; /* SAT */ 2 53 dcl as_data_$suffix (0:9) char (2) unaligned ext static; 2 54 dcl as_data_$sysdir char (168) ext static; /* system control directory */ 2 55 dcl as_data_$teens_suffix (10:19) char (2) unaligned ext static; 2 56 dcl as_data_$terminet_tabs_string char (144) varying ext static; 2 57 dcl as_data_$tty_dim char (32) ext static; /* standard interactive DIM */ 2 58 dcl as_data_$update_priority fixed bin ext static; /* ??? */ 2 59 dcl as_data_$version char (8) ext static; /* AS version */ 2 60 dcl as_data_$whoptr ptr ext static; /* whotab */ 2 61 2 62 dcl 1 as_data_$login_args aligned ext static, /* control arguments for login */ 2 63 2 n_login_args fixed bin, 2 64 2 pad fixed bin, 2 65 2 login_args (55 /* as_data_$login_args.n_login_args */) char (24) unaligned; 2 66 2 67 dcl 1 as_data_$signal_types ext static aligned, /* IPC process control signals */ 2 68 2 n_signals fixed bin, 2 69 2 pad fixed bin, 2 70 2 signals (14 /* as_data_$signal_types.n_signals */) char (8) unaligned; 2 71 2 72 dcl 1 as_data_$system_signal_types ext static aligned, /* IPC process control signals */ 2 73 2 n_system_signals fixed bin, 2 74 2 pad fixed bin, 2 75 2 system_signals (10 /* as_data_$system_signal_types.n_system_signals */) char (8) unaligned; 2 76 2 77 dcl as_data_$login_words fixed bin ext static aligned, 2 78 /* interactive login words */ 2 79 1 as_data_login_words aligned based (addr (as_data_$login_words)), 2 80 2 n_words fixed bin, 2 81 2 pad fixed bin, 2 82 2 words (0 refer (as_data_login_words.n_words)) char (16) unaligned; 2 83 2 84 dcl as_data_$debug_flag bit (1) aligned external static; 2 85 dcl as_data_$ls_request_server_info_ptr ptr external static; 2 86 dcl as_data_$ls_message_buffer_cur_lth fixed bin (18) external static; 2 87 dcl as_data_$ls_message_buffer_max_lth fixed bin (18) external static; 2 88 dcl as_data_$ls_message_buffer_ptr ptr external static; 2 89 2 90 /* END INCLUDE FILE ... as_data_.incl.pl1 ... */ 2332 2333 /* BEGIN INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 3 6* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 7* Removed ansp, autp and dutp from this include file, adding them to 3 8* answer_table.incl.pl1, absentee_user_table.incl.pl1 and 3 9* daemon_user_table.incl.pl1. 3 10* END HISTORY COMMENTS */ 3 11 3 12 3 13 /* This include file requires as_data_.incl.pl1 */ 3 14 3 15 /* format: style4 */ 3 16 3 17 dcl as_procid bit (36) aligned defined (as_data_$as_procid); 3 18 dcl as_tty char (6) based (addr (as_data_$as_tty)); 3 19 dcl asmtp ptr defined (as_data_$asmtp); 3 20 dcl devtabp ptr defined (as_data_$devtabp); 3 21 dcl ip ptr defined (as_data_$rs_ptrs (0)); 3 22 dcl mgtp ptr defined (as_data_$mgtp); 3 23 dcl pdtdir char (168) based (addr (as_data_$pdtdir)); 3 24 dcl rs_ptrs (0:9) ptr based (addr (as_data_$rs_ptrs (0))); 3 25 dcl sat_htp ptr defined (as_data_$sat_htp); 3 26 dcl satp ptr defined (as_data_$satp); 3 27 dcl scdtp ptr defined (as_data_$cdtp); 3 28 dcl sysdir char (168) defined (as_data_$sysdir); 3 29 dcl whoptr ptr defined (as_data_$whoptr); 3 30 3 31 /* END INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 2333 2334 /* BEGIN INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 4 2 4 3 /* This include file defines the priorities of all of the event channels used by the answering service. 4 4* 4 5* They are declared as named constants. They are used in calls to ipc_$decl_ev_call_chn. 4 6* The names correspond to the functions of the event call handlers. 4 7* For brevity in names, MC means message coordinator, and LOGIN includes logout as well. 4 8* 4 9* The comment on each constant lists the procedure(s) that use it to set event channel priorities. 4 10* See the code in those procedures for information on the handlers themselves 4 11* (which are entry variables in some cases, and thus could not be documented in this file). 4 12* 4 13* The priorities range from zero (highest) to 22 (lowest used by the answering service). 4 14* 4 15* The event wait channel on which the A.S. goes blocked awaiting input on the initializer console has highest 4 16* of all priorities, set by as_init_ calling ipc_$set_wait_prior. 4 17* 4 18* Written June 1981 by T. Casey for MR9.0 4 19* Modified 1984-10-15 BIM for sac -> as_request. 4 20* as_request is above login, since sac is important and 4 21* dial requests for already logged in users can take 4 22* first dibs over new logins. 4 23**/ 4 24 4 25 dcl MC_PRIO fixed bin int static options (constant) init (1); /* mc_commands_, mc_con_rec_, mc_util_, mrd_tester */ 4 26 dcl SYSERR_COPY_PRIO fixed bin int static options (constant) init (2); /* syserr_log_man_ */ 4 27 dcl SHUTDOWN_PRIO fixed bin int static options (constant) init (3); /* admin */ 4 28 dcl ACCT_UPDATE_PRIO fixed bin int static options (constant) init (4); /* act_ctl_ */ 4 29 dcl DAEMON_LOGIN_PRIO fixed bin int static options (constant) init (8); /* daemon_user_manager_ */ 4 30 dcl AS_REQUEST_PRIO fixed bin int static options (constant) init (7); /* as_request_ */ 4 31 dcl INSTALL_PRIO fixed bin int static options (constant) init (8); /* up_sysctl_ */ 4 32 dcl INT_LOGIN_PRIO fixed bin int static options (constant) init (8); /* asu_, dialup_, ftp_dialup_ */ 4 33 dcl MPX_LOAD_PRIO fixed bin int static options (constant) init (11); 4 34 /* as_vip7760_mpx_, as_mcs_mpx_, as_ibm3270_mpx_, as_hasp_mpx_ */ 4 35 dcl ABS_DEFER_PRIO fixed bin int static options (constant) init (19); /* absentee_utility_ */ 4 36 dcl ABS_LOGIN_PRIO fixed bin int static options (constant) init (20); /* abentee_user_manager_ */ 4 37 dcl CORE_FLUSH_PRIO fixed bin int static options (constant) init (22); /* as_meter_ */ 4 38 4 39 /* END INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 2334 2335 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 5 2 5 3 /* This include file declares the "author" substructure 5 4* in a form suitable for using the PL/I "like" attribute. 5 5* 5 6* Written 750304 by PG 5 7**/ 5 8 5 9 dcl 1 author_dcl aligned based, 6 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 6 2 6 3 /* the "author" items must always be the first ones in the table. The 6 4* module which moves the converted table to the System Control process 6 5* fills in these data items and assumes them to be at the head of the segment 6 6* regardless of the specific table's actual declaration. The variables 6 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 6 8* respectively. For tables installed in multiple processes, these 6 9* are to be used to lock out multiple installations. */ 6 10 6 11 /* Lock should be used as a modification lock. Since, in general, 6 12* entries may not be moved in system tables, even by installations, 6 13* it is sufficient for only installers and programs that change threads 6 14* to set or respect the lock. Simply updating data in an entry 6 15* requires no such protection. 6 16* 6 17* Last_install_time is used by readers of system tables to detect 6 18* installations or other serious modifications. By checking it before 6 19* and after copying a block of data, they can be protected against 6 20* modifications. 6 21* 6 22* Modules that set the lock should save proc_group_id, and then 6 23* put their group id there for the time they hold the lock. 6 24* if they do not actually install the, they should restore the group id. 6 25**/ 6 26 6 27 2 author aligned, /* validation data about table's author */ 6 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 6 29 3 lock bit (36), /* installation lock */ 6 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 6 31 3 update_authorization bit (1) unal, /* update only authorizations */ 6 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 6 33 3 pad bit (33) unaligned, 6 34 3 last_install_time fixed bin (71), 6 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 6 36 3 w_dir char (64), /* author's working directory */ 6 37 6 38 /* END INCLUDE FILE author.incl.pl1 */ 5 10 5 11 2 pad; 5 12 5 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 2335 2336 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 7 2 7 3 /* format: style3,idind25,indcomtxt */ 7 4 7 5 /* Channel Definition Table. 7 6* This table lists all of the hardware channels (ports) connected 7 7* to the system, and maintains the attributes of each one. 7 8* 7 9* PG 741230 7 10* Modified by Mike Grady 5/6/76 to add FNP info. 7 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 7 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 7 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 7 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 7 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 7 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 7 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 7 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 7 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 7 20* Modified August 1982 by E. N. Kittlitz for check_acs. 7 21* Modified January 1983 by Keith Loepere for generic_destination. 7 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 7 23* Modified 831216 by E. N. Kittlitz for required_access_class. 7 24* Modified 84-04-01 by BIM to finish communications AIM: 7 25* access class ranges, 7 26* access_control flags. 7 27**/ 7 28 7 29 7 30 /****^ HISTORY COMMENTS: 7 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 7 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 7 33* Add support for answering service to use IOCBs when tty_ cannot be 7 34* used to service login channels. 7 35* END HISTORY COMMENTS */ 7 36 7 37 7 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 7 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 7 40 7 41 dcl (cdtp, cdtep, fnpep, mpxep) 7 42 ptr; 7 43 7 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 7 45 2 author like author_dcl.author, /* standard header */ 7 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 7 47 2 current_size fixed bin, /* number of last cdte. */ 7 48 2 version fixed bin, 7 49 2 freep fixed bin, /* chain of free cdte's */ 7 50 2 n_cdtes fixed bin, /* number of used cdte's */ 7 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 7 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 7 53 2 cpu_in_dialup fixed bin (71), /* .. */ 7 54 2 pf_in_dialup fixed bin, /* .. */ 7 55 2 pp_in_dialup fixed bin, /* .. */ 7 56 2 entries_to_dialup fixed bin, /* .. */ 7 57 2 flags, 7 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 7 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 7 60 3 mux_mgr_system_init 7 61 bit (1) unal, /* mux mgr has loaded top-levels */ 7 62 3 pad1 bit (33) unal, 7 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 7 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 7 65 2 threads aligned like channel_threads, 7 66 /* root of non-fnp-top-level-multiplexers */ 7 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 7 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 7 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 7 70 7 71 7 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 7 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 7 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 7 75 2 pad1 bit (36) aligned, 7 76 2 name char (32), /* ASCII name of channel */ 7 77 2 access_class (2) bit (72) aligned, /* access class range */ 7 78 2 comment char (48), /* printable message about channel */ 7 79 2 charge_type fixed bin (17) unal, /* billing group */ 7 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 7 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 7 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 7 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 7 84 2 pad2 bit (18) unaligned, 7 85 2 answerback char (8), /* answerback string expected */ 7 86 2 initial_terminal_type 7 87 char (32) unal, /* as specified in the CMF */ 7 88 2 mpx_data unal, /* data used only for multiplexed channels */ 7 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 7 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 7 91 2 flags, 7 92 ( 3 attributes, 7 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 7 94 4 audit_access_error 7 95 bit (1), /* ON means ck that person auth is inside access class range */ 7 96 /* this implies that the access_class describes a range of 7 97* legitimate user auths. */ 7 98 4 hardwired bit (1), /* ON means it is */ 7 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 7 100 4 dont_read_answerback 7 101 bit (1), /* ON means don't try to read answerback */ 7 102 4 pada bit (4), 7 103 3 access_control unaligned, /* As below */ 7 104 4 dial_out bit (1), /* dialing user must be on ACS */ 7 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 7 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 7 107 4 login bit (1), /* logging in user must be on acs */ 7 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 7 109 4 pado bit (3), 7 110 3 options, 7 111 4 execute_initial_command 7 112 bit (1), /* ON means to do it */ 7 113 4 attached_by_operator 7 114 bit (1), /* ON means temporary attachment. */ 7 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 7 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 7 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 7 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 7 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 7 120 4 generic_destination_present 7 121 bit (1), /* ON means that the initial_command field contains 7 122* a generic destination to match on dial_out or priv attach */ 7 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 7 124 4 pado bit (9) 7 125 ) unaligned, 7 126 2 initial_command char (64), /* pseudo first input line */ 7 127 /**** The following variables represent dynamic control info, and 7 128* are used mostly by dialup_ and asu_ */ 7 129 2 event fixed bin (71), /* event call channel for channel events */ 7 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 7 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 7 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 7 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 7 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 7 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 7 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 7 137 /* 0 = dialup_, 1 = mc_tty_ */ 7 138 3 save_arg bit (1) unal, /* -save login arg given */ 7 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 7 140 3 detach_after_hangup 7 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 7 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 7 143 3 hold_arg bit (1) unal, /* -hold arg given */ 7 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 7 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 7 146 3 current_access_class_valid 7 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 7 148 3 pad bit (7) unal, 7 149 2 twx fixed bin, /* channel device index */ 7 150 2 state fixed bin, /* channel state */ 7 151 2 tty_id_code char (4), /* channel id (answerback) */ 7 152 2 current_terminal_type 7 153 char (32) unal, /* most recently-set terminal type */ 7 154 2 process ptr unal, /* ptr to ATE owning this channel */ 7 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 7 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 7 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 7 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 7 159* We do not yet define multi-class connections, but we will someday. */ 7 160 2 disconnected_ate_index 7 161 fixed bin (17) unal, /* index of ate of disconnected process */ 7 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 7 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 7 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 7 165 2 pad3 bit (14) unaligned, 7 166 /**** The following variables are kept for metering purposes. */ 7 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 7 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 7 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 7 170 2 dialup_time fixed bin (71), /* time of present dialup */ 7 171 2 disconnected_proc_command 7 172 fixed bin (12) unsigned unal, 7 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 7 174 2 disconnected_proc_number 7 175 fixed bin (12) unsigned unal, 7 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 7 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 7 178 /* number of disconnected processes that user has */ 7 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 7 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 7 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 7 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 7 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 7 184 /**** had the space. */ 7 185 2 threads aligned like channel_threads, 7 186 /**** The use name is that of the user who gave the dial or slave ****/ 7 187 /**** preaccess request. ****/ 7 188 2 user_name unaligned, 7 189 3 person char (20) unaligned, 7 190 3 project char (9) unaligned, 7 191 3 pad char (3) unaligned, /* no tag */ 7 192 2 iocbp ptr unaligned; /* 104 words */ 7 193 7 194 7 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 7 196* overlays initial_command field for slave and autocall lines */ 7 197 7 198 7 199 7 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 7 201 /* These variables are filled in from the CMF */ 7 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 7 203 2 memory fixed bin, /* amount of memory on this FNP */ 7 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 7 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 7 206 2 service_type fixed bin, /* service type */ 7 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 7 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 7 209 /**** The following are used during system operation to remember the state of the FNP */ 7 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 7 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 7 212 2 mpxe like mpxe, /* standard multiplexer data */ 7 213 2 threads aligned like channel_threads, 7 214 /* same mpx threads as channel */ 7 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 7 216 7 217 /* This structure describes the data necessary to control a multiplexer. 7 218* For FNP's., a copy appears in the fnpe. For communications lines, it 7 219* overlays the initial_command field in the cdte. */ 7 220 7 221 dcl 1 mpxe based (mpxep) aligned, 7 222 2 state fixed bin, /* current state, up, down, loading */ 7 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 7 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 7 225 2 n_bootloads fixed bin, /* count of load attempts */ 7 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 7 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 7 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 7 229 2 time_load_start fixed bin (71), /* time current load started */ 7 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 7 231 2 flags unal, 7 232 3 go bit (1), /* start MPX after it loads */ 7 233 3 listening bit (1), /* listen has been done on subchannels */ 7 234 3 check bit (1), /* loaded with check option */ 7 235 3 retry_load bit (1), /* reload if load fails */ 7 236 3 pad1 bit (32), 7 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 7 238 7 239 /* These threads define the tree of multiplexers in the cdt. */ 7 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 7 241 /* by alpha sort order of the channel name. Daughter points to the */ 7 242 /* first child of this node, if any. Daughter count is the number */ 7 243 /* of children, as a consistency check. Mother is a back pointer to */ 7 244 /* the parent, present in all the children, not just the first. */ 7 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 7 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 7 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 7 248 7 249 dcl 1 channel_threads aligned based, 7 250 2 next_sister fixed bin unaligned, 7 251 2 prev_sister fixed bin unaligned, 7 252 2 daughter fixed bin unaligned, 7 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 7 254 2 pad bit (18) unaligned, 7 255 2 daughter_count fixed bin unaligned; 7 256 7 257 /* Values for cdte.service_type field */ 7 258 7 259 dcl ( 7 260 ANS_SERVICE init (1), /* login or dial */ 7 261 FTP_SERVICE init (2), /* file transfer service */ 7 262 MC_SERVICE init (3), /* message coordinator */ 7 263 SLAVE_SERVICE init (4), /* special channel */ 7 264 DIAL_SERVICE init (5), /* transient state */ 7 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 7 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 7 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 7 268 ) fixed bin internal static options (constant); 7 269 7 270 /* Values for service type in both cdte and fnpe */ 7 271 7 272 dcl ( 7 273 INACTIVE init (7), /* not to be used, even though configured */ 7 274 ACTIVE init (1) 7 275 ) /* for FNP only, configured and to be used */ 7 276 fixed bin internal static options (constant); 7 277 7 278 /* Value for both cdte.in_use and fnpe.state */ 7 279 7 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 7 281 /* was not configured at Multics bootload time */ 7 282 7 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 7 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 7 285 7 286 /* Value for cdte.in_use */ 7 287 7 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 7 289 /* channel deleted by CDT installation */ 7 290 7 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 7 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 7 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 7 294 7 295 7 296 /* Values for mpxe.state field */ 7 297 7 298 dcl ( 7 299 FNP_FREE init (0), /* this fnpe is not used */ 7 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 7 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 7 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 7 303 FNP_UP init (4) /* FNP is up and running fine */ 7 304 ) fixed bin internal static options (constant); 7 305 7 306 dcl ( 7 307 MPX_FREE init (0), /* this mpxe is not used */ 7 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 7 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 7 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 7 311 MPX_UP init (4) /* MPX is up and running fine */ 7 312 ) fixed bin internal static options (constant); 7 313 8 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 8 2 8 3 8 4 8 5 /****^ HISTORY COMMENTS: 8 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 8 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 8 8* Add data needed for the uncp multiplexer (DSA gateway) interface 8 9* implementation. 8 10* END HISTORY COMMENTS */ 8 11 8 12 8 13 /* Values for fnpe.type field */ 8 14 /* 8 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 8 16* Added in March 1982 - DN7100.fd. 8 17**/ 8 18 8 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 8 20 DN6600 init (2), /* a DataNet 6600 FNP */ 8 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 8 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 8 23 ) fixed bin internal static options (constant); 8 24 8 25 dcl fnp_types (4) char (8) int static options (constant) 8 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 8 27 8 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 8 29 init (355, 6600, 6670, 7100); 8 30 8 31 dcl supported_fnp (4) bit (1) int static options (constant) 8 32 init ("0"b, "0"b, "1"b, "1"b); 8 33 8 34 8 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 7 314 7 315 7 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 2336 2337 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 9 2 9 3 /* format: style4 */ 9 4 9 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 9 6 9 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 9 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 9 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 9 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 9 11* WAIT_DISCARD_WAKEUP 9 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 9 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 9 14**/ 9 15 9 16 /****^ HISTORY COMMENTS: 9 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 9 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 9 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 9 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 22* Add named constants for instance tags. 9 23* END HISTORY COMMENTS */ 9 24 9 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 9 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 9 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 9 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 9 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 9 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 9 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 9 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 9 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 9 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 9 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 9 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 9 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 9 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 9 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 9 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 9 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 9 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 9 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 9 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 9 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 9 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 9 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 9 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 9 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 9 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 9 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 9 52 ) fixed bin internal static options (constant); 9 53 9 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 9 55 /* names of ute.destroy_flag values */ 9 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 9 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 9 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 9 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 9 60 "wait remove"); /* -13 */ 9 61 9 62 /* Values for "cdte.state", typewriter state. */ 9 63 9 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 9 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 9 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 9 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 9 68 ) fixed bin internal static options (constant); 9 69 9 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 9 71 /* names of cdte.state values */ 9 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 9 73 9 74 /* Values for "cdte.in_use" and "ate.active" */ 9 75 9 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 9 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 9 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 9 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 9 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 9 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 9 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 9 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 9 84 ) fixed bin internal static options (constant); 9 85 9 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 9 87 /* names of ute.active values */ 9 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 9 89 9 90 9 91 /**** Values for ute.tag */ 9 92 9 93 dcl (TAG_INTERACTIVE init("a"), 9 94 TAG_UFT init("f"), 9 95 TAG_ABSENTEE init("m"), 9 96 TAG_PROXY init("p"), 9 97 TAG_DAEMON init("z") 9 98 ) char(1) int static options(constant); 9 99 9 100 9 101 /**** Following are constants used to indicate to the process termination 9 102* handler the reason for the process termination. They are used by 9 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 9 104* uc_ls_destroy_request_. */ 9 105 9 106 dcl ( 9 107 PT_FPE initial (1), 9 108 PT_LOGOUT initial (4), 9 109 PT_NEW_PROC_AUTH initial (13), 9 110 PT_HANGUP initial (20), 9 111 PT_SHUTDOWN initial (21), 9 112 PT_BUMP initial (22), 9 113 PT_ALARM initial (23), 9 114 PT_DETACH initial (24), 9 115 PT_UNBUMP initial (25), 9 116 PT_OPERATOR_TERMINATE initial (27), 9 117 PT_DESTROY_REQUEST initial (30), 9 118 PT_NEW_PROC_REQUEST initial (31) 9 119 ) fixed bin (17) internal static options (constant); 9 120 9 121 /**** Values for ute.preempted: 9 122* -1 user unbumped after term signal sent 9 123* 0 user unbumped; ignore alarm___ 9 124* 1 value internally used in load_ctl_ 9 125* 2 user bumped; when alarm___ comes in, send term signal 9 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 9 127* signals come in 9 128* 4 user bumped; process sick, so destroy without sending term signal 9 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 9 130* termsgnl). */ 9 131 9 132 dcl ( 9 133 PREEMPT_UNBUMP initial (-1), 9 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 9 135 PREEMPT_LOAD_CTL initial (1), 9 136 PREEMPT_BUMPED initial (2), 9 137 PREEMPT_TERM_SENT initial (3), 9 138 PREEMPT_BUMPED_NO_TERM initial (4), 9 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 9 140 ) fixed bin (17) internal static options(constant); 9 141 9 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 9 143 "unbumped", 9 144 "not bumped, ignore alarm___", 9 145 "load_ctl_", 9 146 "bumped", 9 147 "bumped, trm_ sent", 9 148 "bumped without trm_", 9 149 "bumped, termsgnl received"); 9 150 9 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 2337 2338 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 10 2 10 3 /* Modified 740723 by PG to add short AIM access names */ 10 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 10 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 10 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 10 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 10 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 10 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 10 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 10 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 10 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 10 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 10 14* strict_trusted_path. */ 10 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 10 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 10 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 10 18 10 19 10 20 /****^ HISTORY COMMENTS: 10 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 10 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 10 23* added vchn_requires_accept parameter. 10 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 10 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 10 26* Correct formatting problems. 10 27* END HISTORY COMMENTS */ 10 28 10 29 10 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 10 31 10 32 10 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 10 34 2 part_1 like installation_parms_part_1 aligned, 10 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 10 36 10 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 10 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 10 39 10 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 10 41 2 installation_id char (32), /* Name printed at dialup and in who */ 10 42 2 company char (64), /* company name */ 10 43 2 department char (64), /* department */ 10 44 2 companyds char (120), /* company, double spaced */ 10 45 2 departmentds char (120), /* dpeartment double spaced */ 10 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 10 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 10 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 10 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 10 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 10 51 2 ndevices fixed bin, /* number of devices to charge */ 10 52 2 devtab (16), /* Maximum 16 */ 10 53 3 device_id char (8), /* Name of device */ 10 54 3 device_price (0: 7) float bin, /* Price by shift */ 10 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 10 56 2 warning_time fixed bin, /* seconds from warning to logout */ 10 57 2 login_time fixed bin, /* seconds in which to complete login */ 10 58 2 acct_update fixed bin, /* seconds between acct update */ 10 59 2 login_tries fixed bin, /* number of login tries allowed */ 10 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 10 61 2 registration_price float bin, /* fee per month per user */ 10 62 2 dolsign char (1), /* "dollar sign" */ 10 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 10 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 10 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 10 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 10 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 10 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 10 69* Initializer will copy the syserr_log */ 10 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 10 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 10 72 2 fatal_error_loop_count fixed bin (17) unaligned, 10 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 10 74 2 term_real_time_seconds fixed bin (17) unaligned, 10 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 10 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 10 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 10 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 10 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 10 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 10 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 10 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 10 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 10 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 10 85 2 level_names (0:7) char (32), /* Names for security levels. */ 10 86 2 category_names (18) char (32), /* Names for security categories. */ 10 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 10 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 10 89 2 ncon fixed bin, /* Number of config elements. */ 10 90 2 cona (51), /* each entry is 5 words long */ 10 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 10 92 3 shift fixed bin (5) unal, /* Shift number */ 10 93 3 x1 fixed bin (23) unal, 10 94 3 kmem fixed bin (17) unal, /* Memory size */ 10 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 10 96 3 x2 fixed bin (17) unal, 10 97 3 maxa fixed bin (11) unal, /* Max abs users */ 10 98 3 maxq fixed bin (5) unal, /* Max abs q */ 10 99 3 maxu_base fixed bin (17) unal, 10 100 3 response_high fixed bin (17) unal, 10 101 3 response_low fixed bin (17) unal, 10 102 3 x3 fixed bin (17) unal, 10 103 10 104 /* Absentee control parameters. New for MR7.0 */ 10 105 10 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 10 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 10 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 10 109 10 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 10 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 10 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 10 113 10 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 10 115 10 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 10 117 10 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 10 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 10 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 10 121 2 version fixed bin (35), /* must be 2 */ 10 122 2 nrates fixed bin, /* number of rate structures */ 10 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 10 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 10 125 2 require_operator_login bit (1) aligned, /* just what it says */ 10 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 10 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 10 128* mcacs segments for operators */ 10 129 2 password_min_length fixed bin, /* minimum length of passwords */ 10 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 10 131 2 password_change_interval fixed bin, /* number of days until must change */ 10 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 10 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 10 134* "accepted" by operator if personid is not 10 135* signed on system console */ 10 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 10 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 10 138* or someone miscounted when using part of pad2 */ 10 139 10 140 10 141 /* Entries in the following array may be accessed via system_info_$resource_price. 10 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 10 143 10 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 10 145 2 name char (32), 10 146 2 price float bin; 10 147 11 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 11 2 11 3 /* Created on 04/24/78 by Michael R. Jordan */ 11 4 /* Modified 04/10/79 by C. D. Tavares */ 11 5 11 6 dcl rifp ptr; 11 7 11 8 dcl 1 rcp_init_flags based (rifp), 11 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 11 10 2 pad1 bit (2) unaligned, /* obsolete */ 11 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 11 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 11 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 11 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 11 15 11 16 dcl (No_authentication initial (0), 11 17 Nominal_authentication initial (1), 11 18 Automatic_authentication initial (2), 11 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 11 20 11 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 11 22 ("none", "nominal", "automatic", "manual"); 11 23 11 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 10 148 10 149 10 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 2338 2339 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 12 2 12 3 /* Written November 10 1975 by Paul Green */ 12 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 12 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 12 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 12 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 12 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 12 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 12 10 12 11 12 12 /****^ HISTORY COMMENTS: 12 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 12 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 15* Add a DSA line type. 12 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 12 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 18* Add HASP_OPR to identify HASP workstation consoles with login service. 12 19* END HISTORY COMMENTS */ 12 20 12 21 12 22 declare (LINE_MC initial (-2), 12 23 LINE_TELNET initial (-1), 12 24 LINE_UNKNOWN initial (0), 12 25 LINE_ASCII initial (1), 12 26 LINE_1050 initial (2), 12 27 LINE_2741 initial (3), 12 28 LINE_ARDS initial (4), 12 29 LINE_SYNCH initial (5), 12 30 LINE_G115 initial (6), 12 31 LINE_BSC initial (7), 12 32 LINE_ETX initial (8), 12 33 LINE_VIP initial (9), 12 34 LINE_ASYNC1 initial (10), 12 35 LINE_ASYNC2 initial (11), 12 36 LINE_ASYNC3 initial (12), 12 37 LINE_SYNC1 initial (13), 12 38 LINE_SYNC2 initial (14), 12 39 LINE_SYNC3 initial (15), 12 40 LINE_POLLED_VIP initial (16), 12 41 LINE_X25LAP initial (17), 12 42 LINE_HDLC initial (18), 12 43 LINE_COLTS initial (19), 12 44 LINE_DSA initial (20), 12 45 LINE_HASP_OPR initial (21) 12 46 ) fixed bin internal static options (constant); 12 47 12 48 dcl max_line_type fixed bin int static options (constant) init (21); 12 49 12 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 12 51 12 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 12 53 12 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 12 55 "MC", /* -2 */ 12 56 "TELNET", /* -1 */ 12 57 "none", /* 0 */ 12 58 "ASCII", /* 1 */ 12 59 "1050", /* 2 */ 12 60 "2741", /* 3 */ 12 61 "ARDS", /* 4 */ 12 62 "Sync", /* 5 */ 12 63 "G115", /* 6 */ 12 64 "BSC", /* 7 */ 12 65 "202ETX", /* 8 */ 12 66 "VIP", /* 9 */ 12 67 "ASYNC1", /* 10 */ 12 68 "ASYNC2", /* 11 */ 12 69 "ASYNC3", /* 12 */ 12 70 "SYNC1", /* 13 */ 12 71 "SYNC2", /* 14 */ 12 72 "SYNC3", /* 15 */ 12 73 "POLLED_VIP", /* 16 */ 12 74 "X25LAP", /* 17 */ 12 75 "HDLC", /* 18 */ 12 76 "COLTS", /* 19 */ 12 77 "DSA", /* 20 */ 12 78 "HASP_OPR"); /* 21 */ 12 79 12 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 2339 2340 /* BEGIN: sc_stat_.incl.pl1 * * * * * */ 13 2 13 3 13 4 /****^ HISTORY COMMENTS: 13 5* 1) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 13 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 13 7* Add sc_stat_$vchn_requires_accept in support of DSA virtual channels. 13 8* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7680), 13 9* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 13 10* Reorganized by type of data to improve readability. 13 11* END HISTORY COMMENTS */ 13 12 13 13 13 14 /* ACCESS NAMES */ 13 15 dcl ( 13 16 sc_stat_$exec_access_name, /* check MC access in an exec request */ 13 17 sc_stat_$unidentified_access_name /* check access if no one is logged in. */ 13 18 ) char(32) ext static; 13 19 13 20 /* PATHNAMES */ 13 21 dcl ( 13 22 sc_stat_$info_dir, /* admin info segs directory */ 13 23 sc_stat_$log_dir, /* as log segs directory */ 13 24 sc_stat_$mc_acs_dir, /* message coordinator ACS segments (.mcacs) dir */ 13 25 sc_stat_$sysdir /* system control directory */ 13 26 ) char(168) ext static; 13 27 13 28 /* OTHER CHAR STRINGS */ 13 29 dcl ( 13 30 sc_stat_$master_channel /* Master TTY channel. */ 13 31 ) char(6) aligned ext static; 13 32 13 33 /* LABELS */ 13 34 dcl ( 13 35 sc_stat_$admin_listener_exit_label, /* GO here to exit admin mode. Set to */ 13 36 /* ssu_$null_label unless */ 13 37 /* admin_listener is active. */ 13 38 sc_stat_$master_abort_label, /* GO here after fault that is not */ 13 39 /* attributable to a particular */ 13 40 /* command. */ 13 41 sc_stat_$system_shutdown_label /* GO here to shut down system */ 13 42 ) label variable ext static; 13 43 13 44 /* POINTERS TO */ 13 45 dcl ( 13 46 sc_stat_$admin_log_iocb, /* IOCB for admin log */ 13 47 sc_stat_$admin_log_write_ptr, /* DATA for log_write_ calls on the admin log */ 13 48 sc_stat_$admin_sci_ptr, /* DATA ssu_ for terminal currently executing */ 13 49 sc_stat_$as_log_write_ptr, /* DATA for log_write_ calls on as log, used */ 13 50 /* by sys_log_. */ 13 51 sc_stat_$initzer_ttyp, /* ENT mc_ate for initializer terminal */ 13 52 sc_stat_$master_iocb, /* IOCB for "master_i/o" */ 13 53 sc_stat_$master_sci_ptr, /* DATA ssu_ (permanent) for system control */ 13 54 sc_stat_$mc_ansp, /* HEAD of mc_anstbl */ 13 55 sc_stat_$mc_iocb, /* IOCB ptr for "mc_i/o" */ 13 56 sc_stat_$sv1_iocb, /* IOCB ptr for "severity1" */ 13 57 sc_stat_$sv2_iocb, /* IOCB ptr for "severity2" */ 13 58 sc_stat_$sv3_iocb /* IOCB ptr for "severity3" */ 13 59 ) ptr ext static; 13 60 13 61 /* SWITCHES */ 13 62 dcl ( 13 63 sc_stat_$Go, /* TRUE after answering service is listening*/ 13 64 sc_stat_$Go_typed, /* TRUE immediately after 'go' is typed */ 13 65 sc_stat_$Multics, /* TRUE after answering service started */ 13 66 sc_stat_$Multics_typed, /* TRUE immediately after 'mult' is typed */ 13 67 sc_stat_$Star_typed, /* TRUE if 'mult' and 'go' came from 'star' */ 13 68 sc_stat_$admin_listener_switch, /* TRUE if in the admin listener */ 13 69 sc_stat_$did_part1, /* TRUE if part 1 of system startup ec done */ 13 70 sc_stat_$did_part2, /* TRUE if part 2 of system startup ec done */ 13 71 sc_stat_$did_part3, /* TRUE if part 3 of system startup ec done */ 13 72 sc_stat_$mc_is_on, /* TRUE if message coordinator running */ 13 73 sc_stat_$no_operator_login, /* TRUE if operator login not required, or */ 13 74 /* if PNT not yet available. */ 13 75 sc_stat_$shutdown_typed, /* TRUE if 'shutdown' command in progress. */ 13 76 sc_stat_$test_mode, /* TRUE if in test environment */ 13 77 sc_stat_$vchn_requires_accept /* TRUE if vchn may only be used if accepted*/ 13 78 /* by operator signed on system console*/ 13 79 ) bit(1) aligned ext static; 13 80 13 81 13 82 /* END OF: sc_stat_.incl.pl1 * * * * * */ 2340 2341 /* BEGIN INCLUDE FILE ... set_term_type_info.incl.pl1 */ 14 2 /* Created 7/18/77 by Robert Coren */ 14 3 /* Defines info structure for set_term_type order */ 14 4 14 5 dcl stti_version_1 fixed bin int static options (constant) init (1); 14 6 dcl sttip ptr; 14 7 14 8 dcl 1 set_term_type_info aligned based (sttip), 14 9 2 version fixed bin, 14 10 2 name char (32) unal, 14 11 2 flags unal, 14 12 3 send_initial_string bit (1), 14 13 3 set_modes bit (1), 14 14 3 ignore_line_type bit (1), 14 15 3 mbz bit (33); 14 16 14 17 /* END INCLUDE FILE ... set_term_type_info.incl.pl1 */ 2341 2342 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 15 2 15 3 15 4 /****^ HISTORY COMMENTS: 15 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 15 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 15 7* Added sl_info structure and associated named constants for use in calling 15 8* sys_log_$general. 15 9* END HISTORY COMMENTS */ 15 10 15 11 15 12 /* format: style4 */ 15 13 15 14 dcl ( 15 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 15 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 15 17 SL_TYPE init (-1), /* type message */ 15 18 SL_LOG_SILENT init (0), /* log message */ 15 19 SL_LOG init (1), /* log & type message */ 15 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 15 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 15 22 ) fixed bin internal static options (constant); 15 23 15 24 dcl 1 sl_info aligned automatic, 15 25 2 version char(8), /* structure version */ 15 26 2 arg_list_ptr ptr, /* arg_list with values */ 15 27 2 loc, 15 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 15 29 /* These flags control where the corresponding data item is found.*/ 15 30 /* -1: data appears in the corresponding structure element below */ 15 31 /* 0: data is not present anywhere */ 15 32 /* +N: data is Nth item in argument list pointed to by */ 15 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 15 34 /* corresponding structure element. */ 15 35 /* if data = +N: */ 15 36 /* argN is data_ptr, argN+1 is data_len */ 15 37 /* if ioa_msg = +N: */ 15 38 /* argN+1, ... argLAST are arguments substituted into the */ 15 39 /* ioa_msg control string. The formatted msg is returned. */ 15 40 2 flags, 15 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 15 42 3 flags_pad bit(35) unal, 15 43 2 mode fixed bin, /* as-mode, command-mode */ 15 44 2 severity fixed bin, /* error severity */ 15 45 2 code fixed bin(35), /* error table code */ 15 46 2 caller char(65) varying, /* caller refname$entryname*/ 15 47 2 data, /* binary data ptr/length */ 15 48 3 data_ptr ptr, 15 49 3 data_lth fixed bin(21), 15 50 2 class char(10) varying, /* binary data class */ 15 51 2 ioa_msg char(500) varying; /* formatted message text */ 15 52 15 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 54 /* */ 15 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 15 56 /* their data types should be as shown in the structure above, except that */ 15 57 /* character strings should be char(*) nonvarying. */ 15 58 /* */ 15 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 60 15 61 /* value for sl_info.version */ 15 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 15 63 15 64 /* values for sl_info.mode */ 15 65 dcl (SL_INFO_as_mode init(1), 15 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 15 67 15 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 15 69 dcl (SL_INFO_arg_given_in_structure init(-1), 15 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 15 71 15 72 15 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 74 /* */ 15 75 /* The following static structures are commonly used in the Login Server */ 15 76 /* user control software. */ 15 77 /* */ 15 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 79 15 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 15 81 15 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 15 83 2 version char(8) init ("sl_info1"), 15 84 2 arg_list_ptr ptr init (null), 15 85 2 loc, 15 86 3 (mode init (-1), 15 87 severity init ( 1), 15 88 code init ( 2), 15 89 caller init (-1), 15 90 data init ( 0), 15 91 class init ( 0), 15 92 ioa_msg init ( 3)) fixed bin, 15 93 2 flags, 15 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 15 95 3 flags_pad bit(35) unal init ("0"b), 15 96 2 mode fixed bin init ( 1), 15 97 2 severity fixed bin init ( 0), 15 98 2 code fixed bin(35) init ( 0), 15 99 2 caller char(65) varying init (""), 15 100 2 data, 15 101 3 data_ptr ptr init (null), 15 102 3 data_lth fixed bin(21) init ( 0), 15 103 2 class char(10) varying init (""), 15 104 2 ioa_msg char(500) varying init (""); 15 105 15 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 15 107 15 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 15 109 2 version char(8) init ("sl_info1"), 15 110 2 arg_list_ptr ptr init (null), 15 111 2 loc, 15 112 3 (mode init (-1), 15 113 severity init ( 1), 15 114 code init ( 0), 15 115 caller init (-1), 15 116 data init ( 0), 15 117 class init ( 0), 15 118 ioa_msg init ( 2)) fixed bin, 15 119 2 flags, 15 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 15 121 3 flags_pad bit(35) unal init ("0"b), 15 122 2 mode fixed bin init ( 1), 15 123 2 severity fixed bin init ( 0), 15 124 2 code fixed bin(35) init ( 0), 15 125 2 caller char(65) varying init (""), 15 126 2 data, 15 127 3 data_ptr ptr init (null), 15 128 3 data_lth fixed bin(21) init ( 0), 15 129 2 class char(10) varying init (""), 15 130 2 ioa_msg char(500) varying init (""); 15 131 15 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 15 133 15 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 15 135 2 version char(8) init ("sl_info1"), 15 136 2 arg_list_ptr ptr init (null), 15 137 2 loc, 15 138 3 (mode init (-1), 15 139 severity init ( 1), 15 140 code init ( 0), 15 141 caller init (-1), 15 142 data init ( 0), 15 143 class init ( 0), 15 144 ioa_msg init ( 2)) fixed bin, 15 145 2 flags, 15 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 15 147 3 flags_pad bit(35) unal init ("0"b), 15 148 2 mode fixed bin init ( 1), 15 149 2 severity fixed bin init ( 0), 15 150 2 code fixed bin(35) init ( 0), 15 151 2 caller char(65) varying init (""), 15 152 2 data, 15 153 3 data_ptr ptr init (null), 15 154 3 data_lth fixed bin(21) init ( 0), 15 155 2 class char(10) varying init (""), 15 156 2 ioa_msg char(500) varying init (""); 15 157 15 158 15 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 15 160 15 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 15 162 2 version char(8) init ("sl_info1"), 15 163 2 arg_list_ptr ptr init (null), 15 164 2 loc, 15 165 3 (mode init (-1), 15 166 severity init ( 1), 15 167 code init ( 2), 15 168 caller init (-1), 15 169 data init ( 0), 15 170 class init ( 0), 15 171 ioa_msg init ( 4)) fixed bin, 15 172 2 flags, 15 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 15 174 3 flags_pad bit(35) unal init ("0"b), 15 175 2 mode fixed bin init ( 1), 15 176 2 severity fixed bin init ( 0), 15 177 2 code fixed bin(35) init ( 0), 15 178 2 caller char(65) varying init (""), 15 179 2 data, 15 180 3 data_ptr ptr init (null), 15 181 3 data_lth fixed bin(21) init ( 0), 15 182 2 class char(10) varying init (""), 15 183 2 ioa_msg char(500) varying init (""); 15 184 15 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 15 186 15 187 dcl 1 sl_info_code_msg aligned int static options(constant), 15 188 2 version char(8) init ("sl_info1"), 15 189 2 arg_list_ptr ptr init (null), 15 190 2 loc, 15 191 3 (mode init (-1), 15 192 severity init (-1), 15 193 code init ( 1), 15 194 caller init (-1), 15 195 data init ( 0), 15 196 class init ( 0), 15 197 ioa_msg init ( 2)) fixed bin, 15 198 2 flags, 15 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 15 200 3 flags_pad bit(35) unal init ("0"b), 15 201 2 mode fixed bin init ( 1), 15 202 2 severity fixed bin init ( 0), 15 203 2 code fixed bin(35) init ( 0), 15 204 2 caller char(65) varying init (""), 15 205 2 data, 15 206 3 data_ptr ptr init (null), 15 207 3 data_lth fixed bin(21) init ( 0), 15 208 2 class char(10) varying init (""), 15 209 2 ioa_msg char(500) varying init (""); 15 210 15 211 15 212 /* Syntax: call Trace (ioa_ctl, args); */ 15 213 15 214 dcl 1 sl_info_msg aligned int static options(constant), 15 215 2 version char(8) init ("sl_info1"), 15 216 2 arg_list_ptr ptr init (null), 15 217 2 loc, 15 218 3 (mode init (-1), 15 219 severity init (-1), 15 220 code init ( 0), 15 221 caller init (-1), 15 222 data init ( 0), 15 223 class init ( 0), 15 224 ioa_msg init ( 1)) fixed bin, 15 225 2 flags, 15 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 15 227 3 flags_pad bit(35) unal init ("0"b), 15 228 2 mode fixed bin init ( 1), 15 229 2 severity fixed bin init ( 0), 15 230 2 code fixed bin(35) init ( 0), 15 231 2 caller char(65) varying init (""), 15 232 2 data, 15 233 3 data_ptr ptr init (null), 15 234 3 data_lth fixed bin(21) init ( 0), 15 235 2 class char(10) varying init (""), 15 236 2 ioa_msg char(500) varying init (""); 15 237 15 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 2342 2343 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 16 2 16 3 /* Created 5/25/77 by J. Stern */ 16 4 16 5 16 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 16 7 2 version fixed bin, /* version number of this sturcture */ 16 8 2 id char (4) unaligned, /* terminal id from answerback */ 16 9 2 term_type char (32) unaligned, /* terminal type name */ 16 10 2 line_type fixed bin, /* line type number */ 16 11 2 baud_rate fixed bin, 16 12 2 reserved (4) fixed bin; /* reserved for future use */ 16 13 16 14 16 15 dcl terminal_info_ptr ptr; 16 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 16 17 16 18 16 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 2343 2344 /* BEGIN INCLUDE FILE...tty_access_class.incl.pl1 */ 17 2 17 3 17 4 17 5 /****^ HISTORY COMMENTS: 17 6* 1) change(85-07-29,Swenson), approve(86-08-13,MCR7512), 17 7* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 17 8* Modified to align an unaligned bit value to get around compiler's padded 17 9* reference bug. 17 10* END HISTORY COMMENTS */ 17 11 17 12 17 13 /* Defines structure used by "get_required_access_class" control order */ 17 14 17 15 /* History: 17 16* 1983-04-25, Robert Coren. 17 17**/ 17 18 17 19 dcl tty_access_class_ptr pointer; 17 20 17 21 dcl 1 tty_access_class aligned based (tty_access_class_ptr), 17 22 2 access_class bit (72), /* access class assigned to the channel */ 17 23 2 access_class_set bit (1) aligned; /* "1"b => there is an access class associated with the channel */ 17 24 17 25 /* NOTE: if access_class_set = "0"b, access_class field is meaningless */ 17 26 17 27 /* END INCLUDE FILE...tty_access_class.incl.pl1 */ 2344 2345 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 18 2 18 3 18 4 /****^ HISTORY COMMENTS: 18 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 18 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 18 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 18 8* attribute switches. 18 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 18 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 18 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 18 12* be deleted. 18 13* B) Add constants identifying attributes that can be changed by user at 18 14* login, etc. 18 15* END HISTORY COMMENTS */ 18 16 18 17 18 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 18 19 18 20 /* format: style4 */ 18 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 18 22 (2 administrator bit (1), /* 1 system administrator privileges */ 18 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 18 24 2 nobump bit (1), /* 2 user cannot be bumped */ 18 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 18 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 18 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 18 28* . of same project (distinct from "nobump") */ 18 29 2 nolist bit (1), /* 7 don't list user on "who" */ 18 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 18 31 2 multip bit (1), /* 9 user may have several processes */ 18 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 18 33 2 brief bit (1), /* 11 no login or logout message */ 18 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 18 35 2 vhomedir bit (1), /* 13 user may change homedir */ 18 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 18 37 2 sb_ok bit (1), /* 15 user may be standby */ 18 38 2 pm_ok bit (1), /* 16 user may be primary */ 18 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 18 40 2 daemon bit (1), /* 18 user may login as daemon */ 18 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 18 42 2 no_warning bit (1), /* 20 no warning message */ 18 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 18 44* . in PDT: this user has an individual load control group */ 18 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 18 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 18 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 18 48 2 pad bit (12)) unaligned; 18 49 18 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 18 51 ("none", /* 0 */ 18 52 "administrator", /* 1 */ 18 53 "primary_line", /* 2 */ 18 54 "nobump", /* 3 */ 18 55 "guaranteed_login", /* 4 */ 18 56 "anonymous", /* 5 */ 18 57 "nopreempt", /* 6 */ 18 58 "nolist", /* 7 */ 18 59 "dialok", /* 8 */ 18 60 "multip", /* 9 */ 18 61 "bumping", /* 10 */ 18 62 "brief", /* 11 */ 18 63 "vinitproc", /* 12 */ 18 64 "vhomedir", /* 13 */ 18 65 "nostartup", /* 14 */ 18 66 "no_secondary", /* 15 */ 18 67 "no_prime", /* 16 */ 18 68 "no_eo", /* 17 */ 18 69 "daemon", /* 18 */ 18 70 "", /* 19 vdim OBSOLETE */ 18 71 "no_warning", /* 20 */ 18 72 "igroup", /* 21 */ 18 73 "save_pdir", /* 22 */ 18 74 "disconnect_ok", /* 23 */ 18 75 "save_on_disconnect"); /* 24 */ 18 76 18 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 18 78 ("null", /* 0 */ 18 79 "admin", /* 1 */ 18 80 "", "", /* 2 - 3 */ 18 81 "guar", /* 4 */ 18 82 "anon", /* 5 */ 18 83 "", "", /* 6 - 7 */ 18 84 "dial", /* 8 */ 18 85 "multi_login", /* 9 */ 18 86 "preempting", /* 10 */ 18 87 "", /* 11 */ 18 88 "v_process_overseer", /* 12 */ 18 89 "v_home_dir", /* 13 */ 18 90 "no_start_up", /* 14 */ 18 91 "no_sec", /* 15 */ 18 92 "no_primary", /* 16 */ 18 93 "no_edit_only", /* 17 */ 18 94 "op_login", /* 18 */ 18 95 "", /* 19 */ 18 96 "nowarn", /* 20 */ 18 97 "", "", "", /* 21 - 23 */ 18 98 "save"); /* 24 */ 18 99 18 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 18 101 options(constant) init("000000000010000000010000000000000000"b); 18 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 18 103 18 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 18 105 options(constant) init("000000000010000000010000000000000000"b); 18 106 /* PDT value for (brief, no_warning) is default */ 18 107 18 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 18 109 options(constant) init("000100000110010000010000000000000000"b); 18 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 18 111 19 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 19 2 19 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 19 4 /* */ 19 5 /* This include file describes the attributes of an absentee job. It is */ 19 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 19 7 /* and PIT.incl.pl1. */ 19 8 /* */ 19 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 19 10 19 11 /****^ HISTORY COMMENTS: 19 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 19 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 14* Separated abs_attributes from the request structure 19 15* (abs_message_format.incl.pl1) so that the identical structure could be 19 16* used in the ute structure (user_table_entry.incl.pl1). 19 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 19 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 19* Added ABS_ATTRIBUTE_NAMES array. 19 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 19 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 19 22* Added the no_start_up flag. SCP6367 19 23* END HISTORY COMMENTS */ 19 24 19 25 dcl 1 user_abs_attributes aligned based, 19 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 19 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 19 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 19 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 19 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 19 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 19 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 19 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 19 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 19 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 19 36 2 attributes_pad bit (26) unaligned; 19 37 19 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 19 39 "restartable", 19 40 "user_deferred_until_time", 19 41 "proxy", 19 42 "set_bit_cnt", 19 43 "time_in_gmt", 19 44 "user_deferred_indefinitely", 19 45 "secondary_ok", 19 46 "truncate_absout", 19 47 "restarted", 19 48 "no_start_up"); 19 49 19 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 19 51 18 112 18 113 18 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 2345 2346 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 20 2 20 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 4 /* */ 20 5 /* This include file requires that the user include */ 20 6 /* user_attributes.incl.pl1 as well. It also includes */ 20 7 /* abs_attributes.incl.pl1 itself. */ 20 8 /* */ 20 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 20 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 20 11 /* */ 20 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 13 20 14 /****^ HISTORY COMMENTS: 20 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 20 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 20 17* This comment for hcom. 20 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 20 19* anstbl.incl.pl1, and dutbl.incl.pl1. 20 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 20 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 20 22* 84-07-12 BIM added min_process_authorization 20 23* 84-12-31 Keith Loepere added pdir_dir_quota 20 24* 85-01-16 by E. Swenson to add ute.session_uid 20 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 20 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 20 27* Added fields for DSA login server support. 20 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 20 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 20 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 20 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 20 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 20 33* Added disconnection_rel_minutes. 20 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 20 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 36* Changed structure under ute.abs_attributes to use like structure in 20 37* abs_attributes.incl.pl1. This allows the same attributes to be used 20 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 20 39* file. 20 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 20 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 20 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 20 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 45* A) Global reorganization to locate things by type of data. 20 46* B) Eliminate ute.uflags.logged_in. 20 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 20 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 49* A) Reduced overlength person and project fields to proper length. 20 50* B) Adjusted dialed-console section to begin on even word boundary. 20 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 20 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 20 53* Add ute.line_type. 20 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 20 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 20 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 20 57* for the storage. SCP6367 20 58* END HISTORY COMMENTS */ 20 59 20 60 /* format: style4 */ 20 61 20 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 63 /* */ 20 64 /* Each of the named sections below defines a type of data. Typing comes */ 20 65 /* from data associated with the ute entry itself, with the person, with */ 20 66 /* login argument data, from the main user of the data (eg, dialup_, */ 20 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 20 68 /* and is an even number of words long. The total structure is 300 decimal */ 20 69 /* words long. */ 20 70 /* */ 20 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 72 20 73 20 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 20 75 20 76 dcl utep pointer automatic init (null); 20 77 20 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 20 79 20 80 /* Variables which give state of this entry */ 20 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 20 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 20 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 20 84 2 next_free fixed bin, /* points to previous free entry */ 20 85 20 86 /* Information user gave about person_id associated with this entry. */ 20 87 2 person char (24) unal, /* user's name */ 20 88 2 project char (12) unal, /* project of absentee user */ 20 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 20 90 2 tag_pad bit (27) unal, 20 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 20 92 2 login_flags, /* flags for login data */ 20 93 3 cpw bit (1) unal, /* flag for wish to change password */ 20 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 20 95 3 special_pw unal, /* dial or slave */ 20 96 4 dial_pw bit (1) unal, /* true if dial -user */ 20 97 4 slave_pw bit (1) unal, /* true if slave -user */ 20 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 20 99 3 cda bit (1) unal, /* flag to change default authorization */ 20 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 20 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 20 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 20 103 3 pw_pad bit (25) unal, /* spare parts */ 20 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 20 105 /* Must remain last in pw_flags so it does not */ 20 106 /* appear in PW_FLAG_VALUES array below. */ 20 107 2 generated_pw char (8) unal, /* user must type this as new password */ 20 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 20 109 2 process_authorization bit (72), /* access_authorization of this process */ 20 110 20 111 /* Information user gave about process associated with this entry. */ 20 112 2 outer_module char (32) unal, /* Name of console dim */ 20 113 2 home_dir char (64) unal, /* initial home directory */ 20 114 2 init_proc char (64) unal, /* name of login responder */ 20 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 20 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 20 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 20 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 20 119 2 initial_ring fixed bin, /* ring process will be started in */ 20 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 20 121 2 ln_args fixed bin, /* length of string containing arguments */ 20 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 20 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 20 124 20 125 /* Most of the following information is relevant only to absentee processes */ 20 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 20 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 20 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 20 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 20 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 20 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 20 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 20 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 20 134* (but see uflags.adjust_abs_q_no). */ 20 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 20 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 20 137 2 abs_flags, 20 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 20 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 20 140 3 abs_flags_pad bit (34) unal, 20 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 20 142 2 sender char (32) unal, /* name of RJE station that job is from */ 20 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 20 144 2 proxy_project char (9) unal, 20 145 2 proxy_project_pad char (3) unal, 20 146 2 abs_pad fixed bin, 20 147 20 148 /* Information about process actually created */ 20 149 2 proc_id bit (36), /* process id of absentee process */ 20 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 20 151 2 process_authorization_range (2) bit (72) aligned, 20 152 2 audit bit (36), /* audit flags for user */ 20 153 2 lot_size fixed bin, /* Size of linkage offset table */ 20 154 2 kst_size fixed bin, /* Size of process known segment table */ 20 155 2 cls_size fixed bin, /* Size of process combined linkage */ 20 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 20 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 20 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 20 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 20 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 20 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 20 162 2 pdir_pad fixed bin(17) unal, 20 163 2 process_pad fixed bin, 20 164 20 165 /* Information about primary terminal associated with this entry */ 20 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 20 167 2 terminal_type char (32) unaligned, /* terminal type */ 20 168 2 line_type fixed bin, /* line type */ 20 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 20 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 20 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 20 172 20 173 /* Variables useful for dialed terminals */ 20 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 20 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 20 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 20 177 2 dial_server_flags, 20 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 20 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 20 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 20 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 20 182 20 183 /* Information about usage/accounting. Device usage meters are in a 20 184* separate segment, "devtab" */ 20 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 20 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 20 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 20 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 20 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 20 190 2 last_update_time fixed bin (71), /* time of last account update */ 20 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 20 192 2 ndevices fixed bin, /* Count of attached devices */ 20 193 2 device_head fixed bin, /* Table index of head of device chain */ 20 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 20 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 20 196 2 rs_number_pad bit(30) unal, 20 197 2 usage_pad fixed bin, 20 198 20 199 /* Information for dialup_ (control variables). */ 20 200 2 event fixed bin (71), /* event associated with channel or user manager */ 20 201 2 uprojp ptr, /* ptr to user project sat entry */ 20 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 20 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 20 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 20 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 20 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 20 207 2 count fixed bin, /* counter for logins and dialups */ 20 208 2 n_processes fixed bin, /* number of processes created in this session */ 20 209 2 lock_value fixed bin, /* number of locks set for this entry */ 20 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 20 211 2 login_code char (8) unal, /* login command from LOGIN line */ 20 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 20 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 20 214 2 logout_type char (4) unal, /* type of logout */ 20 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 20 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 20 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 20 218 2 work_class fixed bin, /* work class used by priority scheduler */ 20 219 2 group char (8) unal, /* party group identifier */ 20 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 20 221 20 222 2 uflags, /* Miscellaneous flags */ 20 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 20 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 20 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 20 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 20 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 20 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 20 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 20 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 20 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 20 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 20 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 20 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 20 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 20 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 20 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 20 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 20 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 20 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 20 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 20 242 3 uflags_pad bit (17) unal, 20 243 20 244 /* Information used by load_ctl_ for the process */ 20 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 20 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 20 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 20 248 20 249 20 250 /* Information for login server */ 20 251 2 login_server_info, 20 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 20 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 20 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 20 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 20 256 3 process_id bit (36) aligned, /* process_id of login server */ 20 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 20 258 20 259 /* values for ute.process_type */ 20 260 20 261 dcl (PT_INTERACTIVE initial (1), 20 262 PT_ABSENTEE initial (2), 20 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 20 264 20 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 20 266 "INVALID-TYPE", 20 267 "interactive", 20 268 "absentee", 20 269 "daemon"); 20 270 20 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 20 272 "UNKNOWN-TABLE", 20 273 "answer_table", 20 274 "absentee_user_table", 20 275 "daemon_user_table"); 20 276 20 277 20 278 /* values for ute.pw_flags.mask_ctl */ 20 279 20 280 dcl (DO_MASK init ("00"b), 20 281 DONT_MASK init ("01"b), 20 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 20 283 20 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 20 285 "do_mask", "dont_mask", "derive_mask", ""); 20 286 20 287 20 288 /* names for ute.pw_flags */ 20 289 20 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 20 291 "cpw", 20 292 "generate_pw", 20 293 "dial_pw", 20 294 "slave_pw", 20 295 "cdp", 20 296 "cda", 20 297 "auth_given", 20 298 "noprint", 20 299 "operator"); 20 300 20 301 /* names for ute.uflags */ 20 302 20 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 20 304 "dont_call_init_admin", 20 305 "ip_given", 20 306 "ss_given", 20 307 "lvs_attached", 20 308 "send_initial_string", 20 309 "adjust_abs_q_no", 20 310 "foreground_secondary_ok", 20 311 "foreground_job", 20 312 "sus_sent", 20 313 "suspended", 20 314 "ignore_cpulimit", 20 315 "deferral_logged", 20 316 "save_if_disconnected", 20 317 "disconnected", 20 318 "disconnected_list", 20 319 "proc_create_ok", 20 320 "activity_can_unbump", 20 321 "fpe_causes_logout", 20 322 "user_specified_immediate"); 20 323 20 324 /* names for ute.abs_flags */ 20 325 20 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 20 327 "abs_run", 20 328 "notify"); 20 329 20 330 /* names of ute.dial_server_flags */ 20 331 20 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 20 333 "registered", 20 334 "privileged"); 20 335 20 336 /* values of ute.login_result */ 20 337 20 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 20 339 "logged in", 20 340 "login failed, hangup", 20 341 "login failed, try again"); 20 342 20 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 2346 2347 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 21 2 21 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 21 4 /* */ 21 5 /* This include file declares the header shared by the answer_table, */ 21 6 /* absentee_user_table and daemon_user_table include files. */ 21 7 /* */ 21 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 21 9 21 10 /****^ HISTORY COMMENTS: 21 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 21 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 21 13* Initial coding. 21 14* END HISTORY COMMENTS */ 21 15 21 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 21 17 2 header_version fixed bin, /* version of the header (3) */ 21 18 2 entry_version fixed bin, /* version of user table entries */ 21 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 21 20 2 header_length fixed bin, /* length of the header */ 21 21 2 max_size fixed bin, /* max number of entries in this table */ 21 22 2 current_size fixed bin, /* actual size of table (in entries) */ 21 23 2 number_free fixed bin, /* number of free entries in the table. */ 21 24 2 first_free fixed bin, /* index of first entry in the free list. */ 21 25 2 as_procid bit (36), /* process ID of user table manager process */ 21 26 2 ut_header_pad fixed bin; 21 27 21 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 2347 2348 /* BEGIN INCLUDE FILE ... whotab.incl.pl1 */ 22 2 22 3 /* Modified 740723 by PG to add security info */ 22 4 /* Modified April 1976 by T. Casey to add shift and shift start and end times */ 22 5 /* Modified May 1979 by T. Casey for MR7.0a to add foreground absentee variables */ 22 6 /* Modified June 1981 by E. N. Kittlitz to add n_rate_structures. */ 22 7 /* Modified December 1981 by E. N. Kittlitz to expand header. */ 22 8 /* Modified 84-11-14 by E. A. Ranzenbach to add "session" fiedld in place of obsolete system ID... */ 22 9 22 10 dcl 1 whotab based (whoptr) aligned, 22 11 2 mxusers fixed bin, /* max. number of users on system */ 22 12 2 n_users fixed bin, /* current number of users */ 22 13 2 mxunits fixed bin, /* maximun "load units" allowed */ 22 14 2 n_units fixed bin, /* current load */ 22 15 2 timeup fixed bin (71), /* time system was started */ 22 16 2 session char (8), /* AS state, same as anstbl.session */ 22 17 2 nextsd fixed bin (71), /* time we will shutdown */ 22 18 2 until fixed bin (71), /* projected time we start up again */ 22 19 2 lastsd fixed bin (71), /* time of last crash or shutdown */ 22 20 2 erfno char (8), /* if a crash, the error number */ 22 21 2 obsolete_why char (32), /* reason for last shutdown */ 22 22 2 installation_id char (32), /* name of installation */ 22 23 2 obsolete_message char (32), /* message for all users */ 22 24 2 abs_event fixed bin (71), /* event channel associated with absentee */ 22 25 2 abs_procid bit (36) aligned, /* process to whom messages about absentee are signalled */ 22 26 2 max_abs_users fixed bin, /* max number of absentee users */ 22 27 2 abs_users fixed bin, /* number of absentee users logged-in */ 22 28 2 n_daemons fixed bin, /* Number of daemon users logged in */ 22 29 2 request_channel fixed bin (71), /* System master channel for requests to AS. */ 22 30 2 request_process_id bit (36), /* Process ID of request dispatcher */ 22 31 2 shift fixed bin, /* current shift (copied from anstbl, for users to see) */ 22 32 2 next_shift_change_time fixed bin (71), /* time current shift ends */ 22 33 2 last_shift_change_time fixed bin (71), /* time current shift started */ 22 34 2 fg_abs_users fixed bin (17) unal, /* number of foreground absentee users */ 22 35 2 n_rate_structures fixed bin (9) unsigned unal, /* number of rate_structures defined at bootload */ 22 36 2 pad1 bit (9) unal, 22 37 2 pad (3) fixed bin, 22 38 2 version fixed bin, /* structure version */ 22 39 2 header_size fixed bin, /* length of header in words */ 22 40 2 entry_size fixed bin, /* length of entry in words */ 22 41 /* laste_adjust is used only by Answering Service programs */ 22 42 2 laste_adjust fixed bin, /* count of 32 wd blocks in hdr from header_extension_mbz1 */ 22 43 2 laste fixed bin, /* index of last entry in use (includes laste_adjust) */ 22 44 2 freep fixed bin (18) unsigned, /* index of first free entry. chained thru "chain" */ 22 45 22 46 /* whotab header extension: The header is extended from 64 words by 22 47* annexing whole user entries from the 'e' array. Each 'e' entry is 32 words 22 48* long. Each annexed block has its first word set to zero, indicating that no user entry is 22 49* present. This allows existing programs to function with old definitions of 22 50* whotab. Obviously no new header field can be more than 31 contiguous words in 22 51* length. In the Answering Service, all programs using whotab must be compiled 22 52* with the latest version. Only lg_ctl_ uses laste_adjust. */ 22 53 22 54 2 header_extension_mbz1 fixed bin, /* location 100o */ 22 55 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 22 56 2 abs_qres (4) fixed bin, /* number of absentee positions reserved for each queue */ 22 57 2 abs_cpu_limit (4) fixed bin (35), /* current absentee cpu limits */ 22 58 2 abs_control, /* see absentee_user_table */ 22 59 3 mnbz bit (1) unal, /* must not be zero */ 22 60 3 abs_maxu_auto bit (1) unal, /* 1 if automatic */ 22 61 3 abs_maxq_auto bit (1) unal, /* 1 if automatic */ 22 62 3 abs_qres_auto bit (1) unal, /* 1 if automatic */ 22 63 3 abs_cpu_limit_auto bit (1) unal, /* 1 if automatic */ 22 64 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue dropped */ 22 65 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 22 66 3 abs_stopped bit (1) unal, /* 1 if absentee facility is stopped */ 22 67 3 control_pad bit (23) unal, 22 68 2 installation_request_channel fixed bin (71), /* IPC channel for install command */ 22 69 2 installation_request_pid bit (36), /* installation process identifier */ 22 70 2 sysid char (32), /* current system name */ 22 71 2 header_extension_pad1 (7) fixed bin, /* pad to size of e element, offset 137o */ 22 72 2 header_extension_mbz2 fixed bin, /* offset 140o */ 22 73 2 message char (124), /* message for all users */ 22 74 2 header_extension_mbz3 fixed bin, /* offset 200o */ 22 75 2 why char (124), /* reason for last shutdown */ 22 76 2 e (1000), /* offset 240o */ 22 77 3 active fixed bin, /* nonzero means logged in */ 22 78 3 person char (28) aligned, /* person name */ 22 79 3 project char (28), /* project id */ 22 80 3 anon fixed bin, /* 1 if anonymous user */ 22 81 3 padding fixed bin (71), 22 82 3 timeon fixed bin (71), /* time of login */ 22 83 3 units fixed bin, /* load units */ 22 84 3 stby fixed bin, /* 1 if stby */ 22 85 3 idcode char (4), /* tty id code */ 22 86 3 chain fixed bin (18) unsigned, /* chain for free list */ 22 87 3 proc_type fixed bin, /* 1 = interactive, 2 = absentee, 3 = daemon */ 22 88 3 group char (8), /* party-line group */ 22 89 3 fg_abs bit (1) unal, /* "1"b if foreground absentee user */ 22 90 3 disconnected bit (1) unaligned, /* "1"b if process is disconnected */ 22 91 3 suspended bit (1) unaligned, /* "1"b if process is suspended */ 22 92 3 pad2 bit (33) unal, 22 93 3 cant_bump_until fixed bin (71), /* protected from primary bump till here */ 22 94 3 process_authorization bit (72); /* access authorization of process */ 22 95 22 96 dcl WHOTAB_VERSION_1 fixed bin init (1) static options (constant); 22 97 22 98 /* END INCLUDE FILE ... whotab.incl.pl1 */ 2348 2349 /* format: on */ 2350 2351 /* BEGIN MESSAGE DOCUMENTATION 2352* 2353* Message: 2354* ftp_dialup_: non-null atep (UTEP) for cdte (CDTEP,CHANNEL), tv=TRAVEC,inuse=INUSE 2355* 2356* S: $as0 2357* 2358* T: $run 2359* 2360* M: A wakeup occurred for CHANNEL whose user table entry pointer (UTEP) 2361* was non-null. A test on the above information determined that the state of 2362* the channel to be inconsistant. The system will null the UTEP pointer in 2363* the CDT for the above channel. 2364* 2365* A: $contact 2366* 2367* Message: 2368* ftp_dialup_: re-used cdte (CDTEP,CHANNEL) by ate UTEP, destroy_flag=DDDD 2369* 2370* S: $as0 2371* 2372* T: $run 2373* 2374* M: An ate wakeup occurred which pointed to a CDTEP that was already in 2375* use by another process. 2376* 2377* A: $inform 2378* 2379* Message: 2380* ftp_dialup_: re-used cdte (CDTEP,CHANNEL) by ate UTEP, destroy_flag=DDDD 2381* 2382* S: $as0 2383* 2384* T: $run 2385* 2386* M: An ate wakeup occurred which pointed to a CDTEP that was already in 2387* use by another process. 2388* 2389* A: $inform 2390* 2391* Message: 2392* ftp_dialup_: turning off disconnected flag for ate UTEP, cdte CDTEP,CHANNEL 2393* 2394* S: $as0 2395* 2396* T: $run 2397* 2398* M: If processing an ate wakeup, the CHANNEL is known and the process is 2399* disconnected, the disconnected flag for the ate will be turned off. 2400* 2401* A: $inform 2402* 2403* Message: 2404* ftp_dialup_: Program error: null atep with per-process tra_vec value 2405* 2406* S: $as2 2407* 2408* T: $run 2409* 2410* M: A system programming error in the answering service has occurred as a 2411* wakeup occurred when tra_vec indicated to expect a process termination but 2412* the ate pointer was null. 2413* 2414* A: $inform 2415* 2416* Message: 2417* ftp_dialup_: Program error: null cdtep with per-channel tra_vec value 2418* 2419* S: $as2 2420* 2421* T: $run 2422* 2423* M: A wakeup was received when the tra_vec value indicated a channel 2424* operation was required but the cdtep was null. This is considered to be a 2425* programming error. 2426* 2427* A: $inform 2428* 2429* Message: 2430* ftp_dialup_: Program error: per-process wakeup with per-channel-only tra_vec value 2431* 2432* S: $as2 2433* 2434* T: $run 2435* 2436* M: A process wakeup occurred when the tra_vec value indicated it should 2437* be a channel wakeup. This is considered a programing error. 2438* 2439* A: $inform 2440* 2441* Message: 2442* ftp_dialup_: CDT damaged at CDTEP, tra_vec=TTTT 2443* 2444* S: $as2 2445* 2446* T: $run 2447* 2448* M: The tra_vec value was found to be invalid for a channel wakeup. 2449* Damage to the CDT is indicated. 2450* 2451* A: $inform 2452* 2453* Message: 2454* ftp_dialup_: answer table damaged at UTEP, tra_vec=TTTT 2455* 2456* S: $as2 2457* 2458* T: $run 2459* 2460* M: The tra_vec value was found to be invalid for an answer table wakeup. 2461* Damage to the answer table is indicated. 2462* 2463* A: $inform 2464* 2465* Message: 2466* ftp_dialup_: unexpected state SSSS for channel definition table at CDTEP 2467* 2468* S: $as2 2469* 2470* T: $run 2471* 2472* M: $err 2473* 2474* A: $inform 2475* 2476* Message: 2477* ftp_dialup_: Unable to determine initial terminal type for channel CHANNEL 2478* 2479* S: $as2 2480* 2481* T: $run 2482* 2483* M: Unable to determine the default terminal type based on 2484* line-type/baud-rate in the TTT. The channel has been removed from known 2485* channels. 2486* 2487* A: $inform 2488* 2489* Message: 2490* ftp_dialup_: wrong answerback on CHANNEL (COMMENT); expected "ID1", got "ID2". 2491* 2492* S: $as2 2493* 2494* T: $run 2495* 2496* M: A terminal attempted to connect on CHANNEL (whose CDT comment is 2497* COMMENT) that is restricted to a specific answerback and did not return the 2498* expected value. ID1 is the answerback expected; ID2 is the answerback 2499* actually received. The terminal is hung up. 2500* 2501* A: $ignore 2502* 2503* Message: 2504* ftp_dialup_: ERROR_MESSAGE attempting to allocate a user table entry for CHANNEL 2505* 2506* S: $as1 2507* 2508* T: $run 2509* 2510* M: An ERROR_MESSAGE was returned from a call to asu_$attach_ate which 2511* allocates a user table entry. 2512* 2513* A: $inform 2514* 2515* Message: 2516* ftp_dialup_: The answer table is full (MAX entries). 2517* 2518* S: $as1 2519* 2520* T: $run 2521* 2522* M: The system answer table is full and has MAX entries. No more users 2523* will be able to login. 2524* 2525* A: $inform 2526* 2527* Message: 2528* ftp_dialup_: ERROR_MESSAGE occurred attempting to declare handler for ev chn EVENT_CHN for ate UTEP for CDT_CHANNEL 2529* 2530* S: $as2 2531* 2532* T: $run 2533* 2534* M: An ERROR_MESSAGE was returned when an attempt was made to declare an 2535* event call channel for new process (UTEP) on EVENT_CHN attached to 2536* CDT_CHANNEL. 2537* 2538* A: $inform 2539* 2540* Message: 2541* ftp_dialup_: ERROR_MESSAGE when creating process for PERSON.PROJECT 2542* 2543* S: $as2 2544* 2545* T: $run 2546* 2547* M: An ERROR_MESSAGE was returned and the system was unable to create a 2548* user process for PERSON.PROJECT. 2549* 2550* A: If possible, get in touch with the user. (He got a 2551* message to contact you.) Ask him to try again and to tell 2552* you of any peculiarities of his login. Note all particulars 2553* and contact the programming staff. 2554* 2555* Message: 2556* ftp_dialup_: process terminated PERSON.PROJECT CHANNEL TERM_MESSAGE 2557* 2558* S: $as0 2559* 2560* T: $run 2561* 2562* M: The process for PERSON.PROJECT on CHANNEL was terminated abnormally 2563* due to reason in TERM_MESSAGE. 2564* 2565* A: $ignore 2566* 2567* Message: 2568* ftp_dialup_: fatal error during process creation for PERSON.PROJECT CHANNEL 2569* 2570* S: $as1 2571* 2572* T: $run 2573* 2574* M: A fatal error occurred during process creation for PERSON.PROJECT on 2575* CHANNEL. Reason is given in previous log entry. This may be due to a user 2576* error: incorrect segments in the user's home directory or bad login 2577* arguments can cause this problem. 2578* 2579* A: $ignore 2580* 2581* Message: 2582* ftp_dialup_: terminating fatal process error loop for PERSON.PROJECT CHANNEL 2583* 2584* S: $as1 2585* 2586* T: $run 2587* 2588* M: The process for PERSON.PROJECT on CHANNEL has taken too many fatal 2589* process errors. This is governed by fatal_error_loop_seconds and 2590* fatal_error_loop_count in the installation_parms. The user will not get a 2591* new process. The channel will not be hungup but will get a message 2592* indicating this condition. This message may be due to a user error. 2593* 2594* A: $ignore 2595* 2596* Message: 2597* ftp_dialup_: ERROR_MESSAGE new_proc of PERSON.PROJECT denied by channel AIM restriction. 2598* 2599* S: $as0 2600* 2601* T: $run 2602* 2603* M: A user attempted to issue a new_proc an specify an AIM authorization 2604* which is not allowed by the terminal channel in use. 2605* 2606* A: $ignore 2607* 2608* Message: 2609* ftp_dialup_: Unexpected termsgnl for PERSON.PROJECT CHANNEL (preempted=DDDD). 2610* 2611* S: $as0 2612* 2613* T: $run 2614* 2615* M: A "termsgnl" wakeup was received for the PERSON.PROJECT process on 2616* CHANNEL whose ute.preempted value DDDD did not indicate one was allowed. 2617* This is considered to be a program error. User will be given a new process. 2618* 2619* A: $inform 2620* 2621* Message: 2622* ftp_dialup_: process ignored term signal PERSON.PROJECT CHANNEL 2623* 2624* S: $as1 2625* 2626* T: $run 2627* 2628* M: The PERSON.PROJECT process on CHANNEL had been sent a trm_ signal but 2629* the process did not respond to it. The process will be handled as was 2630* intended to be; bumped, logged out, etc. 2631* 2632* A: $ignore 2633* 2634* Message: 2635* ftp_dialup_: premature stopstop for PERSON.PROJECT CHANNEL 2636* 2637* S: $as0 2638* 2639* T: $run 2640* 2641* M: $err 2642* 2643* A: $inform 2644* 2645* Message: 2646* ftp_dialup_: process did not respond properly to trm_ signal. PERSON.PROJECT CHANNEL 2647* 2648* S: $as0 2649* 2650* T: $run 2651* 2652* M: The PERSON.PROJECT process on CHANNEL was being terminated and had 2653* been sent the trm_ signal but it did not respond. User process will be 2654* bumped, logged out or new_proced. It is possible that the user can cause 2655* this message. 2656* 2657* A: $ignore 2658* 2659* Message: 2660* ftp_dialup_: cdtep = null and ate.active = DDDD for UTEP 2661* 2662* S: $as2 2663* 2664* T: $run 2665* 2666* M: $err 2667* 2668* A: $inform 2669* 2670* Message: 2671* ftp_dialup_: cdte CDTEP (CHANNEL) state M in use N - notify system programmer", 2672* 2673* S: $as0 2674* 2675* T: $run 2676* 2677* M: $err 2678* 2679* A: $contact 2680* 2681* Message: 2682* ftp_dialup_: called with null message ptr 2683* 2684* S: $as2 2685* 2686* T: $run 2687* 2688* M: A programming error in the interprocess communication 2689* system, the network software, or the Answering Service itself 2690* has occurred. An invalid message pointer has been passed to 2691* the Answering Service. The system ignores the message and 2692* attempts to continue. This message may be the result of an incorrect 2693* library installation. 2694* 2695* A: Shut down the system and perform a bootload operation. 2696* Inform the system programming staff. 2697* 2698* Message: 2699* ftp_dialup_: called while ansp = null 2700* 2701* S: $as2 2702* 2703* T: $run 2704* 2705* M: A programming error in the Answering Service or an incorrect 2706* library installation has caused the Answering Service to be called 2707* before being initialized. The system will ignore the error and attempt 2708* to continue. 2709* 2710* A: Shut down the system and perform a bootload operation. 2711* 2712* Message: 2713* ftp_dialup_: called with bad ptr EVENT_MSG_PTR by WWWWWWWWWWWW 2714* 2715* S: $as2 2716* 2717* T: $run 2718* 2719* M: A programming error in the interprocess communication 2720* system, the network software, or the Answering Service itself has 2721* occurred. An invalid message pointer has been passed to the Answering 2722* Service. The system ignores the message and attempts to continue. 2723* This message may be the result of an incorrect library installation. 2724* 2725* A: Shut down the system and perform a bootload operation. 2726* 2727* Message: 2728* ftp_dialup_: ignored SSSS from PERSON.PROJECT for CHANNEL state=DDDD,inuse=UUUU,tv=TTTT 2729* 2730* S: $as2 2731* 2732* T: $run 2733* 2734* M: A spurious signal SSSS from user PERSON.PROJECT has arrived for 2735* CHANNEL. The state of the channel is DDD, inuse is UUUU and tra_vec is 2736* TTTT. 2737* 2738* A: This may be some user trying to disrupt the system. Do a 2739* who and save it for the programming staff. 2740* 2741* Message: 2742* ftp_dialup_: ERROR_MESSAGE tty_dim error, removing channel CHANNEL COMMENT 2743* 2744* S: $as2 2745* 2746* T: $run 2747* 2748* M: An ERROR_MESSAGE caused the CHANNEL to be unusable. The 2749* CHANNEL with COMMENT will be removed from service. 2750* 2751* A: You may try to attach the channel. If that fails, notify the system 2752* programmers. If the channel is to be left detached, busy out the modem. 2753* 2754* Message: 2755* ftp_dialup_: trace event CHANNEL FFFFFFFF WWWWWWWWWWWW RRRRRRDDDDDD SS XXXX st N wp M 2756* 2757* S: $as1 2758* 2759* T: $run 2760* 2761* M: This is trace output. When ftp_dialup_$ftp_dial_loud is called, 2762* these messages are printed out for every signal concerning a device 2763* channel. FFFFFFFF is the function being performed. WWWWWWWWWWWW is 2764* the sending process ID. RRRRRR is the ring origin of the signal. 2765* DDDDDD is the device signal information. The pointer SS XXXX locates the 2766* answer table entry for CHANNEL. The channel state is N and the wait 2767* point (transaction vector) is M. 2768* 2769* A: $ignore To turn these messages 2770* off, type ftp_dialup_$ftp_dial_soft while in admin mode. 2771* 2772* END MESSAGE DOCUMENTATION */ 2773 2774 end ftp_dialup_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 09/01/88 1338.5 ftp_dialup_.pl1 >spec>install>1096>ftp_dialup_.pl1 2331 1 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 2332 2 08/06/87 0913.4 as_data_.incl.pl1 >ldd>include>as_data_.incl.pl1 2333 3 08/06/87 0913.4 as_data_definitions_.incl.pl1 >ldd>include>as_data_definitions_.incl.pl1 2334 4 01/21/85 0912.2 as_wakeup_priorities.incl.pl1 >ldd>include>as_wakeup_priorities.incl.pl1 2335 5 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 5-10 6 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 2336 7 08/06/87 0913.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 7-314 8 07/21/88 2036.0 fnp_types.incl.pl1 >ldd>include>fnp_types.incl.pl1 2337 9 08/06/87 0913.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 2338 10 08/06/87 0913.4 installation_parms.incl.pl1 >ldd>include>installation_parms.incl.pl1 10-148 11 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 2339 12 08/06/87 0913.4 line_types.incl.pl1 >ldd>include>line_types.incl.pl1 2340 13 08/06/87 0913.5 sc_stat_.incl.pl1 >ldd>include>sc_stat_.incl.pl1 2341 14 09/01/77 1359.3 set_term_type_info.incl.pl1 >ldd>include>set_term_type_info.incl.pl1 2342 15 08/06/87 0913.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.incl.pl1 2343 16 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 2344 17 09/18/86 1308.0 tty_access_class.incl.pl1 >ldd>include>tty_access_class.incl.pl1 2345 18 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 18-112 19 07/14/88 2015.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 2346 20 07/14/88 2015.0 user_table_entry.incl.pl1 >ldd>include>user_table_entry.incl.pl1 2347 21 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 2348 22 01/18/85 0953.2 whotab.incl.pl1 >ldd>include>whotab.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. CHANNEL_DELETED 020012 constant fixed bin(17,0) initial dcl 7-288 ref 1436 1615 FTP_SERVICE constant fixed bin(17,0) initial dcl 7-259 ref 1615 INACTIVE constant fixed bin(17,0) initial dcl 7-272 ref 1438 INT_LOGIN_PRIO 000300 constant fixed bin(17,0) initial dcl 4-32 set ref 704* LINE_TELNET 020011 constant fixed bin(17,0) initial dcl 12-22 ref 531 563 582 ME 000161 constant char(11) initial packed unaligned dcl 279 set ref 387* 400* 404* 411* 496* 507* 512* 523* 538* 574* 639* 690* 692* 707* 932* 1100* 1109* 1136* 1187* 1216* 1261* 1296* 1330* 1402* 1417* 1520* 1563* 1566* 1569* 1576* 1582* 2138* 2159* 2287* NL 020013 constant char(1) initial dcl 266 ref 1372 1980 1984 2025 2032 2040 NOW_DIALED constant fixed bin(17,0) initial dcl 9-76 ref 385 454 455 559 1487 1492 NOW_FREE constant fixed bin(17,0) initial dcl 9-76 ref 517 NOW_HAS_PROCESS constant fixed bin(17,0) initial dcl 9-76 ref 436 947 948 1340 NOW_HUNG_UP constant fixed bin(17,0) initial dcl 9-76 ref 1443 1516 1522 1542 2134 NOW_LISTENING constant fixed bin(17,0) initial dcl 9-76 ref 1519 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 9-76 ref 1277 1389 1390 1391 1397 1398 1425 1426 PREEMPT_TERMSGNL_RECEIVED constant fixed bin(17,0) initial dcl 9-132 ref 1212 PREEMPT_TERM_SENT constant fixed bin(17,0) initial dcl 9-132 ref 1080 1211 1259 1290 1308 1329 PREEMPT_UNBUMP 020011 constant fixed bin(17,0) initial dcl 9-132 ref 1207 1290 PREEMPT_UNBUMP_IGNORE_ALARM constant fixed bin(17,0) initial dcl 9-132 ref 928 1254 1293 P_bufr parameter char dcl 2060 in procedure "format_ecode" set ref 2057 2069* 2073* 2073* P_bufr parameter char dcl 2082 in procedure "format_msg" set ref 2079 2093* P_code parameter fixed bin(35,0) dcl 2060 in procedure "format_ecode" set ref 2057 2069* P_code parameter fixed bin(35,0) dcl 1631 in procedure "interpret_ftp_cmd" set ref 1628 1661* 1790* 1796* 1802* 1812* 1818* 1828* 1834* 1838* P_cursor parameter fixed bin(17,0) dcl 1631 set ref 1628 1788* 1793* 1799* P_ftp_code parameter char(4) dcl 2012 ref 2009 2021 2045 P_in_lng parameter fixed bin(17,0) dcl 2082 set ref 2079 2093* P_len parameter fixed bin(17,0) dcl 1962 set ref 1957 1975* 1977 1979* 1983* 1983 1984 P_lgwd parameter char packed unaligned dcl 1631 set ref 1628 1795* 1801* 1817* P_line parameter char dcl 1631 set ref 1628 1658 1658 1694 1694 1719 1719 1734 1734 1752 1752 1770 1770 1815 1815 P_ll parameter fixed bin(17,0) dcl 1631 set ref 1628 1658* 1694 1719 1734 1752 1770 1815 P_lng parameter fixed bin(17,0) dcl 2060 in procedure "format_ecode" set ref 2057 2073* P_lng parameter fixed bin(17,0) dcl 2082 in procedure "format_msg" set ref 2079 2093* P_message parameter char dcl 2012 ref 2009 2032 2038 2040 2046 2049 P_msg parameter char dcl 2100 set ref 2097 2107* 2107 2107 P_msg_lng parameter fixed bin(17,0) dcl 2012 ref 2009 2023 2032 2034 2040 2046 2049 P_new_ftp_code parameter fixed bin(17,0) dcl 2060 in procedure "format_ecode" ref 2057 2070 P_new_ftp_code parameter fixed bin(17,0) dcl 2100 in procedure "print_ftp_msg" set ref 2097 2107* P_new_ftp_code parameter fixed bin(17,0) dcl 2082 in procedure "format_msg" ref 2079 2090 P_new_lng parameter fixed bin(17,0) dcl 2012 set ref 2009 2026* 2050* P_old_ftp_code parameter fixed bin(17,0) dcl 2060 in procedure "format_ecode" ref 2057 2072 P_old_ftp_code parameter fixed bin(17,0) dcl 2100 in procedure "print_ftp_msg" set ref 2097 2107* P_old_ftp_code parameter fixed bin(17,0) dcl 2082 in procedure "format_msg" ref 2079 2092 P_status_code parameter fixed bin(35,0) dcl 1962 set ref 1957 1974* SLAVE_SERVICE constant fixed bin(17,0) initial dcl 7-259 ref 1010 1615 SL_LOG 000310 constant fixed bin(17,0) initial dcl 15-14 set ref 690* 692* 1109* 1136* 1261* 2159* SL_LOG_BEEP 000301 constant fixed bin(17,0) initial dcl 15-14 set ref 496* 507* 512* 523* 538* 574* 639* 707* 932* 1402* 1563* 1566* 1569* 1576* 1580 2138* SL_LOG_SILENT 000277 constant fixed bin(17,0) initial dcl 15-14 set ref 387* 400* 404* 411* 1100* 1187* 1216* 1296* 1330* 1520* 1585 STOPstop 000020 internal static char(8) initial dcl 269 set ref 1300 STOPstop_msg based fixed bin(71,0) dcl 270 set ref 1300* TAG_INTERACTIVE constant char(1) initial packed unaligned dcl 9-93 ref 893 TTY_ACCESS_CLASS 000543 automatic structure level 1 dcl 328 set ref 882* 883 883 TTY_DIALED constant fixed bin(17,0) initial dcl 9-64 ref 557 984 1072 1468 1514 1595 2133 TTY_HUNG constant fixed bin(17,0) initial dcl 9-64 ref 1603 1613 TTY_MASKED 020011 constant fixed bin(17,0) initial dcl 9-64 ref 1615 WAIT_ANSWERBACK constant fixed bin(17,0) initial dcl 9-25 ref 589 WAIT_DELETE_CHANNEL constant fixed bin(17,0) initial dcl 9-25 ref 503 1435 WAIT_DETACH constant fixed bin(17,0) initial dcl 9-25 ref 503 1285 1287 1332 1528 WAIT_DIAL_RELEASE constant fixed bin(17,0) initial dcl 9-25 ref 988 1012 WAIT_HANGUP constant fixed bin(17,0) initial dcl 9-25 ref 1437 WAIT_LOGIN_LINE constant fixed bin(17,0) initial dcl 9-25 ref 667 WAIT_LOGOUT constant fixed bin(17,0) initial dcl 9-25 ref 487 941 1106 1131 1152 1162 1167 1172 1228 1234 1241 1270 1305 1315 1337 WAIT_LOGOUT_HOLD constant fixed bin(17,0) initial dcl 9-25 ref 487 1148 1159 1479 1552 1553 WAIT_LOGOUT_SIG constant fixed bin(17,0) initial dcl 9-25 ref 468 470 487 959 960 WAIT_NEW_PROC constant fixed bin(17,0) initial dcl 9-25 ref 487 1120 1143 1177 1332 1429 1490 1535 WAIT_PASSWORD constant fixed bin(17,0) initial dcl 9-25 ref 827 WAIT_REMOVE constant fixed bin(17,0) initial dcl 9-25 ref 503 1442 access_class 000543 automatic bit(72) level 2 dcl 328 set ref 887 access_class_set 2 000543 automatic bit(1) level 2 dcl 328 set ref 884 act_ctl_$close_account 000332 constant entry external dcl 163 ref 937 1430 1537 act_ctl_$cp 000334 constant entry external dcl 164 ref 946 act_ctl_$dp 000336 constant entry external dcl 165 ref 1424 act_ctl_$open_account 000340 constant entry external dcl 166 ref 919 active based fixed bin(17,0) level 2 dcl 20-78 set ref 436 517 947* 1340 1397 1398 1402* 1425* 2213 addr builtin function dcl 158 ref 370 456 456 592 592 614 614 643 643 670 670 698 698 712 712 719 719 736 736 743 743 754 754 754 764 769 792 792 810 810 824 824 831 831 883 883 905 905 972 972 977 977 983 983 1046 1046 1047 1048 1080 1105 1299 1300 1375 1375 1379 1379 1473 1473 1658 1658 1694 1694 1719 1719 1734 1734 1752 1752 1770 1770 1815 1815 1843 1843 1885 1885 1898 1898 1911 1911 2108 2108 2323 2323 aim_check_$equal 000342 constant entry external dcl 167 ref 1185 anonymous 16 based fixed bin(17,0) level 2 dcl 20-78 set ref 815* 873* ansp 000552 automatic pointer initial dcl 1-53 set ref 366* 376 394 552 649 692 761 765 765 803 806 963 1116 1118 1273 1299 1300 1451 1525 1-53* 1862 1863 1864 1865 1868 1868 1870 1871 1873 1873 1875 1875 1878 1880 1880 1928 1928 1936 1936 1938 1938 1939 1947 1947 1948 1949 anstbl based structure level 1 dcl 1-55 answerback 35 based char(8) level 2 dcl 7-72 set ref 635* 639* arg based char packed unaligned dcl 2245 ref 2256 argl 000550 automatic fixed bin(17,0) dcl 2245 set ref 2255* 2256 argp 000546 automatic pointer dcl 2245 set ref 2255* 2256 as_check_condition_ 000662 constant entry external dcl 2280 ref 2282 as_data_$ansp 000636 external static pointer dcl 2-26 ref 365 366 as_data_$as_procid 000640 external static bit(36) dcl 2-27 ref 431 431 1949 1949 as_data_$cdtp 000642 external static pointer dcl 2-33 ref 381 381 963 963 963 963 965 965 965 965 966 966 966 966 967 967 967 967 968 968 968 968 as_data_$login_words 000654 external static fixed bin(17,0) dcl 2-77 set ref 754 754 754 764 769 as_data_$rs_ptrs 000644 external static pointer array dcl 2-49 ref 657 657 799 799 1116 1116 1129 1129 1865 1865 as_data_$signal_types 000650 external static structure level 1 dcl 2-67 as_data_$system_signal_types 000652 external static structure level 1 dcl 2-72 as_data_$whoptr 000646 external static pointer dcl 2-60 ref 1865 1865 as_data_login_words based structure level 1 dcl 2-77 as_dump_ 000344 constant entry external dcl 168 ref 2289 as_error_table_$automatic_logout 000552 external static fixed bin(35,0) dcl 235 ref 1242 1274 1283 1360 as_error_table_$bad_answerback 000544 external static fixed bin(35,0) dcl 232 set ref 642* as_error_table_$bad_login_arg_msg 000560 external static fixed bin(35,0) dcl 238 ref 731 as_error_table_$bad_login_word_msg 000556 external static fixed bin(35,0) dcl 237 set ref 2230* as_error_table_$bump_cancelled 000622 external static fixed bin(35,0) dcl 255 ref 1208 as_error_table_$coming_up 000612 external static fixed bin(35,0) dcl 251 ref 806 as_error_table_$detach 000614 external static fixed bin(35,0) dcl 252 ref 1277 1364 as_error_table_$dialup_error 000550 external static fixed bin(35,0) dcl 234 set ref 711* 1557 as_error_table_$greeting_msg 000554 external static fixed bin(35,0) dcl 236 set ref 2229* as_error_table_$illegal_new_proc 000540 external static fixed bin(35,0) dcl 230 ref 1180 1186 1189 as_error_table_$illegal_signal 000546 external static fixed bin(35,0) dcl 233 ref 1061 1218 as_error_table_$init_err 000564 external static fixed bin(35,0) dcl 240 ref 1164 as_error_table_$init_term_msg 000600 external static fixed bin(35,0) dcl 246 set ref 2232* as_error_table_$login_auth_msg 000666 external static fixed bin(35,0) dcl 2307 set ref 2317* as_error_table_$logout1_msg 000570 external static fixed bin(35,0) dcl 242 set ref 2235* as_error_table_$logout_msg 000566 external static fixed bin(35,0) dcl 241 set ref 2234* as_error_table_$no_init_proc 000572 external static fixed bin(35,0) dcl 243 ref 1174 as_error_table_$no_io_attach 000574 external static fixed bin(35,0) dcl 244 ref 1169 as_error_table_$no_login_arg_msg 000562 external static fixed bin(35,0) dcl 239 ref 731 as_error_table_$no_signal 000620 external static fixed bin(35,0) dcl 254 ref 1303 as_error_table_$proc_term_loop_msg 000602 external static fixed bin(35,0) dcl 247 set ref 2233* as_error_table_$proc_term_msg 000576 external static fixed bin(35,0) dcl 245 set ref 2231* as_error_table_$process_create_fail 000616 external static fixed bin(35,0) dcl 253 ref 939 as_error_table_$pw_msg 000604 external static fixed bin(35,0) dcl 248 set ref 2236* as_error_table_$shutdown 000606 external static fixed bin(35,0) dcl 249 ref 803 1235 1273 1362 as_error_table_$special_session 000610 external static fixed bin(35,0) dcl 250 ref 808 as_error_table_$sys_full 000624 external static fixed bin(35,0) dcl 256 ref 694 as_error_table_$term_by_operator 000542 external static fixed bin(35,0) dcl 231 ref 1092 as_error_table_$tty_no_room 000626 external static fixed bin(35,0) dcl 257 ref 691 as_procid defined bit(36) dcl 3-17 in procedure "ftp_dialup_" set ref 431 1949* as_procid 10 based bit(36) level 3 in structure "anstbl" dcl 1-55 in procedure "ftp_dialup_" set ref 1299* 1300* astty_$tty_abort 000346 constant entry external dcl 169 ref 2120 astty_$tty_changemode 000350 constant entry external dcl 170 ref 622 astty_$tty_event 000352 constant entry external dcl 171 ref 1856 astty_$tty_force 000354 constant entry external dcl 172 ref 643 698 712 736 743 792 810 824 905 983 1375 1379 1473 1843 1885 2108 2323 astty_$tty_get_chars 000356 constant entry external dcl 173 ref 592 astty_$tty_new_proc 000360 constant entry external dcl 174 ref 955 astty_$tty_order 000362 constant entry external dcl 175 ref 585 614 620 883 1515 1541 1855 1898 1911 astty_$tty_read 000364 constant entry external dcl 176 ref 456 670 831 astty_$tty_state 000366 constant entry external dcl 177 ref 554 1069 1466 1593 1601 1611 asu_$asu_listen 000370 constant entry external dcl 178 ref 1528 1615 asu_$asu_remove 000372 constant entry external dcl 179 ref 2145 asu_$attach_ate 000374 constant entry external dcl 180 ref 688 asu_$check_for_stopped_process 000376 constant entry external dcl 181 ref 1417 asu_$find_process 000400 constant entry external dcl 182 ref 1573 asu_$release_ate 000402 constant entry external dcl 183 ref 796 863 1484 1507 2142 asu_$remove_cdte 000404 constant entry external dcl 184 ref 546 asu_$send_term_signal 000406 constant entry external dcl 185 ref 1089 1225 1231 1238 1257 1281 asu_$start_process 000410 constant entry external dcl 186 ref 957 attributes 50 based structure level 3 packed packed unaligned dcl 7-72 auth_given 17(06) based bit(1) level 3 packed packed unaligned dcl 20-78 set ref 888* author based structure level 2 dcl 5-9 author_dcl based structure level 1 dcl 5-9 authorization 0(18) based bit(54) level 2 packed packed unaligned dcl 347 ref 1185 authorization_string 001274 automatic char(200) packed unaligned dcl 2300 set ref 2310* 2314* 2316 2320* bad_login_word_fmt 000056 internal static varying char(100) dcl 274 set ref 777* 2230* based_tcode based structure level 1 dcl 351 baseno builtin function dcl 158 ref 381 381 394 394 1048 baud_rate 13 000511 automatic fixed bin(17,0) level 2 in structure "term_info" dcl 324 in procedure "ftp_dialup_" set ref 569* 1917 baud_rate 33(18) based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 7-72 in procedure "ftp_dialup_" set ref 1917* bc based structure level 1 dcl 343 buff 000235 automatic char(300) dcl 305 set ref 456 456 592 592 597 597 642* 643 643 662* 670 670 676* 697* 698 698 711* 712 712 719 719 734* 735* 735* 736 736 742* 743 743 777* 785* 785* 788* 790* 790* 792 792 809* 810 810 822* 823* 823* 824 824 831 831 834* 848* 900* 901* 901* 903* 903* 905 905 972 972 977 977 982* 983 983 1107* 1122* 1132* 1372* 1372 1374* 1374* 1375 1375 1378* 1379 1379 1452* 1454* 1472* 1472* 1473 1473 1671* 1686* 1700* 1708* 1722* 1728* 1738* 1744* 1756* 1762* 1774* 1780* 1809* 1821* 1824* 1841* 1841* 1843 1843 1865* 1870* 1871* 1871* 1875* 1875 1876* 1876* 1876 1876 1880* 1880 1881* 1881* 1881 1881 1883* 1883* 1885 1885 2320* 2322* 2322* 2323 2323 buff_lth 001356 automatic fixed bin(17,0) dcl 2301 set ref 2320* 2322* 2322* 2323* build_string 000762 automatic varying char(300) dcl 2017 set ref 2021* 2025* 2025 2027 2036* 2037* 2037 2038* 2038 2043 2045* 2045 2046* 2046 2049* 2049 2050 2052 cda 17(05) based bit(1) level 3 packed packed unaligned dcl 20-78 set ref 877* cdp 17(04) based bit(1) level 3 packed packed unaligned dcl 20-78 set ref 877* cdt based structure level 1 dcl 7-44 cdte based structure level 1 dcl 7-72 cdtep 000554 automatic pointer dcl 7-41 set ref 382* 384 385 387* 387 387 387 391 397* 398 398 400* 400 402* 410 411* 411 421 454 455 456* 459 523* 531 538 538* 546* 551 551 552 554* 557 559 563 563 566 566 574 582 582 585* 589 592* 597 597 602 605 605 607 614* 614 614 620* 622* 632 634 635 635 639 639 639 639 643* 658 660 662 663 667 670* 688* 690 698* 702 707 712* 716 717 736* 743* 792* 796* 798 798 799 810* 824* 827 831* 858 859* 861 862 863* 864 867 883* 905* 914 920 920 924 924 924 941 948 955* 959 979* 983* 984 987 988 1010 1012 1013 1014 1069* 1072 1100 1109 1277 1287 1296 1347 1375* 1379* 1383 1383 1383 1389 1390 1391 1426 1435 1436 1437 1438 1442 1443 1466* 1468 1473* 1479 1480 1484* 1487 1490 1492 1507* 1511 1512 1514 1515* 1516 1519 1520* 1520 1520 1520 1522 1525 1525 1525 1528 1528* 1535 1541* 1542 1553 1593* 1595 1596* 1601* 1603 1605* 1611* 1613 1615 1615 1615 1615 1615* 1843* 1855* 1856* 1865 1885* 1898* 1900 1911* 1914 1915 1916 1917 2108* 2120* 2133 2134 2138 2138 2142* 2144 2145* 2152 2195 2198 2199 2200 2201 2207 2208 channel 341 based pointer level 2 packed packed unaligned dcl 20-78 ref 397 2323 channel_threads based structure level 1 dcl 7-249 char8 000102 automatic char(8) packed unaligned dcl 2176 set ref 2181* 2187* 2189 2189* charge_type 32 based fixed bin(17,0) level 2 packed packed unaligned dcl 7-72 ref 924 924 1383 1383 ck_answerback 50 based bit(1) level 4 packed packed unaligned dcl 7-72 ref 634 clock builtin function dcl 158 ref 376 963 cmd 000573 automatic char(4) packed unaligned dcl 1646 set ref 1658* 1665* 1665 1667 1694* 1719* 1720 1734* 1736 1736 1752* 1754 1754 1770* 1772 1772 cmdno 000577 automatic fixed bin(17,0) dcl 1649 set ref 1667* 1667* 1668 1669 code 000114 automatic fixed bin(35,0) dcl 288 in procedure "ftp_dialup_" set ref 456* 457 554* 555 555* 569* 570 570* 585* 587 587* 592* 595 595* 597* 600 611 611* 620* 622* 623 623* 635* 636 636 643* 644 644* 670* 671 671* 676* 678 679 679 680 680 685 688* 689 690* 691 694* 697* 698* 699 699* 704* 705 706* 707* 712* 713 713* 719* 720 725 731 731 733* 734* 736* 737 737* 741 742* 743* 744 744* 788* 792* 793 793* 796* 810* 811 811* 824* 825 825* 831* 832 832* 834* 836 836 838 838 859* 860 895* 905* 906 906* 930* 931 932* 955* 956 972* 975 977* 978 979* 980 982* 994* 996 996* 1069* 1070 1070* 1184* 1187* 1299* 1300* 1466* 1467 1473* 1474 1484* 1507* 1512* 1528* 1544 1545* 1593* 1601* 1611* 1615* 1885* 1886 1886* 1898* 1899 1899* 1911* 1912 1912* 1940* 1941 1942* 1943 1949* 2108* 2109 2109* 2142* 2255* code 001357 automatic fixed bin(35,0) dcl 2302 in procedure "DISPLAY_PROCESS_AUTHORIZATION" set ref 2310* 2312 2312 code 000600 automatic fixed bin(17,0) dcl 1650 in procedure "interpret_ftp_cmd" set ref 1674* 1689* 1691* 1702* 1704* 1710* 1712* 1724* 1730* 1740* 1746* 1748* 1758* 1764* 1766* 1776* 1782* 1784* 1811* 1830* 1841* 1841* code 1 based fixed bin(17,0) level 2 in structure "bc" dcl 343 in procedure "ftp_dialup_" ref 1047 comment 16 based char(48) level 2 dcl 7-72 set ref 639* 2138* condition_ 000412 constant entry external dcl 187 ref 374 condname parameter char packed unaligned dcl 2272 set ref 2269 2282* 2287* continue parameter bit(1) packed unaligned dcl 2275 set ref 2269 2282* 2283 convert_access_class_$to_string 000664 constant entry external dcl 2305 ref 2310 convert_ipc_code_ 000414 constant entry external dcl 188 ref 706 convert_status_code_ 000416 constant entry external dcl 189 ref 1099 1974 2003 2317 coptr parameter pointer dcl 2273 ref 2269 count 75 based fixed bin(17,0) level 2 packed packed unaligned dcl 7-72 set ref 632* 798* 798 799 cpg_ 000420 constant entry external dcl 190 ref 930 cpu_in_dialup 46 based fixed bin(71,0) level 2 dcl 7-44 set ref 966* 966 cpu_time_and_paging_ 000422 constant entry external dcl 191 ref 377 964 cpu_usage 360 based fixed bin(71,0) level 2 dcl 20-78 ref 1447 cpw 17 based bit(1) level 3 packed packed unaligned dcl 20-78 set ref 877* cu_$arg_count 000632 constant entry external dcl 2243 ref 2251 cu_$arg_ptr 000634 constant entry external dcl 2244 ref 2255 cur_line_type 113(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 7-72 set ref 597 1916* current_service_type 74 based fixed bin(17,0) level 2 packed packed unaligned dcl 7-72 set ref 1010* 1438* 1615 1615 current_terminal_type 101 based char(32) level 2 packed packed unaligned dcl 7-72 set ref 607 1900* 1914* current_time 126 based fixed bin(71,0) level 2 dcl 1-55 set ref 376* 552 963 1116 1118 1451* 1525 1864* cursor 000572 automatic fixed bin(17,0) dcl 1645 set ref 1658* 1694 1694 1694 1694* 1719 1719 1719 1719* 1734 1734 1734 1734* 1752 1752 1752 1752* 1770 1770 1770 1770* 1788 1793 1799 1815 1815 1815 1815* data_ptr 6 based pointer level 2 dcl 332 set ref 381 382 394 395 1569* 2159* date_time 000227 automatic char(24) dcl 304 set ref 1451* 1452* 1454* 1864* 1865* date_time_ 000424 constant entry external dcl 192 ref 1451 1864 destroy_flag 421 based fixed bin(17,0) level 2 dcl 20-78 set ref 400* 416 960* 1106* 1120* 1131* 1143* 1148* 1152* 1159* 1162* 1167* 1172* 1177* 1228* 1234* 1241* 1270* 1285* 1305* 1315* 1332 1332* 1337* 1347 1429 1552* 2212 device_acct_$off 000426 constant entry external dcl 193 ref 1383 device_acct_$on 000430 constant entry external dcl 194 ref 924 dial_arg1 000155 automatic char(32) packed unaligned dcl 298 set ref 977* 979* dial_ctl_ 000432 constant entry external dcl 195 ref 859 979 dial_ctl_$dial_broom 000434 constant entry external dcl 196 ref 1341 dial_ctl_$dial_term 000436 constant entry external dcl 197 ref 1605 dial_ctl_$finish_priv_attach 000440 constant entry external dcl 198 ref 1596 dial_qual 000145 automatic char(32) packed unaligned dcl 298 set ref 972* 979* dialed_up_time 123 based fixed bin(35,0) level 2 dcl 7-72 set ref 1525* 1525 dialup_time 124 based fixed bin(71,0) level 2 dcl 7-72 set ref 552* 1525 disconnected 431(13) based bit(1) level 3 packed packed unaligned dcl 20-78 set ref 403 406* 410 413* divide builtin function dcl 158 ref 1448 dont_read_answerback 50(04) based bit(1) level 4 packed packed unaligned dcl 7-72 ref 582 dpg_ 000442 constant entry external dcl 199 ref 1345 dpg_$finish 000444 constant entry external dcl 200 ref 1422 dum_msg 000016 internal static fixed bin(71,0) initial dcl 268 set ref 1949* entries_to_dialup 52 based fixed bin(17,0) level 2 dcl 7-44 set ref 968* 968 erri 000136 automatic fixed bin(17,0) dcl 2278 set ref 2287* errm 000100 automatic char(120) packed unaligned dcl 2277 set ref 2287* 2289* error_mess 000176 automatic char(100) dcl 303 set ref 719* 734* 1041* 1051* 1099* 1107* 1122* 1132* error_table_$bad_arg 000530 external static fixed bin(35,0) dcl 226 ref 725 error_table_$badstar 000532 external static fixed bin(35,0) dcl 227 ref 636 error_table_$noarg 000534 external static fixed bin(35,0) dcl 228 ref 720 1659 1660 1696 error_table_$out_of_sequence 000536 external static fixed bin(35,0) dcl 229 set ref 2227* error_table_$smallarg 000670 external static fixed bin(35,0) dcl 2308 ref 2312 ev_message 2 based fixed bin(71,0) level 2 dcl 332 set ref 370 ev_msg based structure level 1 dcl 332 event 376 based fixed bin(71,0) level 2 in structure "ute" dcl 20-78 in procedure "ftp_dialup_" set ref 704* 707* 1194* 1299* 1300* 1311* event 72 based fixed bin(71,0) level 2 in structure "cdte" dcl 7-72 in procedure "ftp_dialup_" set ref 658* 914* 987* 1014* 1480* 1511* 1512* 2144* execute_initial_command 50(17) based bit(1) level 4 packed packed unaligned dcl 7-72 ref 660 failure_reason 411 based fixed bin(17,0) level 2 dcl 20-78 ref 901 903 903 fatal_error_loop_count 537 based fixed bin(17,0) level 3 packed packed unaligned dcl 10-33 ref 1129 fatal_error_loop_seconds 537(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 10-33 ref 1116 flags 11 000531 automatic structure level 2 in structure "set_type_info" packed packed unaligned dcl 326 in procedure "ftp_dialup_" set ref 1896* flags 50 based structure level 2 in structure "cdte" dcl 7-72 in procedure "ftp_dialup_" float builtin function dcl 158 ref 1447 1450 1525 fnpe based structure level 1 dcl 7-200 format 001360 automatic char(100) dcl 2303 set ref 2317* 2319 2320* fromproc 4 based bit(36) level 2 dcl 332 set ref 431 436 1569* 1573* 2159* ftp_765 000102 automatic bit(1) packed unaligned dcl 284 set ref 531* 534* 748 1357 1677 1682 1689 1702 1710 1716 1746 1764 1782 1805 2070 2090 ftp_cmd 000143 constant char(4) initial array dcl 1654 ref 1667 ftp_code 000103 automatic fixed bin(17,0) dcl 285 set ref 1357* 1360* 1362* 1364* 1366* 1374* 1374* 1378* 1378* ftp_misc_$ftp_login_responder 000630 external static structure level 1 dcl 258 funct 000166 automatic char(8) dcl 299 set ref 1038* 1043 1046 1046 1047 1060* 1065 1080 1105 1245 1341* 1345 1551* generate_pw 17(01) based bit(1) level 3 packed packed unaligned dcl 20-78 set ref 877* greeting_fmt 000024 internal static varying char(100) dcl 273 set ref 1865* 2229* have_ate 000441 automatic bit(1) initial dcl 318 set ref 318* 422* 436 495 703* 1285 1326 1383 1486* 1509* 2196 have_cdte 000442 automatic bit(1) initial dcl 318 set ref 318* 421* 506 531 1068 1095 1179 1347 1351 1426 1433 1458 1553 2206 hbound builtin function dcl 158 ref 461 521 754 764 769 hcs_$wakeup 000446 constant entry external dcl 201 ref 1299 1300 1949 header based structure level 2 dcl 1-55 i 000100 automatic fixed bin(17,0) dcl 2174 in procedure "get_trace_info" set ref 2183* 2184 2184 2187 2187* i 000104 automatic fixed bin(17,0) dcl 286 in procedure "ftp_dialup_" set ref 642* 643* 697* 698* 711* 712* 735* 736* 742* 743* 785* 790* 792* 809* 810* 901* 903* 905* 940* 982* 983* 1051* 1085* 1107* 1122* 1132* 1369 1373* 1373 1374* 1378* 1379* 1388* 1428* 1447* 1448 1449* 1449 1452* 1452* 1454* 1454* 1470 1472* 1558* 1573* 1580* 1582* 1585* 1673* 1688* 1701* 1709* 1723* 1729* 1739* 1745* 1757* 1763* 1775* 1781* 1810* 1821* 1827* 1841* 1841* 1843* 1871* 1876* 1881* 1883* 1885* 2237* i 001076 automatic fixed bin(17,0) dcl 2017 in procedure "format_ftp_output" set ref 2030* 2032 2032 2034 2038 2039* 2039 2040 2040 2046 2046 2049 2049 id 1 000511 automatic char(4) level 2 packed packed unaligned dcl 324 set ref 1915 ignore_code 000115 automatic fixed bin(35,0) dcl 288 set ref 614* 983* 1342* 1375* 1379* 1515* 1541* 1855* 1856* in_use based fixed bin(17,0) level 2 dcl 7-72 set ref 385 387* 454 455 559* 948* 1277 1389 1390 1391 1426* 1436* 1443* 1487* 1492* 1516* 1519 1520* 1522* 1542* 1615 2134* 2201 index builtin function dcl 158 ref 2032 2040 infoptr parameter pointer dcl 2274 ref 2269 init_proc 56 based char(64) level 2 packed packed unaligned dcl 20-78 set ref 749* 749 init_term_fmt 000142 internal static varying char(100) dcl 275 set ref 1107* 2232* initial_command 51 based char(64) level 2 dcl 7-72 ref 662 663 initial_terminal_type 37 based char(32) level 2 packed packed unaligned dcl 7-72 ref 566 566 installation_id based char(32) level 3 dcl 10-33 set ref 1865* installation_parms based structure level 1 dcl 10-33 installation_parms_part_1 based structure level 1 dcl 10-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 10-144 ioa_ 000450 constant entry external dcl 202 ref 1943 ioa_$rs 000452 constant entry external dcl 202 ref 734 777 1107 1122 1132 1452 1454 1865 2237 2320 ioa_$rsnnl 000454 constant entry external dcl 202 ref 1051 2189 2287 ip defined pointer dcl 3-21 ref 657 799 1116 1129 1865 ip_len 76 based fixed bin(17,0) level 2 packed packed unaligned dcl 20-78 set ref 750* ipc_$decl_ev_call_chn 000456 constant entry external dcl 203 ref 704 ipc_$drain_chn 000460 constant entry external dcl 204 ref 1512 ipc_$unmask_ev_calls 000462 constant entry external dcl 205 ref 1942 j 000105 automatic fixed bin(17,0) dcl 286 set ref 459* 460 461 462 734* 735* 777* 785* 788* 790* 823* 824* 972* 976 977* 1043* 1043* 1045 1054* 1056* 1059* 1065* 1065* 1066 1066* 1066 1075* 1087 1089* 1225* 1231* 1238* 1257* 1281* 1374* 1375* 1448* 1449 1452 1452* 1472* 1473* 1865* 1875 1880 1883* jj 000144 automatic fixed bin(17,0) dcl 297 set ref 676* 719 719 719 834* 972 972 972 976* 976 977 977 977 just_dialed_up 000141 automatic bit(1) packed unaligned dcl 295 set ref 373* 628* 660 1483* k 000106 automatic fixed bin(17,0) dcl 286 set ref 972* 977* lbound builtin function dcl 158 ref 460 521 754 len 001106 automatic fixed bin(17,0) dcl 2066 set ref 2069* 2073* length builtin function dcl 158 ref 663 749 822 823 823 900 901 901 903 903 1373 1876 1876 1881 1881 1975 1977 2050 2107 2107 2152 2183 lg_ctl_$login 000464 constant entry external dcl 206 ref 895 lg_ctl_$logout 000466 constant entry external dcl 207 ref 938 1431 1538 lg_err 000350 automatic varying char(168) dcl 306 set ref 733* 895* 900 900 901 901 903 903 1371* 1372 1373 lgwd 000107 automatic fixed bin(17,0) dcl 286 set ref 754* 754* 761 764 765* 769 774 line_type 336 based fixed bin(17,0) level 2 in structure "ute" dcl 20-78 in procedure "ftp_dialup_" set ref 717* line_type 33 based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 7-72 in procedure "ftp_dialup_" ref 531 563 582 717 line_type 12 000511 automatic fixed bin(17,0) level 2 in structure "term_info" dcl 324 in procedure "ftp_dialup_" set ref 569* 1916 lock_count 114 based fixed bin(17,0) level 2 dcl 1-55 set ref 1928* 1928 1936* 1936 1938 1938* 1939 1947 lock_value 414 based fixed bin(17,0) level 2 dcl 20-78 set ref 1927* 1927 1936 1946* login_code 416 based char(8) level 2 packed packed unaligned dcl 20-78 ref 753 login_flags 17 based structure level 2 dcl 20-78 login_parse_ 000470 constant entry external dcl 208 ref 972 977 1658 1694 1719 1734 1752 1770 login_parse_$password 000472 constant entry external dcl 209 ref 1815 login_result 415 based fixed bin(17,0) level 2 dcl 20-78 ref 897 907 login_time 503 based fixed bin(17,0) level 3 dcl 10-33 ref 657 login_tries 505 based fixed bin(17,0) level 3 dcl 10-33 ref 799 login_word 44 based char(8) level 2 packed packed unaligned dcl 1-55 ref 765 logout_fmt 000226 internal static varying char(100) dcl 276 set ref 1452* 2234* logout_fmt1 000260 internal static varying char(100) dcl 276 set ref 1454* 2235* logout_index 423 based fixed bin(17,0) level 2 dcl 20-78 ref 1213 1264 1266 1332 1332 logout_type 422 based char(4) level 2 packed packed unaligned dcl 20-78 set ref 936* 1080* 1555* long 000722 automatic char(100) dcl 1998 in procedure "convert_message_nnl" set ref 2003* 2005 long 000660 automatic char(100) dcl 1969 in procedure "convert_message" set ref 1974* 1975 1975 1977 1984 loud_select_channel 000320 internal static varying char(32) initial dcl 2247 set ref 2152 2152 2256* loud_select_sw 000317 internal static bit(1) initial dcl 2246 set ref 2152 2251* 2254* loudsw 000014 internal static bit(1) initial dcl 265 set ref 424 2249* 2263* lpcode 000601 automatic fixed bin(35,0) dcl 1651 set ref 1658* 1659 1659 1660 1694* 1696 1696 1719* 1734* 1752* 1770* 1815* 1821* lv_request_$cleanup_process 000474 constant entry external dcl 210 ref 1343 lvs_attached 431(03) based bit(1) level 3 packed packed unaligned dcl 20-78 ref 1343 match_star_name_ 000476 constant entry external dcl 211 ref 635 max_size 4 based fixed bin(17,0) level 3 dcl 1-55 set ref 692* max_units 17 based fixed bin(17,0) level 2 dcl 1-55 ref 1863 mcptr parameter pointer dcl 2271 ref 2269 mem_usage 362 based fixed bin(71,0) level 2 dcl 20-78 ref 1450 message_lng 112 based fixed bin(17,0) level 2 dcl 1-55 set ref 1868 1871* 1873 1875 1878 1880 min builtin function dcl 158 ref 2070 2072 2090 2092 mpxe based structure level 1 dcl 7-221 msg_ptr parameter pointer dcl 154 ref 14 364 370 381 382 394 395 428 431 436 1569 1569 1573 2159 2159 n_dialups 121 based fixed bin(17,0) level 2 dcl 7-72 set ref 551* 551 n_ftp_cmds constant fixed bin(17,0) initial dcl 1653 ref 1667 1668 n_logins 122 based fixed bin(17,0) level 2 dcl 7-72 set ref 920* 920 n_processes 413 based fixed bin(17,0) level 2 dcl 20-78 set ref 917* 927* 927 n_signals 000650 external static fixed bin(17,0) level 2 dcl 2-67 ref 1043 1045 n_system_signals 000652 external static fixed bin(17,0) level 2 dcl 2-72 ref 1065 1066 n_units 16 based fixed bin(17,0) level 2 dcl 1-55 ref 1862 n_users 14 based fixed bin(17,0) level 2 dcl 1-55 set ref 1865* n_words based fixed bin(17,0) level 2 dcl 2-77 ref 754 764 769 name 1 000531 automatic char(32) level 2 in structure "set_type_info" packed packed unaligned dcl 326 in procedure "ftp_dialup_" set ref 1895* name 2 based char(32) level 2 in structure "cdte" dcl 7-72 in procedure "ftp_dialup_" set ref 387* 400* 411* 574* 639* 690* 707* 924* 1100* 1109* 1296* 1383* 1520* 1865* 2138* 2152 2195 2207 nc 000170 automatic fixed bin(17,0) dcl 300 set ref 456* 457 592* 596 597 597 663* 670* 672 676* 719 831* 833 834* 972 977 new_cpu 000124 automatic fixed bin(71,0) dcl 291 set ref 964* 966 new_pf 000120 automatic fixed bin(17,0) dcl 290 set ref 964* 965 new_pp 000127 automatic fixed bin(17,0) dcl 292 set ref 964* 967 new_proc_auth based structure level 1 dcl 347 new_type parameter char packed unaligned dcl 1892 ref 1890 1895 1900 non_local_exit 000137 automatic bit(1) packed unaligned dcl 2279 set ref 2282* 2283 noprint 17(07) based bit(1) level 3 packed packed unaligned dcl 20-78 set ref 1082* 1145* 1154* 1157* 1446 1470 1481 1556* np_signal based char(2) level 2 packed packed unaligned dcl 347 ref 1056 null builtin function dcl 158 ref 364 365 385 389 398 402 410 421 422 585 585 620 620 1013 1048 1079 1383 1485 1508 1515 1515 1541 1541 1550 1574 1-53 20-76 1855 1855 1936 1946 2143 o_sw 000101 automatic bit(1) packed unaligned dcl 2175 set ref 2182* 2184* 2189* old_cpu 000122 automatic fixed bin(71,0) dcl 291 set ref 377* 966 old_pf 000117 automatic fixed bin(17,0) dcl 290 set ref 377* 965 old_pp 000126 automatic fixed bin(17,0) dcl 292 set ref 377* 967 options 50(17) based structure level 3 packed packed unaligned dcl 7-72 origin 5 based structure level 2 dcl 332 overseer 1 000630 external static char(168) level 2 dcl 258 ref 749 p1 000136 automatic pointer dcl 293 set ref 370* 452 453 468 1038 1056 1185 1412 1412 1415 2183 2184 2184 2187 2189 2189 2189 2189 p_code parameter fixed bin(35,0) dcl 2131 set ref 2128 2133 2138* p_status_code parameter fixed bin(35,0) dcl 1994 set ref 1989 2003* parse_ftp_login_line_ 000500 constant entry external dcl 212 ref 719 part_1 based structure level 2 dcl 10-33 password 000574 automatic char(8) packed unaligned dcl 1647 set ref 1815* 1817 pathlen 000630 external static fixed bin(35,0) level 2 dcl 258 ref 750 person 4 based char(24) level 2 packed packed unaligned dcl 20-78 set ref 856 932* 1100* 1109* 1136* 1187* 1216* 1261* 1296* 1330* 1452* 1454* 1576* 2196 2205 pf_in_dialup 50 based fixed bin(17,0) level 2 dcl 7-44 set ref 965* 965 pp_in_dialup 51 based fixed bin(17,0) level 2 dcl 7-44 set ref 967* 967 preempted 420 based fixed bin(17,0) level 2 dcl 20-78 set ref 928* 1080 1207 1211 1212* 1254 1259 1290 1290* 1293* 1308 1329 proc_id 276 based bit(36) level 2 dcl 20-78 set ref 436 955* 1342* 1343* proc_term_fmt 000110 internal static varying char(100) dcl 275 set ref 1122* 2231* proc_term_loop_fmt 000174 internal static varying char(100) dcl 275 set ref 1132* 2233* process 111 based pointer level 2 packed packed unaligned dcl 7-72 set ref 384 398 702 858 861 862* 864* 867* 1013* process_authorization 24 based bit(72) level 2 dcl 20-78 set ref 887* 1185* 2310* project 12 based char(12) level 2 packed packed unaligned dcl 20-78 set ref 932* 1100* 1109* 1136* 1187* 1216* 1261* 1296* 1330* 1452* 1454* 1576* 2196 2205 pw_msg 000312 internal static varying char(16) dcl 277 set ref 822 822 823 823 2236* 2237 2237* q 000134 automatic pointer dcl 293 set ref 1573* 1574 1576 1576 rcp_init_flags based structure level 1 packed packed unaligned dcl 11-8 rcp_sys_$unassign_process 000502 constant entry external dcl 213 ref 1342 realtime_in_dialup 44 based fixed bin(71,0) level 2 dcl 7-44 set ref 963* 963 recent_fatal_error_count 410 based fixed bin(17,0) level 2 dcl 20-78 set ref 1119* 1128* 1128 1129 recent_fatal_error_time 406 based fixed bin(71,0) level 2 dcl 20-78 set ref 1116 1118* result 001116 automatic picture(4) packed unaligned dcl 2088 in procedure "format_msg" set ref 2090* 2092* 2093 result 001107 automatic picture(4) packed unaligned dcl 2066 in procedure "format_ecode" set ref 2070* 2072* 2073 reverse builtin function dcl 158 ref 1975 rtrim builtin function dcl 158 ref 1876 1876 1881 1881 2005 2195 2196 2196 2205 2205 2207 saved_atep1 000130 automatic pointer dcl 293 set ref 858* 862 867 saved_atep2 000132 automatic pointer dcl 293 set ref 861* 864 say_hello 000140 automatic bit(1) packed unaligned dcl 294 set ref 627* 654 1481* 1482* sc_stat_$Multics_typed 000656 external static bit(1) dcl 13-62 ref 2227 sc_stat_$shutdown_typed 000660 external static bit(1) dcl 13-62 ref 1615 scdtp defined pointer dcl 3-27 ref 381 963 963 965 965 966 966 967 967 968 968 scramble_ 000504 constant entry external dcl 214 ref 847 sender_ring 5(18) based bit(18) level 3 packed packed unaligned dcl 332 ref 428 session 46 based char(8) level 2 packed packed unaligned dcl 1-55 ref 649 761 765 803 806 1273 1868 1873 session_cost 370 based float bin(27) level 2 dcl 20-78 set ref 1452* 1454* set_term_type_info based structure level 1 dcl 14-8 set_type_info 000531 automatic structure level 1 unaligned dcl 326 set ref 1898 1898 short 000656 automatic char(8) dcl 1969 in procedure "convert_message" set ref 1974* short 000720 automatic char(8) dcl 1998 in procedure "convert_message_nnl" set ref 2003* shxx 000174 automatic char(8) dcl 302 set ref 1099* 1100* signal_type based char(8) dcl 341 ref 452 453 468 1038 1412 1412 1415 2183 2184 2184 2187 2189 2189 2189 2189 signal_type1 based char(4) level 2 dcl 343 ref 1046 1046 1080 1105 signals 2 000650 external static char(8) array level 2 packed packed unaligned dcl 2-67 ref 1043 size 000576 automatic fixed bin(17,0) dcl 1648 set ref 1658* 1664 1664 1694* 1698 1719* 1734* 1752* 1770* 1815* special_message 50 based char(128) level 2 packed packed unaligned dcl 1-55 ref 1870 1875 1880 state 77 based fixed bin(17,0) level 2 dcl 7-72 set ref 557 984 1072 1468 1514 1520* 1595 1603 1613 1615 2133 2199 2208 static_label 000010 internal static label variable dcl 264 set ref 371* 880* 961* 1039* 1549* 2290 string builtin function dcl 158 set ref 1896* stti_version_1 constant fixed bin(17,0) initial dcl 14-5 ref 1894 sub_err_ 000506 constant entry external dcl 215 ref 2227 substr builtin function dcl 158 set ref 597 597 719 719 749 822* 900* 972 972 977 977 1694 1694 1719 1719 1734 1734 1752 1752 1770 1770 1815 1815 1875 1875 1880 1880 1984 2032 2036* 2038 2040 2043 2046 2049 2152 2184 2184 2187* 2187 2189 2189 2189 2189 sys_log_ 000510 constant entry external dcl 216 ref 387 400 404 411 496 507 512 523 538 574 639 692 1100 1109 1136 1216 1261 1296 1330 1402 1520 1563 1566 1569 1576 1582 2159 sys_log_$error_log 000512 constant entry external dcl 216 ref 690 707 932 1187 2138 sysid 121 based char(32) level 2 dcl 22-10 set ref 1865* system_signals 2 000652 external static char(8) array level 2 packed packed unaligned dcl 2-72 ref 1065 t1 000171 automatic float bin(27) dcl 301 set ref 1450* 1452* 1454* 1862* 1865* t2 000172 automatic float bin(27) dcl 301 set ref 1863* 1865* tag 15 based char(1) level 2 packed packed unaligned dcl 20-78 set ref 893* tanswb 000505 automatic char(4) packed unaligned dcl 321 set ref 2198* 2211* 2218* 2287* tb_len 001241 automatic fixed bin(17,0) dcl 2104 set ref 2107* 2108* tcode 000116 automatic fixed bin(35,0) dcl 289 set ref 372* 803* 806* 808* 809* 883* 884 939* 1040* 1047* 1048 1048 1051* 1052* 1061* 1092* 1098 1099* 1102* 1164* 1169* 1174* 1180* 1186* 1189* 1208* 1218* 1235* 1242* 1273* 1274* 1277* 1283* 1303* 1355 1360 1362 1364 1371* 1378* 1557* 1843* 1844 1844* tcode_left_half based bit(18) level 2 packed packed unaligned dcl 351 ref 1048 temp 001077 automatic fixed bin(17,0) dcl 2017 set ref 2032* 2034 2034 2038 2039 2040* temp_buff 001126 automatic char(300) dcl 2104 set ref 2107* 2108 2108 temp_code 001250 automatic fixed bin(35,0) dcl 2118 set ref 2120* 2121 2121* term_info 000511 automatic structure level 1 unaligned dcl 324 set ref 1911 1911 term_type 2 000511 automatic char(32) level 2 packed packed unaligned dcl 324 set ref 1914 terminal_info based structure level 1 dcl 16-6 terminal_info_version constant fixed bin(17,0) initial dcl 16-16 ref 1910 termstop 000022 internal static char(8) initial dcl 271 set ref 1299 termstop_msg based fixed bin(71,0) dcl 272 set ref 1299* time 000100 automatic fixed bin(71,0) dcl 283 set ref 657* 658* timer_manager_$alarm_wakeup 000514 constant entry external dcl 217 ref 658 timer_manager_$reset_alarm_wakeup 000516 constant entry external dcl 218 ref 914 987 1014 1194 1311 1480 1511 2144 tinuse 000510 automatic fixed bin(17,0) dcl 322 set ref 1576* 1582* 2159* 2201* 2213* 2219* 2287* tname 000443 automatic varying char(64) dcl 320 set ref 1576* 1582* 2159* 2195* 2196* 2196 2205* 2207* 2207 2217* 2287* tra_vec 74(18) based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 7-72 in procedure "ftp_dialup_" set ref 387* 391 459 538* 589* 667* 827* 941* 959* 988* 1012* 1287* 1347* 1435 1437* 1442 1479 1490 1528 1535 1553* 2200 tra_vec 000440 automatic fixed bin(17,0) dcl 316 in procedure "ftp_dialup_" set ref 391* 416* 468 470* 487 487 487 487 503 503 503 521 521 523* 537 translate builtin function dcl 158 ref 1665 tsignal_type 000464 automatic varying char(64) dcl 320 set ref 1576* 1582* 2159* 2189* tstate 000506 automatic fixed bin(17,0) dcl 322 set ref 1576* 1582* 2159* 2199* 2208* 2210* 2219* 2287* ttt_info_$decode_answerback 000520 constant entry external dcl 219 ref 597 ttt_info_$default_term_type 000522 constant entry external dcl 220 ref 569 ttt_info_$preaccess_type 000524 constant entry external dcl 221 ref 994 ttv 000507 automatic fixed bin(17,0) dcl 322 set ref 1576* 1582* 2159* 2200* 2212* 2219* 2287* tty_access_class based structure level 1 dcl 17-21 tty_id_code 337 based char(4) level 2 in structure "ute" packed packed unaligned dcl 20-78 in procedure "ftp_dialup_" set ref 716* 2211 tty_id_code 100 based char(4) level 2 in structure "cdte" dcl 7-72 in procedure "ftp_dialup_" set ref 563* 597* 602* 605 605* 614 614 635* 639* 716 1915* 2198 tty_name 316 based char(32) level 2 packed packed unaligned dcl 20-78 set ref 1136* 1216* 1261* 1330* type_to_set 000423 automatic char(32) packed unaligned dcl 307 set ref 566* 569* 572 579* 597* 601* 607 607 610* 994* 998 998* uflags 431 based structure level 2 dcl 20-78 unspec builtin function dcl 158 set ref 882* 2184 2184 2189 2189 2189 2189 update_channel 116 based fixed bin(71,0) level 2 dcl 1-55 set ref 1949* update_pending 115 based bit(1) level 2 dcl 1-55 set ref 1947 1948* user_abs_attributes based structure level 1 dcl 19-25 user_attributes based structure level 1 dcl 18-21 user_login_word 000110 automatic char(16) packed unaligned dcl 287 set ref 676* 753* 754 765 777* user_password 000142 automatic char(8) packed unaligned dcl 296 set ref 819* 834* 847* 847* 895* user_table_mgr_$free 000526 constant entry external dcl 222 ref 1461 ut_header based structure level 1 dcl 21-16 ute based structure level 1 dcl 20-78 utep 000556 automatic pointer initial dcl 20-76 set ref 384* 385 387* 389* 395* 397 398 400* 400 403 404* 406 410 411* 413 416 422 436 436 517 523* 702* 704 704* 707 707* 716 717 719* 749 749 750 753 815 856 873 877 877 877 877 887 888 893 895* 897 901 903 903 907 917 919* 924* 927 927 928 930* 932 932 936 937* 938* 946* 947 955 957* 960 1079 1080 1080 1082 1089* 1100 1100 1106 1109 1109 1116 1118 1119 1120 1128 1128 1129 1131 1136 1136 1136 1143 1145 1148 1152 1154 1157 1159 1162 1167 1172 1177 1185 1187 1187 1194 1207 1211 1212 1213 1216 1216 1216 1225* 1228 1231* 1234 1238* 1241 1254 1257* 1259 1261 1261 1261 1264 1266 1270 1281* 1285 1290 1290 1293 1296 1296 1299 1300 1305 1308 1311 1315 1329 1330 1330 1330 1332 1332 1332 1332 1337 1340 1341* 1342 1343 1343 1345* 1347 1383 1383* 1397 1398 1402 1402* 1417* 1422* 1424* 1425 1429 1430* 1431* 1446 1447 1450 1452 1452 1452 1454 1454 1454 1461* 1470 1481 1485* 1508* 1537* 1538* 1550 1552 1555 1556 20-76* 1927 1927 1936 1936 1946 1946 2143* 2196 2196 2205 2205 2211 2212 2213 2310 2323 verify builtin function dcl 158 ref 1975 version 000511 automatic fixed bin(17,0) level 2 in structure "term_info" dcl 324 in procedure "ftp_dialup_" set ref 1910* version 000531 automatic fixed bin(17,0) level 2 in structure "set_type_info" dcl 326 in procedure "ftp_dialup_" set ref 1894* wakeup_for_channel 000433 automatic bit(1) initial dcl 309 set ref 309* 383* 453 523* 523* 2194 wakeup_for_process 000434 automatic bit(1) initial dcl 309 set ref 309* 396* 501 517 2204 wakeup_from_as 000435 automatic bit(1) initial dcl 309 set ref 309* 431* 451 wakeup_from_ring_zero 000436 automatic bit(1) initial dcl 309 set ref 309* 428* 446 wakeup_from_user 000437 automatic bit(1) initial dcl 309 set ref 309* 436* 441 1042 1410 whoptr defined pointer dcl 3-29 ref 1865 whotab based structure level 1 dcl 22-10 words 2 based char(16) array level 2 packed packed unaligned dcl 2-77 ref 754 754 754 764 769 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 19-38 ABS_DEFER_PRIO internal static fixed bin(17,0) initial dcl 4-35 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 20-326 ABS_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 4-36 ACCT_UPDATE_PRIO internal static fixed bin(17,0) initial dcl 4-28 ACTIVE internal static fixed bin(17,0) initial dcl 7-272 ACTIVE_VALUES internal static char(18) initial array dcl 9-86 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 18-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 1-51 ANS_SERVICE internal static fixed bin(17,0) initial dcl 7-259 AS_REQUEST_PRIO internal static fixed bin(17,0) initial dcl 4-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 Automatic_authentication internal static fixed bin(17,0) initial dcl 11-16 CDT_version internal static fixed bin(17,0) initial dcl 7-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 7-38 CORE_FLUSH_PRIO internal static fixed bin(17,0) initial dcl 4-37 DAEMON_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 4-29 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 20-280 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 7-259 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 20-332 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 7-259 DN355 internal static fixed bin(17,0) initial dcl 8-19 DN6600 internal static fixed bin(17,0) initial dcl 8-19 DN6670 internal static fixed bin(17,0) initial dcl 8-19 DN7100 internal static fixed bin(17,0) initial dcl 8-19 DONT_MASK internal static bit(2) initial packed unaligned dcl 20-280 DO_MASK internal static bit(2) initial packed unaligned dcl 20-280 FNP_BOOT internal static fixed bin(17,0) initial dcl 7-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 7-298 FNP_FREE internal static fixed bin(17,0) initial dcl 7-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 7-298 FNP_UP internal static fixed bin(17,0) initial dcl 7-298 INSTALL_PRIO internal static fixed bin(17,0) initial dcl 4-31 LINE_1050 internal static fixed bin(17,0) initial dcl 12-22 LINE_2741 internal static fixed bin(17,0) initial dcl 12-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 12-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 12-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 12-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 12-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 12-22 LINE_BSC internal static fixed bin(17,0) initial dcl 12-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 12-22 LINE_DSA internal static fixed bin(17,0) initial dcl 12-22 LINE_ETX internal static fixed bin(17,0) initial dcl 12-22 LINE_G115 internal static fixed bin(17,0) initial dcl 12-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 12-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 12-22 LINE_MC internal static fixed bin(17,0) initial dcl 12-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 12-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 12-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 12-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 12-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 12-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 12-22 LINE_VIP internal static fixed bin(17,0) initial dcl 12-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 12-22 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 20-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 20-284 MC_PRIO internal static fixed bin(17,0) initial dcl 4-25 MC_SERVICE internal static fixed bin(17,0) initial dcl 7-259 MPX_BOOT internal static fixed bin(17,0) initial dcl 7-306 MPX_DOWN internal static fixed bin(17,0) initial dcl 7-306 MPX_FREE internal static fixed bin(17,0) initial dcl 7-306 MPX_LOAD_PRIO internal static fixed bin(17,0) initial dcl 4-33 MPX_SERVICE internal static fixed bin(17,0) initial dcl 7-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 7-306 MPX_UP internal static fixed bin(17,0) initial dcl 7-306 Manual_authentication internal static fixed bin(17,0) initial dcl 11-16 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 7-280 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 9-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 9-76 No_authentication internal static fixed bin(17,0) initial dcl 11-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 11-16 PREEMPT_BUMPED internal static fixed bin(17,0) initial dcl 9-132 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 9-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 9-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 9-142 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 20-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 20-261 PT_ALARM internal static fixed bin(17,0) initial dcl 9-106 PT_BUMP internal static fixed bin(17,0) initial dcl 9-106 PT_DAEMON internal static fixed bin(17,0) initial dcl 20-261 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 9-106 PT_DETACH internal static fixed bin(17,0) initial dcl 9-106 PT_FPE internal static fixed bin(17,0) initial dcl 9-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 9-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 20-261 PT_LOGOUT internal static fixed bin(17,0) initial dcl 9-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 9-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 9-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 9-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 9-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 9-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 20-290 SHUTDOWN_PRIO internal static fixed bin(17,0) initial dcl 4-27 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 15-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 15-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 15-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 15-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 15-62 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 15-14 SL_TYPE internal static fixed bin(17,0) initial dcl 15-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 15-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 15-14 STATE_VALUES internal static char(15) initial array dcl 9-70 SYSERR_COPY_PRIO internal static fixed bin(17,0) initial dcl 4-26 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 20-271 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 9-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 9-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 9-93 TAG_UFT internal static char(1) initial packed unaligned dcl 9-93 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 7-259 TRA_VEC_VALUES internal static char(32) initial array dcl 9-54 TTY_KNOWN internal static fixed bin(17,0) initial dcl 9-64 UFLAG_NAMES internal static varying char(24) initial array dcl 20-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 18-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 18-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 18-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 18-50 UTE_SIZE internal static fixed bin(17,0) initial dcl 1-120 UTE_version_4 internal static fixed bin(17,0) initial dcl 20-74 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 9-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 9-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 9-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 9-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 9-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 9-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 9-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 9-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 9-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 9-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 9-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 9-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 9-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 9-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 9-25 WHOTAB_VERSION_1 internal static fixed bin(17,0) initial dcl 22-96 as_data_$BS external static char(1) dcl 2-21 as_data_$CR external static char(1) dcl 2-22 as_data_$abs_dim external static char(32) packed unaligned dcl 2-23 as_data_$acct_update_priority external static fixed bin(17,0) dcl 2-24 as_data_$acsdir external static char(168) packed unaligned dcl 2-25 as_data_$as_ring external static fixed bin(3,0) dcl 2-28 as_data_$as_tty automatic char(6) packed unaligned dcl 2-29 as_data_$asmtp external static pointer dcl 2-30 as_data_$autp external static pointer dcl 2-31 as_data_$buzzardp external static pointer dcl 2-32 as_data_$debug_flag external static bit(1) dcl 2-84 as_data_$default_weight external static fixed bin(35,0) dcl 2-34 as_data_$devtabp external static pointer dcl 2-35 as_data_$dft_user_ring external static fixed bin(3,0) dcl 2-36 as_data_$dutp external static pointer dcl 2-37 as_data_$g115_dim external static char(32) packed unaligned dcl 2-38 as_data_$lct_initialized external static bit(1) dcl 2-39 as_data_$lct_size external static fixed bin(17,0) dcl 2-40 as_data_$login_args external static structure level 1 dcl 2-62 as_data_$ls_message_buffer_cur_lth external static fixed bin(18,0) dcl 2-86 as_data_$ls_message_buffer_max_lth external static fixed bin(18,0) dcl 2-87 as_data_$ls_message_buffer_ptr external static pointer dcl 2-88 as_data_$ls_request_server_info_ptr external static pointer dcl 2-85 as_data_$max_user_ring external static fixed bin(3,0) dcl 2-41 as_data_$mgtp external static pointer dcl 2-42 as_data_$mrd_dim external static char(32) packed unaligned dcl 2-43 as_data_$ntty_dim external static char(32) packed unaligned dcl 2-44 as_data_$pdtdir external static char(168) packed unaligned dcl 2-45 as_data_$pit_ptr external static pointer dcl 2-46 as_data_$rcpdir external static char(168) packed unaligned dcl 2-47 as_data_$request_priority external static fixed bin(17,0) dcl 2-48 as_data_$rtdtp external static pointer dcl 2-50 as_data_$sat_htp external static pointer dcl 2-51 as_data_$satp external static pointer dcl 2-52 as_data_$suffix external static char(2) array packed unaligned dcl 2-53 as_data_$sysdir external static char(168) packed unaligned dcl 2-54 as_data_$teens_suffix external static char(2) array packed unaligned dcl 2-55 as_data_$terminet_tabs_string external static varying char(144) dcl 2-56 as_data_$tty_dim external static char(32) packed unaligned dcl 2-57 as_data_$update_priority external static fixed bin(17,0) dcl 2-58 as_data_$version external static char(8) packed unaligned dcl 2-59 as_tty based char(6) packed unaligned dcl 3-18 asmtp defined pointer dcl 3-19 authentication_level_names internal static char(12) initial array packed unaligned dcl 11-21 cdtp automatic pointer dcl 7-41 devtabp defined pointer dcl 3-20 fnp_models internal static fixed bin(17,0) initial array dcl 8-28 fnp_types internal static char(8) initial array packed unaligned dcl 8-25 fnpep automatic pointer dcl 7-41 generic_destination based char(32) packed unaligned dcl 7-195 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 10-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 10-38 line_types internal static char(16) initial array packed unaligned dcl 12-54 max_line_type internal static fixed bin(17,0) initial dcl 12-48 mgtp defined pointer dcl 3-22 mpxep automatic pointer dcl 7-41 n_sync_line_types internal static fixed bin(17,0) initial dcl 12-50 pdtdir based char(168) packed unaligned dcl 3-23 rifp automatic pointer dcl 11-6 rs_ptrs based pointer array dcl 3-24 sat_htp defined pointer dcl 3-25 satp defined pointer dcl 3-26 sc_stat_$Go external static bit(1) dcl 13-62 sc_stat_$Go_typed external static bit(1) dcl 13-62 sc_stat_$Multics external static bit(1) dcl 13-62 sc_stat_$Star_typed external static bit(1) dcl 13-62 sc_stat_$admin_listener_exit_label external static label variable dcl 13-34 sc_stat_$admin_listener_switch external static bit(1) dcl 13-62 sc_stat_$admin_log_iocb external static pointer dcl 13-45 sc_stat_$admin_log_write_ptr external static pointer dcl 13-45 sc_stat_$admin_sci_ptr external static pointer dcl 13-45 sc_stat_$as_log_write_ptr external static pointer dcl 13-45 sc_stat_$did_part1 external static bit(1) dcl 13-62 sc_stat_$did_part2 external static bit(1) dcl 13-62 sc_stat_$did_part3 external static bit(1) dcl 13-62 sc_stat_$exec_access_name external static char(32) packed unaligned dcl 13-15 sc_stat_$info_dir external static char(168) packed unaligned dcl 13-21 sc_stat_$initzer_ttyp external static pointer dcl 13-45 sc_stat_$log_dir external static char(168) packed unaligned dcl 13-21 sc_stat_$master_abort_label external static label variable dcl 13-34 sc_stat_$master_channel external static char(6) dcl 13-29 sc_stat_$master_iocb external static pointer dcl 13-45 sc_stat_$master_sci_ptr external static pointer dcl 13-45 sc_stat_$mc_acs_dir external static char(168) packed unaligned dcl 13-21 sc_stat_$mc_ansp external static pointer dcl 13-45 sc_stat_$mc_iocb external static pointer dcl 13-45 sc_stat_$mc_is_on external static bit(1) dcl 13-62 sc_stat_$no_operator_login external static bit(1) dcl 13-62 sc_stat_$sv1_iocb external static pointer dcl 13-45 sc_stat_$sv2_iocb external static pointer dcl 13-45 sc_stat_$sv3_iocb external static pointer dcl 13-45 sc_stat_$sysdir external static char(168) packed unaligned dcl 13-21 sc_stat_$system_shutdown_label external static label variable dcl 13-34 sc_stat_$test_mode external static bit(1) dcl 13-62 sc_stat_$unidentified_access_name external static char(32) packed unaligned dcl 13-15 sc_stat_$vchn_requires_accept external static bit(1) dcl 13-62 sl_info automatic structure level 1 dcl 15-24 sl_info_code_msg internal static structure level 1 dcl 15-187 sl_info_msg internal static structure level 1 dcl 15-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 15-161 sl_info_sev_code_msg internal static structure level 1 dcl 15-82 sl_info_sev_coded_msg internal static structure level 1 dcl 15-134 sl_info_sev_msg internal static structure level 1 dcl 15-108 sttip automatic pointer dcl 14-6 supported_fnp internal static bit(1) initial array packed unaligned dcl 8-31 sync_line_type internal static fixed bin(17,0) initial array dcl 12-52 sysdir defined char(168) packed unaligned dcl 3-28 terminal_info_ptr automatic pointer dcl 16-15 tty_access_class_ptr automatic pointer dcl 17-19 NAMES DECLARED BY EXPLICIT CONTEXT. DISPLAY_PROCESS_AUTHORIZATION 016314 constant entry internal dcl 2294 ref 953 abort 011365 constant label dcl 1549 ref 880 956 1039 bad_ai_np 007162 constant label dcl 1186 bad_login_word 004571 constant label dcl 777 ref 769 bump_or_shut 007515 constant label dcl 1270 ref 1264 change_type 014032 constant entry internal dcl 1890 ref 579 610 998 channel_error 015241 constant entry internal dcl 2128 ref 555 570 576 587 595 611 623 644 671 699 713 737 744 793 811 825 832 906 996 1070 1545 1844 1886 1899 1912 2109 2121 cleanup_hangup 011303 constant label dcl 1535 ref 1467 1468 1474 convert_message 014322 constant entry internal dcl 1957 ref 788 1821 2069 convert_message_nnl 014411 constant entry internal dcl 1989 ref 733 734 1371 2229 2230 2231 2232 2233 2234 2235 2236 create 005462 constant label dcl 924 ref 1490 create_another_new_proc 006724 constant label dcl 1120 ref 1129 dialed 006135 constant label dcl 987 ref 865 eek 002557 constant label dcl 523 ref 460 461 evil 011524 constant label dcl 1573 ref 441 evil1 011470 constant label dcl 1569 ref 394 evil2 011444 constant label dcl 1566 ref 365 evil3 011417 constant label dcl 1563 ref 364 exit 005671 constant label dcl 961 ref 371 1549 exit1 005676 constant label dcl 963 set ref 528 590 672 833 961 989 1015 1089 1225 1231 1238 1254 1257 1281 1294 1301 1391 1398 1404 1439 1444 1462 1530 1578 1584 1595 1597 1603 1606 1613 1622 2146 fals 011624 constant label dcl 1580 ref 454 497 508 513 1308 fals0 011677 constant label dcl 1585 ref 468 517 1068 1072 1410 1415 1419 falsi 011626 constant label dcl 1581 ref 1586 fan_out 002420 constant label dcl 487 ref 446 452 471 format_ecode 014671 constant entry internal dcl 2057 ref 642 697 711 742 809 982 1378 format_ftp_output 014451 constant entry internal dcl 2009 ref 2073 2093 format_msg 015017 constant entry internal dcl 2079 ref 735 785 790 823 901 903 1374 1472 1841 1871 1876 1881 1883 2107 2322 ftp_dial_loud 012241 constant entry external dcl 2241 ftp_dial_soft 012322 constant entry external dcl 2261 ftp_dialup_ 001637 constant entry external dcl 14 ref 704 704 ftp_dialup_ucs 016147 constant entry internal dcl 2269 ref 374 374 get_trace_info 015454 constant entry internal dcl 2171 ref 1575 1581 2158 2286 grab_tty 013441 constant entry internal dcl 1853 ref 1353 hand 000023 constant label array(20) dcl 538 ref 455 460 461 521 521 537 838 handle 000125 constant label array(14) dcl 1671 ref 1669 handle_word 004511 constant label dcl 754 ref 685 hang_return 013404 constant label dcl 1834 ref 1692 hello 013506 constant entry internal dcl 1860 ref 651 654 1004 ignored_term 007447 constant label dcl 1261 ref 1312 illegal_cmd 013370 constant label dcl 1824 ref 1664 1668 1677 1682 1716 1805 illegal_cmd_join 013375 constant label dcl 1828 ref 1822 init 012024 constant entry external dcl 2225 interpret_ftp_cmd 012333 constant entry internal dcl 1628 ref 676 834 kill 007756 constant label dcl 1326 ref 943 1141 1146 1150 1155 1160 1165 1170 1175 1181 1192 1229 1236 1243 1275 1288 1306 1559 listen_again 011077 constant label dcl 1496 ref 466 557 645 652 678 700 714 799 812 836 907 984 1544 1550 2135 lock 014202 constant entry internal dcl 1925 ref 891 926 login 003375 constant label dcl 632 ref 1488 login_handler 000047 constant label array(17) dcl 777 ref 774 843 logout_handler 000070 constant label array(29) dcl 1089 ref 1087 1209 1213 1219 1266 lp_error 013362 constant label dcl 1821 set ref 1659 1696 null_return 013407 constant label dcl 1838 ref 1675 1705 1713 1725 1731 1741 1749 1759 1767 1777 1785 print_ftp_msg 015125 constant entry internal dcl 2097 ref 681 721 726 841 1000 process_destroyed 010734 constant label dcl 1458 ref 1389 1433 process_stopped 010443 constant label dcl 1422 ref 1390 1397 1417 quit_common 012472 constant label dcl 1686 ref 1680 read_login_line 003625 constant label dcl 667 ref 679 683 723 728 801 1002 1006 reject_login_word 004714 constant label dcl 803 ref 761 765 resetread 015216 constant entry internal dcl 2115 ref 581 615 794 1095 1831 return_common 013412 constant label dcl 1841 ref 1813 1832 1836 timeout 000000 constant label array(19) dcl 538 ref 462 664 trace 015353 constant entry internal dcl 2150 ref 424 try_again 004665 constant label dcl 796 ref 738 745 909 985 try_again_code 004625 constant label dcl 788 ref 975 978 trylog 005227 constant label dcl 877 ref 871 unlock 014210 constant entry internal dcl 1934 ref 899 942 962 1460 1496 2141 update_term_info 014124 constant entry internal dcl 1906 ref 561 1477 wm_join 004641 constant label dcl 792 ref 786 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 21524 22416 20017 21534 Length 23704 20017 672 1252 1504 322 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ftp_dialup_ 1542 external procedure is an external procedure. interpret_ftp_cmd internal procedure shares stack frame of external procedure ftp_dialup_. grab_tty internal procedure shares stack frame of external procedure ftp_dialup_. hello internal procedure shares stack frame of external procedure ftp_dialup_. change_type internal procedure shares stack frame of external procedure ftp_dialup_. update_term_info internal procedure shares stack frame of external procedure ftp_dialup_. lock internal procedure shares stack frame of external procedure ftp_dialup_. unlock internal procedure shares stack frame of external procedure ftp_dialup_. convert_message internal procedure shares stack frame of external procedure ftp_dialup_. convert_message_nnl internal procedure shares stack frame of external procedure ftp_dialup_. format_ftp_output internal procedure shares stack frame of external procedure ftp_dialup_. format_ecode internal procedure shares stack frame of external procedure ftp_dialup_. format_msg internal procedure shares stack frame of external procedure ftp_dialup_. print_ftp_msg internal procedure shares stack frame of external procedure ftp_dialup_. resetread internal procedure shares stack frame of external procedure ftp_dialup_. channel_error internal procedure shares stack frame of external procedure ftp_dialup_. trace internal procedure shares stack frame of external procedure ftp_dialup_. get_trace_info 114 internal procedure is called by several nonquick procedures. ftp_dialup_ucs 154 internal procedure is assigned to an entry variable. DISPLAY_PROCESS_AUTHORIZATION internal procedure shares stack frame of external procedure ftp_dialup_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_label ftp_dialup_ 000014 loudsw ftp_dialup_ 000016 dum_msg ftp_dialup_ 000020 STOPstop ftp_dialup_ 000022 termstop ftp_dialup_ 000024 greeting_fmt ftp_dialup_ 000056 bad_login_word_fmt ftp_dialup_ 000110 proc_term_fmt ftp_dialup_ 000142 init_term_fmt ftp_dialup_ 000174 proc_term_loop_fmt ftp_dialup_ 000226 logout_fmt ftp_dialup_ 000260 logout_fmt1 ftp_dialup_ 000312 pw_msg ftp_dialup_ 000317 loud_select_sw ftp_dialup_ 000320 loud_select_channel ftp_dialup_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ftp_dialup_ 000100 time ftp_dialup_ 000102 ftp_765 ftp_dialup_ 000103 ftp_code ftp_dialup_ 000104 i ftp_dialup_ 000105 j ftp_dialup_ 000106 k ftp_dialup_ 000107 lgwd ftp_dialup_ 000110 user_login_word ftp_dialup_ 000114 code ftp_dialup_ 000115 ignore_code ftp_dialup_ 000116 tcode ftp_dialup_ 000117 old_pf ftp_dialup_ 000120 new_pf ftp_dialup_ 000122 old_cpu ftp_dialup_ 000124 new_cpu ftp_dialup_ 000126 old_pp ftp_dialup_ 000127 new_pp ftp_dialup_ 000130 saved_atep1 ftp_dialup_ 000132 saved_atep2 ftp_dialup_ 000134 q ftp_dialup_ 000136 p1 ftp_dialup_ 000140 say_hello ftp_dialup_ 000141 just_dialed_up ftp_dialup_ 000142 user_password ftp_dialup_ 000144 jj ftp_dialup_ 000145 dial_qual ftp_dialup_ 000155 dial_arg1 ftp_dialup_ 000166 funct ftp_dialup_ 000170 nc ftp_dialup_ 000171 t1 ftp_dialup_ 000172 t2 ftp_dialup_ 000174 shxx ftp_dialup_ 000176 error_mess ftp_dialup_ 000227 date_time ftp_dialup_ 000235 buff ftp_dialup_ 000350 lg_err ftp_dialup_ 000423 type_to_set ftp_dialup_ 000433 wakeup_for_channel ftp_dialup_ 000434 wakeup_for_process ftp_dialup_ 000435 wakeup_from_as ftp_dialup_ 000436 wakeup_from_ring_zero ftp_dialup_ 000437 wakeup_from_user ftp_dialup_ 000440 tra_vec ftp_dialup_ 000441 have_ate ftp_dialup_ 000442 have_cdte ftp_dialup_ 000443 tname ftp_dialup_ 000464 tsignal_type ftp_dialup_ 000505 tanswb ftp_dialup_ 000506 tstate ftp_dialup_ 000507 ttv ftp_dialup_ 000510 tinuse ftp_dialup_ 000511 term_info ftp_dialup_ 000531 set_type_info ftp_dialup_ 000543 TTY_ACCESS_CLASS ftp_dialup_ 000546 argp ftp_dialup_ 000550 argl ftp_dialup_ 000552 ansp ftp_dialup_ 000554 cdtep ftp_dialup_ 000556 utep ftp_dialup_ 000572 cursor interpret_ftp_cmd 000573 cmd interpret_ftp_cmd 000574 password interpret_ftp_cmd 000576 size interpret_ftp_cmd 000577 cmdno interpret_ftp_cmd 000600 code interpret_ftp_cmd 000601 lpcode interpret_ftp_cmd 000656 short convert_message 000660 long convert_message 000720 short convert_message_nnl 000722 long convert_message_nnl 000762 build_string format_ftp_output 001076 i format_ftp_output 001077 temp format_ftp_output 001106 len format_ecode 001107 result format_ecode 001116 result format_msg 001126 temp_buff print_ftp_msg 001241 tb_len print_ftp_msg 001250 temp_code resetread 001274 authorization_string DISPLAY_PROCESS_AUTHORIZATION 001356 buff_lth DISPLAY_PROCESS_AUTHORIZATION 001357 code DISPLAY_PROCESS_AUTHORIZATION 001360 format DISPLAY_PROCESS_AUTHORIZATION ftp_dialup_ucs 000100 errm ftp_dialup_ucs 000136 erri ftp_dialup_ucs 000137 non_local_exit ftp_dialup_ucs get_trace_info 000100 i get_trace_info 000101 o_sw get_trace_info 000102 char8 get_trace_info THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 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 return_mac fl2_to_fx1 tra_ext_2 shorten_stack ext_entry int_entry int_entry_desc clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. act_ctl_$close_account act_ctl_$cp act_ctl_$dp act_ctl_$open_account aim_check_$equal as_check_condition_ as_dump_ astty_$tty_abort astty_$tty_changemode astty_$tty_event astty_$tty_force astty_$tty_get_chars 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_$remove_cdte asu_$send_term_signal asu_$start_process condition_ convert_access_class_$to_string convert_ipc_code_ convert_status_code_ cpg_ cpu_time_and_paging_ cu_$arg_count cu_$arg_ptr date_time_ device_acct_$off device_acct_$on dial_ctl_ dial_ctl_$dial_broom dial_ctl_$dial_term dial_ctl_$finish_priv_attach dpg_ dpg_$finish hcs_$wakeup ioa_ ioa_$rs ioa_$rsnnl ipc_$decl_ev_call_chn ipc_$drain_chn ipc_$unmask_ev_calls lg_ctl_$login lg_ctl_$logout login_parse_ login_parse_$password lv_request_$cleanup_process match_star_name_ parse_ftp_login_line_ rcp_sys_$unassign_process scramble_ sub_err_ 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_$preaccess_type user_table_mgr_$free THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. 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_$automatic_logout as_error_table_$bad_answerback as_error_table_$bad_login_arg_msg as_error_table_$bad_login_word_msg as_error_table_$bump_cancelled as_error_table_$coming_up as_error_table_$detach as_error_table_$dialup_error as_error_table_$greeting_msg 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_$login_auth_msg as_error_table_$logout1_msg as_error_table_$logout_msg as_error_table_$no_init_proc as_error_table_$no_io_attach as_error_table_$no_login_arg_msg as_error_table_$no_signal as_error_table_$proc_term_loop_msg as_error_table_$proc_term_msg as_error_table_$process_create_fail as_error_table_$pw_msg as_error_table_$shutdown as_error_table_$special_session as_error_table_$sys_full as_error_table_$term_by_operator as_error_table_$tty_no_room error_table_$bad_arg error_table_$badstar error_table_$noarg error_table_$out_of_sequence error_table_$smallarg ftp_misc_$ftp_login_responder sc_stat_$Multics_typed sc_stat_$shutdown_typed LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 309 001620 318 001625 1 53 001627 20 76 001631 14 001634 364 001645 365 001652 366 001657 370 001662 371 001666 372 001671 373 001672 374 001673 376 001716 377 001721 381 001734 382 001752 383 001754 384 001756 385 001761 387 001770 389 002040 391 002042 392 002047 394 002050 395 002054 396 002056 397 002060 398 002062 400 002072 402 002133 403 002135 404 002141 406 002171 410 002174 411 002204 413 002244 416 002247 421 002251 422 002257 424 002265 428 002271 431 002302 436 002311 441 002324 446 002326 451 002330 452 002332 453 002337 454 002344 455 002347 456 002350 457 002367 459 002373 460 002400 461 002402 462 002404 466 002405 468 002406 470 002415 471 002417 487 002420 495 002431 496 002433 497 002457 499 002460 501 002461 503 002463 506 002471 507 002473 508 002517 510 002520 512 002521 513 002545 517 002546 521 002552 523 002557 528 002623 531 002624 534 002635 537 002637 538 002641 546 002700 547 002707 551 002710 552 002712 554 002715 555 002726 557 002732 559 002736 561 002740 563 002741 566 002750 569 002760 570 003004 572 003010 574 003014 576 003045 579 003050 581 003053 582 003054 585 003064 587 003114 589 003120 590 003123 592 003124 595 003143 596 003147 597 003151 600 003216 601 003221 602 003224 605 003227 607 003237 610 003247 611 003252 614 003256 615 003307 620 003310 622 003343 623 003366 627 003372 628 003374 632 003375 634 003400 635 003403 636 003424 639 003431 642 003475 643 003530 644 003547 645 003553 649 003554 651 003561 652 003562 654 003563 657 003566 658 003574 660 003611 662 003617 663 003622 664 003624 667 003625 670 003630 671 003647 672 003653 676 003655 678 003660 679 003662 680 003666 681 003672 683 003704 685 003705 688 003707 689 003720 690 003722 691 003757 692 003763 694 004012 697 004015 698 004024 699 004043 700 004047 702 004050 703 004053 704 004055 705 004100 706 004102 707 004111 711 004157 712 004212 713 004231 714 004235 716 004236 717 004242 719 004245 720 004306 721 004312 723 004324 725 004325 726 004327 728 004340 731 004341 733 004345 734 004354 735 004403 736 004412 737 004431 738 004435 741 004436 742 004440 743 004447 744 004466 745 004472 748 004473 749 004475 750 004502 753 004505 754 004511 759 004531 761 004533 764 004543 765 004550 769 004563 774 004567 777 004571 785 004615 786 004624 788 004625 790 004632 792 004641 793 004660 794 004664 796 004665 798 004676 799 004704 801 004713 803 004714 806 004724 808 004732 809 004735 810 004744 811 004763 812 004767 815 004770 819 004773 822 004775 823 005003 824 005014 825 005033 827 005037 831 005042 832 005061 833 005065 834 005067 836 005072 838 005077 841 005103 843 005115 847 005116 848 005126 856 005131 858 005136 859 005141 860 005172 861 005174 862 005177 863 005202 864 005214 865 005217 867 005220 871 005223 873 005224 877 005227 880 005240 882 005244 883 005247 884 005277 887 005303 888 005310 891 005312 893 005313 895 005316 897 005343 899 005346 900 005347 901 005354 903 005372 905 005407 906 005426 907 005432 909 005436 914 005437 917 005447 919 005451 920 005460 924 005462 926 005510 927 005511 928 005513 930 005515 931 005526 932 005530 936 005571 937 005574 938 005603 939 005612 940 005615 941 005616 942 005621 943 005622 946 005623 947 005632 948 005634 953 005635 955 005636 956 005652 957 005654 959 005663 960 005666 961 005671 962 005675 963 005676 964 005706 965 005720 966 005726 967 005732 968 005735 969 005736 972 005737 975 006002 976 006004 977 006006 978 006052 979 006054 980 006100 982 006102 983 006111 984 006130 985 006134 987 006135 988 006145 989 006150 994 006151 996 006173 998 006177 1000 006206 1002 006217 1004 006220 1006 006221 1010 006222 1012 006225 1013 006227 1014 006231 1015 006237 1038 006240 1039 006244 1040 006250 1041 006251 1042 006254 1043 006256 1044 006276 1045 006300 1046 006305 1047 006314 1048 006316 1051 006326 1052 006357 1054 006360 1055 006362 1056 006363 1059 006372 1060 006374 1061 006376 1063 006400 1065 006401 1065 006422 1066 006424 1068 006433 1069 006435 1070 006445 1072 006451 1075 006455 1079 006457 1080 006463 1082 006471 1085 006473 1087 006474 1089 006476 1092 006514 1095 006517 1098 006522 1099 006524 1100 006537 1102 006605 1105 006606 1106 006611 1107 006614 1109 006641 1111 006703 1116 006704 1118 006720 1119 006722 1120 006724 1122 006727 1125 006754 1128 006755 1129 006756 1131 006762 1132 006764 1136 007010 1141 007051 1143 007052 1145 007055 1146 007057 1148 007060 1150 007063 1152 007064 1154 007067 1155 007071 1157 007072 1159 007075 1160 007077 1162 007100 1164 007103 1165 007106 1167 007107 1169 007112 1170 007115 1172 007116 1174 007121 1175 007124 1177 007125 1179 007130 1180 007132 1181 007135 1184 007136 1185 007137 1186 007162 1187 007165 1189 007225 1192 007230 1194 007231 1207 007241 1208 007245 1209 007250 1211 007251 1212 007253 1213 007255 1216 007257 1218 007317 1219 007322 1225 007323 1228 007341 1229 007344 1231 007345 1234 007363 1235 007366 1236 007371 1238 007372 1241 007410 1242 007413 1243 007416 1245 007417 1254 007422 1257 007425 1259 007443 1261 007447 1264 007510 1266 007514 1270 007515 1273 007520 1274 007531 1275 007534 1277 007535 1281 007544 1283 007562 1285 007565 1287 007573 1288 007576 1290 007577 1293 007606 1294 007610 1296 007611 1299 007653 1300 007701 1301 007727 1303 007730 1305 007733 1306 007736 1308 007737 1311 007743 1312 007752 1315 007753 1326 007756 1329 007760 1330 007764 1332 010024 1337 010041 1340 010043 1341 010046 1342 010057 1343 010071 1345 010104 1347 010123 1351 010131 1353 010133 1355 010134 1357 010136 1360 010143 1362 010151 1364 010156 1366 010163 1369 010165 1371 010167 1372 010176 1373 010225 1374 010232 1375 010235 1376 010254 1378 010255 1379 010260 1383 010277 1388 010335 1389 010336 1390 010341 1391 010342 1397 010343 1398 010346 1402 010347 1404 010402 1410 010403 1412 010405 1415 010414 1417 010416 1419 010442 1422 010443 1424 010452 1425 010461 1426 010463 1428 010466 1429 010467 1430 010473 1431 010502 1433 010511 1435 010513 1436 010522 1437 010524 1438 010526 1439 010530 1442 010531 1443 010533 1444 010535 1446 010536 1447 010542 1448 010553 1449 010555 1450 010561 1451 010570 1452 010606 1454 010664 1458 010734 1460 010736 1461 010737 1462 010746 1466 010747 1467 010760 1468 010762 1470 010766 1472 010774 1473 011003 1474 011022 1477 011024 1479 011025 1480 011034 1481 011043 1482 011051 1483 011053 1484 011054 1485 011065 1486 011067 1487 011070 1488 011072 1490 011073 1492 011075 1496 011077 1507 011100 1508 011111 1509 011113 1511 011114 1512 011124 1514 011136 1515 011142 1516 011172 1519 011174 1520 011177 1522 011242 1525 011244 1528 011264 1530 011302 1535 011303 1537 011311 1538 011320 1541 011327 1542 011357 1544 011361 1545 011363 1549 011365 1550 011371 1551 011375 1552 011377 1553 011402 1555 011407 1556 011411 1557 011413 1558 011415 1559 011416 1563 011417 1564 011443 1566 011444 1567 011467 1569 011470 1571 011523 1573 011524 1574 011536 1575 011542 1576 011546 1578 011623 1580 011624 1581 011626 1582 011632 1584 011676 1585 011677 1586 011701 1593 011702 1595 011713 1596 011717 1597 011726 1601 011727 1603 011740 1605 011744 1606 011753 1611 011754 1613 011765 1615 011771 1622 012022 2225 012023 2227 012032 2229 012065 2230 012076 2231 012107 2232 012120 2233 012131 2234 012142 2235 012153 2236 012164 2237 012206 2239 012236 2241 012240 2249 012247 2251 012252 2254 012265 2255 012270 2256 012306 2259 012320 2261 012321 2263 012330 2265 012332 1628 012333 1658 012351 1659 012407 1660 012414 1661 012417 1662 012422 1664 012423 1665 012430 1667 012436 1667 012450 1668 012452 1669 012454 1671 012455 1673 012460 1674 012462 1675 012464 1677 012465 1680 012467 1682 012470 1686 012472 1688 012475 1689 012477 1691 012504 1692 012506 1694 012507 1696 012555 1698 012562 1700 012564 1701 012567 1702 012571 1704 012576 1705 012600 1708 012601 1709 012604 1710 012606 1712 012613 1713 012615 1716 012616 1719 012620 1720 012666 1722 012673 1723 012676 1724 012700 1725 012702 1728 012703 1729 012706 1730 012710 1731 012712 1734 012713 1736 012761 1738 012773 1739 012776 1740 013000 1741 013002 1744 013003 1745 013006 1746 013010 1748 013015 1749 013017 1752 013020 1754 013066 1756 013100 1757 013103 1758 013105 1759 013107 1762 013110 1763 013113 1764 013115 1766 013122 1767 013124 1770 013125 1772 013173 1774 013205 1775 013210 1776 013212 1777 013214 1780 013215 1781 013220 1782 013222 1784 013227 1785 013231 1788 013232 1790 013235 1791 013237 1793 013240 1795 013243 1796 013250 1797 013252 1799 013253 1801 013256 1802 013263 1803 013265 1805 013266 1809 013270 1810 013273 1811 013275 1812 013277 1813 013302 1815 013303 1817 013351 1818 013357 1819 013361 1821 013362 1822 013367 1824 013370 1827 013373 1828 013375 1830 013400 1831 013402 1832 013403 1834 013404 1836 013406 1838 013407 1841 013412 1843 013415 1844 013434 1845 013440 1853 013441 1855 013442 1856 013474 1858 013505 1860 013506 1862 013507 1863 013514 1864 013520 1865 013535 1868 013613 1870 013624 1871 013627 1872 013663 1873 013664 1875 013674 1876 013712 1877 013734 1878 013735 1880 013737 1881 013754 1882 013776 1883 013777 1885 014006 1886 014025 1888 014031 1890 014032 1894 014043 1895 014045 1896 014053 1898 014054 1899 014110 1900 014114 1902 014123 1906 014124 1910 014125 1911 014127 1912 014163 1914 014167 1915 014173 1916 014175 1917 014177 1919 014201 1925 014202 1927 014203 1928 014205 1930 014207 1934 014210 1936 014211 1938 014221 1939 014225 1940 014227 1941 014230 1942 014232 1943 014241 1944 014257 1946 014260 1947 014266 1948 014274 1949 014275 1953 014321 1957 014322 1974 014324 1975 014337 1977 014356 1979 014360 1980 014362 1983 014367 1984 014370 1989 014411 2003 014413 2005 014426 2009 014451 2021 014462 2023 014467 2025 014471 2026 014500 2027 014502 2030 014510 2032 014512 2034 014530 2036 014541 2037 014543 2038 014555 2039 014571 2040 014573 2041 014610 2043 014611 2045 014615 2046 014630 2048 014644 2049 014645 2050 014661 2052 014663 2057 014671 2069 014702 2070 014723 2072 014742 2073 014756 2075 015016 2079 015017 2090 015030 2092 015050 2093 015065 2097 015125 2107 015136 2108 015172 2109 015211 2111 015215 2115 015216 2120 015217 2121 015234 2123 015240 2128 015241 2133 015243 2134 015252 2135 015254 2138 015255 2141 015317 2142 015320 2143 015331 2144 015333 2145 015343 2146 015352 2150 015353 2152 015354 2158 015367 2159 015373 2167 015452 2171 015453 2181 015461 2182 015463 2183 015464 2184 015471 2187 015510 2188 015514 2189 015516 2194 015600 2195 015604 2196 015625 2198 015741 2199 015744 2200 015746 2201 015752 2202 015754 2204 015755 2205 015757 2206 016036 2207 016041 2208 016120 2209 016123 2210 016124 2211 016125 2212 016127 2213 016131 2214 016133 2217 016134 2218 016140 2219 016142 2221 016145 2269 016146 2282 016162 2283 016202 2286 016213 2287 016220 2289 016300 2290 016311 2294 016314 2310 016315 2312 016337 2314 016345 2316 016350 2317 016354 2319 016371 2320 016375 2322 016422 2323 016431 2328 016454 ----------------------------------------------------------- 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