COMPILATION LISTING OF SEGMENT up_cdt_ Compiled by: Multics PL/I Compiler, Release 33e, of October 6, 1992 Compiled at: ACTC Technologies Inc. Compiled on: 10/21/92 1524.9 mdt Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1992 * 4* * * 5* * Copyright, (C) Honeywell Bull Inc., 1987 * 6* * * 7* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 8* * * 9* * Copyright (c) 1972 by Massachusetts Institute of * 10* * Technology and Honeywell Information Systems, Inc. * 11* * * 12* *********************************************************** */ 13 14 /* format: style2 */ 15 up_cdt_: 16 procedure (user_cdtp, wordcount, instaldir, instalname, instalp, ansp, ip, answer, code); 17 18 /* UP_CDT_ - update the Channel Definition Table (CDT) 19* 20* This program checks a candidate CDT for acceptability before installing. 21* THVV Aug 75 22* Modified 751024 by PG to check terminal access_class vs. authorization, 23* not max_authorization, to fix bug in bumping innocent users. 24* Modified 760603 by Roy P. Planalp to recognize and attach channels of 25* service_type FTP 26* Modified 760826 by Mike Grady to update version 2 CDTs 27* Modified November 1976 by T. Casey to fix bug in changing terminal access class. 28* Modified June 1977 by Robert Coren to use terminal type names instead of numbers and to 29* . check that specified terminal types are in TTT. 30* Modified September 1977 by T. Casey to make channel deletions reversible during the same bootload, and fix bugs. 31* Modified January 1978 by T. Casey to fix bug in previous modification. 32* Modified February 1978 by G. Dixon to fix bug in Sept 77 modification. 33* Modified Fall 1978 by Larry Johnson for ring-0 demultiplexing. 34* Modified April 1979 by Larry Johnson for fnpe changes. 35* Modified January 1981 by E. N. Kittlitz to eliminate CDTE.phone_no. 36* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 37* Modified December 1981, Benson I. Margulies. trees in the cdts. 38* Modified February 1982, E. N. Kittlitz. xxx.install.acs conversion. 39* Modified July 1982, BIM, fixes to tree stuff. 40* Modified July 1982, E. N. Kittlitz. to not listen to masked channel. 41* Modified October 1982, E. N. Kittlitz. change some sys_log_ severities. 42* Modified 84-03-26 BIM for version 5 cdt, aim ranges. 43* Modified 1984-08-07 BIM to initialize mpxe fields for new multiplexers. 44* Modified: 45* 10/05/84 by R. Michael Tague: up_sysctl_$check_acs now returns a bit (36) 46* mode string instead of a fixed bin (5) and no longer takes a directoy arg. 47**/ 48 49 50 /****^ HISTORY COMMENTS: 51* 1) change(87-04-28,GDixon), approve(87-07-13,MCR7741), 52* audit(87-07-15,Hartogs), install(87-08-04,MR12.1-1055): 53* Updated for change to user_table_entry.incl.pl1. 54* 2) change(92-10-14,Schroth), approve(92-10-14,MCR8264), 55* audit(92-10-15,Zimmerman), install(92-10-21,MR12.5-1036): 56* Correct several potential null pointer faults when attempting to install a 57* new CDT. 58* END HISTORY COMMENTS */ 59 60 61 /* parameters */ 62 63 dcl (user_cdtp, instalp, ansp, ip) 64 ptr, 65 wordcount fixed bin; 66 dcl code fixed bin (35) parameter; 67 dcl instaldir char (*), 68 instalname char (*), 69 answer char (*); 70 71 /* entries */ 72 73 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 74 dcl aim_check_$greater_or_equal 75 entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 76 dcl aim_check_$in_range entry (bit (72) aligned, (2) bit (72) aligned) returns (bit (1) aligned); 77 dcl astty_$tty_order entry (ptr, char (*), ptr, fixed bin (35)); 78 dcl asu_$asu_listen entry (ptr, fixed bin (35)); 79 dcl cdt_mgr_$find_cdt_channel 80 entry (ptr, char (32), fixed bin, bit (1) aligned, fixed bin (35)); 81 dcl cdt_mgr_$thread entry (ptr, fixed bin (35)); 82 dcl cdt_mgr_$thread_out_cdt_channel 83 entry (ptr, fixed bin); 84 dcl cdt_mgr_$thread_in_cdt_channel 85 entry (ptr, fixed bin); 86 dcl display_access_class_ entry (bit (72) aligned) returns (character (32) aligned); 87 dcl display_access_class_$range 88 entry ((2) bit (72) aligned) returns (character (32) aligned); 89 90 dcl find_condition_info_ entry (ptr, ptr, fixed bin (35)); 91 dcl (get_temp_segment_, release_temp_segment_) 92 entry (char (*), ptr, fixed bin (35)); 93 dcl hcs_$delentry_seg entry (ptr, fixed bin (35)); 94 dcl hcs_$set_safety_sw entry (char (*), char (*), bit (1) aligned, fixed bin (35)); 95 /* SWS */ 96 dcl hcs_$set_bc entry (char (*), char (*), fixed bin (24), fixed bin (35)); 97 dcl hcs_$terminate_noname entry (ptr, fixed bin (35)); 98 dcl cu_$level_get entry (fixed bin); 99 dcl sys_log_ entry options (variable); 100 dcl sys_log_$error_log entry options (variable); 101 dcl ttt_info_$terminal_data 102 entry (character (*), fixed binary, fixed binary, pointer, fixed binary (35)); 103 dcl asu_$attach_channel entry (ptr, fixed bin (35)); 104 dcl asu_$bump_code entry (ptr, fixed bin (35), char (8), fixed bin (35), fixed bin); 105 dcl asu_$write_chn_message entry (ptr, fixed bin (35), char (8), fixed bin (35)); 106 dcl asu_$asu_remove entry (ptr); 107 dcl hcs_$initiate entry (char (*), char (*), char (*), fixed bin (1), fixed bin (2), ptr, 108 fixed bin (35)); /* dcl ttt_info_$terminal_data 109*/* entry (char (*), fixed bin, fixed bin, ptr, fixed bin (35)); 110**/ 111 dcl up_sysctl_$check_acs entry (char (*), char (*), fixed bin, bit (36) aligned, fixed bin (35)); 112 113 /* external static */ 114 115 dcl sc_stat_$sysdir character (168) unaligned external; 116 dcl as_error_table_$chn_auth_excludes 117 fixed bin (35) external static; 118 dcl as_error_table_$chn_deleted 119 fixed bin (35) external static; 120 dcl as_error_table_$chn_svc_changed 121 fixed bin (35) external static; 122 dcl error_table_$action_not_performed 123 fixed bin (35) external static; 124 125 /* automatic */ 126 127 dcl (auth_string, old_auth_string) 128 char (32) aligned; 129 dcl (line_type, service_type) 130 fixed bin; 131 dcl system_high bit (72) aligned; 132 133 dcl fnp_sw bit (1) aligned; 134 dcl (i, cdtx) fixed bin; 135 dcl movelen fixed bin (24); 136 dcl mode bit (36) aligned; 137 dcl ring fixed bin; 138 dcl debg char (8); 139 dcl offset fixed bin (18); 140 dcl (p, q, old_cdtp, new_cdtp) 141 ptr; 142 dcl retry_count fixed bin; 143 144 /* internal static */ 145 146 dcl acs_name char (32) int static options (constant) init ("cdt.install.acs"); 147 148 dcl ( 149 LEGAL char (95) 150 init 151 /* Printables except PAD, semicolon, but with BS */ ( 152 " !""#$%&'()*+,-./0123456789:<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~" 153 ), 154 REMOVE_THIS_CHANNEL fixed bin initial (100), 155 /* this channel is being removed from service */ 156 ATTACH_THIS_CHANNEL fixed bin initial (200), 157 /* this channel is being added */ 158 LISTEN_TO_THIS_CHANNEL fixed bin initial (300), 159 /* this channel existed before, but line type was changed */ 160 DELETE_THIS_CHANNEL fixed bin initial (400), 161 /* this channel being deleted */ 162 UNDELETE_THIS_CHANNEL fixed bin initial (500) 163 /* deleted channel being added back */ 164 ) internal static options (constant); 165 166 /* based */ 167 168 dcl 1 movetable based aligned, 169 2 moveary (movelen) bit (36) aligned; 170 171 dcl 1 CDT aligned like cdt based; 172 /* No dangerous implicit qualification */ 173 dcl 1 CDTE aligned like cdte based; 174 dcl 1 FNPE aligned like fnpe based; 175 176 /* Condition */ 177 178 dcl sub_error_ condition; 179 180 /* builtin */ 181 182 dcl (addr, clock, hbound, null, size, string, verify, unspec, wordno) 183 builtin; 184 185 /* ============================================ */ 186 187 188 /* There are three copies of the CDT referenced in this procedure. All references are by explicit use of pointers: 189* user_cdtp points to the supplied CDT (the one that was given to us to be installed); 190* old_cdtp points to the old CDT (>sc1>cdt); 191* new_cdtp points to the temporary segment in which we will build a new CDT by merging the supplied one with the current one; 192* p and q point to CDT entries. They are used for different purposes in various parts of the program. */ 193 194 /* Check the validity of the supplied CDT and the access permissions of the installer. */ 195 196 retry_count = 0; 197 198 RETRY_INSTALLATION: 199 cdtp = null; /* TAKE A FAULT IF WE FORGET TO QUALIFY */ 200 cdtep = null; 201 fnpep = null; 202 mpxep = null; 203 new_cdtp = null; 204 old_cdtp = null; 205 206 system_high = installation_parms.access_authorization_ceiling; 207 call cu_$level_get (ring); 208 209 answer = ""; 210 instalp = null; /* pre-set returned pointer */ 211 instaldir = sc_stat_$sysdir; /* used to be anstbl */ 212 instalname = "cdt"; 213 if wordcount < 64 214 then do; /* make sure segment contains something */ 215 answer = "wordcount < 64"; 216 code = error_table_$action_not_performed; 217 go to RETURN; 218 end; 219 if user_cdtp -> CDT.version ^= CDT_version 220 then do; /* Check right overlay dcl */ 221 answer = "incorrect table version"; 222 code = error_table_$action_not_performed; 223 go to RETURN; 224 end; 225 if user_cdtp -> CDT.current_size > user_cdtp -> CDT.max_size 226 then do; 227 answer = "current_size > max_size"; 228 code = error_table_$action_not_performed; 229 go to RETURN; 230 end; 231 if user_cdtp -> CDT.n_cdtes > user_cdtp -> CDT.current_size 232 then do; 233 answer = "n_cdtes > current_size"; 234 code = error_table_$action_not_performed; 235 go to RETURN; 236 end; 237 offset = wordno (addr (user_cdtp -> cdt.cdt_entry (1))) + (size (cdte) * user_cdtp -> cdt.current_size); 238 if offset ^= wordcount 239 then do; 240 answer = "size inconsistent with wordcount"; 241 code = error_table_$action_not_performed; 242 go to RETURN; 243 end; 244 call up_sysctl_$check_acs (acs_name, (user_cdtp -> CDT.author.proc_group_id), ring, mode, code); 245 if (code ^= 0) | ((mode & RW_ACCESS) ^= RW_ACCESS) 246 then do; 247 answer = "access violation"; 248 code = error_table_$action_not_performed; 249 go to RETURN; 250 end; 251 252 call hcs_$initiate (instaldir, instalname, "", 0, 0, old_cdtp, code); 253 if old_cdtp = null 254 then do; 255 answer = "cannot initiate old CDT"; 256 code = error_table_$action_not_performed; 257 go to RETURN; 258 end; 259 260 261 /* Go thru all channel entries in supplied CDT. */ 262 /* p is a cdtep */ 263 264 do i = 1 to user_cdtp -> CDT.current_size; 265 p = addr (user_cdtp -> cdt.cdt_entry (i)); 266 if verify (p -> CDTE.name, LEGAL) ^= 0 267 then do; 268 answer = "name not ASCII"; 269 code = error_table_$action_not_performed; 270 go to RETURN; 271 end; 272 273 /* Make sure that the channel is threaded in */ 274 275 on sub_error_ 276 begin; 277 call NEW_CDT_DAMAGE; 278 end; 279 280 if p -> CDTE.in_use > NOW_FREE 281 then do; 282 call cdt_mgr_$find_cdt_channel (user_cdtp, (p -> CDTE.name), cdtx, fnp_sw, code); 283 if code ^= 0 284 then do; 285 answer = "channel not threaded in. " || p -> CDTE.name; 286 go to RETURN; 287 end; 288 if fnp_sw 289 then do; 290 code = error_table_$action_not_performed; 291 answer = "non-FNP channel with FNP name " || p -> CDTE.name; 292 go to RETURN; 293 end; 294 if cdtx ^= i 295 then do; 296 code = error_table_$action_not_performed; 297 answer = "Multiple or misthreaded channel " || p -> CDTE.name; 298 go to RETURN; 299 end; 300 end; 301 revert sub_error_; 302 303 if ^valid_aim_range (p -> CDTE.access_class) 304 then do; 305 answer = "access_class range invalid"; 306 code = error_table_$action_not_performed; 307 go to RETURN; 308 end; 309 if p -> CDTE.service_type > MPX_SERVICE 310 then do; 311 answer = "illegal service type for " || p -> CDTE.name; 312 code = error_table_$action_not_performed; 313 go to RETURN; 314 end; 315 if p -> CDTE.charge_type > 16 316 then do; 317 answer = "illegal charge type for " || p -> CDTE.name; 318 code = error_table_$action_not_performed; 319 go to RETURN; 320 end; 321 if (p -> CDTE.line_type < LINE_TELNET) | (p -> CDTE.line_type > max_line_type) 322 then do; 323 answer = "illegal line type for " || p -> CDTE.name; 324 code = error_table_$action_not_performed; 325 go to RETURN; 326 end; 327 328 329 330 if p -> CDTE.initial_terminal_type ^= "" 331 then do; 332 call ttt_info_$terminal_data (p -> CDTE.initial_terminal_type, (p -> CDTE.line_type), 0, null, 333 code); 334 if code ^= 0 335 then do; 336 answer = "illegal terminal type for " || p -> CDTE.name; 337 code = error_table_$action_not_performed; 338 return; 339 end; 340 341 end; 342 end; 343 344 /* protect active multiplexers from deletion or changes in service type */ 345 346 on sub_error_ call OLD_CDT_DAMAGE; 347 348 do i = 1 to hbound (old_cdtp -> CDT.fnp_entry, 1); 349 if old_cdtp -> CDT.fnp_entry (i).daughter ^= 0 350 then call protect_mpxes (old_cdtp -> CDT.fnp_entry (i).daughter, 351 old_cdtp -> CDT.fnp_entry (i).daughter_count); 352 end; 353 if old_cdtp -> CDT.threads.daughter ^= 0 354 then call protect_mpxes (old_cdtp -> CDT.threads.daughter, old_cdtp -> CDT.threads.daughter_count); 355 356 revert sub_error_; 357 358 /* Individual items in supplied CDT look ok. 359* Now, build a new CDT in a temporary segment, by merging the old one with the supplied one. 360* We copy the old one into the temporary segment and then start making changes to that copy. 361* Although comments speak of examining and making changes to the old one, the code actually references the copy. 362* Since user pointers to CDT entries are kept, we must not change the position of any existing CDT entry. */ 363 364 call get_temp_segment_ ("up_cdt_", new_cdtp, code); 365 if new_cdtp = null 366 then do; 367 call sys_log_$error_log (2, code, "up_cdt_", "cannot make temp"); 368 go to RETURN; 369 end; 370 movelen = 371 wordno (addr (user_cdtp -> CDT.cdt_entry (1))) /* size of header plus the FNP entries */ 372 + old_cdtp -> CDT.current_size * size (cdte);/* plus the cdt entries */ 373 new_cdtp -> movetable = old_cdtp -> movetable; /* Shlup */ 374 375 /* NOTHING should reference off of old_cdtp from here to the final */ 376 /* stage of the installation. */ 377 378 /* copy header of new cdt over old cdt header, except for meters. */ 379 380 new_cdtp -> CDT.author.lock = ""b; 381 new_cdtp -> CDT.author.proc_group_id = user_cdtp -> CDT.author.proc_group_id; 382 new_cdtp -> CDT.author.table = user_cdtp -> CDT.author.table; 383 new_cdtp -> CDT.author.w_dir = user_cdtp -> CDT.author.w_dir; 384 new_cdtp -> CDT.author.last_install_time = clock (); 385 new_cdtp -> CDT.max_size = user_cdtp -> CDT.max_size; 386 /* current_size gets set below, while adding channel entries */ 387 new_cdtp -> CDT.version = CDT_version; 388 389 new_cdtp -> CDT.acceptable_fnp_tbf = user_cdtp -> CDT.acceptable_fnp_tbf; 390 new_cdtp -> CDT.spare_channel_count = user_cdtp -> CDT.spare_channel_count; 391 392 /* copy FNP entries of new CDT into old CDT, except for dynamic stuff */ 393 394 do i = 1 to hbound (new_cdtp -> CDT.fnp_entry, 1);/* scan the FNP entries */ 395 p = addr (new_cdtp -> CDT.fnp_entry (i)); /* p points to an old FNP entry */ 396 q = addr (user_cdtp -> CDT.fnp_entry (i)); /* q points to a new FNP entry */ 397 398 if p -> FNPE.state ^= FNP_FREE & q -> FNPE.state ^= FNP_FREE 399 then do; /* both in use */ 400 call copy_fnpe; /* does not disturb threads ! */ 401 p -> FNPE.current_service_type = p -> FNPE.service_type; 402 call merge_subtrees (addr (p -> FNPE.threads), addr (q -> FNPE.threads)); 403 /* p old, q new */ 404 end; 405 else if p -> FNPE.state = FNP_FREE & q -> FNPE.state > FNP_FREE 406 then do; /* adding FNP */ 407 call copy_fnpe; /* not including threads */ 408 call init_mpxe (addr (p -> FNPE.mpxe)); 409 p -> FNPE.state = NOT_CONFIGURED; 410 unspec (p -> FNPE.threads) = ""b; 411 p -> FNPE.threads.next_sister, p -> FNPE.threads.prev_sister = -2; 412 p -> FNPE.threads.mother = 0; 413 p -> FNPE.threads.daughter, p -> FNPE.threads.daughter_count = 0; 414 call add_subtree (addr (q -> FNPE.threads)); 415 /* add them all */ 416 end; 417 else if p -> FNPE.state ^= FNP_FREE & q -> FNPE.state = FNP_FREE 418 then do; /* deleteing FNP */ 419 call delete_subtree (addr (p -> FNPE.threads)); 420 p -> FNPE.service_type = INACTIVE; 421 p -> FNPE.current_service_type = INACTIVE; 422 unspec (p -> FNPE.threads) = ""b; 423 end; 424 end; 425 426 p, q = null; /* until something else defines them */ 427 428 call merge_subtrees (addr (new_cdtp -> cdt.threads), addr (user_cdtp -> cdt.threads)); 429 /** All the channels are merged and updated */ 430 431 /* We are finally ready to update the actual CDT and get the access set */ 432 433 instalp = old_cdtp; /* return ptr to >sc1>cdt */ 434 call hcs_$delentry_seg (user_cdtp, code); /* delete the new CDT (the one they gave us to install) */ 435 436 user_cdtp = null; /* here or gone, its not interesting */ 437 438 wordcount = wordno (addr (user_cdtp -> CDT.cdt_entry (1))) + new_cdtp -> CDT.current_size * size (cdte); 439 movelen = wordcount; 440 old_cdtp -> movetable = new_cdtp -> movetable; /* Copy new CDT over old one fast. */ 441 442 call release_temp_segment_ ("up_cdt_", new_cdtp, (0)); 443 /* nuf */ 444 new_cdtp = null; 445 446 call hcs_$set_bc (instaldir, instalname, 36 * wordcount, code); 447 call hcs_$set_safety_sw (instaldir, instalname, "1"b, code); 448 449 /* old_cdtp is the new, live, cdt in >sc1. 450* Now make one last pass and attach/listen/remove the channels which 451* were reconfigured by the installation of the new CDT. */ 452 453 do i = 1 to old_cdtp -> CDT.current_size; 454 q = addr (old_cdtp -> CDT.cdt_entry (i)); 455 456 /* The following tests for special values of CDTE.in_use must remain in the order of 457* decreasing special values, so the tests for >= will work right. The purpose of the >= 458* tests is to let us add a large number to CDTE.in_use, preserving its value 459* and setting a flag on the CDTE at the same time */ 460 461 if q -> CDTE.in_use = UNDELETE_THIS_CHANNEL 462 then do; /* a configured channel was deleted, then added back */ 463 q -> CDTE.in_use = NOW_HUNG_UP; /* so we can use it immediately */ 464 q -> CDTE.current_service_type = q -> CDTE.service_type; 465 if q -> CDTE.current_service_type = ANS_SERVICE 466 then begin; 467 declare listen bit (1); 468 listen = "0"b; 469 if q -> CDTE.mother < 0 470 then if old_cdtp -> CDT.fnp_entry (-q -> CDTE.mother).mpxe.state = MPX_UP 471 then listen = "1"b; 472 else ; 473 else if q -> CDTE.mother > 0 474 then do; 475 mpxep = addr (old_cdtp -> CDT.cdt_entry (q -> CDTE.mother).initial_command); 476 if mpxe.state = MPX_UP 477 then listen = "1"b; 478 end; 479 else listen = "1"b; /* top level in ANS_SERVICE? why not! */ 480 if listen & q -> cdte.state ^= TTY_MASKED 481 then do; 482 call asu_$attach_channel (q, code); 483 call asu_$asu_listen (q, code); 484 end; 485 end; 486 end; 487 else if q -> CDTE.in_use >= DELETE_THIS_CHANNEL 488 then do; 489 q -> CDTE.in_use = q -> CDTE.in_use - DELETE_THIS_CHANNEL; 490 /* put back real in_use value */ 491 if q -> CDTE.current_service_type ^= MPX_SERVICE 492 then call asu_$asu_remove (q); /* so asu_remove will do the right thing */ 493 if q -> CDTE.tra_vec = WAIT_REMOVE /* should not be true for MPX's */ 494 then /* if dialup_ will remove channel after destroying process */ 495 q -> CDTE.tra_vec = WAIT_DELETE_CHANNEL; 496 /* tell dialup_ to mark the cdte deleted, instead */ 497 else do; 498 q -> CDTE.in_use = CHANNEL_DELETED; 499 /* but if no process, mark it deleted now */ 500 q -> CDTE.current_service_type = INACTIVE; 501 /* inactive */ 502 503 end; 504 end; 505 else if q -> CDTE.in_use = LISTEN_TO_THIS_CHANNEL 506 then do; /* We assume CDTE.dim did not change */ 507 /* (because the old line was never removed) */ 508 line_type = q -> CDTE.line_type; /* Unpack new line type */ 509 call astty_$tty_order (q, "set_line_type", addr (line_type), code); 510 511 if line_type = LINE_TELNET 512 then do; 513 service_type = q -> CDTE.service_type; 514 /* Unpack service type */ 515 call astty_$tty_order (q, "set_service_type", addr (service_type), code); 516 end; 517 518 if q -> cdte.state ^= TTY_MASKED 519 then call asu_$asu_listen (q, code); 520 end; 521 else if q -> CDTE.in_use = ATTACH_THIS_CHANNEL 522 then do; 523 if q -> CDTE.state ^= TTY_MASKED 524 then do; 525 call asu_$attach_channel (q, code); 526 call asu_$asu_listen (q, code); 527 end; 528 end; 529 else if q -> CDTE.in_use >= REMOVE_THIS_CHANNEL 530 then do; 531 q -> CDTE.in_use = q -> CDTE.in_use - REMOVE_THIS_CHANNEL; 532 /* restore real value of in_use */ 533 call asu_$asu_remove (q); /* so asu_remove will do the right thing */ 534 end; 535 end; 536 537 code = 0; 538 539 RETURN: 540 return; 541 542 543 /* Internal procedure to change the service type of a channel */ 544 545 change_service_type: 546 procedure (p, q); 547 548 dcl (p, q) pointer; /* p is FROM, q is TO */ 549 550 /* automatic */ 551 552 dcl jumpx fixed bin; 553 554 /* program */ 555 556 call sys_log_ (0, "up_cdt_: changing service type for channel ^a ^a from ^d^[^x(cur:^d)^;^s^] to ^d", 557 q -> CDTE.name, q -> CDTE.comment, p -> CDTE.service_type, 558 (p -> CDTE.service_type ^= p -> CDTE.current_service_type), p -> CDTE.current_service_type, 559 q -> CDTE.service_type); 560 561 if p -> CDTE.current_service_type < 1 | p -> CDTE.current_service_type > 8 | q -> CDTE.service_type < 1 562 | q -> CDTE.service_type > 8 | q -> CDTE.service_type = 5 563 then do; 564 call sys_log_ (2, "up_cdt_: Service type out of range for ^a", q -> CDTE.name); 565 return; /* we'll take a fault if we try to continue */ 566 end; 567 568 jumpx = 10 * p -> CDTE.current_service_type + q -> CDTE.service_type; 569 go to change (jumpx); 570 571 change (11): /* ANS -> ANS */ 572 change (22): /* FTP -> FTP */ 573 change (33): /* MC -> MC */ 574 change (44): /* SLAVE -> SLAVE */ 575 change (66): /* OUT -> OUT */ 576 change (77): /* INACTIVE -> INACTIVE */ 577 change (88): /* MPX -> MPX */ 578 return; 579 580 change (12): /* ANS -> FTP */ 581 p -> CDTE.in_use = LISTEN_TO_THIS_CHANNEL; 582 return; 583 584 change (13): /* ANS -> MC */ 585 p -> CDTE.in_use = p -> CDTE.in_use + REMOVE_THIS_CHANNEL; 586 goto tell_user; 587 588 change (14): /* ANS -> SLAVE */ 589 change (17): /* ANS -> INACTIVE */ 590 change (18): /* ANS -> MPX */ 591 p -> CDTE.in_use = p -> CDTE.in_use + REMOVE_THIS_CHANNEL; 592 goto tell_user; 593 594 change (16): /* ANS -> OUT */ 595 return; 596 597 change (21): /* FTP -> ANS */ 598 p -> CDTE.in_use = LISTEN_TO_THIS_CHANNEL; 599 return; 600 601 change (23): /* FTP -> MC */ 602 change (24): /* FTP -> SLAVE */ 603 change (27): /* FTP -> INACTIVE */ 604 change (28): /* FTP -> MPX */ 605 p -> CDTE.in_use = p -> CDTE.in_use + REMOVE_THIS_CHANNEL; 606 goto tell_user; 607 608 change (26): /* FTP -> OUT */ 609 p -> CDTE.in_use = LISTEN_TO_THIS_CHANNEL; 610 return; 611 612 change (31): /* MC -> ANS */ 613 change (32): /* MC -> FTP */ 614 change (34): /* MC -> SLAVE */ 615 change (36): /* MC -> OUT */ 616 change (37): /* MC -> INACTIVE */ 617 change (38): /* MC -> MPX */ 618 /* Don't attach a former MC channel. If MC is still using it, the operator would 619* get upset. Let attach command or next bootload attach it. */ 620 return; 621 622 change (41): /* SLAVE -> ANS */ 623 change (42): /* SLAVE -> FTP */ 624 p -> CDTE.in_use = ATTACH_THIS_CHANNEL; 625 return; 626 change (43): /* SLAVE -> MC */ 627 change (47): /* SLAVE -> INACTIVE */ 628 change (48): /* SLAVE -> MPX */ 629 return; 630 631 change (46): /* SLAVE -> OUT */ 632 p -> CDTE.in_use = ATTACH_THIS_CHANNEL; 633 return; 634 635 change (51): /* DIAL -> ANS */ 636 change (52): /* DIAL -> FTP */ 637 p -> CDTE.in_use = ATTACH_THIS_CHANNEL; 638 return; 639 change (53): /* DIAL -> MC */ 640 change (54): /* DIAL -> SLAVE */ 641 change (56): /* DIAL -> OUT */ 642 change (57): /* DIAL -> INACTIVE */ 643 change (58): /* DIAL -> NPX */ 644 return; 645 646 change (61): /* OUT -> ANS */ 647 return; 648 649 change (62): /* OUT -> FTP */ 650 p -> CDTE.in_use = LISTEN_TO_THIS_CHANNEL; 651 return; 652 653 change (63): /* OUT -> MC */ 654 change (67): /* OUT -> INACTIVE */ 655 change (68): /* OUT -> MPX */ 656 p -> CDTE.in_use = p -> CDTE.in_use + REMOVE_THIS_CHANNEL; 657 goto tell_user; 658 659 change (64): /* OUT -> SLAVE */ 660 p -> CDTE.in_use = p -> CDTE.in_use + REMOVE_THIS_CHANNEL; 661 goto tell_user; 662 663 change (71): /* INACTIVE -> ANS */ 664 change (72): /* INACTIVE -> FTP */ 665 change (76): /* INACTIVE -> OUT */ 666 p -> CDTE.in_use = ATTACH_THIS_CHANNEL; 667 return; 668 change (73): /* INACTIVE -> MC */ 669 change (74): /* INACTIVE -> SLAVE */ 670 change (78): /* INACTIVE -> MPX */ 671 return; 672 673 change (81): /* MPX -> ANS */ 674 change (82): /* MPX -> FTP */ 675 change (83): /* MPX -> MC */ 676 change (84): /* MPX -> SLAVE */ 677 change (85): /* MPX -> DIAL */ 678 change (86): /* MPX -> OUT */ 679 change (87): /* MPX -> INACTIVE */ 680 p -> CDTE.in_use = p -> CDTE.in_use + REMOVE_THIS_CHANNEL; 681 return; 682 683 tell_user: 684 if p -> CDTE.in_use >= NOW_LOGGED_IN + REMOVE_THIS_CHANNEL 685 then /* if somebody is there, tell them why it's going to hang up */ 686 call asu_$write_chn_message (p, as_error_table_$chn_svc_changed, debg, code); 687 return; 688 end change_service_type; 689 690 /* Internal proc to copy new FNP entry into old FNP entry */ 691 692 copy_fnpe: 693 procedure; /* p and q are implicit parameters */ 694 695 p -> FNPE.type = q -> FNPE.type; 696 p -> FNPE.memory = q -> FNPE.memory; 697 p -> FNPE.service_type = q -> FNPE.service_type; 698 p -> FNPE.mpx_type = q -> FNPE.mpx_type; 699 p -> FNPE.coreimage = q -> FNPE.coreimage; 700 p -> FNPE.nlslas = q -> FNPE.nlslas; 701 p -> FNPE.nhslas = q -> FNPE.nhslas; 702 return; 703 704 end copy_fnpe; 705 706 /* Internal procedure to copy NEW cdt entry over OLD cdt entry */ 707 708 copy_cdte: 709 proc (from_cdtep, to_cdtep); 710 711 declare (from_cdtep, to_cdtep) pointer; 712 713 to_cdtep -> CDTE.access_class = from_cdtep -> CDTE.access_class; 714 to_cdtep -> CDTE.comment = from_cdtep -> CDTE.comment; 715 to_cdtep -> CDTE.charge_type = from_cdtep -> CDTE.charge_type; 716 to_cdtep -> CDTE.service_type = from_cdtep -> CDTE.service_type; 717 to_cdtep -> CDTE.current_service_type = from_cdtep -> CDTE.service_type; 718 to_cdtep -> CDTE.line_type = from_cdtep -> CDTE.line_type; 719 to_cdtep -> CDTE.initial_terminal_type = from_cdtep -> CDTE.initial_terminal_type; 720 if ^(from_cdtep -> CDTE.autobaud) 721 then to_cdtep -> CDTE.baud_rate = from_cdtep -> CDTE.baud_rate; 722 to_cdtep -> CDTE.modem_type = from_cdtep -> CDTE.modem_type; 723 to_cdtep -> CDTE.answerback = from_cdtep -> CDTE.answerback; 724 string (to_cdtep -> CDTE.flags) = string (from_cdtep -> CDTE.flags); 725 to_cdtep -> CDTE.mpx_type = from_cdtep -> CDTE.mpx_type; 726 to_cdtep -> CDTE.mpx_service = from_cdtep -> CDTE.mpx_service; 727 if to_cdtep -> CDTE.current_service_type ^= MPX_SERVICE 728 then to_cdtep -> CDTE.initial_command = from_cdtep -> CDTE.initial_command; 729 return; 730 731 end copy_cdte; 732 733 734 735 merge_subtrees: 736 procedure (old_thread_ptr, new_thread_ptr); 737 738 739 declare (old_thread_ptr, new_thread_ptr) 740 pointer; 741 742 declare 1 old_threads aligned like channel_threads based (old_thread_ptr); 743 declare 1 new_threads aligned like channel_threads based (new_thread_ptr); 744 745 746 declare old_x fixed bin; /* current position in old tree (cdtx) */ 747 declare new_x fixed bin; /* current position in new tree (cdtx) */ 748 749 declare (old_check, new_check) fixed bin; /* chain chase counters */ 750 declare (old_limit, new_limit) fixed bin; /* copied so that thread_in wont disturb */ 751 752 /**** Note that this merge takes place in place in the "old" cdt. */ 753 /**** This works because thread_in's always happen in the part of */ 754 /**** the tree that has already been visited. */ 755 756 /**** the following cases happen when channels stop being multiplexers */ 757 /**** or start, for that matter */ 758 759 if old_threads.daughter_count = 0 | /** **/ 760 new_threads.daughter_count = 0 761 then do; 762 763 if old_threads.daughter_count = 0 & new_threads.daughter_count = 0 764 /* its winter, and the trees are bare */ 765 then return; 766 767 if old_threads.daughter_count = 0 768 then call add_subtree (new_thread_ptr); /* easy case */ 769 770 if new_threads.daughter_count = 0 771 then call delete_subtree (old_thread_ptr); 772 /* another easy case */ 773 return; 774 end; 775 776 old_x = old_threads.daughter; 777 if old_x = 0 778 then call OLD_CDT_DAMAGE; /* dcount ^= ndaughters */ 779 new_x = new_threads.daughter; 780 if new_x = 0 781 then call NEW_CDT_DAMAGE; /* dcount ^= ndaughters */ 782 783 old_check, new_check = 0; /* check them off as we use them up */ 784 old_limit = old_threads.daughter_count; 785 new_limit = new_threads.daughter_count; 786 787 COMPARE_TWO_CHANNELS: /* This is the basic loop. */ 788 begin; 789 declare 1 ocdte aligned like cdte based (addr (new_cdtp -> CDT.cdt_entry (old_x))); 790 declare 1 ncdte aligned like cdte based (addr (user_cdtp -> CDT.cdt_entry (new_x))); 791 792 793 /**** The RULES: ****/ 794 /**** ** if the old name is alphaless than the new name, than it is a **/ 795 /**** deleted channel, for if it were in the new tree, we would have **/ 796 /**** seen it already. **/ 797 /**** ** if the old name is equal to the new name, things are peachy. **/ 798 /**** ** if the old name is greater than the new name, then the new name **/ 799 /**** must be added. For if it were not, we would have already seen the **/ 800 /**** equal old name. ******/ 801 802 803 if ocdte.name < ncdte.name 804 then 805 DELETE: 806 do; /* Deleted Channel */ 807 call delete_channel (old_x); /* deletes children too. */ 808 old_x = ocdte.threads.next_sister; 809 old_check = old_check + 1; 810 if old_check > old_limit 811 then call OLD_CDT_DAMAGE; 812 813 if old_x = 0 /* run out, rest must be added */ 814 then 815 NO_MORE_OLD: 816 begin; /* construct dummy thread block */ 817 declare 1 t aligned like channel_threads; 818 unspec (t) = ""b; 819 t.daughter_count = new_threads.daughter_count - new_check; 820 t.daughter = new_x; /* start by adding this. */ 821 t.mother = new_threads.mother; 822 t.next_sister, t.prev_sister = 0; 823 /* lie */ 824 call add_subtree (addr (t)); 825 /* adds children too */ 826 return; /* merge complete at this level */ 827 end NO_MORE_OLD; 828 829 go to COMPARE_TWO_CHANNELS; 830 end DELETE; 831 832 else if ocdte.name = ncdte.name 833 then 834 MERGE: 835 do; /* Ha HA! */ 836 837 call update_channel (old_x, new_x);/* change data */ 838 old_check = old_check + 1; /* use up channels */ 839 if old_check > old_limit 840 then call OLD_CDT_DAMAGE; 841 new_check = new_check + 1; 842 if new_check > new_limit 843 then call NEW_CDT_DAMAGE; 844 if ocdte.threads.daughter ^= 0 & ncdte.threads.daughter ^= 0 845 then call merge_subtrees (addr (ocdte.threads), addr (ncdte.threads)); 846 else if ocdte.threads.daughter ^= 0 847 then call delete_subtree (addr (ocdte.threads)); 848 else call add_subtree (addr (ncdte.threads)); 849 /* RECURSE */ 850 if ocdte.next_sister = 0 /** No more there */ 851 & ncdte.next_sister = 0 /** chains at end */ 852 then return; 853 old_x = ocdte.threads.next_sister; /** chase both chains **/ 854 new_x = ncdte.threads.next_sister; /** before trying to add remainder **/ 855 if old_x = 0 /** to avoid adding this new_x twice */ 856 then go to NO_MORE_OLD; 857 if new_x = 0 858 then 859 NO_MORE_NEW: 860 begin; /* the rest of the old chain goes away */ 861 declare 1 t aligned like channel_threads; 862 unspec (t) = ""b; 863 t.daughter_count = old_threads.daughter_count - old_check; 864 t.mother = old_threads.mother; 865 t.next_sister, t.prev_sister = 0; 866 t.daughter = old_x; 867 call delete_subtree (addr (t)); 868 return; /* End of merge at this level */ 869 end; 870 go to COMPARE_TWO_CHANNELS; 871 end MERGE; 872 873 else 874 ADD: 875 do; /* old > new, new is added ! */ 876 call add_channel (new_x); /* allocates cdte, fills in, threads in, and recurses over children */ 877 new_check = new_check + 1; 878 if new_check > new_limit 879 then call NEW_CDT_DAMAGE; 880 new_x = ncdte.threads.next_sister; 881 if new_x = 0 882 then go to NO_MORE_NEW; 883 go to COMPARE_TWO_CHANNELS; 884 end ADD; 885 886 end COMPARE_TWO_CHANNELS; /* never get here */ 887 end merge_subtrees; 888 889 890 add_subtree: 891 procedure (thread_ptr); /* simplified version that just adds */ 892 893 declare thread_ptr pointer; 894 declare 1 threads aligned like channel_threads based (thread_ptr); 895 declare x fixed bin; 896 declare check fixed bin; 897 declare original_daughter_count 898 fixed bin; 899 900 check = 0; 901 if threads.daughter_count = 0 902 then return; 903 904 do x = threads.daughter repeat (user_cdtp -> CDT.cdt_entry (x).threads.next_sister) while (x ^= 0); 905 906 check = check + 1; 907 if check > threads.daughter_count 908 then call NEW_CDT_DAMAGE; 909 call add_channel (x); /* easy enough */ 910 end; 911 return; 912 913 delete_subtree: 914 entry (thread_ptr); 915 916 check = 0; 917 if threads.daughter_count = 0 918 then return; 919 920 original_daughter_count = threads.daughter_count; 921 922 do x = threads.daughter repeat (new_cdtp -> CDT.cdt_entry (x).threads.next_sister) while (x ^= 0); 923 check = check + 1; 924 if check > original_daughter_count 925 then call OLD_CDT_DAMAGE; 926 call delete_channel$$no_protect (x); 927 end; 928 end add_subtree; 929 930 931 932 /**** Okay, now all we need are procedures to handle the cases */ 933 934 update_channel: 935 procedure (oldx, newx); 936 937 /*** Take care of channels in both cdts, that may have stuff to do to them */ 938 /*** Note that we merge from new into old. */ 939 940 declare (oldx, newx) fixed bin; 941 942 declare 1 ocdte aligned like cdte based (addr (new_cdtp -> CDT.cdt_entry (oldx))); 943 declare 1 ncdte aligned like cdte based (addr (user_cdtp -> CDT.cdt_entry (newx))); 944 945 946 if ocdte.in_use = CHANNEL_DELETED 947 then do; /* old channel is marked deleted */ 948 ocdte.in_use = UNDELETE_THIS_CHANNEL; /* we are un-deleting it */ 949 call sys_log_ (0, "up_cdt_: Adding previously-deleted channel ^a ^a", ocdte.name, ocdte.comment); 950 end; 951 952 953 /* For channels that are configured and might be in use, changing the service type or line type requires some action 954* (like doing a bump, a hangup, or a listen), in addition to changing the service_type or line_type variables */ 955 956 if ocdte.in_use ^= NOT_CONFIGURED & ocdte.in_use ^= UNDELETE_THIS_CHANNEL 957 then do; /* only for real channels */ 958 959 /**** Check for change in service type */ 960 if ocdte.service_type ^= ncdte.service_type 961 then call change_service_type (addr (ocdte), addr (ncdte)); 962 963 /* Check for change in line type */ 964 if ocdte.line_type ^= ncdte.line_type 965 then do; 966 if ((ncdte.service_type = ANS_SERVICE) 967 /** if giving to AS */ 968 | (ncdte.service_type = FTP_SERVICE)) 969 /** **/ 970 & ((ocdte.current_service_type = ANS_SERVICE) 971 /** & now held by AS */ 972 | (ocdte.current_service_type = FTP_SERVICE)) & ocdte.in_use <= NOW_LISTENING 973 /* noone connected */ 974 then do; /* use old CDTE to get old CDTE.dim, etc */ 975 /* stop listening so can reset old line type later */ 976 call astty_$tty_order (addr (ocdte), "hangup", null, code); 977 ocdte.in_use = LISTEN_TO_THIS_CHANNEL; 978 end; 979 end; 980 end; 981 982 /* Check for change in access class */ 983 if ^equal_aim_ranges (ocdte.access_class (*), ncdte.access_class (*)) 984 then do; 985 old_auth_string = display_access_class_$range (ocdte.access_class (*)); 986 auth_string = display_access_class_$range (ncdte.access_class (*)); 987 utep = null (); /* start assuming noone */ 988 call sys_log_ (0, "up_cdt_: changing access class of channel ^a from ^a to ^a", ocdte.name, 989 old_auth_string, auth_string); 990 if ((ocdte.current_service_type = ANS_SERVICE) 991 /** **/ 992 | (ocdte.current_service_type = FTP_SERVICE)) 993 then do; 994 if unspec (ocdte.process) ^= ""b 995 /* is this possibly a valid process? */ 996 then utep = ocdte.process; /* Get ptr to process now using. */ 997 if utep ^= null 998 then /* .. if any */ 999 if ute.active >= NOW_LOGGED_IN 1000 & ^aim_check_$in_range (ute.process_authorization, ncdte.access_class) 1001 & ute.preempted = 0 1002 then do; 1003 old_auth_string = display_access_class_$range (ncdte.access_class); 1004 auth_string = display_access_class_ (ute.process_authorization); 1005 call sys_log_ (1, 1006 "up_cdt_: bumping ^a.^a, channel ^a access class ^a no longer includes user authorization ^a.", 1007 ute.person, ute.project, ocdte.name, old_auth_string, auth_string); 1008 call asu_$bump_code (utep, as_error_table_$chn_auth_excludes, debg, code, 1009 (0) /* NO GRACE ! */); 1010 end; 1011 end; 1012 end; 1013 1014 /* Copy other stuff from new CDTE into merged one */ 1015 call copy_cdte (addr (ncdte), addr (ocdte)); 1016 end update_channel; 1017 1018 1019 delete_channel: 1020 procedure (cdtx); 1021 1022 declare cdtx fixed bin; 1023 declare no_protect bit (1) aligned; 1024 1025 no_protect = "0"b; /* Protect by using DELETE_THIS_CHANNEL */ 1026 go to Join; 1027 1028 delete_channel$$no_protect: 1029 entry (cdtx); 1030 1031 no_protect = "1"b; /* Deleting parent mpx, definitively flush this */ 1032 1033 Join: 1034 declare 1 dcdte aligned like cdte based (addr (new_cdtp -> CDT.cdt_entry (cdtx))); 1035 1036 call sys_log_ (0, "up_cdt_: Deleting channel ^a ^a", dcdte.name, dcdte.comment); 1037 1038 if dcdte.threads.daughter_count > 0 1039 then call delete_subtree (addr (dcdte.threads)); /* get rid of kiddies */ 1040 /* since we wont decend further */ 1041 /* note that _subtree calls no_protect */ 1042 1043 /***** Ignoring in_use for no_protect is allowed because */ 1044 /***** an inactive multiplexer cannot have active subchannels */ 1045 1046 if dcdte.in_use = NOT_CONFIGURED | no_protect 1047 then /* if channel was never "live" */ 1048 do; 1049 dcdte.in_use = NOW_FREE; 1050 on sub_error_ call OLD_CDT_DAMAGE; 1051 call cdt_mgr_$thread_out_cdt_channel (new_cdtp, cdtx); 1052 /* free the CDTE immediately */ 1053 end; 1054 else do; /* otherwise take channel out of service in several steps */ 1055 /* no matter what the channel's service type is, */ 1056 if dcdte.in_use >= NOW_DIALED /* if somebody there, tell them what's happening */ 1057 then call asu_$write_chn_message (addr (dcdte), as_error_table_$chn_deleted, debg, code); 1058 dcdte.in_use = dcdte.in_use + DELETE_THIS_CHANNEL; 1059 /* set reminder to delete it later */ 1060 end; 1061 end delete_channel; 1062 1063 1064 add_channel: 1065 procedure (cdtx); 1066 1067 declare cdtx fixed bin; 1068 declare 1 acdte aligned like cdte based (addr (user_cdtp -> CDT.cdt_entry (cdtx))); 1069 declare nx fixed bin; 1070 1071 do nx = 1 to new_cdtp -> CDT.current_size /* find a free entry */ 1072 while (new_cdtp -> CDT.cdt_entry (nx).in_use ^= NOW_FREE); 1073 end; 1074 if nx = new_cdtp -> CDT.current_size + 1 1075 then /* if no free ones within the old CDT */ 1076 do; 1077 if nx > hbound (new_cdtp -> CDT.cdt_entry, 1) 1078 then do; 1079 answer = "Too many channels defined."; 1080 code = error_table_$action_not_performed; 1081 go to RETURN; 1082 end; 1083 new_cdtp -> CDT.current_size = nx; /* add a new entry to the end * */ 1084 end; 1085 1086 begin; 1087 declare 1 ncdte aligned like cdte based (addr (new_cdtp -> cdt.cdt_entry (nx))); 1088 ncdte.in_use = NOT_CONFIGURED; /* new chn */ 1089 ncdte.name = acdte.name; 1090 call copy_cdte (addr (acdte), addr (ncdte)); /* FROM, TO */ 1091 if ncdte.line_type = LINE_TELNET 1092 then ncdte.in_use = ATTACH_THIS_CHANNEL; 1093 ncdte.event = 0; 1094 ncdte.tra_vec = 0; 1095 ncdte.count = 0; 1096 ncdte.twx = 0; 1097 ncdte.state = 0; 1098 ncdte.current_terminal_type = ""; 1099 ncdte.tty_id_code = ""; 1100 ncdte.process = null; 1101 ncdte.dialed_to_procid = ""b; 1102 ncdte.next_channel = 0; 1103 ncdte.n_dialups = 0; /* Reset meters. */ 1104 ncdte.n_logins = 0; 1105 ncdte.dialed_up_time = 0; 1106 ncdte.dialup_time = 0; 1107 if ncdte.service_type = MPX_SERVICE 1108 then call init_mpxe (addr (ncdte.initial_command)); 1109 on sub_error_ call NEW_CDT_DAMAGE; 1110 call cdt_mgr_$thread_in_cdt_channel (new_cdtp, nx); 1111 auth_string = display_access_class_$range (ncdte.access_class); 1112 call sys_log_ (0, "up_cdt_: Adding channel ^a ^a ^a", ncdte.name, ncdte.comment, auth_string); 1113 call add_subtree (addr (acdte.threads)); 1114 1115 end; 1116 end add_channel; 1117 1118 1119 init_mpxe: 1120 procedure (nmpxep); 1121 1122 declare nmpxep pointer; 1123 1124 nmpxep -> mpxe.current_service_type = INACTIVE; /* The first load has to be explicit */ 1125 nmpxep -> mpxe.n_bootloads = 0; 1126 nmpxep -> mpxe.time_initial_load = 0; 1127 nmpxep -> mpxe.time_last_load = 0; 1128 nmpxep -> mpxe.time_last_crash = 0; 1129 nmpxep -> mpxe.time_load_start = 0; 1130 nmpxep -> mpxe.last_tbf = 0; 1131 return; 1132 end init_mpxe; 1133 1134 1135 protect_mpxes: 1136 procedure (muxx, d_limit); /* This is recursive ... */ 1137 1138 declare muxx fixed bin unal; /* always cdtx, never fnpx */ 1139 declare d_limit fixed bin unal; 1140 declare check fixed bin; 1141 declare newx fixed bin; 1142 declare x fixed bin; 1143 1144 /* we visit each MUX in the old cdt (old_cdtp) */ 1145 1146 check = 0; 1147 do x = muxx repeat (old_cdtp -> CDT.cdt_entry (x).threads.next_sister) while (x ^= 0); 1148 p = addr (old_cdtp -> CDT.cdt_entry (x)); 1149 check = check + 1; 1150 if check > d_limit | check > old_cdtp -> cdt.n_cdtes 1151 then call OLD_CDT_DAMAGE; 1152 if p -> CDTE.current_service_type = MPX_SERVICE 1153 then do; 1154 mpxep = addr (p -> CDTE.initial_command); 1155 if (mpxe.state ^= FNP_DOWN) & (mpxe.state ^= FNP_UNKNOWN) 1156 then do; /* found an active one */ 1157 call cdt_mgr_$find_cdt_channel (user_cdtp, (p -> cdte.name), newx, ("0"b), code); 1158 if code = 0 1159 then do; 1160 q = addr (user_cdtp -> CDT.cdt_entry (newx)); 1161 if q -> CDTE.service_type ^= MPX_SERVICE 1162 then do; 1163 answer = 1164 "Cant change service type for active mpx " || p -> CDTE.name; 1165 code = error_table_$action_not_performed; 1166 go to RETURN; 1167 end; 1168 end; 1169 else do; 1170 answer = "cant delete active mpx " || p -> CDTE.name; 1171 code = error_table_$action_not_performed; 1172 go to RETURN; 1173 end; 1174 end; 1175 end; /* interesting state */ 1176 if p -> CDTE.threads.daughter_count > 0 1177 then call protect_mpxes (p -> CDTE.threads.daughter, p -> CDTE.threads.daughter_count); 1178 end; /* the doloop */ 1179 end protect_mpxes; 1180 1181 1182 OLD_CDT_DAMAGE: 1183 procedure; 1184 1185 go to OLD_CDT_DAMAGE_LABEL; /* place to hang breakpoint in debugging */ 1186 end OLD_CDT_DAMAGE; 1187 1188 OLD_CDT_DAMAGE_LABEL: /* the copy of the current CDT is sick. Retry */ 1189 if retry_count = 0 1190 then do; 1191 call sys_log_ (1, "up_cdt_: CDT thread damage in live CDT. Rethreading."); 1192 on sub_error_ 1193 begin; 1194 call find_condition_info_ (null, addr (auto_condition_info), (0)); 1195 sub_error_info_ptr = auto_condition_info.info_ptr; 1196 call sys_log_$error_log (1, code, "up_cdt_", "cdt_mgr_$thread: ^a.", 1197 sub_error_info.info_string); 1198 /***** Return, cdt_mgr_ will do what recovery it can. */ 1199 end; 1200 1201 call cdt_mgr_$thread (old_cdtp, code); 1202 if code ^= 0 1203 then go to GIVE_UP; 1204 call sys_log_ (1, "up_cdt_: Rethreading complete."); 1205 retry_count = 1; 1206 call cleanup; 1207 go to RETRY_INSTALLATION; 1208 1209 GIVE_UP: 1210 call sys_log_ (1, "up_cdt_: Repeated CDT threading errors. Installation aborted."); 1211 call cleanup; 1212 code = error_table_$action_not_performed; 1213 answer = "live CDT threading errors, shutdown and reboot to correct"; 1214 go to RETURN; 1215 end; 1216 1217 NEW_CDT_DAMAGE: 1218 procedure; 1219 answer = "CDT threading error(s) in supplied CDT"; 1220 code = error_table_$action_not_performed; 1221 go to RETURN; 1222 end; 1223 1224 valid_aim_range: 1225 procedure (range) returns (bit (1) aligned) reducible; 1226 1227 declare range (2) bit (72) aligned; 1228 1229 if ^aim_check_$greater_or_equal (range (2), range (1)) 1230 /* valid range ? */ 1231 then return ("0"b); 1232 if ^aim_check_$greater_or_equal (system_high, range (2)) 1233 /* valid for the system ? */ 1234 then return ("0"b); 1235 else return ("1"b); 1236 end valid_aim_range; 1237 1238 1239 equal_aim_ranges: 1240 procedure (r1, r2) returns (bit (1) aligned); /* the every bif would fix this */ 1241 declare (r1, r2) (2) bit (72) aligned; 1242 1243 return (aim_check_$equal (r1 (1), r2 (1)) & aim_check_$equal (r1 (2), r2 (2))); 1244 end equal_aim_ranges; 1245 1246 cleanup: 1247 procedure; 1248 1249 if new_cdtp ^= null 1250 then call release_temp_segment_ ("up_cdt_", new_cdtp, (0)); 1251 if old_cdtp ^= null 1252 then call hcs_$terminate_noname (old_cdtp, (0)); 1253 end cleanup; 1254 1255 1256 1 1 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 1 2* 1 3* Values for the "access mode" argument so often used in hardcore 1 4* James R. Davis 26 Jan 81 MCR 4844 1 5* Added constants for SM access 4/28/82 Jay Pattin 1 6* Added text strings 03/19/85 Chris Jones 1 7**/ 1 8 1 9 1 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 1 11 dcl ( 1 12 N_ACCESS init ("000"b), 1 13 R_ACCESS init ("100"b), 1 14 E_ACCESS init ("010"b), 1 15 W_ACCESS init ("001"b), 1 16 RE_ACCESS init ("110"b), 1 17 REW_ACCESS init ("111"b), 1 18 RW_ACCESS init ("101"b), 1 19 S_ACCESS init ("100"b), 1 20 M_ACCESS init ("010"b), 1 21 A_ACCESS init ("001"b), 1 22 SA_ACCESS init ("101"b), 1 23 SM_ACCESS init ("110"b), 1 24 SMA_ACCESS init ("111"b) 1 25 ) bit (3) internal static options (constant); 1 26 1 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 1 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 1 29 1 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 1 31 static options (constant); 1 32 1 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 1 34 static options (constant); 1 35 1 36 dcl ( 1 37 N_ACCESS_BIN init (00000b), 1 38 R_ACCESS_BIN init (01000b), 1 39 E_ACCESS_BIN init (00100b), 1 40 W_ACCESS_BIN init (00010b), 1 41 RW_ACCESS_BIN init (01010b), 1 42 RE_ACCESS_BIN init (01100b), 1 43 REW_ACCESS_BIN init (01110b), 1 44 S_ACCESS_BIN init (01000b), 1 45 M_ACCESS_BIN init (00010b), 1 46 A_ACCESS_BIN init (00001b), 1 47 SA_ACCESS_BIN init (01001b), 1 48 SM_ACCESS_BIN init (01010b), 1 49 SMA_ACCESS_BIN init (01011b) 1 50 ) fixed bin (5) internal static options (constant); 1 51 1 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 1257 1258 2 1 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 2 2 2 3 /* This include file declares the "author" substructure 2 4* in a form suitable for using the PL/I "like" attribute. 2 5* 2 6* Written 750304 by PG 2 7**/ 2 8 2 9 dcl 1 author_dcl aligned based, 3 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 3 2 3 3 /* the "author" items must always be the first ones in the table. The 3 4* module which moves the converted table to the System Control process 3 5* fills in these data items and assumes them to be at the head of the segment 3 6* regardless of the specific table's actual declaration. The variables 3 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 3 8* respectively. For tables installed in multiple processes, these 3 9* are to be used to lock out multiple installations. */ 3 10 3 11 /* Lock should be used as a modification lock. Since, in general, 3 12* entries may not be moved in system tables, even by installations, 3 13* it is sufficient for only installers and programs that change threads 3 14* to set or respect the lock. Simply updating data in an entry 3 15* requires no such protection. 3 16* 3 17* Last_install_time is used by readers of system tables to detect 3 18* installations or other serious modifications. By checking it before 3 19* and after copying a block of data, they can be protected against 3 20* modifications. 3 21* 3 22* Modules that set the lock should save proc_group_id, and then 3 23* put their group id there for the time they hold the lock. 3 24* if they do not actually install the, they should restore the group id. 3 25**/ 3 26 3 27 2 author aligned, /* validation data about table's author */ 3 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 3 29 3 lock bit (36), /* installation lock */ 3 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 3 31 3 update_authorization bit (1) unal, /* update only authorizations */ 3 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 3 33 3 pad bit (33) unaligned, 3 34 3 last_install_time fixed bin (71), 3 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 3 36 3 w_dir char (64), /* author's working directory */ 3 37 3 38 /* END INCLUDE FILE author.incl.pl1 */ 2 10 2 11 2 pad; 2 12 2 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 1259 1260 4 1 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 4 2 4 3 /* format: style3,idind25,indcomtxt */ 4 4 4 5 /* Channel Definition Table. 4 6* This table lists all of the hardware channels (ports) connected 4 7* to the system, and maintains the attributes of each one. 4 8* 4 9* PG 741230 4 10* Modified by Mike Grady 5/6/76 to add FNP info. 4 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 4 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 4 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 4 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 4 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 4 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 4 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 4 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 4 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 4 20* Modified August 1982 by E. N. Kittlitz for check_acs. 4 21* Modified January 1983 by Keith Loepere for generic_destination. 4 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 4 23* Modified 831216 by E. N. Kittlitz for required_access_class. 4 24* Modified 84-04-01 by BIM to finish communications AIM: 4 25* access class ranges, 4 26* access_control flags. 4 27**/ 4 28 4 29 4 30 /****^ HISTORY COMMENTS: 4 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 4 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 4 33* Add support for answering service to use IOCBs when tty_ cannot be 4 34* used to service login channels. 4 35* END HISTORY COMMENTS */ 4 36 4 37 4 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 4 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 4 40 4 41 dcl (cdtp, cdtep, fnpep, mpxep) 4 42 ptr; 4 43 4 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 4 45 2 author like author_dcl.author, /* standard header */ 4 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 4 47 2 current_size fixed bin, /* number of last cdte. */ 4 48 2 version fixed bin, 4 49 2 freep fixed bin, /* chain of free cdte's */ 4 50 2 n_cdtes fixed bin, /* number of used cdte's */ 4 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 4 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 4 53 2 cpu_in_dialup fixed bin (71), /* .. */ 4 54 2 pf_in_dialup fixed bin, /* .. */ 4 55 2 pp_in_dialup fixed bin, /* .. */ 4 56 2 entries_to_dialup fixed bin, /* .. */ 4 57 2 flags, 4 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 4 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 4 60 3 mux_mgr_system_init 4 61 bit (1) unal, /* mux mgr has loaded top-levels */ 4 62 3 pad1 bit (33) unal, 4 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 4 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 4 65 2 threads aligned like channel_threads, 4 66 /* root of non-fnp-top-level-multiplexers */ 4 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 4 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 4 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 4 70 4 71 4 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 4 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 4 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 4 75 2 pad1 bit (36) aligned, 4 76 2 name char (32), /* ASCII name of channel */ 4 77 2 access_class (2) bit (72) aligned, /* access class range */ 4 78 2 comment char (48), /* printable message about channel */ 4 79 2 charge_type fixed bin (17) unal, /* billing group */ 4 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 4 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 4 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 4 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 4 84 2 pad2 bit (18) unaligned, 4 85 2 answerback char (8), /* answerback string expected */ 4 86 2 initial_terminal_type 4 87 char (32) unal, /* as specified in the CMF */ 4 88 2 mpx_data unal, /* data used only for multiplexed channels */ 4 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 4 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 4 91 2 flags, 4 92 ( 3 attributes, 4 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 4 94 4 audit_access_error 4 95 bit (1), /* ON means ck that person auth is inside access class range */ 4 96 /* this implies that the access_class describes a range of 4 97* legitimate user auths. */ 4 98 4 hardwired bit (1), /* ON means it is */ 4 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 4 100 4 dont_read_answerback 4 101 bit (1), /* ON means don't try to read answerback */ 4 102 4 pada bit (4), 4 103 3 access_control unaligned, /* As below */ 4 104 4 dial_out bit (1), /* dialing user must be on ACS */ 4 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 4 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 4 107 4 login bit (1), /* logging in user must be on acs */ 4 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 4 109 4 pado bit (3), 4 110 3 options, 4 111 4 execute_initial_command 4 112 bit (1), /* ON means to do it */ 4 113 4 attached_by_operator 4 114 bit (1), /* ON means temporary attachment. */ 4 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 4 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 4 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 4 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 4 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 4 120 4 generic_destination_present 4 121 bit (1), /* ON means that the initial_command field contains 4 122* a generic destination to match on dial_out or priv attach */ 4 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 4 124 4 pado bit (9) 4 125 ) unaligned, 4 126 2 initial_command char (64), /* pseudo first input line */ 4 127 /**** The following variables represent dynamic control info, and 4 128* are used mostly by dialup_ and asu_ */ 4 129 2 event fixed bin (71), /* event call channel for channel events */ 4 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 4 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 4 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 4 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 4 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 4 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 4 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 4 137 /* 0 = dialup_, 1 = mc_tty_ */ 4 138 3 save_arg bit (1) unal, /* -save login arg given */ 4 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 4 140 3 detach_after_hangup 4 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 4 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 4 143 3 hold_arg bit (1) unal, /* -hold arg given */ 4 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 4 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 4 146 3 current_access_class_valid 4 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 4 148 3 pad bit (7) unal, 4 149 2 twx fixed bin, /* channel device index */ 4 150 2 state fixed bin, /* channel state */ 4 151 2 tty_id_code char (4), /* channel id (answerback) */ 4 152 2 current_terminal_type 4 153 char (32) unal, /* most recently-set terminal type */ 4 154 2 process ptr unal, /* ptr to ATE owning this channel */ 4 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 4 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 4 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 4 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 4 159* We do not yet define multi-class connections, but we will someday. */ 4 160 2 disconnected_ate_index 4 161 fixed bin (17) unal, /* index of ate of disconnected process */ 4 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 4 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 4 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 4 165 2 pad3 bit (14) unaligned, 4 166 /**** The following variables are kept for metering purposes. */ 4 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 4 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 4 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 4 170 2 dialup_time fixed bin (71), /* time of present dialup */ 4 171 2 disconnected_proc_command 4 172 fixed bin (12) unsigned unal, 4 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 4 174 2 disconnected_proc_number 4 175 fixed bin (12) unsigned unal, 4 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 4 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 4 178 /* number of disconnected processes that user has */ 4 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 4 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 4 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 4 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 4 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 4 184 /**** had the space. */ 4 185 2 threads aligned like channel_threads, 4 186 /**** The use name is that of the user who gave the dial or slave ****/ 4 187 /**** preaccess request. ****/ 4 188 2 user_name unaligned, 4 189 3 person char (20) unaligned, 4 190 3 project char (9) unaligned, 4 191 3 pad char (3) unaligned, /* no tag */ 4 192 2 iocbp ptr unaligned; /* 104 words */ 4 193 4 194 4 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 4 196* overlays initial_command field for slave and autocall lines */ 4 197 4 198 4 199 4 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 4 201 /* These variables are filled in from the CMF */ 4 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 4 203 2 memory fixed bin, /* amount of memory on this FNP */ 4 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 4 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 4 206 2 service_type fixed bin, /* service type */ 4 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 4 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 4 209 /**** The following are used during system operation to remember the state of the FNP */ 4 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 4 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 4 212 2 mpxe like mpxe, /* standard multiplexer data */ 4 213 2 threads aligned like channel_threads, 4 214 /* same mpx threads as channel */ 4 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 4 216 4 217 /* This structure describes the data necessary to control a multiplexer. 4 218* For FNP's., a copy appears in the fnpe. For communications lines, it 4 219* overlays the initial_command field in the cdte. */ 4 220 4 221 dcl 1 mpxe based (mpxep) aligned, 4 222 2 state fixed bin, /* current state, up, down, loading */ 4 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 4 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 4 225 2 n_bootloads fixed bin, /* count of load attempts */ 4 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 4 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 4 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 4 229 2 time_load_start fixed bin (71), /* time current load started */ 4 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 4 231 2 flags unal, 4 232 3 go bit (1), /* start MPX after it loads */ 4 233 3 listening bit (1), /* listen has been done on subchannels */ 4 234 3 check bit (1), /* loaded with check option */ 4 235 3 retry_load bit (1), /* reload if load fails */ 4 236 3 pad1 bit (32), 4 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 4 238 4 239 /* These threads define the tree of multiplexers in the cdt. */ 4 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 4 241 /* by alpha sort order of the channel name. Daughter points to the */ 4 242 /* first child of this node, if any. Daughter count is the number */ 4 243 /* of children, as a consistency check. Mother is a back pointer to */ 4 244 /* the parent, present in all the children, not just the first. */ 4 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 4 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 4 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 4 248 4 249 dcl 1 channel_threads aligned based, 4 250 2 next_sister fixed bin unaligned, 4 251 2 prev_sister fixed bin unaligned, 4 252 2 daughter fixed bin unaligned, 4 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 4 254 2 pad bit (18) unaligned, 4 255 2 daughter_count fixed bin unaligned; 4 256 4 257 /* Values for cdte.service_type field */ 4 258 4 259 dcl ( 4 260 ANS_SERVICE init (1), /* login or dial */ 4 261 FTP_SERVICE init (2), /* file transfer service */ 4 262 MC_SERVICE init (3), /* message coordinator */ 4 263 SLAVE_SERVICE init (4), /* special channel */ 4 264 DIAL_SERVICE init (5), /* transient state */ 4 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 4 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 4 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 4 268 ) fixed bin internal static options (constant); 4 269 4 270 /* Values for service type in both cdte and fnpe */ 4 271 4 272 dcl ( 4 273 INACTIVE init (7), /* not to be used, even though configured */ 4 274 ACTIVE init (1) 4 275 ) /* for FNP only, configured and to be used */ 4 276 fixed bin internal static options (constant); 4 277 4 278 /* Value for both cdte.in_use and fnpe.state */ 4 279 4 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 4 281 /* was not configured at Multics bootload time */ 4 282 4 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 4 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 4 285 4 286 /* Value for cdte.in_use */ 4 287 4 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 4 289 /* channel deleted by CDT installation */ 4 290 4 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 4 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 4 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 4 294 4 295 4 296 /* Values for mpxe.state field */ 4 297 4 298 dcl ( 4 299 FNP_FREE init (0), /* this fnpe is not used */ 4 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 4 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 4 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 4 303 FNP_UP init (4) /* FNP is up and running fine */ 4 304 ) fixed bin internal static options (constant); 4 305 4 306 dcl ( 4 307 MPX_FREE init (0), /* this mpxe is not used */ 4 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 4 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 4 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 4 311 MPX_UP init (4) /* MPX is up and running fine */ 4 312 ) fixed bin internal static options (constant); 4 313 5 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 5 2 5 3 5 4 5 5 /****^ HISTORY COMMENTS: 5 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 5 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 5 8* Add data needed for the uncp multiplexer (DSA gateway) interface 5 9* implementation. 5 10* END HISTORY COMMENTS */ 5 11 5 12 5 13 /* Values for fnpe.type field */ 5 14 /* 5 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 5 16* Added in March 1982 - DN7100.fd. 5 17**/ 5 18 5 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 5 20 DN6600 init (2), /* a DataNet 6600 FNP */ 5 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 5 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 5 23 ) fixed bin internal static options (constant); 5 24 5 25 dcl fnp_types (4) char (8) int static options (constant) 5 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 5 27 5 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 5 29 init (355, 6600, 6670, 7100); 5 30 5 31 dcl supported_fnp (4) bit (1) int static options (constant) 5 32 init ("0"b, "0"b, "1"b, "1"b); 5 33 5 34 5 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 4 314 4 315 4 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 1261 1262 6 1 /* BEGIN INCLUDE FILE ... condition_info.incl.pl1 */ 6 2 6 3 /* Structure for find_condition_info_. 6 4* 6 5* Written 1-Mar-79 by M. N. Davidoff. 6 6**/ 6 7 6 8 /* automatic */ 6 9 6 10 declare condition_info_ptr pointer; 6 11 6 12 /* based */ 6 13 6 14 declare 1 condition_info aligned based (condition_info_ptr), 6 15 2 mc_ptr pointer, /* pointer to machine conditions at fault time */ 6 16 2 version fixed binary, /* Must be 1 */ 6 17 2 condition_name char (32) varying, /* name of condition */ 6 18 2 info_ptr pointer, /* pointer to the condition data structure */ 6 19 2 wc_ptr pointer, /* pointer to wall crossing machine conditions */ 6 20 2 loc_ptr pointer, /* pointer to location where condition occured */ 6 21 2 flags unaligned, 6 22 3 crawlout bit (1), /* on if condition occured in lower ring */ 6 23 3 pad1 bit (35), 6 24 2 pad2 bit (36), 6 25 2 user_loc_ptr pointer, /* ptr to most recent nonsupport loc before condition occurred */ 6 26 2 pad3 (4) bit (36); 6 27 6 28 /* internal static */ 6 29 6 30 declare condition_info_version_1 6 31 fixed binary internal static options (constant) initial (1); 6 32 6 33 /* END INCLUDE FILE ... condition_info.incl.pl1 */ 1263 1264 declare 1 auto_condition_info aligned like condition_info; 7 1 /* BEGIN INCLUDE FILE condition_info_header.incl.pl1 BIM 1981 */ 7 2 /* format: style2 */ 7 3 7 4 declare condition_info_header_ptr 7 5 pointer; 7 6 declare 1 condition_info_header 7 7 aligned based (condition_info_header_ptr), 7 8 2 length fixed bin, /* length in words of this structure */ 7 9 2 version fixed bin, /* version number of this structure */ 7 10 2 action_flags aligned, /* tell handler how to proceed */ 7 11 3 cant_restart bit (1) unaligned, /* caller doesn't ever want to be returned to */ 7 12 3 default_restart bit (1) unaligned, /* caller can be returned to with no further action */ 7 13 3 quiet_restart bit (1) unaligned, /* return, and print no message */ 7 14 3 support_signal bit (1) unaligned, /* treat this signal as if the signalling procedure had the support bit set */ 7 15 /* if the signalling procedure had the support bit set, do the same for its caller */ 7 16 3 pad bit (32) unaligned, 7 17 2 info_string char (256) varying, /* may contain printable message */ 7 18 2 status_code fixed bin (35); /* if^=0, code interpretable by com_err_ */ 7 19 7 20 /* END INCLUDE FILE condition_info_header.incl.pl1 */ 1265 1266 8 1 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 8 2 8 3 /* format: style4 */ 8 4 8 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 8 6 8 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 8 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 8 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 8 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 8 11* WAIT_DISCARD_WAKEUP 8 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 8 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 8 14**/ 8 15 8 16 /****^ HISTORY COMMENTS: 8 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 8 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 8 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 8 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 8 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 8 22* Add named constants for instance tags. 8 23* END HISTORY COMMENTS */ 8 24 8 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 8 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 8 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 8 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 8 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 8 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 8 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 8 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 8 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 8 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 8 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 8 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 8 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 8 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 8 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 8 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 8 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 8 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 8 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 8 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 8 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 8 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 8 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 8 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 8 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 8 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 8 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 8 52 ) fixed bin internal static options (constant); 8 53 8 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 8 55 /* names of ute.destroy_flag values */ 8 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 8 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 8 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 8 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 8 60 "wait remove"); /* -13 */ 8 61 8 62 /* Values for "cdte.state", typewriter state. */ 8 63 8 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 8 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 8 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 8 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 8 68 ) fixed bin internal static options (constant); 8 69 8 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 8 71 /* names of cdte.state values */ 8 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 8 73 8 74 /* Values for "cdte.in_use" and "ate.active" */ 8 75 8 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 8 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 8 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 8 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 8 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 8 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 8 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 8 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 8 84 ) fixed bin internal static options (constant); 8 85 8 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 8 87 /* names of ute.active values */ 8 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 8 89 8 90 8 91 /**** Values for ute.tag */ 8 92 8 93 dcl (TAG_INTERACTIVE init("a"), 8 94 TAG_UFT init("f"), 8 95 TAG_ABSENTEE init("m"), 8 96 TAG_PROXY init("p"), 8 97 TAG_DAEMON init("z") 8 98 ) char(1) int static options(constant); 8 99 8 100 8 101 /**** Following are constants used to indicate to the process termination 8 102* handler the reason for the process termination. They are used by 8 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 8 104* uc_ls_destroy_request_. */ 8 105 8 106 dcl ( 8 107 PT_FPE initial (1), 8 108 PT_LOGOUT initial (4), 8 109 PT_NEW_PROC_AUTH initial (13), 8 110 PT_HANGUP initial (20), 8 111 PT_SHUTDOWN initial (21), 8 112 PT_BUMP initial (22), 8 113 PT_ALARM initial (23), 8 114 PT_DETACH initial (24), 8 115 PT_UNBUMP initial (25), 8 116 PT_OPERATOR_TERMINATE initial (27), 8 117 PT_DESTROY_REQUEST initial (30), 8 118 PT_NEW_PROC_REQUEST initial (31) 8 119 ) fixed bin (17) internal static options (constant); 8 120 8 121 /**** Values for ute.preempted: 8 122* -1 user unbumped after term signal sent 8 123* 0 user unbumped; ignore alarm___ 8 124* 1 value internally used in load_ctl_ 8 125* 2 user bumped; when alarm___ comes in, send term signal 8 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 8 127* signals come in 8 128* 4 user bumped; process sick, so destroy without sending term signal 8 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 8 130* termsgnl). */ 8 131 8 132 dcl ( 8 133 PREEMPT_UNBUMP initial (-1), 8 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 8 135 PREEMPT_LOAD_CTL initial (1), 8 136 PREEMPT_BUMPED initial (2), 8 137 PREEMPT_TERM_SENT initial (3), 8 138 PREEMPT_BUMPED_NO_TERM initial (4), 8 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 8 140 ) fixed bin (17) internal static options(constant); 8 141 8 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 8 143 "unbumped", 8 144 "not bumped, ignore alarm___", 8 145 "load_ctl_", 8 146 "bumped", 8 147 "bumped, trm_ sent", 8 148 "bumped without trm_", 8 149 "bumped, termsgnl received"); 8 150 8 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 1267 1268 9 1 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 9 2 9 3 /* Modified 740723 by PG to add short AIM access names */ 9 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 9 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 9 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 9 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 9 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 9 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 9 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 9 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 9 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 9 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 9 14* strict_trusted_path. */ 9 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 9 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 9 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 9 18 9 19 9 20 /****^ HISTORY COMMENTS: 9 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 9 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 9 23* added vchn_requires_accept parameter. 9 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 9 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 9 26* Correct formatting problems. 9 27* END HISTORY COMMENTS */ 9 28 9 29 9 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 9 31 9 32 9 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 9 34 2 part_1 like installation_parms_part_1 aligned, 9 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 9 36 9 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 9 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 9 39 9 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 9 41 2 installation_id char (32), /* Name printed at dialup and in who */ 9 42 2 company char (64), /* company name */ 9 43 2 department char (64), /* department */ 9 44 2 companyds char (120), /* company, double spaced */ 9 45 2 departmentds char (120), /* dpeartment double spaced */ 9 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 9 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 9 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 9 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 9 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 9 51 2 ndevices fixed bin, /* number of devices to charge */ 9 52 2 devtab (16), /* Maximum 16 */ 9 53 3 device_id char (8), /* Name of device */ 9 54 3 device_price (0: 7) float bin, /* Price by shift */ 9 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 9 56 2 warning_time fixed bin, /* seconds from warning to logout */ 9 57 2 login_time fixed bin, /* seconds in which to complete login */ 9 58 2 acct_update fixed bin, /* seconds between acct update */ 9 59 2 login_tries fixed bin, /* number of login tries allowed */ 9 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 9 61 2 registration_price float bin, /* fee per month per user */ 9 62 2 dolsign char (1), /* "dollar sign" */ 9 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 9 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 9 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 9 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 9 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 9 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 9 69* Initializer will copy the syserr_log */ 9 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 9 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 9 72 2 fatal_error_loop_count fixed bin (17) unaligned, 9 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 9 74 2 term_real_time_seconds fixed bin (17) unaligned, 9 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 9 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 9 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 9 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 9 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 9 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 9 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 9 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 9 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 9 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 9 85 2 level_names (0:7) char (32), /* Names for security levels. */ 9 86 2 category_names (18) char (32), /* Names for security categories. */ 9 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 9 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 9 89 2 ncon fixed bin, /* Number of config elements. */ 9 90 2 cona (51), /* each entry is 5 words long */ 9 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 9 92 3 shift fixed bin (5) unal, /* Shift number */ 9 93 3 x1 fixed bin (23) unal, 9 94 3 kmem fixed bin (17) unal, /* Memory size */ 9 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 9 96 3 x2 fixed bin (17) unal, 9 97 3 maxa fixed bin (11) unal, /* Max abs users */ 9 98 3 maxq fixed bin (5) unal, /* Max abs q */ 9 99 3 maxu_base fixed bin (17) unal, 9 100 3 response_high fixed bin (17) unal, 9 101 3 response_low fixed bin (17) unal, 9 102 3 x3 fixed bin (17) unal, 9 103 9 104 /* Absentee control parameters. New for MR7.0 */ 9 105 9 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 9 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 9 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 9 109 9 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 9 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 9 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 9 113 9 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 9 115 9 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 9 117 9 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 9 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 9 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 9 121 2 version fixed bin (35), /* must be 2 */ 9 122 2 nrates fixed bin, /* number of rate structures */ 9 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 9 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 9 125 2 require_operator_login bit (1) aligned, /* just what it says */ 9 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 9 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 9 128* mcacs segments for operators */ 9 129 2 password_min_length fixed bin, /* minimum length of passwords */ 9 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 9 131 2 password_change_interval fixed bin, /* number of days until must change */ 9 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 9 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 9 134* "accepted" by operator if personid is not 9 135* signed on system console */ 9 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 9 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 9 138* or someone miscounted when using part of pad2 */ 9 139 9 140 9 141 /* Entries in the following array may be accessed via system_info_$resource_price. 9 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 9 143 9 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 9 145 2 name char (32), 9 146 2 price float bin; 9 147 10 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 10 2 10 3 /* Created on 04/24/78 by Michael R. Jordan */ 10 4 /* Modified 04/10/79 by C. D. Tavares */ 10 5 10 6 dcl rifp ptr; 10 7 10 8 dcl 1 rcp_init_flags based (rifp), 10 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 10 10 2 pad1 bit (2) unaligned, /* obsolete */ 10 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 10 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 10 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 10 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 10 15 10 16 dcl (No_authentication initial (0), 10 17 Nominal_authentication initial (1), 10 18 Automatic_authentication initial (2), 10 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 10 20 10 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 10 22 ("none", "nominal", "automatic", "manual"); 10 23 10 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 9 148 9 149 9 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 1269 1270 11 1 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 11 2 11 3 /* Written November 10 1975 by Paul Green */ 11 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 11 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 11 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 11 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 11 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 11 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 11 10 11 11 11 12 /****^ HISTORY COMMENTS: 11 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 11 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 11 15* Add a DSA line type. 11 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 11 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 11 18* Add HASP_OPR to identify HASP workstation consoles with login service. 11 19* END HISTORY COMMENTS */ 11 20 11 21 11 22 declare (LINE_MC initial (-2), 11 23 LINE_TELNET initial (-1), 11 24 LINE_UNKNOWN initial (0), 11 25 LINE_ASCII initial (1), 11 26 LINE_1050 initial (2), 11 27 LINE_2741 initial (3), 11 28 LINE_ARDS initial (4), 11 29 LINE_SYNCH initial (5), 11 30 LINE_G115 initial (6), 11 31 LINE_BSC initial (7), 11 32 LINE_ETX initial (8), 11 33 LINE_VIP initial (9), 11 34 LINE_ASYNC1 initial (10), 11 35 LINE_ASYNC2 initial (11), 11 36 LINE_ASYNC3 initial (12), 11 37 LINE_SYNC1 initial (13), 11 38 LINE_SYNC2 initial (14), 11 39 LINE_SYNC3 initial (15), 11 40 LINE_POLLED_VIP initial (16), 11 41 LINE_X25LAP initial (17), 11 42 LINE_HDLC initial (18), 11 43 LINE_COLTS initial (19), 11 44 LINE_DSA initial (20), 11 45 LINE_HASP_OPR initial (21) 11 46 ) fixed bin internal static options (constant); 11 47 11 48 dcl max_line_type fixed bin int static options (constant) init (21); 11 49 11 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 11 51 11 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 11 53 11 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 11 55 "MC", /* -2 */ 11 56 "TELNET", /* -1 */ 11 57 "none", /* 0 */ 11 58 "ASCII", /* 1 */ 11 59 "1050", /* 2 */ 11 60 "2741", /* 3 */ 11 61 "ARDS", /* 4 */ 11 62 "Sync", /* 5 */ 11 63 "G115", /* 6 */ 11 64 "BSC", /* 7 */ 11 65 "202ETX", /* 8 */ 11 66 "VIP", /* 9 */ 11 67 "ASYNC1", /* 10 */ 11 68 "ASYNC2", /* 11 */ 11 69 "ASYNC3", /* 12 */ 11 70 "SYNC1", /* 13 */ 11 71 "SYNC2", /* 14 */ 11 72 "SYNC3", /* 15 */ 11 73 "POLLED_VIP", /* 16 */ 11 74 "X25LAP", /* 17 */ 11 75 "HDLC", /* 18 */ 11 76 "COLTS", /* 19 */ 11 77 "DSA", /* 20 */ 11 78 "HASP_OPR"); /* 21 */ 11 79 11 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 1271 1272 12 1 /* BEGIN INCLUDE FILE sub_error_info.incl.pl1 */ 12 2 /* format: style2 */ 12 3 12 4 /* The include file condition_info_header must be used with this file */ 12 5 12 6 declare sub_error_info_ptr pointer; 12 7 declare 1 sub_error_info aligned based (sub_error_info_ptr), 12 8 2 header aligned like condition_info_header, 12 9 2 retval fixed bin (35), /* return value */ 12 10 2 name char (32), /* module name */ 12 11 2 info_ptr ptr; 12 12 12 13 declare sub_error_info_version_1 12 14 internal static options (constant) fixed bin init (1); 12 15 12 16 /* END INCLUDE FILE sub_error_info.incl.pl1 */ 1273 1274 13 1 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 13 2 13 3 13 4 /****^ HISTORY COMMENTS: 13 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 13 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 13 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 13 8* attribute switches. 13 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 13 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 13 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 13 12* be deleted. 13 13* B) Add constants identifying attributes that can be changed by user at 13 14* login, etc. 13 15* END HISTORY COMMENTS */ 13 16 13 17 13 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 13 19 13 20 /* format: style4 */ 13 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 13 22 (2 administrator bit (1), /* 1 system administrator privileges */ 13 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 13 24 2 nobump bit (1), /* 2 user cannot be bumped */ 13 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 13 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 13 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 13 28* . of same project (distinct from "nobump") */ 13 29 2 nolist bit (1), /* 7 don't list user on "who" */ 13 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 13 31 2 multip bit (1), /* 9 user may have several processes */ 13 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 13 33 2 brief bit (1), /* 11 no login or logout message */ 13 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 13 35 2 vhomedir bit (1), /* 13 user may change homedir */ 13 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 13 37 2 sb_ok bit (1), /* 15 user may be standby */ 13 38 2 pm_ok bit (1), /* 16 user may be primary */ 13 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 13 40 2 daemon bit (1), /* 18 user may login as daemon */ 13 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 13 42 2 no_warning bit (1), /* 20 no warning message */ 13 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 13 44* . in PDT: this user has an individual load control group */ 13 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 13 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 13 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 13 48 2 pad bit (12)) unaligned; 13 49 13 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 13 51 ("none", /* 0 */ 13 52 "administrator", /* 1 */ 13 53 "primary_line", /* 2 */ 13 54 "nobump", /* 3 */ 13 55 "guaranteed_login", /* 4 */ 13 56 "anonymous", /* 5 */ 13 57 "nopreempt", /* 6 */ 13 58 "nolist", /* 7 */ 13 59 "dialok", /* 8 */ 13 60 "multip", /* 9 */ 13 61 "bumping", /* 10 */ 13 62 "brief", /* 11 */ 13 63 "vinitproc", /* 12 */ 13 64 "vhomedir", /* 13 */ 13 65 "nostartup", /* 14 */ 13 66 "no_secondary", /* 15 */ 13 67 "no_prime", /* 16 */ 13 68 "no_eo", /* 17 */ 13 69 "daemon", /* 18 */ 13 70 "", /* 19 vdim OBSOLETE */ 13 71 "no_warning", /* 20 */ 13 72 "igroup", /* 21 */ 13 73 "save_pdir", /* 22 */ 13 74 "disconnect_ok", /* 23 */ 13 75 "save_on_disconnect"); /* 24 */ 13 76 13 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 13 78 ("null", /* 0 */ 13 79 "admin", /* 1 */ 13 80 "", "", /* 2 - 3 */ 13 81 "guar", /* 4 */ 13 82 "anon", /* 5 */ 13 83 "", "", /* 6 - 7 */ 13 84 "dial", /* 8 */ 13 85 "multi_login", /* 9 */ 13 86 "preempting", /* 10 */ 13 87 "", /* 11 */ 13 88 "v_process_overseer", /* 12 */ 13 89 "v_home_dir", /* 13 */ 13 90 "no_start_up", /* 14 */ 13 91 "no_sec", /* 15 */ 13 92 "no_primary", /* 16 */ 13 93 "no_edit_only", /* 17 */ 13 94 "op_login", /* 18 */ 13 95 "", /* 19 */ 13 96 "nowarn", /* 20 */ 13 97 "", "", "", /* 21 - 23 */ 13 98 "save"); /* 24 */ 13 99 13 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 13 101 options(constant) init("000000000010000000010000000000000000"b); 13 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 13 103 13 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 13 105 options(constant) init("000000000010000000010000000000000000"b); 13 106 /* PDT value for (brief, no_warning) is default */ 13 107 13 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 13 109 options(constant) init("000100000110010000010000000000000000"b); 13 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 13 111 14 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 14 2 14 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 4 /* */ 14 5 /* This include file describes the attributes of an absentee job. It is */ 14 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 14 7 /* and PIT.incl.pl1. */ 14 8 /* */ 14 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 14 10 14 11 /****^ HISTORY COMMENTS: 14 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 14 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 14 14* Separated abs_attributes from the request structure 14 15* (abs_message_format.incl.pl1) so that the identical structure could be 14 16* used in the ute structure (user_table_entry.incl.pl1). 14 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 14 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 14 19* Added ABS_ATTRIBUTE_NAMES array. 14 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 14 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 14 22* Added the no_start_up flag. SCP6367 14 23* END HISTORY COMMENTS */ 14 24 14 25 dcl 1 user_abs_attributes aligned based, 14 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 14 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 14 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 14 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 14 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 14 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 14 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 14 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 14 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 14 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 14 36 2 attributes_pad bit (26) unaligned; 14 37 14 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 14 39 "restartable", 14 40 "user_deferred_until_time", 14 41 "proxy", 14 42 "set_bit_cnt", 14 43 "time_in_gmt", 14 44 "user_deferred_indefinitely", 14 45 "secondary_ok", 14 46 "truncate_absout", 14 47 "restarted", 14 48 "no_start_up"); 14 49 14 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 14 51 13 112 13 113 13 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 1275 1276 15 1 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 15 2 15 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 4 /* */ 15 5 /* This include file requires that the user include */ 15 6 /* user_attributes.incl.pl1 as well. It also includes */ 15 7 /* abs_attributes.incl.pl1 itself. */ 15 8 /* */ 15 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 15 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 15 11 /* */ 15 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 13 15 14 /****^ HISTORY COMMENTS: 15 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 15 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 15 17* This comment for hcom. 15 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 15 19* anstbl.incl.pl1, and dutbl.incl.pl1. 15 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 15 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 15 22* 84-07-12 BIM added min_process_authorization 15 23* 84-12-31 Keith Loepere added pdir_dir_quota 15 24* 85-01-16 by E. Swenson to add ute.session_uid 15 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 15 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 15 27* Added fields for DSA login server support. 15 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 15 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 15 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 15 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 15 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 15 33* Added disconnection_rel_minutes. 15 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 15 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 36* Changed structure under ute.abs_attributes to use like structure in 15 37* abs_attributes.incl.pl1. This allows the same attributes to be used 15 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 15 39* file. 15 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 15 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 15 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 15 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 45* A) Global reorganization to locate things by type of data. 15 46* B) Eliminate ute.uflags.logged_in. 15 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 15 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 49* A) Reduced overlength person and project fields to proper length. 15 50* B) Adjusted dialed-console section to begin on even word boundary. 15 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 15 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 53* Add ute.line_type. 15 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 15 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 15 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 15 57* for the storage. SCP6367 15 58* END HISTORY COMMENTS */ 15 59 15 60 /* format: style4 */ 15 61 15 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 63 /* */ 15 64 /* Each of the named sections below defines a type of data. Typing comes */ 15 65 /* from data associated with the ute entry itself, with the person, with */ 15 66 /* login argument data, from the main user of the data (eg, dialup_, */ 15 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 15 68 /* and is an even number of words long. The total structure is 300 decimal */ 15 69 /* words long. */ 15 70 /* */ 15 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 15 72 15 73 15 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 15 75 15 76 dcl utep pointer automatic init (null); 15 77 15 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 15 79 15 80 /* Variables which give state of this entry */ 15 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 15 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 15 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 15 84 2 next_free fixed bin, /* points to previous free entry */ 15 85 15 86 /* Information user gave about person_id associated with this entry. */ 15 87 2 person char (24) unal, /* user's name */ 15 88 2 project char (12) unal, /* project of absentee user */ 15 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 15 90 2 tag_pad bit (27) unal, 15 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 15 92 2 login_flags, /* flags for login data */ 15 93 3 cpw bit (1) unal, /* flag for wish to change password */ 15 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 15 95 3 special_pw unal, /* dial or slave */ 15 96 4 dial_pw bit (1) unal, /* true if dial -user */ 15 97 4 slave_pw bit (1) unal, /* true if slave -user */ 15 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 15 99 3 cda bit (1) unal, /* flag to change default authorization */ 15 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 15 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 15 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 15 103 3 pw_pad bit (25) unal, /* spare parts */ 15 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 15 105 /* Must remain last in pw_flags so it does not */ 15 106 /* appear in PW_FLAG_VALUES array below. */ 15 107 2 generated_pw char (8) unal, /* user must type this as new password */ 15 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 15 109 2 process_authorization bit (72), /* access_authorization of this process */ 15 110 15 111 /* Information user gave about process associated with this entry. */ 15 112 2 outer_module char (32) unal, /* Name of console dim */ 15 113 2 home_dir char (64) unal, /* initial home directory */ 15 114 2 init_proc char (64) unal, /* name of login responder */ 15 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 15 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 15 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 15 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 15 119 2 initial_ring fixed bin, /* ring process will be started in */ 15 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 15 121 2 ln_args fixed bin, /* length of string containing arguments */ 15 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 15 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 15 124 15 125 /* Most of the following information is relevant only to absentee processes */ 15 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 15 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 15 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 15 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 15 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 15 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 15 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 15 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 15 134* (but see uflags.adjust_abs_q_no). */ 15 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 15 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 15 137 2 abs_flags, 15 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 15 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 15 140 3 abs_flags_pad bit (34) unal, 15 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 15 142 2 sender char (32) unal, /* name of RJE station that job is from */ 15 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 15 144 2 proxy_project char (9) unal, 15 145 2 proxy_project_pad char (3) unal, 15 146 2 abs_pad fixed bin, 15 147 15 148 /* Information about process actually created */ 15 149 2 proc_id bit (36), /* process id of absentee process */ 15 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 15 151 2 process_authorization_range (2) bit (72) aligned, 15 152 2 audit bit (36), /* audit flags for user */ 15 153 2 lot_size fixed bin, /* Size of linkage offset table */ 15 154 2 kst_size fixed bin, /* Size of process known segment table */ 15 155 2 cls_size fixed bin, /* Size of process combined linkage */ 15 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 15 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 15 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 15 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 15 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 15 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 15 162 2 pdir_pad fixed bin(17) unal, 15 163 2 process_pad fixed bin, 15 164 15 165 /* Information about primary terminal associated with this entry */ 15 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 15 167 2 terminal_type char (32) unaligned, /* terminal type */ 15 168 2 line_type fixed bin, /* line type */ 15 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 15 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 15 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 15 172 15 173 /* Variables useful for dialed terminals */ 15 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 15 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 15 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 15 177 2 dial_server_flags, 15 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 15 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 15 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 15 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 15 182 15 183 /* Information about usage/accounting. Device usage meters are in a 15 184* separate segment, "devtab" */ 15 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 15 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 15 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 15 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 15 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 15 190 2 last_update_time fixed bin (71), /* time of last account update */ 15 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 15 192 2 ndevices fixed bin, /* Count of attached devices */ 15 193 2 device_head fixed bin, /* Table index of head of device chain */ 15 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 15 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 15 196 2 rs_number_pad bit(30) unal, 15 197 2 usage_pad fixed bin, 15 198 15 199 /* Information for dialup_ (control variables). */ 15 200 2 event fixed bin (71), /* event associated with channel or user manager */ 15 201 2 uprojp ptr, /* ptr to user project sat entry */ 15 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 15 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 15 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 15 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 15 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 15 207 2 count fixed bin, /* counter for logins and dialups */ 15 208 2 n_processes fixed bin, /* number of processes created in this session */ 15 209 2 lock_value fixed bin, /* number of locks set for this entry */ 15 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 15 211 2 login_code char (8) unal, /* login command from LOGIN line */ 15 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 15 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 15 214 2 logout_type char (4) unal, /* type of logout */ 15 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 15 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 15 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 15 218 2 work_class fixed bin, /* work class used by priority scheduler */ 15 219 2 group char (8) unal, /* party group identifier */ 15 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 15 221 15 222 2 uflags, /* Miscellaneous flags */ 15 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 15 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 15 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 15 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 15 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 15 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 15 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 15 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 15 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 15 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 15 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 15 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 15 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 15 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 15 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 15 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 15 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 15 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 15 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 15 242 3 uflags_pad bit (17) unal, 15 243 15 244 /* Information used by load_ctl_ for the process */ 15 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 15 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 15 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 15 248 15 249 15 250 /* Information for login server */ 15 251 2 login_server_info, 15 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 15 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 15 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 15 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 15 256 3 process_id bit (36) aligned, /* process_id of login server */ 15 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 15 258 15 259 /* values for ute.process_type */ 15 260 15 261 dcl (PT_INTERACTIVE initial (1), 15 262 PT_ABSENTEE initial (2), 15 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 15 264 15 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 15 266 "INVALID-TYPE", 15 267 "interactive", 15 268 "absentee", 15 269 "daemon"); 15 270 15 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 15 272 "UNKNOWN-TABLE", 15 273 "answer_table", 15 274 "absentee_user_table", 15 275 "daemon_user_table"); 15 276 15 277 15 278 /* values for ute.pw_flags.mask_ctl */ 15 279 15 280 dcl (DO_MASK init ("00"b), 15 281 DONT_MASK init ("01"b), 15 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 15 283 15 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 15 285 "do_mask", "dont_mask", "derive_mask", ""); 15 286 15 287 15 288 /* names for ute.pw_flags */ 15 289 15 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 15 291 "cpw", 15 292 "generate_pw", 15 293 "dial_pw", 15 294 "slave_pw", 15 295 "cdp", 15 296 "cda", 15 297 "auth_given", 15 298 "noprint", 15 299 "operator"); 15 300 15 301 /* names for ute.uflags */ 15 302 15 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 15 304 "dont_call_init_admin", 15 305 "ip_given", 15 306 "ss_given", 15 307 "lvs_attached", 15 308 "send_initial_string", 15 309 "adjust_abs_q_no", 15 310 "foreground_secondary_ok", 15 311 "foreground_job", 15 312 "sus_sent", 15 313 "suspended", 15 314 "ignore_cpulimit", 15 315 "deferral_logged", 15 316 "save_if_disconnected", 15 317 "disconnected", 15 318 "disconnected_list", 15 319 "proc_create_ok", 15 320 "activity_can_unbump", 15 321 "fpe_causes_logout", 15 322 "user_specified_immediate"); 15 323 15 324 /* names for ute.abs_flags */ 15 325 15 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 15 327 "abs_run", 15 328 "notify"); 15 329 15 330 /* names of ute.dial_server_flags */ 15 331 15 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 15 333 "registered", 15 334 "privileged"); 15 335 15 336 /* values of ute.login_result */ 15 337 15 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 15 339 "logged in", 15 340 "login failed, hangup", 15 341 "login failed, try again"); 15 342 15 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 1277 1278 1279 end up_cdt_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 10/21/92 1520.0 up_cdt_.pl1 >spec>install>1036>up_cdt_.pl1 1257 1 04/11/85 1552.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 1259 2 09/09/75 2107.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 2-10 3 04/21/82 1311.8 author.incl.pl1 >ldd>include>author.incl.pl1 1261 4 08/06/87 1013.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 4-314 5 07/21/88 2136.0 fnp_types.incl.pl1 >ldd>include>fnp_types.incl.pl1 1263 6 06/28/79 1304.8 condition_info.incl.pl1 >ldd>include>condition_info.incl.pl1 1265 7 03/24/82 1447.2 condition_info_header.incl.pl1 >ldd>include>condition_info_header.incl.pl1 1267 8 08/06/87 1013.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 1269 9 08/06/87 1013.4 installation_parms.incl.pl1 >ldd>include>installation_parms.incl.pl1 9-148 10 11/21/79 1558.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 1271 11 08/06/87 1013.4 line_types.incl.pl1 >ldd>include>line_types.incl.pl1 1273 12 07/18/81 1200.0 sub_error_info.incl.pl1 >ldd>include>sub_error_info.incl.pl1 1275 13 08/06/87 1013.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 13-112 14 07/14/88 2115.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 1277 15 07/14/88 2115.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. ANS_SERVICE constant fixed bin(17,0) initial dcl 4-259 ref 465 966 966 990 ATTACH_THIS_CHANNEL constant fixed bin(17,0) initial dcl 148 ref 521 622 631 635 663 1091 CDT based structure level 1 dcl 171 CDTE based structure level 1 dcl 173 CDT_version constant fixed bin(17,0) initial dcl 4-39 ref 219 387 CHANNEL_DELETED 007217 constant fixed bin(17,0) initial dcl 4-288 ref 498 946 DELETE_THIS_CHANNEL constant fixed bin(17,0) initial dcl 148 ref 487 489 1058 FNPE based structure level 1 dcl 174 FNP_DOWN constant fixed bin(17,0) initial dcl 4-298 ref 1155 FNP_FREE constant fixed bin(17,0) initial dcl 4-298 ref 398 398 405 405 417 417 FNP_UNKNOWN constant fixed bin(17,0) initial dcl 4-298 ref 1155 FTP_SERVICE constant fixed bin(17,0) initial dcl 4-259 ref 966 966 990 INACTIVE constant fixed bin(17,0) initial dcl 4-272 ref 420 421 500 1124 LEGAL 000116 constant char(95) initial packed unaligned dcl 148 ref 266 LINE_TELNET 007216 constant fixed bin(17,0) initial dcl 11-22 ref 321 511 1091 LISTEN_TO_THIS_CHANNEL constant fixed bin(17,0) initial dcl 148 ref 505 580 597 608 649 977 MPX_SERVICE constant fixed bin(17,0) initial dcl 4-259 ref 309 491 727 1107 1152 1161 MPX_UP constant fixed bin(17,0) initial dcl 4-306 ref 469 476 NOT_CONFIGURED 007216 constant fixed bin(17,0) initial dcl 4-280 ref 409 956 1046 1088 NOW_DIALED constant fixed bin(17,0) initial dcl 8-76 ref 1056 NOW_FREE constant fixed bin(17,0) initial dcl 8-76 ref 280 1049 1071 NOW_HUNG_UP constant fixed bin(17,0) initial dcl 8-76 ref 463 NOW_LISTENING constant fixed bin(17,0) initial dcl 8-76 ref 966 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 8-76 ref 683 997 REMOVE_THIS_CHANNEL constant fixed bin(17,0) initial dcl 148 ref 529 531 584 588 601 653 659 673 683 RW_ACCESS constant bit(3) initial packed unaligned dcl 1-11 ref 245 245 TTY_MASKED 007216 constant fixed bin(17,0) initial dcl 8-64 ref 480 518 523 UNDELETE_THIS_CHANNEL constant fixed bin(17,0) initial dcl 148 ref 461 948 956 WAIT_DELETE_CHANNEL constant fixed bin(17,0) initial dcl 8-25 ref 493 WAIT_REMOVE constant fixed bin(17,0) initial dcl 8-25 ref 493 acceptable_fnp_tbf 54 based fixed bin(17,0) level 2 dcl 171 set ref 389* 389 access_authorization_ceiling 546 based bit(72) level 3 dcl 9-33 ref 206 access_class 12 based bit(72) array level 2 in structure "ncdte" dcl 1087 in begin block on line 1086 set ref 1111* access_class 12 based bit(72) array level 2 in structure "ncdte" dcl 943 in procedure "update_channel" set ref 983* 986* 997* 1003* access_class 12 based bit(72) array level 2 in structure "ocdte" dcl 942 in procedure "update_channel" set ref 983* 985* access_class 12 based bit(72) array level 2 in structure "CDTE" dcl 173 in procedure "up_cdt_" set ref 303* 713* 713 acdte based structure level 1 dcl 1068 set ref 1090 1090 acs_name 000146 constant char(32) initial packed unaligned dcl 146 set ref 244* active based fixed bin(17,0) level 2 dcl 15-78 ref 997 addr builtin function dcl 182 ref 237 265 370 395 396 402 402 402 402 408 408 414 414 419 419 428 428 428 428 438 454 475 509 509 515 515 803 803 808 824 824 832 832 844 844 844 844 844 844 844 844 844 844 846 846 846 846 846 848 848 848 848 850 850 853 854 867 867 880 946 948 949 949 956 956 960 960 960 960 960 960 960 960 960 960 964 964 966 966 966 966 966 976 976 976 976 977 983 983 985 986 988 990 990 994 994 997 1003 1005 1015 1015 1015 1015 1015 1015 1015 1015 1036 1036 1038 1038 1038 1038 1038 1046 1049 1056 1056 1056 1056 1056 1058 1058 1088 1089 1089 1090 1090 1090 1090 1090 1090 1090 1090 1091 1091 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1107 1107 1107 1107 1111 1112 1112 1113 1113 1113 1113 1148 1154 1160 1194 1194 aim_check_$equal 000010 constant entry external dcl 73 ref 1243 1243 aim_check_$greater_or_equal 000012 constant entry external dcl 74 ref 1229 1232 aim_check_$in_range 000014 constant entry external dcl 76 ref 997 ansp parameter pointer dcl 63 ref 15 answer parameter char packed unaligned dcl 67 set ref 15 209* 215* 221* 227* 233* 240* 247* 255* 268* 285* 291* 297* 305* 311* 317* 323* 336* 1079* 1163* 1170* 1213* 1219* answerback 35 based char(8) level 2 dcl 173 set ref 723* 723 as_error_table_$chn_auth_excludes 000102 external static fixed bin(35,0) dcl 116 set ref 1008* as_error_table_$chn_deleted 000104 external static fixed bin(35,0) dcl 118 set ref 1056* as_error_table_$chn_svc_changed 000106 external static fixed bin(35,0) dcl 120 set ref 683* astty_$tty_order 000016 constant entry external dcl 77 ref 509 515 976 asu_$asu_listen 000020 constant entry external dcl 78 ref 483 518 526 asu_$asu_remove 000072 constant entry external dcl 106 ref 491 533 asu_$attach_channel 000064 constant entry external dcl 103 ref 482 525 asu_$bump_code 000066 constant entry external dcl 104 ref 1008 asu_$write_chn_message 000070 constant entry external dcl 105 ref 683 1056 auth_string 000100 automatic char(32) dcl 127 set ref 986* 988* 1004* 1005* 1111* 1112* author based structure level 2 in structure "author_dcl" dcl 2-9 in procedure "up_cdt_" author based structure level 2 in structure "CDT" dcl 171 in procedure "up_cdt_" author_dcl based structure level 1 dcl 2-9 auto_condition_info 000166 automatic structure level 1 dcl 1264 set ref 1194 1194 autobaud 50(23) based bit(1) level 4 packed packed unaligned dcl 173 set ref 720 baud_rate 33(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 173 set ref 720* 720 cdt based structure level 1 dcl 4-44 cdt_entry 1520 based structure array level 2 in structure "cdt" dcl 4-44 in procedure "up_cdt_" set ref 237 265 1088 1089 1090 1090 1091 1091 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1107 1107 1111 1112 1112 cdt_entry 1520 based structure array level 2 in structure "CDT" dcl 171 in procedure "up_cdt_" set ref 370 438 454 803 803 808 832 832 844 844 844 844 844 844 846 846 846 848 848 850 850 853 854 880 946 948 949 949 956 956 960 960 960 960 960 960 964 964 966 966 966 966 966 976 976 977 983 983 985 986 988 990 990 994 994 997 1003 1005 1015 1015 1015 1015 1036 1036 1038 1038 1038 1046 1049 1056 1056 1056 1058 1058 1077 1089 1090 1090 1113 1113 1148 1160 cdt_mgr_$find_cdt_channel 000022 constant entry external dcl 79 ref 282 1157 cdt_mgr_$thread 000024 constant entry external dcl 81 ref 1201 cdt_mgr_$thread_in_cdt_channel 000030 constant entry external dcl 84 ref 1110 cdt_mgr_$thread_out_cdt_channel 000026 constant entry external dcl 82 ref 1051 cdte based structure level 1 dcl 4-72 ref 237 370 438 cdtep 000160 automatic pointer dcl 4-41 set ref 200* 237 370 438 cdtp 000156 automatic pointer dcl 4-41 set ref 198* cdtx parameter fixed bin(17,0) dcl 1022 in procedure "delete_channel" set ref 1019 1028 1036 1036 1038 1038 1038 1046 1049 1051* 1056 1056 1056 1058 1058 cdtx parameter fixed bin(17,0) dcl 1067 in procedure "add_channel" ref 1064 1089 1090 1090 1113 1113 cdtx 000126 automatic fixed bin(17,0) dcl 134 in procedure "up_cdt_" set ref 282* 294 channel_threads based structure level 1 dcl 4-249 charge_type 32 based fixed bin(17,0) level 2 packed packed unaligned dcl 173 set ref 315 715* 715 check 000101 automatic fixed bin(17,0) dcl 896 in procedure "add_subtree" set ref 900* 906* 906 907 916* 923* 923 924 check 000100 automatic fixed bin(17,0) dcl 1140 in procedure "protect_mpxes" set ref 1146* 1149* 1149 1150 1150 clock builtin function dcl 182 ref 384 code parameter fixed bin(35,0) dcl 66 set ref 15 216* 222* 228* 234* 241* 244* 245 248* 252* 256* 269* 282* 283 290* 296* 306* 312* 318* 324* 332* 334 337* 364* 367* 434* 446* 447* 482* 483* 509* 515* 518* 525* 526* 537* 683* 976* 1008* 1056* 1080* 1157* 1158 1165* 1171* 1196* 1201* 1202 1212* 1220* comment 16 based char(48) level 2 in structure "CDTE" dcl 173 in procedure "up_cdt_" set ref 556* 714* 714 comment 16 based char(48) level 2 in structure "ncdte" dcl 1087 in begin block on line 1086 set ref 1112* comment 16 based char(48) level 2 in structure "ocdte" dcl 942 in procedure "update_channel" set ref 949* comment 16 based char(48) level 2 in structure "dcdte" dcl 1033 in procedure "delete_channel" set ref 1036* condition_info based structure level 1 dcl 6-14 condition_info_header based structure level 1 dcl 7-6 coreimage 6 based char(168) level 2 dcl 174 set ref 699* 699 count 75 based fixed bin(17,0) level 2 packed packed unaligned dcl 1087 set ref 1095* cu_$level_get 000054 constant entry external dcl 98 ref 207 current_service_type 74 based fixed bin(17,0) level 2 in structure "ocdte" packed packed unaligned dcl 942 in procedure "update_channel" set ref 966 966 990 990 current_service_type 74 based fixed bin(17,0) level 2 in structure "CDTE" packed packed unaligned dcl 173 in procedure "up_cdt_" set ref 464* 465 491 500* 556 556* 561 561 568 717* 727 1152 current_service_type 1 based fixed bin(17,0) level 2 in structure "mpxe" dcl 4-221 in procedure "up_cdt_" set ref 1124* current_service_type 65 based fixed bin(17,0) level 3 in structure "FNPE" dcl 174 in procedure "up_cdt_" set ref 401* 421* current_size 36 based fixed bin(17,0) level 2 in structure "CDT" dcl 171 in procedure "up_cdt_" set ref 225 231 264 370 438 453 1071 1074 1083* current_size 36 based fixed bin(17,0) level 2 in structure "cdt" dcl 4-44 in procedure "up_cdt_" ref 237 current_terminal_type 101 based char(32) level 2 packed packed unaligned dcl 1087 set ref 1098* d_limit parameter fixed bin(17,0) packed unaligned dcl 1139 ref 1135 1150 daughter 1 000115 automatic fixed bin(17,0) level 2 in structure "t" packed packed unaligned dcl 817 in begin block on line 813 set ref 820* daughter 57 based fixed bin(17,0) level 3 in structure "CDT" packed packed unaligned dcl 171 in procedure "up_cdt_" set ref 353 353* daughter 135 based fixed bin(17,0) level 3 in structure "ocdte" packed packed unaligned dcl 789 in begin block on line 787 set ref 844 846 daughter 135 based fixed bin(17,0) level 3 in structure "ncdte" packed packed unaligned dcl 790 in begin block on line 787 set ref 844 daughter 105 based fixed bin(17,0) level 3 in structure "FNPE" packed packed unaligned dcl 174 in procedure "up_cdt_" set ref 413* daughter 135 based fixed bin(17,0) level 3 in structure "CDTE" packed packed unaligned dcl 173 in procedure "up_cdt_" set ref 1176* daughter 1 based fixed bin(17,0) level 2 in structure "new_threads" packed packed unaligned dcl 743 in procedure "merge_subtrees" ref 779 daughter 225 based fixed bin(17,0) array level 4 in structure "CDT" packed packed unaligned dcl 171 in procedure "up_cdt_" set ref 349 349* daughter 1 based fixed bin(17,0) level 2 in structure "threads" packed packed unaligned dcl 894 in procedure "add_subtree" ref 904 922 daughter 1 based fixed bin(17,0) level 2 in structure "old_threads" packed packed unaligned dcl 742 in procedure "merge_subtrees" ref 776 daughter 1 000120 automatic fixed bin(17,0) level 2 in structure "t" packed packed unaligned dcl 861 in begin block on line 857 set ref 866* daughter_count 136(18) based fixed bin(17,0) level 3 in structure "CDTE" packed packed unaligned dcl 173 in procedure "up_cdt_" set ref 1176 1176* daughter_count 136(18) based fixed bin(17,0) level 3 in structure "dcdte" packed packed unaligned dcl 1033 in procedure "delete_channel" set ref 1038 daughter_count 2(18) based fixed bin(17,0) level 2 in structure "threads" packed packed unaligned dcl 894 in procedure "add_subtree" ref 901 907 917 920 daughter_count 2(18) based fixed bin(17,0) level 2 in structure "new_threads" packed packed unaligned dcl 743 in procedure "merge_subtrees" ref 759 763 770 785 819 daughter_count 60(18) based fixed bin(17,0) level 3 in structure "CDT" packed packed unaligned dcl 171 in procedure "up_cdt_" set ref 353* daughter_count 2(18) based fixed bin(17,0) level 2 in structure "old_threads" packed packed unaligned dcl 742 in procedure "merge_subtrees" ref 759 763 767 784 863 daughter_count 106(18) based fixed bin(17,0) level 3 in structure "FNPE" packed packed unaligned dcl 174 in procedure "up_cdt_" set ref 413* daughter_count 226(18) based fixed bin(17,0) array level 4 in structure "CDT" packed packed unaligned dcl 171 in procedure "up_cdt_" set ref 349* daughter_count 2(18) 000115 automatic fixed bin(17,0) level 2 in structure "t" packed packed unaligned dcl 817 in begin block on line 813 set ref 819* daughter_count 2(18) 000120 automatic fixed bin(17,0) level 2 in structure "t" packed packed unaligned dcl 861 in begin block on line 857 set ref 863* dcdte based structure level 1 dcl 1033 set ref 1056 1056 debg 000132 automatic char(8) packed unaligned dcl 138 set ref 683* 1008* 1056* dialed_to_procid 112 based bit(36) level 2 dcl 1087 set ref 1101* dialed_up_time 123 based fixed bin(35,0) level 2 dcl 1087 set ref 1105* dialup_time 124 based fixed bin(71,0) level 2 dcl 1087 set ref 1106* display_access_class_ 000032 constant entry external dcl 86 ref 1004 display_access_class_$range 000034 constant entry external dcl 87 ref 985 986 1003 1111 error_table_$action_not_performed 000110 external static fixed bin(35,0) dcl 122 ref 216 222 228 234 241 248 256 269 290 296 306 312 318 324 337 1080 1165 1171 1212 1220 event 72 based fixed bin(71,0) level 2 dcl 1087 set ref 1093* find_condition_info_ 000036 constant entry external dcl 90 ref 1194 flags 50 based structure level 2 dcl 173 set ref 724* 724 fnp_entry 120 based structure array level 2 dcl 171 set ref 348 394 395 396 fnp_sw 000124 automatic bit(1) dcl 133 set ref 282* 288 fnpe based structure level 1 dcl 4-200 fnpep 000162 automatic pointer dcl 4-41 set ref 201* from_cdtep parameter pointer dcl 711 ref 708 713 714 715 716 717 718 719 720 720 722 723 724 725 726 727 get_temp_segment_ 000040 constant entry external dcl 91 ref 364 hbound builtin function dcl 182 ref 348 394 1077 hcs_$delentry_seg 000044 constant entry external dcl 93 ref 434 hcs_$initiate 000074 constant entry external dcl 107 ref 252 hcs_$set_bc 000050 constant entry external dcl 96 ref 446 hcs_$set_safety_sw 000046 constant entry external dcl 94 ref 447 hcs_$terminate_noname 000052 constant entry external dcl 97 ref 1251 header based structure level 2 dcl 12-7 i 000125 automatic fixed bin(17,0) dcl 134 set ref 264* 265 294* 348* 349 349 349* 394* 395 396* 453* 454* in_use based fixed bin(17,0) level 2 in structure "ocdte" dcl 942 in procedure "update_channel" set ref 946 948* 956 956 966 977* in_use 1520 based fixed bin(17,0) array level 3 in structure "CDT" dcl 171 in procedure "up_cdt_" set ref 1071 in_use based fixed bin(17,0) level 2 in structure "ncdte" dcl 1087 in begin block on line 1086 set ref 1088* 1091* in_use based fixed bin(17,0) level 2 in structure "dcdte" dcl 1033 in procedure "delete_channel" set ref 1046 1049* 1056 1058* 1058 in_use based fixed bin(17,0) level 2 in structure "CDTE" dcl 173 in procedure "up_cdt_" set ref 280 461 463* 487 489* 489 498* 505 521 529 531* 531 580* 584* 584 588* 588 597* 601* 601 608* 622* 631* 635* 649* 653* 653 659* 659 663* 673* 673 683 info_ptr 14 000166 automatic pointer level 2 dcl 1264 set ref 1195 info_string 3 based varying char(256) level 3 dcl 12-7 set ref 1196* initial_command 51 based char(64) level 2 in structure "CDTE" dcl 173 in procedure "up_cdt_" set ref 727* 727 1154 initial_command 1571 based char(64) array level 3 in structure "CDT" dcl 171 in procedure "up_cdt_" set ref 475 initial_command 51 based char(64) level 2 in structure "ncdte" dcl 1087 in begin block on line 1086 set ref 1107 1107 initial_terminal_type 37 based char(32) level 2 packed packed unaligned dcl 173 set ref 330 332* 719* 719 instaldir parameter char packed unaligned dcl 67 set ref 15 211* 252* 446* 447* installation_parms based structure level 1 dcl 9-33 installation_parms_part_1 based structure level 1 dcl 9-40 installation_parms_resource_array_part based structure array level 1 unaligned dcl 9-144 instalname parameter char packed unaligned dcl 67 set ref 15 212* 252* 446* 447* instalp parameter pointer dcl 63 set ref 15 210* 433* ip parameter pointer dcl 63 ref 15 206 jumpx 000106 automatic fixed bin(17,0) dcl 552 set ref 568* 569 last_install_time 12 based fixed bin(71,0) level 3 dcl 171 set ref 384* last_tbf 14 based fixed bin(17,0) level 2 dcl 4-221 set ref 1130* line_type 000120 automatic fixed bin(17,0) dcl 129 in procedure "up_cdt_" set ref 508* 509 509 511 line_type 33 based fixed bin(17,0) level 2 in structure "CDTE" packed packed unaligned dcl 173 in procedure "up_cdt_" set ref 321 321 332 508 718* 718 line_type 33 based fixed bin(17,0) level 2 in structure "ncdte" packed packed unaligned dcl 1087 in begin block on line 1086 set ref 1091 line_type 33 based fixed bin(17,0) level 2 in structure "ncdte" packed packed unaligned dcl 943 in procedure "update_channel" set ref 964 line_type 33 based fixed bin(17,0) level 2 in structure "ocdte" packed packed unaligned dcl 942 in procedure "update_channel" set ref 964 listen 000226 automatic bit(1) packed unaligned dcl 467 set ref 468* 469* 476* 479* 480 lock 10 based bit(36) level 3 dcl 171 set ref 380* max_line_type constant fixed bin(17,0) initial dcl 11-48 ref 321 max_size 35 based fixed bin(17,0) level 2 dcl 171 set ref 225 385* 385 memory 1 based fixed bin(17,0) level 2 dcl 174 set ref 696* 696 mode 000130 automatic bit(36) dcl 136 set ref 244* 245 modem_type 34 based fixed bin(17,0) level 2 packed packed unaligned dcl 173 set ref 722* 722 mother 1(18) based fixed bin(17,0) level 2 in structure "old_threads" packed packed unaligned dcl 742 in procedure "merge_subtrees" ref 864 mother 1(18) based fixed bin(17,0) level 2 in structure "new_threads" packed packed unaligned dcl 743 in procedure "merge_subtrees" ref 821 mother 135(18) based fixed bin(17,0) level 3 in structure "CDTE" packed packed unaligned dcl 173 in procedure "up_cdt_" ref 469 469 473 475 mother 1(18) 000120 automatic fixed bin(17,0) level 2 in structure "t" packed packed unaligned dcl 861 in begin block on line 857 set ref 864* mother 105(18) based fixed bin(17,0) level 3 in structure "FNPE" packed packed unaligned dcl 174 in procedure "up_cdt_" set ref 412* mother 1(18) 000115 automatic fixed bin(17,0) level 2 in structure "t" packed packed unaligned dcl 817 in begin block on line 813 set ref 821* movelen 000127 automatic fixed bin(24,0) dcl 135 set ref 370* 373 439* 440 movetable based structure level 1 dcl 168 set ref 373* 373 440* 440 mpx_data 47 based structure level 2 packed packed unaligned dcl 173 mpx_service 47(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 173 set ref 726* 726 mpx_type 5 based fixed bin(17,0) level 2 in structure "FNPE" dcl 174 in procedure "up_cdt_" set ref 698* 698 mpx_type 47 based fixed bin(17,0) level 3 in structure "CDTE" packed packed unaligned dcl 173 in procedure "up_cdt_" set ref 725* 725 mpxe based structure level 1 dcl 4-221 in procedure "up_cdt_" mpxe 64 based structure level 2 in structure "FNPE" dcl 174 in procedure "up_cdt_" set ref 408 408 mpxe 204 based structure array level 3 in structure "CDT" dcl 171 in procedure "up_cdt_" mpxep 000164 automatic pointer dcl 4-41 set ref 202* 475* 476 1154* 1155 1155 muxx parameter fixed bin(17,0) packed unaligned dcl 1138 ref 1135 1147 n_bootloads 3 based fixed bin(17,0) level 2 dcl 4-221 set ref 1125* n_cdtes 41 based fixed bin(17,0) level 2 in structure "cdt" dcl 4-44 in procedure "up_cdt_" ref 1150 n_cdtes 41 based fixed bin(17,0) level 2 in structure "CDT" dcl 171 in procedure "up_cdt_" ref 231 n_dialups 121 based fixed bin(17,0) level 2 dcl 1087 set ref 1103* n_logins 122 based fixed bin(17,0) level 2 dcl 1087 set ref 1104* name 2 based char(32) level 2 in structure "dcdte" dcl 1033 in procedure "delete_channel" set ref 1036* name 2 based char(32) level 2 in structure "ocdte" dcl 789 in begin block on line 787 ref 803 832 name 2 based char(32) level 2 in structure "ocdte" dcl 942 in procedure "update_channel" set ref 949* 988* 1005* name 2 based char(32) level 2 in structure "cdte" dcl 4-72 in procedure "up_cdt_" ref 1157 name 2 based char(32) level 2 in structure "ncdte" dcl 790 in begin block on line 787 ref 803 832 name 2 based char(32) level 2 in structure "acdte" dcl 1068 in procedure "add_channel" set ref 1089 name 2 based char(32) level 2 in structure "CDTE" dcl 173 in procedure "up_cdt_" set ref 266 282 285 291 297 311 317 323 336 556* 564* 1163 1170 name 2 based char(32) level 2 in structure "ncdte" dcl 1087 in begin block on line 1086 set ref 1089* 1112* ncdte based structure level 1 dcl 943 in procedure "update_channel" set ref 960 960 1015 1015 ncdte based structure level 1 dcl 790 in begin block on line 787 ncdte based structure level 1 dcl 1087 in begin block on line 1086 set ref 1090 1090 new_cdtp 000144 automatic pointer dcl 140 set ref 203* 364* 365 373 380 381 382 383 384 385 387 389 390 394 395 428 428 438 440 442* 444* 803 808 832 844 844 844 846 846 846 850 853 927 946 948 949 949 956 956 960 960 960 964 966 966 966 976 976 977 983 985 988 990 990 994 994 1005 1015 1015 1036 1036 1038 1038 1038 1046 1049 1051* 1056 1056 1056 1058 1058 1071 1071 1074 1077 1083 1088 1089 1090 1090 1091 1091 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1107 1107 1110* 1111 1112 1112 1249 1249* new_check 000112 automatic fixed bin(17,0) dcl 749 set ref 783* 819 841* 841 842 877* 877 878 new_limit 000114 automatic fixed bin(17,0) dcl 750 set ref 785* 842 878 new_thread_ptr parameter pointer dcl 739 set ref 735 759 763 767* 770 779 785 819 821 new_threads based structure level 1 dcl 743 new_x 000110 automatic fixed bin(17,0) dcl 747 set ref 779* 780 803 820 832 837* 844 844 844 848 848 850 854* 854 857 876* 880* 880 881 newx parameter fixed bin(17,0) dcl 940 in procedure "update_channel" ref 934 960 960 960 964 966 966 983 986 997 1003 1015 1015 newx 000101 automatic fixed bin(17,0) dcl 1141 in procedure "protect_mpxes" set ref 1157* 1160 next_channel 113 based fixed bin(17,0) level 2 packed packed unaligned dcl 1087 set ref 1102* next_sister 104 based fixed bin(17,0) level 3 in structure "FNPE" packed packed unaligned dcl 174 in procedure "up_cdt_" set ref 411* next_sister 134 based fixed bin(17,0) level 3 in structure "ncdte" packed packed unaligned dcl 790 in begin block on line 787 set ref 850 854 880 next_sister 134 based fixed bin(17,0) level 3 in structure "ocdte" packed packed unaligned dcl 789 in begin block on line 787 set ref 808 850 853 next_sister 000115 automatic fixed bin(17,0) level 2 in structure "t" packed packed unaligned dcl 817 in begin block on line 813 set ref 822* next_sister 000120 automatic fixed bin(17,0) level 2 in structure "t" packed packed unaligned dcl 861 in begin block on line 857 set ref 865* next_sister 1654 based fixed bin(17,0) array level 4 in structure "CDT" packed packed unaligned dcl 171 in procedure "up_cdt_" set ref 910 927 1178 nhslas 3 based fixed bin(17,0) level 2 dcl 174 set ref 701* 701 nlslas 2 based fixed bin(17,0) level 2 dcl 174 set ref 700* 700 nmpxep parameter pointer dcl 1122 ref 1119 1124 1125 1126 1127 1128 1129 1130 no_protect 000100 automatic bit(1) dcl 1023 set ref 1025* 1031* 1046 null builtin function dcl 182 ref 198 200 201 202 203 204 210 253 332 332 365 426 436 444 15-76 976 976 987 997 1100 1194 1194 1249 1251 nx 000100 automatic fixed bin(17,0) dcl 1069 set ref 1071* 1071* 1074 1077 1083 1088 1089 1090 1090 1091 1091 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1107 1107 1110* 1111 1112 1112 ocdte based structure level 1 dcl 789 in begin block on line 787 ocdte based structure level 1 dcl 942 in procedure "update_channel" set ref 960 960 976 976 1015 1015 offset 000134 automatic fixed bin(18,0) dcl 139 set ref 237* 238 old_auth_string 000110 automatic char(32) dcl 127 set ref 985* 988* 1003* 1005* old_cdtp 000142 automatic pointer dcl 140 set ref 204* 252* 253 348 349 349 349 353 353 353 370 373 433 440 453 454 469 475 1148 1150 1178 1201* 1251 1251* old_check 000111 automatic fixed bin(17,0) dcl 749 set ref 783* 809* 809 810 838* 838 839 863 old_limit 000113 automatic fixed bin(17,0) dcl 750 set ref 784* 810 839 old_thread_ptr parameter pointer dcl 739 set ref 735 759 763 767 770* 776 784 863 864 old_threads based structure level 1 dcl 742 old_x 000107 automatic fixed bin(17,0) dcl 746 set ref 776* 777 803 807* 808* 808 813 832 837* 844 844 844 846 846 846 850 853* 853 855 866 oldx parameter fixed bin(17,0) dcl 940 ref 934 946 948 949 949 956 956 960 960 960 964 966 966 966 976 976 977 983 985 988 990 990 994 994 1005 1015 1015 options 50(17) based structure level 3 packed packed unaligned dcl 173 original_daughter_count 000102 automatic fixed bin(17,0) dcl 897 set ref 920* 924 p parameter pointer dcl 548 in procedure "change_service_type" set ref 545 556 556 556 556 561 561 568 580 584 584 588 588 597 601 601 608 622 631 635 649 653 653 659 659 663 673 673 683 683* p 000136 automatic pointer dcl 140 in procedure "up_cdt_" set ref 265* 266 280 282 285 291 297 303 309 311 315 317 321 321 323 330 332 332 336 395* 398 401 401 402 402 405 408 408 409 410 411 411 412 413 413 417 419 419 420 421 422 426* 695 696 697 698 699 700 701 1148* 1152 1154 1157 1163 1170 1176 1176 1176 part_1 based structure level 2 dcl 9-33 person 4 based char(24) level 2 packed packed unaligned dcl 15-78 set ref 1005* preempted 420 based fixed bin(17,0) level 2 dcl 15-78 ref 997 prev_sister 0(18) 000115 automatic fixed bin(17,0) level 2 in structure "t" packed packed unaligned dcl 817 in begin block on line 813 set ref 822* prev_sister 0(18) 000120 automatic fixed bin(17,0) level 2 in structure "t" packed packed unaligned dcl 861 in begin block on line 857 set ref 865* prev_sister 104(18) based fixed bin(17,0) level 3 in structure "FNPE" packed packed unaligned dcl 174 in procedure "up_cdt_" set ref 411* proc_group_id based char(32) level 3 dcl 171 set ref 244 381* 381 process 111 based pointer level 2 in structure "ocdte" packed packed unaligned dcl 942 in procedure "update_channel" set ref 994 994 process 111 based pointer level 2 in structure "ncdte" packed packed unaligned dcl 1087 in begin block on line 1086 set ref 1100* process_authorization 24 based bit(72) level 2 dcl 15-78 set ref 997* 1004* project 12 based char(12) level 2 packed packed unaligned dcl 15-78 set ref 1005* q 000140 automatic pointer dcl 140 in procedure "up_cdt_" set ref 396* 398 402 402 405 414 414 417 426* 454* 461 463 464 464 465 469 469 473 475 480 482* 483* 487 489 489 491 491* 493 493 498 500 505 508 509* 513 515* 518 518* 521 523 525* 526* 529 531 531 533* 695 696 697 698 699 700 701 1160* 1161 q parameter pointer dcl 548 in procedure "change_service_type" ref 545 556 556 556 561 561 561 564 568 r1 parameter bit(72) array dcl 1241 set ref 1239 1243* 1243* r2 parameter bit(72) array dcl 1241 set ref 1239 1243* 1243* range parameter bit(72) array dcl 1227 set ref 1224 1229* 1229* 1232* rcp_init_flags based structure level 1 packed packed unaligned dcl 10-8 release_temp_segment_ 000042 constant entry external dcl 91 ref 442 1249 retry_count 000146 automatic fixed bin(17,0) dcl 142 set ref 196* 1188 1205* ring 000131 automatic fixed bin(17,0) dcl 137 set ref 207* 244* sc_stat_$sysdir 000100 external static char(168) packed unaligned dcl 115 ref 211 service_type 32(18) based fixed bin(17,0) level 2 in structure "ncdte" packed packed unaligned dcl 943 in procedure "update_channel" set ref 960 966 966 service_type 32(18) based fixed bin(17,0) level 2 in structure "CDTE" packed packed unaligned dcl 173 in procedure "up_cdt_" set ref 309 464 513 556* 556 556* 561 561 561 568 716* 716 717 1161 service_type 000121 automatic fixed bin(17,0) dcl 129 in procedure "up_cdt_" set ref 513* 515 515 service_type 32(18) based fixed bin(17,0) level 2 in structure "ncdte" packed packed unaligned dcl 1087 in begin block on line 1086 set ref 1107 service_type 32(18) based fixed bin(17,0) level 2 in structure "ocdte" packed packed unaligned dcl 942 in procedure "update_channel" set ref 960 service_type 4 based fixed bin(17,0) level 2 in structure "FNPE" dcl 174 in procedure "up_cdt_" set ref 401 420* 697* 697 size builtin function dcl 182 ref 237 370 438 spare_channel_count 55 based fixed bin(17,0) level 2 dcl 171 set ref 390* 390 state 64 based fixed bin(17,0) level 3 in structure "FNPE" dcl 174 in procedure "up_cdt_" set ref 398 398 405 405 409* 417 417 state based fixed bin(17,0) level 2 in structure "mpxe" dcl 4-221 in procedure "up_cdt_" ref 476 1155 1155 state 77 based fixed bin(17,0) level 2 in structure "CDTE" dcl 173 in procedure "up_cdt_" ref 523 state 77 based fixed bin(17,0) level 2 in structure "cdte" dcl 4-72 in procedure "up_cdt_" ref 480 518 state 77 based fixed bin(17,0) level 2 in structure "ncdte" dcl 1087 in begin block on line 1086 set ref 1097* state 204 based fixed bin(17,0) array level 4 in structure "CDT" dcl 171 in procedure "up_cdt_" set ref 469 string builtin function dcl 182 set ref 724* 724 sub_error_ 000150 stack reference condition dcl 178 ref 275 301 346 356 1050 1109 1192 sub_error_info based structure level 1 dcl 12-7 sub_error_info_ptr 000220 automatic pointer dcl 12-6 set ref 1195* 1196 sys_log_ 000056 constant entry external dcl 99 ref 556 564 949 988 1005 1036 1112 1191 1204 1209 sys_log_$error_log 000060 constant entry external dcl 100 ref 367 1196 system_high 000122 automatic bit(72) dcl 131 set ref 206* 1232* t 000120 automatic structure level 1 dcl 861 in begin block on line 857 set ref 862* 867 867 t 000115 automatic structure level 1 dcl 817 in begin block on line 813 set ref 818* 824 824 table 14 based char(4) level 3 dcl 171 set ref 382* 382 thread_ptr parameter pointer dcl 893 ref 890 901 904 907 913 917 920 922 threads 134 based structure level 2 in structure "acdte" dcl 1068 in procedure "add_channel" set ref 1113 1113 threads 104 based structure level 2 in structure "FNPE" dcl 174 in procedure "up_cdt_" set ref 402 402 402 402 410* 414 414 419 419 422* threads 224 based structure array level 3 in structure "CDT" dcl 171 in procedure "up_cdt_" threads 1654 based structure array level 3 in structure "CDT" dcl 171 in procedure "up_cdt_" threads 134 based structure level 2 in structure "ocdte" dcl 789 in begin block on line 787 set ref 844 844 846 846 threads 56 based structure level 2 in structure "CDT" dcl 171 in procedure "up_cdt_" threads 56 based structure level 2 in structure "cdt" dcl 4-44 in procedure "up_cdt_" set ref 428 428 428 428 threads 134 based structure level 2 in structure "ncdte" dcl 790 in begin block on line 787 set ref 844 844 848 848 threads 134 based structure level 2 in structure "CDTE" dcl 173 in procedure "up_cdt_" threads 134 based structure level 2 in structure "dcdte" dcl 1033 in procedure "delete_channel" set ref 1038 1038 threads based structure level 1 dcl 894 in procedure "add_subtree" time_initial_load 4 based fixed bin(71,0) level 2 dcl 4-221 set ref 1126* time_last_crash 10 based fixed bin(71,0) level 2 dcl 4-221 set ref 1128* time_last_load 6 based fixed bin(71,0) level 2 dcl 4-221 set ref 1127* time_load_start 12 based fixed bin(71,0) level 2 dcl 4-221 set ref 1129* to_cdtep parameter pointer dcl 711 ref 708 713 714 715 716 717 718 719 720 722 723 724 725 726 727 727 tra_vec 74(18) based fixed bin(17,0) level 2 in structure "ncdte" packed packed unaligned dcl 1087 in begin block on line 1086 set ref 1094* tra_vec 74(18) based fixed bin(17,0) level 2 in structure "CDTE" packed packed unaligned dcl 173 in procedure "up_cdt_" set ref 493 493* ttt_info_$terminal_data 000062 constant entry external dcl 101 ref 332 tty_id_code 100 based char(4) level 2 dcl 1087 set ref 1099* twx 76 based fixed bin(17,0) level 2 dcl 1087 set ref 1096* type based fixed bin(17,0) level 2 dcl 174 set ref 695* 695 unspec builtin function dcl 182 set ref 410* 422* 818* 862* 994 up_sysctl_$check_acs 000076 constant entry external dcl 111 ref 244 user_abs_attributes based structure level 1 dcl 14-25 user_attributes based structure level 1 dcl 13-21 user_cdtp parameter pointer dcl 63 set ref 15 219 225 225 231 231 237 237 244 264 265 282* 370 381 382 383 385 389 390 396 428 428 434* 436* 438 803 832 844 844 844 848 848 850 854 880 910 960 960 960 964 966 966 983 986 997 1003 1015 1015 1089 1090 1090 1113 1113 1157* 1160 ute based structure level 1 dcl 15-78 utep 000222 automatic pointer initial dcl 15-76 set ref 15-76* 987* 994* 997 997 997 997 1004 1005 1005 1008* verify builtin function dcl 182 ref 266 version 37 based fixed bin(17,0) level 2 dcl 171 set ref 219 387* w_dir 15 based char(64) level 3 dcl 171 set ref 383* 383 wordcount parameter fixed bin(17,0) dcl 63 set ref 15 213 238 438* 439 446 wordno builtin function dcl 182 ref 237 370 438 x 000100 automatic fixed bin(17,0) dcl 895 in procedure "add_subtree" set ref 904* 904* 909* 910 922* 922* 926* 927 x 000102 automatic fixed bin(17,0) dcl 1142 in procedure "protect_mpxes" set ref 1147* 1147* 1148* 1178 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 14-38 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 15-326 ACTIVE internal static fixed bin(17,0) initial dcl 4-272 ACTIVE_VALUES internal static char(18) initial array dcl 8-86 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 13-77 A_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Automatic_authentication internal static fixed bin(17,0) initial dcl 10-16 CDT_version_5 internal static fixed bin(17,0) initial dcl 4-38 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 15-280 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 4-259 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 15-332 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 4-259 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-33 DN355 internal static fixed bin(17,0) initial dcl 5-19 DN6600 internal static fixed bin(17,0) initial dcl 5-19 DN6670 internal static fixed bin(17,0) initial dcl 5-19 DN7100 internal static fixed bin(17,0) initial dcl 5-19 DONT_MASK internal static bit(2) initial packed unaligned dcl 15-280 DO_MASK internal static bit(2) initial packed unaligned dcl 15-280 E_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 FNP_BOOT internal static fixed bin(17,0) initial dcl 4-298 FNP_UP internal static fixed bin(17,0) initial dcl 4-298 LINE_1050 internal static fixed bin(17,0) initial dcl 11-22 LINE_2741 internal static fixed bin(17,0) initial dcl 11-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 11-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 11-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 11-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 11-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 11-22 LINE_BSC internal static fixed bin(17,0) initial dcl 11-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 11-22 LINE_DSA internal static fixed bin(17,0) initial dcl 11-22 LINE_ETX internal static fixed bin(17,0) initial dcl 11-22 LINE_G115 internal static fixed bin(17,0) initial dcl 11-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 11-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 11-22 LINE_MC internal static fixed bin(17,0) initial dcl 11-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 11-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 11-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 11-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 11-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 11-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 11-22 LINE_VIP internal static fixed bin(17,0) initial dcl 11-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 11-22 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 15-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 15-284 MC_SERVICE internal static fixed bin(17,0) initial dcl 4-259 MPX_BOOT internal static fixed bin(17,0) initial dcl 4-306 MPX_DOWN internal static fixed bin(17,0) initial dcl 4-306 MPX_FREE internal static fixed bin(17,0) initial dcl 4-306 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 4-306 M_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 Manual_authentication internal static fixed bin(17,0) initial dcl 10-16 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 8-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 8-76 NOW_HAS_PROCESS internal static fixed bin(17,0) initial dcl 8-76 N_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 No_authentication internal static fixed bin(17,0) initial dcl 10-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 10-16 PREEMPT_BUMPED internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_TERMSGNL_RECEIVED internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_TERM_SENT internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_UNBUMP internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_UNBUMP_IGNORE_ALARM internal static fixed bin(17,0) initial dcl 8-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 8-142 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 15-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 15-261 PT_ALARM internal static fixed bin(17,0) initial dcl 8-106 PT_BUMP internal static fixed bin(17,0) initial dcl 8-106 PT_DAEMON internal static fixed bin(17,0) initial dcl 15-261 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 8-106 PT_DETACH internal static fixed bin(17,0) initial dcl 8-106 PT_FPE internal static fixed bin(17,0) initial dcl 8-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 8-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 15-261 PT_LOGOUT internal static fixed bin(17,0) initial dcl 8-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 8-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 8-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 8-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 8-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 8-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 15-290 REW_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 1-30 SLAVE_SERVICE internal static fixed bin(17,0) initial dcl 4-259 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 STATE_VALUES internal static char(15) initial array dcl 8-70 S_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 15-271 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 8-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 8-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 8-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 8-93 TAG_UFT internal static char(1) initial packed unaligned dcl 8-93 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 4-259 TRA_VEC_VALUES internal static char(32) initial array dcl 8-54 TTY_DIALED internal static fixed bin(17,0) initial dcl 8-64 TTY_HUNG internal static fixed bin(17,0) initial dcl 8-64 TTY_KNOWN internal static fixed bin(17,0) initial dcl 8-64 UFLAG_NAMES internal static varying char(24) initial array dcl 15-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 13-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 13-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 13-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 13-50 UTE_version_4 internal static fixed bin(17,0) initial dcl 15-74 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 8-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 8-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 8-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 8-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 8-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 8-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 8-25 WAIT_DIAL_RELEASE internal static fixed bin(17,0) initial dcl 8-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 8-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 8-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 8-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 8-25 WAIT_HANGUP internal static fixed bin(17,0) initial dcl 8-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 8-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 8-25 WAIT_LOGOUT internal static fixed bin(17,0) initial dcl 8-25 WAIT_LOGOUT_HOLD internal static fixed bin(17,0) initial dcl 8-25 WAIT_LOGOUT_SIG internal static fixed bin(17,0) initial dcl 8-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 8-25 WAIT_NEW_PROC internal static fixed bin(17,0) initial dcl 8-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 8-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 8-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 8-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 8-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 8-25 W_ACCESS internal static bit(3) initial packed unaligned dcl 1-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 1-36 authentication_level_names internal static char(12) initial array packed unaligned dcl 10-21 condition_info_header_ptr automatic pointer dcl 7-4 condition_info_ptr automatic pointer dcl 6-10 condition_info_version_1 internal static fixed bin(17,0) initial dcl 6-30 fnp_models internal static fixed bin(17,0) initial array dcl 5-28 fnp_types internal static char(8) initial array packed unaligned dcl 5-25 generic_destination based char(32) packed unaligned dcl 4-195 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 9-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 9-38 line_types internal static char(16) initial array packed unaligned dcl 11-54 n_sync_line_types internal static fixed bin(17,0) initial dcl 11-50 rifp automatic pointer dcl 10-6 sub_error_info_version_1 internal static fixed bin(17,0) initial dcl 12-13 supported_fnp internal static bit(1) initial array packed unaligned dcl 5-31 sync_line_type internal static fixed bin(17,0) initial array dcl 11-52 NAMES DECLARED BY EXPLICIT CONTEXT. ADD 004405 constant label dcl 873 COMPARE_TWO_CHANNELS 004047 constant label dcl 787 ref 829 870 883 DELETE 004072 constant label dcl 803 GIVE_UP 003263 constant label dcl 1209 set ref 1202 Join 005464 constant label dcl 1033 ref 1026 MERGE 004165 constant label dcl 832 NEW_CDT_DAMAGE 006567 constant entry internal dcl 1217 ref 277 780 842 878 907 1109 NO_MORE_NEW 004345 constant label dcl 857 ref 881 NO_MORE_OLD 004124 constant label dcl 813 ref 855 OLD_CDT_DAMAGE 006556 constant entry internal dcl 1182 ref 346 777 810 839 924 1050 1150 OLD_CDT_DAMAGE_LABEL 003071 constant label dcl 1188 ref 1185 RETRY_INSTALLATION 000751 constant label dcl 198 set ref 1207 RETURN 003070 constant label dcl 539 ref 217 223 229 235 242 249 257 270 286 292 298 307 313 319 325 368 1081 1166 1172 1214 1221 add_channel 005662 constant entry internal dcl 1064 ref 876 909 add_subtree 004443 constant entry internal dcl 890 ref 414 767 824 848 1113 change 000000 constant label array(11:88) dcl 571 ref 569 change_service_type 003321 constant entry internal dcl 545 ref 960 cleanup 006731 constant entry internal dcl 1246 ref 1206 1211 copy_cdte 003627 constant entry internal dcl 708 ref 1015 1090 copy_fnpe 003603 constant entry internal dcl 692 ref 400 407 delete_channel 005445 constant entry internal dcl 1019 ref 807 delete_channel$$no_protect 005455 constant entry internal dcl 1028 ref 926 delete_subtree 004527 constant entry internal dcl 913 ref 419 770 846 867 1038 equal_aim_ranges 006664 constant entry internal dcl 1239 ref 983 init_mpxe 006272 constant entry internal dcl 1119 ref 408 1107 merge_subtrees 003716 constant entry internal dcl 735 ref 402 428 844 protect_mpxes 006315 constant entry internal dcl 1135 ref 349 353 1176 tell_user 003560 constant label dcl 683 ref 586 592 606 657 661 up_cdt_ 000721 constant entry external dcl 15 update_channel 004603 constant entry internal dcl 934 ref 837 valid_aim_range 006610 constant entry internal dcl 1224 ref 303 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 10024 10136 7220 10034 Length 10750 7220 112 576 604 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME up_cdt_ 284 external procedure is an external procedure. on unit on line 275 64 on unit on unit on line 346 64 on unit begin block on line 465 begin block shares stack frame of external procedure up_cdt_. change_service_type internal procedure shares stack frame of internal procedure merge_subtrees. copy_fnpe internal procedure shares stack frame of external procedure up_cdt_. copy_cdte 64 internal procedure is called by several nonquick procedures. merge_subtrees 336 internal procedure calls itself recursively. begin block on line 787 begin block shares stack frame of internal procedure merge_subtrees. begin block on line 813 begin block shares stack frame of internal procedure merge_subtrees. begin block on line 857 begin block shares stack frame of internal procedure merge_subtrees. add_subtree 74 internal procedure is called by several nonquick procedures. update_channel internal procedure shares stack frame of internal procedure merge_subtrees. delete_channel 103 internal procedure enables or reverts conditions. on unit on line 1050 64 on unit add_channel 66 internal procedure is called by several nonquick procedures. begin block on line 1086 116 begin block enables or reverts conditions. on unit on line 1109 64 on unit init_mpxe 64 internal procedure is called by several nonquick procedures. protect_mpxes 88 internal procedure calls itself recursively. OLD_CDT_DAMAGE 64 internal procedure is called by several nonquick procedures. on unit on line 1192 100 on unit NEW_CDT_DAMAGE 64 internal procedure is called by several nonquick procedures. valid_aim_range internal procedure shares stack frame of external procedure up_cdt_. equal_aim_ranges internal procedure shares stack frame of internal procedure merge_subtrees. cleanup internal procedure shares stack frame of external procedure up_cdt_. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME add_channel 000100 nx add_channel add_subtree 000100 x add_subtree 000101 check add_subtree 000102 original_daughter_count add_subtree delete_channel 000100 no_protect delete_channel merge_subtrees 000106 jumpx change_service_type 000107 old_x merge_subtrees 000110 new_x merge_subtrees 000111 old_check merge_subtrees 000112 new_check merge_subtrees 000113 old_limit merge_subtrees 000114 new_limit merge_subtrees 000115 t begin block on line 813 000120 t begin block on line 857 protect_mpxes 000100 check protect_mpxes 000101 newx protect_mpxes 000102 x protect_mpxes up_cdt_ 000100 auth_string up_cdt_ 000110 old_auth_string up_cdt_ 000120 line_type up_cdt_ 000121 service_type up_cdt_ 000122 system_high up_cdt_ 000124 fnp_sw up_cdt_ 000125 i up_cdt_ 000126 cdtx up_cdt_ 000127 movelen up_cdt_ 000130 mode up_cdt_ 000131 ring up_cdt_ 000132 debg up_cdt_ 000134 offset up_cdt_ 000136 p up_cdt_ 000140 q up_cdt_ 000142 old_cdtp up_cdt_ 000144 new_cdtp up_cdt_ 000146 retry_count up_cdt_ 000156 cdtp up_cdt_ 000160 cdtep up_cdt_ 000162 fnpep up_cdt_ 000164 mpxep up_cdt_ 000166 auto_condition_info up_cdt_ 000220 sub_error_info_ptr up_cdt_ 000222 utep up_cdt_ 000226 listen begin block on line 465 THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as r_ge_a alloc_char_temp enter_begin_block leave_begin_block call_ext_out_desc call_ext_out call_int_this call_int_other begin_return_mac return_mac tra_ext_1 enable_op shorten_stack ext_entry_desc int_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$equal aim_check_$greater_or_equal aim_check_$in_range astty_$tty_order asu_$asu_listen asu_$asu_remove asu_$attach_channel asu_$bump_code asu_$write_chn_message cdt_mgr_$find_cdt_channel cdt_mgr_$thread cdt_mgr_$thread_in_cdt_channel cdt_mgr_$thread_out_cdt_channel cu_$level_get display_access_class_ display_access_class_$range find_condition_info_ get_temp_segment_ hcs_$delentry_seg hcs_$initiate hcs_$set_bc hcs_$set_safety_sw hcs_$terminate_noname release_temp_segment_ sys_log_ sys_log_$error_log ttt_info_$terminal_data up_sysctl_$check_acs THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_error_table_$chn_auth_excludes as_error_table_$chn_deleted as_error_table_$chn_svc_changed error_table_$action_not_performed sc_stat_$sysdir LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 15 000712 15 76 000746 196 000750 198 000751 200 000753 201 000754 202 000755 203 000756 204 000757 206 000760 207 000766 209 000775 210 001003 211 001005 212 001014 213 001021 215 001024 216 001031 217 001033 219 001034 221 001041 222 001046 223 001050 225 001051 227 001054 228 001061 229 001063 231 001064 233 001066 234 001073 235 001075 237 001076 238 001106 240 001111 241 001116 242 001120 244 001121 245 001154 247 001163 248 001170 249 001173 252 001174 253 001240 255 001244 256 001252 257 001255 264 001256 265 001271 266 001277 268 001311 269 001316 270 001321 275 001322 277 001336 278 001343 280 001344 282 001346 283 001372 285 001375 286 001413 288 001415 290 001420 291 001423 292 001441 294 001443 296 001446 297 001451 298 001467 301 001471 303 001472 305 001506 306 001514 307 001517 309 001520 311 001526 312 001544 313 001550 315 001551 317 001555 318 001573 319 001577 321 001600 323 001607 324 001625 325 001631 330 001632 332 001636 334 001673 336 001676 337 001714 338 001720 342 001721 346 001723 348 001745 349 001753 352 001774 353 001776 356 002014 364 002015 365 002041 367 002045 368 002105 370 002106 373 002122 380 002127 381 002130 382 002133 383 002135 384 002140 385 002143 387 002145 389 002147 390 002151 394 002153 395 002162 396 002166 398 002173 400 002201 401 002202 402 002205 404 002222 405 002223 407 002227 408 002230 409 002241 410 002244 411 002247 412 002253 413 002255 414 002261 416 002272 417 002273 419 002277 420 002307 421 002312 422 002313 424 002316 426 002320 428 002323 433 002343 434 002346 436 002357 438 002362 439 002375 440 002376 442 002403 444 002430 446 002432 447 002464 453 002515 454 002525 461 002531 463 002534 464 002536 465 002541 468 002545 469 002546 472 002564 473 002565 475 002566 476 002572 478 002577 479 002600 480 002602 482 002607 483 002621 486 002633 487 002634 489 002636 491 002640 493 002653 498 002664 500 002666 504 002670 505 002671 508 002673 509 002676 511 002733 513 002736 515 002743 518 003000 520 003016 521 003017 523 003021 525 003024 526 003036 528 003050 529 003051 531 003053 533 003055 535 003064 537 003066 539 003070 1188 003071 1191 003073 1192 003115 1194 003131 1195 003151 1196 003155 1199 003217 1201 003220 1202 003232 1204 003235 1205 003257 1206 003261 1207 003262 1209 003263 1211 003305 1212 003306 1213 003312 1214 003317 1279 003320 545 003321 556 003323 561 003413 564 003443 565 003471 568 003472 569 003476 571 003477 580 003500 582 003502 584 003503 586 003505 588 003506 592 003510 594 003511 597 003512 599 003514 601 003515 606 003517 608 003520 610 003522 612 003523 622 003524 625 003526 626 003527 631 003530 633 003532 635 003533 638 003535 639 003536 646 003537 649 003540 651 003542 653 003543 657 003545 659 003546 661 003550 663 003551 667 003553 668 003554 673 003555 681 003557 683 003560 687 003602 692 003603 695 003604 696 003606 697 003612 698 003614 699 003616 700 003621 701 003623 702 003625 708 003626 713 003634 714 003644 715 003647 716 003651 717 003653 718 003656 719 003660 720 003663 722 003670 723 003672 724 003676 725 003701 726 003703 727 003705 729 003714 735 003715 759 003723 763 003747 767 003753 770 003764 773 004002 776 004003 777 004006 779 004014 780 004022 783 004030 784 004032 785 004041 803 004047 807 004072 808 004101 809 004111 810 004112 813 004122 818 004124 819 004127 820 004137 821 004142 822 004144 824 004150 826 004161 829 004163 832 004164 837 004165 838 004167 839 004170 841 004200 842 004201 844 004211 846 004255 848 004271 850 004302 853 004326 854 004330 855 004341 857 004343 862 004345 863 004350 864 004360 865 004362 866 004366 867 004371 868 004402 870 004404 876 004405 877 004414 878 004415 880 004425 881 004437 883 004440 887 004441 890 004442 900 004450 901 004451 904 004460 906 004466 907 004467 909 004504 910 004513 911 004525 913 004526 916 004534 917 004535 920 004544 922 004545 923 004552 924 004553 926 004563 927 004572 928 004602 934 004603 946 004605 948 004615 949 004620 956 004653 960 004666 964 004720 966 004743 976 004772 977 005026 978 005036 983 005037 985 005070 986 005107 987 005130 988 005133 990 005173 994 005210 997 005215 1003 005261 1004 005301 1005 005314 1008 005367 1015 005411 1016 005443 1019 005444 1025 005452 1026 005453 1028 005454 1031 005462 1036 005464 1038 005523 1046 005550 1049 005564 1050 005566 1051 005610 1053 005623 1056 005624 1058 005647 1060 005657 1061 005660 1064 005661 1071 005667 1073 005706 1074 005710 1077 005716 1079 005721 1080 005727 1081 005732 1083 005735 1086 005736 1088 005741 1089 005751 1090 005767 1091 006012 1093 006027 1094 006034 1095 006037 1096 006042 1097 006044 1098 006047 1099 006056 1100 006061 1101 006064 1102 006065 1103 006070 1104 006072 1105 006075 1106 006101 1107 006104 1109 006127 1110 006151 1111 006165 1112 006204 1113 006245 1115 006267 1116 006270 1119 006271 1124 006277 1125 006304 1126 006305 1127 006307 1128 006310 1129 006311 1130 006312 1131 006313 1135 006314 1146 006322 1147 006323 1148 006336 1149 006344 1150 006345 1152 006367 1154 006375 1155 006377 1157 006404 1158 006431 1160 006435 1161 006443 1163 006450 1165 006466 1166 006472 1168 006475 1170 006476 1171 006514 1172 006520 1176 006523 1178 006544 1179 006554 1182 006555 1185 006563 1217 006566 1219 006574 1220 006603 1221 006605 1224 006610 1229 006612 1232 006635 1235 006660 1239 006664 1243 006666 1246 006731 1249 006732 1251 006762 1253 007000 ----------------------------------------------------------- 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