COMPILATION LISTING OF SEGMENT parse_login_line_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/20/88 1039.8 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 parse_login_line_: proc (lp, ll, a_utep, modestring, errarg, code); 14 15 /* PARSE_LOGIN_LINE_ - handle optional arguments on login command line. 16* 17* Modified 740807 by PG for -authorization and -change_default_authorization 18* Modified 740913 by PG for -generate_password 19* Modified 750429 by PG for new dial facility 20* Modified 750714 by THVV for -modes and -terminal_type 21* Modified 751024 by T. Casey for -subsystem. 22* Modified 760601 by PG to handle pw masks properly. 23* Modified 770613 by RSC for variable terminal types 24* Modified July 1979 by T. Casey for MR8.0 to add new login args for process preservation. 25* Modified December 1980 by E. N. Kittlitz for Person.Project. 26* Modified April 1981 by E. N. Kittlitz to zero code at check_for_ctl_arg 27* Modified July 1981 by E. N. Kittlitz 28* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 29* Modified January 1982, E. N. Kittlitz. login arguments, as_data_ conversion. 30* Modified July 1982, E. N. Kittlitz. Detect -po being too long for ute field. 31* Modified December 1983, C. Marker. Added -terminal_id (-tid). 32* Modified 84-04-03 BIM for -auth on dial or slave. 33* Modified 85-01-11 by E. Swenson for new A.S. logging 34**/ 35 36 37 /****^ HISTORY COMMENTS: 38* 1) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 39* audit(87-07-21,Brunelle), install(87-08-04,MR12.1-1055): 40* Correct coding standard violations. Remove reference 41* answer_table.incl.pl1 and user_table_entry.incl.pl1 42* END HISTORY COMMENTS */ 43 44 45 /* Parameters */ 46 47 dcl lp ptr, /* Pointer to input line buffer. */ 48 ll fixed bin, /* Length of line. */ 49 a_utep ptr, /* Pointer to user table entry. */ 50 modestring char (*), /* New mode string */ 51 errarg char (*) aligned, /* If an error occurs aligned, what went wrong. */ 52 code fixed bin (35); /* Error code. */ 53 54 /* Automatic */ 55 56 dcl arg char (32); /* Single argument to login. */ 57 dcl argstringx fixed bin; /* temporary for -arguments */ 58 dcl authorization bit (72) aligned; /* binary authorization */ 59 dcl authorization_string char (150); /* character representation of auth. */ 60 dcl char64 char (64); /* temporary */ 61 dcl device char (32); /* for -ttp */ 62 dcl entry_sw fixed bin; 63 dcl i fixed bin; /* temporary */ 64 dcl j fixed bin; /* Return from login_parse_: relative cursor */ 65 dcl jj fixed bin; /* Absolute cursor */ 66 dcl k fixed bin; /* Length of argument. */ 67 dcl prev_arg char (32); 68 dcl save_jj fixed bin; /* temp copy of j */ 69 dcl specified_type char (32); 70 dcl terminal_id char (4); /* for -terminal_id */ 71 72 /* Based */ 73 74 dcl argstring char (ute.ln_args) based (ute.args_ptr); 75 dcl ch (ll) char (1) unal based (lp); /* Image of buffer */ 76 dcl lengths (ute.arg_count) based (ute.arg_lengths_ptr) fixed bin; 77 dcl system_area area based (system_area_ptr); 78 79 /* Internal Static */ 80 81 dcl system_area_ptr ptr int static init(null); 82 83 /* Constants */ 84 85 dcl NORMAL fixed bin init (1) static options (constant); 86 dcl DIAL fixed bin init (2) static options (constant); 87 dcl SLAVE fixed bin init (3) static options (constant); 88 dcl ds_valid_option bit (57) static options (constant) 89 init ("110000111100000000000000001100000000000000000000000001101"b); 90 /* -bf, -npf, -pf, -lg, -auth, -authorization, -user */ 91 dcl (false bit (1) aligned init ("0"b), 92 lower_case char (26) init ("abcdefghijklmnopqrstuvwxyz"), 93 true bit (1) aligned init ("1"b), 94 upper_case char (26) init ("ABCDEFGHIJKLMNOPQRSTUVWXYZ") 95 ) internal static options (constant); 96 97 /* Entries */ 98 99 dcl convert_authorization_$from_string entry (bit (72) aligned, char (*), fixed bin (35)); 100 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 101 dcl get_system_free_area_ entry() returns(ptr); 102 dcl login_parse_ entry (ptr, fixed bin, char (*), fixed bin, fixed bin, fixed bin (35)); 103 dcl ttt_info_$terminal_data entry (char (*), fixed bin, fixed bin, ptr, fixed bin (35)); 104 105 /* External Static */ 106 107 dcl as_error_table_$bad_login_arg_msg fixed bin (35) ext static; 108 dcl as_error_table_$bad_terminal_id fixed bin (35) ext static; 109 dcl as_error_table_$dial_request_error fixed bin (35) ext static; 110 dcl as_error_table_$need_project_for_cdp fixed bin (35) ext static; 111 dcl as_error_table_$long_ip_ss_args fixed bin (35) ext static; 112 dcl as_error_table_$only_one_save_nosave fixed bin (35) ext static; 113 dcl as_error_table_$only_one_connect_etc fixed bin (35) ext static; 114 dcl as_error_table_$only_one_hold_no_hold fixed bin (35) ext static; 115 dcl as_error_table_$no_login_arg_msg fixed bin (35) ext static; 116 dcl as_error_table_$bad_login_arguments_string fixed bin (35) ext static; 117 dcl as_error_table_$need_authorization_for_cda fixed bin (35) external; 118 dcl error_table_$noarg fixed bin (35) ext static; 119 120 dcl 1 as_data_$login_args ext aligned, 121 2 n_login_args fixed bin (35), 122 2 pad fixed bin (35), 123 2 login_args (56) char (24); /* 56 control arguments at last count */ 124 125 dcl as_data_$max_user_ring fixed bin (35) ext; 126 127 /* Builtins */ 128 129 dcl (addr, after, before, hbound, index, length, null, substr, translate) builtin; 130 131 132 /* ================================================== */ 133 134 entry_sw = NORMAL; 135 code = 0; /* Assume no error will happen. */ 136 jj = 1; /* starting cursor */ 137 modestring = ""; 138 utep = a_utep; /* Copy argument */ 139 ute.mask_ctl = DERIVE_MASK; /* Default is to let TTYDIM tell us whether to mask */ 140 ute.login_flags.auth_given = "0"b; /* whether -auth was specified */ 141 ute.at.bumping = "1"b; /* Default is bumping ON, unless -np */ 142 cdtep = ute.channel; 143 if cdtep ^= null then do; 144 cdte.disconnected_proc_command, cdte.disconnected_proc_number = 0; 145 cdte.save_arg, cdte.nosave_arg, cdte.hold_arg, 146 cdte.no_hold_arg, cdte.immediate_arg = ""b; 147 end; 148 149 call login_parse_ (lp, ll, arg, k, j, code); /* Get person ID */ 150 if code ^= 0 then /* Personid must be given */ 151 return; 152 if index (arg, ".") ^= 0 then do; /* Person.Project */ 153 ute.person = before (arg, "."); /* just the person id */ 154 ute.project = after (arg, "."); 155 if ute.project = "" then go to badarg; /* Person. */ 156 end; 157 else ute.person = substr(arg,1,length(ute.person)); 158 /* just specified Person */ 159 160 jj = jj + j; /* Advance cursor. */ 161 call login_parse_ (addr (ch (jj)), ll - jj + 1, arg, k, j, code); /* Get 2nd argument */ 162 if code = error_table_$noarg then do; 163 code = 0; 164 go to exit; 165 end; 166 else if code ^= 0 then do; 167 errarg = arg; /* probably all blanks */ 168 return; 169 end; 170 if substr (arg, 1, 1) = "-" 171 then go to arglp; /* is control arg...go process it */ 172 else if ute.project ^= "" then go to badarg; /* already have a project */ 173 174 ute.project = substr(arg,1,length(ute.project)); /* is project */ 175 176 nxarg: jj = jj + j; /* Advance cursor. */ 177 call login_parse_ (addr (ch (jj)), ll - jj + 1, arg, k, j, code); /* Pick off next argument. */ 178 if code = error_table_$noarg then do; 179 code = 0; 180 go to exit; 181 end; 182 else if code ^= 0 then return; 183 check_for_ctl_arg: 184 if substr (arg, 1, 1) ^= "-" then go to badarg; /* Not a control arg */ 185 arglp: prev_arg = arg; /* save arg for possible later printing in error message */ 186 do k = 1 to as_data_$login_args.n_login_args while 187 (arg ^= as_data_$login_args.login_args (k)); end; /* Look up argument in table. */ 188 if k > as_data_$login_args.n_login_args then do; /* Fuss if unknown argument. */ 189 badarg: errarg = arg; /* Tell user what we barf on */ 190 badarg2: code = as_error_table_$bad_login_arg_msg; /* Return error to dialup_ */ 191 return; 192 end; 193 code = 0; /* might be residue from goto check_for_ctl_arg */ 194 195 if k > hbound (arg_handler, 1) then go to badarg; /* as_data_ is newer than we are! */ 196 if entry_sw ^= NORMAL then 197 if k > length (ds_valid_option) then go to badarg; /* no good for dial/slave */ 198 else if ^substr (ds_valid_option, k, 1) then go to badarg; /* no good for dial/slave */ 199 go to arg_handler (k); /* Dispatch on argument. */ 200 201 arg_handler (1): /* -bf */ 202 arg_handler (2): /* -brief */ 203 ute.at.brief = true; /* Set appropriate attribute flag. */ 204 ute.ur_at.brief = true; 205 go to nxarg; 206 207 arg_handler (3): /* -hd */ 208 arg_handler (4): /* -home_dir */ 209 jj = jj + j; /* Advance parse pointer. */ 210 call login_parse_ (addr (ch (jj)), ll - jj + 1, ute.home_dir, k, j, code); 211 lp_error: if code = error_table_$noarg then do; 212 noarg: code = as_error_table_$no_login_arg_msg; 213 errarg = prev_arg; /* arg that it was supposed to be after */ 214 return; 215 end; 216 else if code ^= 0 then return; 217 if substr (ute.home_dir, 1, 1) ^= ">" then do; 218 errarg = ute.home_dir; 219 go to badarg2; /* Must be absolute path. */ 220 end; 221 go to nxarg; 222 223 arg_handler (5): /* -po */ 224 arg_handler (6): /* -process_overseer */ 225 jj = jj + j; 226 call login_parse_ (addr (ch (jj)), ll - jj + 1, char64, i, j, code); 227 if code ^= 0 then go to lp_error; 228 if substr (char64, 1, 1) = "-" then go to noarg; /* missing operand */ 229 if i + ute.ss_len > 64 then do; /* if sum of both strings too long */ 230 code = as_error_table_$long_ip_ss_args; 231 errarg = char64; 232 return; /* let user try again */ 233 end; 234 if ute.uflags.ss_given then do; /* if -subsystem given already, save it */ 235 authorization_string = substr (ute.init_proc, ute.ip_len + 1, ute.ss_len); /* borrow a vacant string */ 236 237 end; 238 239 substr (ute.init_proc, 1, i) = substr (char64, 1, i); 240 ute.ip_len = i; 241 ute.uflags.ip_given = "1"b; 242 if ute.uflags.ss_given then /* if -ss was already given, put it back at end of string */ 243 substr (ute.init_proc, i + 1, ute.ss_len) = substr (authorization_string, 1, ute.ss_len); 244 go to nxarg; 245 246 arg_handler (7): /* -npf */ 247 arg_handler (8): /* -no_print_off */ 248 ute.mask_ctl = DO_MASK; /* User wants a pw mask */ 249 go to nxarg; 250 251 arg_handler (9): /* -pf */ 252 arg_handler (10): /* -print_off */ 253 ute.mask_ctl = DONT_MASK; /* User does not want a pw mask */ 254 go to nxarg; 255 256 arg_handler (11): /* -nw */ 257 arg_handler (12): /* -no_warning */ 258 ute.at.no_warning = true; 259 ute.ur_at.no_warning = true; 260 go to nxarg; 261 262 arg_handler (13): /* -np */ 263 arg_handler (14): /* -no_preempt */ 264 ute.at.bumping = false; 265 ute.ur_at.bumping = true; 266 go to nxarg; 267 268 arg_handler (15): /* -force */ 269 ute.at.guaranteed_login = true; 270 ute.ur_at.guaranteed_login = true; 271 go to nxarg; 272 273 arg_handler (16): /* -md */ 274 arg_handler (17): /* -mode */ 275 arg_handler (18): /* -modes */ 276 jj = jj + j; 277 call login_parse_ (addr (ch (jj)), ll - jj + 1, modestring, k, j, code); 278 if code ^= 0 then go to lp_error; 279 if substr (modestring, 1, 1) = "-" then go to noarg; /* missing operand */ 280 go to nxarg; 281 282 arg_handler (19): /* -ns */ 283 arg_handler (20): /* -no_start_up */ 284 ute.at.nostartup = true; 285 ute.ur_at.nostartup = true; 286 go to nxarg; 287 288 arg_handler (21): /* -cpw */ 289 arg_handler (22): /* -change_password */ 290 ute.login_flags.cpw = true; 291 go to nxarg; 292 293 arg_handler (23): /* -cdp */ 294 arg_handler (24): /* -change_default_project */ 295 ute.login_flags.cdp = true; 296 go to nxarg; 297 298 arg_handler (25): /* -om */ 299 arg_handler (26): /* -outer_module */ 300 jj = jj + j; 301 call login_parse_ (addr (ch (jj)), ll - jj + 1, char64, k, j, code); 302 if code ^= 0 then go to lp_error; 303 if substr (char64, 1, 1) = "-" then go to noarg; 304 ute.outer_module = substr(char64,1,length(ute.outer_module)); 305 go to nxarg; 306 307 arg_handler (27): /* -auth */ 308 arg_handler (28): /* -authorization */ 309 jj = jj + j; 310 call login_parse_ (addr (ch (jj)), ll - jj + 1, authorization_string, k, j, code); 311 if code ^= 0 then go to lp_error; 312 if substr (authorization_string, 1, 1) = "-" then go to noarg; /* missing operand */ 313 call convert_authorization_$from_string (authorization, (authorization_string), code); 314 if code ^= 0 315 then do; 316 errarg = ""; 317 return; 318 end; 319 320 ute.login_flags.auth_given = true; 321 ute.process_authorization = authorization; 322 go to nxarg; 323 324 arg_handler (29): /* -cda */ 325 arg_handler (30): /* -change_default_auth */ 326 ute.login_flags.cda = true; 327 go to nxarg; 328 329 arg_handler (31): /* -gpw */ 330 arg_handler (32): /* -generate_password */ 331 ute.login_flags.generate_pw = true; 332 go to arg_handler (22); /* -gpw implies -cpw */ 333 334 arg_handler (33): /* -ttp */ 335 arg_handler (34): /* -terminal_type */ 336 if cdtep = null then goto badarg; /* this arg only legal for interactive logins */ 337 jj = jj + j; 338 call login_parse_ (addr (ch (jj)), ll - jj + 1, device, k, j, code); 339 if code ^= 0 then go to lp_error; 340 specified_type = translate (device, upper_case, lower_case); /* get terminal type in all caps */ 341 call ttt_info_$terminal_data (specified_type, (cdte.cur_line_type), (cdte.baud_rate), null, code); 342 343 if code = 0 /* type is valid */ 344 then do; 345 cdte.current_terminal_type = specified_type; /* so dialup_ will know */ 346 ute.uflags.send_initial_string = "1"b; /* even if type didn't change */ 347 go to nxarg; 348 end; 349 350 errarg = device; 351 return; 352 353 arg_handler (58): /* -tid */ 354 arg_handler (59): /* -terminal_id */ 355 if cdtep = null then goto badarg; 356 if cdte.flags.ck_answerback then do; /* Can't set terminal_id in */ 357 code = as_error_table_$bad_terminal_id; /* check_answerback mode */ 358 errarg = arg; 359 return; 360 end; 361 jj = jj + j; 362 call login_parse_ (addr (ch (jj)), ll - jj + 1, terminal_id, k, j, code); 363 if code ^= 0 then go to lp_error; 364 if substr (terminal_id, 1, 1) = "-" then go to noarg; /* missing operand */ 365 cdte.tty_id_code, ute.tty_id_code = terminal_id; 366 go to nxarg; 367 368 arg_handler (37): /* -rg */ 369 arg_handler (38): /* -ring */ 370 jj = jj + j; 371 call login_parse_ (addr (ch (jj)), ll - jj + 1, arg, k, j, code); 372 if code ^= 0 then go to lp_error; 373 ute.initial_ring = cv_dec_check_ (arg, code); /* Convert ring to integer. */ 374 if code ^= 0 then go to badarg; /* Check value. */ 375 if ute.initial_ring <= 0 then go to badarg; /* Aw, c'mon. */ 376 if ute.initial_ring > as_data_$max_user_ring then go to badarg; 377 go to nxarg; 378 379 arg_handler (35): /* -ss */ 380 arg_handler (36): /* -subsystem */ 381 jj = jj + j; 382 call login_parse_ (addr (ch (jj)), ll - jj + 1, char64, i, j, code); 383 if code ^= 0 then go to lp_error; 384 if substr (char64, 1, 1) = "-" then go to noarg; /* missing operand */ 385 if i + ute.ip_len > 64 then do; /* -ss arg and -po arg add up to > 64 chars */ 386 code = as_error_table_$long_ip_ss_args; 387 errarg = char64; 388 return; /* let user try again */ 389 end; 390 substr (ute.init_proc, ute.ip_len + 1, i) = substr (char64, 1, i); /* copy subsystem in after initproc */ 391 ute.ss_len = i; /* remember its length */ 392 ute.uflags.ss_given = "1"b; /* and remember that it was given */ 393 goto nxarg; 394 395 arg_handler (39): /* -save_on_disconnect */ 396 arg_handler (40): /* -save */ 397 if cdtep = null then goto badarg; /* this arg only legal for interactive logins */ 398 if cdte.nosave_arg then do; 399 only_one_save_nosave: /* complain that both -save and -nosave args were given */ 400 code = as_error_table_$only_one_save_nosave; 401 errarg = arg; /* return the offending argument */ 402 return; 403 end; 404 cdte.save_arg = "1"b; 405 goto nxarg; 406 407 arg_handler (41): /* -no_save_on_disconnect */ 408 arg_handler (42): /* -nosave */ 409 if cdtep = null then goto badarg; /* this arg only legal for interactive logins */ 410 if cdte.save_arg then goto only_one_save_nosave; 411 cdte.nosave_arg = "1"b; 412 goto nxarg; 413 414 arg_handler (43): /* -list */ 415 arg_handler (44): /* -create */ 416 arg_handler (45): /* -connect */ 417 arg_handler (46): /* -new_proc */ 418 arg_handler (47): /* -destroy */ 419 if cdtep = null then goto badarg; /* this arg only legal for interactive logins */ 420 if cdte.disconnected_proc_command > 0 then do; /* if one of these args already given, complain */ 421 code = as_error_table_$only_one_connect_etc; 422 errarg = arg; 423 return; 424 end; 425 cdte.disconnected_proc_command = k - 42; /* 43 thru 47 -> 1 thru 5 */ 426 if k > 44 then do; /* if -connect, -new_proc, or -destroy, check for {N} */ 427 jj = jj + j; /* advance cursor */ 428 call login_parse_ (addr (ch (jj)), ll - jj + 1, arg, k, j, code); /* pick off next arg */ 429 if code = error_table_$noarg then do; 430 code = 0; 431 goto exit; /* if no arg there, we're all done */ 432 end; 433 else if code ^= 0 then go to lp_error; 434 cdte.disconnected_proc_number = cv_dec_check_ (arg, code); 435 if code ^= 0 then goto check_for_ctl_arg; /* if not a number, go see if it's a ctl arg */ 436 end; 437 goto nxarg; 438 439 arg_handler (48): /* -hold */ 440 arg_handler (49): /* -no_hold */ 441 if cdtep = null then goto badarg; /* only legal for interactive logins */ 442 if (cdte.hold_arg & k = 49) | (cdte.no_hold_arg & k = 48) then do; 443 code = as_error_table_$only_one_hold_no_hold; 444 errarg = arg; 445 return; 446 end; 447 if k = 48 then cdte.hold_arg = "1"b; 448 else cdte.no_hold_arg = "1"b; 449 go to nxarg; 450 451 arg_handler (50): /* -im */ 452 arg_handler (51): /* -immediate */ 453 if cdtep = null then goto badarg; /* only valid for interactive logins */ 454 cdte.immediate_arg = "1"b; 455 go to nxarg; 456 457 arg_handler (52): /* -ag */ 458 arg_handler (53): /* -arguments */ 459 460 save_jj, jj = jj + j; /* Advance cursor. */ 461 ute.arg_count = 0; /* set up to count remaining args */ 462 ute.ln_args = 0; /* total lengths of arguments */ 463 do while ("1"b); /* first pass - how many are there? */ 464 call login_parse_ (addr (ch (jj)), ll - jj + 1, arg, k, j, code); 465 if code = error_table_$noarg then go to got_all_args; 466 else if code ^= 0 then go to lp_error; 467 ute.ln_args = ute.ln_args + k; 468 ute.arg_count = ute.arg_count + 1; 469 jj = jj + j; 470 end; 471 472 got_all_args: 473 if system_area_ptr = null then 474 system_area_ptr = get_system_free_area_ (); 475 allocate lengths in (system_area); /* array of lengths */ 476 allocate argstring in (system_area); /* string of all arguments */ 477 if ute.ln_args <= 0 then do; /* All args were "" */ 478 lengths (*) = 0; 479 return; 480 end; 481 jj = save_jj; /* back to where we were */ 482 argstringx = 1; /* how many characters so far, this time */ 483 do i = 1 to ute.arg_count; 484 begin; 485 dcl ARG char (ute.ln_args - argstringx + 1) based (addr (substr (argstring, argstringx))); 486 call login_parse_ (addr (ch (jj)), ll - jj + 1, ARG, k, j, code); 487 if code ^= 0 then do; /* impossible! */ 488 bad_ag_string: code = as_error_table_$bad_login_arguments_string; 489 errarg = ""; 490 return; 491 end; 492 lengths (i) = k; /* remember how long it was */ 493 jj = jj + j; /* Advance cursor. */ 494 argstringx = argstringx + k; /* Diminish argstring */ 495 if argstringx > ute.ln_args + 1 then /* impossible! */ 496 go to bad_ag_string; 497 end; 498 end; 499 go to exit; 500 501 arg_handler (54): /* -lg */ 502 arg_handler (55): /* -long */ 503 ute.at.brief = false; /* Set appropriate attribute flag */ 504 ute.ur_at.brief = true; 505 go to nxarg; 506 507 arg_handler (56): /* -warning */ 508 ute.at.no_warning = false; 509 ute.ur_at.no_warning = true; 510 go to nxarg; 511 512 arg_handler (57): /* -user */ 513 if entry_sw = NORMAL then go to badarg; /* only slave and dial */ 514 jj = jj + j; 515 call login_parse_ (addr (ch (jj)), ll - jj + 1, arg, i, j, code); 516 if code ^= 0 then go to lp_error; 517 if substr (arg, 1, 1) = "-" then go to noarg; /* missing operand */ 518 if index (arg, ".") ^= 0 then do; /* Person.Project */ 519 ute.person = before (arg, "."); /* just the person id */ 520 ute.project = after (arg, "."); 521 if ute.project = "" then go to badarg; /* Person. */ 522 end; 523 else ute.person = substr(arg,1,length(ute.person)); 524 /* just specified Person */ 525 go to nxarg; 526 527 /* Come here when we run out of arguments. */ 528 529 exit: 530 if entry_sw = NORMAL then do; 531 if ute.login_flags.cdp then 532 if ute.project = "" then do; /* if changing dft proj, must specify */ 533 code = as_error_table_$need_project_for_cdp; /* Mistake. */ 534 errarg = ""; 535 return; 536 end; 537 538 if ute.login_flags.cda 539 then if ^ute.login_flags.auth_given 540 then do; 541 code = as_error_table_$need_authorization_for_cda; 542 errarg = ""; 543 return; 544 end; 545 546 if cdtep ^= null then 547 if cdte.immediate_arg then 548 if cdte.disconnected_proc_command ^= 4 & /* -new_proc */ 549 cdte.disconnected_proc_command ^= 5 /* -destroy */ 550 then do; 551 errarg = "-immediate"; 552 go to badarg2; 553 end; 554 end; /* entry_sw = NORMAL */ 555 return; 556 557 558 dial_line: entry (lp, ll, a_utep, errarg, code); 559 560 entry_sw = DIAL; 561 code = 0; /* Assume no error will happen. */ 562 arg, prev_arg, errarg = ""; 563 utep = a_utep; 564 cdtep = ute.channel; 565 if cdtep ^= null then do; 566 cdte.disconnected_proc_command, cdte.disconnected_proc_number = 0; 567 cdte.save_arg, cdte.nosave_arg, cdte.hold_arg, 568 cdte.no_hold_arg, cdte.immediate_arg = ""b; 569 end; 570 jj = 1; /* start cursor */ 571 ute.login_flags.dial_pw = "1"b; /* dial, and nothing else */ 572 ute.login_code = "dial"; /* for messages which use this */ 573 ute.mask_ctl = DERIVE_MASK; /* Default is to let TTYDIM tell us whether to mask */ 574 call login_parse_ (lp, ll, ute.dial_qualifier, k, j, code); /* read the dial qualifier */ 575 if code ^= 0 then /* dial name must be given */ 576 return; 577 if index (ute.dial_qualifier, "-") = 1 then do; 578 code = as_error_table_$dial_request_error; /* what about that dial name? */ 579 errarg = "dial qualifier must precede any control arguments."; 580 return; 581 end; 582 jj = jj + j; /* Advance cursor. */ 583 call login_parse_ (addr (ch (jj)), ll - jj + 1, arg, k, j, code); /* Get 2nd argument */ 584 if code ^= 0 then do; 585 if code = error_table_$noarg then /* just a registered server name */ 586 code = 0; 587 else errarg = arg; /* some other error */ 588 return; 589 end; 590 if index (arg, "-") ^= 1 then do; /* not a control arg */ 591 ute.sender = arg; /* otherwise, its "dial x Person.Project" */ 592 go to nxarg; /* now, any control args */ 593 end; 594 else go to arglp; /* start on control args */ 595 596 597 slave_line: entry (lp, ll, a_utep, errarg, code); 598 599 entry_sw = SLAVE; 600 code = 0; /* Assume no error will happen. */ 601 utep = a_utep; 602 cdtep = ute.channel; 603 if cdtep ^= null then do; 604 cdte.disconnected_proc_command, cdte.disconnected_proc_number = 0; 605 cdte.save_arg, cdte.nosave_arg, cdte.hold_arg, 606 cdte.no_hold_arg, cdte.immediate_arg = ""b; 607 end; 608 errarg, prev_arg, arg = ""; 609 ute.login_flags.slave_pw = "1"b; /* slave, and nothing else */ 610 ute.login_code = "slave"; /* for messages which use this */ 611 ute.mask_ctl = DERIVE_MASK; /* Default is to let TTYDIM tell us whether to mask */ 612 j = 0; 613 jj = 1; 614 go to nxarg; 615 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 1 2 1 3 /* This include file declares the "author" substructure 1 4* in a form suitable for using the PL/I "like" attribute. 1 5* 1 6* Written 750304 by PG 1 7**/ 1 8 1 9 dcl 1 author_dcl aligned based, 2 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 2 2 2 3 /* the "author" items must always be the first ones in the table. The 2 4* module which moves the converted table to the System Control process 2 5* fills in these data items and assumes them to be at the head of the segment 2 6* regardless of the specific table's actual declaration. The variables 2 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 2 8* respectively. For tables installed in multiple processes, these 2 9* are to be used to lock out multiple installations. */ 2 10 2 11 /* Lock should be used as a modification lock. Since, in general, 2 12* entries may not be moved in system tables, even by installations, 2 13* it is sufficient for only installers and programs that change threads 2 14* to set or respect the lock. Simply updating data in an entry 2 15* requires no such protection. 2 16* 2 17* Last_install_time is used by readers of system tables to detect 2 18* installations or other serious modifications. By checking it before 2 19* and after copying a block of data, they can be protected against 2 20* modifications. 2 21* 2 22* Modules that set the lock should save proc_group_id, and then 2 23* put their group id there for the time they hold the lock. 2 24* if they do not actually install the, they should restore the group id. 2 25**/ 2 26 2 27 2 author aligned, /* validation data about table's author */ 2 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 2 29 3 lock bit (36), /* installation lock */ 2 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 2 31 3 update_authorization bit (1) unal, /* update only authorizations */ 2 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 2 33 3 pad bit (33) unaligned, 2 34 3 last_install_time fixed bin (71), 2 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 2 36 3 w_dir char (64), /* author's working directory */ 2 37 2 38 /* END INCLUDE FILE author.incl.pl1 */ 1 10 1 11 2 pad; 1 12 1 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 615 616 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 3 2 3 3 /* format: style3,idind25,indcomtxt */ 3 4 3 5 /* Channel Definition Table. 3 6* This table lists all of the hardware channels (ports) connected 3 7* to the system, and maintains the attributes of each one. 3 8* 3 9* PG 741230 3 10* Modified by Mike Grady 5/6/76 to add FNP info. 3 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 3 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 3 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 3 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 3 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 3 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 3 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 3 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 3 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 3 20* Modified August 1982 by E. N. Kittlitz for check_acs. 3 21* Modified January 1983 by Keith Loepere for generic_destination. 3 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 3 23* Modified 831216 by E. N. Kittlitz for required_access_class. 3 24* Modified 84-04-01 by BIM to finish communications AIM: 3 25* access class ranges, 3 26* access_control flags. 3 27**/ 3 28 3 29 3 30 /****^ HISTORY COMMENTS: 3 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 3 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 3 33* Add support for answering service to use IOCBs when tty_ cannot be 3 34* used to service login channels. 3 35* END HISTORY COMMENTS */ 3 36 3 37 3 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 3 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 3 40 3 41 dcl (cdtp, cdtep, fnpep, mpxep) 3 42 ptr; 3 43 3 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 3 45 2 author like author_dcl.author, /* standard header */ 3 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 3 47 2 current_size fixed bin, /* number of last cdte. */ 3 48 2 version fixed bin, 3 49 2 freep fixed bin, /* chain of free cdte's */ 3 50 2 n_cdtes fixed bin, /* number of used cdte's */ 3 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 3 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 3 53 2 cpu_in_dialup fixed bin (71), /* .. */ 3 54 2 pf_in_dialup fixed bin, /* .. */ 3 55 2 pp_in_dialup fixed bin, /* .. */ 3 56 2 entries_to_dialup fixed bin, /* .. */ 3 57 2 flags, 3 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 3 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 3 60 3 mux_mgr_system_init 3 61 bit (1) unal, /* mux mgr has loaded top-levels */ 3 62 3 pad1 bit (33) unal, 3 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 3 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 3 65 2 threads aligned like channel_threads, 3 66 /* root of non-fnp-top-level-multiplexers */ 3 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 3 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 3 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 3 70 3 71 3 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 3 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 3 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 3 75 2 pad1 bit (36) aligned, 3 76 2 name char (32), /* ASCII name of channel */ 3 77 2 access_class (2) bit (72) aligned, /* access class range */ 3 78 2 comment char (48), /* printable message about channel */ 3 79 2 charge_type fixed bin (17) unal, /* billing group */ 3 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 3 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 3 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 3 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 3 84 2 pad2 bit (18) unaligned, 3 85 2 answerback char (8), /* answerback string expected */ 3 86 2 initial_terminal_type 3 87 char (32) unal, /* as specified in the CMF */ 3 88 2 mpx_data unal, /* data used only for multiplexed channels */ 3 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 3 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 3 91 2 flags, 3 92 ( 3 attributes, 3 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 3 94 4 audit_access_error 3 95 bit (1), /* ON means ck that person auth is inside access class range */ 3 96 /* this implies that the access_class describes a range of 3 97* legitimate user auths. */ 3 98 4 hardwired bit (1), /* ON means it is */ 3 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 3 100 4 dont_read_answerback 3 101 bit (1), /* ON means don't try to read answerback */ 3 102 4 pada bit (4), 3 103 3 access_control unaligned, /* As below */ 3 104 4 dial_out bit (1), /* dialing user must be on ACS */ 3 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 3 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 3 107 4 login bit (1), /* logging in user must be on acs */ 3 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 3 109 4 pado bit (3), 3 110 3 options, 3 111 4 execute_initial_command 3 112 bit (1), /* ON means to do it */ 3 113 4 attached_by_operator 3 114 bit (1), /* ON means temporary attachment. */ 3 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 3 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 3 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 3 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 3 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 3 120 4 generic_destination_present 3 121 bit (1), /* ON means that the initial_command field contains 3 122* a generic destination to match on dial_out or priv attach */ 3 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 3 124 4 pado bit (9) 3 125 ) unaligned, 3 126 2 initial_command char (64), /* pseudo first input line */ 3 127 /**** The following variables represent dynamic control info, and 3 128* are used mostly by dialup_ and asu_ */ 3 129 2 event fixed bin (71), /* event call channel for channel events */ 3 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 3 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 3 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 3 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 3 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 3 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 3 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 3 137 /* 0 = dialup_, 1 = mc_tty_ */ 3 138 3 save_arg bit (1) unal, /* -save login arg given */ 3 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 3 140 3 detach_after_hangup 3 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 3 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 3 143 3 hold_arg bit (1) unal, /* -hold arg given */ 3 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 3 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 3 146 3 current_access_class_valid 3 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 3 148 3 pad bit (7) unal, 3 149 2 twx fixed bin, /* channel device index */ 3 150 2 state fixed bin, /* channel state */ 3 151 2 tty_id_code char (4), /* channel id (answerback) */ 3 152 2 current_terminal_type 3 153 char (32) unal, /* most recently-set terminal type */ 3 154 2 process ptr unal, /* ptr to ATE owning this channel */ 3 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 3 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 3 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 3 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 3 159* We do not yet define multi-class connections, but we will someday. */ 3 160 2 disconnected_ate_index 3 161 fixed bin (17) unal, /* index of ate of disconnected process */ 3 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 3 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 3 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 3 165 2 pad3 bit (14) unaligned, 3 166 /**** The following variables are kept for metering purposes. */ 3 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 3 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 3 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 3 170 2 dialup_time fixed bin (71), /* time of present dialup */ 3 171 2 disconnected_proc_command 3 172 fixed bin (12) unsigned unal, 3 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 3 174 2 disconnected_proc_number 3 175 fixed bin (12) unsigned unal, 3 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 3 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 3 178 /* number of disconnected processes that user has */ 3 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 3 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 3 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 3 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 3 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 3 184 /**** had the space. */ 3 185 2 threads aligned like channel_threads, 3 186 /**** The use name is that of the user who gave the dial or slave ****/ 3 187 /**** preaccess request. ****/ 3 188 2 user_name unaligned, 3 189 3 person char (20) unaligned, 3 190 3 project char (9) unaligned, 3 191 3 pad char (3) unaligned, /* no tag */ 3 192 2 iocbp ptr unaligned; /* 104 words */ 3 193 3 194 3 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 3 196* overlays initial_command field for slave and autocall lines */ 3 197 3 198 3 199 3 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 3 201 /* These variables are filled in from the CMF */ 3 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 3 203 2 memory fixed bin, /* amount of memory on this FNP */ 3 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 3 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 3 206 2 service_type fixed bin, /* service type */ 3 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 3 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 3 209 /**** The following are used during system operation to remember the state of the FNP */ 3 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 3 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 3 212 2 mpxe like mpxe, /* standard multiplexer data */ 3 213 2 threads aligned like channel_threads, 3 214 /* same mpx threads as channel */ 3 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 3 216 3 217 /* This structure describes the data necessary to control a multiplexer. 3 218* For FNP's., a copy appears in the fnpe. For communications lines, it 3 219* overlays the initial_command field in the cdte. */ 3 220 3 221 dcl 1 mpxe based (mpxep) aligned, 3 222 2 state fixed bin, /* current state, up, down, loading */ 3 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 3 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 3 225 2 n_bootloads fixed bin, /* count of load attempts */ 3 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 3 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 3 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 3 229 2 time_load_start fixed bin (71), /* time current load started */ 3 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 3 231 2 flags unal, 3 232 3 go bit (1), /* start MPX after it loads */ 3 233 3 listening bit (1), /* listen has been done on subchannels */ 3 234 3 check bit (1), /* loaded with check option */ 3 235 3 retry_load bit (1), /* reload if load fails */ 3 236 3 pad1 bit (32), 3 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 3 238 3 239 /* These threads define the tree of multiplexers in the cdt. */ 3 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 3 241 /* by alpha sort order of the channel name. Daughter points to the */ 3 242 /* first child of this node, if any. Daughter count is the number */ 3 243 /* of children, as a consistency check. Mother is a back pointer to */ 3 244 /* the parent, present in all the children, not just the first. */ 3 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 3 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 3 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 3 248 3 249 dcl 1 channel_threads aligned based, 3 250 2 next_sister fixed bin unaligned, 3 251 2 prev_sister fixed bin unaligned, 3 252 2 daughter fixed bin unaligned, 3 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 3 254 2 pad bit (18) unaligned, 3 255 2 daughter_count fixed bin unaligned; 3 256 3 257 /* Values for cdte.service_type field */ 3 258 3 259 dcl ( 3 260 ANS_SERVICE init (1), /* login or dial */ 3 261 FTP_SERVICE init (2), /* file transfer service */ 3 262 MC_SERVICE init (3), /* message coordinator */ 3 263 SLAVE_SERVICE init (4), /* special channel */ 3 264 DIAL_SERVICE init (5), /* transient state */ 3 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 3 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 3 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 3 268 ) fixed bin internal static options (constant); 3 269 3 270 /* Values for service type in both cdte and fnpe */ 3 271 3 272 dcl ( 3 273 INACTIVE init (7), /* not to be used, even though configured */ 3 274 ACTIVE init (1) 3 275 ) /* for FNP only, configured and to be used */ 3 276 fixed bin internal static options (constant); 3 277 3 278 /* Value for both cdte.in_use and fnpe.state */ 3 279 3 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 3 281 /* was not configured at Multics bootload time */ 3 282 3 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 3 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 3 285 3 286 /* Value for cdte.in_use */ 3 287 3 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 3 289 /* channel deleted by CDT installation */ 3 290 3 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 3 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 3 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 3 294 3 295 3 296 /* Values for mpxe.state field */ 3 297 3 298 dcl ( 3 299 FNP_FREE init (0), /* this fnpe is not used */ 3 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 3 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 3 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 3 303 FNP_UP init (4) /* FNP is up and running fine */ 3 304 ) fixed bin internal static options (constant); 3 305 3 306 dcl ( 3 307 MPX_FREE init (0), /* this mpxe is not used */ 3 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 3 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 3 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 3 311 MPX_UP init (4) /* MPX is up and running fine */ 3 312 ) fixed bin internal static options (constant); 3 313 4 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 4 2 4 3 4 4 4 5 /****^ HISTORY COMMENTS: 4 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 4 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 4 8* Add data needed for the uncp multiplexer (DSA gateway) interface 4 9* implementation. 4 10* END HISTORY COMMENTS */ 4 11 4 12 4 13 /* Values for fnpe.type field */ 4 14 /* 4 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 4 16* Added in March 1982 - DN7100.fd. 4 17**/ 4 18 4 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 4 20 DN6600 init (2), /* a DataNet 6600 FNP */ 4 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 4 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 4 23 ) fixed bin internal static options (constant); 4 24 4 25 dcl fnp_types (4) char (8) int static options (constant) 4 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 4 27 4 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 4 29 init (355, 6600, 6670, 7100); 4 30 4 31 dcl supported_fnp (4) bit (1) int static options (constant) 4 32 init ("0"b, "0"b, "1"b, "1"b); 4 33 4 34 4 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 3 314 3 315 3 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 616 617 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 5 2 5 3 5 4 /****^ HISTORY COMMENTS: 5 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 5 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 5 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 5 8* attribute switches. 5 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 5 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 5 12* be deleted. 5 13* B) Add constants identifying attributes that can be changed by user at 5 14* login, etc. 5 15* END HISTORY COMMENTS */ 5 16 5 17 5 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 5 19 5 20 /* format: style4 */ 5 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 5 22 (2 administrator bit (1), /* 1 system administrator privileges */ 5 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 5 24 2 nobump bit (1), /* 2 user cannot be bumped */ 5 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 5 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 5 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 5 28* . of same project (distinct from "nobump") */ 5 29 2 nolist bit (1), /* 7 don't list user on "who" */ 5 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 5 31 2 multip bit (1), /* 9 user may have several processes */ 5 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 5 33 2 brief bit (1), /* 11 no login or logout message */ 5 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 5 35 2 vhomedir bit (1), /* 13 user may change homedir */ 5 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 5 37 2 sb_ok bit (1), /* 15 user may be standby */ 5 38 2 pm_ok bit (1), /* 16 user may be primary */ 5 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 5 40 2 daemon bit (1), /* 18 user may login as daemon */ 5 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 5 42 2 no_warning bit (1), /* 20 no warning message */ 5 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 5 44* . in PDT: this user has an individual load control group */ 5 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 5 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 5 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 5 48 2 pad bit (12)) unaligned; 5 49 5 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 5 51 ("none", /* 0 */ 5 52 "administrator", /* 1 */ 5 53 "primary_line", /* 2 */ 5 54 "nobump", /* 3 */ 5 55 "guaranteed_login", /* 4 */ 5 56 "anonymous", /* 5 */ 5 57 "nopreempt", /* 6 */ 5 58 "nolist", /* 7 */ 5 59 "dialok", /* 8 */ 5 60 "multip", /* 9 */ 5 61 "bumping", /* 10 */ 5 62 "brief", /* 11 */ 5 63 "vinitproc", /* 12 */ 5 64 "vhomedir", /* 13 */ 5 65 "nostartup", /* 14 */ 5 66 "no_secondary", /* 15 */ 5 67 "no_prime", /* 16 */ 5 68 "no_eo", /* 17 */ 5 69 "daemon", /* 18 */ 5 70 "", /* 19 vdim OBSOLETE */ 5 71 "no_warning", /* 20 */ 5 72 "igroup", /* 21 */ 5 73 "save_pdir", /* 22 */ 5 74 "disconnect_ok", /* 23 */ 5 75 "save_on_disconnect"); /* 24 */ 5 76 5 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 5 78 ("null", /* 0 */ 5 79 "admin", /* 1 */ 5 80 "", "", /* 2 - 3 */ 5 81 "guar", /* 4 */ 5 82 "anon", /* 5 */ 5 83 "", "", /* 6 - 7 */ 5 84 "dial", /* 8 */ 5 85 "multi_login", /* 9 */ 5 86 "preempting", /* 10 */ 5 87 "", /* 11 */ 5 88 "v_process_overseer", /* 12 */ 5 89 "v_home_dir", /* 13 */ 5 90 "no_start_up", /* 14 */ 5 91 "no_sec", /* 15 */ 5 92 "no_primary", /* 16 */ 5 93 "no_edit_only", /* 17 */ 5 94 "op_login", /* 18 */ 5 95 "", /* 19 */ 5 96 "nowarn", /* 20 */ 5 97 "", "", "", /* 21 - 23 */ 5 98 "save"); /* 24 */ 5 99 5 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 5 101 options(constant) init("000000000010000000010000000000000000"b); 5 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 5 103 5 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 5 105 options(constant) init("000000000010000000010000000000000000"b); 5 106 /* PDT value for (brief, no_warning) is default */ 5 107 5 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 5 109 options(constant) init("000100000110010000010000000000000000"b); 5 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 5 111 6 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 6 2 6 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 4 /* */ 6 5 /* This include file describes the attributes of an absentee job. It is */ 6 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 6 7 /* and PIT.incl.pl1. */ 6 8 /* */ 6 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 10 6 11 /****^ HISTORY COMMENTS: 6 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 6 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 14* Separated abs_attributes from the request structure 6 15* (abs_message_format.incl.pl1) so that the identical structure could be 6 16* used in the ute structure (user_table_entry.incl.pl1). 6 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 6 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 19* Added ABS_ATTRIBUTE_NAMES array. 6 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 6 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 6 22* Added the no_start_up flag. SCP6367 6 23* END HISTORY COMMENTS */ 6 24 6 25 dcl 1 user_abs_attributes aligned based, 6 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 6 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 6 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 6 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 6 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 6 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 6 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 6 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 6 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 6 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 6 36 2 attributes_pad bit (26) unaligned; 6 37 6 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 6 39 "restartable", 6 40 "user_deferred_until_time", 6 41 "proxy", 6 42 "set_bit_cnt", 6 43 "time_in_gmt", 6 44 "user_deferred_indefinitely", 6 45 "secondary_ok", 6 46 "truncate_absout", 6 47 "restarted", 6 48 "no_start_up"); 6 49 6 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 6 51 5 112 5 113 5 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 617 618 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 7 2 7 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 7 4 /* */ 7 5 /* This include file requires that the user include */ 7 6 /* user_attributes.incl.pl1 as well. It also includes */ 7 7 /* abs_attributes.incl.pl1 itself. */ 7 8 /* */ 7 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 7 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 7 11 /* */ 7 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 7 13 7 14 /****^ HISTORY COMMENTS: 7 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 7 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 7 17* This comment for hcom. 7 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 7 19* anstbl.incl.pl1, and dutbl.incl.pl1. 7 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 7 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 7 22* 84-07-12 BIM added min_process_authorization 7 23* 84-12-31 Keith Loepere added pdir_dir_quota 7 24* 85-01-16 by E. Swenson to add ute.session_uid 7 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 7 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 7 27* Added fields for DSA login server support. 7 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 7 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 7 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 7 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 7 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 7 33* Added disconnection_rel_minutes. 7 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 7 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 36* Changed structure under ute.abs_attributes to use like structure in 7 37* abs_attributes.incl.pl1. This allows the same attributes to be used 7 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 7 39* file. 7 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 7 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 7 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 7 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 45* A) Global reorganization to locate things by type of data. 7 46* B) Eliminate ute.uflags.logged_in. 7 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 7 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 49* A) Reduced overlength person and project fields to proper length. 7 50* B) Adjusted dialed-console section to begin on even word boundary. 7 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 7 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 53* Add ute.line_type. 7 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 7 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 7 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 7 57* for the storage. SCP6367 7 58* END HISTORY COMMENTS */ 7 59 7 60 /* format: style4 */ 7 61 7 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 7 63 /* */ 7 64 /* Each of the named sections below defines a type of data. Typing comes */ 7 65 /* from data associated with the ute entry itself, with the person, with */ 7 66 /* login argument data, from the main user of the data (eg, dialup_, */ 7 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 7 68 /* and is an even number of words long. The total structure is 300 decimal */ 7 69 /* words long. */ 7 70 /* */ 7 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 7 72 7 73 7 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 7 75 7 76 dcl utep pointer automatic init (null); 7 77 7 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 7 79 7 80 /* Variables which give state of this entry */ 7 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 7 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 7 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 7 84 2 next_free fixed bin, /* points to previous free entry */ 7 85 7 86 /* Information user gave about person_id associated with this entry. */ 7 87 2 person char (24) unal, /* user's name */ 7 88 2 project char (12) unal, /* project of absentee user */ 7 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 7 90 2 tag_pad bit (27) unal, 7 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 7 92 2 login_flags, /* flags for login data */ 7 93 3 cpw bit (1) unal, /* flag for wish to change password */ 7 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 7 95 3 special_pw unal, /* dial or slave */ 7 96 4 dial_pw bit (1) unal, /* true if dial -user */ 7 97 4 slave_pw bit (1) unal, /* true if slave -user */ 7 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 7 99 3 cda bit (1) unal, /* flag to change default authorization */ 7 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 7 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 7 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 7 103 3 pw_pad bit (25) unal, /* spare parts */ 7 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 7 105 /* Must remain last in pw_flags so it does not */ 7 106 /* appear in PW_FLAG_VALUES array below. */ 7 107 2 generated_pw char (8) unal, /* user must type this as new password */ 7 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 7 109 2 process_authorization bit (72), /* access_authorization of this process */ 7 110 7 111 /* Information user gave about process associated with this entry. */ 7 112 2 outer_module char (32) unal, /* Name of console dim */ 7 113 2 home_dir char (64) unal, /* initial home directory */ 7 114 2 init_proc char (64) unal, /* name of login responder */ 7 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 7 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 7 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 7 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 7 119 2 initial_ring fixed bin, /* ring process will be started in */ 7 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 7 121 2 ln_args fixed bin, /* length of string containing arguments */ 7 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 7 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 7 124 7 125 /* Most of the following information is relevant only to absentee processes */ 7 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 7 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 7 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 7 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 7 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 7 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 7 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 7 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 7 134* (but see uflags.adjust_abs_q_no). */ 7 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 7 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 7 137 2 abs_flags, 7 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 7 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 7 140 3 abs_flags_pad bit (34) unal, 7 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 7 142 2 sender char (32) unal, /* name of RJE station that job is from */ 7 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 7 144 2 proxy_project char (9) unal, 7 145 2 proxy_project_pad char (3) unal, 7 146 2 abs_pad fixed bin, 7 147 7 148 /* Information about process actually created */ 7 149 2 proc_id bit (36), /* process id of absentee process */ 7 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 7 151 2 process_authorization_range (2) bit (72) aligned, 7 152 2 audit bit (36), /* audit flags for user */ 7 153 2 lot_size fixed bin, /* Size of linkage offset table */ 7 154 2 kst_size fixed bin, /* Size of process known segment table */ 7 155 2 cls_size fixed bin, /* Size of process combined linkage */ 7 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 7 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 7 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 7 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 7 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 7 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 7 162 2 pdir_pad fixed bin(17) unal, 7 163 2 process_pad fixed bin, 7 164 7 165 /* Information about primary terminal associated with this entry */ 7 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 7 167 2 terminal_type char (32) unaligned, /* terminal type */ 7 168 2 line_type fixed bin, /* line type */ 7 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 7 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 7 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 7 172 7 173 /* Variables useful for dialed terminals */ 7 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 7 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 7 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 7 177 2 dial_server_flags, 7 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 7 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 7 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 7 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 7 182 7 183 /* Information about usage/accounting. Device usage meters are in a 7 184* separate segment, "devtab" */ 7 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 7 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 7 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 7 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 7 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 7 190 2 last_update_time fixed bin (71), /* time of last account update */ 7 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 7 192 2 ndevices fixed bin, /* Count of attached devices */ 7 193 2 device_head fixed bin, /* Table index of head of device chain */ 7 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 7 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 7 196 2 rs_number_pad bit(30) unal, 7 197 2 usage_pad fixed bin, 7 198 7 199 /* Information for dialup_ (control variables). */ 7 200 2 event fixed bin (71), /* event associated with channel or user manager */ 7 201 2 uprojp ptr, /* ptr to user project sat entry */ 7 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 7 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 7 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 7 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 7 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 7 207 2 count fixed bin, /* counter for logins and dialups */ 7 208 2 n_processes fixed bin, /* number of processes created in this session */ 7 209 2 lock_value fixed bin, /* number of locks set for this entry */ 7 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 7 211 2 login_code char (8) unal, /* login command from LOGIN line */ 7 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 7 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 7 214 2 logout_type char (4) unal, /* type of logout */ 7 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 7 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 7 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 7 218 2 work_class fixed bin, /* work class used by priority scheduler */ 7 219 2 group char (8) unal, /* party group identifier */ 7 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 7 221 7 222 2 uflags, /* Miscellaneous flags */ 7 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 7 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 7 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 7 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 7 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 7 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 7 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 7 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 7 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 7 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 7 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 7 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 7 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 7 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 7 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 7 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 7 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 7 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 7 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 7 242 3 uflags_pad bit (17) unal, 7 243 7 244 /* Information used by load_ctl_ for the process */ 7 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 7 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 7 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 7 248 7 249 7 250 /* Information for login server */ 7 251 2 login_server_info, 7 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 7 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 7 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 7 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 7 256 3 process_id bit (36) aligned, /* process_id of login server */ 7 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 7 258 7 259 /* values for ute.process_type */ 7 260 7 261 dcl (PT_INTERACTIVE initial (1), 7 262 PT_ABSENTEE initial (2), 7 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 7 264 7 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 7 266 "INVALID-TYPE", 7 267 "interactive", 7 268 "absentee", 7 269 "daemon"); 7 270 7 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 7 272 "UNKNOWN-TABLE", 7 273 "answer_table", 7 274 "absentee_user_table", 7 275 "daemon_user_table"); 7 276 7 277 7 278 /* values for ute.pw_flags.mask_ctl */ 7 279 7 280 dcl (DO_MASK init ("00"b), 7 281 DONT_MASK init ("01"b), 7 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 7 283 7 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 7 285 "do_mask", "dont_mask", "derive_mask", ""); 7 286 7 287 7 288 /* names for ute.pw_flags */ 7 289 7 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 7 291 "cpw", 7 292 "generate_pw", 7 293 "dial_pw", 7 294 "slave_pw", 7 295 "cdp", 7 296 "cda", 7 297 "auth_given", 7 298 "noprint", 7 299 "operator"); 7 300 7 301 /* names for ute.uflags */ 7 302 7 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 7 304 "dont_call_init_admin", 7 305 "ip_given", 7 306 "ss_given", 7 307 "lvs_attached", 7 308 "send_initial_string", 7 309 "adjust_abs_q_no", 7 310 "foreground_secondary_ok", 7 311 "foreground_job", 7 312 "sus_sent", 7 313 "suspended", 7 314 "ignore_cpulimit", 7 315 "deferral_logged", 7 316 "save_if_disconnected", 7 317 "disconnected", 7 318 "disconnected_list", 7 319 "proc_create_ok", 7 320 "activity_can_unbump", 7 321 "fpe_causes_logout", 7 322 "user_specified_immediate"); 7 323 7 324 /* names for ute.abs_flags */ 7 325 7 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 7 327 "abs_run", 7 328 "notify"); 7 329 7 330 /* names of ute.dial_server_flags */ 7 331 7 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 7 333 "registered", 7 334 "privileged"); 7 335 7 336 /* values of ute.login_result */ 7 337 7 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 7 339 "logged in", 7 340 "login failed, hangup", 7 341 "login failed, try again"); 7 342 7 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 618 619 620 621 end parse_login_line_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/19/88 1536.7 parse_login_line_.pl1 >special_ldd>install>MR12.2-1061>parse_login_line_.pl1 615 1 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 1-10 2 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 616 3 08/06/87 0913.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 3-314 4 07/19/88 1524.1 fnp_types.incl.pl1 >special_ldd>install>MR12.2-1061>fnp_types.incl.pl1 617 5 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 5-112 6 07/14/88 2015.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 618 7 07/14/88 2015.0 user_table_entry.incl.pl1 >ldd>include>user_table_entry.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. ARG based char packed unaligned dcl 485 set ref 486* DERIVE_MASK constant bit(2) initial packed unaligned dcl 7-280 ref 139 573 611 DIAL constant fixed bin(17,0) initial dcl 86 ref 560 DONT_MASK constant bit(2) initial packed unaligned dcl 7-280 ref 251 DO_MASK constant bit(2) initial packed unaligned dcl 7-280 ref 246 NORMAL constant fixed bin(17,0) initial dcl 85 ref 134 196 512 529 SLAVE constant fixed bin(17,0) initial dcl 87 ref 599 a_utep parameter pointer dcl 47 ref 13 138 558 563 597 601 addr builtin function dcl 129 ref 161 161 177 177 210 210 226 226 277 277 301 301 310 310 338 338 362 362 371 371 382 382 428 428 464 464 486 486 486 515 515 583 583 after builtin function dcl 129 ref 154 520 arg 000100 automatic char(32) packed unaligned dcl 56 set ref 149* 152 153 154 157 161* 167 170 174 177* 183 185 186 189 358 371* 373* 401 422 428* 434* 444 464* 515* 517 518 519 520 523 562* 583* 587 590 591 608* arg_count 102 based fixed bin(17,0) level 2 dcl 7-78 set ref 461* 468* 468 475 478 483 arg_lengths_ptr 104 based pointer level 2 dcl 7-78 set ref 475* 478 492 args_ptr 106 based pointer level 2 dcl 7-78 set ref 476* 486 argstring based char packed unaligned dcl 74 set ref 476 486 argstringx 000110 automatic fixed bin(17,0) dcl 57 set ref 482* 486 486 486 494* 494 495 as_data_$login_args 000054 external static structure level 1 dcl 120 as_data_$max_user_ring 000056 external static fixed bin(35,0) dcl 125 ref 376 as_error_table_$bad_login_arg_msg 000024 external static fixed bin(35,0) dcl 107 ref 190 as_error_table_$bad_login_arguments_string 000046 external static fixed bin(35,0) dcl 116 ref 488 as_error_table_$bad_terminal_id 000026 external static fixed bin(35,0) dcl 108 ref 357 as_error_table_$dial_request_error 000030 external static fixed bin(35,0) dcl 109 ref 578 as_error_table_$long_ip_ss_args 000034 external static fixed bin(35,0) dcl 111 ref 230 386 as_error_table_$need_authorization_for_cda 000050 external static fixed bin(35,0) dcl 117 ref 541 as_error_table_$need_project_for_cdp 000032 external static fixed bin(35,0) dcl 110 ref 533 as_error_table_$no_login_arg_msg 000044 external static fixed bin(35,0) dcl 115 ref 212 as_error_table_$only_one_connect_etc 000040 external static fixed bin(35,0) dcl 113 ref 421 as_error_table_$only_one_hold_no_hold 000042 external static fixed bin(35,0) dcl 114 ref 443 as_error_table_$only_one_save_nosave 000036 external static fixed bin(35,0) dcl 112 ref 399 at 100 based structure level 2 dcl 7-78 attributes 50 based structure level 3 packed packed unaligned dcl 3-72 auth_given 17(06) based bit(1) level 3 packed packed unaligned dcl 7-78 set ref 140* 320* 538 author based structure level 2 dcl 1-9 author_dcl based structure level 1 dcl 1-9 authorization 000112 automatic bit(72) dcl 58 set ref 313* 321 authorization_string 000114 automatic char(150) packed unaligned dcl 59 set ref 235* 242 310* 312 313 baud_rate 33(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-72 ref 341 before builtin function dcl 129 ref 153 519 brief 77(10) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 204* 504* brief 100(10) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 201* 501* bumping 77(09) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 265* bumping 100(09) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 141* 262* cda 17(05) based bit(1) level 3 packed packed unaligned dcl 7-78 set ref 324* 538 cdp 17(04) based bit(1) level 3 packed packed unaligned dcl 7-78 set ref 293* 531 cdte based structure level 1 dcl 3-72 cdtep 000242 automatic pointer dcl 3-41 set ref 142* 143 144 144 145 145 145 145 145 334 341 341 345 353 356 365 395 398 404 407 410 411 414 420 425 434 439 442 442 447 448 451 454 546 546 546 546 564* 565 566 566 567 567 567 567 567 602* 603 604 604 605 605 605 605 605 ch based char(1) array packed unaligned dcl 75 set ref 161 161 177 177 210 210 226 226 277 277 301 301 310 310 338 338 362 362 371 371 382 382 428 428 464 464 486 486 515 515 583 583 channel 341 based pointer level 2 packed packed unaligned dcl 7-78 ref 142 564 602 channel_threads based structure level 1 dcl 3-249 char64 000162 automatic char(64) packed unaligned dcl 60 set ref 226* 228 231 239 301* 303 304 382* 384 387 390 ck_answerback 50 based bit(1) level 4 packed packed unaligned dcl 3-72 ref 356 code parameter fixed bin(35,0) dcl 47 set ref 13 135* 149* 150 161* 162 163* 166 177* 178 179* 182 190* 193* 210* 211 212* 216 226* 227 230* 277* 278 301* 302 310* 311 313* 314 338* 339 341* 343 357* 362* 363 371* 372 373* 374 382* 383 386* 399* 421* 428* 429 430* 433 434* 435 443* 464* 465 466 486* 487 488* 515* 516 533* 541* 558 561* 574* 575 578* 583* 584 585 585* 597 600* convert_authorization_$from_string 000012 constant entry external dcl 99 ref 313 cpw 17 based bit(1) level 3 packed packed unaligned dcl 7-78 set ref 288* cur_line_type 113(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 3-72 ref 341 current_terminal_type 101 based char(32) level 2 packed packed unaligned dcl 3-72 set ref 345* cv_dec_check_ 000014 constant entry external dcl 100 ref 373 434 device 000202 automatic char(32) packed unaligned dcl 61 set ref 338* 340 350 dial_pw 17(02) based bit(1) level 4 packed packed unaligned dcl 7-78 set ref 571* dial_qualifier 343 based char(22) level 2 packed packed unaligned dcl 7-78 set ref 574* 577 dialup_flags 75(18) based structure level 2 packed packed unaligned dcl 3-72 disconnected_proc_command 126 based fixed bin(12,0) level 2 packed packed unsigned unaligned dcl 3-72 set ref 144* 420 425* 546 546 566* 604* disconnected_proc_number 126(12) based fixed bin(12,0) level 2 packed packed unsigned unaligned dcl 3-72 set ref 144* 434* 566* 604* ds_valid_option 000112 constant bit(57) initial packed unaligned dcl 88 ref 196 198 entry_sw 000212 automatic fixed bin(17,0) dcl 62 set ref 134* 196 512 529 560* 599* errarg parameter char dcl 47 set ref 13 167* 189* 213* 218* 231* 316* 350* 358* 387* 401* 422* 444* 489* 534* 542* 551* 558 562* 579* 587* 597 608* error_table_$noarg 000052 external static fixed bin(35,0) dcl 118 ref 162 178 211 429 465 585 false constant bit(1) initial dcl 91 ref 262 501 507 flags 50 based structure level 2 dcl 3-72 fnpe based structure level 1 dcl 3-200 generate_pw 17(01) based bit(1) level 3 packed packed unaligned dcl 7-78 set ref 329* get_system_free_area_ 000016 constant entry external dcl 101 ref 472 guaranteed_login 100(03) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 268* guaranteed_login 77(03) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 270* hbound builtin function dcl 129 ref 195 hold_arg 75(25) based bit(1) level 3 packed packed unaligned dcl 3-72 set ref 145* 442 447* 567* 605* home_dir 36 based char(64) level 2 packed packed unaligned dcl 7-78 set ref 210* 217 218 i 000213 automatic fixed bin(17,0) dcl 63 set ref 226* 229 239 239 240 242 382* 385 390 390 391 483* 492 515* immediate_arg 75(27) based bit(1) level 3 packed packed unaligned dcl 3-72 set ref 145* 454* 546 567* 605* index builtin function dcl 129 ref 152 518 577 590 init_proc 56 based char(64) level 2 packed packed unaligned dcl 7-78 set ref 235 239* 242* 390* initial_ring 101 based fixed bin(17,0) level 2 dcl 7-78 set ref 373* 375 376 ip_given 431(01) based bit(1) level 3 packed packed unaligned dcl 7-78 set ref 241* ip_len 76 based fixed bin(17,0) level 2 packed packed unaligned dcl 7-78 set ref 235 240* 385 390 j 000214 automatic fixed bin(17,0) dcl 64 set ref 149* 160 161* 176 177* 207 210* 223 226* 273 277* 298 301* 307 310* 337 338* 361 362* 368 371* 379 382* 427 428* 457 464* 469 486* 493 514 515* 574* 582 583* 612* jj 000215 automatic fixed bin(17,0) dcl 65 set ref 136* 160* 160 161 161 161 176* 176 177 177 177 207* 207 210 210 210 223* 223 226 226 226 273* 273 277 277 277 298* 298 301 301 301 307* 307 310 310 310 337* 337 338 338 338 361* 361 362 362 362 368* 368 371 371 371 379* 379 382 382 382 427* 427 428 428 428 457 457* 464 464 464 469* 469 481* 486 486 486 493* 493 514* 514 515 515 515 570* 582* 582 583 583 583 613* k 000216 automatic fixed bin(17,0) dcl 66 set ref 149* 161* 177* 186* 186* 188 195 196 198 199 210* 277* 301* 310* 338* 362* 371* 425 426 428* 442 442 447 464* 467 486* 492 494 574* 583* length builtin function dcl 129 ref 157 174 196 304 523 lengths based fixed bin(17,0) array dcl 76 set ref 475 478* 492* ll parameter fixed bin(17,0) dcl 47 set ref 13 149* 161 177 210 226 277 301 310 338 362 371 382 428 464 486 515 558 574* 583 597 ln_args 103 based fixed bin(17,0) level 2 dcl 7-78 set ref 462* 467* 467 476 476 477 486 486 486 495 login_args 2 000054 external static char(24) array level 2 dcl 120 ref 186 login_code 416 based char(8) level 2 packed packed unaligned dcl 7-78 set ref 572* 610* login_flags 17 based structure level 2 dcl 7-78 login_parse_ 000020 constant entry external dcl 102 ref 149 161 177 210 226 277 301 310 338 362 371 382 428 464 486 515 574 583 lower_case 000102 constant char(26) initial packed unaligned dcl 91 ref 340 lp parameter pointer dcl 47 set ref 13 149* 161 161 177 177 210 210 226 226 277 277 301 301 310 310 338 338 362 362 371 371 382 382 428 428 464 464 486 486 515 515 558 574* 583 583 597 mask_ctl 17(34) based bit(2) level 3 packed packed unaligned dcl 7-78 set ref 139* 246* 251* 573* 611* modestring parameter char packed unaligned dcl 47 set ref 13 137* 277* 279 mpxe based structure level 1 dcl 3-221 n_login_args 000054 external static fixed bin(35,0) level 2 dcl 120 ref 186 188 no_hold_arg 75(26) based bit(1) level 3 packed packed unaligned dcl 3-72 set ref 145* 442 448* 567* 605* no_warning 100(19) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 256* 507* no_warning 77(19) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 259* 509* nosave_arg 75(22) based bit(1) level 3 packed packed unaligned dcl 3-72 set ref 145* 398 411* 567* 605* nostartup 100(13) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 282* nostartup 77(13) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 285* null builtin function dcl 129 ref 143 334 341 341 353 395 407 414 439 451 472 546 565 603 7-76 outer_module 26 based char(32) level 2 packed packed unaligned dcl 7-78 set ref 304* 304 person 4 based char(24) level 2 packed packed unaligned dcl 7-78 set ref 153* 157* 157 519* 523* 523 prev_arg 000217 automatic char(32) packed unaligned dcl 67 set ref 185* 213 562* 608* process_authorization 24 based bit(72) level 2 dcl 7-78 set ref 321* project 12 based char(12) level 2 packed packed unaligned dcl 7-78 set ref 154* 155 172 174* 174 520* 521 531 save_arg 75(21) based bit(1) level 3 packed packed unaligned dcl 3-72 set ref 145* 404* 410 567* 605* save_jj 000227 automatic fixed bin(17,0) dcl 68 set ref 457* 481 send_initial_string 431(04) based bit(1) level 3 packed packed unaligned dcl 7-78 set ref 346* sender 253 based char(32) level 2 packed packed unaligned dcl 7-78 set ref 591* slave_pw 17(03) based bit(1) level 4 packed packed unaligned dcl 7-78 set ref 609* special_pw 17(02) based structure level 3 packed packed unaligned dcl 7-78 specified_type 000230 automatic char(32) packed unaligned dcl 69 set ref 340* 341* 345 ss_given 431(02) based bit(1) level 3 packed packed unaligned dcl 7-78 set ref 234 242 392* ss_len 76(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 7-78 set ref 229 235 242 242 391* substr builtin function dcl 129 set ref 157 170 174 183 198 217 228 235 239* 239 242* 242 279 303 304 312 364 384 390* 390 486 517 523 system_area based area(1024) dcl 77 ref 475 476 system_area_ptr 000010 internal static pointer initial dcl 81 set ref 472 472* 475 476 terminal_id 000240 automatic char(4) packed unaligned dcl 70 set ref 362* 364 365 translate builtin function dcl 129 ref 340 true constant bit(1) initial dcl 91 ref 201 204 256 259 265 268 270 282 285 288 293 320 324 329 504 509 ttt_info_$terminal_data 000022 constant entry external dcl 103 ref 341 tty_id_code 337 based char(4) level 2 in structure "ute" packed packed unaligned dcl 7-78 in procedure "parse_login_line_" set ref 365* tty_id_code 100 based char(4) level 2 in structure "cdte" dcl 3-72 in procedure "parse_login_line_" set ref 365* uflags 431 based structure level 2 dcl 7-78 upper_case 000073 constant char(26) initial packed unaligned dcl 91 ref 340 ur_at 77 based structure level 2 dcl 7-78 user_abs_attributes based structure level 1 dcl 6-25 user_attributes based structure level 1 dcl 5-21 ute based structure level 1 dcl 7-78 utep 000244 automatic pointer initial dcl 7-76 set ref 138* 139 140 141 142 153 154 155 157 157 172 174 174 201 204 210 217 218 229 234 235 235 235 239 240 241 242 242 242 242 246 251 256 259 262 265 268 270 282 285 288 293 304 304 320 321 324 329 346 365 373 375 376 385 390 390 391 392 461 462 467 467 468 468 475 475 476 476 476 477 478 478 483 501 504 507 509 519 520 521 523 523 531 531 538 538 563* 564 571 572 573 574 577 591 601* 602 609 610 611 7-76* 486 486 486 486 492 495 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 6-38 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 7-326 ACTIVE internal static fixed bin(17,0) initial dcl 3-272 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 5-77 ANS_SERVICE internal static fixed bin(17,0) initial dcl 3-259 CDT_version internal static fixed bin(17,0) initial dcl 3-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 3-38 CHANNEL_DELETED internal static fixed bin(17,0) initial dcl 3-288 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 3-259 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 7-332 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 3-259 DN355 internal static fixed bin(17,0) initial dcl 4-19 DN6600 internal static fixed bin(17,0) initial dcl 4-19 DN6670 internal static fixed bin(17,0) initial dcl 4-19 DN7100 internal static fixed bin(17,0) initial dcl 4-19 FNP_BOOT internal static fixed bin(17,0) initial dcl 3-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 3-298 FNP_FREE internal static fixed bin(17,0) initial dcl 3-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 3-298 FNP_UP internal static fixed bin(17,0) initial dcl 3-298 FTP_SERVICE internal static fixed bin(17,0) initial dcl 3-259 INACTIVE internal static fixed bin(17,0) initial dcl 3-272 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 7-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 7-284 MC_SERVICE internal static fixed bin(17,0) initial dcl 3-259 MPX_BOOT internal static fixed bin(17,0) initial dcl 3-306 MPX_DOWN internal static fixed bin(17,0) initial dcl 3-306 MPX_FREE internal static fixed bin(17,0) initial dcl 3-306 MPX_SERVICE internal static fixed bin(17,0) initial dcl 3-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 3-306 MPX_UP internal static fixed bin(17,0) initial dcl 3-306 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 3-280 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 7-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 7-261 PT_DAEMON internal static fixed bin(17,0) initial dcl 7-261 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 7-261 PW_FLAG_NAMES internal static varying char(12) initial array dcl 7-290 SLAVE_SERVICE internal static fixed bin(17,0) initial dcl 3-259 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 7-271 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 3-259 UFLAG_NAMES internal static varying char(24) initial array dcl 7-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 5-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 5-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 5-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 5-50 UTE_version_4 internal static fixed bin(17,0) initial dcl 7-74 cdt based structure level 1 dcl 3-44 cdtp automatic pointer dcl 3-41 fnp_models internal static fixed bin(17,0) initial array dcl 4-28 fnp_types internal static char(8) initial array packed unaligned dcl 4-25 fnpep automatic pointer dcl 3-41 generic_destination based char(32) packed unaligned dcl 3-195 mpxep automatic pointer dcl 3-41 supported_fnp internal static bit(1) initial array packed unaligned dcl 4-31 NAMES DECLARED BY EXPLICIT CONTEXT. arg_handler 000000 constant label array(59) dcl 201 set ref 195 199 332 arglp 000573 constant label dcl 185 ref 170 590 bad_ag_string 002755 constant label dcl 488 ref 495 badarg 000625 constant label dcl 189 ref 155 172 183 195 196 198 334 353 374 375 376 395 407 414 439 451 512 521 badarg2 000635 constant label dcl 190 ref 219 552 check_for_ctl_arg 000567 constant label dcl 183 ref 435 dial_line 003271 constant entry external dcl 558 exit 003162 constant label dcl 529 ref 164 180 431 499 got_all_args 002574 constant label dcl 472 ref 465 lp_error 000740 constant label dcl 211 ref 227 278 302 311 339 363 372 383 433 466 516 noarg 000744 constant label dcl 212 ref 228 279 303 312 364 384 517 nxarg 000506 constant label dcl 176 ref 205 221 244 249 254 260 266 271 280 286 291 296 305 322 327 347 366 377 393 405 412 437 449 455 505 510 525 592 614 only_one_save_nosave 002227 constant label dcl 399 ref 410 parse_login_line_ 000173 constant entry external dcl 13 slave_line 003564 constant entry external dcl 597 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 4416 4476 4103 4426 Length 5066 4103 60 353 312 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME parse_login_line_ 278 external procedure is an external procedure. begin block on line 484 begin block shares stack frame of external procedure parse_login_line_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 system_area_ptr parse_login_line_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME parse_login_line_ 000100 arg parse_login_line_ 000110 argstringx parse_login_line_ 000112 authorization parse_login_line_ 000114 authorization_string parse_login_line_ 000162 char64 parse_login_line_ 000202 device parse_login_line_ 000212 entry_sw parse_login_line_ 000213 i parse_login_line_ 000214 j parse_login_line_ 000215 jj parse_login_line_ 000216 k parse_login_line_ 000217 prev_arg parse_login_line_ 000227 save_jj parse_login_line_ 000230 specified_type parse_login_line_ 000240 terminal_id parse_login_line_ 000242 cdtep parse_login_line_ 000244 utep parse_login_line_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc call_ext_out begin_return_mac return_mac ext_entry_desc op_alloc_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_authorization_$from_string cv_dec_check_ get_system_free_area_ login_parse_ ttt_info_$terminal_data THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$login_args as_data_$max_user_ring as_error_table_$bad_login_arg_msg as_error_table_$bad_login_arguments_string as_error_table_$bad_terminal_id as_error_table_$dial_request_error as_error_table_$long_ip_ss_args as_error_table_$need_authorization_for_cda as_error_table_$need_project_for_cdp as_error_table_$no_login_arg_msg as_error_table_$only_one_connect_etc as_error_table_$only_one_hold_no_hold as_error_table_$only_one_save_nosave error_table_$noarg LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 7 76 000161 13 000165 134 000216 135 000220 136 000221 137 000223 138 000231 139 000234 140 000240 141 000242 142 000244 143 000246 144 000252 145 000256 149 000270 150 000323 152 000325 153 000336 154 000347 155 000365 156 000371 157 000372 160 000376 161 000400 162 000447 163 000453 164 000454 166 000455 167 000457 168 000467 170 000470 172 000474 174 000501 176 000506 177 000510 178 000557 179 000563 180 000564 182 000565 183 000567 185 000573 186 000576 187 000617 188 000621 189 000625 190 000635 191 000640 193 000641 195 000642 196 000644 198 000652 199 000656 201 000660 204 000663 205 000665 207 000666 210 000670 211 000740 212 000744 213 000747 214 000757 216 000760 217 000762 218 000767 219 000777 221 001000 223 001001 226 001003 227 001052 228 001054 229 001060 230 001070 231 001073 232 001103 234 001104 235 001107 239 001114 240 001120 241 001123 242 001125 244 001134 246 001135 249 001140 251 001141 254 001146 256 001147 259 001152 260 001154 262 001155 265 001160 266 001162 268 001163 270 001166 271 001170 273 001171 277 001173 278 001243 279 001245 280 001253 282 001254 285 001257 286 001261 288 001262 291 001265 293 001266 296 001271 298 001272 301 001274 302 001343 303 001345 304 001351 305 001355 307 001356 310 001360 311 001427 312 001431 313 001435 314 001461 316 001463 317 001473 320 001474 321 001477 322 001502 324 001503 327 001506 329 001507 332 001512 334 001513 337 001517 338 001521 339 001570 340 001572 341 001576 343 001641 345 001643 346 001647 347 001652 350 001653 351 001663 353 001664 356 001670 357 001674 358 001677 359 001707 361 001710 362 001712 363 001761 364 001763 365 001767 366 001774 368 001775 371 001777 372 002046 373 002050 374 002073 375 002075 376 002077 377 002102 379 002103 382 002105 383 002154 384 002156 385 002162 386 002171 387 002174 388 002204 390 002205 391 002212 392 002214 393 002216 395 002217 398 002223 399 002227 401 002232 402 002242 404 002243 405 002245 407 002246 410 002252 411 002256 412 002260 414 002261 420 002265 421 002271 422 002274 423 002304 425 002305 426 002311 427 002314 428 002316 429 002365 430 002371 431 002372 433 002373 434 002375 435 002420 437 002422 439 002423 442 002427 443 002444 444 002447 445 002457 447 002460 448 002466 449 002470 451 002471 454 002475 455 002500 457 002501 461 002505 462 002507 464 002510 465 002557 466 002563 467 002565 468 002570 469 002571 470 002573 472 002574 475 002607 476 002617 477 002631 478 002633 479 002646 481 002647 482 002651 483 002653 486 002663 487 002753 488 002755 489 002760 490 002770 492 002772 493 002777 494 003001 495 003003 498 003007 499 003011 501 003012 504 003015 505 003017 507 003020 509 003023 510 003025 512 003026 514 003031 515 003033 516 003102 517 003104 518 003110 519 003121 520 003132 521 003150 522 003154 523 003155 525 003161 529 003162 531 003165 533 003175 534 003200 535 003210 538 003211 541 003217 542 003222 543 003232 546 003233 551 003252 552 003262 555 003263 558 003264 560 003307 561 003311 562 003312 563 003330 564 003334 565 003336 566 003343 567 003347 570 003361 571 003363 572 003365 573 003370 574 003374 575 003427 577 003431 578 003444 579 003447 580 003454 582 003455 583 003457 584 003526 585 003530 587 003535 588 003542 590 003543 591 003555 592 003561 597 003562 599 003602 600 003604 601 003605 602 003611 603 003613 604 003617 605 003623 608 003635 609 003653 610 003655 611 003660 612 003664 613 003665 614 003667 ----------------------------------------------------------- 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