COMPILATION LISTING OF SEGMENT tty_lines Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/20/88 1045.1 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4 */ 13 tty_lines: tln: procedure; 14 15 16 /* 17* This command prints certain information from the answer_table 18* about each channel that is attached to Multics. It has one optional 19* argument, used to elicit subsets of the information. Normal printed 20* data consists of tty channel name, type of device to last dialup 21* the channel, dialup count, channel state (1 = hungup, 22* 2 = listening, 5 = dialedup), location in dialup (see SPS), 23* activity value (1 = hungup, 2 = listening, 3 = dialed-up, 24* 4 = user is logged-in, 5 = user has process), and user and 25* project names and device ID if activity is 4 or 5 (also for 26* 2 or 3 if information is available). This option 27* to the command is either a channel name or a selector of the form xxyyyy. Values of xx and yyyy 28* are as follows: 29* 30* V__a_l_u_e _o_f "_x_x" M__e_a_n_i_n_g _o_f "_y_y_y_y" 31* 32* id Teletype ID code (value printed in ID column) 33* 34* ct Channels with "experiment-count" >_ yyyy Since 35* channel last initialized (value printed in ID 36* column) 37* 38* dl Channels with "dialup-count" >_ yyyy since 39* answer_table last truncated (value printed in 40* ID column) 41* 42* st Channels in state yyyy (possible values 1, 2 or 5) 43* 44* 45* wp Channels at "wait-point" yyyy (1-21) 46* 47* ac Channels with "activity" yyyy (0-7) 48* 49* sl Information for "slot" yyyy (1-999) (0 or blank 50* means entire table) 51* 52* c= Channels for which "experiment-count" equals 53* _y_y_y_y (value printed in ID column) 54* 55* d= Channels for which "dialup count" equals _y_y_y_y 56* (value printed in ID column) 57* 58* Note that a null part of the option is equivalent to a value of 0 59* in the selection mechanism (except for the "ID" option, 60* where _y_y_y_y is alpha-numeric). 61* 62* Alternatively, a pair of arguments, -type , can be specified to 63* get information for those lines most recently accessed by a terminal of 64* the specified type. 65* 66* Modified by Robert Coren, June 1977, to add -type argument. 67* Modified 1980 December by Art Beattie to obtain process ident information from daemon and absentee user tables. 68* Also improved display with header by determining longest terminal type name and adjusting column placement 69* accordingly. 70* Modified December 1981, E. N. Kittlitz, for user_table_entry conversion. 71* Modified June 1982, E. N. Kittlitz, for user_attributes.incl.pl1. 72**/ 73 74 75 /****^ HISTORY COMMENTS: 76* 1) change(87-04-26,GDixon), approve(87-07-08,MCR7741), 77* audit(87-07-15,Hartogs), install(87-08-04,MR12.1-1055): 78* Upgraded for change to answer_table.incl.pl1 and user_table_entry.incl.pl1 79* END HISTORY COMMENTS */ 80 81 82 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin, fixed bin (35)), 83 cu_$arg_count entry (fixed bin), 84 hcs_$terminate_noname entry (ptr, fixed bin (35)), 85 hcs_$initiate entry (char (*) aligned, char (*) aligned, char (*) aligned, fixed bin, fixed bin, ptr, fixed bin (35)), 86 cv_dec_ entry (char (*) aligned, fixed bin), 87 date_time_ entry (fixed bin (71), char (*) aligned), 88 clock_ returns (fixed bin (71)), 89 (ioa_, ioa_$nnl, com_err_) entry options (variable); 90 91 dcl (addr, char, hbound, length, low, max, min, null, ptr, rel, rtrim, substr) builtin; 92 93 dcl keyp ptr, 94 (fmtmax, fmtmin, t_active, isearch, islot, 95 lasti, ndial, i, table_idx) fixed bin, 96 code fixed bin (35); 97 98 dcl argp ptr, 99 argln fixed bin (17), 100 arg char (argln) based (argp) unaligned; 101 102 dcl (c2 char (2), 103 c4 char (4), 104 type_str char (32), 105 test_type char (32), 106 time_str char (16)) aligned; 107 108 dcl test_name char (32); 109 110 dcl hdrflag bit (1) init ("1"b), 111 j fixed bin, 112 count fixed bin; 113 dcl (max_name_len, max_type_len) fixed bin; 114 dcl NL char (1) init (" 115 "); 116 117 dcl collapse (11) fixed bin (17) static 118 init (0, 1, 2, 2, 2, 3, 3, 3, 0, 2, 2); 119 120 dcl keys char (22) static aligned 121 init (" idslctdlacwpst c=d="); 122 123 dcl scd char (48) aligned static init (">system_control_1"); 124 125 dcl 1 key aligned based (keyp), 126 2 k2 (14) char (2) unaligned; 127 128 dcl answer_table_ptrs (3) pointer; 129 130 call hcs_$initiate (scd, "cdt", "", 0, 1, cdtp, code); 131 if cdtp = null 132 then do; 133 call com_err_ (code, "tty_lines", "cdt"); 134 return; 135 end; 136 137 call hcs_$initiate (scd, "answer_table", "", 0, 1, answer_table_ptrs (1), code); 138 if answer_table_ptrs (1) = null 139 then do; 140 call com_err_ (code, "tty_lines", "answer_table"); 141 return; 142 end; 143 144 call hcs_$initiate (scd, "absentee_user_table", "", 0, 1, answer_table_ptrs (2), code); 145 if answer_table_ptrs (2) = null 146 then call com_err_ (code, "tty_lines", "^/Cannot get pointer to absentee_user_table; continuing."); 147 148 call hcs_$initiate (scd, "daemon_user_table", "", 0, 1, answer_table_ptrs (3), code); 149 if answer_table_ptrs (3) = null 150 then call com_err_ (code, "tty_lines", "^/Cannot get pointer to daemon_user_table; continuing."); 151 152 isearch = 0; /* Initialize default */ 153 fmtmax = 4; 154 fmtmin = 0; 155 156 call cu_$arg_count (count); 157 158 do j = 1 to count; 159 call cu_$arg_ptr (j, argp, argln, code); 160 if arg = "-lines" then ; 161 162 else 163 if arg = "-type" 164 then do; /* terminal type specified */ 165 j = j + 1; /* get following argument */ 166 call cu_$arg_ptr (j, argp, argln, code); 167 if code ^= 0 168 then do; 169 call com_err_ (code, "tty_lines"); 170 return; 171 end; 172 173 test_type = arg; 174 isearch = 9; 175 end; 176 177 else do; 178 179 hdrflag = "0"b; 180 keyp = addr (keys); /* get ptr to argument key values */ 181 c2 = char (arg, 2); /* pick off key */ 182 c4 = substr (arg, 3); /* and get key argument */ 183 184 do i = 1 to hbound (collapse, 1); 185 186 if c2 = k2 (i) 187 then do; /* look for key match */ 188 189 isearch = i; 190 go to setup (collapse (i)); 191 192 setup (1): /* here for key "id" */ 193 fmtmin = 3; 194 go to end_setup; 195 196 setup (2): /* here for keys "sl","ct", "dl", "c=", and "d=" */ 197 fmtmax = 2; 198 199 setup (3): /* here for keys "ac", "wp", and "st" */ 200 call cv_dec_ (c4, islot); 201 202 go to end_setup; 203 204 end; 205 206 else do; 207 isearch = 1; /* not recognized, assume it's a channel name */ 208 test_name = arg; 209 end; 210 211 end; 212 213 end; 214 215 setup (0): /* here for key "tt" */ 216 end_setup: end; 217 218 call date_time_ ((clock_ ()), time_str); 219 220 if hdrflag 221 then do; 222 max_name_len, max_type_len = 0; 223 do i = 1 to cdt.current_size; 224 cdtep = addr (cdt.cdt_entry (i)); 225 if cdte.in_use ^= 0 226 then do; 227 max_name_len = max (max_name_len, length (rtrim (cdte.name))); 228 max_type_len = max (max_type_len, length (rtrim (cdte.current_terminal_type))); 229 end; 230 end; 231 call ioa_ ("^/Attached lines = ^d (size = ^d) at ^16a^2/Name^vxType^vxNo. S WP A Baud User^/", 232 cdt.n_cdtes, cdt.current_size, time_str, max_name_len - 3, max_type_len - 2); 233 end; 234 235 lasti = 1; 236 237 238 do i = 1 to cdt.current_size; 239 cdtep = addr (cdt.cdt_entry (i)); 240 if cdte.in_use <= 0 241 then go to end_i; 242 243 ndial = cdte.n_dialups; 244 if ndial ^= 0 & cdte.current_terminal_type ^= low (32) 245 then type_str = cdte.current_terminal_type; 246 else type_str = "(NU)"; 247 248 t_active = cdte.in_use; 249 go to request (isearch); /* dispatch on key type */ 250 251 request (1): 252 if cdte.name = test_name 253 then go to print_it; 254 255 go to end_i; 256 257 request (2): /* id */ 258 if c4 = cdte.tty_id_code 259 then go to print_it; 260 261 go to end_i; 262 263 request (3): /* sl */ 264 if islot = 0 265 then go to print_it; /* if slot = 0, print all entries */ 266 267 if i = islot 268 then go to print_it; 269 270 go to end_i; 271 272 request (4): /* ct */ 273 ndial = cdte.count; 274 request (5): /* dl */ 275 if ndial >= islot 276 then go to print_it; 277 278 go to end_i; 279 280 request (6): /* ac */ 281 if t_active = islot 282 then go to print_it; 283 284 go to end_i; 285 286 request (7): /* wp */ 287 if cdte.tra_vec = islot 288 then go to print_it; 289 290 291 go to end_i; 292 293 request (8): /* st */ 294 if cdte.state = islot 295 then go to print_it; 296 297 go to end_i; 298 299 request (9): /* ty */ 300 if type_str = test_type 301 then go to print_it; 302 303 go to end_i; 304 305 request (10): /* c= */ 306 ndial = cdte.count; 307 request (11): /* d= */ 308 if ndial = islot 309 then go to print_it; 310 311 go to end_i; 312 313 request (0): /* if printing everything */ 314 if t_active = 0 /* if slot not active */ 315 then go to end_i; 316 317 print_it: 318 if i ^= lasti 319 then call ioa_$nnl ("(^d)^/", i - lasti); 320 321 if ^hdrflag 322 then do; 323 max_name_len = length (rtrim (cdte.name)); 324 max_type_len = length (rtrim (type_str)); 325 end; 326 327 go to print_hlr (max (min (t_active, fmtmax), fmtmin)); /* select proper printing format */ 328 329 print_hlr (2): 330 print_hlr (3): 331 if cdte.dialed_to_procid = "0"b then go to print_hlr (1); 332 333 do table_idx = 1 to hbound (answer_table_ptrs, 1); 334 if answer_table_ptrs (table_idx) ^= null then do; 335 utep = ptr (answer_table_ptrs (table_idx), rel (cdte.process)); 336 if ute.proc_id = cdte.dialed_to_procid 337 then do; 338 if table_idx = 1 /* this is the answer_table */ 339 then call ioa_ ("^va ^va ^4d ^1d ^2d ^1d ^4d ^a ^a (^a) ^a", max_name_len, cdte.name, 340 max_type_len, type_str, ndial, cdte.state, cdte.tra_vec, t_active, cdte.baud_rate, 341 ute.person, ute.project, ute.tty_id_code, cdte.comment); 342 else call ioa_ ("^va ^va ^4d ^1d ^2d ^1d ^4d ^a ^a (^a) ^a", max_name_len, cdte.name, 343 max_type_len, type_str, ndial, cdte.state, cdte.tra_vec, t_active, cdte.baud_rate, 344 ute.person, ute.project, ute.tty_name, cdte.comment); 345 go to upd_last; 346 end; 347 end; 348 end; 349 /* couldn't find anything in any of the */ 350 /* tables to display */ 351 go to print_hlr (1); 352 353 print_hlr (4): 354 utep = ptr (answer_table_ptrs (1), rel (cdte.process)); /* Get user table entry */ 355 call ioa_ ("^va ^va ^4d ^1d ^2d ^1d ^4d ^a ^a (^a) ^a", max_name_len, cdte.name, 356 max_type_len, type_str, ndial, cdte.state, cdte.tra_vec, t_active, cdte.baud_rate, 357 ute.person, ute.project, cdte.tty_id_code, cdte.comment); 358 go to upd_last; 359 360 print_hlr (0): 361 print_hlr (1): 362 /* just display what's in CDT */ 363 call ioa_ ("^va ^va ^4d ^1d ^2d ^1d ^4d ^a", max_name_len, cdte.name, max_type_len, type_str, 364 ndial, cdte.state, cdte.tra_vec, t_active, cdte.baud_rate, cdte.comment); 365 366 upd_last: 367 lasti = i + 1; 368 end_i: 369 end; 370 371 if i = lasti 372 then call ioa_ (""); 373 else call ioa_ ("(^d)^/", i - lasti); 374 375 do i = 1 to hbound (answer_table_ptrs, 1); 376 if answer_table_ptrs (i) ^= null then call hcs_$terminate_noname (answer_table_ptrs (i), code); 377 end; 378 call hcs_$terminate_noname (cdtp, code); 379 380 return; 381 382 tln_test: entry (test_dir); 383 384 dcl test_dir char (*) unaligned; 385 386 scd = test_dir; 387 388 /* 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 */ 388 389 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 2 2 2 3 /* This include file declares the "author" substructure 2 4* in a form suitable for using the PL/I "like" attribute. 2 5* 2 6* Written 750304 by PG 2 7**/ 2 8 2 9 dcl 1 author_dcl aligned based, 3 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 3 2 3 3 /* the "author" items must always be the first ones in the table. The 3 4* module which moves the converted table to the System Control process 3 5* fills in these data items and assumes them to be at the head of the segment 3 6* regardless of the specific table's actual declaration. The variables 3 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 3 8* respectively. For tables installed in multiple processes, these 3 9* are to be used to lock out multiple installations. */ 3 10 3 11 /* Lock should be used as a modification lock. Since, in general, 3 12* entries may not be moved in system tables, even by installations, 3 13* it is sufficient for only installers and programs that change threads 3 14* to set or respect the lock. Simply updating data in an entry 3 15* requires no such protection. 3 16* 3 17* Last_install_time is used by readers of system tables to detect 3 18* installations or other serious modifications. By checking it before 3 19* and after copying a block of data, they can be protected against 3 20* modifications. 3 21* 3 22* Modules that set the lock should save proc_group_id, and then 3 23* put their group id there for the time they hold the lock. 3 24* if they do not actually install the, they should restore the group id. 3 25**/ 3 26 3 27 2 author aligned, /* validation data about table's author */ 3 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 3 29 3 lock bit (36), /* installation lock */ 3 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 3 31 3 update_authorization bit (1) unal, /* update only authorizations */ 3 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 3 33 3 pad bit (33) unaligned, 3 34 3 last_install_time fixed bin (71), 3 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 3 36 3 w_dir char (64), /* author's working directory */ 3 37 3 38 /* END INCLUDE FILE author.incl.pl1 */ 2 10 2 11 2 pad; 2 12 2 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 389 390 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 4 2 4 3 /* format: style3,idind25,indcomtxt */ 4 4 4 5 /* Channel Definition Table. 4 6* This table lists all of the hardware channels (ports) connected 4 7* to the system, and maintains the attributes of each one. 4 8* 4 9* PG 741230 4 10* Modified by Mike Grady 5/6/76 to add FNP info. 4 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 4 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 4 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 4 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 4 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 4 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 4 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 4 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 4 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 4 20* Modified August 1982 by E. N. Kittlitz for check_acs. 4 21* Modified January 1983 by Keith Loepere for generic_destination. 4 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 4 23* Modified 831216 by E. N. Kittlitz for required_access_class. 4 24* Modified 84-04-01 by BIM to finish communications AIM: 4 25* access class ranges, 4 26* access_control flags. 4 27**/ 4 28 4 29 4 30 /****^ HISTORY COMMENTS: 4 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 4 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 4 33* Add support for answering service to use IOCBs when tty_ cannot be 4 34* used to service login channels. 4 35* END HISTORY COMMENTS */ 4 36 4 37 4 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 4 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 4 40 4 41 dcl (cdtp, cdtep, fnpep, mpxep) 4 42 ptr; 4 43 4 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 4 45 2 author like author_dcl.author, /* standard header */ 4 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 4 47 2 current_size fixed bin, /* number of last cdte. */ 4 48 2 version fixed bin, 4 49 2 freep fixed bin, /* chain of free cdte's */ 4 50 2 n_cdtes fixed bin, /* number of used cdte's */ 4 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 4 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 4 53 2 cpu_in_dialup fixed bin (71), /* .. */ 4 54 2 pf_in_dialup fixed bin, /* .. */ 4 55 2 pp_in_dialup fixed bin, /* .. */ 4 56 2 entries_to_dialup fixed bin, /* .. */ 4 57 2 flags, 4 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 4 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 4 60 3 mux_mgr_system_init 4 61 bit (1) unal, /* mux mgr has loaded top-levels */ 4 62 3 pad1 bit (33) unal, 4 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 4 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 4 65 2 threads aligned like channel_threads, 4 66 /* root of non-fnp-top-level-multiplexers */ 4 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 4 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 4 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 4 70 4 71 4 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 4 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 4 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 4 75 2 pad1 bit (36) aligned, 4 76 2 name char (32), /* ASCII name of channel */ 4 77 2 access_class (2) bit (72) aligned, /* access class range */ 4 78 2 comment char (48), /* printable message about channel */ 4 79 2 charge_type fixed bin (17) unal, /* billing group */ 4 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 4 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 4 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 4 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 4 84 2 pad2 bit (18) unaligned, 4 85 2 answerback char (8), /* answerback string expected */ 4 86 2 initial_terminal_type 4 87 char (32) unal, /* as specified in the CMF */ 4 88 2 mpx_data unal, /* data used only for multiplexed channels */ 4 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 4 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 4 91 2 flags, 4 92 ( 3 attributes, 4 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 4 94 4 audit_access_error 4 95 bit (1), /* ON means ck that person auth is inside access class range */ 4 96 /* this implies that the access_class describes a range of 4 97* legitimate user auths. */ 4 98 4 hardwired bit (1), /* ON means it is */ 4 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 4 100 4 dont_read_answerback 4 101 bit (1), /* ON means don't try to read answerback */ 4 102 4 pada bit (4), 4 103 3 access_control unaligned, /* As below */ 4 104 4 dial_out bit (1), /* dialing user must be on ACS */ 4 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 4 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 4 107 4 login bit (1), /* logging in user must be on acs */ 4 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 4 109 4 pado bit (3), 4 110 3 options, 4 111 4 execute_initial_command 4 112 bit (1), /* ON means to do it */ 4 113 4 attached_by_operator 4 114 bit (1), /* ON means temporary attachment. */ 4 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 4 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 4 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 4 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 4 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 4 120 4 generic_destination_present 4 121 bit (1), /* ON means that the initial_command field contains 4 122* a generic destination to match on dial_out or priv attach */ 4 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 4 124 4 pado bit (9) 4 125 ) unaligned, 4 126 2 initial_command char (64), /* pseudo first input line */ 4 127 /**** The following variables represent dynamic control info, and 4 128* are used mostly by dialup_ and asu_ */ 4 129 2 event fixed bin (71), /* event call channel for channel events */ 4 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 4 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 4 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 4 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 4 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 4 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 4 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 4 137 /* 0 = dialup_, 1 = mc_tty_ */ 4 138 3 save_arg bit (1) unal, /* -save login arg given */ 4 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 4 140 3 detach_after_hangup 4 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 4 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 4 143 3 hold_arg bit (1) unal, /* -hold arg given */ 4 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 4 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 4 146 3 current_access_class_valid 4 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 4 148 3 pad bit (7) unal, 4 149 2 twx fixed bin, /* channel device index */ 4 150 2 state fixed bin, /* channel state */ 4 151 2 tty_id_code char (4), /* channel id (answerback) */ 4 152 2 current_terminal_type 4 153 char (32) unal, /* most recently-set terminal type */ 4 154 2 process ptr unal, /* ptr to ATE owning this channel */ 4 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 4 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 4 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 4 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 4 159* We do not yet define multi-class connections, but we will someday. */ 4 160 2 disconnected_ate_index 4 161 fixed bin (17) unal, /* index of ate of disconnected process */ 4 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 4 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 4 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 4 165 2 pad3 bit (14) unaligned, 4 166 /**** The following variables are kept for metering purposes. */ 4 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 4 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 4 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 4 170 2 dialup_time fixed bin (71), /* time of present dialup */ 4 171 2 disconnected_proc_command 4 172 fixed bin (12) unsigned unal, 4 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 4 174 2 disconnected_proc_number 4 175 fixed bin (12) unsigned unal, 4 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 4 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 4 178 /* number of disconnected processes that user has */ 4 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 4 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 4 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 4 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 4 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 4 184 /**** had the space. */ 4 185 2 threads aligned like channel_threads, 4 186 /**** The use name is that of the user who gave the dial or slave ****/ 4 187 /**** preaccess request. ****/ 4 188 2 user_name unaligned, 4 189 3 person char (20) unaligned, 4 190 3 project char (9) unaligned, 4 191 3 pad char (3) unaligned, /* no tag */ 4 192 2 iocbp ptr unaligned; /* 104 words */ 4 193 4 194 4 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 4 196* overlays initial_command field for slave and autocall lines */ 4 197 4 198 4 199 4 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 4 201 /* These variables are filled in from the CMF */ 4 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 4 203 2 memory fixed bin, /* amount of memory on this FNP */ 4 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 4 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 4 206 2 service_type fixed bin, /* service type */ 4 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 4 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 4 209 /**** The following are used during system operation to remember the state of the FNP */ 4 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 4 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 4 212 2 mpxe like mpxe, /* standard multiplexer data */ 4 213 2 threads aligned like channel_threads, 4 214 /* same mpx threads as channel */ 4 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 4 216 4 217 /* This structure describes the data necessary to control a multiplexer. 4 218* For FNP's., a copy appears in the fnpe. For communications lines, it 4 219* overlays the initial_command field in the cdte. */ 4 220 4 221 dcl 1 mpxe based (mpxep) aligned, 4 222 2 state fixed bin, /* current state, up, down, loading */ 4 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 4 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 4 225 2 n_bootloads fixed bin, /* count of load attempts */ 4 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 4 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 4 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 4 229 2 time_load_start fixed bin (71), /* time current load started */ 4 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 4 231 2 flags unal, 4 232 3 go bit (1), /* start MPX after it loads */ 4 233 3 listening bit (1), /* listen has been done on subchannels */ 4 234 3 check bit (1), /* loaded with check option */ 4 235 3 retry_load bit (1), /* reload if load fails */ 4 236 3 pad1 bit (32), 4 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 4 238 4 239 /* These threads define the tree of multiplexers in the cdt. */ 4 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 4 241 /* by alpha sort order of the channel name. Daughter points to the */ 4 242 /* first child of this node, if any. Daughter count is the number */ 4 243 /* of children, as a consistency check. Mother is a back pointer to */ 4 244 /* the parent, present in all the children, not just the first. */ 4 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 4 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 4 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 4 248 4 249 dcl 1 channel_threads aligned based, 4 250 2 next_sister fixed bin unaligned, 4 251 2 prev_sister fixed bin unaligned, 4 252 2 daughter fixed bin unaligned, 4 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 4 254 2 pad bit (18) unaligned, 4 255 2 daughter_count fixed bin unaligned; 4 256 4 257 /* Values for cdte.service_type field */ 4 258 4 259 dcl ( 4 260 ANS_SERVICE init (1), /* login or dial */ 4 261 FTP_SERVICE init (2), /* file transfer service */ 4 262 MC_SERVICE init (3), /* message coordinator */ 4 263 SLAVE_SERVICE init (4), /* special channel */ 4 264 DIAL_SERVICE init (5), /* transient state */ 4 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 4 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 4 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 4 268 ) fixed bin internal static options (constant); 4 269 4 270 /* Values for service type in both cdte and fnpe */ 4 271 4 272 dcl ( 4 273 INACTIVE init (7), /* not to be used, even though configured */ 4 274 ACTIVE init (1) 4 275 ) /* for FNP only, configured and to be used */ 4 276 fixed bin internal static options (constant); 4 277 4 278 /* Value for both cdte.in_use and fnpe.state */ 4 279 4 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 4 281 /* was not configured at Multics bootload time */ 4 282 4 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 4 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 4 285 4 286 /* Value for cdte.in_use */ 4 287 4 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 4 289 /* channel deleted by CDT installation */ 4 290 4 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 4 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 4 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 4 294 4 295 4 296 /* Values for mpxe.state field */ 4 297 4 298 dcl ( 4 299 FNP_FREE init (0), /* this fnpe is not used */ 4 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 4 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 4 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 4 303 FNP_UP init (4) /* FNP is up and running fine */ 4 304 ) fixed bin internal static options (constant); 4 305 4 306 dcl ( 4 307 MPX_FREE init (0), /* this mpxe is not used */ 4 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 4 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 4 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 4 311 MPX_UP init (4) /* MPX is up and running fine */ 4 312 ) fixed bin internal static options (constant); 4 313 5 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 5 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 5 8* Add data needed for the uncp multiplexer (DSA gateway) interface 5 9* implementation. 5 10* END HISTORY COMMENTS */ 5 11 5 12 5 13 /* Values for fnpe.type field */ 5 14 /* 5 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 5 16* Added in March 1982 - DN7100.fd. 5 17**/ 5 18 5 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 5 20 DN6600 init (2), /* a DataNet 6600 FNP */ 5 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 5 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 5 23 ) fixed bin internal static options (constant); 5 24 5 25 dcl fnp_types (4) char (8) int static options (constant) 5 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 5 27 5 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 5 29 init (355, 6600, 6670, 7100); 5 30 5 31 dcl supported_fnp (4) bit (1) int static options (constant) 5 32 init ("0"b, "0"b, "1"b, "1"b); 5 33 5 34 5 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 4 314 4 315 4 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 390 391 /* BEGIN INCLUDE FILE ... ttyp.incl.pl1 */ 6 2 6 3 dcl max_tty_type fixed bin static init (11); 6 4 6 5 dcl tty_dev_type (0:16) char (8) aligned int static init /* ASCII explanations of terminal type */ 6 6 ("Network", "1050", "2741", "TTY37", "TN300", "ARDS", "CORR2741", "TTY33", 6 7 "TTY38", "G115", "type10", "ASCII", "type12", "type13", "type14", "type15", "type16"); 6 8 6 9 /* Note that device type 0 is used for both absentee and network. Distingush some other way */ 6 10 6 11 /* END INCLUDE FILE ... ttyp.incl.pl1 */ 391 392 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 7 2 7 3 7 4 /****^ HISTORY COMMENTS: 7 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 7 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 7 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 7 8* attribute switches. 7 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 7 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 7 12* be deleted. 7 13* B) Add constants identifying attributes that can be changed by user at 7 14* login, etc. 7 15* END HISTORY COMMENTS */ 7 16 7 17 7 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 7 19 7 20 /* format: style4 */ 7 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 7 22 (2 administrator bit (1), /* 1 system administrator privileges */ 7 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 7 24 2 nobump bit (1), /* 2 user cannot be bumped */ 7 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 7 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 7 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 7 28* . of same project (distinct from "nobump") */ 7 29 2 nolist bit (1), /* 7 don't list user on "who" */ 7 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 7 31 2 multip bit (1), /* 9 user may have several processes */ 7 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 7 33 2 brief bit (1), /* 11 no login or logout message */ 7 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 7 35 2 vhomedir bit (1), /* 13 user may change homedir */ 7 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 7 37 2 sb_ok bit (1), /* 15 user may be standby */ 7 38 2 pm_ok bit (1), /* 16 user may be primary */ 7 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 7 40 2 daemon bit (1), /* 18 user may login as daemon */ 7 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 7 42 2 no_warning bit (1), /* 20 no warning message */ 7 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 7 44* . in PDT: this user has an individual load control group */ 7 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 7 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 7 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 7 48 2 pad bit (12)) unaligned; 7 49 7 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 7 51 ("none", /* 0 */ 7 52 "administrator", /* 1 */ 7 53 "primary_line", /* 2 */ 7 54 "nobump", /* 3 */ 7 55 "guaranteed_login", /* 4 */ 7 56 "anonymous", /* 5 */ 7 57 "nopreempt", /* 6 */ 7 58 "nolist", /* 7 */ 7 59 "dialok", /* 8 */ 7 60 "multip", /* 9 */ 7 61 "bumping", /* 10 */ 7 62 "brief", /* 11 */ 7 63 "vinitproc", /* 12 */ 7 64 "vhomedir", /* 13 */ 7 65 "nostartup", /* 14 */ 7 66 "no_secondary", /* 15 */ 7 67 "no_prime", /* 16 */ 7 68 "no_eo", /* 17 */ 7 69 "daemon", /* 18 */ 7 70 "", /* 19 vdim OBSOLETE */ 7 71 "no_warning", /* 20 */ 7 72 "igroup", /* 21 */ 7 73 "save_pdir", /* 22 */ 7 74 "disconnect_ok", /* 23 */ 7 75 "save_on_disconnect"); /* 24 */ 7 76 7 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 7 78 ("null", /* 0 */ 7 79 "admin", /* 1 */ 7 80 "", "", /* 2 - 3 */ 7 81 "guar", /* 4 */ 7 82 "anon", /* 5 */ 7 83 "", "", /* 6 - 7 */ 7 84 "dial", /* 8 */ 7 85 "multi_login", /* 9 */ 7 86 "preempting", /* 10 */ 7 87 "", /* 11 */ 7 88 "v_process_overseer", /* 12 */ 7 89 "v_home_dir", /* 13 */ 7 90 "no_start_up", /* 14 */ 7 91 "no_sec", /* 15 */ 7 92 "no_primary", /* 16 */ 7 93 "no_edit_only", /* 17 */ 7 94 "op_login", /* 18 */ 7 95 "", /* 19 */ 7 96 "nowarn", /* 20 */ 7 97 "", "", "", /* 21 - 23 */ 7 98 "save"); /* 24 */ 7 99 7 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 7 101 options(constant) init("000000000010000000010000000000000000"b); 7 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 7 103 7 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 7 105 options(constant) init("000000000010000000010000000000000000"b); 7 106 /* PDT value for (brief, no_warning) is default */ 7 107 7 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 7 109 options(constant) init("000100000110010000010000000000000000"b); 7 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 7 111 8 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 8 2 8 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 8 4 /* */ 8 5 /* This include file describes the attributes of an absentee job. It is */ 8 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 8 7 /* and PIT.incl.pl1. */ 8 8 /* */ 8 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 8 10 8 11 /****^ HISTORY COMMENTS: 8 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 8 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 8 14* Separated abs_attributes from the request structure 8 15* (abs_message_format.incl.pl1) so that the identical structure could be 8 16* used in the ute structure (user_table_entry.incl.pl1). 8 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 8 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 8 19* Added ABS_ATTRIBUTE_NAMES array. 8 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 8 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 8 22* Added the no_start_up flag. SCP6367 8 23* END HISTORY COMMENTS */ 8 24 8 25 dcl 1 user_abs_attributes aligned based, 8 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 8 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 8 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 8 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 8 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 8 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 8 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 8 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 8 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 8 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 8 36 2 attributes_pad bit (26) unaligned; 8 37 8 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 8 39 "restartable", 8 40 "user_deferred_until_time", 8 41 "proxy", 8 42 "set_bit_cnt", 8 43 "time_in_gmt", 8 44 "user_deferred_indefinitely", 8 45 "secondary_ok", 8 46 "truncate_absout", 8 47 "restarted", 8 48 "no_start_up"); 8 49 8 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 8 51 7 112 7 113 7 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 392 393 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 9 2 9 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 4 /* */ 9 5 /* This include file requires that the user include */ 9 6 /* user_attributes.incl.pl1 as well. It also includes */ 9 7 /* abs_attributes.incl.pl1 itself. */ 9 8 /* */ 9 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 9 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 9 11 /* */ 9 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 13 9 14 /****^ HISTORY COMMENTS: 9 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 9 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 9 17* This comment for hcom. 9 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 9 19* anstbl.incl.pl1, and dutbl.incl.pl1. 9 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 9 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 9 22* 84-07-12 BIM added min_process_authorization 9 23* 84-12-31 Keith Loepere added pdir_dir_quota 9 24* 85-01-16 by E. Swenson to add ute.session_uid 9 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 9 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 9 27* Added fields for DSA login server support. 9 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 9 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 9 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 9 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 9 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 9 33* Added disconnection_rel_minutes. 9 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 9 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 36* Changed structure under ute.abs_attributes to use like structure in 9 37* abs_attributes.incl.pl1. This allows the same attributes to be used 9 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 9 39* file. 9 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 9 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 9 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 9 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 45* A) Global reorganization to locate things by type of data. 9 46* B) Eliminate ute.uflags.logged_in. 9 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 9 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 49* A) Reduced overlength person and project fields to proper length. 9 50* B) Adjusted dialed-console section to begin on even word boundary. 9 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 9 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 53* Add ute.line_type. 9 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 9 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 9 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 9 57* for the storage. SCP6367 9 58* END HISTORY COMMENTS */ 9 59 9 60 /* format: style4 */ 9 61 9 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 63 /* */ 9 64 /* Each of the named sections below defines a type of data. Typing comes */ 9 65 /* from data associated with the ute entry itself, with the person, with */ 9 66 /* login argument data, from the main user of the data (eg, dialup_, */ 9 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 9 68 /* and is an even number of words long. The total structure is 300 decimal */ 9 69 /* words long. */ 9 70 /* */ 9 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 9 72 9 73 9 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 9 75 9 76 dcl utep pointer automatic init (null); 9 77 9 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 9 79 9 80 /* Variables which give state of this entry */ 9 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 9 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 9 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 9 84 2 next_free fixed bin, /* points to previous free entry */ 9 85 9 86 /* Information user gave about person_id associated with this entry. */ 9 87 2 person char (24) unal, /* user's name */ 9 88 2 project char (12) unal, /* project of absentee user */ 9 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 9 90 2 tag_pad bit (27) unal, 9 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 9 92 2 login_flags, /* flags for login data */ 9 93 3 cpw bit (1) unal, /* flag for wish to change password */ 9 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 9 95 3 special_pw unal, /* dial or slave */ 9 96 4 dial_pw bit (1) unal, /* true if dial -user */ 9 97 4 slave_pw bit (1) unal, /* true if slave -user */ 9 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 9 99 3 cda bit (1) unal, /* flag to change default authorization */ 9 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 9 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 9 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 9 103 3 pw_pad bit (25) unal, /* spare parts */ 9 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 9 105 /* Must remain last in pw_flags so it does not */ 9 106 /* appear in PW_FLAG_VALUES array below. */ 9 107 2 generated_pw char (8) unal, /* user must type this as new password */ 9 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 9 109 2 process_authorization bit (72), /* access_authorization of this process */ 9 110 9 111 /* Information user gave about process associated with this entry. */ 9 112 2 outer_module char (32) unal, /* Name of console dim */ 9 113 2 home_dir char (64) unal, /* initial home directory */ 9 114 2 init_proc char (64) unal, /* name of login responder */ 9 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 9 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 9 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 9 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 9 119 2 initial_ring fixed bin, /* ring process will be started in */ 9 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 9 121 2 ln_args fixed bin, /* length of string containing arguments */ 9 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 9 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 9 124 9 125 /* Most of the following information is relevant only to absentee processes */ 9 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 9 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 9 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 9 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 9 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 9 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 9 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 9 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 9 134* (but see uflags.adjust_abs_q_no). */ 9 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 9 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 9 137 2 abs_flags, 9 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 9 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 9 140 3 abs_flags_pad bit (34) unal, 9 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 9 142 2 sender char (32) unal, /* name of RJE station that job is from */ 9 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 9 144 2 proxy_project char (9) unal, 9 145 2 proxy_project_pad char (3) unal, 9 146 2 abs_pad fixed bin, 9 147 9 148 /* Information about process actually created */ 9 149 2 proc_id bit (36), /* process id of absentee process */ 9 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 9 151 2 process_authorization_range (2) bit (72) aligned, 9 152 2 audit bit (36), /* audit flags for user */ 9 153 2 lot_size fixed bin, /* Size of linkage offset table */ 9 154 2 kst_size fixed bin, /* Size of process known segment table */ 9 155 2 cls_size fixed bin, /* Size of process combined linkage */ 9 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 9 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 9 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 9 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 9 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 9 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 9 162 2 pdir_pad fixed bin(17) unal, 9 163 2 process_pad fixed bin, 9 164 9 165 /* Information about primary terminal associated with this entry */ 9 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 9 167 2 terminal_type char (32) unaligned, /* terminal type */ 9 168 2 line_type fixed bin, /* line type */ 9 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 9 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 9 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 9 172 9 173 /* Variables useful for dialed terminals */ 9 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 9 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 9 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 9 177 2 dial_server_flags, 9 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 9 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 9 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 9 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 9 182 9 183 /* Information about usage/accounting. Device usage meters are in a 9 184* separate segment, "devtab" */ 9 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 9 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 9 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 9 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 9 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 9 190 2 last_update_time fixed bin (71), /* time of last account update */ 9 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 9 192 2 ndevices fixed bin, /* Count of attached devices */ 9 193 2 device_head fixed bin, /* Table index of head of device chain */ 9 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 9 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 9 196 2 rs_number_pad bit(30) unal, 9 197 2 usage_pad fixed bin, 9 198 9 199 /* Information for dialup_ (control variables). */ 9 200 2 event fixed bin (71), /* event associated with channel or user manager */ 9 201 2 uprojp ptr, /* ptr to user project sat entry */ 9 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 9 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 9 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 9 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 9 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 9 207 2 count fixed bin, /* counter for logins and dialups */ 9 208 2 n_processes fixed bin, /* number of processes created in this session */ 9 209 2 lock_value fixed bin, /* number of locks set for this entry */ 9 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 9 211 2 login_code char (8) unal, /* login command from LOGIN line */ 9 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 9 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 9 214 2 logout_type char (4) unal, /* type of logout */ 9 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 9 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 9 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 9 218 2 work_class fixed bin, /* work class used by priority scheduler */ 9 219 2 group char (8) unal, /* party group identifier */ 9 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 9 221 9 222 2 uflags, /* Miscellaneous flags */ 9 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 9 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 9 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 9 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 9 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 9 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 9 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 9 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 9 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 9 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 9 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 9 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 9 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 9 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 9 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 9 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 9 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 9 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 9 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 9 242 3 uflags_pad bit (17) unal, 9 243 9 244 /* Information used by load_ctl_ for the process */ 9 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 9 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 9 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 9 248 9 249 9 250 /* Information for login server */ 9 251 2 login_server_info, 9 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 9 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 9 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 9 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 9 256 3 process_id bit (36) aligned, /* process_id of login server */ 9 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 9 258 9 259 /* values for ute.process_type */ 9 260 9 261 dcl (PT_INTERACTIVE initial (1), 9 262 PT_ABSENTEE initial (2), 9 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 9 264 9 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 9 266 "INVALID-TYPE", 9 267 "interactive", 9 268 "absentee", 9 269 "daemon"); 9 270 9 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 9 272 "UNKNOWN-TABLE", 9 273 "answer_table", 9 274 "absentee_user_table", 9 275 "daemon_user_table"); 9 276 9 277 9 278 /* values for ute.pw_flags.mask_ctl */ 9 279 9 280 dcl (DO_MASK init ("00"b), 9 281 DONT_MASK init ("01"b), 9 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 9 283 9 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 9 285 "do_mask", "dont_mask", "derive_mask", ""); 9 286 9 287 9 288 /* names for ute.pw_flags */ 9 289 9 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 9 291 "cpw", 9 292 "generate_pw", 9 293 "dial_pw", 9 294 "slave_pw", 9 295 "cdp", 9 296 "cda", 9 297 "auth_given", 9 298 "noprint", 9 299 "operator"); 9 300 9 301 /* names for ute.uflags */ 9 302 9 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 9 304 "dont_call_init_admin", 9 305 "ip_given", 9 306 "ss_given", 9 307 "lvs_attached", 9 308 "send_initial_string", 9 309 "adjust_abs_q_no", 9 310 "foreground_secondary_ok", 9 311 "foreground_job", 9 312 "sus_sent", 9 313 "suspended", 9 314 "ignore_cpulimit", 9 315 "deferral_logged", 9 316 "save_if_disconnected", 9 317 "disconnected", 9 318 "disconnected_list", 9 319 "proc_create_ok", 9 320 "activity_can_unbump", 9 321 "fpe_causes_logout", 9 322 "user_specified_immediate"); 9 323 9 324 /* names for ute.abs_flags */ 9 325 9 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 9 327 "abs_run", 9 328 "notify"); 9 329 9 330 /* names of ute.dial_server_flags */ 9 331 9 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 9 333 "registered", 9 334 "privileged"); 9 335 9 336 /* values of ute.login_result */ 9 337 9 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 9 339 "logged in", 9 340 "login failed, hangup", 9 341 "login failed, try again"); 9 342 9 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 393 394 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 10 2 10 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 4 /* */ 10 5 /* This include file declares the header shared by the answer_table, */ 10 6 /* absentee_user_table and daemon_user_table include files. */ 10 7 /* */ 10 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 9 10 10 /****^ HISTORY COMMENTS: 10 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 10 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 10 13* Initial coding. 10 14* END HISTORY COMMENTS */ 10 15 10 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 10 17 2 header_version fixed bin, /* version of the header (3) */ 10 18 2 entry_version fixed bin, /* version of user table entries */ 10 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 10 20 2 header_length fixed bin, /* length of the header */ 10 21 2 max_size fixed bin, /* max number of entries in this table */ 10 22 2 current_size fixed bin, /* actual size of table (in entries) */ 10 23 2 number_free fixed bin, /* number of free entries in the table. */ 10 24 2 first_free fixed bin, /* index of first entry in the free list. */ 10 25 2 as_procid bit (36), /* process ID of user table manager process */ 10 26 2 ut_header_pad fixed bin; 10 27 10 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 394 395 396 end tty_lines; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/19/88 1536.7 tty_lines.pl1 >special_ldd>install>MR12.2-1061>tty_lines.pl1 388 1 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 389 2 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 2-10 3 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 390 4 08/06/87 0913.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 4-314 5 07/19/88 1524.1 fnp_types.incl.pl1 >special_ldd>install>MR12.2-1061>fnp_types.incl.pl1 391 6 08/29/75 0838.6 ttyp.incl.pl1 >ldd>include>ttyp.incl.pl1 392 7 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 7-112 8 07/14/88 2015.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 393 9 07/14/88 2015.0 user_table_entry.incl.pl1 >ldd>include>user_table_entry.incl.pl1 394 10 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.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. NL 000162 automatic char(1) initial packed unaligned dcl 114 set ref 114* addr builtin function dcl 91 ref 180 224 239 ansp 000172 automatic pointer initial dcl 1-53 set ref 1-53* answer_table_ptrs 000164 automatic pointer array dcl 128 set ref 137* 138 144* 145 148* 149 333 334 335 353 375 376 376* arg based char packed unaligned dcl 98 ref 160 162 173 181 182 208 argln 000116 automatic fixed bin(17,0) dcl 98 set ref 159* 160 162 166* 173 181 182 208 argp 000114 automatic pointer dcl 98 set ref 159* 160 162 166* 173 181 182 208 author based structure level 2 dcl 2-9 author_dcl based structure level 1 dcl 2-9 baud_rate 33(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 4-72 set ref 338* 342* 355* 360* c2 000117 automatic char(2) dcl 102 set ref 181* 186 c4 000120 automatic char(4) dcl 102 set ref 182* 199* 257 cdt based structure level 1 dcl 4-44 cdt_entry 1520 based structure array level 2 dcl 4-44 set ref 224 239 cdte based structure level 1 dcl 4-72 cdtep 000176 automatic pointer dcl 4-41 set ref 224* 225 227 228 239* 240 243 244 244 248 251 257 272 286 293 305 323 329 335 336 338 338 338 338 338 342 342 342 342 342 353 355 355 355 355 355 355 360 360 360 360 360 cdtp 000174 automatic pointer dcl 4-41 set ref 130* 131 223 224 231 231 238 239 378* channel_threads based structure level 1 dcl 4-249 char builtin function dcl 91 ref 181 clock_ 000046 constant entry external dcl 82 ref 218 code 000113 automatic fixed bin(35,0) dcl 93 set ref 130* 133* 137* 140* 144* 145* 148* 149* 159* 166* 167 169* 376* 378* collapse 000025 constant fixed bin(17,0) initial array dcl 117 ref 184 190 com_err_ 000054 constant entry external dcl 82 ref 133 140 145 149 169 comment 16 based char(48) level 2 dcl 4-72 set ref 338* 342* 355* 360* count 000157 automatic fixed bin(17,0) dcl 110 in procedure "tln" set ref 156* 158 count 75 based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 4-72 in procedure "tln" ref 272 305 cu_$arg_count 000034 constant entry external dcl 82 ref 156 cu_$arg_ptr 000032 constant entry external dcl 82 ref 159 166 current_size 36 based fixed bin(17,0) level 2 dcl 4-44 set ref 223 231* 238 current_terminal_type 101 based char(32) level 2 packed packed unaligned dcl 4-72 ref 228 244 244 cv_dec_ 000042 constant entry external dcl 82 ref 199 date_time_ 000044 constant entry external dcl 82 ref 218 dialed_to_procid 112 based bit(36) level 2 dcl 4-72 ref 329 336 fmtmax 000102 automatic fixed bin(17,0) dcl 93 set ref 153* 196* 327 fmtmin 000103 automatic fixed bin(17,0) dcl 93 set ref 154* 192* 327 fnpe based structure level 1 dcl 4-200 hbound builtin function dcl 91 ref 184 333 375 hcs_$initiate 000040 constant entry external dcl 82 ref 130 137 144 148 hcs_$terminate_noname 000036 constant entry external dcl 82 ref 376 378 hdrflag 000155 automatic bit(1) initial packed unaligned dcl 110 set ref 110* 179* 220 321 i 000111 automatic fixed bin(17,0) dcl 93 set ref 184* 186 189 190* 223* 224* 238* 239 267 317 317 366* 371 373 375* 376 376* in_use based fixed bin(17,0) level 2 dcl 4-72 ref 225 240 248 ioa_ 000050 constant entry external dcl 82 ref 231 338 342 355 360 371 373 ioa_$nnl 000052 constant entry external dcl 82 ref 317 isearch 000105 automatic fixed bin(17,0) dcl 93 set ref 152* 174* 189* 207* 249 islot 000106 automatic fixed bin(17,0) dcl 93 set ref 199* 263 267 274 280 286 293 307 j 000156 automatic fixed bin(17,0) dcl 110 set ref 158* 159* 165* 165 166* k2 based char(2) array level 2 packed packed unaligned dcl 125 ref 186 key based structure level 1 dcl 125 keyp 000100 automatic pointer dcl 93 set ref 180* 186 keys 000010 internal static char(22) initial dcl 120 set ref 180 lasti 000107 automatic fixed bin(17,0) dcl 93 set ref 235* 317 317 366* 371 373 length builtin function dcl 91 ref 227 228 323 324 low builtin function dcl 91 ref 244 max builtin function dcl 91 ref 227 228 327 max_name_len 000160 automatic fixed bin(17,0) dcl 113 set ref 222* 227* 227 231 323* 338* 342* 355* 360* max_type_len 000161 automatic fixed bin(17,0) dcl 113 set ref 222* 228* 228 231 324* 338* 342* 355* 360* min builtin function dcl 91 ref 327 mpxe based structure level 1 dcl 4-221 n_cdtes 41 based fixed bin(17,0) level 2 dcl 4-44 set ref 231* n_dialups 121 based fixed bin(17,0) level 2 dcl 4-72 ref 243 name 2 based char(32) level 2 dcl 4-72 set ref 227 251 323 338* 342* 355* 360* ndial 000110 automatic fixed bin(17,0) dcl 93 set ref 243* 244 272* 274 305* 307 338* 342* 355* 360* null builtin function dcl 91 ref 131 138 145 149 334 376 1-53 9-76 person 4 based char(24) level 2 packed packed unaligned dcl 9-78 set ref 338* 342* 355* proc_id 276 based bit(36) level 2 dcl 9-78 ref 336 process 111 based pointer level 2 packed packed unaligned dcl 4-72 ref 335 353 project 12 based char(12) level 2 packed packed unaligned dcl 9-78 set ref 338* 342* 355* ptr builtin function dcl 91 ref 335 353 rel builtin function dcl 91 ref 335 353 rtrim builtin function dcl 91 ref 227 228 323 324 scd 000016 internal static char(48) initial dcl 123 set ref 130* 137* 144* 148* 386* state 77 based fixed bin(17,0) level 2 dcl 4-72 set ref 293 338* 342* 355* 360* substr builtin function dcl 91 ref 182 t_active 000104 automatic fixed bin(17,0) dcl 93 set ref 248* 280 313 327 338* 342* 355* 360* table_idx 000112 automatic fixed bin(17,0) dcl 93 set ref 333* 334 335 338* test_dir parameter char packed unaligned dcl 384 ref 382 386 test_name 000145 automatic char(32) packed unaligned dcl 108 set ref 208* 251 test_type 000131 automatic char(32) dcl 102 set ref 173* 299 time_str 000141 automatic char(16) dcl 102 set ref 218* 231* tra_vec 74(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 4-72 set ref 286 338* 342* 355* 360* tty_id_code 337 based char(4) level 2 in structure "ute" packed packed unaligned dcl 9-78 in procedure "tln" set ref 338* tty_id_code 100 based char(4) level 2 in structure "cdte" dcl 4-72 in procedure "tln" set ref 257 355* tty_name 316 based char(32) level 2 packed packed unaligned dcl 9-78 set ref 342* type_str 000121 automatic char(32) dcl 102 set ref 244* 246* 299 324 338* 342* 355* 360* user_abs_attributes based structure level 1 dcl 8-25 user_attributes based structure level 1 dcl 7-21 ut_header based structure level 1 dcl 10-16 ute based structure level 1 dcl 9-78 utep 000200 automatic pointer initial dcl 9-76 set ref 335* 336 338 338 338 342 342 342 353* 355 355 9-76* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 8-38 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 9-326 ACTIVE internal static fixed bin(17,0) initial dcl 4-272 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 7-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 1-51 ANS_SERVICE internal static fixed bin(17,0) initial dcl 4-259 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 CDT_version internal static fixed bin(17,0) initial dcl 4-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 4-38 CHANNEL_DELETED internal static fixed bin(17,0) initial dcl 4-288 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 9-280 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 4-259 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 9-332 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 4-259 DN355 internal static fixed bin(17,0) initial dcl 5-19 DN6600 internal static fixed bin(17,0) initial dcl 5-19 DN6670 internal static fixed bin(17,0) initial dcl 5-19 DN7100 internal static fixed bin(17,0) initial dcl 5-19 DONT_MASK internal static bit(2) initial packed unaligned dcl 9-280 DO_MASK internal static bit(2) initial packed unaligned dcl 9-280 FNP_BOOT internal static fixed bin(17,0) initial dcl 4-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 4-298 FNP_FREE internal static fixed bin(17,0) initial dcl 4-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 4-298 FNP_UP internal static fixed bin(17,0) initial dcl 4-298 FTP_SERVICE internal static fixed bin(17,0) initial dcl 4-259 INACTIVE internal static fixed bin(17,0) initial dcl 4-272 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 9-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 9-284 MC_SERVICE internal static fixed bin(17,0) initial dcl 4-259 MPX_BOOT internal static fixed bin(17,0) initial dcl 4-306 MPX_DOWN internal static fixed bin(17,0) initial dcl 4-306 MPX_FREE internal static fixed bin(17,0) initial dcl 4-306 MPX_SERVICE internal static fixed bin(17,0) initial dcl 4-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 4-306 MPX_UP internal static fixed bin(17,0) initial dcl 4-306 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 4-280 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 9-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 9-261 PT_DAEMON internal static fixed bin(17,0) initial dcl 9-261 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 9-261 PW_FLAG_NAMES internal static varying char(12) initial array dcl 9-290 SLAVE_SERVICE internal static fixed bin(17,0) initial dcl 4-259 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 9-271 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 4-259 UFLAG_NAMES internal static varying char(24) initial array dcl 9-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 7-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 7-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 7-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 7-50 UTE_SIZE internal static fixed bin(17,0) initial dcl 1-120 UTE_version_4 internal static fixed bin(17,0) initial dcl 9-74 anstbl based structure level 1 dcl 1-55 fnp_models internal static fixed bin(17,0) initial array dcl 5-28 fnp_types internal static char(8) initial array packed unaligned dcl 5-25 fnpep automatic pointer dcl 4-41 generic_destination based char(32) packed unaligned dcl 4-195 max_tty_type internal static fixed bin(17,0) initial dcl 6-3 mpxep automatic pointer dcl 4-41 supported_fnp internal static bit(1) initial array packed unaligned dcl 5-31 tty_dev_type internal static char(8) initial array dcl 6-5 NAMES DECLARED BY EXPLICIT CONTEXT. end_i 002135 constant label dcl 368 ref 240 255 261 270 278 284 291 297 303 311 313 end_setup 001121 constant label dcl 215 ref 194 202 print_hlr 000020 constant label array(0:4) dcl 329 ref 327 329 351 print_it 001423 constant label dcl 317 ref 251 257 263 267 274 280 286 293 299 307 request 000004 constant label array(0:11) dcl 251 ref 249 setup 000000 constant label array(0:3) dcl 192 ref 190 tln 000244 constant entry external dcl 13 tln_test 002242 constant entry external dcl 382 tty_lines 000254 constant entry external dcl 13 upd_last 002132 constant label dcl 366 ref 345 358 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2420 2476 2266 2430 Length 3104 2266 56 371 131 22 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME tln 283 external procedure is an external procedure. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 keys tln 000016 scd tln STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME tln 000100 keyp tln 000102 fmtmax tln 000103 fmtmin tln 000104 t_active tln 000105 isearch tln 000106 islot tln 000107 lasti tln 000110 ndial tln 000111 i tln 000112 table_idx tln 000113 code tln 000114 argp tln 000116 argln tln 000117 c2 tln 000120 c4 tln 000121 type_str tln 000131 test_type tln 000141 time_str tln 000145 test_name tln 000155 hdrflag tln 000156 j tln 000157 count tln 000160 max_name_len tln 000161 max_type_len tln 000162 NL tln 000164 answer_table_ptrs tln 000172 ansp tln 000174 cdtp tln 000176 cdtep tln 000200 utep tln THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_char_temp call_ext_out_desc call_ext_out return_mac shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. clock_ com_err_ cu_$arg_count cu_$arg_ptr cv_dec_ date_time_ hcs_$initiate hcs_$terminate_noname ioa_ ioa_$nnl NO EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 110 000232 114 000234 1 53 000236 9 76 000240 13 000243 130 000262 131 000327 133 000333 134 000363 137 000364 138 000433 140 000437 141 000471 144 000472 145 000540 148 000575 149 000646 152 000703 153 000704 154 000706 156 000707 158 000716 159 000725 160 000742 162 000751 165 000755 166 000756 167 000773 169 000775 170 001017 173 001020 174 001025 175 001027 179 001030 180 001031 181 001034 182 001040 184 001045 186 001053 189 001061 190 001063 192 001065 194 001067 196 001070 199 001072 202 001107 207 001110 208 001112 211 001117 215 001121 218 001123 220 001147 222 001151 223 001153 224 001163 225 001167 227 001171 228 001206 230 001223 231 001225 235 001272 238 001274 239 001305 240 001311 243 001313 244 001315 246 001333 248 001337 249 001341 251 001343 255 001347 257 001350 261 001353 263 001354 267 001356 270 001360 272 001361 274 001364 278 001367 280 001370 284 001372 286 001373 291 001400 293 001401 297 001404 299 001405 303 001411 305 001412 307 001415 311 001420 313 001421 317 001423 321 001450 323 001452 324 001465 327 001477 329 001507 333 001512 334 001517 335 001525 336 001534 338 001537 342 001641 345 001737 348 001740 351 001742 353 001743 355 001751 358 002047 360 002050 366 002132 368 002135 371 002137 373 002153 375 002175 376 002203 377 002223 378 002225 380 002236 382 002237 386 002256 396 002265 ----------------------------------------------------------- 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