COMPILATION LISTING OF SEGMENT dial_ctl_ Compiled by: Multics PL/I Compiler, Release 31b, of April 24, 1989 Compiled at: Bull HN, Phoenix AZ, System-M Compiled on: 05/16/89 1053.1 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) BULL HN Information Systems Inc., 1989 * 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 /****^ HISTORY COMMENTS: 15* 1) change(85-08-07,Swenson), approve(87-07-13,MCR7741), 16* audit(87-07-24,Brunelle), install(87-08-04,MR12.1-1055): 17* to check for access on "tandd.acs" rather than just "tandd". Also, to 18* log errors received when issuing tandd_attach control order. 19* 2) change(86-05-13,GJohnson), approve(86-05-13,MCR7387), 20* audit(86-05-13,Martinson), install(86-05-14,MR12.0-1055): 21* Correct error message documentation. 22* 3) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 23* audit(87-07-24,Brunelle), install(87-08-04,MR12.1-1055): 24* Modified to check anstbl.login_server_present before calling 25* uc_cleanup_network_dials_ to ensure that the MNA RPQ code is only invoked 26* if it is present. 27* 4) change(86-07-18,Swenson), approve(86-08-13,MCR7512), 28* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 29* Modified to not attempt to logout channels whose service type is not 30* normally login-type. 31* (Actual change date was 85-07-18) 32* 5) change(86-07-23,Swenson), approve(86-08-13,MCR7512), 33* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 34* Modified to increase the maximum length of "reason" so entire audit 35* message can be displayed. 36* (Actual change date was 85-07-23) 37* 6) change(86-07-23,Swenson), approve(86-08-13,MCR7512), 38* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 39* Modified to require RW access to ACS path before allowing access to 40* channels. 41* (Actual change date was 85-07-23) 42* 7) change(86-07-24,Swenson), approve(86-08-13,MCR7512), 43* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 44* Modified to check the dialok attribute for the terminate_dial_out request 45* for consistency with all other requests. 46* (Actual change date was 85-07-24) 47* 8) change(86-07-24,Swenson), approve(86-08-13,MCR7512), 48* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 49* Modified to send control messages for all granted requests. 50* (Actual change date was 85-07-24) 51* 9) change(86-07-24,Swenson), approve(86-08-13,MCR7512), 52* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 53* Modified to ensure dial_out requests check the service type of the 54* requested channel before attempting to see if it is in use. 55* (Actual change date was 85-07-24) 56* 10) change(86-07-25,Swenson), approve(86-08-13,MCR7512), 57* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 58* Modified to fix various small bugs which prevented correct operation 59* during functional testing. 60* (Actual change date was 85-07-25) 61* 11) change(86-07-27,Swenson), approve(86-08-13,MCR7512), 62* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 63* Modified to ensure a channel's access class is correct before using it in 64* access calculations. Also to reset the access class when the channel 65* hangs up. 66* (Actual change date was 85-07-25) 67* 12) change(86-10-14,Lippard), approve(85-12-30,MCR7326), 68* audit(86-10-27,GDixon), install(86-10-28,MR12.0-1200): 69* Modified to use as_request_sender version 2. 70* 13) change(87-04-03,Parisek), approve(87-07-13,MCR7741), 71* audit(87-07-24,Brunelle), install(87-08-04,MR12.1-1055): 72* Test for variable size before assigning value to variable to prevent 73* stringsize errors. 74* 14) change(87-04-27,GDixon), approve(87-07-13,MCR7741), 75* audit(87-07-24,Brunelle), install(87-08-04,MR12.1-1055): 76* Upgraded for change to answer_table.incl.pl1 and user_table_entry.incl.pl1 77* 15) change(87-06-01,GDixon), approve(87-07-13,MCR7741), 78* audit(87-07-24,Brunelle), install(87-08-04,MR12.1-1055): 79* Expand aliases in "dial DIAL_ID person.project". 80* 16) change(87-06-12,GDixon), approve(87-07-13,MCR7741), 81* audit(87-07-24,Brunelle), install(87-08-04,MR12.1-1055): 82* A) Change to audit all dial actions via as_access_audit_$channel, 83* rather than doing some there and some by direct calls to sys_log_. 84* 17) change(87-06-23,GDixon), approve(87-07-13,MCR7741), 85* audit(87-07-24,Brunelle), install(87-08-04,MR12.1-1055): 86* A) Correct format of "dial system" audit messages. 87* B) Avoid calling as_access_audit_ when no process is associated with 88* the operation. 89* 18) change(88-11-28,Farley), approve(88-12-14,MCR8035), 90* audit(89-05-15,Parisek), install(89-05-16,MR12.3-1045): 91* Corrected look_for_channel procedure to check for a "no available device" 92* error before checking for a "bad access" error. 93* END HISTORY COMMENTS */ 94 95 /* format: style2,indcomtxt,^inddcls,^indattr */ 96 97 dial_ctl_: 98 procedure (P_cdtep, P_dial_qualifier, P_target_person_project, P_code); 99 100 /* DIAL_CTL_ - answering service module which handles "dial" preaccess 101* commands, user requests to attach, release, dial_out, and tandd_attach 102* communications channels. */ 103 104 /* 105* Modified 750117 by PG for dial_qualifiers. 106* Modified 750307 by PG for dialing to absentee and daemon processes. 107* Modified 750716 by PG to get privileged attach to work. 108* Modified 750812 by PG & THVV for cdt. 109* Modified 03/18/76 by David Jordan for Auto Call. 110* Modified 07/20/76 by D. M. Wells to use new WAIT_DIAL_GRAB cdte state 111* Modified 760819 by Roy Planalp to produce special messages for ftp users 112* Modified Aug-Sept 1976 by M. Grady and T. Casey to properly dispose of a dialed channel whose master process terminated 113* Modified by S.T. Kent Nov-Dec 1976 to add registered dial qualifier facility 114* and facility to release a selected dialed channel. 115* Modified by D. M. Wells, May, 1977, to fix bug wrt slave channels and to 116* improve error messages. 117* Modified by Robert Coren, June, 1977, to use new terminal type stuff. 118* Modified November 1978 by Larry Johnson to pass devx's in dial messages 119* because channel names became longer than 6 characters. 120* Modified April 1979 by T. Casey for MR7.0a to eliminate "s" as a synonym for "system" in the dial command. 121* Modified April 1979 by Larry Johnson for no_hangup feature of release_channel. 122* Modified July 1979 by C. Hornig to properly recognize non-FNP MCS channels. 123* Modified September 1979 by Larry Johnson to set terminal types on slave channels. 124* Modified November 1980 by Art Beattie to only look for dial out channels on loaded multiplexers and correct 125* error messages. 126* Modified November 1980 by E.N. Kittlitz for new dialout requests, cleanup and bugfixes. 127* Modified March 1981 by Robert Coren for T & D attachments. 128* Modified April 1981 by Robert Coren to issue copy_meters order when assigning channel. 129* Modified April 1981 by E. N. Kittlitz for cdte.dial_ev_chn. 130* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 131* Modified April 1982, E. N. Kittlitz. New AS initialization. 132* Modified July 1982, E. N. Kittlitz. Support MCS channel (un)masking. 133* Modified November 1982, E. N. Kittlitz. don't use masked dial-out channels. 134* Modified January 1983, Keith Loepere for generic_destination and so 135* priv_attach also scans for suitable channel. 136* Modified May 1983, E. N. Kittlitz. required access class support for AIMish stys. 137* Modified 831216, E. N. Kittlitz. fix required access class, dial_out, when mux is down. 138* Modified 840211, Jeffrey I. Schiller fix required access class for "dial" command. 139* Modified 84-04-05 BIM to finish channel AIM, recasting required access class. 140* Modified 84-04-20 BIM to add tracing to debug above. 141* Modified 1984-09-28 BIM to fix t&d attach, log release, change trace sv. 142* Modified 1984-10-03 BIM to use fake_connect protocol for t&d failures. 143* Modified 1984-10-04 BIM to use up_sysctl_$check_acs for tandd.acs 144* Modified 1984-10-17 by E. Swenson to clean up error reporting and 145* logging and, in doing so, audit some events that should be audited. 146* Modified 1985-01-23 by E. Swenson for new A.S. auditing. 147* Modified 1985-02-19 BIM to clear out user_name on release. 148* Modified 1985-04-11 by E. Swenson to fix mangled log message. 149**/ 150 151 /* Parameters */ 152 153 dcl P_cdtep ptr parameter; /* pointer to channel entry for console */ 154 dcl P_dial_qualifier char (*) parameter; /* dial qualifier */ 155 dcl P_target_person_project char (*) parameter; /* target Person.Project */ 156 dcl P_code fixed bin (35) parameter; 157 158 /* Automatic */ 159 160 dcl acs_name char (32); /* for cheching .acs segs */ 161 dcl bf fixed bin (71) based; /* overlay for event msg */ 162 dcl buffer char (200) aligned; 163 dcl 1 CAI structure aligned like channel_audit_info automatic; 164 dcl cdtx fixed bin; /* used by find_cdte */ 165 dcl chn fixed bin (71); /* event channel */ 166 dcl code fixed bin (35); /* error code */ 167 dcl date char (50); /* for date_time_ */ 168 dcl desired_channel char (32); /* from dsr.channel_name if allowing starnames */ 169 dcl dial_qualifier char (32); 170 dcl dial_out_used_privilege bit (1) aligned; 171 dcl 1 DSI aligned like dial_server_info automatic; /* for as_access_audit_ */ 172 dcl find_person_project bit (1) aligned; 173 dcl format char (100) aligned; /* for connected to system message */ 174 dcl i fixed bin; /* counter */ 175 dcl junk char (8) aligned; 176 dcl mcode fixed bin (35); /* output message */ 177 dcl added_info char (128); /* additional info for log messages */ 178 dcl mode bit (36) aligned; 179 dcl phone_data char (32) varying; /* from dsr.dial_out_destination */ 180 dcl process_id bit (36) aligned init (""b); 181 dcl process_destroyed_flag bit (1) aligned automatic; 182 dcl process_group_id char (32) init ("?"); 183 dcl process_ring fixed bin (3) init (7); 184 dcl reason char (256); /* error message component */ 185 dcl reason_code fixed bin (35); /* error code associated with reason */ 186 dcl request_type fixed bin (17) initial (0); /* type of request, if any */ 187 dcl requested_access_class bit (72) aligned; 188 dcl retval fixed bin (71); /* signal to user (see "rv") */ 189 dcl rq_person char (22); /* for looking up user */ 190 dcl rq_project char (9); /* for looking up user */ 191 dcl rvp ptr; /* pointer to retval */ 192 dcl server_authorization char (100); 193 dcl star_channel_name bit (1) aligned; /* we have a starname channel specification */ 194 dcl suppress_listen bit (1); 195 dcl target_person_project char (32); 196 dcl used_privilege bit (1) aligned; 197 dcl user_lth fixed bin; 198 dcl user_string char (100); 199 dcl word char (8) aligned; 200 201 dcl 1 term_info like terminal_info; 202 203 dcl 1 set_type_info like set_term_type_info; 204 205 /* Constant */ 206 207 dcl ( 208 JUST_DIALED bit (15) aligned initial ("77770"b3), 209 JUST_HUNGUP bit (15) aligned initial ("77771"b3), 210 REQUEST_GRANTED bit (15) aligned initial ("77772"b3), 211 REQUEST_DENIED bit (15) aligned initial ("77773"b3) 212 ) internal static options (constant); 213 214 dcl ME char (9) init ("dial_ctl_") static options (constant); 215 216 declare ( 217 PRIV_ATTACH init (1), 218 DIAL_OUT init (2), 219 DIAL_IN init (3), 220 T_AND_D init (4) 221 ) fixed bin internal static options (constant); 222 223 dcl ATTACHMENT_TYPES (1:4) char (12) internal static options (constant) 224 initial ("priv_attach", "dial_out", "dial_in", "t&d_attach"); 225 226 dcl ( 227 UNKNOWN_RQ initial (0), 228 START_DIAL_ID_RQ initial (1), 229 STOP_DIAL_ID_RQ initial (2), 230 RELEASE_CHN_RQ initial (3), 231 PRIV_ATTACH_CHN_RQ initial (4), 232 TANDD_ATTACH_CHN_RQ initial (5), 233 RELEASE_DIAL_ID_RQ initial (6), 234 DIAL_OUT_RQ initial (7), 235 TERMINATE_DIAL_OUT_RQ initial (8) 236 ) fixed bin (17) internal static options (constant); 237 238 dcl REQUEST_TYPES (0:8) char (20) internal static options (constant) 239 initial ("unknown", "start dial service", "stop dial service", "release channel", "priv attach", 240 "tandd attach", "release dial service", "dial out", "terminate dial out"); 241 242 dcl ( 243 TRUE initial ("1"b), 244 FALSE initial ("0"b) 245 ) bit (1) aligned internal static options (constant); 246 247 /* external static */ 248 249 dcl as_error_table_$dialagain fixed bin (35) external; 250 dcl as_error_table_$dialup_error fixed bin (35) ext static; 251 dcl as_error_table_$dial_connect_msg fixed bin (35) external; 252 dcl as_error_table_$dialdied fixed bin (35) external; 253 dcl as_error_table_$dialnoline fixed bin (35) external; 254 dcl as_error_table_$dialnotup fixed bin (35) external; 255 dcl as_error_table_$dial_sys_msg fixed bin (35) external; 256 dcl error_table_$action_not_performed fixed bin (35) external static; 257 dcl error_table_$ai_restricted fixed bin (35) ext static; 258 dcl error_table_$ai_out_range fixed bin (35) static external; 259 dcl error_table_$bad_name fixed bin (35) static external; 260 dcl error_table_$badstar fixed bin (35) static external; 261 dcl error_table_$dial_active fixed bin (35) static external; 262 dcl error_table_$dial_id_busy fixed bin (35) static external; 263 dcl error_table_$id_not_found fixed bin (35) static external; 264 dcl error_table_$insufficient_access fixed bin (35) static external; 265 dcl error_table_$invalid_resource_state fixed bin (35) static external; 266 dcl error_table_$io_no_permission fixed bin (35) static external; 267 dcl error_table_$name_not_found fixed bin (35) static external; 268 dcl error_table_$noentry fixed bin (35) ext static; 269 dcl error_table_$no_connection fixed bin (35) static external; 270 dcl error_table_$no_dialok fixed bin (35) static external; 271 dcl error_table_$order_error fixed bin (35) static external; 272 dcl error_table_$request_not_recognized fixed bin (35) static external; 273 dcl error_table_$request_pending fixed bin (35) external; 274 dcl error_table_$resource_attached fixed bin (35) ext static; 275 dcl error_table_$resource_not_free fixed bin (35) static external; 276 dcl error_table_$resource_unavailable fixed bin (35) static external; 277 dcl error_table_$resource_unknown fixed bin (35) static external; 278 dcl error_table_$unable_to_check_access fixed bin (35) static external; 279 dcl error_table_$undefined_order_request fixed bin (35) static external; 280 dcl error_table_$unimplemented_version fixed bin (35) static external; 281 282 /* Builtin */ 283 284 dcl (addr, addrel, after, before, bit, fixed, float, hbound, lbound, length, low, null, rtrim, string, substr, unspec) 285 builtin; 286 287 /* Entries */ 288 289 dcl aim_check_$in_range entry (bit (72) aligned, (2) bit (72) aligned) returns (bit (1) aligned); 290 dcl aim_check_$equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 291 dcl aim_check_$greater_or_equal entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 292 dcl aim_util_$get_access_class entry (bit (72) aligned) returns (bit (72) aligned); 293 dcl as_access_audit_$channel entry (ptr, ptr, ptr, fixed bin, ptr, char (*)); 294 dcl as_access_audit_$dialid entry (ptr, fixed bin, ptr, char (*)); 295 dcl as_any_other_handler_ entry (char (*), entry, label, label); 296 dcl astty_$tty_changemode entry (ptr, char (*), fixed bin (35)); 297 dcl astty_$tty_detach entry (ptr, fixed bin, fixed bin (35)); 298 dcl astty_$tty_force entry (ptr, ptr, fixed bin, fixed bin (35)); 299 dcl astty_$tty_new_proc entry (ptr, bit (36) aligned, fixed bin (35)); 300 dcl astty_$tty_order entry (ptr, char (*), ptr, fixed bin (35)); 301 dcl astty_$tty_state entry (ptr, fixed bin (35)); 302 dcl asu_$asu_listen entry (ptr, fixed bin (35)); 303 dcl asu_$find_process entry (bit (36) aligned, fixed bin, ptr); 304 dcl asu_$format_ftp_msg entry (char (200) aligned, fixed bin, fixed bin, fixed bin) returns (char (200) aligned); 305 dcl asu_$reset_access_class entry (pointer); 306 dcl asu_$write_chn_message entry (ptr, fixed bin (35), char (8) aligned, fixed bin (35)); 307 dcl check_star_name_$entry entry (char (*), fixed bin (35)); 308 dcl convert_access_class_$to_string_short entry (bit (72) aligned, char (*), fixed bin (35)); 309 dcl convert_status_code_ entry (fixed bin (35), char (8) aligned, char (100) aligned); 310 dcl date_time_$format entry (character (*), fixed binary (71), character (*), character (*)) 311 returns (character (250) var); 312 dcl display_access_class_ entry (bit (72) aligned) returns (character (32) aligned); 313 dcl device_acct_$off entry (fixed bin, char (*) aligned, ptr); 314 dcl device_acct_$on entry (fixed bin, char (*) aligned, ptr); 315 dcl get_process_access_class_ entry () returns (bit (72) aligned); 316 dcl hash_$search entry (ptr, char (*), fixed bin (35), fixed bin (35)); 317 dcl hcs_$get_user_access_modes 318 entry (char (*), char (*), char (*), fixed bin, bit (36) aligned, bit (36) aligned, fixed bin (35)); 319 dcl hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 320 dcl ioa_$rs entry options (variable); 321 dcl ioa_$rsnnl entry options (variable); 322 dcl ipc_$drain_chn entry (fixed bin (71), fixed bin (35)); 323 dcl lg_ctl_$logout_channel entry (ptr, char (*)); 324 dcl match_star_name_ entry (char (*), char (*), fixed bin (35)); 325 dcl pathname_ entry (character (*), character (*)) returns (character (168)); 326 dcl pnt_manager_$admin_get_entry entry (char (*), ptr, fixed bin (35)); 327 dcl sys_log_ entry options (variable); /* type to operator */ 328 dcl sys_log_$error_log entry options (variable); /* log error using error_table_ code */ 329 dcl ttt_info_$initial_string entry (char (*), char (*) varying, fixed bin (35)); 330 dcl ttt_info_$modes entry (char (*), char (*), fixed bin (35)); 331 dcl uc_cleanup_network_dials_ entry (bit (36) aligned, bit (1) aligned, fixed bin (35)); 332 dcl up_sysctl_$check_acs entry (char (*), char (*), fixed bin, bit (36) aligned, fixed bin (35)); 333 334 /* Based */ 335 336 dcl 1 rv based (rvp) aligned, /* overlay, for return signal */ 337 2 chan char (6) unaligned, /* name of tty dialing, or "contrl" */ 338 2 control unaligned, 339 3 devx_msg bit (1), /* indicates rv.chan contains a devx, not a name */ 340 3 error_msg bit (1), /* indicates rv.chan contains an error code, not a name */ 341 3 pad bit (1), 342 3 code bit (15); /* what happened */ 343 344 /* Static */ 345 346 dcl static_trace_sw bit (1) internal static init ("0"b); 347 348 /* Conditions */ 349 350 dcl any_other condition; 351 352 /* Program */ 353 354 /* dial_ctl_: procedure (P_cdtep, P_dial_qualifier, P_target_person_project, P_code); */ 355 356 /**** This entrypoint handles the "dial" preaccess command. On entry, 357* P_cdtep points to the cdte of the channel requesting the dial, 358* P_dial_qualifier is the specified dial_id, P_target_person_project, 359* if present, is the User_id.Project_id combination. */ 360 361 if as_data_$ansp = null 362 then return; /* if not initialized */ 363 ansp = as_data_$ansp; 364 365 cdtep = P_cdtep; /* Get pointer to channel giving request */ 366 dial_qualifier = P_dial_qualifier; /* copy dial qualifier */ 367 target_person_project = P_target_person_project; 368 369 utep = null (); /* initialize so that we don't fault */ 370 reason_code = 0; 371 reason = ""; 372 373 if dial_qualifier = "" 374 then do; /* didn't say who */ 375 call ABORT_DIALIN (as_error_table_$dialnoline, ""); 376 return; 377 end; 378 379 if static_trace_sw 380 then call trace ("(dial_ctl_) Channel ^a Qualifier ^a ^[user ^a^]", cdte.name, dial_qualifier, 381 (target_person_project ^= ""), target_person_project); 382 383 /**** lg_ctl_ has already blessed this dial as far as the user giving 384* the dial request and the channel AIM. cdte.current_access_class 385* contains the access class of the dial, which must be consistent 386* with that of the receiving process. */ 387 388 /* Is this an attempt to dial the initializer? */ 389 390 if dial_qualifier = "system" 391 then do; 392 /**** The current access class will only be invalid if the check_acs flag 393* for dial_in is not on for this channel. */ 394 if cdte.current_access_class_valid 395 then if ^aim_check_$equal (cdte.current_access_class (1), get_process_access_class_ ()) 396 then do; 397 call ABORT_DIALIN (error_table_$ai_out_range, "Channel not system_low"); 398 return; 399 end; 400 401 call convert_status_code_ (as_error_table_$dial_sys_msg, junk, format); 402 call ioa_$rs (format, buffer, i, /* Acknowledge connection. Disclose channel id. */ 403 cdte.current_terminal_type, cdte.tty_id_code, cdte.name); 404 if cdte.service_type = FTP_SERVICE 405 then buffer = asu_$format_ftp_msg (buffer, i, i, 230); 406 /* generate FTP msg */ 407 call astty_$tty_force (cdtep, addr (buffer), i, code); 408 if cdte.state < TTY_DIALED 409 then do; /* channel hungup */ 410 call ABORT_DIALIN (0, "channel hungup"); 411 return; 412 end; 413 P_code = 0; /* Initializer always accepts dial. */ 414 dutp = as_data_$dutp; /* Initializer */ 415 utep = addr (dutbl.entry (1)); /* UTE */ 416 cdte.process = utep; 417 cdte.in_use = NOW_LOGGED_IN; 418 cdte.tra_vec = WAIT_DIAL_RELEASE; /* Branch to right place if hangup */ 419 cdte.dialed_to_procid = anstbl.as_procid; 420 cdte.dial_ev_chn = -1; /* This value should never be used */ 421 cdte.current_service_type = MC_SERVICE; /* TDY Initializer */ 422 423 /**** Notify operator */ 424 425 call sys_log_ (SL_LOG_BEEP, "^a: Channel ^a dialed to Initializer ^[(^a.^a)^]", ME, cdte.name, 426 cdte.flags.access_control.slave_dial, cdte.user_name.person, cdte.user_name.project); 427 428 call DIALIN_OK (); 429 return; 430 end; 431 432 if target_person_project ^= "" /* check for null person.project qualifier */ 433 then do; /* resolve this dial by person-project search */ 434 rq_person = before (target_person_project, "."); 435 /* break up person.project */ 436 rq_project = after (target_person_project, "."); 437 if ^convert_aliases (rq_person, rq_project) 438 then do; 439 call ABORT_DIALIN (as_error_table_$dialnotup, ""); 440 return; 441 end; 442 find_person_project = "1"b; 443 end; 444 else find_person_project = "0"b; 445 446 if ^cdte.current_access_class_valid & cdte.flags.access_control.slave_dial 447 /* we need an access class, and never got it!? */ 448 then do; 449 call ABORT_DIALIN (as_error_table_$dialup_error, 450 "cdte.current_access_class_valid = ""0""b for channel at dial request time."); 451 return; 452 end; 453 454 used_privilege = "0"b; /* set by next call if comm priv used */ 455 456 /**** Implicit parameters are find_person_project, 457* rq_person, rq_project, dial_qualifier, cdte, ute. ****/ 458 459 utep = find_dialable_process (); 460 461 if utep = null 462 then do; /* not found in any user table */ 463 call ABORT_DIALIN (as_error_table_$dialnotup, ""); 464 return; /* User control will give us another chance */ 465 end; 466 467 mcode = as_error_table_$dial_connect_msg; /* Make up nice msg */ 468 date = date_time_$format ("system_date_time", anstbl.current_time, "system_zone", "system_lang"); 469 call convert_status_code_ (mcode, junk, format); /* .. */ 470 call convert_access_class_$to_string_short (ute.process_authorization, server_authorization, code); 471 if server_authorization = "" 472 then call ioa_$rsnnl ("^a (^a.^a)", user_string, user_lth, ute.dial_qualifier, ute.person, ute.project); 473 else call ioa_$rsnnl ("^a (^a.^a) (^a)", user_string, user_lth, ute.dial_qualifier, ute.person, ute.project, 474 server_authorization); 475 call ioa_$rs (format, buffer, i, cdte.current_terminal_type, cdte.tty_id_code, user_string, date); 476 if cdte.service_type ^= FTP_SERVICE /* for FTP, server will print out message */ 477 then call astty_$tty_force (cdtep, addr (buffer), i, code); 478 /* write it out */ 479 if cdte.state < TTY_DIALED 480 then do; 481 call ABORT_DIALIN (error_table_$io_no_permission, "channel hungup"); 482 return; 483 end; 484 485 cdte.process = utep; /* Remember Owner */ 486 cdte.dialed_to_procid = ute.proc_id; /* .. */ 487 cdte.dial_ev_chn = ute.dial_ev_chn; /* .. */ 488 ute.ndialed_consoles = ute.ndialed_consoles + 1; 489 490 call DIALIN_OK (); /* report success */ 491 call connect_channel_to_user (DIAL_IN, used_privilege); 492 P_code = 0; /* we made it */ 493 return; 494 495 dial_rq: 496 entry (a_request_ptr, a_asr_sender_ptr); 497 498 /**** This entry is called to handle the system-wide event channel provided 499* for processes that wish to sign on of off as dial servers, or who 500* wish to attach or release communications channels. */ 501 502 /* parameters */ 503 504 dcl (a_request_ptr, a_asr_sender_ptr) ptr parameter; 505 dcl 1 sender_authorization aligned like aim_template; 506 507 on any_other call as_any_other_handler_ (ME, NULL_PROC, REQUEST_RETURNS, REQUEST_RETURNS); 508 509 call SETUP_REQUEST (code); 510 if code ^= 0 511 then return; 512 513 request_type = UNKNOWN_RQ; /* we'll set this later */ 514 515 if static_trace_sw 516 then call trace_request ("dial_rq"); 517 518 if dial_server_request.flags.start 519 then call start_dial_id_request; 520 else if dial_server_request.flags.stop 521 then call stop_dial_id_request; 522 else if dial_server_request.flags.release_channel 523 then call release_channel_request; 524 else if dial_server_request.flags.privileged_attach 525 then call privileged_attach_request; 526 else if dial_server_request.flags.release_dial_id 527 then call release_dial_id_request; 528 else /* Didn't specify what was to be done. */ 529 do; 530 call sys_log_ (SL_LOG_SILENT, 531 "^a: Rejected unknown request from ^a.^a. No request flags set in dial_server_request.", ME, 532 ute.person, ute.project); 533 call SEND_ERROR_MESSAGE_AND_REJECT (error_table_$request_not_recognized); 534 end; 535 536 goto REQUEST_RETURNS; 537 538 dial_out_rq: 539 entry (a_request_ptr, a_asr_sender_ptr); 540 541 /**** This entry is called in reponse to a user-initiated request to 542* regarding an autocall (dial_out) channel. It handles dial_out 543* requests as well as release requests. */ 544 545 on any_other call as_any_other_handler_ (ME, NULL_PROC, REQUEST_RETURNS, REQUEST_RETURNS); 546 547 call SETUP_REQUEST (code); 548 if code ^= 0 549 then return; 550 551 if dial_server_request.flags.release_channel 552 then request_type = TERMINATE_DIAL_OUT_RQ; 553 else request_type = DIAL_OUT_RQ; 554 555 if static_trace_sw 556 then call trace_request ("dial_out_rq"); 557 558 CAI.valid = FALSE; 559 CAI.valid.user_validation_level = TRUE; /* for auditing */ 560 CAI.user_validation_level = process_ring; 561 562 call set_desired_channel; /* check for starname, etc. */ 563 if reason_code ^= 0 564 then call REJECT_CHANNEL_REQUEST (reason_code, reason); 565 566 if dial_server_request.flags.release_channel 567 then call terminate_dial_out_request (); 568 else call dial_out_request (); 569 570 goto REQUEST_RETURNS; 571 572 dial_term: 573 entry (P_cdtep); 574 575 /**** This entry is called by dialup_ whenever a dialed console hangs up. */ 576 577 if as_data_$ansp = null 578 then return; /* Not initialized */ 579 ansp = as_data_$ansp; 580 581 cdtep = P_cdtep; 582 reason_code = 0; 583 584 if static_trace_sw 585 then call trace ("(dial_term) Channel ^a", cdte.name); 586 587 reason = cdte.name; 588 589 chn = cdte.dial_ev_chn; /* Nice local copies */ 590 process_id = cdte.dialed_to_procid; /* ... */ 591 592 if process_id = anstbl.as_procid 593 then do; /* Slaved to initializer? */ 594 reason = "hangup"; 595 CAI.channel_name = cdte.name; 596 CAI.valid = FALSE; 597 CAI.valid.service_info = TRUE; 598 CAI.service_info = SERVICE_TYPE (cdte.current_service_type); 599 CAI.valid.access_class = TRUE; 600 if cdte.dialup_flags.current_access_class_valid 601 then CAI.access_class = cdte.current_access_class (1); 602 else CAI.access_class = get_process_access_class_ (); 603 CAI.valid.access_class_range = TRUE; 604 CAI.access_class_range = cdte.access_class; 605 utep = cdte.process; 606 call as_access_audit_$channel (cdtep, null, utep, AS_AUDIT_CHANNEL_DETACH, addr (CAI), reason); 607 end; 608 else do; 609 utep = cdte.process; /* Find owner */ 610 if utep ^= null 611 then do; /* Ignore if terminal did "slave" and then hung up. */ 612 if ute.proc_id ^= cdte.dialed_to_procid 613 then /* Race condition in logout.. note */ 614 call sys_log_ (SL_LOG_SILENT, 615 "dial_ctl_: Channel ^a (^a, ^a) hung up on missing process ^w", cdte.name, 616 SERVICE_TYPE (cdte.current_service_type), 617 display_access_class_ (cdte.current_access_class (1)), cdte.dialed_to_procid); 618 else do; 619 call device_acct_$off ((cdte.charge_type), cdte.name, utep); 620 /* Stop charging for device */ 621 622 call decrement_ndialed; 623 /* reduce ate.ndialed_consoles */ 624 call SEND_CHANNEL_MESSAGE (JUST_HUNGUP); 625 reason = "hangup"; 626 627 CAI.channel_name = cdte.name; 628 CAI.valid = FALSE; 629 CAI.valid.service_info = TRUE; 630 CAI.service_info = SERVICE_TYPE (cdte.current_service_type); 631 CAI.valid.access_class = TRUE; 632 if cdte.dialup_flags.current_access_class_valid 633 then CAI.access_class = cdte.current_access_class (1); 634 else CAI.access_class = ute.process_authorization; 635 CAI.valid.access_class_range = TRUE; 636 CAI.access_class_range = cdte.access_class; 637 CAI.valid.user_validation_level = TRUE; 638 CAI.user_validation_level = process_ring; 639 call as_access_audit_$channel (cdtep, null, utep, AS_AUDIT_CHANNEL_DETACH, 640 addr (CAI), reason); 641 end; 642 end; 643 end; 644 645 call meter_dut; /* metering dialed_up_time */ 646 647 if cdte.flags.access_control.slave_dial & cdte.service_type = ANS_SERVICE 648 then /* authenticated */ 649 call lg_ctl_$logout_channel (cdtep, "hangup"); 650 /* logout channel */ 651 cdte.current_service_type = cdte.service_type; /* Make channel normal again. */ 652 cdte.dialed_to_procid = "0"b; 653 cdte.dial_ev_chn = 0; 654 cdte.process = null; 655 656 /* Ensure the channel's current access class is reset to the CDT-specified 657* default (either a range or single class). */ 658 659 call asu_$reset_access_class (cdtep); 660 661 if cdte.state ^= TTY_MASKED 662 then call asu_$asu_listen (cdtep, code); 663 else cdte.in_use = NOW_HUNG_UP; 664 665 return; 666 667 dial_broom: 668 entry (uptr, funct); 669 670 /**** This entry is called whenever the master process is destroyed. */ 671 672 dcl uptr ptr parameter, /* Ptr to ate of master process dying */ 673 funct char (8) aligned parameter; /* Reason why we are sweeping */ 674 675 utep = uptr; 676 if as_data_$ansp = null 677 then return; 678 ansp = as_data_$ansp; 679 680 reason_code = 0; 681 reason = ""; 682 683 if static_trace_sw 684 then call trace ("(dial_broom) User ^a.^a function ^a.", ute.person, ute.project, funct); 685 686 if ute.dial_qualifier ^= "" 687 then do; /* report when a user stops serving */ 688 DSI.server_ring = ute.dial_server_ring; 689 DSI.dial_qualifier = ute.dial_qualifier; 690 DSI.privileged = ute.privileged_dial_server; 691 DSI.registered = ute.registered_dial_server; 692 added_info = funct; 693 call as_access_audit_$dialid (utep, AS_AUDIT_DIALID_STOP, addr (DSI), added_info); 694 ute.dial_qualifier = ""; /* don't let any more come thru */ 695 end; 696 697 ute.registered_dial_server = "0"b; /* reset to default value */ 698 ute.privileged_dial_server = "0"b; 699 ute.dial_server_ring = 7; 700 701 if ute.ndialed_consoles = 0 /* dont waste time searching the table */ 702 then return; /* if there aren't going to be any entries */ 703 704 if funct = "new_proc" 705 then word = "dialgrab"; 706 else if substr (funct, 1, 4) = "term" 707 then word = "dialgrab"; 708 else word = "dialhang"; 709 710 if word = "dialgrab" 711 then mcode = as_error_table_$dialagain; 712 else mcode = as_error_table_$dialdied; 713 714 if funct = "stopdial" 715 then do; 716 reason = "dialid shut off"; 717 process_destroyed_flag = FALSE; /* shutoff_dials request */ 718 end; 719 else do; 720 reason = word; /* for log message */ 721 process_destroyed_flag = TRUE; 722 end; 723 724 do i = 1 to scdtp -> cdt.current_size; /* was somebody */ 725 cdtep = addr (scdtp -> cdt.cdt_entry (i)); 726 if cdte.in_use > NOW_FREE 727 then if cdte.dialed_to_procid = ute.proc_id 728 then call release_channel ("1"b, "0"b, (cdte.current_service_type = TANDD_SERVICE), reason); 729 end; 730 731 if anstbl.login_server_present 732 then call uc_cleanup_network_dials_ (ute.proc_id, process_destroyed_flag, (0)); 733 ute.ndialed_consoles = 0; /* we have done our job */ 734 return; 735 736 737 REQUEST_RETURNS: /* return point for a dial_ctl_ request */ 738 return; 739 740 finish_priv_attach: 741 entry (a_cdtep); 742 743 /**** This entry is called by dialup_ when the channel which has been 744* priv_attach'ed finally dials up. This will only be invoked when 745* the channel was not dialed up when the priv_attach was initiated. 746* 747* /* parameters */ 748 749 dcl a_cdtep ptr parameter; 750 751 /* program */ 752 753 ansp = as_data_$ansp; 754 request_type = PRIV_ATTACH_CHN_RQ; 755 cdtep = a_cdtep; 756 if static_trace_sw 757 then call trace ("(fin_priv_attach) Channel ^a", cdte.name); 758 utep = cdte.process; /* Find Owner */ 759 reason_code = 0; 760 reason = cdte.name; 761 762 process_id = cdte.dialed_to_procid; /* Initialize on off chance it's used */ 763 chn = cdte.dial_ev_chn; /* ... */ 764 if utep = null 765 then do; /* can't happen unless bug */ 766 woops1: 767 call sys_log_ (SL_LOG_SILENT, "dial_ctl_: Can't find process ^12.3b", cdte.dialed_to_procid); 768 return; 769 end; 770 else if ute.proc_id ^= cdte.dialed_to_procid 771 then go to woops1; 772 773 /**** Recheck the access. If the channel dialed up, and supplied 774* an access class, it might be incompatable with the process. */ 775 776 if ^aim_check_process_and_channel (utep, (cdte.dial_ctl_ring), cdte.dial_rq_privileged, PRIV_ATTACH, 777 used_privilege) /* use ring saved in cdte. */ 778 then do; 779 added_info = "Access check failed after slave dialup"; 780 call fake_connect_channel_to_user (PRIV_ATTACH, added_info); 781 call astty_$tty_order (cdtep, "hangup", null, (0)); 782 return; 783 end; 784 785 if cdte.service_type ^= ANS_SERVICE 786 then do; /* no metering of login lines */ 787 cdte.dialup_time = anstbl.current_time; 788 cdte.n_logins = cdte.n_logins + 1; 789 end; 790 call set_terminal_type; 791 call connect_channel_to_user (PRIV_ATTACH, used_privilege); 792 return; 793 794 continue_tandd_attach: 795 entry (a_cdtep); 796 797 /**** This entry is called by dialup_ when a channel which is being 798* tandd_attach'd hangs up. The attaching process has been waiting 799* for the line to become hung up all this time. */ 800 801 request_type = TANDD_ATTACH_CHN_RQ; 802 803 cdtep = a_cdtep; 804 805 if static_trace_sw 806 then call trace ("(continue_tandd_attach) Channel ^a", cdte.name); 807 808 reason_code = 0; 809 reason = cdte.name; 810 811 call astty_$tty_order (cdtep, "tandd_attach", null, code); 812 if code = -1 813 then /* Translate silly error code */ 814 code = error_table_$io_no_permission; 815 816 if code ^= 0 /* we'd better try to tell him now */ 817 then do; 818 added_info = "tandd_attach control order failed"; 819 call fake_connect_channel_to_user (T_AND_D, added_info); 820 call astty_$tty_order (cdtep, "hangup", null (), (0)); 821 end; 822 823 else cdte.tra_vec = WAIT_FIN_TANDD_ATTACH; /* channel should now signal dialup, */ 824 return; /* at which point we will hand it to user */ 825 826 finish_tandd_attach: 827 entry (a_cdtep); 828 829 /**** This entry is called by dialup_ when a terminal which has been 830* tandd_attach'd simulates a dialup. */ 831 832 request_type = TANDD_ATTACH_CHN_RQ; 833 cdtep = a_cdtep; 834 835 if static_trace_sw 836 then call trace ("(finish_tandd_attach) Channel ^a", cdte.name); 837 838 utep = cdte.process; /* Find Owner */ 839 process_id = cdte.dialed_to_procid; /* Initialize on off chance it's used */ 840 chn = cdte.dial_ev_chn; /* ... */ 841 if utep = null 842 then do; /* can't happen unless bug */ 843 tandd_error: 844 call sys_log_ (SL_LOG_SILENT, "dial_ctl_: Can't find process ^12.3b", cdte.dialed_to_procid); 845 return; 846 end; 847 else if ute.proc_id ^= cdte.dialed_to_procid 848 then go to tandd_error; 849 call connect_channel_to_user (T_AND_D, "0"b); 850 return; 851 852 finish_dial_out: 853 entry (a_cdtep); 854 855 /**** This entry is called by dialup_ when a wakeup is received indicating 856* completion (successful or otherwise) of a dial_out control order 857* previously issued for the channel. */ 858 859 request_type = DIAL_OUT_RQ; 860 861 ansp = as_data_$ansp; 862 cdtep = a_cdtep; 863 864 if static_trace_sw 865 then call trace ("(finish_dial_out) Channel ^a", cdte.name); 866 reason_code = 0; 867 reason = cdte.name; 868 869 utep = cdte.process; /* get ate pointer */ 870 process_id = cdte.dialed_to_procid; /* Initialize on off chance it's used */ 871 chn = cdte.dial_ev_chn; /* ... */ 872 if utep = null () 873 then do; 874 whoops2: 875 call sys_log_ (SL_LOG_SILENT, "dial_ctl_: Can't find process ^12.3b", cdte.dialed_to_procid); 876 return; 877 end; 878 else if ute.proc_id ^= cdte.dialed_to_procid 879 then go to whoops2; 880 881 call astty_$tty_order (cdtep, "dial_out_status", null (), code); 882 if code ^= 0 883 then call DIAL_OUT_CHANNEL_ERROR (); /* Doesn't return */ 884 cdte.in_use = NOW_DIALED_OUT; /* record that channel is dialed up */ 885 call set_terminal_type; 886 term_info.version = terminal_info_version; 887 call astty_$tty_order (cdtep, "terminal_info", addr (term_info), code); 888 if code ^= 0 889 then call DIAL_OUT_CHANNEL_ERROR (); /* doesn't return */ 890 cdte.current_terminal_type = term_info.term_type; /* Store info in CDTE for this channel */ 891 cdte.tty_id_code = term_info.id; /* .. */ 892 if cdte.flags.autobaud 893 then /* if it can change, then save it */ 894 cdte.baud_rate = term_info.baud_rate; 895 896 cdte.n_logins = cdte.n_logins + 1; 897 cdte.dialup_time = anstbl.current_time; 898 call connect_channel_to_user (DIAL_OUT, dial_out_used_privilege); 899 return; 900 901 trace_on: 902 entry; 903 904 static_trace_sw = "1"b; 905 call sys_log_ (SL_LOG, "dial_ctl_: Tracing turned on."); 906 return; 907 908 trace_off: 909 entry; 910 911 static_trace_sw = "0"b; 912 call sys_log_ (SL_LOG, "dial_ctl_: Tracing turned off."); 913 return; 914 915 start_dial_id_request: 916 procedure (); 917 918 /**** Internal procedure to handle requests to sign on as dial servers */ 919 920 request_type = START_DIAL_ID_RQ; 921 922 /**** Set up info for auditing record */ 923 DSI.dial_qualifier = dial_server_request.dial_qualifier; 924 DSI.server_ring = process_ring; 925 DSI.privileged = dial_server_request.flags.privileged_server; 926 DSI.registered = dial_server_request.flags.registered_server; 927 928 if ^(ute.at.dialok) 929 then call REJECT_DIALID_REQUEST (error_table_$no_dialok, "User lacks dialok attribute"); 930 931 if dial_server_request.flags.privileged_server & ^(sender_authorization.privileges.comm | (process_ring = 1)) 932 then do; 933 call ioa_$rsnnl ("process lacks comm priv for privileged service of ^a.", reason, (0), 934 dial_server_request.dial_qualifier); 935 call REJECT_DIALID_REQUEST (error_table_$ai_restricted, reason); 936 end; 937 938 if ute.dial_qualifier ^= "" 939 & 940 /* active and not a request for the same thing? */ (ute.dial_qualifier 941 ^= dial_server_request.dial_qualifier 942 | ute.registered_dial_server ^= dial_server_request.registered_server) 943 then do; /* no can do */ 944 call ioa_$rsnnl ("process already serving ^a^[ (registered)^], can't serve ^a.", reason, (0), 945 ute.dial_qualifier, ute.registered_dial_server, dial_server_request.dial_qualifier); 946 call REJECT_DIALID_REQUEST (error_table_$dial_active, reason); 947 end; 948 if dial_server_request.flags.registered_server 949 then do; 950 if ^check_acs ("dial." || dial_server_request.dial_qualifier, process_group_id, process_ring) 951 then do; 952 call ioa_$rsnnl ("process lacks access to registered dial acs for ^a.", reason, (0), 953 dial_server_request.dial_qualifier); 954 if reason_code = error_table_$noentry 955 then reason_code = error_table_$name_not_found; 956 call REJECT_DIALID_REQUEST (reason_code, reason); 957 end; 958 if ^aim_check_registered_server_namedup (reason_code) 959 then do; 960 call ioa_$rsnnl ("another process is registered dial server for ^a.", reason, (0), 961 dial_server_request.dial_qualifier); 962 call REJECT_DIALID_REQUEST (reason_code, reason); 963 end; 964 ute.registered_dial_server = "1"b; 965 end; 966 967 else /* request is for non-registered qualifier */ 968 ute.registered_dial_server = "0"b; 969 ute.privileged_dial_server = dial_server_request.privileged_server; 970 971 ute.dial_ev_chn = chn; /* Save dial event channel */ 972 ute.dial_qualifier = dial_server_request.dial_qualifier; 973 ute.dial_server_ring = process_ring; 974 975 if ute.registered_dial_server 976 then do; 977 added_info = "(registered"; 978 if ute.privileged_dial_server 979 then added_info = rtrim (added_info) || " privileged"; 980 added_info = rtrim (added_info) || ")"; 981 end; 982 else if ute.privileged_dial_server 983 then added_info = "(privileged)"; 984 else added_info = ""; 985 986 call as_access_audit_$dialid (utep, AS_AUDIT_DIALID_START, addr (DSI), added_info); 987 988 call SEND_CONTROL_MESSAGE (bit (fixed (ute.ndialed_consoles, 15), 15)); 989 return; 990 end start_dial_id_request; 991 992 stop_dial_id_request: 993 procedure; 994 995 /**** Request to stop serving a dial id and to disconnect all channels 996* dialed to this process. */ 997 998 request_type = STOP_DIAL_ID_RQ; 999 1000 DSI.dial_qualifier = dial_server_request.dial_qualifier; 1001 DSI.server_ring = ute.dial_server_ring; 1002 DSI.registered = ute.registered_dial_server; 1003 DSI.privileged = ute.privileged_dial_server; 1004 1005 if ^(ute.at.dialok) 1006 then call REJECT_DIALID_REQUEST (error_table_$no_dialok, "User lacks dialok attribute"); 1007 1008 if ute.dial_qualifier ^= "" 1009 then /* actively serving anything? */ 1010 if ((ute.dial_qualifier = dial_server_request.dial_qualifier) | (dial_server_request.dial_qualifier = "")) 1011 then do; 1012 call dial_broom (utep, "stopdial");/* Remove all slaves */ 1013 call SEND_CONTROL_MESSAGE (""b); 1014 end; 1015 else do; 1016 reason = "Dial id not in use by this process"; 1017 call REJECT_DIALID_REQUEST (0, reason); 1018 end; 1019 else do; 1020 reason = "No dial id in use by this process"; 1021 call REJECT_DIALID_REQUEST (0, reason); 1022 end; 1023 call SEND_CONTROL_MESSAGE (bit (fixed (ute.ndialed_consoles, 15), 15)); 1024 end stop_dial_id_request; 1025 1026 release_dial_id_request: 1027 procedure; 1028 1029 /**** Release a dial id such that future attempts to dial a console to this 1030* dial id will fail. All consoles already dialed to this dial id, however 1031* will remain dialed. */ 1032 1033 request_type = RELEASE_DIAL_ID_RQ; 1034 1035 DSI.dial_qualifier = dial_server_request.dial_qualifier; 1036 DSI.server_ring = ute.dial_server_ring; 1037 DSI.privileged = ute.privileged_dial_server; 1038 DSI.registered = ute.registered_dial_server; 1039 1040 if ^(ute.at.dialok) 1041 then call REJECT_DIALID_REQUEST (error_table_$no_dialok, "User lacks dialok attribute"); 1042 1043 if ute.dial_qualifier ^= "" 1044 then /* actively serving anything? */ 1045 if ((ute.dial_qualifier = dial_server_request.dial_qualifier) | (dial_server_request.dial_qualifier = "")) 1046 then do; 1047 added_info = "dialid released"; 1048 1049 if ute.ndialed_consoles ^= 0 1050 then call ioa_$rsnnl ("^a (keeping ^d dialed console^[s^])", added_info, (0), added_info, 1051 ute.ndialed_consoles, (ute.ndialed_consoles ^= 1)); 1052 1053 call as_access_audit_$dialid (utep, AS_AUDIT_DIALID_STOP, addr (DSI), added_info); 1054 ute.dial_qualifier = ""; /* back to default */ 1055 ute.registered_dial_server = "0"b; /* also default */ 1056 end; 1057 else do; 1058 added_info = "Dial id not in use by this process"; 1059 call REJECT_DIALID_REQUEST (0, reason); 1060 end; 1061 else do; 1062 added_info = "No dial id in use by this process"; 1063 call REJECT_DIALID_REQUEST (0, reason); 1064 end; 1065 1066 call SEND_CONTROL_MESSAGE (bit (fixed (ute.ndialed_consoles, 15), 15)); 1067 return; 1068 end release_dial_id_request; 1069 1070 release_channel_request: 1071 procedure; /* Request to release a channel */ 1072 1073 request_type = RELEASE_CHN_RQ; 1074 1075 CAI.channel_name = dial_server_request.channel_name; 1076 /* for auditing */ 1077 CAI.valid = FALSE; 1078 CAI.valid.user_validation_level = TRUE; 1079 CAI.user_validation_level = process_ring; 1080 1081 if ^(ute.at.dialok) 1082 then call REJECT_CHANNEL_REQUEST (error_table_$no_dialok, "User lacks dialok attribute"); 1083 1084 if dial_server_request.channel_name = "" 1085 then do; /* frequent problem */ 1086 reason = "Null channel name specified"; 1087 call REJECT_CHANNEL_REQUEST (0, reason); 1088 end; 1089 1090 call find_cdte; /* try to find channel */ 1091 if cdtep = null 1092 then do; /* Channel doesn't exist. Error code set by find_cdte. */ 1093 call ioa_$rsnnl ("Channel ^a not found.", reason, (0), dial_server_request.channel_name); 1094 call REJECT_CHANNEL_REQUEST (reason_code, reason); 1095 end; 1096 1097 if cdte.dialed_to_procid ^= process_id 1098 then do; /* Channel not his */ 1099 reason = "Channel not attached to this process"; 1100 call REJECT_CHANNEL_REQUEST (error_table_$io_no_permission, reason); 1101 end; 1102 1103 call decrement_ndialed; /* one less... */ 1104 if cdte.current_service_type = TANDD_SERVICE /* was this in T & D service? */ 1105 then suppress_listen = dial_server_request.flags.no_listen; 1106 /* then he's allowed to specify this */ 1107 else suppress_listen = "0"b; 1108 call release_channel ("0"b, dial_server_request.flags.no_hangup, suppress_listen, "release"); 1109 /* actual release */ 1110 call SEND_CONTROL_MESSAGE (REQUEST_GRANTED); 1111 return; 1112 end release_channel_request; 1113 1114 privileged_attach_request: 1115 procedure (); 1116 1117 if dial_server_request.flags.tandd_attach 1118 then request_type = TANDD_ATTACH_CHN_RQ; 1119 else request_type = PRIV_ATTACH_CHN_RQ; 1120 1121 CAI.channel_name = dial_server_request.channel_name; 1122 CAI.valid = FALSE; 1123 CAI.valid.user_validation_level = TRUE; /* for auditing */ 1124 CAI.user_validation_level = process_ring; 1125 1126 if ^(ute.at.dialok) 1127 then call REJECT_CHANNEL_REQUEST (error_table_$no_dialok, "User lacks dialok attribute"); 1128 1129 call set_desired_channel; 1130 if reason_code ^= 0 1131 then call REJECT_CHANNEL_REQUEST (reason_code, reason); 1132 1133 reason = dial_server_request.channel_name; /* assume the worst */ 1134 1135 if dial_server_request.flags.tandd_attach 1136 then call look_for_channel (T_AND_D); /* and check access */ 1137 else call look_for_channel (PRIV_ATTACH); 1138 1139 CAI.channel_name = cdte.name; /* update this in case starname was used */ 1140 CAI.valid.access_class = cdte.dialup_flags.current_access_class_valid; 1141 CAI.access_class = cdte.current_access_class (1); 1142 CAI.valid.access_class_range = TRUE; 1143 CAI.access_class_range = cdte.access_class; 1144 1145 if dial_server_request.tandd_attach /* both acs's needed */ 1146 then do; 1147 call up_sysctl_$check_acs ("tandd.acs", process_group_id, (process_ring), mode, code); 1148 if code ^= 0 | ((mode & RW_ACCESS) ^= RW_ACCESS) 1149 then do; 1150 if code ^= 0 1151 then call sys_log_$error_log (SL_LOG_SILENT, code, 1152 "dial_ctl_: Could not check access to ^a>tandd.acs for ^a.", as_data_$acsdir, 1153 process_group_id); 1154 call ioa_$rsnnl ("rw access is required to ^a", reason, (0), 1155 pathname_ (as_data_$acsdir, "tandd.acs")); 1156 call REJECT_CHANNEL_REQUEST (error_table_$insufficient_access, reason); 1157 end; 1158 end; 1159 1160 cdte.process = utep; /* remember owner */ 1161 cdte.dial_ev_chn = chn; /* .. */ 1162 cdte.dialed_to_procid = ute.proc_id; /* .. */ 1163 cdte.dial_ctl_ring = process_ring; /* remember for FIN_PRIV_ATTACH access check. */ 1164 cdte.dial_rq_privileged = sender_authorization.privileges.comm; 1165 ute.ndialed_consoles = ute.ndialed_consoles + 1; 1166 1167 if ^dial_server_request.tandd_attach 1168 then if cdte.service_type ^= ANS_SERVICE 1169 then /* no metering for login lines */ 1170 cdte.n_dialups = cdte.n_dialups + 1; 1171 1172 code = 0; 1173 1174 call SEND_CONTROL_MESSAGE (REQUEST_GRANTED); 1175 1176 if dial_server_request.flags.tandd_attach 1177 then do; 1178 if cdte.state ^= TTY_HUNG /* have to make it stop listening */ 1179 then do; 1180 if static_trace_sw 1181 then call trace ("(priv_attach) Hanging up ^a for T&D", cdte.name); 1182 call astty_$tty_order (cdtep, "hangup", null, (0)); 1183 cdte.tra_vec = WAIT_TANDD_HANGUP; 1184 goto REQUEST_RETURNS; 1185 end; 1186 1187 else do; 1188 if static_trace_sw 1189 then call trace ("(priv_attach) ^a hung up, tandd attaching.", cdte.name); 1190 call astty_$tty_order (cdtep, "tandd_attach", null, code); 1191 if code ^= 0 1192 then do; 1193 call sys_log_$error_log (SL_LOG_SILENT, code, 1194 "^a: Issuing tandd_attach control order for channel ^a.", ME, cdte.name); 1195 added_info = "tandd_attach control order failed"; 1196 call fake_connect_channel_to_user (T_AND_D, added_info); 1197 call astty_$tty_order (cdtep, "hangup", null (), (0)); 1198 goto REQUEST_RETURNS; 1199 end; 1200 1201 cdte.tra_vec = WAIT_FIN_TANDD_ATTACH; 1202 goto REQUEST_RETURNS; 1203 end; 1204 end; 1205 else do; 1206 if cdte.state = TTY_DIALED 1207 then do; 1208 if cdte.service_type ^= ANS_SERVICE 1209 then do; /* not 'slave' pre-access */ 1210 cdte.dialup_time = anstbl.current_time; 1211 cdte.n_logins = cdte.n_logins + 1; 1212 end; 1213 call set_terminal_type; 1214 call connect_channel_to_user (PRIV_ATTACH, used_privilege); 1215 /* Is dialed, give it away */ 1216 end; 1217 else cdte.tra_vec = WAIT_FIN_PRIV_ATTACH; 1218 /* Wait for it to dialup */ 1219 end; 1220 1221 return; 1222 end privileged_attach_request; 1223 1224 dial_out_request: 1225 procedure (); 1226 1227 /**** User request to dial out on a specified channel. */ 1228 1229 CAI.channel_name = dial_server_request.channel_name; 1230 CAI.valid = FALSE; 1231 CAI.valid.user_validation_level = TRUE; 1232 CAI.user_validation_level = process_ring; 1233 1234 if ^(ute.at.dialok) /* Must have the dialok attribute */ 1235 then call REJECT_CHANNEL_REQUEST (error_table_$no_dialok, "User does not have dialok attribute"); 1236 1237 call set_requested_channel_access_class (); /* find an appropriate channel, access-class wise */ 1238 if reason_code ^= 0 1239 then call REJECT_CHANNEL_REQUEST (reason_code, reason); 1240 1241 dial_out_used_privilege = used_privilege; /* save the global since look_for_channel will zero it */ 1242 phone_data = rtrim (dial_server_request.dial_out_destination); 1243 1244 call look_for_channel (DIAL_OUT); /* star scan for likely channel. It will reject request if none found. */ 1245 1246 CAI.channel_name = cdte.name; /* update in case starname was used */ 1247 CAI.valid.access_class = cdte.dialup_flags.current_access_class_valid; 1248 CAI.access_class = cdte.current_access_class (1); 1249 CAI.valid.access_class_range = TRUE; 1250 CAI.access_class_range = cdte.access_class; 1251 1252 /**** The one place we SPECIFY the access class with a set order! */ 1253 1254 call set_dial_out_channel_access_class (reason_code); 1255 if reason_code ^= 0 1256 then call REJECT_CHANNEL_REQUEST (reason_code, "set_required_access_class failed"); 1257 1258 cdte.in_use = NOW_DIALING; /* remember what we're doing ... */ 1259 cdte.tra_vec = WAIT_DIAL_OUT; /* and what to do next */ 1260 1261 CAI.valid.service_info = TRUE; 1262 CAI.service_info = phone_data; 1263 if dial_out_used_privilege 1264 then reason = "using comm privilege"; 1265 else reason = ""; 1266 1267 call as_access_audit_$channel (cdtep, null, utep, AS_AUDIT_CHANNEL_DIALOUT, addr (CAI), reason); 1268 1269 call astty_$tty_order (cdtep, "dial_out", addr (phone_data), code); 1270 /* start dialing */ 1271 if code ^= 0 1272 then do; 1273 if code = -1 1274 then code = error_table_$io_no_permission; 1275 call sys_log_$error_log (0, code, ME, "after dial_out order (^a for ^a.^a).", cdte.name, ute.person, 1276 ute.project); 1277 cdte.in_use = NOW_HUNG_UP; 1278 cdte.tra_vec = WAIT_SLAVE_REQUEST; 1279 call REJECT_CHANNEL_REQUEST (error_table_$order_error, "dial_out control order failed"); 1280 end; 1281 1282 cdte.process = utep; /* looks like we can give it away... */ 1283 cdte.dial_ctl_ring = process_ring; /* record ring of dialer */ 1284 cdte.dialed_to_procid = ute.proc_id; /* .. */ 1285 cdte.dial_ev_chn = chn; /* remember IPC channel in request */ 1286 cdte.n_dialups = cdte.n_dialups + 1; /* keep track of how often we try dialing */ 1287 ute.ndialed_consoles = ute.ndialed_consoles + 1; 1288 1289 call SEND_CONTROL_MESSAGE (REQUEST_GRANTED); 1290 return; 1291 1292 end dial_out_request; 1293 1294 terminate_dial_out_request: 1295 procedure (); 1296 1297 /**** User request to detach a dialed out channel. */ 1298 1299 CAI.channel_name = dial_server_request.channel_name; 1300 CAI.valid = FALSE; 1301 CAI.valid.user_validation_level = TRUE; 1302 CAI.user_validation_level = process_ring; 1303 1304 if ^(ute.at.dialok) /* Must have the dialok attribute */ 1305 then call REJECT_CHANNEL_REQUEST (error_table_$no_dialok, "User does not have dialok attribute"); 1306 1307 if dial_server_request.channel_name = "" 1308 then do; 1309 reason = "Invalid channel specified"; 1310 call REJECT_CHANNEL_REQUEST (0, reason); 1311 end; 1312 1313 call find_cdte; /* find the channel */ 1314 if cdtep = null 1315 then do; /* No such channel. Error code set by find_cdte. */ 1316 call ioa_$rsnnl ("Channel ^a does not exist.", reason, (0), dial_server_request.channel_name); 1317 call REJECT_CHANNEL_REQUEST (reason_code, reason); 1318 end; 1319 1320 CAI.valid.access_class = cdte.dialup_flags.current_access_class_valid; 1321 CAI.access_class = cdte.current_access_class (1); 1322 CAI.valid.access_class_range = TRUE; 1323 CAI.access_class_range = cdte.access_class; 1324 1325 if cdte.current_service_type ^= DIAL_OUT_SERVICE 1326 then do; /* Channel not a dialed out */ 1327 reason = "Channel not currently dialed out"; 1328 call REJECT_CHANNEL_REQUEST (error_table_$action_not_performed, reason); 1329 end; 1330 1331 if cdte.dialed_to_procid ^= ute.proc_id 1332 then do; /* Channel not his */ 1333 reason = "Channel not currently dialed out for this process"; 1334 call REJECT_CHANNEL_REQUEST (error_table_$io_no_permission, reason); 1335 end; 1336 1337 cdte.tra_vec = WAIT_DIAL_RELEASE; /* make sure we do the right thing */ 1338 cdte.dial_ev_chn = chn; /* user's dial_manager_ is blocked on this channel */ 1339 /* which MIGHT be different than cdte.dial_ev_chn */ 1340 1341 call asu_$reset_access_class (cdtep); 1342 call astty_$tty_order (cdtep, "hangup", null, (0)); 1343 /* drop connection to channel */ 1344 call SEND_CONTROL_MESSAGE (REQUEST_GRANTED); 1345 return; 1346 end terminate_dial_out_request; 1347 1348 connect_channel_to_user: 1349 procedure (P_attachment_type, report_privilege); 1350 1351 /**** connect_channel_to_user vs fake_connect_channel_to_user: 1352* In the fake case, we want to issue a hangup. It's simpler all around 1353* if we can just pretend that we gave the channel to the user, but don't 1354* actually tell the dim to new_proc. We do everything else, including 1355* sending the dialed-up wakeup. (The user 'has' to be prepared for 1356* a dialup wakeup resulting in io_no_permission because the channel 1357* has already hung up by the time he acts on the dialup.) */ 1358 1359 dcl P_attachment_type fixed bin (17) parameter; 1360 dcl P_added_info char (*) parameter; 1361 dcl fake_connect bit (1) aligned; 1362 dcl report_privilege bit (1) aligned parameter; 1363 1364 /* connect_channel_to_user: procedure (); */ 1365 1366 fake_connect = "0"b; 1367 go to connect_join; 1368 1369 fake_connect_channel_to_user: 1370 entry (P_attachment_type, P_added_info); 1371 1372 fake_connect = "1"b; 1373 1374 connect_join: 1375 if P_attachment_type = DIAL_IN 1376 then cdte.current_service_type = DIAL_SERVICE; 1377 else if P_attachment_type = T_AND_D 1378 then do; 1379 cdte.current_service_type = TANDD_SERVICE; 1380 cdte.tra_vec = WAIT_DISCARD_WAKEUPS; 1381 cdte.in_use = NOW_HUNG_UP; 1382 end; 1383 1384 if cdte.current_service_type ^= TANDD_SERVICE 1385 then do; 1386 cdte.tra_vec = WAIT_DIAL_RELEASE; /* Catch terminal when it hangs up */ 1387 cdte.in_use = NOW_DIALED; /* record the fact that we have channel */ 1388 end; 1389 1390 call astty_$tty_order (cdtep, "copy_meters", null (), (0)); 1391 1392 /* Set up for auditing */ 1393 1394 CAI.channel_name = cdte.name; 1395 CAI.valid = FALSE; 1396 CAI.valid.service_info = TRUE; 1397 CAI.service_info = ATTACHMENT_TYPES (P_attachment_type); 1398 CAI.valid.access_class = cdte.dialup_flags.current_access_class_valid; 1399 CAI.access_class = cdte.current_access_class (1); 1400 CAI.valid.access_class_range = TRUE; 1401 CAI.access_class_range = cdte.access_class; 1402 CAI.valid.user_validation_level = TRUE; 1403 CAI.user_validation_level = process_ring; 1404 1405 if ^fake_connect 1406 then do; /* we're really giving it to the user */ 1407 1408 call astty_$tty_new_proc (cdtep, ute.proc_id, code); 1409 /* give channel to user */ 1410 if code = 0 1411 then do; 1412 if report_privilege 1413 then added_info = "using comm privilege"; 1414 else added_info = ""; 1415 1416 call as_access_audit_$channel (cdtep, null, utep, AS_AUDIT_CHANNEL_ATTACH, addr (CAI), 1417 added_info); 1418 end; 1419 else call sys_log_$error_log (SL_LOG_SILENT, code, ME, 1420 "call to astty_$tty_new_proc of ^a for ^a.^a failed", cdte.name, ute.person, ute.project); 1421 end; 1422 else /* audit denied attachment */ 1423 call as_access_audit_$channel (cdtep, null, utep, -AS_AUDIT_CHANNEL_ATTACH, addr (CAI), P_added_info); 1424 1425 /**** Start charging for attached device */ 1426 1427 call device_acct_$on ((cdte.charge_type), cdte.name, utep); 1428 1429 /**** Notify user */ 1430 1431 call SEND_CHANNEL_MESSAGE (JUST_DIALED); 1432 return; 1433 1434 end connect_channel_to_user; 1435 1436 look_for_channel: 1437 procedure (operation); 1438 1439 /**** Internal procedure to scan cdt for channels that meet requirements 1440* such as star name match, baud desired, etc. */ 1441 1442 dcl found bit (1) aligned; 1443 dcl found_device_available bit (1) aligned; 1444 dcl found_in_cdt bit (1) aligned; 1445 dcl found_good_access bit (1) aligned; 1446 dcl found_good_attributes bit (1) aligned; 1447 dcl operation fixed bin; 1448 1449 cdtep = null (); 1450 found, found_device_available, found_in_cdt, found_good_access, found_good_attributes = "0"b; 1451 1452 reason_code = 0; 1453 1454 do i = 1 to scdtp -> cdt.current_size while (^found); 1455 cdtep = addr (scdtp -> cdt.cdt_entry (i)); 1456 found = cdte_matches_desired (); /* try for match */ 1457 found_in_cdt = found_in_cdt | found; /* remember if it were ever there */ 1458 if found 1459 then do; /* keep checking */ 1460 if dial_server_request.baud_rate ^= -1 1461 then /* any baud_rate, or ... */ 1462 if dial_server_request.baud_rate ^= cdte.baud_rate 1463 then found = "0"b; 1464 if dial_server_request.line_type >= lbound (line_types, 1) 1465 then /* any line type, or ... */ 1466 if dial_server_request.line_type ^= cdte.line_type 1467 then found = "0"b; 1468 found_good_attributes = found_good_attributes | found; 1469 end; 1470 if found 1471 then if dial_server_request.flags.privileged_attach 1472 then found = check_priv_attach_access (); 1473 else found = check_dial_access (); 1474 found_device_available = found_device_available | found; 1475 if found 1476 then found = 1477 access_check_channel_and_process (utep, process_ring, sender_authorization.privileges.comm, 1478 operation, used_privilege); 1479 found_good_access = found_good_access | found; 1480 end; 1481 1482 if ^found 1483 then do; /* need more codes */ 1484 cdtep = null (); /* for auditing */ 1485 if star_channel_name | reason_code = 0 1486 then /* if non-star channel and have error code, keep it */ 1487 if ^found_in_cdt 1488 then reason_code = error_table_$resource_unknown; 1489 else if ^found_good_attributes 1490 then reason_code = error_table_$resource_unavailable; 1491 else if ^found_device_available 1492 then reason_code = error_table_$resource_unavailable; 1493 else if ^found_good_access 1494 then reason_code = error_table_$insufficient_access; 1495 else if reason_code = 0 1496 then reason_code = error_table_$resource_unavailable; 1497 call REJECT_CHANNEL_REQUEST (reason_code, desired_channel); 1498 end; 1499 end look_for_channel; 1500 1501 set_terminal_type: 1502 procedure (); 1503 1504 /**** Procedure to set a terminal type */ 1505 1506 dcl code fixed bin (35); 1507 dcl tab_string char (512) var; 1508 dcl modes_string char (512); 1509 1510 if cdte.initial_terminal_type = "" 1511 then return; 1512 if cdte.initial_terminal_type = low (length (cdte.initial_terminal_type)) 1513 then return; 1514 sttip = addr (set_type_info); 1515 set_term_type_info.version = stti_version_1; 1516 set_term_type_info.name = cdte.initial_terminal_type; 1517 string (set_term_type_info.flags) = "0"b; 1518 call astty_$tty_order (cdtep, "set_term_type", sttip, code); 1519 if code ^= 0 1520 then return; 1521 1522 cdte.current_terminal_type = set_term_type_info.name; 1523 1524 call ttt_info_$initial_string (cdte.current_terminal_type, tab_string, code); 1525 if code ^= 0 1526 then go to end_initial_string; 1527 if length (tab_string) ^= 0 1528 then do; 1529 call astty_$tty_changemode (cdtep, "rawo", code); 1530 if code ^= 0 1531 then go to end_initial_string; 1532 call astty_$tty_force (cdtep, addrel (addr (tab_string), 1), length (tab_string), code); 1533 end; 1534 end_initial_string: 1535 call ttt_info_$modes (cdte.current_terminal_type, modes_string, code); 1536 if code ^= 0 1537 then return; 1538 call astty_$tty_changemode (cdtep, "force,init," || rtrim (modes_string), code); 1539 return; 1540 1541 end set_terminal_type; 1542 1543 release_channel: 1544 procedure (master_destroyed, suppress_hangup, suppress_listen, P_reason); 1545 1546 /**** Procedure to release a channel that was dialed to a dial server 1547* process */ 1548 1549 dcl master_destroyed bit (1); 1550 dcl suppress_hangup bit (1); 1551 dcl suppress_listen bit (1); 1552 dcl was_tandd bit (1); 1553 dcl P_reason char (*) parameter; /* reason we are detaching channel */ 1554 1555 if cdte.current_service_type = DIAL_SERVICE & master_destroyed 1556 then call asu_$write_chn_message (cdtep, mcode, junk, code); 1557 1558 call astty_$tty_detach (cdtep, 0, code); /* Take channel away from user */ 1559 if code ^= 0 1560 then call sys_log_$error_log (0, code, ME, "Attempting to detach ^a from ^a.^a.", cdte.name, ute.person, 1561 ute.project); 1562 else do; 1563 call ioa_$rsnnl ("^a ^[(without hangup)^]^[(without listen)^]", added_info, (0), P_reason, 1564 suppress_hangup, suppress_listen); 1565 1566 CAI.channel_name = cdte.name; 1567 CAI.valid = FALSE; 1568 CAI.valid.service_info = TRUE; 1569 CAI.service_info = SERVICE_TYPE (cdte.current_service_type); 1570 CAI.valid.access_class = cdte.dialup_flags.current_access_class_valid; 1571 CAI.access_class = cdte.current_access_class (1); 1572 CAI.valid.access_class_range = TRUE; 1573 CAI.access_class_range = cdte.access_class; 1574 CAI.valid.user_validation_level = TRUE; 1575 CAI.user_validation_level = process_ring; 1576 call as_access_audit_$channel (cdtep, null, utep, AS_AUDIT_CHANNEL_DETACH, addr (CAI), added_info); 1577 end; 1578 1579 call device_acct_$off ((cdte.charge_type), cdte.name, utep); 1580 call meter_dut (); /* meter dialed_up_time */ 1581 call asu_$reset_access_class (cdtep); /* Place back in known state */ 1582 1583 if cdte.current_service_type = TANDD_SERVICE /* restore correct service type */ 1584 then do; 1585 if suppress_listen /* channel out of service for the moment */ 1586 then cdte.current_service_type = INACTIVE; 1587 else cdte.current_service_type = cdte.service_type; 1588 was_tandd = "1"b; 1589 end; 1590 else do; 1591 cdte.current_service_type = cdte.service_type; 1592 was_tandd = "0"b; 1593 end; 1594 1595 cdte.dialed_to_procid = "0"b; 1596 cdte.dial_ev_chn = 0; 1597 cdte.process = null; 1598 cdte.user_name = ""; 1599 1600 if cdte.service_type = ANS_SERVICE & ^was_tandd 1601 then do; /* if this is normally an answering service channel */ 1602 cdte.in_use = NOW_DIALED; /* treat this situation as if it were a logout -hold */ 1603 cdte.tra_vec = WAIT_GREETING_MSG; /* tell dialup_ what to do (say hello and wait for login) */ 1604 word = "device"; /* send simulated device wakeup to dialup_ */ 1605 call hcs_$wakeup (anstbl.as_procid, cdte.event, addr (word) -> bf, code); 1606 end; 1607 else if ^suppress_hangup 1608 then do; /* not A.S. channel; hang it up */ 1609 hangup_anyway: 1610 call astty_$tty_order (cdtep, "hangup", null, (0)); 1611 cdte.in_use = NOW_HUNG_UP; /* remember that we did */ 1612 call astty_$tty_state (cdtep, code); /* see if it is hung up yet */ 1613 if cdte.state > TTY_HUNG 1614 then /* not yet */ 1615 cdte.tra_vec = WAIT_HANGUP; /* wait for it; dialup_ listens after it happens */ 1616 else do; /* channel is already hung up */ 1617 call ipc_$drain_chn (cdte.event, code); 1618 /* so discard the hangup wakeup, which would 1619* just confuse dialup_ if it came along later */ 1620 if ^suppress_listen & cdte.state ^= TTY_MASKED 1621 then call asu_$asu_listen (cdtep, code); 1622 /* and do the listen immediately */ 1623 else if cdte.tra_vec = WAIT_FIN_TANDD_ATTACH 1624 /* we don't want to leave it like this */ 1625 then cdte.tra_vec = WAIT_SLAVE_REQUEST; 1626 /* good enough till the next time someone wants it */ 1627 end; 1628 end; 1629 else do; 1630 call astty_$tty_state (cdtep, code); 1631 if cdte.state = TTY_DIALED 1632 then cdte.tra_vec = WAIT_SLAVE_REQUEST; 1633 else go to hangup_anyway; 1634 end; 1635 1636 return; 1637 1638 end release_channel; 1639 1640 find_cdte: 1641 procedure (); 1642 1643 do cdtx = 1 to scdtp -> cdt.current_size; 1644 cdtep = addr (scdtp -> cdt.cdt_entry (cdtx)); 1645 if cdte.name = dial_server_request.channel_name 1646 then return; 1647 end; 1648 1649 cdtep = null (); 1650 reason = dial_server_request.channel_name; 1651 reason_code = error_table_$resource_unknown; 1652 1653 return; 1654 1655 end find_cdte; 1656 1657 /**** These next two answer the question of whether a channel 1658* is available for a given purpose. access_check_process_and_channel 1659* check the accessability. */ 1660 1661 check_dial_access: 1662 proc returns (bit (1) aligned); 1663 1664 reason_code = 0; 1665 if (cdte.twx = 0) | (cdte.current_service_type = INACTIVE) | (cdte.state = TTY_MASKED) 1666 then reason_code = error_table_$resource_unavailable; 1667 else if cdte.process = utep 1668 then reason_code = error_table_$resource_attached; 1669 else if cdte.current_service_type ^= DIAL_OUT_SERVICE 1670 then reason_code = error_table_$invalid_resource_state; 1671 else if cdte.in_use ^= NOW_HUNG_UP 1672 then reason_code = error_table_$resource_not_free; 1673 else do; 1674 if cdte.threads.mother > 0 1675 then /* now see what mommy has been up to */ 1676 mpxep = addr (scdtp -> cdt.cdt_entry (cdte.mother).initial_command); 1677 /* find her diary */ 1678 else mpxep = addr (scdtp -> cdt.fnp_entry (-cdte.mother).mpxe); 1679 if mpxe.state ^= FNP_UP 1680 then reason_code = error_table_$resource_unavailable; 1681 /* oh, hi mom! */ 1682 end; 1683 return (reason_code = 0); 1684 1685 end check_dial_access; 1686 1687 check_priv_attach_access: 1688 proc returns (bit (1) aligned); 1689 1690 reason_code = 0; 1691 if cdte.in_use = NOW_FREE 1692 then reason_code = error_table_$resource_unavailable; 1693 else if cdte.process = utep 1694 then reason_code = error_table_$resource_attached; 1695 else if cdte.process ^= null 1696 then reason_code = error_table_$resource_not_free; 1697 else if cdte.current_service_type ^= SLAVE_SERVICE & ^dial_server_request.flags.tandd_attach 1698 then reason_code = error_table_$invalid_resource_state; 1699 return (reason_code = 0); 1700 1701 end check_priv_attach_access; 1702 1703 access_check_channel_and_process: 1704 procedure (a_utep, attach_ring, privileged, operation, a_used_privilege) returns (bit (1) aligned); 1705 1706 declare a_utep pointer; 1707 declare a_used_privilege bit (1) aligned; 1708 declare privileged bit (1) unaligned; 1709 declare operation fixed bin; 1710 declare attach_ring fixed bin (3); 1711 1712 if static_trace_sw 1713 then call trace ( 1714 "(access_check) Channel: ^a User: ^a.^a Utep: ^p Ring: ^d Operation: ^[PRIV_ATTACH^;DIAL_OUT^;DIAL_IN^;T_AND_D^]", 1715 cdte.name, a_utep -> ute.person, a_utep -> ute.project, a_utep, attach_ring, operation); 1716 1717 if ^aim_check_process_and_channel (a_utep, attach_ring, privileged, operation, a_used_privilege) 1718 then do; 1719 reason_code = error_table_$ai_restricted; 1720 return ("0"b); 1721 end; 1722 1723 if (operation = PRIV_ATTACH & cdte.flags.access_control.priv_attach) 1724 | (operation = DIAL_IN & cdte.flags.access_control.dial_server) 1725 | (operation = DIAL_OUT & cdte.flags.access_control.dial_out) 1726 | (operation = T_AND_D & cdte.flags.access_control.priv_attach) 1727 then return (check_acs ((cdte.name), make_group_id (a_utep), attach_ring)); 1728 else return ("1"b); 1729 end access_check_channel_and_process; 1730 1731 aim_check_process_and_channel: 1732 procedure (a_utep, attach_ring, privileged, operation, a_used_privilege) returns (bit (1) aligned); 1733 1734 declare a_utep pointer; 1735 declare attach_ring fixed bin (3); 1736 declare privileged bit (1) unaligned; 1737 declare a_used_privilege bit (1) aligned; 1738 declare operation fixed bin; 1739 dcl access_class_ok bit (1) aligned automatic; 1740 1741 if static_trace_sw 1742 then call trace ( 1743 "(aim_check) Channel: ^a User: ^a.^a Utep: ^p Ring: ^d^[ Privileged^] Operation: ^[PRIV_ATTACH^;DIAL_OUT^;DIAL_IN^;T_AND_D^]", 1744 cdte.name, a_utep -> ute.person, a_utep -> ute.project, a_utep, attach_ring, privileged, operation); 1745 1746 1747 1748 a_used_privilege = "0"b; 1749 1750 /* Make sure the current access class information is valid. */ 1751 1752 if ^cdte.current_access_class_valid 1753 then do; 1754 call INITIALIZE_CURRENT_ACCESS_CLASS (code); 1755 if code ^= 0 1756 then return (FALSE); /* not altogether true, however */ 1757 end; 1758 1759 if /* tree */ (operation = DIAL_OUT) 1760 then if ^cdte.current_access_class_valid /* range */ 1761 then access_class_ok = (aim_check_$in_range (requested_access_class, cdte.access_class)); 1762 else access_class_ok = (aim_check_$equal (requested_access_class, cdte.current_access_class (1))); 1763 /* We already validated requested_a_c */ 1764 else if ^cdte.current_access_class_valid 1765 then if privileged 1766 then access_class_ok = 1767 ( 1768 aim_check_$greater_or_equal (a_utep -> ute.process_authorization_range (2), 1769 cdte.access_class (2))); 1770 else access_class_ok = (aim_check_$in_range (a_utep -> ute.process_authorization, cdte.access_class)); 1771 else if privileged 1772 then access_class_ok = 1773 ( 1774 aim_check_$greater_or_equal (a_utep -> ute.process_authorization_range (2), 1775 cdte.current_access_class (1))); 1776 else access_class_ok = 1777 (aim_check_$equal (a_utep -> ute.process_authorization, cdte.current_access_class (1))); 1778 1779 if access_class_ok 1780 then /* ok to use this channel */ 1781 return (TRUE); 1782 else do; /* not ok, reset access class information */ 1783 call asu_$reset_access_class (cdtep); 1784 return (FALSE); 1785 end; 1786 1787 end aim_check_process_and_channel; 1788 1789 aim_check_registered_server_namedup: 1790 procedure (code) returns (bit (1) aligned); 1791 1792 /**** This procedure is used to enforce the AIM rules for servers. 1793* There can only be one server per dial_id per access class. 1794* This is because we have no way to register a dial_id as having 1795* AIM characteristics. A privileged server serves from system_low 1796* up to their authorization. A privileged server is defined as one 1797* established with the comm privilege enabled. If a server is privileged 1798* the fact is recorded in ute.privileged_dial_server. 1799* 1800* Since processes can (foolishly) turn off their comm privilege 1801* after becoming privileged registered servers, we can have cases 1802* where no server can serve a dial request, even though some server 1803* claims to be serving the territory. This is because both 1804* ute.privileged_dial_server & the comm privilege must be on 1805* for the dialing in channel to find the process. */ 1806 1807 declare code fixed bin (35); 1808 declare i fixed bin; 1809 declare P ptr; 1810 1811 1812 do i = 1 to anstbl.current_size; /* check for user */ 1813 P = addr (anstbl.entry (i)); 1814 1815 if consider_ute () 1816 then return ("0"b); /* found a conflict */ 1817 end; 1818 1819 /* Now check the daemon user table */ 1820 1821 do i = 1 to dutbl.current_size; /* check for user */ 1822 P = addr (dutbl.entry (i)); 1823 if consider_ute () 1824 then return ("0"b); 1825 end; 1826 1827 /* Now check the absentee user table */ 1828 1829 do i = 1 to autbl.current_size; /* check for user */ 1830 P = addr (autbl.entry (i)); 1831 if consider_ute () 1832 then return ("0"b); 1833 1834 end; 1835 return ("1"b); 1836 1837 consider_ute: 1838 procedure returns (bit (1) aligned); 1839 1840 declare existing_priv_range (2) bit (72) aligned; 1841 declare proposed_priv_range (2) bit (72) aligned; 1842 1843 existing_priv_range (1) = ""b; /* system_low */ 1844 existing_priv_range (2) = P -> ute.process_authorization; 1845 proposed_priv_range (1) = ""b; /* system_low */ 1846 proposed_priv_range (2) = unspec (sender_authorization); 1847 1848 if P -> ute.dial_ev_chn = 0 1849 then return ("0"b); /* no conflict */ 1850 if ^P -> ute.registered_dial_server 1851 then return ("0"b); 1852 if P -> ute.dial_qualifier ^= dial_server_request.dial_qualifier 1853 then return ("0"b); /* no conflict */ 1854 1855 if P -> ute.privileged_dial_server /* system_low --> ute.p_a */ 1856 then do; 1857 if dial_server_request.privileged_server/* request for priv server */ 1858 then 1859 REJECT_AIM: 1860 do; 1861 code = error_table_$dial_id_busy; 1862 return ("1"b); 1863 end; 1864 else if aim_check_$in_range (unspec (sender_authorization), existing_priv_range) 1865 then go to REJECT_AIM; 1866 else return ("0"b); /* outside claimed range */ 1867 end; 1868 else do; /* existing server is single level */ 1869 if (dial_server_request.privileged_server 1870 & aim_check_$in_range (P -> ute.process_authorization, proposed_priv_range)) 1871 | (^dial_server_request.privileged_server 1872 & aim_check_$equal (P -> ute.process_authorization, unspec (sender_authorization))) 1873 then go to REJECT_AIM; 1874 end; 1875 return ("0"b); 1876 end consider_ute; 1877 end aim_check_registered_server_namedup; 1878 1879 check_acs: 1880 procedure (check_name, user_name, user_ring) returns (bit (1) aligned); 1881 1882 /* general procedure to check access on an ACS */ 1883 1884 dcl check_name char (*); 1885 dcl user_name char (*); 1886 dcl user_ring fixed bin (3); 1887 1888 acs_name = check_name; 1889 reason_code = 0; 1890 acs_name = rtrim (acs_name, " ") || ".acs"; 1891 1892 call hcs_$get_user_access_modes (as_data_$rcpdir, acs_name, user_name, (user_ring), mode, ""b, code); 1893 1894 if code ^= 0 1895 then do; 1896 if code = error_table_$noentry 1897 then reason_code = error_table_$insufficient_access; 1898 else reason_code = error_table_$unable_to_check_access; 1899 reason = acs_name; 1900 end; 1901 else if (mode & RW_ACCESS) ^= RW_ACCESS 1902 then reason_code = error_table_$insufficient_access; 1903 if static_trace_sw 1904 then call trace_error (reason_code, "(check_acs) ACS: ^a USER: ^a, RING: ^d", acs_name, user_name, user_ring); 1905 return (reason_code = 0); 1906 1907 end check_acs; 1908 1909 /* internal procedures and functions for channel starname handling */ 1910 1911 set_desired_channel: 1912 proc; /* expand dsr.channel_name */ 1913 1914 if dial_server_request.channel_name = "" 1915 then do; /* default null string */ 1916 desired_channel = "**"; 1917 code = 2; 1918 end; 1919 else do; /* make sure it's a valid name */ 1920 desired_channel = dial_server_request.channel_name; 1921 call check_star_name_$entry (desired_channel, code); 1922 if code = error_table_$badstar 1923 then do; 1924 reason_code = error_table_$bad_name; 1925 /* badstar message doesn't scan */ 1926 reason = desired_channel; 1927 end; 1928 end; 1929 CAI.channel_name = desired_channel; /* for auditing */ 1930 star_channel_name = code ^= 0; /* any star-convention stuff? */ 1931 end set_desired_channel; 1932 1933 set_requested_channel_access_class: 1934 procedure (); 1935 1936 used_privilege = "0"b; 1937 requested_access_class = aim_util_$get_access_class (unspec (sender_authorization)); 1938 /* until set otherwise */ 1939 if dial_server_request.flags.access_class_specified 1940 & ^aim_check_$equal (unspec (sender_authorization), dial_server_request.access_class) 1941 then do; /* User requested dial-out at privileged auth */ 1942 if ^sender_authorization.privileges.comm 1943 then do; 1944 reason_code = error_table_$insufficient_access; 1945 reason = "process lacks comm privilege for privileged dial-out"; 1946 return; 1947 end; 1948 1949 1950 if ^aim_check_$greater_or_equal (ute.process_authorization_range (2), 1951 dial_server_request.access_class) 1952 then do; 1953 reason_code = error_table_$ai_out_range; 1954 reason = "requested authorization is greater than maximum authorizaton"; 1955 return; 1956 end; 1957 requested_access_class = dial_server_request.access_class; 1958 used_privilege = "1"b; 1959 end; 1960 else reason_code = 0; /* no auth requested or same as process auth */ 1961 1962 end set_requested_channel_access_class; 1963 1964 cdte_matches_desired: 1965 proc () returns (bit (1) aligned); /* check cdte channel with desired_channel */ 1966 1967 if ^star_channel_name 1968 then /* must match exactly, then */ 1969 if cdte.name = desired_channel 1970 then return ("1"b); 1971 else if cdte.generic_destination_present 1972 then if addr (cdte.initial_command) -> generic_destination = desired_channel 1973 then return ("1"b); 1974 call match_star_name_ ((cdte.name), desired_channel, code); 1975 /* does it fit the pattern? */ 1976 if code ^= 0 1977 then if cdte.generic_destination_present 1978 then call match_star_name_ (addr (cdte.initial_command) -> generic_destination, desired_channel, code); 1979 /* does channel_desired match a channel alias? */ 1980 return (code = 0); /* code 0 indicates match */ 1981 end cdte_matches_desired; 1982 1983 set_dial_out_channel_access_class: 1984 procedure (code); 1985 1986 declare code fixed bin (35); 1987 1988 code = 0; 1989 1990 call asu_$reset_access_class (cdtep); /* since we own it, we are responsable for setting it into a reasonable state. */ 1991 if cdte.current_access_class_valid 1992 then return; 1993 1994 call astty_$tty_order (cdtep, "set_required_access_class", addr (requested_access_class), code); 1995 if code = -1 /* Channel hung up */ 1996 then code = error_table_$io_no_permission; 1997 1998 if code = error_table_$io_no_permission 1999 then return; /* Let caller decide what to do */ 2000 else if code ^= 0 2001 then do; 2002 if code = error_table_$undefined_order_request 2003 then do; 2004 code = error_table_$resource_unavailable; 2005 /* mis-configured */ 2006 call sys_log_ (SL_LOG_BEEP, 2007 "dial_ctl_: Autocall channel ^a declared multi-class, but does not support set_required_access_class.", 2008 cdte.name); 2009 end; 2010 end; 2011 else do; 2012 cdte.current_access_class (*) = requested_access_class; 2013 cdte.current_access_class_valid = "1"b; 2014 end; 2015 return; 2016 end set_dial_out_channel_access_class; 2017 2018 decrement_ndialed: 2019 procedure (); 2020 2021 if ute.ndialed_consoles <= 0 2022 then do; 2023 ute.ndialed_consoles = 0; 2024 call sys_log_ (SL_LOG_SILENT, "dial_ctl_: ndialed negative ^a", ute.tty_name); 2025 end; 2026 else ute.ndialed_consoles = ute.ndialed_consoles - 1; 2027 end decrement_ndialed; 2028 2029 make_group_id: 2030 procedure (a_utep) returns (char (32)); 2031 2032 declare a_utep pointer; 2033 declare group_id char (32); 2034 2035 group_id = ""; 2036 call ioa_$rsnnl ("^[anonymous^s^;^a^].^a.^a", group_id, (0), (a_utep -> ute.anonymous = 1), 2037 a_utep -> ute.person, a_utep -> ute.project, a_utep -> ute.tag); 2038 return (group_id); 2039 end make_group_id; 2040 2041 meter_dut: 2042 procedure (); /* meter dialed_up_time */ 2043 2044 if cdte.service_type ^= ANS_SERVICE 2045 then /* not 'dial' or 'slave' */ 2046 cdte.dialed_up_time = 2047 cdte.dialed_up_time + float (anstbl.current_time - cdte.dialup_time, 63) / 1e6 + .5e0; 2048 2049 end meter_dut; 2050 2051 convert_aliases: 2052 procedure (rq_person, rq_project) returns (bit (1)); 2053 2054 dcl rq_person char (22); 2055 dcl rq_project char (9); 2056 2057 dcl code fixed bin (35); 2058 dcl satx fixed bin (35); 2059 2060 call pnt_manager_$admin_get_entry (rq_person, addr (pnte), code); 2061 if code = error_table_$id_not_found 2062 then return (FALSE); 2063 else if code ^= 0 2064 then do; 2065 call sys_log_$error_log (SL_LOG_BEEP, code, ME, "Can't find PNT entry: ^a", rq_person); 2066 return (FALSE); 2067 end; 2068 else rq_person = substr (pnte.user_id, 1, length (rq_person)); 2069 2070 if rq_project = "" 2071 then rq_project = substr (pnte.default_project, 1, length (rq_project)); 2072 else do; 2073 call hash_$search (as_data_$sat_htp, rq_project, satx, code); 2074 if code ^= 0 2075 then return (FALSE); 2076 satp = as_data_$satp; 2077 satep = addr (sat.project (satx)); 2078 if rq_project ^= project.project_id 2079 then if rq_project ^= project.alias 2080 then do; 2081 call sys_log_ (SL_LOG_BEEP, "^a: sat.ht has ""^a"", sat has ""^a"" at ^p", rq_project, 2082 project.project_id, satep); 2083 return (FALSE); 2084 end; 2085 rq_project = substr (project.project_id, 1, length (rq_project)); 2086 end; 2087 2088 return (TRUE); 2089 end convert_aliases; 2090 2091 2092 find_dialable_process: 2093 procedure returns (pointer); 2094 2095 /**** internal procedure to scan table (answer_table, daemon_user_table, or 2096* absentee_user_table) and set utep to ptr to entry which matches all 2097* criteria for dialing. 2098* 2099* Implicit parameters are find_person_project, rq_person, rq_project, 2100* dial_qualifier, cdte, and utep. 2101* 2102* We expect that at any site where system_high > system_low that 2103* flags.access_control.slave_dial will be on. This will force lg_ctl_ 2104* to force the user typing the dial request to specify an access 2105* class in case one was not specified be the communications medium. 2106* 2107* If that flag is on, and cdte.current_access_class_valid is off, 2108* then there is a bug someplace. 2109* 2110* If that flag is off, and cdte.current_access_class_valid is off, 2111* then the user simple didn't bother to type -user on the dial 2112* request. We then require the channel range to include the 2113* process authorization, though we don't recommend this trick. */ 2114 2115 dcl i fixed bin; 2116 dcl P ptr; 2117 2118 2119 ansp = as_data_$ansp; 2120 do i = 1 to anstbl.current_size; /* check for user */ 2121 P = addr (anstbl.entry (i)); 2122 2123 if consider_ute () 2124 then return (P); 2125 end; 2126 2127 /* Now check the daemon user table */ 2128 2129 dutp = as_data_$dutp; 2130 do i = 1 to dutbl.current_size; /* check for user */ 2131 P = addr (dutbl.entry (i)); 2132 if consider_ute () 2133 then return (P); 2134 end; 2135 2136 /* Now check the absentee user table */ 2137 2138 autp = as_data_$autp; 2139 do i = 1 to autbl.current_size; /* check for user */ 2140 P = addr (autbl.entry (i)); 2141 if consider_ute () 2142 then return (P); 2143 2144 end; 2145 return (null); /* not found */ 2146 2147 consider_ute: 2148 procedure returns (bit (1) aligned); 2149 2150 if P -> ute.active ^= NOW_HAS_PROCESS 2151 then return ("0"b); 2152 2153 2154 if static_trace_sw 2155 then if P -> ute.dial_ev_chn ^= 0 2156 then call trace ( 2157 "(find_dialable_process) UTE: name ^a.^a qualifier ^a ^[registered_dial_server^] ^[dialok^] dial_server_ring ^d", 2158 P -> ute.person, P -> ute.project, P -> ute.dial_qualifier, P -> ute.registered_dial_server, 2159 P -> ute.at.dialok, P -> ute.dial_server_ring); 2160 2161 if find_person_project /* see if we want to match by person-project */ 2162 then do; 2163 if P -> ute.person ^= rq_person 2164 then return ("0"b); 2165 2166 if P -> ute.project ^= rq_project 2167 then return ("0"b); 2168 end; 2169 2170 if ^find_person_project & ^(P -> ute.registered_dial_server) 2171 /* ^ person.project implies registered server */ 2172 then return ("0"b); 2173 2174 2175 if P -> ute.dial_qualifier ^= dial_qualifier 2176 then /* wrong one, or none registered */ 2177 return ("0"b); 2178 2179 if ^(P -> ute.at.dialok) 2180 then /* Is master allowed to have dials? */ 2181 return ("0"b); 2182 2183 if P -> ute.dial_ev_chn = 0 2184 then /* Is master accepting dials? */ 2185 return ("0"b); 2186 2187 /*** AIM and ACS checks as explained above */ 2188 /*** Note that dialup_ checked -user NAME against acs. */ 2189 2190 if ^access_check_channel_and_process (P, (P -> ute.dial_server_ring), P -> ute.privileged_dial_server, DIAL_IN, 2191 ("0"b)) /* code uninteresting, since we just skip */ 2192 then return ("0"b); 2193 2194 return ("1"b); 2195 2196 end consider_ute; 2197 2198 end find_dialable_process; 2199 2200 SETUP_REQUEST: 2201 procedure (code); 2202 2203 dcl code fixed bin (35) parameter; 2204 2205 2206 if as_data_$ansp = null 2207 then do; 2208 code = 1; /* Not used, except to check against 0. */ 2209 return; 2210 end; 2211 ansp = as_data_$ansp; 2212 dutp = as_data_$dutp; 2213 autp = as_data_$autp; 2214 2215 request_ptr = a_request_ptr; 2216 as_request_sender_ptr = a_asr_sender_ptr; 2217 2218 if as_request_sender.version ^= AS_REQUEST_SENDER_VERSION_2 2219 then do; 2220 call sys_log_ (SL_LOG, 2221 "dial_ctl_: Program error. as_request_sender.version (^d) not correct in dial request. Should be ^d.", 2222 as_request_sender.version, AS_REQUEST_SENDER_VERSION_2); 2223 code = 1; 2224 return; 2225 end; 2226 2227 process_group_id = as_request_sender.group_id; 2228 process_id = as_request_sender.process_id; 2229 process_ring = as_request_sender.validation_level; 2230 unspec (sender_authorization) = as_request_sender.authorization; 2231 2232 reason_code = 0; 2233 reason = ""; 2234 2235 chn = dial_server_request.header.reply_channel; /* use this channel temporarily */ 2236 2237 if dial_server_request.version ^= dial_server_request_version_4 2238 then call SEND_ERROR_MESSAGE_AND_REJECT (error_table_$unimplemented_version); 2239 2240 chn = dial_server_request.dial_control_channel; /* stop using dsr.header.reply_channel */ 2241 2242 /**** Note that at this point, chn could be zero if it was not specified 2243* in the dial_server_request structure. We interpret this to mean 2244* that the user is not interested in any responses from us. */ 2245 2246 call asu_$find_process (process_id, i, utep); /* locate caller's ate */ 2247 if utep = null () 2248 then do; 2249 call sys_log_ (SL_LOG_SILENT, "dial_ctl_: Can't find process ^12.3b", process_id); 2250 call SEND_CONTROL_MESSAGE (REQUEST_DENIED); 2251 goto REQUEST_RETURNS; 2252 end; 2253 2254 cdtep = null (); /* until we find a channel */ 2255 code = 0; 2256 return; 2257 2258 end SETUP_REQUEST; 2259 2260 DIAL_OUT_CHANNEL_ERROR: 2261 procedure (); 2262 2263 if cdte.in_use = NOW_DIALED_OUT 2264 then do; /* check for error after dial_out */ 2265 call astty_$tty_order (cdtep, "hangup", null (), (0)); 2266 /* make sure line is hungup, ignore code */ 2267 end; 2268 if code = -1 2269 then call sys_log_ (SL_LOG_SILENT, "dial_ctl_: Channel ^a hung up after dial_out for ^a.^a.", cdte.name, 2270 ute.person, ute.project); 2271 else if code = error_table_$request_pending | code = error_table_$undefined_order_request 2272 then call sys_log_$error_log (0, code, ME, "getting dial_out_status or tty info (^a for ^a.^a).", cdte.name, 2273 ute.person, ute.project); 2274 else call sys_log_$error_log (0, code, ME, "dial_out (^a for ^a.^a) failed.", cdte.name, ute.person, 2275 ute.project); 2276 2277 cdte.process = null (); /* cleanup the cdte */ 2278 cdte.dialed_to_procid = (36)"0"b; 2279 cdte.dial_ev_chn = 0; 2280 call decrement_ndialed; /* reduce ate.ndialed_consoles */ 2281 cdte.in_use = NOW_HUNG_UP; 2282 2283 /**** We now set the tra_vec so that when the hangup wakeup comes in we 2284* will go to the dial_ctl_$dial_term entry. */ 2285 2286 cdte.tra_vec = WAIT_DIAL_RELEASE; 2287 2288 call REJECT_CHANNEL_REQUEST (error_table_$no_connection, "error in dialing out"); 2289 end DIAL_OUT_CHANNEL_ERROR; 2290 2291 REJECT_CHANNEL_REQUEST: 2292 procedure (code, why); 2293 2294 dcl code fixed bin (35); 2295 dcl why char (*); 2296 2297 if code = 0 2298 then /* default error message */ 2299 code = error_table_$action_not_performed; 2300 2301 call convert_status_code_ (code, junk, format); 2302 reason = rtrim (format) || " " || why; 2303 2304 CAI.valid.service_info = TRUE; 2305 CAI.service_info = REQUEST_TYPES (request_type); 2306 if (request_type = PRIV_ATTACH_CHN_RQ | request_type = TANDD_ATTACH_CHN_RQ) 2307 then call as_access_audit_$channel (cdtep, null, utep, -AS_AUDIT_CHANNEL_ATTACH, addr (CAI), reason); 2308 else if request_type = DIAL_OUT_RQ 2309 then do; 2310 CAI.valid.service_info = FALSE; 2311 call as_access_audit_$channel (cdtep, null, utep, -AS_AUDIT_CHANNEL_DIALOUT, addr (CAI), reason); 2312 end; 2313 else if (request_type = RELEASE_CHN_RQ | request_type = TERMINATE_DIAL_OUT_RQ) 2314 then call as_access_audit_$channel (cdtep, null, utep, -AS_AUDIT_CHANNEL_DETACH, addr (CAI), reason); 2315 else call sys_log_ (SL_LOG_SILENT, "dial_ctl_: Refused unknown request from ^a.^a; ^a ^a", ute.person, 2316 ute.project, format, why); 2317 2318 call SEND_ERROR_MESSAGE_AND_REJECT (code); /* Doesn't return */ 2319 end REJECT_CHANNEL_REQUEST; 2320 2321 REJECT_DIALID_REQUEST: 2322 procedure (code, why); 2323 2324 dcl code fixed bin (35); 2325 dcl why char (*); 2326 2327 if code = 0 2328 then /* default error message */ 2329 code = error_table_$action_not_performed; 2330 2331 call convert_status_code_ (code, junk, format); 2332 reason = rtrim (format) || " " || why; 2333 2334 if request_type = START_DIAL_ID_RQ 2335 then call as_access_audit_$dialid (utep, -AS_AUDIT_DIALID_START, addr (DSI), reason); 2336 else if request_type = STOP_DIAL_ID_RQ | request_type = RELEASE_DIAL_ID_RQ 2337 then call as_access_audit_$dialid (utep, -AS_AUDIT_DIALID_STOP, addr (DSI), reason); 2338 else call sys_log_ (SL_LOG_SILENT, "dial_ctl_: Refused unknown request from ^a.^a; ^a ^a", ute.person, 2339 ute.project, format, why); 2340 2341 call SEND_ERROR_MESSAGE_AND_REJECT (code); /* Doesn't return */ 2342 end REJECT_DIALID_REQUEST; 2343 2344 SEND_ERROR_MESSAGE_AND_REJECT: 2345 procedure (code); 2346 2347 /**** This internal procedure informs the requesting process of the error 2348* and then does a non-local return to abort the request. */ 2349 2350 dcl code fixed bin (35); 2351 dcl 1 rv_message_error aligned based (addr (rv.chan)), /* how we return a full error code */ 2352 2 error_code fixed bin (35); /* normal error code */ 2353 2354 if chn ^= 0 2355 then do; 2356 rvp = addr (retval); 2357 unspec (rv) = ""b; 2358 rv.error_msg = "1"b; /* Indicate return of error code to sender */ 2359 rv_message_error.error_code = code; /* set error using other overlay */ 2360 call hcs_$wakeup (process_id, chn, retval, (0)); 2361 end; 2362 goto REQUEST_RETURNS; 2363 2364 end SEND_ERROR_MESSAGE_AND_REJECT; 2365 2366 SEND_CHANNEL_MESSAGE: 2367 procedure (message); 2368 2369 dcl message bit (15) aligned parameter; 2370 dcl 1 rv_chan unal based (addr (rv.chan)), /* overlay 6 character rv.chan field */ 2371 2 devx fixed bin (17) unal, 2372 2 line_type bin (17) unal, 2373 2 pad fixed bin (17) unal; 2374 2375 rvp = addr (retval); 2376 unspec (rv) = ""b; 2377 rv_chan.devx = cdte.twx; 2378 rv_chan.line_type = cdte.line_type; 2379 2380 rv.devx_msg = "1"b; 2381 rv.control.code = message; 2382 call hcs_$wakeup (cdte.dialed_to_procid, cdte.dial_ev_chn, retval, (0)); 2383 return; 2384 2385 end SEND_CHANNEL_MESSAGE; 2386 2387 SEND_CONTROL_MESSAGE: 2388 procedure (message); 2389 2390 dcl message bit (15) aligned parameter; 2391 2392 if chn ^= 0 2393 then do; 2394 rvp = addr (retval); 2395 unspec (rv) = ""b; 2396 rv.chan = "contrl"; /* Tell user this is control message */ 2397 rv.control.code = message; 2398 call hcs_$wakeup (process_id, chn, retval, (0)); 2399 end; 2400 return; 2401 2402 end SEND_CONTROL_MESSAGE; 2403 2404 SERVICE_TYPE: 2405 procedure (type) returns (character (10) varying); 2406 2407 dcl type fixed bin (17) unaligned; 2408 dcl type_names (9) character (10) varying 2409 initial ("as", "ftp", "mc", "slave", "dial", "dial_out", "inactive", "mpx", "tandd"); 2410 2411 if type < lbound (type_names, 1) | type > hbound (type_names, 1) 2412 then return ("?"); 2413 else return (type_names (type)); 2414 end SERVICE_TYPE; 2415 2416 trace_request: 2417 procedure (caller); 2418 2419 declare caller char (32); 2420 declare auth char (32) aligned; 2421 declare access_class_string char (32) aligned; 2422 2423 auth = display_access_class_ (as_request_sender.authorization); 2424 access_class_string = display_access_class_ (dial_server_request.access_class); 2425 call trace ("(^a) group_id: ^a process_id: ^w ring: ^d auth: ^a ^[comm priv^]", caller, 2426 as_request_sender.group_id, as_request_sender.process_id, as_request_sender.validation_level, auth, 2427 addr (as_request_sender.authorization) -> aim_template.privileges.comm); 2428 call trace ( 2429 "^5xQualifier: ^a Channel: ^a Destination: ^a Baud: ^d line_type: ^d server_type: ^a Access_class: ^a", 2430 dial_server_request.dial_qualifier, dial_server_request.channel_name, 2431 dial_server_request.dial_out_destination, dial_server_request.baud_rate, dial_server_request.line_type, 2432 dial_server_request.server_type, access_class_string); 2433 2434 call trace ( 2435 "^5x^[ start^]^[ stop^]^[ privileged_attach^]^[ release_channel^]^[ registered_server^]^[ no_hangup^]^[ release_dial_id^]^[ tandd_attach^]^[ no_listen^]^[ access_class_specified^]", 2436 dial_server_request.start, dial_server_request.stop, dial_server_request.privileged_attach, 2437 dial_server_request.release_channel, dial_server_request.registered_server, dial_server_request.no_hangup, 2438 dial_server_request.release_dial_id, dial_server_request.tandd_attach, dial_server_request.no_listen, 2439 dial_server_request.access_class_specified); 2440 return; 2441 end trace_request; 2442 2443 trace: 2444 procedure options (variable); 2445 2446 declare ioa_$general_rs 2447 entry (pointer, fixed binary, fixed binary, character (*), fixed binary (21), bit (1) aligned, 2448 bit (1) aligned); 2449 declare cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 2450 declare cu_$arg_list_ptr entry returns (pointer); 2451 2452 declare ioa_buffer char (1000); 2453 declare code_flag bit (1) aligned; 2454 declare code fixed bin (35) based (code_ptr); 2455 declare code_ptr pointer; 2456 declare (first, control) fixed bin; 2457 2458 code_flag = "0"b; 2459 go to COMMON; 2460 2461 trace_error: 2462 entry options (variable); 2463 2464 code_flag = "1"b; 2465 2466 COMMON: 2467 if code_flag 2468 then do; 2469 call cu_$arg_ptr (1, code_ptr, (0), (0)); 2470 control = 2; 2471 first = 3; 2472 end; 2473 else do; 2474 control = 1; 2475 first = 2; 2476 end; 2477 2478 call ioa_$general_rs (cu_$arg_list_ptr (), control, first, ioa_buffer, (0), "1"b, "0"b); 2479 /* pad, but don't NL */ 2480 2481 if code_flag 2482 then call sys_log_$error_log (SL_LOG_SILENT, code, "dial_ctl_", "^a", ioa_buffer); 2483 else call sys_log_ (SL_LOG_SILENT, "dial_ctl_: ^a", ioa_buffer); 2484 return; 2485 end trace; 2486 2487 ABORT_DIALIN: 2488 procedure (P_ec, P_reason); 2489 2490 dcl P_ec fixed bin (35) parameter; 2491 dcl P_reason char (*) parameter; 2492 2493 dcl action fixed bin (17); 2494 dcl code_reason char (150) varying; 2495 dcl code_reason_al char (100) aligned; 2496 2497 if P_ec = 0 2498 then code_reason = P_reason; 2499 else do; 2500 call convert_status_code_ (P_ec, (""), code_reason_al); 2501 code_reason = rtrim(code_reason_al); 2502 if P_reason ^= "" 2503 then do; 2504 code_reason = code_reason || ", "; 2505 code_reason = code_reason || rtrim(P_reason); 2506 end; 2507 end; 2508 2509 if utep ^= null () 2510 then do; 2511 2512 CAI.channel_name = cdte.name; 2513 CAI.valid = FALSE; 2514 CAI.valid.access_class = cdte.dialup_flags.current_access_class_valid; 2515 CAI.access_class = cdte.current_access_class (1); 2516 CAI.valid.access_class_range = TRUE; 2517 CAI.access_class_range = cdte.access_class; 2518 CAI.valid.user_validation_level = TRUE; 2519 CAI.user_validation_level = ute.initial_ring; 2520 2521 if dial_qualifier = "system" 2522 then do; 2523 action = -AS_AUDIT_CHANNEL_DIAL_SYSTEM; 2524 end; 2525 else do; 2526 action = -AS_AUDIT_CHANNEL_DIALIN; 2527 CAI.valid.service_info = TRUE; 2528 CAI.service_info = dial_qualifier; 2529 end; 2530 2531 call as_access_audit_$channel (cdtep, null, utep, action, addr (CAI), (code_reason)); 2532 end; 2533 else call sys_log_ (SL_LOG_SILENT, 2534 "DIALIN DENIED^20t^[^a.^a^;^s^s^] ^a to ^a ^[(^a)^]", 2535 cdte.flags.access_control.slave_dial, cdte.user_name.person, cdte.user_name.project, cdte.name, 2536 dial_qualifier, (code_reason ^= ""), code_reason); 2537 2538 cdte.process = null (); 2539 cdte.dialed_to_procid = ""b; 2540 cdte.dial_ev_chn = 0; 2541 2542 if P_ec ^= 0 2543 then P_code = P_ec; /* export this error code */ 2544 else P_code = as_error_table_$dialnotup; /* default error message */ 2545 2546 return; 2547 2548 end ABORT_DIALIN; 2549 2550 DIALIN_OK: 2551 procedure (); 2552 2553 dcl action fixed bin (17); 2554 2555 CAI.channel_name = cdte.name; 2556 CAI.valid = FALSE; 2557 CAI.valid.access_class = TRUE; 2558 if cdte.dialup_flags.current_access_class_valid 2559 then CAI.access_class = cdte.current_access_class (1); 2560 else CAI.access_class = ute.process_authorization; 2561 CAI.valid.access_class_range = TRUE; 2562 CAI.access_class_range = cdte.access_class; 2563 CAI.valid.user_validation_level = TRUE; 2564 CAI.user_validation_level = ute.initial_ring; 2565 2566 if dial_qualifier = "system" 2567 then do; 2568 action = AS_AUDIT_CHANNEL_DIAL_SYSTEM; 2569 end; 2570 else do; 2571 action = AS_AUDIT_CHANNEL_DIALIN; 2572 CAI.valid.service_info = TRUE; 2573 CAI.service_info = dial_qualifier; 2574 end; 2575 2576 call as_access_audit_$channel (cdtep, null, utep, action, addr (CAI), ""); 2577 end DIALIN_OK; 2578 2579 NULL_PROC: 2580 procedure (); 2581 2582 /**** This dummy procedure exists for as_any_other_handler_'s sake. 2583* It is a dummy cleanup handler, required by as_any_other_handler_. */ 2584 2585 return; 2586 end NULL_PROC; 2587 2588 INITIALIZE_CURRENT_ACCESS_CLASS: 2589 procedure (P_code); 2590 2591 /**** This procedure ensures that the cdte.current_access_class_valid 2592* bit reflects the true state of the channel, and that the current 2593* access field in the cdte is up-to-date. */ 2594 2595 dcl P_code fixed bin (35) parameter; /* status code */ 2596 dcl 1 auto_tty_access_class structure aligned like tty_access_class automatic; 2597 2598 P_code = 0; /* initialize */ 2599 2600 call asu_$reset_access_class (cdtep); /* reset configured state */ 2601 2602 if cdte.current_service_type = DIAL_OUT_SERVICE 2603 then return; 2604 2605 if ^cdte.current_access_class_valid 2606 then do; /* see if we can do it */ 2607 unspec (auto_tty_access_class) = ""b; 2608 call astty_$tty_order (cdtep, "get_required_access_class", addr (auto_tty_access_class), P_code); 2609 if P_code = 0 & auto_tty_access_class.access_class_set 2610 then do; 2611 cdte.current_access_class_valid = TRUE; 2612 cdte.current_access_class = auto_tty_access_class.access_class; 2613 end; 2614 else if P_code = 0 2615 then ; /* no required access class */ 2616 else if P_code = -1 /* stupid value if channel down */ 2617 then P_code = 0; 2618 2619 else if P_code = error_table_$undefined_order_request 2620 then P_code = 0; /* of if this MUX doesn't support it */ 2621 else /* error of some kind */ 2622 call sys_log_$error_log (SL_LOG_SILENT, P_code, ME, 2623 "From get_required_access_class control order on channel ^a.", cdte.name); 2624 end; 2625 else P_code = 0; 2626 return; 2627 end INITIALIZE_CURRENT_ACCESS_CLASS; 2628 2629 /* format: off */ 2630 /* BEGIN INCLUDE FILE ... absentee_user_table.incl.pl1 */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* The absentee user table is the control data base for the absentee */ 1 6 /* facility. It has a header, with scheduling parameters, then one user */ 1 7 /* table entry for each logged-in absentee job. */ 1 8 /* */ 1 9 /* Programs which use this table must also include */ 1 10 /* user_table_header.incl.pl1 and user_table_entry.incl.pl1. */ 1 11 /* */ 1 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 13 1 14 1 15 /****^ HISTORY COMMENTS: 1 16* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 1 17* Replace abs_user_tab.incl.pl1. 1 18* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 1 19* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 20* Use ut_header common to all user control tables. 1 21* END HISTORY COMMENTS */ 1 22 1 23 1 24 dcl AUTBL_version_4 fixed bin int static options (constant) init (4); 1 25 1 26 dcl autp ptr automatic init (null); 1 27 1 28 dcl 1 autbl based (autp) aligned, /* a per system table to store info on absentee processes */ 1 29 2 header like ut_header, /* Header common to all user tables. */ 1 30 1 31 /* Counter elements */ 1 32 2 n_abs_run fixed bin, /* actual number of absentee processes current */ 1 33 2 max_abs_users fixed bin, /* max number of background absentee processes permitted */ 1 34 2 n_background_abs fixed bin, /* number of absentee processes not from foreground queue */ 1 35 2 n_sec_fg fixed bin, /* number of secondary foreground absentee jobs */ 1 36 2 idle_units fixed bin, /* used in adjusting abs_maxu dynamically */ 1 37 2 abs_units fixed bin, /* part of anstbl.n_units used by background absentees */ 1 38 2 n_abs (4) fixed bin, /* number of processes from each background queue */ 1 39 2 qres (4) fixed bin, /* number of slots reserved for each background queue */ 1 40 2 rsc_waiting (-1:4) fixed bin, /* number of requests waiting for resources, from each queue */ 1 41 2 qerr (-1:4) fixed bin, /* number of consecutive errors for q (dropped if > QERR_MAX) */ 1 42 2 cpu_limit (4) fixed bin (35), /* current per-queue cpu time limits */ 1 43 1 44 /* absentee user manager values. */ 1 45 2 defer_channel fixed bin (71), /* IPC for time-defered queue entries */ 1 46 2 absentee_rq_chn fixed bin (71), /* IPC channel for absentee requests */ 1 47 2 last_queue_searched fixed bin, /* highest queue looked at by scheduler */ 1 48 2 debugging fixed bin, /* take asdumps at strategic places */ 1 49 2 control, /* see also whotab.incl.pl1 */ 1 50 3 mnbz bit (1) unal, /* must not be zero */ 1 51 3 abs_maxu_auto bit (1) unal, /* 1 if abs maxu has not been set by operator command */ 1 52 3 abs_maxq_auto bit (1) unal, /* 1 if abs maxq has not been set by operator command */ 1 53 3 abs_qres_auto bit (1) unal, /* 1 if abs qres has not been set by operator command */ 1 54 3 abs_cpu_limit_auto bit (1) unal, /* 1 if abs cpu_limit has not been set by operator command */ 1 55 3 queue_dropped (-1:4) bit (1) unal, /* 1 if queue has been dropped because of errors */ 1 56 3 abs_up bit (1) unal, /* 1 if absentee facility is running */ 1 57 3 abs_stopped bit (1) unal, /* 1 if abs stop command was issued */ 1 58 /* both 1 if we're waiting for the last jobs to log out */ 1 59 3 aum_ctl bit (1) unal, /* for AUM to tell AU to start a new sequence */ 1 60 3 lc_list bit (1) unal, /* for AU to tell AUM that the lc list is non-empty */ 1 61 /* comments in AU and AUM explain aum_ctl and lc_list */ 1 62 3 control_pad (21) bit (1) unal, /* fill out rest of word */ 1 63 2 aum_pad fixed bin, 1 64 1 65 2 entry_pad (80) fixed bin, /* pad table header to 128 words */ 1 66 2 entry (0 refer (autbl.current_size)) like ute; 1 67 1 68 dcl AUTBL_CONTROL_NAMES (15) char(20) varying int static options(constant) init( 1 69 "mnbz", 1 70 "abs_maxu_auto", 1 71 "abs_maxq_auto", 1 72 "abs_qres_auto", 1 73 "abs_cpu_limit_auto", 1 74 "queue_dropped(-1)", 1 75 "queue_dropped( 0)", 1 76 "queue_dropped( 1)", 1 77 "queue_dropped( 2)", 1 78 "queue_dropped( 3)", 1 79 "queue_dropped( 4)", 1 80 "abs_up", 1 81 "abs_stopped", 1 82 "aum_ctl", 1 83 "lc_list"); 1 84 1 85 /* END INCLUDE FILE ... absentee_user_table.incl.pl1 */ 2630 2631 /* BEGIN INCLUDE FILE ... access_mode_values.incl.pl1 2 2* 2 3* Values for the "access mode" argument so often used in hardcore 2 4* James R. Davis 26 Jan 81 MCR 4844 2 5* Added constants for SM access 4/28/82 Jay Pattin 2 6* Added text strings 03/19/85 Chris Jones 2 7**/ 2 8 2 9 2 10 /* format: style4,delnl,insnl,indattr,ifthen,dclind10 */ 2 11 dcl ( 2 12 N_ACCESS init ("000"b), 2 13 R_ACCESS init ("100"b), 2 14 E_ACCESS init ("010"b), 2 15 W_ACCESS init ("001"b), 2 16 RE_ACCESS init ("110"b), 2 17 REW_ACCESS init ("111"b), 2 18 RW_ACCESS init ("101"b), 2 19 S_ACCESS init ("100"b), 2 20 M_ACCESS init ("010"b), 2 21 A_ACCESS init ("001"b), 2 22 SA_ACCESS init ("101"b), 2 23 SM_ACCESS init ("110"b), 2 24 SMA_ACCESS init ("111"b) 2 25 ) bit (3) internal static options (constant); 2 26 2 27 /* The following arrays are meant to be accessed by doing either 1) bin (bit_value) or 2 28* 2) divide (bin_value, 2) to come up with an index into the array. */ 2 29 2 30 dcl SEG_ACCESS_MODE_NAMES (0:7) init ("null", "W", "E", "EW", "R", "RW", "RE", "REW") char (4) internal 2 31 static options (constant); 2 32 2 33 dcl DIR_ACCESS_MODE_NAMES (0:7) init ("null", "A", "M", "MA", "S", "SA", "SM", "SMA") char (4) internal 2 34 static options (constant); 2 35 2 36 dcl ( 2 37 N_ACCESS_BIN init (00000b), 2 38 R_ACCESS_BIN init (01000b), 2 39 E_ACCESS_BIN init (00100b), 2 40 W_ACCESS_BIN init (00010b), 2 41 RW_ACCESS_BIN init (01010b), 2 42 RE_ACCESS_BIN init (01100b), 2 43 REW_ACCESS_BIN init (01110b), 2 44 S_ACCESS_BIN init (01000b), 2 45 M_ACCESS_BIN init (00010b), 2 46 A_ACCESS_BIN init (00001b), 2 47 SA_ACCESS_BIN init (01001b), 2 48 SM_ACCESS_BIN init (01010b), 2 49 SMA_ACCESS_BIN init (01011b) 2 50 ) fixed bin (5) internal static options (constant); 2 51 2 52 /* END INCLUDE FILE ... access_mode_values.incl.pl1 */ 2631 2632 /* BEGIN INCLUDE FILE aim_template.incl.pl1 */ 3 2 3 3 /* Created 740723 by PG */ 3 4 /* Modified 06/28/78 by C. D. Tavares to add rcp privilege */ 3 5 /* Modified 83-05-10 by E. N. Kitltitz to add communications privilege */ 3 6 3 7 /* This structure defines the components of both an access 3 8* class and an access authorization as interpreted by the 3 9* Access Isolation Mechanism. */ 3 10 3 11 3 12 dcl 1 aim_template aligned based, /* authorization/access class template */ 3 13 2 categories bit (36), /* access categories */ 3 14 2 level fixed bin (17) unaligned, /* sensitivity level */ 3 15 2 privileges unaligned, /* special access privileges (in authorization only) */ 3 16 (3 ipc, /* interprocess communication privilege */ 3 17 3 dir, /* directory privilege */ 3 18 3 seg, /* segment privilege */ 3 19 3 soos, /* security out-of-service privilege */ 3 20 3 ring1, /* ring 1 access privilege */ 3 21 3 rcp, /* RCP resource access privilege */ 3 22 3 comm) bit (1), /* communications cross-AIM privilege */ 3 23 3 pad bit (11); 3 24 3 25 3 26 /* END INCLUDE FILE aim_template.incl.pl1 */ 2632 2633 /* Begin include file aim_privileges.incl.pl1 BIM 831206 */ 4 2 /* format: style3 */ 4 3 4 4 declare aim_privileges_ptr pointer; 4 5 declare 1 aim_privileges unaligned based (aim_privileges_ptr), 4 6 ( 2 ipc, /** interprocess communication privilege */ 4 7 2 dir, /** directory privilege */ 4 8 2 seg, /** segment privilege */ 4 9 2 soos, /** security out-of-service privilege */ 4 10 2 ring1, /** ring 1 access privilege */ 4 11 2 rcp, /** RCP resource access privilege */ 4 12 2 comm /** communications cross-AIM privilege */ 4 13 ) bit (1), 4 14 2 pad bit (29); 4 15 4 16 declare ( 4 17 IPC_PRIVILEGE init ("1"b), 4 18 DIR_PRIVILEGE init ("01"b), 4 19 SEG_PRIVILEGE init ("001"b), 4 20 SOOS_PRIVILEGE init ("0001"b), 4 21 RING1_PRIVILEGE init ("00001"b), 4 22 RCP_PRIVILEGE init ("000001"b), 4 23 COMM_PRIVILEGE init ("0000001"b), 4 24 ALL_PRIVILEGES init ("1111111"b) 4 25 ) bit (36) int static aligned options (constant); 4 26 4 27 4 28 /* End include file aim_privileges.incl.pl1 */ 2633 2634 /* BEGIN include file access_audit_bin_header.incl.pl1 */ 5 2 5 3 /* format: style4 */ 5 4 5 5 /* NOTE: All changes must also be done to access_audit_bin_header.incl.alm */ 5 6 5 7 /* 85-01-18 E. Swenson - renamed to access_audit_bin_header.incl.pl1 */ 5 8 /* 85-01-17 E. Swenson - restructured, added session_uid, changed 5 9* min and max authorization to authorization range. */ 5 10 /* 85-01-07 EJ Sharpe - added min_authorization, cleanup */ 5 11 /* 84-11-15 EJ Sharpe - added event_flags word */ 5 12 /* 84-11-06 EJ Sharpe - added unaligned attr to version and proxy_flag */ 5 13 /* 84-10-24 EJ Sharpe - added the constants */ 5 14 /* 84-09-04 BIM - created */ 5 15 5 16 declare audit_record_ptr pointer; 5 17 5 18 dcl 1 audit_record_header aligned based (audit_record_ptr), 5 19 2 header aligned like arh_header_, 5 20 2 subject aligned like arh_user_info_; 5 21 5 22 dcl 1 audit_record_header_proxy aligned based (audit_record_ptr), 5 23 2 header aligned like arh_header_, 5 24 2 subjects (2) aligned like arh_user_info_; 5 25 5 26 dcl 1 arh_header_ aligned based, 5 27 2 type fixed bin (9) unsigned unaligned, 5 28 2 version fixed bin (9) unsigned unaligned, 5 29 2 flags unaligned, 5 30 3 ( 5 31 subject_is_process, /* binary data in subject is valid */ 5 32 object_is_valid /* There is an object */ 5 33 ) bit (1) unaligned, 5 34 3 pad bit (16) unaligned, 5 35 2 operation_code bit (36) aligned, /* like access_audit_encoded_op */ 5 36 2 event_flags bit (36) aligned, /* like access_audit_eventflags */ 5 37 2 session_uid fixed bin (35); /* uid for the login session */ 5 38 5 39 dcl 1 arh_user_info_ aligned based, 5 40 2 person char (22) unaligned, /* see anonymous bit */ 5 41 2 project char (9) unaligned, /* blank for nologin w/out proj */ 5 42 2 tag char (1) unaligned, 5 43 2 ring fixed bin (3) uns unaligned, 5 44 2 anonymous bit (1) unaligned, 5 45 2 pad3 bit (32) unaligned, 5 46 2 process_id bit (36) aligned, 5 47 2 authorization bit (72) aligned, 5 48 2 authorization_range (2) bit (72) aligned; 5 49 5 50 dcl ARH_TYPE_PROXY fixed bin init (2) 5 51 static options (constant); 5 52 dcl ARH_TYPE_NO_PROXY fixed bin init (1) 5 53 static options (constant); 5 54 dcl ACCESS_AUDIT_HEADER_VERSION_3 fixed bin (9) unsigned 5 55 init (3) static options (constant); 5 56 5 57 /* End include file access_audit_bin_header.incl.pl1 */ 2634 2635 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 6 2 6 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 4 /* */ 6 5 /* The answer table has one entry per "login instance" whether completed or */ 6 6 /* not. It is connected to the Channel Definition Table by the pointer */ 6 7 /* "channel". The header is used mostly by dialup_. */ 6 8 /* */ 6 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 6 10 /* */ 6 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 12 6 13 /****^ HISTORY COMMENTS: 6 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 6 15* Replace anstbl.incl.pl1. 6 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 6 17* Add anstbl.session_uid_counter. 6 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 6 19* Add anstbl.message_update_time and named constants for values of 6 20* anstbl.session, and to make all padding explicit. 6 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 6 22* Change "entry" to a placeholder so as not to require 6 23* user_table_entry.incl.pl1. 6 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 6 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 6 26* Added the flag login_server_present which indicates whether a login 6 27* server request has been received. This is used to determine whether 6 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 6 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 6 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 6 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 6 32* A) Moved constants for ute.pw_flags.mask_ctl into 6 33* user_table_entry.incl.pl1. 6 34* B) Added common table header to all user tables. 6 35* END HISTORY COMMENTS */ 6 36 6 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 38 /* */ 6 39 /* The anstbl structure below is divided into sections. Each section begins */ 6 40 /* with a comment describing the elements in the section. Elements are */ 6 41 /* placed within a section, based upon their function or the programs that */ 6 42 /* use them. Each section begins on a double word and is an even number of */ 6 43 /* words long. */ 6 44 /* */ 6 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 6 46 6 47 6 48 6 49 /* format: style4 */ 6 50 6 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 6 52 6 53 dcl ansp ptr automatic init (null); 6 54 6 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 6 56 2 header like ut_header, /* Header common to all user tables. */ 6 57 6 58 /* Counter elements. */ 6 59 2 nlin fixed bin, /* number of active lines */ 6 60 2 mxlin fixed bin, /* maximum number of active lines */ 6 61 2 n_users fixed bin, /* number of logged-in users */ 6 62 2 max_users fixed bin, /* maximum number of users allowed */ 6 63 2 n_units fixed bin, /* number of logged in units */ 6 64 2 max_units fixed bin, /* maximum number of units */ 6 65 2 n_sessions fixed bin, /* number of Multics sessions */ 6 66 2 n_pad fixed bin, 6 67 6 68 /* Name elements. */ 6 69 2 sysdir char (64) unal, /* name of main system control directory */ 6 70 2 as_tty char (8) unal, /* name of main answering service device. */ 6 71 6 72 /* Login elements. */ 6 73 2 login_word char (8) unal, /* login word if special_session=1 */ 6 74 2 session char (8) unal, /* session indicator */ 6 75 2 special_message char (128) unal, /* message to be printed for special session */ 6 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 6 77 2 message_lng fixed bin, /* length of special message */ 6 78 2 login_pad fixed bin, 6 79 6 80 /* Table update elements. */ 6 81 2 lock_count fixed bin, /* global lock for all system control tables */ 6 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 6 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 6 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 6 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 6 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 6 87 2 update_pad fixed bin, 6 88 6 89 /* dialup_ data values. */ 6 90 2 current_time fixed bin (71), /* Time of last transaction */ 6 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 6 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 6 93 6 94 /* load_ctl_ elements. */ 6 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 6 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 6 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 6 98 /* load_ctl_ load leveling desired response range: */ 6 99 2 response_high fixed bin, /* bad if user response time slower than this */ 6 100 2 response_low fixed bin, /* bad if user response time faster than this */ 6 101 2 load_ctl_pad fixed bin, 6 102 6 103 /* Login server request server data. */ 6 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 6 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 6 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 6 107 6 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 6 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 6 110 3 contents (UTE_SIZE) fixed bin; 6 111 6 112 /* constants */ 6 113 6 114 /* values for anstbl.session */ 6 115 6 116 dcl (AT_NORMAL init ("normal "), 6 117 AT_SPECIAL init ("special "), 6 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 6 119 6 120 dcl UTE_SIZE fixed bin internal static initial (300); 6 121 6 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 2635 2636 /* BEGIN: as_audit_structures.incl.pl1 * * * * * */ 7 2 7 3 /****^ HISTORY COMMENTS: 7 4* 1) change(84-01-17,Swenson), approve(), audit(), install(): 7 5* Initial coding. 7 6* 2) change(87-06-08,GDixon), approve(87-07-13,MCR7741), 7 7* audit(87-07-31,Brunelle), install(87-08-04,MR12.1-1056): 7 8* A) Add AS_AUDIT_CHANNEL_ACTIONS, AS_AUDIT_CHANNEL_DIRECTION, and 7 9* AS_AUDIT_CHANNEL_SERVICE_INFO arrays. 7 10* B) Add channel audit actions for dialin, dialout and dial system. 7 11* C) Correct declaration of as_channel_audit_record_.pad2. 7 12* D) Revise channel_audit_info. 7 13* 3) change(87-07-15,GDixon), approve(87-07-15,MCR7741), 7 14* audit(87-07-31,Brunelle), install(87-08-04,MR12.1-1056): 7 15* A) Add AS_AUDIT_PROCESS_TERMINATE action code. 7 16* END HISTORY COMMENTS */ 7 17 7 18 /* format: style2 */ 7 19 7 20 /* This include file describes the binary data associated with 7 21* Answering Service audit records. */ 7 22 7 23 /**** This first structure defines the Identification and Authentication 7 24* (I&A) audit records associated with login attempts for interactive 7 25* and daemon logins */ 7 26 7 27 dcl 1 as_ia_audit_record_int_dmn 7 28 structure aligned based, 7 29 2 header like audit_record_header aligned, 7 30 2 record like as_ia_audit_record_; 7 31 7 32 /**** This one is for absentee logins which are not proxy absentees */ 7 33 7 34 dcl 1 as_ia_audit_record_abs 7 35 structure aligned based, 7 36 2 header like audit_record_header aligned, 7 37 2 record like as_ia_audit_record_, 7 38 2 absentee_input_path 7 39 char (168); 7 40 7 41 dcl 1 as_ia_audit_record_abs_proxy 7 42 structure aligned based, 7 43 2 header like audit_record_header aligned, 7 44 2 record like as_ia_audit_record_, 7 45 2 absentee_input_path 7 46 char (168), 7 47 2 proxy_user char (32); 7 48 7 49 /**** The following structure is common to all the I&A records. It 7 50* contains the relevant information about the I&A process. */ 7 51 7 52 dcl 1 as_ia_audit_record_ structure aligned based, 7 53 2 type fixed bin (9) unsigned unaligned, 7 54 2 version fixed bin (9) unsigned unaligned, 7 55 2 process_type fixed bin (3) unsigned unaligned, 7 56 2 min_ring fixed bin (3) unsigned unaligned, 7 57 2 max_ring fixed bin (3) unsigned unaligned, 7 58 2 pad1 bit (9) unaligned, 7 59 2 attributes like user_attributes, 7 60 2 audit_flags bit (36) aligned, 7 61 2 channel char (32) aligned, 7 62 2 terminal_type char (32) aligned, 7 63 2 answerback char (4) aligned; 7 64 7 65 /**** The following structure represents the binary information 7 66* associated with a communications channel access audit message. */ 7 67 7 68 dcl 1 as_channel_audit_record 7 69 structure aligned based, 7 70 2 header like audit_record_header aligned, 7 71 2 record like as_channel_audit_record_; 7 72 7 73 7 74 dcl 1 as_channel_audit_record_ 7 75 structure aligned based, 7 76 2 type fixed bin (9) unsigned unaligned, 7 77 2 version fixed bin (9) unsigned unaligned, 7 78 2 flags unaligned, 7 79 3 channel_info_valid 7 80 bit (1) unaligned, 7 81 3 current_access_class_valid 7 82 bit (1) unaligned, 7 83 3 pad1 bit (16) unaligned, 7 84 2 channel_name char (32), 7 85 2 current_access_class 7 86 (2) bit (72) aligned, 7 87 2 access_class_range (2) bit (72) aligned, 7 88 2 current_service_type 7 89 fixed bin (17) unaligned, 7 90 2 service_type fixed bin (17) unaligned, 7 91 2 terminal_type char (32), 7 92 2 authenticated_user aligned, 7 93 3 personid char (22) unaligned, 7 94 3 projectid char (9) unaligned, 7 95 3 pad2 bit (9) unaligned; 7 96 7 97 /**** The following structure represents the binary information 7 98* associated with a dial service audit record */ 7 99 7 100 dcl 1 as_dial_service_audit_record 7 101 structure aligned based, 7 102 2 header like audit_record_header aligned, 7 103 2 record like as_dial_service_audit_record_; 7 104 7 105 dcl 1 as_dial_service_audit_record_ 7 106 structure aligned based, 7 107 2 type fixed bin (9) unsigned unaligned, 7 108 2 version fixed bin (9) unsigned unaligned, 7 109 2 dial_server_ring fixed bin (3) unsigned unaligned, 7 110 2 flags unaligned, 7 111 3 registered_server 7 112 bit (1) unaligned, 7 113 3 privileged_server 7 114 bit (1) unaligned, 7 115 3 pad1 bit (13) unaligned, 7 116 2 dial_qualifier char (32); 7 117 7 118 /**** The following structure is used by dial_ctl_ to pass the required 7 119* information to as_access_audit_. This structure is necessary since 7 120* the data is not available in the user_table_entry or cdte. */ 7 121 7 122 dcl dial_server_info_ptr ptr; /* pointer to following structure */ 7 123 7 124 dcl 1 dial_server_info structure aligned based (dial_server_info_ptr), 7 125 2 server_ring fixed bin (3) unaligned, 7 126 2 flags unaligned, 7 127 3 registered bit (1) unaligned, 7 128 3 privileged bit (1) unaligned, 7 129 3 pad1 bit (31) unaligned, 7 130 2 dial_qualifier char (32); 7 131 7 132 /**** The following structure is used by dial_ctl_ to pass relevant information 7 133* to as_access_audit_. The channel name is passed here when we do not 7 134* have a cdtep, for instance. */ 7 135 7 136 dcl channel_audit_info_ptr ptr; 7 137 7 138 dcl 1 channel_audit_info aligned based (channel_audit_info_ptr), 7 139 2 channel_name char (32), 7 140 2 valid, 7 141 (3 service_info, 7 142 3 access_class, 7 143 3 access_class_range, 7 144 3 user_validation_level) 7 145 bit(1) unal, 7 146 3 mbz bit(32) unal, 7 147 2 service_info char (32), 7 148 2 access_class bit(72) aligned, 7 149 2 access_class_range (2) bit(72) aligned, 7 150 2 user_validation_level 7 151 fixed bin (3); 7 152 7 153 dcl AS_AUDIT_RECORD_IA_VERSION_1 7 154 fixed bin (9) initial (1) internal static options (constant); 7 155 7 156 dcl AS_AUDIT_RECORD_CHN_VERSION_1 7 157 fixed bin (9) initial (1) internal static options (constant); 7 158 7 159 dcl AS_AUDIT_RECORD_DIALID_VERSION_1 7 160 fixed bin (9) initial (1) internal static options (constant); 7 161 7 162 dcl ( 7 163 AS_AUDIT_PROCESS_CREATE 7 164 initial (1), 7 165 AS_AUDIT_PROCESS_DESTROY 7 166 initial (2), 7 167 AS_AUDIT_PROCESS_CONNECT 7 168 initial (3), 7 169 AS_AUDIT_PROCESS_DISCONNECT 7 170 initial (4), 7 171 AS_AUDIT_PROCESS_TERMINATE 7 172 initial (5) 7 173 ) fixed bin (17) internal static options (constant); 7 174 7 175 dcl ( 7 176 AS_AUDIT_CHANNEL_ATTACH 7 177 initial (1), 7 178 AS_AUDIT_CHANNEL_DETACH 7 179 initial (2), 7 180 AS_AUDIT_CHANNEL_DIALIN 7 181 initial (3), 7 182 AS_AUDIT_CHANNEL_DIALOUT 7 183 initial (4), 7 184 AS_AUDIT_CHANNEL_DIAL_SYSTEM 7 185 initial (5) 7 186 ) fixed bin (17) internal static options (constant); 7 187 7 188 dcl ( 7 189 AS_AUDIT_DIALID_START initial (1), 7 190 AS_AUDIT_DIALID_STOP initial (2) 7 191 ) fixed bin (17) internal static options (constant); 7 192 7 193 dcl AS_AUDIT_CHANNEL_ACTIONS 7 194 (5) char (12) internal static options (constant) 7 195 initial ("ATTACH", "DETACH", "DIALIN", "DIALOUT", "DIAL SYSTEM"); 7 196 dcl AS_AUDIT_CHANNEL_DIRECTION 7 197 (5) char (4) internal static options (constant) 7 198 initial ("to", "from", "to", "from", "to"); 7 199 dcl AS_AUDIT_CHANNEL_SERVICE_INFO 7 200 (5) char (12) internal static options (constant) 7 201 initial ("Service", "Service", "Dial ID", "Destination", "VChannel"); 7 202 dcl AS_AUDIT_PROCESS_ACTIONS 7 203 (5) char (10) internal static options (constant) 7 204 initial ("CREATE", "DESTROY", "CONNECT", "DISCONNECT", "TERMINATE"); 7 205 7 206 /* END OF: as_audit_structures.incl.pl1 * * * * * */ 2636 2637 /* BEGIN INCLUDE FILE ... as_data_.incl.pl1 ... */ 8 2 8 3 /* format: style4 */ 8 4 8 5 /* This file must be kept in sync with as_data_.alm */ 8 6 8 7 /****^ HISTORY COMMENTS: 8 8* 1) change(86-09-21,Beattie), approve(86-09-22,MCR7542), 8 9* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 8 10* Remove references to the 963 and 029 preaccess commands and remove support 8 11* for ARDS, 202_ETX, 2741 and 1050 in system interfaces. 8 12* 2) change(86-09-25,Swenson), approve(87-07-20,MCR7737), 8 13* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 8 14* Add references to as_data_ entrypoints added for Login Server. 8 15* 3) change(87-03-03,Brunelle), approve(87-07-20,MCR7697), 8 16* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 8 17* Added new user signal field of inacrcvd (14) to handle inactivity response 8 18* from user. 8 19* END HISTORY COMMENTS */ 8 20 8 21 dcl as_data_$BS char (1) aligned ext static; /* BACKSPACE character */ 8 22 dcl as_data_$CR char (1) aligned ext static; /* CARRIAGE RETURN character */ 8 23 dcl as_data_$abs_dim char (32) ext static; /* absentee DIM */ 8 24 dcl as_data_$acct_update_priority fixed bin ext static; /* accounting update IPC priority */ 8 25 dcl as_data_$acsdir char (168) ext static; /* Access Control Segment directory */ 8 26 dcl as_data_$ansp ptr ext static; /* answer_table */ 8 27 dcl as_data_$as_procid bit (36) aligned ext static; /* Answering Service process id */ 8 28 dcl as_data_$as_ring fixed bin (3) ext static; /* AS operating ring */ 8 29 dcl as_data_$as_tty char (6); /* AS master tty channel */ 8 30 dcl as_data_$asmtp ptr ext static; /* AS meter table */ 8 31 dcl as_data_$autp ptr ext static; /* absentee_user_table */ 8 32 dcl as_data_$buzzardp ptr ext static; /* dpg_ list of buteo processes */ 8 33 dcl as_data_$cdtp ptr ext static; /* CDT */ 8 34 dcl as_data_$default_weight fixed bin (35) ext; /* default user process load control weight */ 8 35 dcl as_data_$devtabp ptr ext static; /* device_table */ 8 36 dcl as_data_$dft_user_ring fixed bin (3) ext static; /* default user ring */ 8 37 dcl as_data_$dutp ptr ext static; /* daemon_user_table */ 8 38 dcl as_data_$g115_dim char (32) ext static; 8 39 dcl as_data_$lct_initialized bit (1) aligned ext static; /* LCT allocated in ring 0 */ 8 40 dcl as_data_$lct_size fixed bin ext static; /* CDT tty channels + spares */ 8 41 dcl as_data_$max_user_ring fixed bin (3) ext static; /* maximum user ring */ 8 42 dcl as_data_$mgtp ptr ext static; /* master group table */ 8 43 dcl as_data_$mrd_dim char (32) ext static; /* daemon's message routing DIM */ 8 44 dcl as_data_$ntty_dim char (32) ext static; /* network connection DIM */ 8 45 dcl as_data_$pdtdir char (168) ext static; /* PDT directory */ 8 46 dcl as_data_$pit_ptr ptr ext static; /* pit_temp_ */ 8 47 dcl as_data_$rcpdir char (168) ext static; /* RCP directory */ 8 48 dcl as_data_$request_priority fixed bin ext static; 8 49 dcl as_data_$rs_ptrs (0:9) ptr ext static; /* rate_structures */ 8 50 dcl as_data_$rtdtp ptr ext static; /* RTDT */ 8 51 dcl as_data_$sat_htp ptr ext static; /* SAT hash table */ 8 52 dcl as_data_$satp ptr ext static; /* SAT */ 8 53 dcl as_data_$suffix (0:9) char (2) unaligned ext static; 8 54 dcl as_data_$sysdir char (168) ext static; /* system control directory */ 8 55 dcl as_data_$teens_suffix (10:19) char (2) unaligned ext static; 8 56 dcl as_data_$terminet_tabs_string char (144) varying ext static; 8 57 dcl as_data_$tty_dim char (32) ext static; /* standard interactive DIM */ 8 58 dcl as_data_$update_priority fixed bin ext static; /* ??? */ 8 59 dcl as_data_$version char (8) ext static; /* AS version */ 8 60 dcl as_data_$whoptr ptr ext static; /* whotab */ 8 61 8 62 dcl 1 as_data_$login_args aligned ext static, /* control arguments for login */ 8 63 2 n_login_args fixed bin, 8 64 2 pad fixed bin, 8 65 2 login_args (55 /* as_data_$login_args.n_login_args */) char (24) unaligned; 8 66 8 67 dcl 1 as_data_$signal_types ext static aligned, /* IPC process control signals */ 8 68 2 n_signals fixed bin, 8 69 2 pad fixed bin, 8 70 2 signals (14 /* as_data_$signal_types.n_signals */) char (8) unaligned; 8 71 8 72 dcl 1 as_data_$system_signal_types ext static aligned, /* IPC process control signals */ 8 73 2 n_system_signals fixed bin, 8 74 2 pad fixed bin, 8 75 2 system_signals (10 /* as_data_$system_signal_types.n_system_signals */) char (8) unaligned; 8 76 8 77 dcl as_data_$login_words fixed bin ext static aligned, 8 78 /* interactive login words */ 8 79 1 as_data_login_words aligned based (addr (as_data_$login_words)), 8 80 2 n_words fixed bin, 8 81 2 pad fixed bin, 8 82 2 words (0 refer (as_data_login_words.n_words)) char (16) unaligned; 8 83 8 84 dcl as_data_$debug_flag bit (1) aligned external static; 8 85 dcl as_data_$ls_request_server_info_ptr ptr external static; 8 86 dcl as_data_$ls_message_buffer_cur_lth fixed bin (18) external static; 8 87 dcl as_data_$ls_message_buffer_max_lth fixed bin (18) external static; 8 88 dcl as_data_$ls_message_buffer_ptr ptr external static; 8 89 8 90 /* END INCLUDE FILE ... as_data_.incl.pl1 ... */ 2637 2638 /* BEGIN INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 9 2 9 3 9 4 /****^ HISTORY COMMENTS: 9 5* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 9 6* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 9 7* Removed ansp, autp and dutp from this include file, adding them to 9 8* answer_table.incl.pl1, absentee_user_table.incl.pl1 and 9 9* daemon_user_table.incl.pl1. 9 10* END HISTORY COMMENTS */ 9 11 9 12 9 13 /* This include file requires as_data_.incl.pl1 */ 9 14 9 15 /* format: style4 */ 9 16 9 17 dcl as_procid bit (36) aligned defined (as_data_$as_procid); 9 18 dcl as_tty char (6) based (addr (as_data_$as_tty)); 9 19 dcl asmtp ptr defined (as_data_$asmtp); 9 20 dcl devtabp ptr defined (as_data_$devtabp); 9 21 dcl ip ptr defined (as_data_$rs_ptrs (0)); 9 22 dcl mgtp ptr defined (as_data_$mgtp); 9 23 dcl pdtdir char (168) based (addr (as_data_$pdtdir)); 9 24 dcl rs_ptrs (0:9) ptr based (addr (as_data_$rs_ptrs (0))); 9 25 dcl sat_htp ptr defined (as_data_$sat_htp); 9 26 dcl satp ptr defined (as_data_$satp); 9 27 dcl scdtp ptr defined (as_data_$cdtp); 9 28 dcl sysdir char (168) defined (as_data_$sysdir); 9 29 dcl whoptr ptr defined (as_data_$whoptr); 9 30 9 31 /* END INCLUDE FILE ... as_data_definitions_.incl.pl1 ... */ 2638 2639 /* BEGIN INCLUDE FILE ... as_request_header.incl.pl1 */ 10 2 10 3 /* DESCRIPTION: 10 4* Answering Service request information. 10 5**/ 10 6 10 7 10 8 /****^ HISTORY COMMENTS: 10 9* 1) change(00-01-01,JRandom), approve(), audit(), install(): 10 10* Written by someone, at sometime. 10 11* 2) change(84-09-10,Tague), approve(), audit(), install(): 10 12* R. Michael Tague: Added ASR_BUMP_USER request. 10 13* 3) change(84-10-04,Margulies), approve(), audit(), install(): 10 14* BIM: ASR_ADMIN_COMMAND. 10 15* 4) change(85-01-23,Swenson), approve(), audit(), install(): 10 16* E. Swenson for ASR_NOTE_PNT_CHANGE. 10 17* 5) change(85-02-18,Margulies), approve(), audit(), install(): 10 18* BIM: ASR_DAEMON_COMMAND, ASR_COM_CHANNEL_INFO 10 19* 6) change(85-12-12,Lippard), approve(85-12-30,MCR7326), 10 20* audit(86-10-27,GDixon), install(86-10-28,MR12.0-1200): 10 21* Jim Lippard: Added ASR_ABS_COMMAND request. 10 22* END HISTORY COMMENTS */ 10 23 10 24 10 25 /* format: style4 */ 10 26 10 27 dcl as_request_version_1 fixed bin internal static initial (1) options (constant); 10 28 10 29 dcl ( 10 30 ASR_FIRST_TYPE initial (1), 10 31 ASR_DIAL_SERVER initial (1), 10 32 ASR_DIAL_OUT initial (2), 10 33 ASR_FPE_CAUSES_LOGOUT initial (3), 10 34 ASR_FPE_CAUSES_NEW_PROC initial (4), 10 35 ASR_PROC_TERM_NOTIFY initial (5), 10 36 ASR_BUMP_USER initial (6), 10 37 ASR_ADMIN_COMMAND initial (7), 10 38 ASR_NOTE_PNT_CHANGE initial (8), 10 39 ASR_DAEMON_COMMAND initial (9), 10 40 ASR_COM_CHANNEL_INFO initial (10), 10 41 ASR_ABS_COMMAND initial (11), 10 42 ASR_LAST_TYPE initial (11) 10 43 ) fixed bin internal static options (constant); 10 44 10 45 dcl ASR_DEFER_IN_ADMIN_MODE (1:11) bit (1) int static options (constant) 10 46 init ((6) (1) "0"b, "1"b, (4) (1) "0"b); 10 47 10 48 dcl ASR_REQUEST_NAMES (1:11) int static options (constant) 10 49 char (40) init ( 10 50 "Dial request", 10 51 "Dial out request", 10 52 "Logout on fatal process error", 10 53 "New process on fatal process error", 10 54 "Monitor process terminations", 10 55 "Bump user", 10 56 "Execute admin command", 10 57 "Note PNT change", 10 58 "Daemon command", 10 59 "Communications channel info", 10 60 "Absentee command"); 10 61 10 62 dcl 1 as_request_header based aligned, 10 63 2 version fixed bin, /* version number */ 10 64 2 type fixed bin, /* what to do */ 10 65 2 reply_channel fixed bin (71); /* who to tell */ 10 66 10 67 10 68 /* END INCLUDE FILE ... as_request_header.incl.pl1 */ 2639 2640 /* Begin include file as_request_sender_.incl.pl1 84-06-06 BIM */ 11 2 11 3 /****^ HISTORY COMMENTS: 11 4* 1) change(86-10-14,Lippard), approve(85-12-30,MCR7326), 11 5* audit(86-10-24,GDixon), install(86-10-28,MR12.0-1200): 11 6* Added max_authorization and audit_flags. 11 7* END HISTORY COMMENTS */ 11 8 11 9 /* Structure passed from as_request_server_ to the various 11 10* requests to identify requester. */ 11 11 /* format: style3,indcomtxt */ 11 12 11 13 declare as_request_sender_ptr 11 14 pointer; 11 15 declare 1 as_request_sender aligned based (as_request_sender_ptr), 11 16 2 version char (8) aligned, 11 17 2 reply_message fixed bin (71), 11 18 2 group_id char (32) unaligned, 11 19 2 process_id bit (36), 11 20 2 validation_level 11 21 fixed bin (3), 11 22 2 authorization bit (72), 11 23 2 max_authorization 11 24 bit (72), 11 25 2 audit_flags bit (36); 11 26 11 27 declare AS_REQUEST_SENDER_VERSION_2 11 28 char (8) init ("asrqs002") internal static options (constant); 11 29 11 30 /* End include file as_request_sender_.incl.pl1 */ 2640 2641 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 12 2 12 3 /* This include file declares the "author" substructure 12 4* in a form suitable for using the PL/I "like" attribute. 12 5* 12 6* Written 750304 by PG 12 7**/ 12 8 12 9 dcl 1 author_dcl aligned based, 13 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 13 2 13 3 /* the "author" items must always be the first ones in the table. The 13 4* module which moves the converted table to the System Control process 13 5* fills in these data items and assumes them to be at the head of the segment 13 6* regardless of the specific table's actual declaration. The variables 13 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 13 8* respectively. For tables installed in multiple processes, these 13 9* are to be used to lock out multiple installations. */ 13 10 13 11 /* Lock should be used as a modification lock. Since, in general, 13 12* entries may not be moved in system tables, even by installations, 13 13* it is sufficient for only installers and programs that change threads 13 14* to set or respect the lock. Simply updating data in an entry 13 15* requires no such protection. 13 16* 13 17* Last_install_time is used by readers of system tables to detect 13 18* installations or other serious modifications. By checking it before 13 19* and after copying a block of data, they can be protected against 13 20* modifications. 13 21* 13 22* Modules that set the lock should save proc_group_id, and then 13 23* put their group id there for the time they hold the lock. 13 24* if they do not actually install the, they should restore the group id. 13 25**/ 13 26 13 27 2 author aligned, /* validation data about table's author */ 13 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 13 29 3 lock bit (36), /* installation lock */ 13 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 13 31 3 update_authorization bit (1) unal, /* update only authorizations */ 13 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 13 33 3 pad bit (33) unaligned, 13 34 3 last_install_time fixed bin (71), 13 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 13 36 3 w_dir char (64), /* author's working directory */ 13 37 13 38 /* END INCLUDE FILE author.incl.pl1 */ 12 10 12 11 2 pad; 12 12 12 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 2641 2642 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 14 2 14 3 /* format: style3,idind25,indcomtxt */ 14 4 14 5 /* Channel Definition Table. 14 6* This table lists all of the hardware channels (ports) connected 14 7* to the system, and maintains the attributes of each one. 14 8* 14 9* PG 741230 14 10* Modified by Mike Grady 5/6/76 to add FNP info. 14 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 14 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 14 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 14 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 14 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 14 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 14 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 14 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 14 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 14 20* Modified August 1982 by E. N. Kittlitz for check_acs. 14 21* Modified January 1983 by Keith Loepere for generic_destination. 14 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 14 23* Modified 831216 by E. N. Kittlitz for required_access_class. 14 24* Modified 84-04-01 by BIM to finish communications AIM: 14 25* access class ranges, 14 26* access_control flags. 14 27**/ 14 28 14 29 14 30 /****^ HISTORY COMMENTS: 14 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 14 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 14 33* Add support for answering service to use IOCBs when tty_ cannot be 14 34* used to service login channels. 14 35* END HISTORY COMMENTS */ 14 36 14 37 14 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 14 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 14 40 14 41 dcl (cdtp, cdtep, fnpep, mpxep) 14 42 ptr; 14 43 14 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 14 45 2 author like author_dcl.author, /* standard header */ 14 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 14 47 2 current_size fixed bin, /* number of last cdte. */ 14 48 2 version fixed bin, 14 49 2 freep fixed bin, /* chain of free cdte's */ 14 50 2 n_cdtes fixed bin, /* number of used cdte's */ 14 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 14 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 14 53 2 cpu_in_dialup fixed bin (71), /* .. */ 14 54 2 pf_in_dialup fixed bin, /* .. */ 14 55 2 pp_in_dialup fixed bin, /* .. */ 14 56 2 entries_to_dialup fixed bin, /* .. */ 14 57 2 flags, 14 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 14 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 14 60 3 mux_mgr_system_init 14 61 bit (1) unal, /* mux mgr has loaded top-levels */ 14 62 3 pad1 bit (33) unal, 14 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 14 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 14 65 2 threads aligned like channel_threads, 14 66 /* root of non-fnp-top-level-multiplexers */ 14 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 14 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 14 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 14 70 14 71 14 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 14 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 14 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 14 75 2 pad1 bit (36) aligned, 14 76 2 name char (32), /* ASCII name of channel */ 14 77 2 access_class (2) bit (72) aligned, /* access class range */ 14 78 2 comment char (48), /* printable message about channel */ 14 79 2 charge_type fixed bin (17) unal, /* billing group */ 14 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 14 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 14 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 14 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 14 84 2 pad2 bit (18) unaligned, 14 85 2 answerback char (8), /* answerback string expected */ 14 86 2 initial_terminal_type 14 87 char (32) unal, /* as specified in the CMF */ 14 88 2 mpx_data unal, /* data used only for multiplexed channels */ 14 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 14 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 14 91 2 flags, 14 92 ( 3 attributes, 14 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 14 94 4 audit_access_error 14 95 bit (1), /* ON means ck that person auth is inside access class range */ 14 96 /* this implies that the access_class describes a range of 14 97* legitimate user auths. */ 14 98 4 hardwired bit (1), /* ON means it is */ 14 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 14 100 4 dont_read_answerback 14 101 bit (1), /* ON means don't try to read answerback */ 14 102 4 pada bit (4), 14 103 3 access_control unaligned, /* As below */ 14 104 4 dial_out bit (1), /* dialing user must be on ACS */ 14 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 14 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 14 107 4 login bit (1), /* logging in user must be on acs */ 14 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 14 109 4 pado bit (3), 14 110 3 options, 14 111 4 execute_initial_command 14 112 bit (1), /* ON means to do it */ 14 113 4 attached_by_operator 14 114 bit (1), /* ON means temporary attachment. */ 14 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 14 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 14 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 14 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 14 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 14 120 4 generic_destination_present 14 121 bit (1), /* ON means that the initial_command field contains 14 122* a generic destination to match on dial_out or priv attach */ 14 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 14 124 4 pado bit (9) 14 125 ) unaligned, 14 126 2 initial_command char (64), /* pseudo first input line */ 14 127 /**** The following variables represent dynamic control info, and 14 128* are used mostly by dialup_ and asu_ */ 14 129 2 event fixed bin (71), /* event call channel for channel events */ 14 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 14 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 14 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 14 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 14 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 14 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 14 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 14 137 /* 0 = dialup_, 1 = mc_tty_ */ 14 138 3 save_arg bit (1) unal, /* -save login arg given */ 14 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 14 140 3 detach_after_hangup 14 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 14 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 14 143 3 hold_arg bit (1) unal, /* -hold arg given */ 14 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 14 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 14 146 3 current_access_class_valid 14 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 14 148 3 pad bit (7) unal, 14 149 2 twx fixed bin, /* channel device index */ 14 150 2 state fixed bin, /* channel state */ 14 151 2 tty_id_code char (4), /* channel id (answerback) */ 14 152 2 current_terminal_type 14 153 char (32) unal, /* most recently-set terminal type */ 14 154 2 process ptr unal, /* ptr to ATE owning this channel */ 14 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 14 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 14 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 14 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 14 159* We do not yet define multi-class connections, but we will someday. */ 14 160 2 disconnected_ate_index 14 161 fixed bin (17) unal, /* index of ate of disconnected process */ 14 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 14 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 14 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 14 165 2 pad3 bit (14) unaligned, 14 166 /**** The following variables are kept for metering purposes. */ 14 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 14 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 14 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 14 170 2 dialup_time fixed bin (71), /* time of present dialup */ 14 171 2 disconnected_proc_command 14 172 fixed bin (12) unsigned unal, 14 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 14 174 2 disconnected_proc_number 14 175 fixed bin (12) unsigned unal, 14 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 14 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 14 178 /* number of disconnected processes that user has */ 14 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 14 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 14 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 14 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 14 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 14 184 /**** had the space. */ 14 185 2 threads aligned like channel_threads, 14 186 /**** The use name is that of the user who gave the dial or slave ****/ 14 187 /**** preaccess request. ****/ 14 188 2 user_name unaligned, 14 189 3 person char (20) unaligned, 14 190 3 project char (9) unaligned, 14 191 3 pad char (3) unaligned, /* no tag */ 14 192 2 iocbp ptr unaligned; /* 104 words */ 14 193 14 194 14 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 14 196* overlays initial_command field for slave and autocall lines */ 14 197 14 198 14 199 14 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 14 201 /* These variables are filled in from the CMF */ 14 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 14 203 2 memory fixed bin, /* amount of memory on this FNP */ 14 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 14 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 14 206 2 service_type fixed bin, /* service type */ 14 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 14 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 14 209 /**** The following are used during system operation to remember the state of the FNP */ 14 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 14 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 14 212 2 mpxe like mpxe, /* standard multiplexer data */ 14 213 2 threads aligned like channel_threads, 14 214 /* same mpx threads as channel */ 14 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 14 216 14 217 /* This structure describes the data necessary to control a multiplexer. 14 218* For FNP's., a copy appears in the fnpe. For communications lines, it 14 219* overlays the initial_command field in the cdte. */ 14 220 14 221 dcl 1 mpxe based (mpxep) aligned, 14 222 2 state fixed bin, /* current state, up, down, loading */ 14 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 14 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 14 225 2 n_bootloads fixed bin, /* count of load attempts */ 14 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 14 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 14 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 14 229 2 time_load_start fixed bin (71), /* time current load started */ 14 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 14 231 2 flags unal, 14 232 3 go bit (1), /* start MPX after it loads */ 14 233 3 listening bit (1), /* listen has been done on subchannels */ 14 234 3 check bit (1), /* loaded with check option */ 14 235 3 retry_load bit (1), /* reload if load fails */ 14 236 3 pad1 bit (32), 14 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 14 238 14 239 /* These threads define the tree of multiplexers in the cdt. */ 14 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 14 241 /* by alpha sort order of the channel name. Daughter points to the */ 14 242 /* first child of this node, if any. Daughter count is the number */ 14 243 /* of children, as a consistency check. Mother is a back pointer to */ 14 244 /* the parent, present in all the children, not just the first. */ 14 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 14 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 14 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 14 248 14 249 dcl 1 channel_threads aligned based, 14 250 2 next_sister fixed bin unaligned, 14 251 2 prev_sister fixed bin unaligned, 14 252 2 daughter fixed bin unaligned, 14 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 14 254 2 pad bit (18) unaligned, 14 255 2 daughter_count fixed bin unaligned; 14 256 14 257 /* Values for cdte.service_type field */ 14 258 14 259 dcl ( 14 260 ANS_SERVICE init (1), /* login or dial */ 14 261 FTP_SERVICE init (2), /* file transfer service */ 14 262 MC_SERVICE init (3), /* message coordinator */ 14 263 SLAVE_SERVICE init (4), /* special channel */ 14 264 DIAL_SERVICE init (5), /* transient state */ 14 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 14 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 14 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 14 268 ) fixed bin internal static options (constant); 14 269 14 270 /* Values for service type in both cdte and fnpe */ 14 271 14 272 dcl ( 14 273 INACTIVE init (7), /* not to be used, even though configured */ 14 274 ACTIVE init (1) 14 275 ) /* for FNP only, configured and to be used */ 14 276 fixed bin internal static options (constant); 14 277 14 278 /* Value for both cdte.in_use and fnpe.state */ 14 279 14 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 14 281 /* was not configured at Multics bootload time */ 14 282 14 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 14 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 14 285 14 286 /* Value for cdte.in_use */ 14 287 14 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 14 289 /* channel deleted by CDT installation */ 14 290 14 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 14 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 14 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 14 294 14 295 14 296 /* Values for mpxe.state field */ 14 297 14 298 dcl ( 14 299 FNP_FREE init (0), /* this fnpe is not used */ 14 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 14 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 14 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 14 303 FNP_UP init (4) /* FNP is up and running fine */ 14 304 ) fixed bin internal static options (constant); 14 305 14 306 dcl ( 14 307 MPX_FREE init (0), /* this mpxe is not used */ 14 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 14 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 14 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 14 311 MPX_UP init (4) /* MPX is up and running fine */ 14 312 ) fixed bin internal static options (constant); 14 313 15 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 15 2 15 3 15 4 15 5 /****^ HISTORY COMMENTS: 15 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 15 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 15 8* Add data needed for the uncp multiplexer (DSA gateway) interface 15 9* implementation. 15 10* END HISTORY COMMENTS */ 15 11 15 12 15 13 /* Values for fnpe.type field */ 15 14 /* 15 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 15 16* Added in March 1982 - DN7100.fd. 15 17**/ 15 18 15 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 15 20 DN6600 init (2), /* a DataNet 6600 FNP */ 15 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 15 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 15 23 ) fixed bin internal static options (constant); 15 24 15 25 dcl fnp_types (4) char (8) int static options (constant) 15 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 15 27 15 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 15 29 init (355, 6600, 6670, 7100); 15 30 15 31 dcl supported_fnp (4) bit (1) int static options (constant) 15 32 init ("0"b, "0"b, "1"b, "1"b); 15 33 15 34 15 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 14 314 14 315 14 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 2642 2643 /* BEGIN INCLUDE FILE ... dial_server_request.incl.pl1 */ 16 2 16 3 /* This include file declares the data structure to be 16 4* passed to the dial facility to allow a process 16 5* to accept dials. 16 6**/ 16 7 /* Modified 11-9-76 by S.T. Kent to add selective channel release flag 16 8* and registered dial server flag 16 9* Modified April 1979 by Larry Johnson for no_hangup option on release channel 16 10* Modified November 1980 by E.N. Kittlitz for baud rate, line server 16 11* type, and to separate dial_out_destination from dial_qualifier 16 12* Modified March 1981 by Robert Coren to add tandd_attach and no_listen bits 16 13* Modified April 1983 by E. N. Kittlitz for access_class. 16 14* Moodified 84-04-04 BIM for privileged_server. 16 15**/ 16 16 16 17 dcl request_ptr ptr; 16 18 16 19 dcl dial_server_request_version_4 fixed bin internal static initial (4); 16 20 16 21 dcl 1 dial_server_request aligned based (request_ptr), 16 22 2 header like as_request_header, /* std header */ 16 23 2 version fixed bin, /* version of this structure */ 16 24 2 dial_control_channel fixed bin (71), /* send dial acknowledgements here */ 16 25 2 dial_qualifier char (22), /* dial qualifier name to use */ 16 26 2 channel_name char (32), /* channel to attach (may have * convention) */ 16 27 2 dial_out_destination char (32), /* phone-no, etc. for dial out */ 16 28 2 baud_rate fixed bin, /* baud rate required */ 16 29 2 line_type fixed bin, /* line type (protocol) required */ 16 30 2 server_type char (32), /* expansion... */ 16 31 2 flags aligned, /* control flags */ 16 32 3 start bit (1) unaligned, /* start as server */ 16 33 3 stop bit (1) unaligned, /* stop as server */ 16 34 3 privileged_attach bit (1) unaligned, /* grab channel */ 16 35 3 release_channel bit (1) unaligned, /* release this channel */ 16 36 3 registered_server bit (1) unaligned, /* request to become a dial server with a registered qualifier */ 16 37 3 no_hangup bit (1) unaligned, /* release channel without hanging it up */ 16 38 3 release_dial_id bit (1) unaligned, /* stop as dial server, but keep current dial-ups */ 16 39 3 tandd_attach bit (1) unaligned, /* grab channel and force it not to listen */ 16 40 3 no_listen bit (1) unaligned, /* don't listen again at release */ 16 41 3 access_class_specified bit (1) unaligned, /* access_class is valid */ 16 42 3 privileged_server bit (1) unaligned, /* allow_dials/registered_server of range */ 16 43 3 pad bit (25) unaligned, 16 44 2 access_class bit (72); 16 45 16 46 16 47 /* END INCLUDE FILE ... dial_server_request.incl.pl1 */ 2643 2644 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 17 2 17 3 /* format: style4 */ 17 4 17 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 17 6 17 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 17 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 17 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 17 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 17 11* WAIT_DISCARD_WAKEUP 17 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 17 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 17 14**/ 17 15 17 16 /****^ HISTORY COMMENTS: 17 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 17 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 17 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 17 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 17 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 17 22* Add named constants for instance tags. 17 23* END HISTORY COMMENTS */ 17 24 17 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 17 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 17 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 17 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 17 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 17 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 17 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 17 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 17 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 17 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 17 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 17 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 17 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 17 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 17 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 17 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 17 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 17 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 17 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 17 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 17 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 17 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 17 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 17 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 17 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 17 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 17 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 17 52 ) fixed bin internal static options (constant); 17 53 17 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 17 55 /* names of ute.destroy_flag values */ 17 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 17 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 17 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 17 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 17 60 "wait remove"); /* -13 */ 17 61 17 62 /* Values for "cdte.state", typewriter state. */ 17 63 17 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 17 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 17 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 17 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 17 68 ) fixed bin internal static options (constant); 17 69 17 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 17 71 /* names of cdte.state values */ 17 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 17 73 17 74 /* Values for "cdte.in_use" and "ate.active" */ 17 75 17 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 17 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 17 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 17 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 17 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 17 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 17 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 17 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 17 84 ) fixed bin internal static options (constant); 17 85 17 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 17 87 /* names of ute.active values */ 17 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 17 89 17 90 17 91 /**** Values for ute.tag */ 17 92 17 93 dcl (TAG_INTERACTIVE init("a"), 17 94 TAG_UFT init("f"), 17 95 TAG_ABSENTEE init("m"), 17 96 TAG_PROXY init("p"), 17 97 TAG_DAEMON init("z") 17 98 ) char(1) int static options(constant); 17 99 17 100 17 101 /**** Following are constants used to indicate to the process termination 17 102* handler the reason for the process termination. They are used by 17 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 17 104* uc_ls_destroy_request_. */ 17 105 17 106 dcl ( 17 107 PT_FPE initial (1), 17 108 PT_LOGOUT initial (4), 17 109 PT_NEW_PROC_AUTH initial (13), 17 110 PT_HANGUP initial (20), 17 111 PT_SHUTDOWN initial (21), 17 112 PT_BUMP initial (22), 17 113 PT_ALARM initial (23), 17 114 PT_DETACH initial (24), 17 115 PT_UNBUMP initial (25), 17 116 PT_OPERATOR_TERMINATE initial (27), 17 117 PT_DESTROY_REQUEST initial (30), 17 118 PT_NEW_PROC_REQUEST initial (31) 17 119 ) fixed bin (17) internal static options (constant); 17 120 17 121 /**** Values for ute.preempted: 17 122* -1 user unbumped after term signal sent 17 123* 0 user unbumped; ignore alarm___ 17 124* 1 value internally used in load_ctl_ 17 125* 2 user bumped; when alarm___ comes in, send term signal 17 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 17 127* signals come in 17 128* 4 user bumped; process sick, so destroy without sending term signal 17 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 17 130* termsgnl). */ 17 131 17 132 dcl ( 17 133 PREEMPT_UNBUMP initial (-1), 17 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 17 135 PREEMPT_LOAD_CTL initial (1), 17 136 PREEMPT_BUMPED initial (2), 17 137 PREEMPT_TERM_SENT initial (3), 17 138 PREEMPT_BUMPED_NO_TERM initial (4), 17 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 17 140 ) fixed bin (17) internal static options(constant); 17 141 17 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 17 143 "unbumped", 17 144 "not bumped, ignore alarm___", 17 145 "load_ctl_", 17 146 "bumped", 17 147 "bumped, trm_ sent", 17 148 "bumped without trm_", 17 149 "bumped, termsgnl received"); 17 150 17 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 2644 2645 /* BEGIN INCLUDE FILE ... daemon_user_table.incl.pl1 */ 18 2 18 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 18 4 /* */ 18 5 /* The daemon_user_table has one entry per daemon. Daemons are logged in by */ 18 6 /* operator command or automatically. If they do any I/O, it is done via */ 18 7 /* the message coordinator. */ 18 8 /* */ 18 9 /* Programs using this include file must also use user_table_header.incl.pl1 */ 18 10 /* and user_table_entry.incl.pl1. */ 18 11 /* */ 18 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 18 13 18 14 18 15 /****^ HISTORY COMMENTS: 18 16* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 18 17* Initially coded from dutbl.incl.pl1. 18 18* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 18 19* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 18 20* A) Add use of ut_header common to all user control tables. 18 21* B) Corrected padding prior to first ute entry. 18 22* END HISTORY COMMENTS */ 18 23 18 24 18 25 dcl DUTBL_version_4 fixed bin int static init (4); /* version of this declaration */ 18 26 18 27 dcl dutp ptr automatic init (null); 18 28 18 29 dcl 1 dutbl based (dutp) aligned, /* Daemon user table */ 18 30 2 header like ut_header, /* Header common to all user tables. */ 18 31 18 32 2 active_count fixed bin, /* the count of active daemons managed by DUM_ */ 18 33 18 34 2 entry_pad (117) fixed bin, /* pad to 128 words */ 18 35 2 entry (0 refer (dutbl.current_size)) like ute; /* daemon user entries */ 18 36 18 37 /* END INCLUDE FILE ... daemon_user_table.incl.pl1 */ 2645 2646 /* BEGIN INCLUDE FILE ... line_types.incl.pl1 */ 19 2 19 3 /* Written November 10 1975 by Paul Green */ 19 4 /* Modified October 1978 by Larry Johnson to include line_type_names */ 19 5 /* Modified 12/19/78 by J. Stern to add POLLED_VIP line type */ 19 6 /* Modified 9/27/79 by J. Stern to add X25LAP line type */ 19 7 /* Modified Spring 1981 by Charles Hornig to add HDLC line type */ 19 8 /* Modified May 1981 by Robert Coren to add COLTS line type */ 19 9 /* Modified September 1984 by Robert Coren to correctly count VIP as a synchronous line type */ 19 10 19 11 19 12 /****^ HISTORY COMMENTS: 19 13* 1) change(86-02-25,Negaret), approve(87-07-13,MCR7679), 19 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 15* Add a DSA line type. 19 16* 2) change(87-03-17,Beattie), approve(87-07-13,MCR7656), 19 17* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 18* Add HASP_OPR to identify HASP workstation consoles with login service. 19 19* END HISTORY COMMENTS */ 19 20 19 21 19 22 declare (LINE_MC initial (-2), 19 23 LINE_TELNET initial (-1), 19 24 LINE_UNKNOWN initial (0), 19 25 LINE_ASCII initial (1), 19 26 LINE_1050 initial (2), 19 27 LINE_2741 initial (3), 19 28 LINE_ARDS initial (4), 19 29 LINE_SYNCH initial (5), 19 30 LINE_G115 initial (6), 19 31 LINE_BSC initial (7), 19 32 LINE_ETX initial (8), 19 33 LINE_VIP initial (9), 19 34 LINE_ASYNC1 initial (10), 19 35 LINE_ASYNC2 initial (11), 19 36 LINE_ASYNC3 initial (12), 19 37 LINE_SYNC1 initial (13), 19 38 LINE_SYNC2 initial (14), 19 39 LINE_SYNC3 initial (15), 19 40 LINE_POLLED_VIP initial (16), 19 41 LINE_X25LAP initial (17), 19 42 LINE_HDLC initial (18), 19 43 LINE_COLTS initial (19), 19 44 LINE_DSA initial (20), 19 45 LINE_HASP_OPR initial (21) 19 46 ) fixed bin internal static options (constant); 19 47 19 48 dcl max_line_type fixed bin int static options (constant) init (21); 19 49 19 50 declare n_sync_line_types fixed bin int static options (constant) init (10); 19 51 19 52 declare sync_line_type (10) fixed bin int static options (constant) init (5, 6, 7, 9, 13, 14, 15, 16, 17, 18); 19 53 19 54 dcl line_types (-2:21) char (16) int static options (constant) init ( 19 55 "MC", /* -2 */ 19 56 "TELNET", /* -1 */ 19 57 "none", /* 0 */ 19 58 "ASCII", /* 1 */ 19 59 "1050", /* 2 */ 19 60 "2741", /* 3 */ 19 61 "ARDS", /* 4 */ 19 62 "Sync", /* 5 */ 19 63 "G115", /* 6 */ 19 64 "BSC", /* 7 */ 19 65 "202ETX", /* 8 */ 19 66 "VIP", /* 9 */ 19 67 "ASYNC1", /* 10 */ 19 68 "ASYNC2", /* 11 */ 19 69 "ASYNC3", /* 12 */ 19 70 "SYNC1", /* 13 */ 19 71 "SYNC2", /* 14 */ 19 72 "SYNC3", /* 15 */ 19 73 "POLLED_VIP", /* 16 */ 19 74 "X25LAP", /* 17 */ 19 75 "HDLC", /* 18 */ 19 76 "COLTS", /* 19 */ 19 77 "DSA", /* 20 */ 19 78 "HASP_OPR"); /* 21 */ 19 79 19 80 /* END INCLUDE FILE ... line_types.incl.pl1 */ 2646 2647 /* BEGIN INCLUDE FILE ... pnt_entry.incl.pl1 */ 20 2 20 3 /* Modified 790702 by C. Hornig for MSF PNT */ 20 4 /* Modified 84-07-18 BIM for V2, aim ranges, long passwords. */ 20 5 /* Modified 84-09-25 for operator attribute... -E. A. Ranzenbach */ 20 6 /* Modified 85-03-05 E. Swenson for user_validated_time */ 20 7 20 8 /**** The ms_table_mgr_ has fixed sized entries, for now. 20 9* The presence of a version field and some pad allow 20 10* us to have incrementally-upgraded PNTE's in a future change. 20 11**/ 20 12 20 13 /**** The conversion to V2 copies the existing encrypted passwords. 20 14* Since the 32 character scrambling algorithm will not give the 20 15* same results, the short_XX flags indicate that the old scrambler 20 16* should be used. The short flags are automatically turned off 20 17* by calls to update the password with the long-scrambled form. */ 20 18 20 19 /* format: style4,insnl,delnl */ 20 20 20 21 declare pntep pointer automatic; 20 22 declare 1 pnt_entry based (pntep) aligned, /* declaration of a single PNT entry */ 20 23 2 version fixed bin, 20 24 2 private aligned, 20 25 3 pw_flags aligned, 20 26 4 short_pw bit (1) unal, /* ON password is eight-character form */ 20 27 4 short_network_pw bit (1) unal, /* ON card password is eight character form. */ 20 28 3 password character (32), /* person's password */ 20 29 3 network_password character (32), 20 30 2 public, 20 31 3 user_id character (32), /* user ID (for alias entries */ 20 32 3 alias character (8), 20 33 3 default_project character (16), /* user's default project */ 20 34 3 flags, /* one-bit flags */ 20 35 4 has_password bit (1) unaligned, 20 36 4 has_network_password bit (1) unaligned, 20 37 4 trap bit (1) unal, /* If this password is used, holler */ 20 38 4 lock bit (1) unal, /* prevent login if on. */ 20 39 4 nochange bit (1) unal, /* user cannot change password */ 20 40 4 must_change bit unal, /* user must change password at next login */ 20 41 4 pw_time_lock bit (1) unal, /* if password has a time lock */ 20 42 4 generate_pw bit (1) unal, /* ON if we give new pw, OFF lets user select new pw */ 20 43 4 last_bad_pw_reported bit (1) unal, /* ON if user has NOT been told about last bad password */ 20 44 4 operator bit (1) unal, /* ON if user can login as an operator... */ 20 45 4 pads bit (26) unal, 20 46 3 n_good_pw fixed bin, /* Number of good passwords */ 20 47 3 n_bad_pw fixed bin, /* Number of wrong passwords */ 20 48 3 n_bad_pw_since_good fixed bin, /* Number of wrong passwords since good */ 20 49 3 time_pw_changed fixed bin (71), /* When password was modified by user */ 20 50 20 51 3 time_last_good_pw fixed bin (71), 20 52 3 time_last_bad_pw fixed bin (71), /* When pw was last given wrong */ 20 53 3 bad_pw_term_id character (4), /* where bad password from */ 20 54 3 bad_pw_line_type fixed bin (17), /* ... */ 20 55 3 bad_pw_term_type character (32), 20 56 3 password_timelock fixed bin (71), /* Password is locked up until here */ 20 57 3 person_authorization (2) bit (72), /* authorization of this person */ 20 58 3 default_person_authorization bit (72), /* default authorization of this person */ 20 59 3 audit bit (36), /* audit flags for person */ 20 60 3 pad1 bit (36), /* pad to even word boundary */ 20 61 3 user_validated_time fixed bin (71), /* time this PNT entry was last validated by an administrator */ 20 62 2 pad (80 - 64) bit (36) aligned; 20 63 20 64 declare PNT_ENTRY_VERSION_2 fixed bin init (2) int static options (constant); 20 65 20 66 /* END INCLUDE FILE ... pnte.incl.pl1 */ 2647 2648 2649 dcl 1 pnte structure aligned like pnt_entry; 2650 /* BEGIN INCLUDE FILE ... sat.incl.pl1 */ 21 2 21 3 21 4 21 5 21 6 /****^ HISTORY COMMENTS: 21 7* 1) change(86-09-05,Parisek), approve(87-06-17,MCR7570), 21 8* audit(87-06-15,Hirneisen), install(87-08-06,MR12.1-1066): 21 9* Expand comment line of project.state to include the renamed state (state = 21 10* 3). 21 11* END HISTORY COMMENTS */ 21 12 21 13 21 14 21 15 /* Modified 740723 by PG to add AIM info */ 21 16 /* Modified 750604 by T. Casey to add priority scheduler parameters */ 21 17 /* Modified May 1976 by T. Casey to add project cutoff limits */ 21 18 /* Modified May 1978 by T. Casey to add pdir_quota */ 21 19 /* Modified November 1978 by T. Casey to add max_(fore back)ground and abs_foreground_cpu_limit */ 21 20 /* Modified July 1979 by J. N. R. Barnecut to support multiple rate structures. (UNCA) */ 21 21 /* Modified January 1982 by E. N. Kittlitz for user_attributes.incl.pl1 changes */ 21 22 /* Modified 1984-07-05 BIM range of authorizations, version 3 */ 21 23 21 24 dcl (SAT_version init (3), /* version 2 of this declaration */ 21 25 21 26 SAT_header_lth init (466), /* length in words of SAT header */ 21 27 SAT_entry_lth init (80), /* length in words of SAT entry */ 21 28 21 29 SAT_project_name_length init (9) /* proper length of project.project_id */ 21 30 ) fixed bin internal static options (constant); 21 31 21 32 dcl 1 sat based (satp) aligned, 21 33 22 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 22 2 22 3 /* the "author" items must always be the first ones in the table. The 22 4* module which moves the converted table to the System Control process 22 5* fills in these data items and assumes them to be at the head of the segment 22 6* regardless of the specific table's actual declaration. The variables 22 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 22 8* respectively. For tables installed in multiple processes, these 22 9* are to be used to lock out multiple installations. */ 22 10 22 11 /* Lock should be used as a modification lock. Since, in general, 22 12* entries may not be moved in system tables, even by installations, 22 13* it is sufficient for only installers and programs that change threads 22 14* to set or respect the lock. Simply updating data in an entry 22 15* requires no such protection. 22 16* 22 17* Last_install_time is used by readers of system tables to detect 22 18* installations or other serious modifications. By checking it before 22 19* and after copying a block of data, they can be protected against 22 20* modifications. 22 21* 22 22* Modules that set the lock should save proc_group_id, and then 22 23* put their group id there for the time they hold the lock. 22 24* if they do not actually install the, they should restore the group id. 22 25**/ 22 26 22 27 2 author aligned, /* validation data about table's author */ 22 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 22 29 3 lock bit (36), /* installation lock */ 22 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 22 31 3 update_authorization bit (1) unal, /* update only authorizations */ 22 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 22 33 3 pad bit (33) unaligned, 22 34 3 last_install_time fixed bin (71), 22 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 22 36 3 w_dir char (64), /* author's working directory */ 22 37 22 38 /* END INCLUDE FILE author.incl.pl1 */ 21 34 21 35 2 max_size fixed bin, /* max number of entries table can grow */ 21 36 2 current_size fixed bin, /* current size of table (in entries) */ 21 37 2 version fixed bin, /* version number of table (word 32) */ 21 38 2 freep fixed bin, /* free chain ptr. 0 if no free entries */ 21 39 2 n_projects fixed bin, /* number of entries actually used */ 21 40 2 pad_was_max_users bit (36) aligned, 21 41 2 max_units fixed bin, /* maximum number of login-units per session */ 21 42 2 pad_was_max_prim bit (36) aligned, 21 43 2 uwt_size fixed bin, /* size of User Weight Table */ 21 44 2 uwt (24) aligned, /* User Weight Table */ 21 45 3 initproc char (64) unaligned, /* user's initial procedure */ 21 46 3 units fixed bin, /* weight of initial procedure */ 21 47 2 system_admin (2) char (32) unal, /* system administrator ID */ 21 48 2 pad1 (4) fixed bin, /* padding to 466 wds */ 21 49 2 project (3258), /* The SAT entries. 255K segment. */ 21 50 3 pad (80) fixed bin; /* each entry is 80 words long */ 21 51 21 52 21 53 dcl 1 project based (satep) aligned, /* declaration of a single SAT entry */ 21 54 2 state fixed bin, /* state 1 = normal, 0 = free, 2 = deleted, 3 = renamed */ 21 55 2 project_id char (12) unaligned, /* project's name */ 21 56 2 project_dir char (64) unaligned, /* project's directory */ 21 57 2 pdt_ptr pointer, /* pointer to current PDT */ 21 58 2 max_users fixed bin, /* maximum number of users from project */ 21 59 2 n_users fixed bin, /* current number */ 21 60 2 at like user_attributes aligned, /* include user_attributes.incl.pl1 */ 21 61 2 admin (4) aligned, /* list of project's administrators */ 21 62 3 userid char (30) unal, /* administrator's user-id (personid.projectid) */ 21 63 3 pad char (2) unal, 21 64 2 cutoff char (1), /* if project is cut off, why. */ 21 65 2 min_ring fixed bin, /* lowest ring for project */ 21 66 2 max_ring fixed bin, /* highest ring for project */ 21 67 2 alias char (8) unal, /* project alias */ 21 68 2 group char (8) unal, /* default group for this project */ 21 69 2 grace_max fixed bin, /* maximum bump grace */ 21 70 2 audit bit (36), /* audit flags for project */ 21 71 2 project_authorization (2) bit (72), /* authorization of this project */ 21 72 2 groups (2) char (8) unal, /* authorized groups for this project */ 21 73 2 days_to_cutoff fixed bin (17) unaligned, /* these figures are as of last running of daily_summary */ 21 74 2 pct_balance fixed bin (17) unaligned, /* they are used for warning message printing only */ 21 75 2 dollars_to_cutoff float bin, /* and are not to be taken as up-to-date figures */ 21 76 2 pdir_quota fixed bin (17) unaligned, /* max pdir quota allowed for project */ 21 77 2 max_foreground fixed bin (9) unsigned unaligned, /* max simultaneous foreground and background */ 21 78 2 max_background fixed bin (9) unsigned unaligned, /* processes that a user on this project can have */ 21 79 2 abs_foreground_cpu_limit fixed bin (17) unaligned, /* time limit on foreground absentee jobs */ 21 80 2 rs_number fixed bin (9) unsigned unaligned, /* rate structure number (0=default rates ) */ 21 81 2 satpad1 fixed bin (9) unsigned unaligned, 21 82 2 satpad (1) bit (36) aligned, /* pad to 80 words */ 21 83 2 chain fixed bin; /* if free entry, chain */ 21 84 21 85 /* END INCLUDE FILE ... sat.incl.pl1 */ 2650 2651 2652 dcl satep ptr; 2653 /* BEGIN INCLUDE FILE ... set_term_type_info.incl.pl1 */ 23 2 /* Created 7/18/77 by Robert Coren */ 23 3 /* Defines info structure for set_term_type order */ 23 4 23 5 dcl stti_version_1 fixed bin int static options (constant) init (1); 23 6 dcl sttip ptr; 23 7 23 8 dcl 1 set_term_type_info aligned based (sttip), 23 9 2 version fixed bin, 23 10 2 name char (32) unal, 23 11 2 flags unal, 23 12 3 send_initial_string bit (1), 23 13 3 set_modes bit (1), 23 14 3 ignore_line_type bit (1), 23 15 3 mbz bit (33); 23 16 23 17 /* END INCLUDE FILE ... set_term_type_info.incl.pl1 */ 2653 2654 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 24 2 24 3 24 4 /****^ HISTORY COMMENTS: 24 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 24 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 24 7* Added sl_info structure and associated named constants for use in calling 24 8* sys_log_$general. 24 9* END HISTORY COMMENTS */ 24 10 24 11 24 12 /* format: style4 */ 24 13 24 14 dcl ( 24 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 24 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 24 17 SL_TYPE init (-1), /* type message */ 24 18 SL_LOG_SILENT init (0), /* log message */ 24 19 SL_LOG init (1), /* log & type message */ 24 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 24 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 24 22 ) fixed bin internal static options (constant); 24 23 24 24 dcl 1 sl_info aligned automatic, 24 25 2 version char(8), /* structure version */ 24 26 2 arg_list_ptr ptr, /* arg_list with values */ 24 27 2 loc, 24 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 24 29 /* These flags control where the corresponding data item is found.*/ 24 30 /* -1: data appears in the corresponding structure element below */ 24 31 /* 0: data is not present anywhere */ 24 32 /* +N: data is Nth item in argument list pointed to by */ 24 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 24 34 /* corresponding structure element. */ 24 35 /* if data = +N: */ 24 36 /* argN is data_ptr, argN+1 is data_len */ 24 37 /* if ioa_msg = +N: */ 24 38 /* argN+1, ... argLAST are arguments substituted into the */ 24 39 /* ioa_msg control string. The formatted msg is returned. */ 24 40 2 flags, 24 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 24 42 3 flags_pad bit(35) unal, 24 43 2 mode fixed bin, /* as-mode, command-mode */ 24 44 2 severity fixed bin, /* error severity */ 24 45 2 code fixed bin(35), /* error table code */ 24 46 2 caller char(65) varying, /* caller refname$entryname*/ 24 47 2 data, /* binary data ptr/length */ 24 48 3 data_ptr ptr, 24 49 3 data_lth fixed bin(21), 24 50 2 class char(10) varying, /* binary data class */ 24 51 2 ioa_msg char(500) varying; /* formatted message text */ 24 52 24 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 24 54 /* */ 24 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 24 56 /* their data types should be as shown in the structure above, except that */ 24 57 /* character strings should be char(*) nonvarying. */ 24 58 /* */ 24 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 24 60 24 61 /* value for sl_info.version */ 24 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 24 63 24 64 /* values for sl_info.mode */ 24 65 dcl (SL_INFO_as_mode init(1), 24 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 24 67 24 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 24 69 dcl (SL_INFO_arg_given_in_structure init(-1), 24 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 24 71 24 72 24 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 24 74 /* */ 24 75 /* The following static structures are commonly used in the Login Server */ 24 76 /* user control software. */ 24 77 /* */ 24 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 24 79 24 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 24 81 24 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 24 83 2 version char(8) init ("sl_info1"), 24 84 2 arg_list_ptr ptr init (null), 24 85 2 loc, 24 86 3 (mode init (-1), 24 87 severity init ( 1), 24 88 code init ( 2), 24 89 caller init (-1), 24 90 data init ( 0), 24 91 class init ( 0), 24 92 ioa_msg init ( 3)) fixed bin, 24 93 2 flags, 24 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 24 95 3 flags_pad bit(35) unal init ("0"b), 24 96 2 mode fixed bin init ( 1), 24 97 2 severity fixed bin init ( 0), 24 98 2 code fixed bin(35) init ( 0), 24 99 2 caller char(65) varying init (""), 24 100 2 data, 24 101 3 data_ptr ptr init (null), 24 102 3 data_lth fixed bin(21) init ( 0), 24 103 2 class char(10) varying init (""), 24 104 2 ioa_msg char(500) varying init (""); 24 105 24 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 24 107 24 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 24 109 2 version char(8) init ("sl_info1"), 24 110 2 arg_list_ptr ptr init (null), 24 111 2 loc, 24 112 3 (mode init (-1), 24 113 severity init ( 1), 24 114 code init ( 0), 24 115 caller init (-1), 24 116 data init ( 0), 24 117 class init ( 0), 24 118 ioa_msg init ( 2)) fixed bin, 24 119 2 flags, 24 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 24 121 3 flags_pad bit(35) unal init ("0"b), 24 122 2 mode fixed bin init ( 1), 24 123 2 severity fixed bin init ( 0), 24 124 2 code fixed bin(35) init ( 0), 24 125 2 caller char(65) varying init (""), 24 126 2 data, 24 127 3 data_ptr ptr init (null), 24 128 3 data_lth fixed bin(21) init ( 0), 24 129 2 class char(10) varying init (""), 24 130 2 ioa_msg char(500) varying init (""); 24 131 24 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 24 133 24 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 24 135 2 version char(8) init ("sl_info1"), 24 136 2 arg_list_ptr ptr init (null), 24 137 2 loc, 24 138 3 (mode init (-1), 24 139 severity init ( 1), 24 140 code init ( 0), 24 141 caller init (-1), 24 142 data init ( 0), 24 143 class init ( 0), 24 144 ioa_msg init ( 2)) fixed bin, 24 145 2 flags, 24 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 24 147 3 flags_pad bit(35) unal init ("0"b), 24 148 2 mode fixed bin init ( 1), 24 149 2 severity fixed bin init ( 0), 24 150 2 code fixed bin(35) init ( 0), 24 151 2 caller char(65) varying init (""), 24 152 2 data, 24 153 3 data_ptr ptr init (null), 24 154 3 data_lth fixed bin(21) init ( 0), 24 155 2 class char(10) varying init (""), 24 156 2 ioa_msg char(500) varying init (""); 24 157 24 158 24 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 24 160 24 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 24 162 2 version char(8) init ("sl_info1"), 24 163 2 arg_list_ptr ptr init (null), 24 164 2 loc, 24 165 3 (mode init (-1), 24 166 severity init ( 1), 24 167 code init ( 2), 24 168 caller init (-1), 24 169 data init ( 0), 24 170 class init ( 0), 24 171 ioa_msg init ( 4)) fixed bin, 24 172 2 flags, 24 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 24 174 3 flags_pad bit(35) unal init ("0"b), 24 175 2 mode fixed bin init ( 1), 24 176 2 severity fixed bin init ( 0), 24 177 2 code fixed bin(35) init ( 0), 24 178 2 caller char(65) varying init (""), 24 179 2 data, 24 180 3 data_ptr ptr init (null), 24 181 3 data_lth fixed bin(21) init ( 0), 24 182 2 class char(10) varying init (""), 24 183 2 ioa_msg char(500) varying init (""); 24 184 24 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 24 186 24 187 dcl 1 sl_info_code_msg aligned int static options(constant), 24 188 2 version char(8) init ("sl_info1"), 24 189 2 arg_list_ptr ptr init (null), 24 190 2 loc, 24 191 3 (mode init (-1), 24 192 severity init (-1), 24 193 code init ( 1), 24 194 caller init (-1), 24 195 data init ( 0), 24 196 class init ( 0), 24 197 ioa_msg init ( 2)) fixed bin, 24 198 2 flags, 24 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 24 200 3 flags_pad bit(35) unal init ("0"b), 24 201 2 mode fixed bin init ( 1), 24 202 2 severity fixed bin init ( 0), 24 203 2 code fixed bin(35) init ( 0), 24 204 2 caller char(65) varying init (""), 24 205 2 data, 24 206 3 data_ptr ptr init (null), 24 207 3 data_lth fixed bin(21) init ( 0), 24 208 2 class char(10) varying init (""), 24 209 2 ioa_msg char(500) varying init (""); 24 210 24 211 24 212 /* Syntax: call Trace (ioa_ctl, args); */ 24 213 24 214 dcl 1 sl_info_msg aligned int static options(constant), 24 215 2 version char(8) init ("sl_info1"), 24 216 2 arg_list_ptr ptr init (null), 24 217 2 loc, 24 218 3 (mode init (-1), 24 219 severity init (-1), 24 220 code init ( 0), 24 221 caller init (-1), 24 222 data init ( 0), 24 223 class init ( 0), 24 224 ioa_msg init ( 1)) fixed bin, 24 225 2 flags, 24 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 24 227 3 flags_pad bit(35) unal init ("0"b), 24 228 2 mode fixed bin init ( 1), 24 229 2 severity fixed bin init ( 0), 24 230 2 code fixed bin(35) init ( 0), 24 231 2 caller char(65) varying init (""), 24 232 2 data, 24 233 3 data_ptr ptr init (null), 24 234 3 data_lth fixed bin(21) init ( 0), 24 235 2 class char(10) varying init (""), 24 236 2 ioa_msg char(500) varying init (""); 24 237 24 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 2654 2655 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 25 2 25 3 /* Created 5/25/77 by J. Stern */ 25 4 25 5 25 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 25 7 2 version fixed bin, /* version number of this sturcture */ 25 8 2 id char (4) unaligned, /* terminal id from answerback */ 25 9 2 term_type char (32) unaligned, /* terminal type name */ 25 10 2 line_type fixed bin, /* line type number */ 25 11 2 baud_rate fixed bin, 25 12 2 reserved (4) fixed bin; /* reserved for future use */ 25 13 25 14 25 15 dcl terminal_info_ptr ptr; 25 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 25 17 25 18 25 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 2655 2656 /* BEGIN INCLUDE FILE...tty_access_class.incl.pl1 */ 26 2 26 3 26 4 26 5 /****^ HISTORY COMMENTS: 26 6* 1) change(85-07-29,Swenson), approve(86-08-13,MCR7512), 26 7* audit(86-08-13,EJSharpe), install(86-09-08,MR12.0-1150): 26 8* Modified to align an unaligned bit value to get around compiler's padded 26 9* reference bug. 26 10* END HISTORY COMMENTS */ 26 11 26 12 26 13 /* Defines structure used by "get_required_access_class" control order */ 26 14 26 15 /* History: 26 16* 1983-04-25, Robert Coren. 26 17**/ 26 18 26 19 dcl tty_access_class_ptr pointer; 26 20 26 21 dcl 1 tty_access_class aligned based (tty_access_class_ptr), 26 22 2 access_class bit (72), /* access class assigned to the channel */ 26 23 2 access_class_set bit (1) aligned; /* "1"b => there is an access class associated with the channel */ 26 24 26 25 /* NOTE: if access_class_set = "0"b, access_class field is meaningless */ 26 26 26 27 /* END INCLUDE FILE...tty_access_class.incl.pl1 */ 2656 2657 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 27 2 27 3 27 4 /****^ HISTORY COMMENTS: 27 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 27 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 27 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 27 8* attribute switches. 27 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 27 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 27 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 27 12* be deleted. 27 13* B) Add constants identifying attributes that can be changed by user at 27 14* login, etc. 27 15* END HISTORY COMMENTS */ 27 16 27 17 27 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 27 19 27 20 /* format: style4 */ 27 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 27 22 (2 administrator bit (1), /* 1 system administrator privileges */ 27 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 27 24 2 nobump bit (1), /* 2 user cannot be bumped */ 27 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 27 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 27 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 27 28* . of same project (distinct from "nobump") */ 27 29 2 nolist bit (1), /* 7 don't list user on "who" */ 27 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 27 31 2 multip bit (1), /* 9 user may have several processes */ 27 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 27 33 2 brief bit (1), /* 11 no login or logout message */ 27 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 27 35 2 vhomedir bit (1), /* 13 user may change homedir */ 27 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 27 37 2 sb_ok bit (1), /* 15 user may be standby */ 27 38 2 pm_ok bit (1), /* 16 user may be primary */ 27 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 27 40 2 daemon bit (1), /* 18 user may login as daemon */ 27 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 27 42 2 no_warning bit (1), /* 20 no warning message */ 27 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 27 44* . in PDT: this user has an individual load control group */ 27 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 27 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 27 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 27 48 2 pad bit (12)) unaligned; 27 49 27 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 27 51 ("none", /* 0 */ 27 52 "administrator", /* 1 */ 27 53 "primary_line", /* 2 */ 27 54 "nobump", /* 3 */ 27 55 "guaranteed_login", /* 4 */ 27 56 "anonymous", /* 5 */ 27 57 "nopreempt", /* 6 */ 27 58 "nolist", /* 7 */ 27 59 "dialok", /* 8 */ 27 60 "multip", /* 9 */ 27 61 "bumping", /* 10 */ 27 62 "brief", /* 11 */ 27 63 "vinitproc", /* 12 */ 27 64 "vhomedir", /* 13 */ 27 65 "nostartup", /* 14 */ 27 66 "no_secondary", /* 15 */ 27 67 "no_prime", /* 16 */ 27 68 "no_eo", /* 17 */ 27 69 "daemon", /* 18 */ 27 70 "", /* 19 vdim OBSOLETE */ 27 71 "no_warning", /* 20 */ 27 72 "igroup", /* 21 */ 27 73 "save_pdir", /* 22 */ 27 74 "disconnect_ok", /* 23 */ 27 75 "save_on_disconnect"); /* 24 */ 27 76 27 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 27 78 ("null", /* 0 */ 27 79 "admin", /* 1 */ 27 80 "", "", /* 2 - 3 */ 27 81 "guar", /* 4 */ 27 82 "anon", /* 5 */ 27 83 "", "", /* 6 - 7 */ 27 84 "dial", /* 8 */ 27 85 "multi_login", /* 9 */ 27 86 "preempting", /* 10 */ 27 87 "", /* 11 */ 27 88 "v_process_overseer", /* 12 */ 27 89 "v_home_dir", /* 13 */ 27 90 "no_start_up", /* 14 */ 27 91 "no_sec", /* 15 */ 27 92 "no_primary", /* 16 */ 27 93 "no_edit_only", /* 17 */ 27 94 "op_login", /* 18 */ 27 95 "", /* 19 */ 27 96 "nowarn", /* 20 */ 27 97 "", "", "", /* 21 - 23 */ 27 98 "save"); /* 24 */ 27 99 27 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 27 101 options(constant) init("000000000010000000010000000000000000"b); 27 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 27 103 27 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 27 105 options(constant) init("000000000010000000010000000000000000"b); 27 106 /* PDT value for (brief, no_warning) is default */ 27 107 27 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 27 109 options(constant) init("000100000110010000010000000000000000"b); 27 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 27 111 28 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 28 2 28 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 4 /* */ 28 5 /* This include file describes the attributes of an absentee job. It is */ 28 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 28 7 /* and PIT.incl.pl1. */ 28 8 /* */ 28 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 28 10 28 11 /****^ HISTORY COMMENTS: 28 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 28 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 28 14* Separated abs_attributes from the request structure 28 15* (abs_message_format.incl.pl1) so that the identical structure could be 28 16* used in the ute structure (user_table_entry.incl.pl1). 28 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 28 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 28 19* Added ABS_ATTRIBUTE_NAMES array. 28 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 28 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 28 22* Added the no_start_up flag. SCP6367 28 23* END HISTORY COMMENTS */ 28 24 28 25 dcl 1 user_abs_attributes aligned based, 28 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 28 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 28 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 28 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 28 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 28 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 28 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 28 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 28 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 28 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 28 36 2 attributes_pad bit (26) unaligned; 28 37 28 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 28 39 "restartable", 28 40 "user_deferred_until_time", 28 41 "proxy", 28 42 "set_bit_cnt", 28 43 "time_in_gmt", 28 44 "user_deferred_indefinitely", 28 45 "secondary_ok", 28 46 "truncate_absout", 28 47 "restarted", 28 48 "no_start_up"); 28 49 28 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 28 51 27 112 27 113 27 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 2657 2658 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 29 2 29 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 29 4 /* */ 29 5 /* This include file requires that the user include */ 29 6 /* user_attributes.incl.pl1 as well. It also includes */ 29 7 /* abs_attributes.incl.pl1 itself. */ 29 8 /* */ 29 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 29 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 29 11 /* */ 29 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 29 13 29 14 /****^ HISTORY COMMENTS: 29 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 29 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 29 17* This comment for hcom. 29 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 29 19* anstbl.incl.pl1, and dutbl.incl.pl1. 29 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 29 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 29 22* 84-07-12 BIM added min_process_authorization 29 23* 84-12-31 Keith Loepere added pdir_dir_quota 29 24* 85-01-16 by E. Swenson to add ute.session_uid 29 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 29 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 29 27* Added fields for DSA login server support. 29 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 29 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 29 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 29 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 29 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 29 33* Added disconnection_rel_minutes. 29 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 29 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 29 36* Changed structure under ute.abs_attributes to use like structure in 29 37* abs_attributes.incl.pl1. This allows the same attributes to be used 29 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 29 39* file. 29 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 29 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 29 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 29 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 29 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 29 45* A) Global reorganization to locate things by type of data. 29 46* B) Eliminate ute.uflags.logged_in. 29 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 29 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 29 49* A) Reduced overlength person and project fields to proper length. 29 50* B) Adjusted dialed-console section to begin on even word boundary. 29 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 29 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 29 53* Add ute.line_type. 29 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 29 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 29 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 29 57* for the storage. SCP6367 29 58* END HISTORY COMMENTS */ 29 59 29 60 /* format: style4 */ 29 61 29 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 29 63 /* */ 29 64 /* Each of the named sections below defines a type of data. Typing comes */ 29 65 /* from data associated with the ute entry itself, with the person, with */ 29 66 /* login argument data, from the main user of the data (eg, dialup_, */ 29 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 29 68 /* and is an even number of words long. The total structure is 300 decimal */ 29 69 /* words long. */ 29 70 /* */ 29 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 29 72 29 73 29 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 29 75 29 76 dcl utep pointer automatic init (null); 29 77 29 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 29 79 29 80 /* Variables which give state of this entry */ 29 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 29 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 29 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 29 84 2 next_free fixed bin, /* points to previous free entry */ 29 85 29 86 /* Information user gave about person_id associated with this entry. */ 29 87 2 person char (24) unal, /* user's name */ 29 88 2 project char (12) unal, /* project of absentee user */ 29 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 29 90 2 tag_pad bit (27) unal, 29 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 29 92 2 login_flags, /* flags for login data */ 29 93 3 cpw bit (1) unal, /* flag for wish to change password */ 29 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 29 95 3 special_pw unal, /* dial or slave */ 29 96 4 dial_pw bit (1) unal, /* true if dial -user */ 29 97 4 slave_pw bit (1) unal, /* true if slave -user */ 29 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 29 99 3 cda bit (1) unal, /* flag to change default authorization */ 29 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 29 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 29 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 29 103 3 pw_pad bit (25) unal, /* spare parts */ 29 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 29 105 /* Must remain last in pw_flags so it does not */ 29 106 /* appear in PW_FLAG_VALUES array below. */ 29 107 2 generated_pw char (8) unal, /* user must type this as new password */ 29 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 29 109 2 process_authorization bit (72), /* access_authorization of this process */ 29 110 29 111 /* Information user gave about process associated with this entry. */ 29 112 2 outer_module char (32) unal, /* Name of console dim */ 29 113 2 home_dir char (64) unal, /* initial home directory */ 29 114 2 init_proc char (64) unal, /* name of login responder */ 29 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 29 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 29 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 29 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 29 119 2 initial_ring fixed bin, /* ring process will be started in */ 29 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 29 121 2 ln_args fixed bin, /* length of string containing arguments */ 29 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 29 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 29 124 29 125 /* Most of the following information is relevant only to absentee processes */ 29 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 29 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 29 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 29 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 29 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 29 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 29 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 29 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 29 134* (but see uflags.adjust_abs_q_no). */ 29 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 29 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 29 137 2 abs_flags, 29 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 29 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 29 140 3 abs_flags_pad bit (34) unal, 29 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 29 142 2 sender char (32) unal, /* name of RJE station that job is from */ 29 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 29 144 2 proxy_project char (9) unal, 29 145 2 proxy_project_pad char (3) unal, 29 146 2 abs_pad fixed bin, 29 147 29 148 /* Information about process actually created */ 29 149 2 proc_id bit (36), /* process id of absentee process */ 29 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 29 151 2 process_authorization_range (2) bit (72) aligned, 29 152 2 audit bit (36), /* audit flags for user */ 29 153 2 lot_size fixed bin, /* Size of linkage offset table */ 29 154 2 kst_size fixed bin, /* Size of process known segment table */ 29 155 2 cls_size fixed bin, /* Size of process combined linkage */ 29 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 29 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 29 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 29 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 29 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 29 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 29 162 2 pdir_pad fixed bin(17) unal, 29 163 2 process_pad fixed bin, 29 164 29 165 /* Information about primary terminal associated with this entry */ 29 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 29 167 2 terminal_type char (32) unaligned, /* terminal type */ 29 168 2 line_type fixed bin, /* line type */ 29 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 29 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 29 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 29 172 29 173 /* Variables useful for dialed terminals */ 29 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 29 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 29 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 29 177 2 dial_server_flags, 29 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 29 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 29 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 29 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 29 182 29 183 /* Information about usage/accounting. Device usage meters are in a 29 184* separate segment, "devtab" */ 29 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 29 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 29 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 29 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 29 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 29 190 2 last_update_time fixed bin (71), /* time of last account update */ 29 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 29 192 2 ndevices fixed bin, /* Count of attached devices */ 29 193 2 device_head fixed bin, /* Table index of head of device chain */ 29 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 29 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 29 196 2 rs_number_pad bit(30) unal, 29 197 2 usage_pad fixed bin, 29 198 29 199 /* Information for dialup_ (control variables). */ 29 200 2 event fixed bin (71), /* event associated with channel or user manager */ 29 201 2 uprojp ptr, /* ptr to user project sat entry */ 29 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 29 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 29 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 29 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 29 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 29 207 2 count fixed bin, /* counter for logins and dialups */ 29 208 2 n_processes fixed bin, /* number of processes created in this session */ 29 209 2 lock_value fixed bin, /* number of locks set for this entry */ 29 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 29 211 2 login_code char (8) unal, /* login command from LOGIN line */ 29 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 29 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 29 214 2 logout_type char (4) unal, /* type of logout */ 29 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 29 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 29 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 29 218 2 work_class fixed bin, /* work class used by priority scheduler */ 29 219 2 group char (8) unal, /* party group identifier */ 29 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 29 221 29 222 2 uflags, /* Miscellaneous flags */ 29 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 29 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 29 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 29 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 29 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 29 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 29 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 29 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 29 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 29 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 29 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 29 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 29 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 29 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 29 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 29 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 29 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 29 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 29 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 29 242 3 uflags_pad bit (17) unal, 29 243 29 244 /* Information used by load_ctl_ for the process */ 29 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 29 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 29 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 29 248 29 249 29 250 /* Information for login server */ 29 251 2 login_server_info, 29 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 29 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 29 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 29 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 29 256 3 process_id bit (36) aligned, /* process_id of login server */ 29 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 29 258 29 259 /* values for ute.process_type */ 29 260 29 261 dcl (PT_INTERACTIVE initial (1), 29 262 PT_ABSENTEE initial (2), 29 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 29 264 29 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 29 266 "INVALID-TYPE", 29 267 "interactive", 29 268 "absentee", 29 269 "daemon"); 29 270 29 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 29 272 "UNKNOWN-TABLE", 29 273 "answer_table", 29 274 "absentee_user_table", 29 275 "daemon_user_table"); 29 276 29 277 29 278 /* values for ute.pw_flags.mask_ctl */ 29 279 29 280 dcl (DO_MASK init ("00"b), 29 281 DONT_MASK init ("01"b), 29 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 29 283 29 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 29 285 "do_mask", "dont_mask", "derive_mask", ""); 29 286 29 287 29 288 /* names for ute.pw_flags */ 29 289 29 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 29 291 "cpw", 29 292 "generate_pw", 29 293 "dial_pw", 29 294 "slave_pw", 29 295 "cdp", 29 296 "cda", 29 297 "auth_given", 29 298 "noprint", 29 299 "operator"); 29 300 29 301 /* names for ute.uflags */ 29 302 29 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 29 304 "dont_call_init_admin", 29 305 "ip_given", 29 306 "ss_given", 29 307 "lvs_attached", 29 308 "send_initial_string", 29 309 "adjust_abs_q_no", 29 310 "foreground_secondary_ok", 29 311 "foreground_job", 29 312 "sus_sent", 29 313 "suspended", 29 314 "ignore_cpulimit", 29 315 "deferral_logged", 29 316 "save_if_disconnected", 29 317 "disconnected", 29 318 "disconnected_list", 29 319 "proc_create_ok", 29 320 "activity_can_unbump", 29 321 "fpe_causes_logout", 29 322 "user_specified_immediate"); 29 323 29 324 /* names for ute.abs_flags */ 29 325 29 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 29 327 "abs_run", 29 328 "notify"); 29 329 29 330 /* names of ute.dial_server_flags */ 29 331 29 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 29 333 "registered", 29 334 "privileged"); 29 335 29 336 /* values of ute.login_result */ 29 337 29 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 29 339 "logged in", 29 340 "login failed, hangup", 29 341 "login failed, try again"); 29 342 29 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 2658 2659 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 30 2 30 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 30 4 /* */ 30 5 /* This include file declares the header shared by the answer_table, */ 30 6 /* absentee_user_table and daemon_user_table include files. */ 30 7 /* */ 30 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 30 9 30 10 /****^ HISTORY COMMENTS: 30 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 30 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 30 13* Initial coding. 30 14* END HISTORY COMMENTS */ 30 15 30 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 30 17 2 header_version fixed bin, /* version of the header (3) */ 30 18 2 entry_version fixed bin, /* version of user table entries */ 30 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 30 20 2 header_length fixed bin, /* length of the header */ 30 21 2 max_size fixed bin, /* max number of entries in this table */ 30 22 2 current_size fixed bin, /* actual size of table (in entries) */ 30 23 2 number_free fixed bin, /* number of free entries in the table. */ 30 24 2 first_free fixed bin, /* index of first entry in the free list. */ 30 25 2 as_procid bit (36), /* process ID of user table manager process */ 30 26 2 ut_header_pad fixed bin; 30 27 30 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 2659 2660 2661 /* format: on */ 2662 2663 /* BEGIN MESSAGE DOCUMENTATION 2664* 2665* Message: 2666* dial_ctl_: Channel CHANNEL dialed to Initializer {(PERSON.PROJECT)} 2667* 2668* S: as (severity2) 2669* 2670* T: $run 2671* 2672* M: An additional secondary terminal has been attached to the 2673* Initializer process as a result of a dial system command. CHANNEL 2674* specifies which terminal dialed Initializer. 2675* 2676* A: If this terminal has been connected to the Initializer by 2677* an authorized operations staff member, proceed to use it by 2678* issuing an "accept" command and possibly the "substty" command. 2679* If this is an invalid attempt to connect to the system, type 2680* "drop CHANNEL" to disconnect the terminal. 2681* 2682* 2683* Message: 2684* dial_ctl_: ERROR_MESSAGE. Can't find PNT entry: PERSON_ID 2685* 2686* S: as (severity2) 2687* 2688* T: $run 2689* 2690* M: An attempt was made to find the Person Name Table entry 2691* of the PERSON_ID specified in a dial preaccess command. However, 2692* an error occurred which searching in the PNT. 2693* 2694* A: $notify_sa 2695* 2696* Message: 2697* dial_ctl_: sat.ht has PROJECT_ID, sat has OTHER_PROJECT_ID at LOC. 2698* 2699* S: as (severity2) 2700* 2701* T: $run 2702* 2703* M: The System Administrator's Table is inconsistent with the 2704* location information in its hash table. 2705* 2706* A: $notify_sa 2707* 2708* Message: 2709* dial_ctl_: Rejected unknown request from PERSON.PROJECT. No request flags set in dial_server_request. 2710* 2711* S: as (severity0) 2712* 2713* T: $run 2714* 2715* M: The user PERSON.PROJECT attempted to send an dial_server request 2716* to the Initializer, but failed to specify what type of request he/she 2717* wanted. 2718* 2719* A: $ignore 2720* 2721* 2722* Message: 2723* dial_ctl_: Channel CHANNEL (AIM_CLASS, SERV_TYPE) hung up on Initializer 2724* 2725* S: as (severity1) 2726* 2727* T: $run 2728* 2729* M: The channel CHANNEL with access class AIM_CLASS and service type 2730* SERV_TYPE hung up. It had previously been dialed to the Initializer. 2731* 2732* A: $ignore 2733* 2734* 2735* Message: 2736* dial_ctl_: Channel CHANNEL (AIM_CLASS, SERV_TYPE) hung up on missing process WWWWWWWWWWWW 2737* 2738* S: as (severity1) 2739* 2740* T: $run 2741* 2742* M: The channel CHANNEL with access class AIM_CLASS and service type 2743* SERV_TYPE hung up. It had been dialed to a process, but the system cannot 2744* determine what process it had been connected to. The process may have 2745* terminated before the hangup was detected. 2746* 2747* A: If this happens often, inform the programming staff. 2748* 2749* 2750* Message: 2751* dial_ctl_: Can't find process WWWWWWWWWWW 2752* 2753* S: as (severity0) 2754* 2755* T: $run 2756* 2757* M: An invalid signal was received by the secondary terminal 2758* manager. 2759* 2760* A: $note 2761* 2762* 2763* Message: 2764* dial_ctl_: Tracing turned on. 2765* 2766* S: as (severity1) 2767* 2768* T: $run 2769* 2770* M: A system administrator had enabled tracing of the dial_ctl_ 2771* program. Many status messages will be logged and printed on the 2772* console. 2773* 2774* A: $ignore 2775* 2776* 2777* Message: 2778* dial_ctl_: Tracing turned off 2779* 2780* S: as (severity1) 2781* 2782* T: $run 2783* 2784* M: A system administrator has disabled dial_ctl_ tracing. 2785* 2786* A: $ignore 2787* 2788* 2789* Message: 2790* dial_ctl_: ERROR_MESSAGE. Could not check access to >sc1>admin_acs>tandd.acs for PERSON.PROJECT. 2791* 2792* S: as (severity0) 2793* 2794* T: $run 2795* 2796* M: The user PERSON.PROJECT attempted to tandd_attach a communications 2797* channel. This operation is controlled by rw access to the ACS segment 2798* specified. For the reason ERROR_MESSAGE, the answering service could not 2799* check access to the segment. The user tandd_attach request was refused. 2800* 2801* A: $contact_sa 2802* 2803* 2804* Message: 2805* dial_ctl_: ERROR_MESSAGE. Issuing tandd_attach control order for channel CHAN 2806* 2807* S: as (severity0) 2808* 2809* T: $run 2810* 2811* M: The user PERSON.PROJECT attempted to tandd_attach a communications 2812* channel which failed for the reason given by ERROR_MESSAGE. The user 2813* tandd_attach request was refused. 2814* 2815* A: $contact_sa 2816* 2817* 2818* Message: 2819* dial_ctl_: Dialing channel CHANNEL (ACC_CLASS) to DESTINATION for PERSON.PROJECT {using comm privilege} 2820* 2821* S: as (severity0) 2822* 2823* T: $run 2824* 2825* M: The user PERSON.PROJECT is dialing out on dial channel CHANNEL 2826* with access class ACC_CLASS to the destination DESTINATION. If this 2827* log message ends with "using comm privilege", then the process dialing 2828* out has used the comm privilege to circumvent AIM restrictions. 2829* 2830* A: $ignore 2831* 2832* 2833* Message: 2834* dial_ctl_: ERROR_MESSAGE. after dial_out order (CHANNEL for PERSON.PROJECT) 2835* 2836* S: as (severity0) 2837* 2838* T: $run 2839* 2840* M: The user PERSON.PROJECT is attempting a dial_out of channel 2841* CHANNEL. The dial_out control order produced the error ERROR_MESSAGE. 2842* The dial_out attempt is aborted. 2843* 2844* A: $note 2845* 2846* 2847* Message: 2848* dial_ctl_: ERROR_MESSAGE. call to astty_$tty_new_proc of CHANNEL for PERSON.PROJECT failed 2849* 2850* S: as (severity0) 2851* 2852* T: $run 2853* 2854* M: An attempt to connect the channel CHANNEL to PERSON.PROJECT failed. 2855* ERROR_MESSAGE indicates why. 2856* 2857* A: $contact_sa 2858* 2859* Message: 2860* dial_ctl_: ERROR_MESSAGE. Attempting to detach CHANNEL from PERSON.PROJECT 2861* 2862* S: as (severity0) 2863* 2864* T: $run 2865* 2866* M: An attempt to disconnect channel CHANNEL from PERSON.PROJECT 2867* failed. ERROR_MESSAGE explains why. 2868* 2869* A: $note 2870* 2871* 2872* Message: 2873* dial_ctl_: Autocall channel CHANNEL declared multi-class, but does not support set_required_access_class. 2874* 2875* S: as (severity2) 2876* 2877* T: $run_ 2878* 2879* M: The autocall channel CHANNEL has been declared multi-class in 2880* the CDT, but the underlying multiplexer does not support the 2881* set_required_access_class control order. The channel should be 2882* defined as single class. The user's dial out request was refused. 2883* 2884* A: $contact_sa 2885* 2886* 2887* Message: 2888* dial_ctl_: ndialed negative CHANNEL 2889* 2890* S: as (severity0) 2891* 2892* T: $run 2893* 2894* M: The count of secondary consoles for a user is in error. A 2895* terminal is hanging up which claims to be attached to a user but his 2896* count of attached terminals is zero. 2897* 2898* A: $note 2899* 2900* 2901* Message: 2902* dial_ctl_: Program error. as_request_sender.version (N) not correct in dial request. Should be M. 2903* 2904* S: as (severity1) 2905* 2906* T: $run 2907* 2908* M: There is a mismatch in the version number used by the 2909* the programs as_request_server_ and dial_ctl_ for the as_request_sender_ 2910* structure. 2911* 2912* A: $contact 2913* 2914* 2915* Message: 2916* dial_ctl_: Channel CHANNEL hung up after dial_out for PERSON.PROJECT 2917* 2918* S: as (severity0) 2919* 2920* T: $run 2921* 2922* M: During a dial_out of channel CHANNEL by PERSON.PROJECT, the 2923* channel hung up. The dial_out attempt was aborted. 2924* 2925* A: $ignore 2926* 2927* 2928* Message: 2929* dial_ctl_: ERROR_MESSAGE. getting dial_out_status or tty info (CHANNEL for PERSON.PROJECT) 2930* 2931* S: as (severity0) 2932* 2933* T: $run 2934* 2935* M: During a dial_out of channel CHANNEL by PERSON.PROJECT, the 2936* error ERROR_MESSAGE was returned while attempting to determine if 2937* the dial_out control order succeeded or failed. 2938* 2939* A: $ignore 2940* 2941* 2942* Message: 2943* dial_ctl_: ERROR_MESSAGE. dial_out (CHANNEL for PERSON.PROJECT) failed. 2944* 2945* S: as (severity0) 2946* 2947* T: $run 2948* 2949* M: While attempting to dial_out channel CHANNEL for PERSON.PROJECT, 2950* the error ERROR_MESSAGE occured. The dial_out attempt was aborted. 2951* 2952* A: $ignore 2953* 2954* 2955* Message: 2956* dial_ctl_: Refused unknown request from PERSON.PROJECT; ERROR_MESSAGE REASON 2957* 2958* S: as (severity0) 2959* 2960* T: $run 2961* 2962* M: PERSON.PROJECT send a dial_server request to the Initializer 2963* of unknown format. It was rejected for the reasons specified in 2964* ERROR_MESSAGE and REASON. 2965* 2966* 2967* Message: 2968* DIALIN DENIED {PERSON1.PROJECT1} CHANNEL to QUALIFIER {PERSON2.PROJECT2} REASON 2969* 2970* S: as (severity0) 2971* 2972* T: $run 2973* 2974* M: A user on channel CHANNEL attempted to use the "dial" preaccess 2975* command to dial to QUALIFIER, owned by PERSON2.PROJECT2. The attempt 2976* was rejected for REASON. If the channel check_acs "slave_dial" flag 2977* was on, then PERSON1.PROJECT1 specifies the identified user on this 2978* channel. 2979* 2980* A: $note 2981* 2982* 2983* Message: 2984* DIALIN {PERSON1.PROJECT1} CHANNEL to QUALIFIER {PERSON2.PROJECT2} 2985* 2986* S: as (severity0) 2987* 2988* T: $run 2989* 2990* M: A user on channel CHANNEL has used the "dial" preaccess command 2991* to dial the dial qualifier QUALIFIER owned by PERSON2.PROJECT2. If 2992* the check_acs "slave_dial" flags was on for the channel, then 2993* PERSON1.PROJECT1 specifies the identified user. 2994* 2995* A: $ignore 2996* 2997* Message: 2998* dial_ctl_: ERROR_MESSAGE From get_required_access_class control order on channel CHANNEL. 2999* 3000* S: as (severity0) 3001* 3002* T: $run 3003* 3004* M: While attempting to determine whether the channel CHANNEL 3005* had any access class restrictions imposed on it by the hardcore, 3006* ERROR_MESSAGE was returned. The request in progress was aborted. 3007* 3008* A: $note 3009* 3010* END MESSAGE DOCUMENTATION */ 3011 3012 end dial_ctl_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 05/16/89 1053.1 dial_ctl_.pl1 >spec>install>1045>dial_ctl_.pl1 2630 1 08/06/87 0913.4 absentee_user_table.incl.pl1 >ldd>include>absentee_user_table.incl.pl1 2631 2 04/11/85 1452.6 access_mode_values.incl.pl1 >ldd>include>access_mode_values.incl.pl1 2632 3 09/07/83 1610.6 aim_template.incl.pl1 >ldd>include>aim_template.incl.pl1 2633 4 08/19/84 1445.6 aim_privileges.incl.pl1 >ldd>include>aim_privileges.incl.pl1 2634 5 02/12/85 1429.5 access_audit_bin_header.incl.pl1 >ldd>include>access_audit_bin_header.incl.pl1 2635 6 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 2636 7 08/06/87 0913.4 as_audit_structures.incl.pl1 >ldd>include>as_audit_structures.incl.pl1 2637 8 08/06/87 0913.4 as_data_.incl.pl1 >ldd>include>as_data_.incl.pl1 2638 9 08/06/87 0913.4 as_data_definitions_.incl.pl1 >ldd>include>as_data_definitions_.incl.pl1 2639 10 10/30/86 2010.5 as_request_header.incl.pl1 >ldd>include>as_request_header.incl.pl1 2640 11 10/30/86 2010.5 as_request_sender_.incl.pl1 >ldd>include>as_request_sender_.incl.pl1 2641 12 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 12-10 13 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 2642 14 08/06/87 0913.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 14-314 15 07/21/88 2036.0 fnp_types.incl.pl1 >ldd>include>fnp_types.incl.pl1 2643 16 09/13/84 0921.5 dial_server_request.incl.pl1 >ldd>include>dial_server_request.incl.pl1 2644 17 08/06/87 0913.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 2645 18 08/06/87 0912.9 daemon_user_table.incl.pl1 >ldd>include>daemon_user_table.incl.pl1 2646 19 08/06/87 0913.4 line_types.incl.pl1 >ldd>include>line_types.incl.pl1 2647 20 03/15/85 0953.1 pnt_entry.incl.pl1 >ldd>include>pnt_entry.incl.pl1 2650 21 08/06/87 1416.6 sat.incl.pl1 >ldd>include>sat.incl.pl1 21-34 22 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 2653 23 09/01/77 1359.3 set_term_type_info.incl.pl1 >ldd>include>set_term_type_info.incl.pl1 2654 24 08/06/87 0913.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.incl.pl1 2655 25 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 2656 26 09/18/86 1308.0 tty_access_class.incl.pl1 >ldd>include>tty_access_class.incl.pl1 2657 27 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 27-112 28 07/14/88 2015.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 2658 29 07/14/88 2015.0 user_table_entry.incl.pl1 >ldd>include>user_table_entry.incl.pl1 2659 30 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. ANS_SERVICE constant fixed bin(17,0) initial dcl 14-259 ref 647 785 1167 1208 1600 2044 AS_AUDIT_CHANNEL_ATTACH 000410 constant fixed bin(17,0) initial dcl 7-175 set ref 1416* 1422 2306 AS_AUDIT_CHANNEL_DETACH 000407 constant fixed bin(17,0) initial dcl 7-175 set ref 606* 639* 1576* 2313 AS_AUDIT_CHANNEL_DIALIN constant fixed bin(17,0) initial dcl 7-175 ref 2526 2571 AS_AUDIT_CHANNEL_DIALOUT 000403 constant fixed bin(17,0) initial dcl 7-175 set ref 1267* 2311 AS_AUDIT_CHANNEL_DIAL_SYSTEM constant fixed bin(17,0) initial dcl 7-175 ref 2523 2568 AS_AUDIT_DIALID_START 000410 constant fixed bin(17,0) initial dcl 7-188 set ref 986* 2334 AS_AUDIT_DIALID_STOP 000407 constant fixed bin(17,0) initial dcl 7-188 set ref 693* 1053* 2336 AS_REQUEST_SENDER_VERSION_2 000140 constant char(8) initial packed unaligned dcl 11-27 set ref 2218 2220* ATTACHMENT_TYPES 000217 constant char(12) initial array packed unaligned dcl 223 ref 1397 CAI 000172 automatic structure level 1 dcl 163 set ref 606 606 639 639 1267 1267 1416 1416 1422 1422 1576 1576 2306 2306 2311 2311 2313 2313 2531 2531 2576 2576 DIAL_IN 000405 constant fixed bin(17,0) initial dcl 216 set ref 491* 1374 1723 2190* DIAL_OUT constant fixed bin(17,0) initial dcl 216 set ref 898* 1244* 1723 1759 DIAL_OUT_RQ constant fixed bin(17,0) initial dcl 226 ref 553 859 2308 DIAL_OUT_SERVICE constant fixed bin(17,0) initial dcl 14-259 ref 1325 1669 2602 DIAL_SERVICE constant fixed bin(17,0) initial dcl 14-259 ref 1374 1555 DSI 000265 automatic structure level 1 dcl 171 set ref 693 693 986 986 1053 1053 2334 2334 2336 2336 FALSE constant bit(1) initial dcl 242 ref 558 596 628 717 1077 1122 1230 1300 1395 1567 1755 1784 2061 2066 2074 2083 2310 2513 2556 FNP_UP constant fixed bin(17,0) initial dcl 14-298 ref 1679 FTP_SERVICE constant fixed bin(17,0) initial dcl 14-259 ref 404 476 INACTIVE constant fixed bin(17,0) initial dcl 14-272 ref 1585 1665 JUST_DIALED 000241 constant bit(15) initial dcl 207 set ref 1431* JUST_HUNGUP 000240 constant bit(15) initial dcl 207 set ref 624* MC_SERVICE constant fixed bin(17,0) initial dcl 14-259 ref 421 ME 000233 constant char(9) initial packed unaligned dcl 214 set ref 425* 507* 530* 545* 1193* 1275* 1419* 1559* 2065* 2271* 2274* 2621* NOW_DIALED constant fixed bin(17,0) initial dcl 17-76 ref 1387 1602 NOW_DIALED_OUT constant fixed bin(17,0) initial dcl 17-76 ref 884 2263 NOW_DIALING constant fixed bin(17,0) initial dcl 17-76 ref 1258 NOW_FREE constant fixed bin(17,0) initial dcl 17-76 ref 726 1691 NOW_HAS_PROCESS constant fixed bin(17,0) initial dcl 17-76 ref 2150 NOW_HUNG_UP constant fixed bin(17,0) initial dcl 17-76 ref 663 1277 1381 1611 1671 2281 NOW_LOGGED_IN constant fixed bin(17,0) initial dcl 17-76 ref 417 P 001644 automatic pointer dcl 1809 in procedure "aim_check_registered_server_namedup" set ref 1813* 1822* 1830* 1844 1848 1850 1852 1855 1869 1869 P 002002 automatic pointer dcl 2116 in procedure "find_dialable_process" set ref 2121* 2123 2131* 2132 2140* 2141 2150 2154 2154 2154 2154 2154 2154 2154 2163 2166 2170 2175 2179 2183 2190* 2190 2190 PRIV_ATTACH 000410 constant fixed bin(17,0) initial dcl 216 set ref 776* 780* 791* 1137* 1214* 1723 PRIV_ATTACH_CHN_RQ constant fixed bin(17,0) initial dcl 226 ref 754 1119 2306 P_added_info parameter char packed unaligned dcl 1360 set ref 1369 1422* P_attachment_type parameter fixed bin(17,0) dcl 1359 ref 1348 1369 1374 1377 1397 P_cdtep parameter pointer dcl 153 ref 97 365 572 581 P_code parameter fixed bin(35,0) dcl 156 in procedure "dial_ctl_" set ref 97 413* 492* 2542* 2544* P_code parameter fixed bin(35,0) dcl 2595 in procedure "INITIALIZE_CURRENT_ACCESS_CLASS" set ref 2588 2598* 2608* 2609 2614 2616 2616* 2619 2619* 2621* 2625* P_dial_qualifier parameter char packed unaligned dcl 154 ref 97 366 P_ec parameter fixed bin(35,0) dcl 2490 set ref 2487 2497 2500* 2542 2542 P_reason parameter char packed unaligned dcl 1553 in procedure "release_channel" set ref 1543 1563* P_reason parameter char packed unaligned dcl 2491 in procedure "ABORT_DIALIN" ref 2487 2497 2502 2505 P_target_person_project parameter char packed unaligned dcl 155 ref 97 367 RELEASE_CHN_RQ constant fixed bin(17,0) initial dcl 226 ref 1073 2313 RELEASE_DIAL_ID_RQ constant fixed bin(17,0) initial dcl 226 ref 1033 2336 REQUEST_DENIED 000236 constant bit(15) initial dcl 207 set ref 2250* REQUEST_GRANTED 000237 constant bit(15) initial dcl 207 set ref 1110* 1174* 1289* 1344* REQUEST_TYPES 000142 constant char(20) initial array packed unaligned dcl 238 ref 2305 RW_ACCESS constant bit(3) initial packed unaligned dcl 2-11 ref 1148 1148 1901 1901 SLAVE_SERVICE constant fixed bin(17,0) initial dcl 14-259 ref 1697 SL_LOG 000410 constant fixed bin(17,0) initial dcl 24-14 set ref 905* 912* 2220* SL_LOG_BEEP 000407 constant fixed bin(17,0) initial dcl 24-14 set ref 425* 2006* 2065* 2081* SL_LOG_SILENT 000370 constant fixed bin(17,0) initial dcl 24-14 set ref 530* 612* 766* 843* 874* 1150* 1193* 1419* 2024* 2249* 2268* 2315* 2338* 2481* 2483* 2533* 2621* START_DIAL_ID_RQ constant fixed bin(17,0) initial dcl 226 ref 920 2334 STOP_DIAL_ID_RQ constant fixed bin(17,0) initial dcl 226 ref 998 2336 TANDD_ATTACH_CHN_RQ constant fixed bin(17,0) initial dcl 226 ref 801 832 1117 2306 TANDD_SERVICE constant fixed bin(17,0) initial dcl 14-259 ref 726 1104 1379 1384 1583 TERMINATE_DIAL_OUT_RQ constant fixed bin(17,0) initial dcl 226 ref 551 2313 TRUE constant bit(1) initial dcl 242 ref 559 597 599 603 629 631 635 637 721 1078 1123 1142 1231 1249 1261 1301 1322 1396 1400 1402 1568 1572 1574 1779 2088 2304 2516 2518 2527 2557 2561 2563 2572 2611 TTY_DIALED constant fixed bin(17,0) initial dcl 17-64 ref 408 479 1206 1631 TTY_HUNG constant fixed bin(17,0) initial dcl 17-64 ref 1178 1613 TTY_MASKED 000450 constant fixed bin(17,0) initial dcl 17-64 ref 661 1620 1665 T_AND_D constant fixed bin(17,0) initial dcl 216 set ref 819* 849* 1135* 1196* 1377 1723 UNKNOWN_RQ constant fixed bin(17,0) initial dcl 226 ref 513 UTE_SIZE constant fixed bin(17,0) initial dcl 6-120 ref 1813 1813 2121 2121 WAIT_DIAL_OUT constant fixed bin(17,0) initial dcl 17-25 ref 1259 WAIT_DIAL_RELEASE constant fixed bin(17,0) initial dcl 17-25 ref 418 1337 1386 2286 WAIT_DISCARD_WAKEUPS constant fixed bin(17,0) initial dcl 17-25 ref 1380 WAIT_FIN_PRIV_ATTACH constant fixed bin(17,0) initial dcl 17-25 ref 1217 WAIT_FIN_TANDD_ATTACH constant fixed bin(17,0) initial dcl 17-25 ref 823 1201 1623 WAIT_GREETING_MSG constant fixed bin(17,0) initial dcl 17-25 ref 1603 WAIT_HANGUP constant fixed bin(17,0) initial dcl 17-25 ref 1613 WAIT_SLAVE_REQUEST constant fixed bin(17,0) initial dcl 17-25 ref 1278 1623 1631 WAIT_TANDD_HANGUP constant fixed bin(17,0) initial dcl 17-25 ref 1183 a_asr_sender_ptr parameter pointer dcl 504 ref 495 538 2216 a_cdtep parameter pointer dcl 749 ref 740 755 794 803 826 833 852 862 a_request_ptr parameter pointer dcl 504 ref 495 538 2215 a_used_privilege parameter bit(1) dcl 1707 in procedure "access_check_channel_and_process" set ref 1703 1717* a_used_privilege parameter bit(1) dcl 1737 in procedure "aim_check_process_and_channel" set ref 1731 1748* a_utep parameter pointer dcl 1734 in procedure "aim_check_process_and_channel" set ref 1731 1741 1741 1741* 1764 1770 1771 1776 a_utep parameter pointer dcl 2032 in procedure "make_group_id" ref 2029 2036 2036 2036 2036 a_utep parameter pointer dcl 1706 in procedure "access_check_channel_and_process" set ref 1703 1712 1712 1712* 1717* 1723* 1723* access_class 12 based bit(72) array level 2 in structure "cdte" dcl 14-72 in procedure "dial_ctl_" set ref 604 636 1143 1250 1323 1401 1573 1759* 1764* 1770* 2517 2562 access_class 10(01) 000172 automatic bit(1) level 3 in structure "CAI" packed packed unaligned dcl 163 in procedure "dial_ctl_" set ref 599* 631* 1140* 1247* 1320* 1398* 1570* 2514* 2557* access_class 51 based bit(72) level 2 in structure "dial_server_request" dcl 16-21 in procedure "dial_ctl_" set ref 1939* 1950* 1957 2424* access_class 21 000172 automatic bit(72) level 2 in structure "CAI" dcl 163 in procedure "dial_ctl_" set ref 600* 602* 632* 634* 1141* 1248* 1321* 1399* 1571* 2515* 2558* 2560* access_class 002320 automatic bit(72) level 2 in structure "auto_tty_access_class" dcl 2596 in procedure "INITIALIZE_CURRENT_ACCESS_CLASS" set ref 2612 access_class_ok 001632 automatic bit(1) dcl 1739 set ref 1759* 1762* 1764* 1770* 1771* 1776* 1779 access_class_range 10(02) 000172 automatic bit(1) level 3 in structure "CAI" packed packed unaligned dcl 163 in procedure "dial_ctl_" set ref 603* 635* 1142* 1249* 1322* 1400* 1572* 2516* 2561* access_class_range 23 000172 automatic bit(72) array level 2 in structure "CAI" dcl 163 in procedure "dial_ctl_" set ref 604* 636* 1143* 1250* 1323* 1401* 1573* 2517* 2562* access_class_set 2 002320 automatic bit(1) level 2 dcl 2596 set ref 2609 access_class_specified 50(09) based bit(1) level 3 packed packed unaligned dcl 16-21 set ref 1939 2434* access_class_string 002162 automatic char(32) dcl 2421 set ref 2424* 2428* access_control 50(09) based structure level 3 packed packed unaligned dcl 14-72 acs_name 000100 automatic char(32) packed unaligned dcl 160 set ref 1888* 1890* 1890 1892* 1899 1903* action 002310 automatic fixed bin(17,0) dcl 2553 in procedure "DIALIN_OK" set ref 2568* 2571* 2576* action 002200 automatic fixed bin(17,0) dcl 2493 in procedure "ABORT_DIALIN" set ref 2523* 2526* 2531* active based fixed bin(17,0) level 2 dcl 29-78 ref 2150 added_info 000335 automatic char(128) packed unaligned dcl 177 set ref 692* 693* 779* 780* 818* 819* 977* 978* 978 980* 980 982* 984* 986* 1047* 1049* 1049* 1053* 1058* 1062* 1195* 1196* 1412* 1414* 1416* 1563* 1576* addr builtin function dcl 284 ref 407 407 415 476 476 606 606 639 639 693 693 725 887 887 986 986 1053 1053 1267 1267 1269 1269 1416 1416 1422 1422 1455 1514 1532 1532 1576 1576 1605 1644 1674 1678 1813 1822 1830 1971 1976 1994 1994 2060 2060 2077 2121 2131 2140 2306 2306 2311 2311 2313 2313 2334 2334 2336 2336 2356 2359 2375 2377 2378 2394 2425 2531 2531 2576 2576 2608 2608 addrel builtin function dcl 284 ref 1532 1532 after builtin function dcl 284 ref 436 aim_check_$equal 000114 constant entry external dcl 290 ref 394 1762 1776 1869 1939 aim_check_$greater_or_equal 000116 constant entry external dcl 291 ref 1764 1771 1950 aim_check_$in_range 000112 constant entry external dcl 289 ref 1759 1770 1864 1869 aim_template based structure level 1 dcl 3-12 aim_util_$get_access_class 000120 constant entry external dcl 292 ref 1937 alias 74 based char(8) level 2 packed packed unaligned dcl 21-53 ref 2078 anonymous 16 based fixed bin(17,0) level 2 dcl 29-78 ref 2036 ansp 000710 automatic pointer initial dcl 6-53 set ref 363* 419 468 579* 592 678* 731 753* 787 861* 897 6-53* 1210 1605 1812 1813 2044 2119* 2120 2121 2211* anstbl based structure level 1 dcl 6-55 any_other 000676 stack reference condition dcl 350 ref 507 545 arh_header_ based structure level 1 dcl 5-26 arh_user_info_ based structure level 1 dcl 5-39 as_access_audit_$channel 000122 constant entry external dcl 293 ref 606 639 1267 1416 1422 1576 2306 2311 2313 2531 2576 as_access_audit_$dialid 000124 constant entry external dcl 294 ref 693 986 1053 2334 2336 as_any_other_handler_ 000126 constant entry external dcl 295 ref 507 545 as_channel_audit_record_ based structure level 1 dcl 7-74 as_data_$acsdir 000236 external static char(168) packed unaligned dcl 8-25 set ref 1150* 1154* 1154* as_data_$ansp 000240 external static pointer dcl 8-26 ref 361 363 577 579 676 678 753 861 2119 2206 2211 as_data_$autp 000242 external static pointer dcl 8-31 ref 2138 2213 as_data_$cdtp 000244 external static pointer dcl 8-33 ref 724 724 725 725 1454 1454 1455 1455 1643 1643 1644 1644 1674 1674 1678 1678 as_data_$dutp 000246 external static pointer dcl 8-37 ref 414 2129 2212 as_data_$rcpdir 000250 external static char(168) packed unaligned dcl 8-47 set ref 1892* as_data_$sat_htp 000252 external static pointer dcl 8-51 set ref 2073* as_data_$satp 000254 external static pointer dcl 8-52 set ref 2076* 2076 2076 2077 2077 as_dial_service_audit_record_ based structure level 1 dcl 7-105 as_error_table_$dial_connect_msg 000016 external static fixed bin(35,0) dcl 251 ref 467 as_error_table_$dial_sys_msg 000026 external static fixed bin(35,0) dcl 255 set ref 401* as_error_table_$dialagain 000012 external static fixed bin(35,0) dcl 249 ref 710 as_error_table_$dialdied 000020 external static fixed bin(35,0) dcl 252 ref 712 as_error_table_$dialnoline 000022 external static fixed bin(35,0) dcl 253 set ref 375* as_error_table_$dialnotup 000024 external static fixed bin(35,0) dcl 254 set ref 439* 463* 2544 as_error_table_$dialup_error 000014 external static fixed bin(35,0) dcl 250 set ref 449* as_ia_audit_record_ based structure level 1 dcl 7-52 as_procid 10 based bit(36) level 3 dcl 6-55 set ref 419 592 1605* as_request_header based structure level 1 dcl 10-62 as_request_sender based structure level 1 dcl 11-15 as_request_sender_ptr 000712 automatic pointer dcl 11-13 set ref 2216* 2218 2220 2227 2228 2229 2230 2423 2425 2425 2425 2425 astty_$tty_changemode 000130 constant entry external dcl 296 ref 1529 1538 astty_$tty_detach 000132 constant entry external dcl 297 ref 1558 astty_$tty_force 000134 constant entry external dcl 298 ref 407 476 1532 astty_$tty_new_proc 000136 constant entry external dcl 299 ref 1408 astty_$tty_order 000140 constant entry external dcl 300 ref 781 811 820 881 887 1182 1190 1197 1269 1342 1390 1518 1609 1994 2265 2608 astty_$tty_state 000142 constant entry external dcl 301 ref 1612 1630 asu_$asu_listen 000144 constant entry external dcl 302 ref 661 1620 asu_$find_process 000146 constant entry external dcl 303 ref 2246 asu_$format_ftp_msg 000150 constant entry external dcl 304 ref 404 asu_$reset_access_class 000152 constant entry external dcl 305 ref 659 1341 1581 1783 1990 2600 asu_$write_chn_message 000154 constant entry external dcl 306 ref 1555 at 100 based structure level 2 dcl 29-78 attach_ring parameter fixed bin(3,0) dcl 1735 in procedure "aim_check_process_and_channel" set ref 1731 1741* attach_ring parameter fixed bin(3,0) dcl 1710 in procedure "access_check_channel_and_process" set ref 1703 1712* 1717* 1723* audit_record_header based structure level 1 dcl 5-18 autbl based structure level 1 dcl 1-28 auth 002152 automatic char(32) dcl 2420 set ref 2423* 2425* author based structure level 2 dcl 12-9 author_dcl based structure level 1 dcl 12-9 authorization 16 based bit(72) level 2 dcl 11-15 set ref 2230 2423* 2425 auto_tty_access_class 002320 automatic structure level 1 dcl 2596 set ref 2607* 2608 2608 autobaud 50(23) based bit(1) level 4 packed packed unaligned dcl 14-72 ref 892 autp 000706 automatic pointer initial dcl 1-26 set ref 1-26* 1829 1830 2138* 2139 2140 2213* baud_rate 13 000644 automatic fixed bin(17,0) level 2 in structure "term_info" dcl 201 in procedure "dial_ctl_" set ref 892 baud_rate 36 based fixed bin(17,0) level 2 in structure "dial_server_request" dcl 16-21 in procedure "dial_ctl_" set ref 1460 1460 2428* baud_rate 33(18) based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 14-72 in procedure "dial_ctl_" set ref 892* 1460 before builtin function dcl 284 ref 434 bf based fixed bin(71,0) dcl 161 set ref 1605* bit builtin function dcl 284 ref 988 988 1023 1023 1066 1066 buffer 000110 automatic char(200) dcl 162 set ref 402* 404* 404* 407 407 475* 476 476 caller parameter char(32) packed unaligned dcl 2419 set ref 2416 2425* cdt based structure level 1 dcl 14-44 cdt_entry 1520 based structure array level 2 dcl 14-44 set ref 725 1455 1644 cdte based structure level 1 dcl 14-72 cdtep 000714 automatic pointer dcl 14-41 set ref 365* 379 394 394 402 402 402 404 407* 408 416 417 418 419 420 421 425 425 425 425 446 446 475 475 476 476* 479 485 486 487 581* 584 587 589 590 595 598 600 600 604 605 606* 609 612 612 612 612 612 612 619 619 627 630 632 632 636 639* 647 647 647* 651 651 652 653 654 659* 661 661* 663 725* 726 726 726 755* 756 758 760 762 763 766 770 776 776 781* 785 787 788 788 803* 805 809 811* 820* 823 833* 835 838 839 840 843 847 862* 864 867 869 870 871 874 878 881* 884 887* 890 891 892 892 896 896 897 1091 1097 1104 1139 1140 1141 1143 1160 1161 1162 1163 1164 1167 1167 1167 1178 1180 1182* 1183 1188 1190* 1193 1197* 1201 1206 1208 1210 1211 1211 1217 1246 1247 1248 1250 1258 1259 1267* 1269* 1275 1277 1278 1282 1283 1284 1285 1286 1286 1314 1320 1321 1323 1325 1331 1337 1338 1341* 1342* 1374 1379 1380 1381 1384 1386 1387 1390* 1394 1398 1399 1401 1408* 1416* 1419 1422* 1427 1427 1449* 1455* 1460 1464 1484* 1510 1512 1512 1516 1518* 1522 1524 1529* 1532* 1534 1538* 1555 1555* 1558* 1559 1566 1569 1570 1571 1573 1576* 1579 1579 1581* 1583 1585 1587 1587 1591 1591 1595 1596 1597 1598 1600 1602 1603 1605 1609* 1611 1612* 1613 1613 1617 1620 1620* 1623 1623 1630* 1631 1631 1644* 1645 1649* 1665 1665 1665 1667 1669 1671 1674 1674 1678 1691 1693 1695 1697 1712 1723 1723 1723 1723 1723 1741 1752 1759 1759 1762 1764 1764 1770 1771 1776 1783* 1967 1971 1971 1974 1976 1976 1990* 1991 1994* 2006 2012 2013 2044 2044 2044 2044 2254* 2263 2265* 2268 2271 2274 2277 2278 2279 2281 2286 2306* 2311* 2313* 2377 2378 2382 2382 2512 2514 2515 2517 2531* 2533 2533 2533 2533 2538 2539 2540 2555 2558 2558 2562 2576* 2600* 2602 2605 2608* 2611 2612 2621 cdtx 000222 automatic fixed bin(17,0) dcl 164 set ref 1643* 1644* chan based char(6) level 2 packed packed unaligned dcl 336 set ref 2359 2377 2378 2396* channel_audit_info based structure level 1 dcl 7-138 channel_name 16 based char(32) level 2 in structure "dial_server_request" dcl 16-21 in procedure "dial_ctl_" set ref 1075 1084 1093* 1121 1133 1229 1299 1307 1316* 1645 1650 1914 1920 2428* channel_name 000172 automatic char(32) level 2 in structure "CAI" dcl 163 in procedure "dial_ctl_" set ref 595* 627* 1075* 1121* 1139* 1229* 1246* 1299* 1394* 1566* 1929* 2512* 2555* channel_threads based structure level 1 dcl 14-249 charge_type 32 based fixed bin(17,0) level 2 packed packed unaligned dcl 14-72 ref 619 1427 1579 check_name parameter char packed unaligned dcl 1884 ref 1879 1888 check_star_name_$entry 000156 constant entry external dcl 307 ref 1921 chn 000224 automatic fixed bin(71,0) dcl 165 set ref 589* 763* 840* 871* 971 1161 1285 1338 2235* 2240* 2354 2360* 2392 2398* code 001160 automatic fixed bin(35,0) dcl 1506 in procedure "set_terminal_type" set ref 1518* 1519 1524* 1525 1529* 1530 1532* 1534* 1536 1538* code parameter fixed bin(35,0) dcl 1807 in procedure "aim_check_registered_server_namedup" set ref 1789 1861* code 001770 automatic fixed bin(35,0) dcl 2057 in procedure "convert_aliases" set ref 2060* 2061 2063 2065* 2073* 2074 code parameter fixed bin(35,0) dcl 2350 in procedure "SEND_ERROR_MESSAGE_AND_REJECT" ref 2344 2359 code parameter fixed bin(35,0) dcl 2324 in procedure "REJECT_DIALID_REQUEST" set ref 2321 2327 2327* 2331* 2341* code based fixed bin(35,0) dcl 2454 in procedure "trace" set ref 2481* code 1(21) based bit(15) level 3 in structure "rv" packed packed unaligned dcl 336 in procedure "dial_ctl_" set ref 2381* 2397* code parameter fixed bin(35,0) dcl 2203 in procedure "SETUP_REQUEST" set ref 2200 2208* 2223* 2255* code parameter fixed bin(35,0) dcl 2294 in procedure "REJECT_CHANNEL_REQUEST" set ref 2291 2297 2297* 2301* 2318* code parameter fixed bin(35,0) dcl 1986 in procedure "set_dial_out_channel_access_class" set ref 1983 1988* 1994* 1995 1995* 1998 2000 2002 2004* code 000226 automatic fixed bin(35,0) dcl 166 in procedure "dial_ctl_" set ref 407* 470* 476* 509* 510 547* 548 661* 811* 812 812* 816 881* 882 887* 888 1147* 1148 1150 1150* 1172* 1190* 1191 1193* 1269* 1271 1273 1273* 1275* 1408* 1410 1419* 1555* 1558* 1559 1559* 1605* 1612* 1617* 1620* 1630* 1754* 1755 1892* 1894 1896 1917* 1921* 1922 1930 1974* 1976 1976* 1980 2268 2271 2271 2271* 2274* code_flag 000472 automatic bit(1) dcl 2453 set ref 2458* 2464* 2466 2481 code_ptr 000474 automatic pointer dcl 2455 set ref 2469* 2481 code_reason 002201 automatic varying char(150) dcl 2494 set ref 2497* 2501* 2504* 2504 2505* 2505 2531 2533 2533* code_reason_al 002250 automatic char(100) dcl 2495 set ref 2500* 2501 comm 1(24) 000704 automatic bit(1) level 3 in structure "sender_authorization" packed packed unaligned dcl 505 in procedure "dial_ctl_" set ref 931 1164 1475* 1942 comm 1(24) based bit(1) level 3 in structure "aim_template" packed packed unaligned dcl 3-12 in procedure "dial_ctl_" set ref 2425* control 000477 automatic fixed bin(17,0) dcl 2456 in procedure "trace" set ref 2470* 2474* 2478* control 1(18) based structure level 2 in structure "rv" packed packed unaligned dcl 336 in procedure "dial_ctl_" convert_access_class_$to_string_short 000160 constant entry external dcl 308 ref 470 convert_status_code_ 000162 constant entry external dcl 309 ref 401 469 2301 2331 2500 cu_$arg_list_ptr 000262 constant entry external dcl 2450 ref 2478 2478 cu_$arg_ptr 000260 constant entry external dcl 2449 ref 2469 current_access_class 114 based bit(72) array level 2 dcl 14-72 set ref 394* 600 612* 612* 632 1141 1248 1321 1399 1571 1762* 1771* 1776* 2012* 2515 2558 2612* current_access_class_valid 75(28) based bit(1) level 3 packed packed unaligned dcl 14-72 set ref 394 446 600 632 1140 1247 1320 1398 1570 1752 1759 1764 1991 2013* 2514 2558 2605 2611* current_service_type 74 based fixed bin(17,0) level 2 packed packed unaligned dcl 14-72 set ref 421* 598* 612* 630* 651* 726 1104 1325 1374* 1379* 1384 1555 1569* 1583 1585* 1587* 1591* 1665 1669 1697 2602 current_size 5 based fixed bin(17,0) level 3 in structure "dutbl" dcl 18-29 in procedure "dial_ctl_" ref 1821 2130 current_size 5 based fixed bin(17,0) level 3 in structure "anstbl" dcl 6-55 in procedure "dial_ctl_" ref 1812 2120 current_size 5 based fixed bin(17,0) level 3 in structure "autbl" dcl 1-28 in procedure "dial_ctl_" ref 1829 2139 current_size 36 based fixed bin(17,0) level 2 in structure "cdt" dcl 14-44 in procedure "dial_ctl_" ref 724 1454 1643 current_terminal_type 101 based char(32) level 2 packed packed unaligned dcl 14-72 set ref 402* 475* 890* 1522* 1524* 1534* current_time 126 based fixed bin(71,0) level 2 dcl 6-55 set ref 468* 787 897 1210 2044 date 000227 automatic char(50) packed unaligned dcl 167 set ref 468* 475* date_time_$format 000164 constant entry external dcl 310 ref 468 default_project 34 000724 automatic char(16) level 3 dcl 2649 set ref 2070 desired_channel 000244 automatic char(32) packed unaligned dcl 168 set ref 1497* 1916* 1920* 1921* 1926 1929 1967 1971 1974* 1976* device_acct_$off 000170 constant entry external dcl 313 ref 619 1579 device_acct_$on 000172 constant entry external dcl 314 ref 1427 devx based fixed bin(17,0) level 2 packed packed unaligned dcl 2370 set ref 2377* devx_msg 1(18) based bit(1) level 3 packed packed unaligned dcl 336 set ref 2380* dial_control_channel 6 based fixed bin(71,0) level 2 dcl 16-21 ref 2240 dial_ctl_ring 120(18) based fixed bin(3,0) level 2 packed packed unsigned unaligned dcl 14-72 set ref 776 1163* 1283* dial_ev_chn 132 based fixed bin(71,0) level 2 in structure "cdte" dcl 14-72 in procedure "dial_ctl_" set ref 420* 487* 589 653* 763 840 871 1161* 1285* 1338* 1596* 2279* 2382* 2540* dial_ev_chn 352 based fixed bin(71,0) level 2 in structure "ute" dcl 29-78 in procedure "dial_ctl_" set ref 487 971* 1848 2154 2183 dial_out 50(09) based bit(1) level 4 packed packed unaligned dcl 14-72 ref 1723 dial_out_destination 26 based char(32) level 2 dcl 16-21 set ref 1242 2428* dial_out_used_privilege 000264 automatic bit(1) dcl 170 set ref 898* 1241* 1263 dial_qualifier 343 based char(22) level 2 in structure "ute" packed packed unaligned dcl 29-78 in procedure "dial_ctl_" set ref 471* 473* 686 689 694* 938 938 944* 972* 1008 1008 1043 1043 1054* 1852 2154* 2175 dial_qualifier 2 000265 automatic char(32) level 2 in structure "DSI" dcl 171 in procedure "dial_ctl_" set ref 689* 923* 1000* 1035* dial_qualifier 000254 automatic char(32) packed unaligned dcl 169 in procedure "dial_ctl_" set ref 366* 373 379* 390 2175 2521 2528 2533* 2566 2573 dial_qualifier 10 based char(22) level 2 in structure "dial_server_request" dcl 16-21 in procedure "dial_ctl_" set ref 923 933* 938 944* 950 952* 960* 972 1000 1008 1008 1035 1043 1043 1852 2428* dial_rq_privileged 120(21) based bit(1) level 2 packed packed unaligned dcl 14-72 set ref 776* 1164* dial_server 50(11) based bit(1) level 4 packed packed unaligned dcl 14-72 ref 1723 dial_server_flags 351 based structure level 2 dcl 29-78 dial_server_info based structure level 1 dcl 7-124 dial_server_request based structure level 1 dcl 16-21 dial_server_request_version_4 constant fixed bin(17,0) initial dcl 16-19 ref 2237 dial_server_ring 350(18) based fixed bin(3,0) level 2 packed packed unsigned unaligned dcl 29-78 set ref 688 699* 973* 1001 1036 2154* 2190 dialed_to_procid 112 based bit(36) level 2 dcl 14-72 set ref 419* 486* 590 612 612* 652* 726 762 766* 770 839 843* 847 870 874* 878 1097 1162* 1284* 1331 1595* 2278* 2382* 2539* dialed_up_time 123 based fixed bin(35,0) level 2 dcl 14-72 set ref 2044* 2044 dialok 100(07) based bit(1) level 3 packed packed unaligned dcl 29-78 set ref 928 1005 1040 1081 1126 1234 1304 2154* 2179 dialup_flags 75(18) based structure level 2 packed packed unaligned dcl 14-72 dialup_time 124 based fixed bin(71,0) level 2 dcl 14-72 set ref 787* 897* 1210* 2044 display_access_class_ 000166 constant entry external dcl 312 ref 612 612 2423 2424 dutbl based structure level 1 dcl 18-29 dutp 000722 automatic pointer initial dcl 18-27 set ref 414* 415 18-27* 1821 1822 2129* 2130 2131 2212* entry 200 based structure array level 2 in structure "anstbl" dcl 6-55 in procedure "dial_ctl_" set ref 1813 2121 entry 200 based structure array level 2 in structure "autbl" dcl 1-28 in procedure "dial_ctl_" set ref 1830 2140 entry 200 based structure array level 2 in structure "dutbl" dcl 18-29 in procedure "dial_ctl_" set ref 415 1822 2131 error_code based fixed bin(35,0) level 2 dcl 2351 set ref 2359* error_msg 1(19) based bit(1) level 3 packed packed unaligned dcl 336 set ref 2358* error_table_$action_not_performed 000030 external static fixed bin(35,0) dcl 256 set ref 1328* 2297 2327 error_table_$ai_out_range 000034 external static fixed bin(35,0) dcl 258 set ref 397* 1953 error_table_$ai_restricted 000032 external static fixed bin(35,0) dcl 257 set ref 935* 1719 error_table_$bad_name 000036 external static fixed bin(35,0) dcl 259 ref 1924 error_table_$badstar 000040 external static fixed bin(35,0) dcl 260 ref 1922 error_table_$dial_active 000042 external static fixed bin(35,0) dcl 261 set ref 946* error_table_$dial_id_busy 000044 external static fixed bin(35,0) dcl 262 ref 1861 error_table_$id_not_found 000046 external static fixed bin(35,0) dcl 263 ref 2061 error_table_$insufficient_access 000050 external static fixed bin(35,0) dcl 264 set ref 1156* 1493 1896 1901 1944 error_table_$invalid_resource_state 000052 external static fixed bin(35,0) dcl 265 ref 1669 1697 error_table_$io_no_permission 000054 external static fixed bin(35,0) dcl 266 set ref 481* 812 1100* 1273 1334* 1995 1998 error_table_$name_not_found 000056 external static fixed bin(35,0) dcl 267 ref 954 error_table_$no_connection 000062 external static fixed bin(35,0) dcl 269 set ref 2288* error_table_$no_dialok 000064 external static fixed bin(35,0) dcl 270 set ref 928* 1005* 1040* 1081* 1126* 1234* 1304* error_table_$noentry 000060 external static fixed bin(35,0) dcl 268 ref 954 1896 error_table_$order_error 000066 external static fixed bin(35,0) dcl 271 set ref 1279* error_table_$request_not_recognized 000070 external static fixed bin(35,0) dcl 272 set ref 533* error_table_$request_pending 000072 external static fixed bin(35,0) dcl 273 ref 2271 error_table_$resource_attached 000074 external static fixed bin(35,0) dcl 274 ref 1667 1693 error_table_$resource_not_free 000076 external static fixed bin(35,0) dcl 275 ref 1671 1695 error_table_$resource_unavailable 000100 external static fixed bin(35,0) dcl 276 ref 1489 1491 1495 1665 1679 1691 2004 error_table_$resource_unknown 000102 external static fixed bin(35,0) dcl 277 ref 1485 1651 error_table_$unable_to_check_access 000104 external static fixed bin(35,0) dcl 278 ref 1898 error_table_$undefined_order_request 000106 external static fixed bin(35,0) dcl 279 ref 2002 2271 2619 error_table_$unimplemented_version 000110 external static fixed bin(35,0) dcl 280 set ref 2237* event 72 based fixed bin(71,0) level 2 dcl 14-72 set ref 1605* 1617* existing_priv_range 001660 automatic bit(72) array dcl 1840 set ref 1843* 1844* 1864* fake_connect 001134 automatic bit(1) dcl 1361 set ref 1366* 1372* 1405 find_person_project 000277 automatic bit(1) dcl 172 set ref 442* 444* 2161 2170 first 000476 automatic fixed bin(17,0) dcl 2456 set ref 2471* 2475* 2478* fixed builtin function dcl 284 ref 988 988 1023 1023 1066 1066 flags 11 based structure level 2 in structure "set_term_type_info" packed packed unaligned dcl 23-8 in procedure "dial_ctl_" set ref 1517* flags 50 based structure level 2 in structure "dial_server_request" dcl 16-21 in procedure "dial_ctl_" flags 50 based structure level 2 in structure "cdte" dcl 14-72 in procedure "dial_ctl_" flags 0(04) 000265 automatic structure level 2 in structure "DSI" packed packed unaligned dcl 171 in procedure "dial_ctl_" float builtin function dcl 284 ref 2044 fnp_entry 120 based structure array level 2 dcl 14-44 fnpe based structure level 1 dcl 14-200 format 000300 automatic char(100) dcl 173 set ref 401* 402* 469* 475* 2301* 2302 2315* 2331* 2332 2338* found 001144 automatic bit(1) dcl 1442 set ref 1450* 1454 1456* 1457 1458 1460* 1464* 1468 1470 1470* 1473* 1474 1475 1475* 1479 1482 found_device_available 001145 automatic bit(1) dcl 1443 set ref 1450* 1474* 1474 1491 found_good_access 001147 automatic bit(1) dcl 1445 set ref 1450* 1479* 1479 1493 found_good_attributes 001150 automatic bit(1) dcl 1446 set ref 1450* 1468* 1468 1489 found_in_cdt 001146 automatic bit(1) dcl 1444 set ref 1450* 1457* 1457 1485 funct parameter char(8) dcl 672 set ref 667 683* 692 704 706 714 generic_destination based char(32) packed unaligned dcl 14-195 set ref 1971 1976* generic_destination_present 50(24) based bit(1) level 4 packed packed unaligned dcl 14-72 ref 1971 1976 get_process_access_class_ 000174 constant entry external dcl 315 ref 394 394 602 group_id 001744 automatic char(32) packed unaligned dcl 2033 in procedure "make_group_id" set ref 2035* 2036* 2038 group_id 4 based char(32) level 2 in structure "as_request_sender" packed packed unaligned dcl 11-15 in procedure "dial_ctl_" set ref 2227 2425* hash_$search 000176 constant entry external dcl 316 ref 2073 hbound builtin function dcl 284 ref 2411 hcs_$get_user_access_modes 000200 constant entry external dcl 317 ref 1892 hcs_$wakeup 000202 constant entry external dcl 319 ref 1605 2360 2382 2398 header based structure level 2 in structure "autbl" dcl 1-28 in procedure "dial_ctl_" header based structure level 2 in structure "dutbl" dcl 18-29 in procedure "dial_ctl_" header based structure level 2 in structure "anstbl" dcl 6-55 in procedure "dial_ctl_" header based structure level 2 in structure "dial_server_request" dcl 16-21 in procedure "dial_ctl_" i 001642 automatic fixed bin(17,0) dcl 1808 in procedure "aim_check_registered_server_namedup" set ref 1812* 1813* 1821* 1822* 1829* 1830* i 002000 automatic fixed bin(17,0) dcl 2115 in procedure "find_dialable_process" set ref 2120* 2121* 2130* 2131* 2139* 2140* i 000331 automatic fixed bin(17,0) dcl 174 in procedure "dial_ctl_" set ref 402* 404* 404* 407* 475* 476* 724* 725* 1454* 1455* 2246* id 1 000644 automatic char(4) level 2 packed packed unaligned dcl 201 set ref 891 in_use based fixed bin(17,0) level 2 dcl 14-72 set ref 417* 663* 726 884* 1258* 1277* 1381* 1387* 1602* 1611* 1671 1691 2263 2281* initial_command 1571 based char(64) array level 3 in structure "cdt" dcl 14-44 in procedure "dial_ctl_" set ref 1674 initial_command 51 based char(64) level 2 in structure "cdte" dcl 14-72 in procedure "dial_ctl_" set ref 1971 1976 initial_ring 101 based fixed bin(17,0) level 2 dcl 29-78 ref 2519 2564 initial_terminal_type 37 based char(32) level 2 packed packed unaligned dcl 14-72 ref 1510 1512 1512 1516 ioa_$general_rs 000256 constant entry external dcl 2446 ref 2478 ioa_$rs 000204 constant entry external dcl 320 ref 402 475 ioa_$rsnnl 000206 constant entry external dcl 321 ref 471 473 933 944 952 960 1049 1093 1154 1316 1563 2036 ioa_buffer 000100 automatic char(1000) packed unaligned dcl 2452 set ref 2478* 2481* 2483* ipc_$drain_chn 000210 constant entry external dcl 322 ref 1617 junk 000332 automatic char(8) dcl 175 set ref 401* 469* 1555* 2301* 2331* lbound builtin function dcl 284 ref 1464 2411 length builtin function dcl 284 ref 1512 1527 1532 1532 2068 2070 2085 lg_ctl_$logout_channel 000212 constant entry external dcl 323 ref 647 line_type 0(18) based fixed bin(17,0) level 2 in structure "rv_chan" packed packed unaligned dcl 2370 in procedure "SEND_CHANNEL_MESSAGE" set ref 2378* line_type 37 based fixed bin(17,0) level 2 in structure "dial_server_request" dcl 16-21 in procedure "dial_ctl_" set ref 1464 1464 2428* line_type 33 based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 14-72 in procedure "dial_ctl_" ref 1464 2378 line_types 000000 constant char(16) initial array packed unaligned dcl 19-54 ref 1464 login_server_present 143 based bit(1) level 2 dcl 6-55 ref 731 low builtin function dcl 284 ref 1512 master_destroyed parameter bit(1) packed unaligned dcl 1549 ref 1543 1555 match_star_name_ 000214 constant entry external dcl 324 ref 1974 1976 mcode 000334 automatic fixed bin(35,0) dcl 176 set ref 467* 469* 710* 712* 1555* message parameter bit(15) dcl 2369 in procedure "SEND_CHANNEL_MESSAGE" ref 2366 2381 message parameter bit(15) dcl 2390 in procedure "SEND_CONTROL_MESSAGE" ref 2387 2397 mode 000375 automatic bit(36) dcl 178 set ref 1147* 1148 1892* 1901 modes_string 001362 automatic char(512) packed unaligned dcl 1508 set ref 1534* 1538 mother 135(18) based fixed bin(17,0) level 3 packed packed unaligned dcl 14-72 ref 1674 1674 1678 mpxe based structure level 1 dcl 14-221 in procedure "dial_ctl_" mpxe 204 based structure array level 3 in structure "cdt" dcl 14-44 in procedure "dial_ctl_" set ref 1678 mpxep 000716 automatic pointer dcl 14-41 set ref 1674* 1678* 1679 n_dialups 121 based fixed bin(17,0) level 2 dcl 14-72 set ref 1167* 1167 1286* 1286 n_logins 122 based fixed bin(17,0) level 2 dcl 14-72 set ref 788* 788 896* 896 1211* 1211 name 1 based char(32) level 2 in structure "set_term_type_info" packed packed unaligned dcl 23-8 in procedure "dial_ctl_" set ref 1516* 1522 name 2 based char(32) level 2 in structure "cdte" dcl 14-72 in procedure "dial_ctl_" set ref 379* 402* 425* 584* 587 595 612* 619* 627 756* 760 805* 809 835* 864* 867 1139 1180* 1188* 1193* 1246 1275* 1394 1419* 1427* 1559* 1566 1579* 1645 1712* 1723 1741* 1967 1974 2006* 2268* 2271* 2274* 2512 2533* 2555 2621* ndialed_consoles 342 based fixed bin(17,0) level 2 dcl 29-78 set ref 488* 488 701 733* 988 988 1023 1023 1049 1049* 1049 1066 1066 1165* 1165 1287* 1287 2021 2023* 2026* 2026 no_hangup 50(05) based bit(1) level 3 packed packed unaligned dcl 16-21 set ref 1108* 2434* no_listen 50(08) based bit(1) level 3 packed packed unaligned dcl 16-21 set ref 1104 2434* null builtin function dcl 284 ref 361 369 461 577 606 606 610 639 639 654 676 764 781 781 811 811 820 820 841 872 881 881 1-26 6-53 18-27 29-76 1091 1182 1182 1190 1190 1197 1197 1267 1267 1314 1342 1342 1390 1390 1416 1416 1422 1422 1449 1484 1576 1576 1597 1609 1609 1649 1695 2145 2206 2247 2254 2265 2265 2277 2306 2306 2311 2311 2313 2313 2509 2531 2531 2538 2576 2576 operation parameter fixed bin(17,0) dcl 1738 in procedure "aim_check_process_and_channel" set ref 1731 1741* 1759 operation parameter fixed bin(17,0) dcl 1709 in procedure "access_check_channel_and_process" set ref 1703 1712* 1717* 1723 1723 1723 1723 operation parameter fixed bin(17,0) dcl 1447 in procedure "look_for_channel" set ref 1436 1475* options 50(17) based structure level 3 packed packed unaligned dcl 14-72 pathname_ 000216 constant entry external dcl 325 ref 1154 1154 person 137 based char(20) level 3 in structure "cdte" packed packed unaligned dcl 14-72 in procedure "dial_ctl_" set ref 425* 2533* person 4 based char(24) level 2 in structure "ute" packed packed unaligned dcl 29-78 in procedure "dial_ctl_" set ref 471* 473* 530* 683* 1275* 1419* 1559* 1712* 1741* 2036* 2154* 2163 2268* 2271* 2274* 2315* 2338* phone_data 000376 automatic varying char(32) dcl 179 set ref 1242* 1262 1269 1269 pnt_entry based structure level 1 dcl 20-22 pnt_manager_$admin_get_entry 000220 constant entry external dcl 326 ref 2060 pnte 000724 automatic structure level 1 dcl 2649 set ref 2060 2060 priv_attach 50(10) based bit(1) level 4 packed packed unaligned dcl 14-72 ref 1723 1723 privileged parameter bit(1) packed unaligned dcl 1708 in procedure "access_check_channel_and_process" set ref 1703 1717* privileged parameter bit(1) packed unaligned dcl 1736 in procedure "aim_check_process_and_channel" set ref 1731 1741* 1764 1771 privileged 0(05) 000265 automatic bit(1) level 3 in structure "DSI" packed packed unaligned dcl 171 in procedure "dial_ctl_" set ref 690* 925* 1003* 1037* privileged_attach 50(02) based bit(1) level 3 packed packed unaligned dcl 16-21 set ref 524 1470 2434* privileged_dial_server 351(01) based bit(1) level 3 packed packed unaligned dcl 29-78 set ref 690 698* 969* 978 982 1003 1037 1855 2190* privileged_server 50(10) based bit(1) level 3 packed packed unaligned dcl 16-21 ref 925 931 969 1857 1869 1869 privileges 1(18) based structure level 2 in structure "aim_template" packed packed unaligned dcl 3-12 in procedure "dial_ctl_" privileges 1(18) 000704 automatic structure level 2 in structure "sender_authorization" packed packed unaligned dcl 505 in procedure "dial_ctl_" proc_id 276 based bit(36) level 2 dcl 29-78 set ref 486 612 726 731* 770 847 878 1162 1284 1331 1408* process 111 based pointer level 2 packed packed unaligned dcl 14-72 set ref 416* 485* 605 609 654* 758 838 869 1160* 1282* 1597* 1667 1693 1695 2277* 2538* process_authorization 24 based bit(72) level 2 dcl 29-78 set ref 470* 634 1770* 1776* 1844 1869* 1869* 2560 process_authorization_range 300 based bit(72) array level 2 dcl 29-78 set ref 1764* 1771* 1950* process_destroyed_flag 000410 automatic bit(1) dcl 181 set ref 717* 721* 731* process_group_id 000411 automatic char(32) initial packed unaligned dcl 182 set ref 182* 950* 1147* 1150* 2227* process_id 000407 automatic bit(36) initial dcl 180 in procedure "dial_ctl_" set ref 180* 590* 592 762* 839* 870* 1097 2228* 2246* 2249* 2360* 2398* process_id 14 based bit(36) level 2 in structure "as_request_sender" dcl 11-15 in procedure "dial_ctl_" set ref 2228 2425* process_ring 000421 automatic fixed bin(3,0) initial dcl 183 set ref 183* 560 638 924 931 950* 973 1079 1124 1147 1163 1232 1283 1302 1403 1475* 1575 2229* project 12 based char(12) level 2 in structure "ute" packed packed unaligned dcl 29-78 in procedure "dial_ctl_" set ref 471* 473* 530* 683* 1275* 1419* 1559* 1712* 1741* 2036* 2154* 2166 2268* 2271* 2274* 2315* 2338* project based structure level 1 dcl 21-53 in procedure "dial_ctl_" project 144 based char(9) level 3 in structure "cdte" packed packed unaligned dcl 14-72 in procedure "dial_ctl_" set ref 425* 2533* project 722 based structure array level 2 in structure "sat" dcl 21-32 in procedure "dial_ctl_" set ref 2077 project_id 1 based char(12) level 2 packed packed unaligned dcl 21-53 set ref 2078 2081* 2085 proposed_priv_range 001664 automatic bit(72) array dcl 1841 set ref 1845* 1846* 1869* public 22 000724 automatic structure level 2 dcl 2649 reason 000422 automatic char(256) packed unaligned dcl 184 set ref 371* 563* 587* 594* 606* 625* 639* 681* 716* 720* 726* 760* 809* 867* 933* 935* 944* 946* 952* 956* 960* 962* 1016* 1017* 1020* 1021* 1059* 1063* 1086* 1087* 1093* 1094* 1099* 1100* 1130* 1133* 1154* 1156* 1238* 1263* 1265* 1267* 1309* 1310* 1316* 1317* 1327* 1328* 1333* 1334* 1650* 1899* 1926* 1945* 1954* 2233* 2302* 2306* 2311* 2313* 2332* 2334* 2336* reason_code 000522 automatic fixed bin(35,0) dcl 185 set ref 370* 563 563* 582* 680* 759* 808* 866* 954 954* 956* 958* 962* 1094* 1130 1130* 1238 1238* 1254* 1255 1255* 1317* 1452* 1485 1485* 1489* 1491* 1493* 1495 1495* 1497* 1651* 1664* 1665* 1667* 1669* 1671* 1679* 1683 1690* 1691* 1693* 1695* 1697* 1699 1719* 1889* 1896* 1898* 1901* 1903* 1905 1924* 1944* 1953* 1960* 2232* registered 0(04) 000265 automatic bit(1) level 3 packed packed unaligned dcl 171 set ref 691* 926* 1002* 1038* registered_dial_server 351 based bit(1) level 3 packed packed unaligned dcl 29-78 set ref 691 697* 938 944* 964* 967* 975 1002 1038 1055* 1850 2154* 2170 registered_server 50(04) based bit(1) level 3 packed packed unaligned dcl 16-21 set ref 926 938 948 2434* release_channel 50(03) based bit(1) level 3 packed packed unaligned dcl 16-21 set ref 522 551 566 2434* release_dial_id 50(06) based bit(1) level 3 packed packed unaligned dcl 16-21 set ref 526 2434* reply_channel 2 based fixed bin(71,0) level 3 dcl 16-21 ref 2235 report_privilege parameter bit(1) dcl 1362 ref 1348 1412 request_ptr 000720 automatic pointer dcl 16-17 set ref 518 520 522 524 526 551 566 923 925 926 931 933 938 938 944 948 950 952 960 969 972 1000 1008 1008 1035 1043 1043 1075 1084 1093 1104 1108 1117 1121 1133 1135 1145 1167 1176 1229 1242 1299 1307 1316 1460 1460 1464 1464 1470 1645 1650 1697 1852 1857 1869 1869 1914 1920 1939 1939 1950 1957 2215* 2235 2237 2240 2424 2428 2428 2428 2428 2428 2428 2434 2434 2434 2434 2434 2434 2434 2434 2434 2434 request_type 000523 automatic fixed bin(17,0) initial dcl 186 set ref 186* 513* 551* 553* 754* 801* 832* 859* 920* 998* 1033* 1073* 1117* 1119* 2305 2306 2306 2308 2313 2313 2334 2336 2336 requested_access_class 000524 automatic bit(72) dcl 187 set ref 1759* 1762* 1937* 1957* 1994 1994 2012 retval 000526 automatic fixed bin(71,0) dcl 188 set ref 2356 2360* 2375 2382* 2394 2398* rq_person parameter char(22) packed unaligned dcl 2054 in procedure "convert_aliases" set ref 2051 2060* 2065* 2068* 2068 rq_person 000530 automatic char(22) packed unaligned dcl 189 in procedure "dial_ctl_" set ref 434* 437* 2163 rq_project parameter char(9) packed unaligned dcl 2055 in procedure "convert_aliases" set ref 2051 2070 2070* 2070 2073* 2078 2078 2081* 2085* 2085 rq_project 000536 automatic char(9) packed unaligned dcl 190 in procedure "dial_ctl_" set ref 436* 437* 2166 rtrim builtin function dcl 284 ref 978 980 1242 1538 1890 2302 2332 2501 2505 rv based structure level 1 dcl 336 set ref 2357* 2376* 2395* rv_chan based structure level 1 packed packed unaligned dcl 2370 rv_message_error based structure level 1 dcl 2351 rvp 000542 automatic pointer dcl 191 set ref 2356* 2357 2358 2359 2375* 2376 2377 2378 2380 2381 2394* 2395 2396 2397 sat based structure level 1 dcl 21-32 satep 001044 automatic pointer dcl 2652 set ref 2077* 2078 2078 2081 2081* 2085 satp defined pointer dcl 9-26 set ref 2076* 2077 satx 001771 automatic fixed bin(35,0) dcl 2058 set ref 2073* 2077 scdtp defined pointer dcl 9-27 ref 724 725 1454 1455 1643 1644 1674 1678 sender_authorization 000704 automatic structure level 1 dcl 505 set ref 1846 1864 1864 1869 1869 1937 1937 1939 1939 2230* server_authorization 000544 automatic char(100) packed unaligned dcl 192 set ref 470* 471 473* server_ring 000265 automatic fixed bin(3,0) level 2 packed packed unaligned dcl 171 set ref 688* 924* 1001* 1036* server_type 40 based char(32) level 2 dcl 16-21 set ref 2428* service_info 10 000172 automatic bit(1) level 3 in structure "CAI" packed packed unaligned dcl 163 in procedure "dial_ctl_" set ref 597* 629* 1261* 1396* 1568* 2304* 2310* 2527* 2572* service_info 11 000172 automatic char(32) level 2 in structure "CAI" dcl 163 in procedure "dial_ctl_" set ref 598* 630* 1262* 1397* 1569* 2305* 2528* 2573* service_type 32(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 14-72 ref 404 476 647 651 785 1167 1208 1587 1591 1600 2044 set_term_type_info based structure level 1 dcl 23-8 set_type_info 000664 automatic structure level 1 unaligned dcl 203 set ref 1514 slave_dial 50(13) based bit(1) level 4 packed packed unaligned dcl 14-72 set ref 425* 446 647 2533* star_channel_name 000575 automatic bit(1) dcl 193 set ref 1485 1930* 1967 start 50 based bit(1) level 3 packed packed unaligned dcl 16-21 set ref 518 2434* state 77 based fixed bin(17,0) level 2 in structure "cdte" dcl 14-72 in procedure "dial_ctl_" ref 408 479 661 1178 1206 1613 1620 1631 1665 state based fixed bin(17,0) level 2 in structure "mpxe" dcl 14-221 in procedure "dial_ctl_" ref 1679 static_trace_sw 000010 internal static bit(1) initial packed unaligned dcl 346 set ref 379 515 555 584 683 756 805 835 864 904* 911* 1180 1188 1712 1741 1903 2154 stop 50(01) based bit(1) level 3 packed packed unaligned dcl 16-21 set ref 520 2434* string builtin function dcl 284 set ref 1517* stti_version_1 constant fixed bin(17,0) initial dcl 23-5 ref 1515 sttip 001046 automatic pointer dcl 23-6 set ref 1514* 1515 1516 1517 1518* 1522 substr builtin function dcl 284 ref 706 2068 2070 2085 suppress_hangup parameter bit(1) packed unaligned dcl 1550 set ref 1543 1563* 1607 suppress_listen parameter bit(1) packed unaligned dcl 1551 in procedure "release_channel" set ref 1543 1563* 1585 1620 suppress_listen 000576 automatic bit(1) packed unaligned dcl 194 in procedure "dial_ctl_" set ref 1104* 1107* 1108* sys_log_ 000222 constant entry external dcl 327 ref 425 530 612 766 843 874 905 912 2006 2024 2081 2220 2249 2268 2315 2338 2483 2533 sys_log_$error_log 000224 constant entry external dcl 328 ref 1150 1193 1275 1419 1559 2065 2271 2274 2481 2621 tab_string 001161 automatic varying char(512) dcl 1507 set ref 1524* 1527 1532 1532 1532 1532 tag 15 based char(1) level 2 packed packed unaligned dcl 29-78 set ref 2036* tandd_attach 50(07) based bit(1) level 3 packed packed unaligned dcl 16-21 set ref 1117 1135 1145 1167 1176 1697 2434* target_person_project 000577 automatic char(32) packed unaligned dcl 195 set ref 367* 379 379* 432 434 436 term_info 000644 automatic structure level 1 unaligned dcl 201 set ref 887 887 term_type 2 000644 automatic char(32) level 2 packed packed unaligned dcl 201 set ref 890 terminal_info based structure level 1 dcl 25-6 terminal_info_version constant fixed bin(17,0) initial dcl 25-16 ref 886 threads 134 based structure level 2 dcl 14-72 tra_vec 74(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 14-72 set ref 418* 823* 1183* 1201* 1217* 1259* 1278* 1337* 1380* 1386* 1603* 1613* 1623 1623* 1631* 2286* ttt_info_$initial_string 000226 constant entry external dcl 329 ref 1524 ttt_info_$modes 000230 constant entry external dcl 330 ref 1534 tty_access_class based structure level 1 dcl 26-21 tty_id_code 100 based char(4) level 2 dcl 14-72 set ref 402* 475* 891* tty_name 316 based char(32) level 2 packed packed unaligned dcl 29-78 set ref 2024* twx 76 based fixed bin(17,0) level 2 dcl 14-72 ref 1665 2377 type parameter fixed bin(17,0) packed unaligned dcl 2407 ref 2404 2411 2411 2413 type_names 002076 automatic varying char(10) initial array dcl 2408 set ref 2408* 2408* 2408* 2408* 2408* 2408* 2408* 2408* 2408* 2411 2411 2413 uc_cleanup_network_dials_ 000232 constant entry external dcl 331 ref 731 unspec builtin function dcl 284 set ref 1846 1864 1864 1869 1869 1937 1937 1939 1939 2230* 2357* 2376* 2395* 2607* up_sysctl_$check_acs 000234 constant entry external dcl 332 ref 1147 uptr parameter pointer dcl 672 ref 667 675 used_privilege 000607 automatic bit(1) dcl 196 set ref 454* 491* 776* 791* 1214* 1241 1475* 1936* 1958* user_abs_attributes based structure level 1 dcl 28-25 user_attributes based structure level 1 dcl 27-21 user_id 22 000724 automatic char(32) level 3 dcl 2649 set ref 2068 user_lth 000610 automatic fixed bin(17,0) dcl 197 set ref 471* 473* user_name parameter char packed unaligned dcl 1885 in procedure "check_acs" set ref 1879 1892* 1903* user_name 137 based structure level 2 in structure "cdte" packed packed unaligned dcl 14-72 in procedure "dial_ctl_" set ref 1598* user_ring parameter fixed bin(3,0) dcl 1886 set ref 1879 1892 1903* user_string 000611 automatic char(100) packed unaligned dcl 198 set ref 471* 473* 475* user_validation_level 27 000172 automatic fixed bin(3,0) level 2 in structure "CAI" dcl 163 in procedure "dial_ctl_" set ref 560* 638* 1079* 1124* 1232* 1302* 1403* 1575* 2519* 2564* user_validation_level 10(03) 000172 automatic bit(1) level 3 in structure "CAI" packed packed unaligned dcl 163 in procedure "dial_ctl_" set ref 559* 637* 1078* 1123* 1231* 1301* 1402* 1574* 2518* 2563* ut_header based structure level 1 dcl 30-16 ute based structure level 1 dcl 29-78 utep 001050 automatic pointer initial dcl 29-76 set ref 369* 415* 416 459* 461 470 471 471 471 473 473 473 485 486 487 488 488 530 530 605* 606* 609* 610 612 619* 634 639* 675* 683 683 686 688 689 690 691 693* 694 697 698 699 701 726 731 733 758* 764 770 776* 838* 841 847 869* 872 878 29-76* 928 938 938 938 944 944 964 967 969 971 972 973 975 978 982 986* 988 988 1001 1002 1003 1005 1008 1008 1012* 1023 1023 1036 1037 1038 1040 1043 1043 1049 1049 1049 1053* 1054 1055 1066 1066 1081 1126 1160 1162 1165 1165 1234 1267* 1275 1275 1282 1284 1287 1287 1304 1331 1408 1416* 1419 1419 1422* 1427* 1475* 1559 1559 1576* 1579* 1667 1693 1950 2021 2023 2024 2026 2026 2246* 2247 2268 2268 2271 2271 2274 2274 2306* 2311* 2313* 2315 2315 2334* 2336* 2338 2338 2509 2519 2531* 2560 2564 2576* valid 10 000172 automatic structure level 2 dcl 163 set ref 558* 596* 628* 1077* 1122* 1230* 1300* 1395* 1567* 2513* 2556* validation_level 15 based fixed bin(3,0) level 2 dcl 11-15 set ref 2229 2425* version based char(8) level 2 in structure "as_request_sender" dcl 11-15 in procedure "dial_ctl_" set ref 2218 2220* version 4 based fixed bin(17,0) level 2 in structure "dial_server_request" dcl 16-21 in procedure "dial_ctl_" ref 2237 version 000644 automatic fixed bin(17,0) level 2 in structure "term_info" dcl 201 in procedure "dial_ctl_" set ref 886* version based fixed bin(17,0) level 2 in structure "set_term_type_info" dcl 23-8 in procedure "dial_ctl_" set ref 1515* was_tandd 001570 automatic bit(1) packed unaligned dcl 1552 set ref 1588* 1592* 1600 why parameter char packed unaligned dcl 2295 in procedure "REJECT_CHANNEL_REQUEST" set ref 2291 2302 2315* why parameter char packed unaligned dcl 2325 in procedure "REJECT_DIALID_REQUEST" set ref 2321 2332 2338* word 000642 automatic char(8) dcl 199 set ref 704* 706* 708* 710 720 1604* 1605 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 28-38 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 29-326 ACCESS_AUDIT_HEADER_VERSION_3 internal static fixed bin(9,0) initial unsigned dcl 5-54 ACTIVE internal static fixed bin(17,0) initial dcl 14-272 ACTIVE_VALUES internal static char(18) initial array dcl 17-86 ALL_PRIVILEGES internal static bit(36) initial dcl 4-16 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 27-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 6-51 ARH_TYPE_NO_PROXY internal static fixed bin(17,0) initial dcl 5-52 ARH_TYPE_PROXY internal static fixed bin(17,0) initial dcl 5-50 ASR_ABS_COMMAND internal static fixed bin(17,0) initial dcl 10-29 ASR_ADMIN_COMMAND internal static fixed bin(17,0) initial dcl 10-29 ASR_BUMP_USER internal static fixed bin(17,0) initial dcl 10-29 ASR_COM_CHANNEL_INFO internal static fixed bin(17,0) initial dcl 10-29 ASR_DAEMON_COMMAND internal static fixed bin(17,0) initial dcl 10-29 ASR_DEFER_IN_ADMIN_MODE internal static bit(1) initial array packed unaligned dcl 10-45 ASR_DIAL_OUT internal static fixed bin(17,0) initial dcl 10-29 ASR_DIAL_SERVER internal static fixed bin(17,0) initial dcl 10-29 ASR_FIRST_TYPE internal static fixed bin(17,0) initial dcl 10-29 ASR_FPE_CAUSES_LOGOUT internal static fixed bin(17,0) initial dcl 10-29 ASR_FPE_CAUSES_NEW_PROC internal static fixed bin(17,0) initial dcl 10-29 ASR_LAST_TYPE internal static fixed bin(17,0) initial dcl 10-29 ASR_NOTE_PNT_CHANGE internal static fixed bin(17,0) initial dcl 10-29 ASR_PROC_TERM_NOTIFY internal static fixed bin(17,0) initial dcl 10-29 ASR_REQUEST_NAMES internal static char(40) initial array packed unaligned dcl 10-48 AS_AUDIT_CHANNEL_ACTIONS internal static char(12) initial array packed unaligned dcl 7-193 AS_AUDIT_CHANNEL_DIRECTION internal static char(4) initial array packed unaligned dcl 7-196 AS_AUDIT_CHANNEL_SERVICE_INFO internal static char(12) initial array packed unaligned dcl 7-199 AS_AUDIT_PROCESS_ACTIONS internal static char(10) initial array packed unaligned dcl 7-202 AS_AUDIT_PROCESS_CONNECT internal static fixed bin(17,0) initial dcl 7-162 AS_AUDIT_PROCESS_CREATE internal static fixed bin(17,0) initial dcl 7-162 AS_AUDIT_PROCESS_DESTROY internal static fixed bin(17,0) initial dcl 7-162 AS_AUDIT_PROCESS_DISCONNECT internal static fixed bin(17,0) initial dcl 7-162 AS_AUDIT_PROCESS_TERMINATE internal static fixed bin(17,0) initial dcl 7-162 AS_AUDIT_RECORD_CHN_VERSION_1 internal static fixed bin(9,0) initial dcl 7-156 AS_AUDIT_RECORD_DIALID_VERSION_1 internal static fixed bin(9,0) initial dcl 7-159 AS_AUDIT_RECORD_IA_VERSION_1 internal static fixed bin(9,0) initial dcl 7-153 AT_NORMAL internal static char(8) initial packed unaligned dcl 6-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 6-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 6-116 AUTBL_CONTROL_NAMES internal static varying char(20) initial array dcl 1-68 AUTBL_version_4 internal static fixed bin(17,0) initial dcl 1-24 A_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 A_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 CDT_version internal static fixed bin(17,0) initial dcl 14-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 14-38 CHANNEL_DELETED internal static fixed bin(17,0) initial dcl 14-288 COMM_PRIVILEGE internal static bit(36) initial dcl 4-16 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 29-280 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 29-332 DIR_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-33 DIR_PRIVILEGE internal static bit(36) initial dcl 4-16 DN355 internal static fixed bin(17,0) initial dcl 15-19 DN6600 internal static fixed bin(17,0) initial dcl 15-19 DN6670 internal static fixed bin(17,0) initial dcl 15-19 DN7100 internal static fixed bin(17,0) initial dcl 15-19 DONT_MASK internal static bit(2) initial packed unaligned dcl 29-280 DO_MASK internal static bit(2) initial packed unaligned dcl 29-280 DUTBL_version_4 internal static fixed bin(17,0) initial dcl 18-25 E_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 E_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 FNP_BOOT internal static fixed bin(17,0) initial dcl 14-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 14-298 FNP_FREE internal static fixed bin(17,0) initial dcl 14-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 14-298 IPC_PRIVILEGE internal static bit(36) initial dcl 4-16 LINE_1050 internal static fixed bin(17,0) initial dcl 19-22 LINE_2741 internal static fixed bin(17,0) initial dcl 19-22 LINE_ARDS internal static fixed bin(17,0) initial dcl 19-22 LINE_ASCII internal static fixed bin(17,0) initial dcl 19-22 LINE_ASYNC1 internal static fixed bin(17,0) initial dcl 19-22 LINE_ASYNC2 internal static fixed bin(17,0) initial dcl 19-22 LINE_ASYNC3 internal static fixed bin(17,0) initial dcl 19-22 LINE_BSC internal static fixed bin(17,0) initial dcl 19-22 LINE_COLTS internal static fixed bin(17,0) initial dcl 19-22 LINE_DSA internal static fixed bin(17,0) initial dcl 19-22 LINE_ETX internal static fixed bin(17,0) initial dcl 19-22 LINE_G115 internal static fixed bin(17,0) initial dcl 19-22 LINE_HASP_OPR internal static fixed bin(17,0) initial dcl 19-22 LINE_HDLC internal static fixed bin(17,0) initial dcl 19-22 LINE_MC internal static fixed bin(17,0) initial dcl 19-22 LINE_POLLED_VIP internal static fixed bin(17,0) initial dcl 19-22 LINE_SYNC1 internal static fixed bin(17,0) initial dcl 19-22 LINE_SYNC2 internal static fixed bin(17,0) initial dcl 19-22 LINE_SYNC3 internal static fixed bin(17,0) initial dcl 19-22 LINE_SYNCH internal static fixed bin(17,0) initial dcl 19-22 LINE_TELNET internal static fixed bin(17,0) initial dcl 19-22 LINE_UNKNOWN internal static fixed bin(17,0) initial dcl 19-22 LINE_VIP internal static fixed bin(17,0) initial dcl 19-22 LINE_X25LAP internal static fixed bin(17,0) initial dcl 19-22 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 29-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 29-284 MPX_BOOT internal static fixed bin(17,0) initial dcl 14-306 MPX_DOWN internal static fixed bin(17,0) initial dcl 14-306 MPX_FREE internal static fixed bin(17,0) initial dcl 14-306 MPX_SERVICE internal static fixed bin(17,0) initial dcl 14-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 14-306 MPX_UP internal static fixed bin(17,0) initial dcl 14-306 M_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 M_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 14-280 NOW_LISTENING internal static fixed bin(17,0) initial dcl 17-76 N_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 N_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 PNT_ENTRY_VERSION_2 internal static fixed bin(17,0) initial dcl 20-64 PREEMPT_BUMPED internal static fixed bin(17,0) initial dcl 17-132 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 17-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 17-132 PREEMPT_TERMSGNL_RECEIVED internal static fixed bin(17,0) initial dcl 17-132 PREEMPT_TERM_SENT internal static fixed bin(17,0) initial dcl 17-132 PREEMPT_UNBUMP internal static fixed bin(17,0) initial dcl 17-132 PREEMPT_UNBUMP_IGNORE_ALARM internal static fixed bin(17,0) initial dcl 17-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 17-142 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 29-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 29-261 PT_ALARM internal static fixed bin(17,0) initial dcl 17-106 PT_BUMP internal static fixed bin(17,0) initial dcl 17-106 PT_DAEMON internal static fixed bin(17,0) initial dcl 29-261 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 17-106 PT_DETACH internal static fixed bin(17,0) initial dcl 17-106 PT_FPE internal static fixed bin(17,0) initial dcl 17-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 17-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 29-261 PT_LOGOUT internal static fixed bin(17,0) initial dcl 17-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 17-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 17-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 17-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 17-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 17-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 29-290 RCP_PRIVILEGE internal static bit(36) initial dcl 4-16 REW_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 REW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RE_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 RE_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 RING1_PRIVILEGE internal static bit(36) initial dcl 4-16 RW_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 R_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 R_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SAT_entry_lth internal static fixed bin(17,0) initial dcl 21-24 SAT_header_lth internal static fixed bin(17,0) initial dcl 21-24 SAT_project_name_length internal static fixed bin(17,0) initial dcl 21-24 SAT_version internal static fixed bin(17,0) initial dcl 21-24 SA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SEG_ACCESS_MODE_NAMES internal static char(4) initial array packed unaligned dcl 2-30 SEG_PRIVILEGE internal static bit(36) initial dcl 4-16 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 24-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 24-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 24-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 24-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 24-62 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 24-14 SL_TYPE internal static fixed bin(17,0) initial dcl 24-14 SL_TYPE_BEEP internal static fixed bin(17,0) initial dcl 24-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 24-14 SMA_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SMA_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SM_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 SM_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 SOOS_PRIVILEGE internal static bit(36) initial dcl 4-16 STATE_VALUES internal static char(15) initial array dcl 17-70 S_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 S_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 29-271 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 17-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 17-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 17-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 17-93 TAG_UFT internal static char(1) initial packed unaligned dcl 17-93 TRA_VEC_VALUES internal static char(32) initial array dcl 17-54 TTY_KNOWN internal static fixed bin(17,0) initial dcl 17-64 UFLAG_NAMES internal static varying char(24) initial array dcl 29-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 27-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 27-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 27-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 27-50 UTE_version_4 internal static fixed bin(17,0) initial dcl 29-74 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 17-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 17-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 17-25 WAIT_DELETE_CHANNEL internal static fixed bin(17,0) initial dcl 17-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 17-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 17-25 WAIT_DIALUP internal static fixed bin(17,0) initial dcl 17-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 17-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 17-25 WAIT_LOGOUT internal static fixed bin(17,0) initial dcl 17-25 WAIT_LOGOUT_HOLD internal static fixed bin(17,0) initial dcl 17-25 WAIT_LOGOUT_SIG internal static fixed bin(17,0) initial dcl 17-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 17-25 WAIT_NEW_PROC internal static fixed bin(17,0) initial dcl 17-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 17-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 17-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 17-25 WAIT_REMOVE internal static fixed bin(17,0) initial dcl 17-25 W_ACCESS internal static bit(3) initial packed unaligned dcl 2-11 W_ACCESS_BIN internal static fixed bin(5,0) initial dcl 2-36 aim_privileges based structure level 1 packed packed unaligned dcl 4-5 aim_privileges_ptr automatic pointer dcl 4-4 as_channel_audit_record based structure level 1 dcl 7-68 as_data_$BS external static char(1) dcl 8-21 as_data_$CR external static char(1) dcl 8-22 as_data_$abs_dim external static char(32) packed unaligned dcl 8-23 as_data_$acct_update_priority external static fixed bin(17,0) dcl 8-24 as_data_$as_procid external static bit(36) dcl 8-27 as_data_$as_ring external static fixed bin(3,0) dcl 8-28 as_data_$as_tty automatic char(6) packed unaligned dcl 8-29 as_data_$asmtp external static pointer dcl 8-30 as_data_$buzzardp external static pointer dcl 8-32 as_data_$debug_flag external static bit(1) dcl 8-84 as_data_$default_weight external static fixed bin(35,0) dcl 8-34 as_data_$devtabp external static pointer dcl 8-35 as_data_$dft_user_ring external static fixed bin(3,0) dcl 8-36 as_data_$g115_dim external static char(32) packed unaligned dcl 8-38 as_data_$lct_initialized external static bit(1) dcl 8-39 as_data_$lct_size external static fixed bin(17,0) dcl 8-40 as_data_$login_args external static structure level 1 dcl 8-62 as_data_$login_words external static fixed bin(17,0) dcl 8-77 as_data_$ls_message_buffer_cur_lth external static fixed bin(18,0) dcl 8-86 as_data_$ls_message_buffer_max_lth external static fixed bin(18,0) dcl 8-87 as_data_$ls_message_buffer_ptr external static pointer dcl 8-88 as_data_$ls_request_server_info_ptr external static pointer dcl 8-85 as_data_$max_user_ring external static fixed bin(3,0) dcl 8-41 as_data_$mgtp external static pointer dcl 8-42 as_data_$mrd_dim external static char(32) packed unaligned dcl 8-43 as_data_$ntty_dim external static char(32) packed unaligned dcl 8-44 as_data_$pdtdir external static char(168) packed unaligned dcl 8-45 as_data_$pit_ptr external static pointer dcl 8-46 as_data_$request_priority external static fixed bin(17,0) dcl 8-48 as_data_$rs_ptrs external static pointer array dcl 8-49 as_data_$rtdtp external static pointer dcl 8-50 as_data_$signal_types external static structure level 1 dcl 8-67 as_data_$suffix external static char(2) array packed unaligned dcl 8-53 as_data_$sysdir external static char(168) packed unaligned dcl 8-54 as_data_$system_signal_types external static structure level 1 dcl 8-72 as_data_$teens_suffix external static char(2) array packed unaligned dcl 8-55 as_data_$terminet_tabs_string external static varying char(144) dcl 8-56 as_data_$tty_dim external static char(32) packed unaligned dcl 8-57 as_data_$update_priority external static fixed bin(17,0) dcl 8-58 as_data_$version external static char(8) packed unaligned dcl 8-59 as_data_$whoptr external static pointer dcl 8-60 as_data_login_words based structure level 1 dcl 8-77 as_dial_service_audit_record based structure level 1 dcl 7-100 as_ia_audit_record_abs based structure level 1 dcl 7-34 as_ia_audit_record_abs_proxy based structure level 1 dcl 7-41 as_ia_audit_record_int_dmn based structure level 1 dcl 7-27 as_procid defined bit(36) dcl 9-17 as_request_version_1 internal static fixed bin(17,0) initial dcl 10-27 as_tty based char(6) packed unaligned dcl 9-18 asmtp defined pointer dcl 9-19 audit_record_header_proxy based structure level 1 dcl 5-22 audit_record_ptr automatic pointer dcl 5-16 cdtp automatic pointer dcl 14-41 channel_audit_info_ptr automatic pointer dcl 7-136 devtabp defined pointer dcl 9-20 dial_server_info_ptr automatic pointer dcl 7-122 fnp_models internal static fixed bin(17,0) initial array dcl 15-28 fnp_types internal static char(8) initial array packed unaligned dcl 15-25 fnpep automatic pointer dcl 14-41 ip defined pointer dcl 9-21 max_line_type internal static fixed bin(17,0) initial dcl 19-48 mgtp defined pointer dcl 9-22 n_sync_line_types internal static fixed bin(17,0) initial dcl 19-50 pdtdir based char(168) packed unaligned dcl 9-23 pntep automatic pointer dcl 20-21 rs_ptrs based pointer array dcl 9-24 sat_htp defined pointer dcl 9-25 sl_info automatic structure level 1 dcl 24-24 sl_info_code_msg internal static structure level 1 dcl 24-187 sl_info_msg internal static structure level 1 dcl 24-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 24-161 sl_info_sev_code_msg internal static structure level 1 dcl 24-82 sl_info_sev_coded_msg internal static structure level 1 dcl 24-134 sl_info_sev_msg internal static structure level 1 dcl 24-108 supported_fnp internal static bit(1) initial array packed unaligned dcl 15-31 sync_line_type internal static fixed bin(17,0) initial array dcl 19-52 sysdir defined char(168) packed unaligned dcl 9-28 terminal_info_ptr automatic pointer dcl 25-15 tty_access_class_ptr automatic pointer dcl 26-19 whoptr defined pointer dcl 9-29 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_DIALIN 020605 constant entry internal dcl 2487 ref 375 397 410 439 449 463 481 COMMON 020404 constant label dcl 2466 ref 2459 DIALIN_OK 021176 constant entry internal dcl 2550 ref 428 490 DIAL_OUT_CHANNEL_ERROR 016544 constant entry internal dcl 2260 ref 882 888 INITIALIZE_CURRENT_ACCESS_CLASS 021332 constant entry internal dcl 2588 ref 1754 NULL_PROC 021324 constant entry internal dcl 2579 ref 507 507 545 545 REJECT_AIM 014373 constant label dcl 1857 ref 1864 1869 REJECT_CHANNEL_REQUEST 017022 constant entry internal dcl 2291 ref 563 1081 1087 1094 1100 1126 1130 1156 1234 1238 1255 1279 1304 1310 1317 1328 1334 1497 2288 REJECT_DIALID_REQUEST 017361 constant entry internal dcl 2321 ref 928 935 946 956 962 1005 1017 1021 1040 1059 1063 REQUEST_RETURNS 005172 constant label dcl 737 ref 507 507 507 507 536 545 545 545 545 570 1184 1198 1202 2251 2362 SEND_CHANNEL_MESSAGE 017655 constant entry internal dcl 2366 ref 624 1431 SEND_CONTROL_MESSAGE 017721 constant entry internal dcl 2387 ref 988 1013 1023 1066 1110 1174 1289 1344 2250 SEND_ERROR_MESSAGE_AND_REJECT 017621 constant entry internal dcl 2344 ref 533 2237 2318 2341 SERVICE_TYPE 017761 constant entry internal dcl 2404 ref 598 612 630 1569 SETUP_REQUEST 016344 constant entry internal dcl 2200 ref 509 547 access_check_channel_and_process 013524 constant entry internal dcl 1703 ref 1475 2190 aim_check_process_and_channel 013733 constant entry internal dcl 1731 ref 776 1717 aim_check_registered_server_namedup 014216 constant entry internal dcl 1789 ref 958 cdte_matches_desired 015113 constant entry internal dcl 1964 ref 1456 check_acs 014506 constant entry internal dcl 1879 ref 950 1723 check_dial_access 013347 constant entry internal dcl 1661 ref 1473 check_priv_attach_access 013454 constant entry internal dcl 1687 ref 1470 connect_channel_to_user 011354 constant entry internal dcl 1348 ref 491 791 849 898 1214 connect_join 011373 constant label dcl 1374 ref 1367 consider_ute 016142 constant entry internal dcl 2147 in procedure "find_dialable_process" ref 2123 2132 2141 consider_ute 014331 constant entry internal dcl 1837 in procedure "aim_check_registered_server_namedup" ref 1815 1823 1831 continue_tandd_attach 005420 constant entry external dcl 794 convert_aliases 015536 constant entry internal dcl 2051 ref 437 decrement_ndialed 015364 constant entry internal dcl 2018 ref 622 1103 2280 dial_broom 004656 constant entry external dcl 667 ref 1012 dial_ctl_ 002330 constant entry external dcl 97 dial_out_request 010471 constant entry internal dcl 1224 ref 568 dial_out_rq 003730 constant entry external dcl 538 dial_rq 003524 constant entry external dcl 495 dial_term 004101 constant entry external dcl 572 end_initial_string 012373 constant label dcl 1534 ref 1525 1530 fake_connect_channel_to_user 011360 constant entry internal dcl 1369 ref 780 819 1196 find_cdte 013304 constant entry internal dcl 1640 ref 1090 1313 find_dialable_process 016010 constant entry internal dcl 2092 ref 459 finish_dial_out 005705 constant entry external dcl 852 finish_priv_attach 005175 constant entry external dcl 740 finish_tandd_attach 005574 constant entry external dcl 826 hangup_anyway 013143 constant label dcl 1609 ref 1631 look_for_channel 011763 constant entry internal dcl 1436 ref 1135 1137 1244 make_group_id 015421 constant entry internal dcl 2029 ref 1723 1723 meter_dut 015507 constant entry internal dcl 2041 ref 645 1580 privileged_attach_request 007611 constant entry internal dcl 1114 ref 524 release_channel 012471 constant entry internal dcl 1543 ref 726 1108 release_channel_request 007363 constant entry internal dcl 1070 ref 522 release_dial_id_request 007135 constant entry internal dcl 1026 ref 526 set_desired_channel 014721 constant entry internal dcl 1911 ref 562 1129 set_dial_out_channel_access_class 015221 constant entry internal dcl 1983 ref 1254 set_requested_channel_access_class 014775 constant entry internal dcl 1933 ref 1237 set_terminal_type 012200 constant entry internal dcl 1501 ref 790 885 1213 start_dial_id_request 006226 constant entry internal dcl 915 ref 518 stop_dial_id_request 006775 constant entry internal dcl 992 ref 520 tandd_error 005645 constant label dcl 843 ref 847 terminate_dial_out_request 011067 constant entry internal dcl 1294 ref 566 trace 020365 constant entry internal dcl 2443 ref 379 584 683 756 805 835 864 1180 1188 1712 1741 2154 2425 2428 2434 trace_error 020375 constant entry internal dcl 2461 ref 1903 trace_off 006176 constant entry external dcl 908 trace_on 006144 constant entry external dcl 901 trace_request 020126 constant entry internal dcl 2416 ref 515 555 whoops2 005765 constant label dcl 874 ref 878 woops1 005256 constant label dcl 766 ref 770 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 23472 23756 22120 23502 Length 25350 22120 264 1355 1352 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dial_ctl_ 3192 external procedure is an external procedure. on unit on line 507 94 on unit on unit on line 545 94 on unit start_dial_id_request internal procedure shares stack frame of external procedure dial_ctl_. stop_dial_id_request internal procedure shares stack frame of external procedure dial_ctl_. release_dial_id_request internal procedure shares stack frame of external procedure dial_ctl_. release_channel_request internal procedure shares stack frame of external procedure dial_ctl_. privileged_attach_request internal procedure shares stack frame of external procedure dial_ctl_. dial_out_request internal procedure shares stack frame of external procedure dial_ctl_. terminate_dial_out_request internal procedure shares stack frame of external procedure dial_ctl_. connect_channel_to_user internal procedure shares stack frame of external procedure dial_ctl_. look_for_channel internal procedure shares stack frame of external procedure dial_ctl_. set_terminal_type internal procedure shares stack frame of external procedure dial_ctl_. release_channel internal procedure shares stack frame of external procedure dial_ctl_. find_cdte internal procedure shares stack frame of external procedure dial_ctl_. check_dial_access internal procedure shares stack frame of external procedure dial_ctl_. check_priv_attach_access internal procedure shares stack frame of external procedure dial_ctl_. access_check_channel_and_process internal procedure shares stack frame of external procedure dial_ctl_. aim_check_process_and_channel internal procedure shares stack frame of external procedure dial_ctl_. aim_check_registered_server_namedup internal procedure shares stack frame of external procedure dial_ctl_. consider_ute internal procedure shares stack frame of external procedure dial_ctl_. check_acs internal procedure shares stack frame of external procedure dial_ctl_. set_desired_channel internal procedure shares stack frame of external procedure dial_ctl_. set_requested_channel_access_class internal procedure shares stack frame of external procedure dial_ctl_. cdte_matches_desired internal procedure shares stack frame of external procedure dial_ctl_. set_dial_out_channel_access_class internal procedure shares stack frame of external procedure dial_ctl_. decrement_ndialed internal procedure shares stack frame of external procedure dial_ctl_. make_group_id internal procedure shares stack frame of external procedure dial_ctl_. meter_dut internal procedure shares stack frame of external procedure dial_ctl_. convert_aliases internal procedure shares stack frame of external procedure dial_ctl_. find_dialable_process internal procedure shares stack frame of external procedure dial_ctl_. consider_ute internal procedure shares stack frame of external procedure dial_ctl_. SETUP_REQUEST internal procedure shares stack frame of external procedure dial_ctl_. DIAL_OUT_CHANNEL_ERROR internal procedure shares stack frame of external procedure dial_ctl_. REJECT_CHANNEL_REQUEST internal procedure shares stack frame of external procedure dial_ctl_. REJECT_DIALID_REQUEST internal procedure shares stack frame of external procedure dial_ctl_. SEND_ERROR_MESSAGE_AND_REJECT internal procedure shares stack frame of external procedure dial_ctl_. SEND_CHANNEL_MESSAGE internal procedure shares stack frame of external procedure dial_ctl_. SEND_CONTROL_MESSAGE internal procedure shares stack frame of external procedure dial_ctl_. SERVICE_TYPE internal procedure shares stack frame of external procedure dial_ctl_. trace_request internal procedure shares stack frame of external procedure dial_ctl_. trace 366 internal procedure is declared options(variable). ABORT_DIALIN internal procedure shares stack frame of external procedure dial_ctl_. DIALIN_OK internal procedure shares stack frame of external procedure dial_ctl_. NULL_PROC 64 internal procedure is assigned to an entry variable. INITIALIZE_CURRENT_ACCESS_CLASS internal procedure shares stack frame of external procedure dial_ctl_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 static_trace_sw dial_ctl_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dial_ctl_ 000100 acs_name dial_ctl_ 000110 buffer dial_ctl_ 000172 CAI dial_ctl_ 000222 cdtx dial_ctl_ 000224 chn dial_ctl_ 000226 code dial_ctl_ 000227 date dial_ctl_ 000244 desired_channel dial_ctl_ 000254 dial_qualifier dial_ctl_ 000264 dial_out_used_privilege dial_ctl_ 000265 DSI dial_ctl_ 000277 find_person_project dial_ctl_ 000300 format dial_ctl_ 000331 i dial_ctl_ 000332 junk dial_ctl_ 000334 mcode dial_ctl_ 000335 added_info dial_ctl_ 000375 mode dial_ctl_ 000376 phone_data dial_ctl_ 000407 process_id dial_ctl_ 000410 process_destroyed_flag dial_ctl_ 000411 process_group_id dial_ctl_ 000421 process_ring dial_ctl_ 000422 reason dial_ctl_ 000522 reason_code dial_ctl_ 000523 request_type dial_ctl_ 000524 requested_access_class dial_ctl_ 000526 retval dial_ctl_ 000530 rq_person dial_ctl_ 000536 rq_project dial_ctl_ 000542 rvp dial_ctl_ 000544 server_authorization dial_ctl_ 000575 star_channel_name dial_ctl_ 000576 suppress_listen dial_ctl_ 000577 target_person_project dial_ctl_ 000607 used_privilege dial_ctl_ 000610 user_lth dial_ctl_ 000611 user_string dial_ctl_ 000642 word dial_ctl_ 000644 term_info dial_ctl_ 000664 set_type_info dial_ctl_ 000704 sender_authorization dial_ctl_ 000706 autp dial_ctl_ 000710 ansp dial_ctl_ 000712 as_request_sender_ptr dial_ctl_ 000714 cdtep dial_ctl_ 000716 mpxep dial_ctl_ 000720 request_ptr dial_ctl_ 000722 dutp dial_ctl_ 000724 pnte dial_ctl_ 001044 satep dial_ctl_ 001046 sttip dial_ctl_ 001050 utep dial_ctl_ 001134 fake_connect connect_channel_to_user 001144 found look_for_channel 001145 found_device_available look_for_channel 001146 found_in_cdt look_for_channel 001147 found_good_access look_for_channel 001150 found_good_attributes look_for_channel 001160 code set_terminal_type 001161 tab_string set_terminal_type 001362 modes_string set_terminal_type 001570 was_tandd release_channel 001632 access_class_ok aim_check_process_and_channel 001642 i aim_check_registered_server_namedup 001644 P aim_check_registered_server_namedup 001660 existing_priv_range consider_ute 001664 proposed_priv_range consider_ute 001744 group_id make_group_id 001770 code convert_aliases 001771 satx convert_aliases 002000 i find_dialable_process 002002 P find_dialable_process 002076 type_names SERVICE_TYPE 002152 auth trace_request 002162 access_class_string trace_request 002200 action ABORT_DIALIN 002201 code_reason ABORT_DIALIN 002250 code_reason_al ABORT_DIALIN 002310 action DIALIN_OK 002320 auto_tty_access_class INITIALIZE_CURRENT_ACCESS_CLASS trace 000100 ioa_buffer trace 000472 code_flag trace 000474 code_ptr trace 000476 first trace 000477 control trace THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_e_as r_ne_as alloc_char_temp unpk_to_pk cat_realloc_chars call_ext_in call_ext_out_desc call_ext_out call_int_this_desc return_mac move_label_var make_label_var fl2_to_fx1 enable_op shorten_stack ext_entry ext_entry_desc int_entry THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$equal aim_check_$greater_or_equal aim_check_$in_range aim_util_$get_access_class as_access_audit_$channel as_access_audit_$dialid as_any_other_handler_ astty_$tty_changemode astty_$tty_detach astty_$tty_force astty_$tty_new_proc astty_$tty_order astty_$tty_state asu_$asu_listen asu_$find_process asu_$format_ftp_msg asu_$reset_access_class asu_$write_chn_message check_star_name_$entry convert_access_class_$to_string_short convert_status_code_ cu_$arg_list_ptr cu_$arg_ptr date_time_$format device_acct_$off device_acct_$on display_access_class_ get_process_access_class_ hash_$search hcs_$get_user_access_modes hcs_$wakeup ioa_$general_rs ioa_$rs ioa_$rsnnl ipc_$drain_chn lg_ctl_$logout_channel match_star_name_ pathname_ pnt_manager_$admin_get_entry sys_log_ sys_log_$error_log ttt_info_$initial_string ttt_info_$modes uc_cleanup_network_dials_ up_sysctl_$check_acs THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$acsdir as_data_$ansp as_data_$autp as_data_$cdtp as_data_$dutp as_data_$rcpdir as_data_$sat_htp as_data_$satp as_error_table_$dial_connect_msg as_error_table_$dial_sys_msg as_error_table_$dialagain as_error_table_$dialdied as_error_table_$dialnoline as_error_table_$dialnotup as_error_table_$dialup_error error_table_$action_not_performed error_table_$ai_out_range error_table_$ai_restricted error_table_$bad_name error_table_$badstar error_table_$dial_active error_table_$dial_id_busy error_table_$id_not_found error_table_$insufficient_access error_table_$invalid_resource_state error_table_$io_no_permission error_table_$name_not_found error_table_$no_connection error_table_$no_dialok error_table_$noentry error_table_$order_error error_table_$request_not_recognized error_table_$request_pending error_table_$resource_attached error_table_$resource_not_free error_table_$resource_unavailable error_table_$resource_unknown error_table_$unable_to_check_access error_table_$undefined_order_request error_table_$unimplemented_version LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 180 002305 182 002306 183 002311 186 002313 1 26 002314 6 53 002316 18 27 002317 29 76 002320 97 002323 361 002351 363 002356 365 002361 366 002365 367 002372 370 002377 371 002400 373 002403 375 002407 376 002423 379 002424 390 002465 394 002471 397 002523 398 002543 401 002544 402 002557 404 002615 407 002643 408 002662 410 002666 411 002700 413 002701 414 002703 415 002707 416 002712 417 002713 418 002715 419 002717 420 002722 421 002724 425 002726 428 002772 429 002773 432 002774 434 003000 436 003010 437 003026 439 003033 440 003050 442 003051 443 003053 444 003054 446 003055 449 003064 451 003104 454 003105 459 003106 461 003110 463 003114 464 003131 467 003132 468 003135 469 003210 470 003223 471 003245 473 003315 475 003364 476 003426 479 003453 481 003457 482 003502 485 003503 486 003505 487 003507 488 003511 490 003512 491 003513 492 003515 493 003517 495 003520 507 003532 509 003611 510 003613 513 003615 515 003617 518 003627 520 003635 522 003642 524 003647 526 003654 530 003661 533 003716 536 003725 538 003726 545 003736 547 004015 548 004017 551 004021 553 004030 555 004032 558 004042 559 004054 560 004056 562 004060 563 004061 566 004066 568 004074 570 004075 572 004076 577 004107 579 004114 581 004117 582 004123 584 004124 587 004145 589 004151 590 004153 592 004155 594 004160 595 004163 596 004166 597 004200 598 004202 599 004216 600 004220 602 004231 603 004240 604 004242 605 004246 606 004250 607 004306 609 004307 610 004311 612 004315 619 004403 622 004427 624 004430 625 004432 627 004435 628 004441 629 004453 630 004455 631 004471 632 004473 634 004504 635 004511 636 004513 637 004516 638 004520 639 004522 645 004560 647 004561 651 004611 652 004615 653 004616 654 004620 659 004622 661 004631 663 004647 665 004651 667 004652 675 004664 676 004670 678 004675 680 004700 681 004701 683 004704 686 004735 688 004742 689 004750 690 004753 691 004760 692 004765 693 004772 694 005020 697 005024 698 005026 699 005030 701 005032 704 005034 706 005045 708 005053 710 005055 712 005063 714 005066 716 005072 717 005075 718 005076 720 005077 721 005102 724 005104 725 005115 726 005123 729 005145 731 005147 733 005167 734 005171 737 005172 740 005173 753 005203 754 005207 755 005211 756 005215 758 005236 759 005241 760 005242 762 005246 763 005250 764 005252 766 005256 768 005303 770 005304 776 005307 779 005340 780 005343 781 005346 782 005377 785 005400 787 005406 788 005411 790 005412 791 005413 792 005415 794 005416 801 005426 803 005430 805 005434 808 005456 809 005457 811 005463 812 005516 816 005524 818 005526 819 005531 820 005534 821 005565 823 005566 824 005571 826 005572 832 005602 833 005604 835 005610 838 005631 839 005634 840 005637 841 005641 843 005645 845 005672 847 005673 849 005676 850 005702 852 005703 859 005713 861 005715 862 005721 864 005725 866 005746 867 005747 869 005753 870 005755 871 005757 872 005761 874 005765 876 006012 878 006013 881 006016 882 006052 884 006055 885 006057 886 006060 887 006062 888 006116 890 006121 891 006125 892 006127 896 006134 897 006135 898 006140 899 006142 901 006143 904 006152 905 006155 906 006174 908 006175 911 006204 912 006206 913 006225 915 006226 920 006227 923 006231 924 006235 925 006242 926 006247 928 006253 931 006277 933 006311 935 006342 938 006357 944 006401 946 006442 948 006457 950 006463 952 006477 954 006531 956 006537 958 006542 960 006547 962 006601 964 006604 965 006607 967 006610 969 006613 971 006622 972 006624 973 006627 975 006632 977 006641 978 006644 980 006674 981 006723 982 006725 984 006733 986 006736 988 006764 989 006774 992 006775 998 006776 1000 007000 1001 007004 1002 007013 1003 007020 1005 007025 1008 007050 1012 007066 1013 007100 1014 007104 1016 007105 1017 007110 1018 007114 1020 007115 1021 007120 1023 007124 1024 007134 1026 007135 1033 007136 1035 007140 1036 007144 1037 007153 1038 007160 1040 007165 1043 007210 1047 007226 1049 007231 1053 007276 1054 007324 1055 007330 1056 007332 1058 007333 1059 007336 1060 007342 1062 007343 1063 007346 1066 007352 1067 007362 1070 007363 1073 007364 1075 007366 1077 007372 1078 007404 1079 007406 1081 007410 1084 007434 1086 007441 1087 007444 1090 007450 1091 007451 1093 007455 1094 007507 1097 007512 1099 007516 1100 007521 1103 007536 1104 007537 1107 007552 1108 007554 1110 007606 1111 007610 1114 007611 1117 007612 1119 007621 1121 007623 1122 007626 1123 007640 1124 007642 1126 007644 1129 007670 1130 007671 1133 007676 1135 007702 1137 007710 1139 007712 1140 007716 1141 007723 1142 007727 1143 007731 1145 007734 1147 007740 1148 010000 1150 010006 1154 010044 1156 010122 1160 010137 1161 010142 1162 010144 1163 010146 1164 010153 1165 010160 1167 010161 1172 010173 1174 010174 1176 010176 1178 010202 1180 010206 1182 010230 1183 010261 1184 010264 1188 010265 1190 010307 1191 010342 1193 010344 1195 010401 1196 010404 1197 010407 1198 010440 1201 010441 1202 010444 1206 010445 1208 010451 1210 010456 1211 010461 1213 010462 1214 010463 1216 010465 1217 010466 1221 010470 1224 010471 1229 010472 1230 010476 1231 010510 1232 010512 1234 010514 1237 010540 1238 010541 1241 010546 1242 010551 1244 010572 1246 010574 1247 010600 1248 010605 1249 010611 1250 010613 1254 010616 1255 010620 1258 010630 1259 010632 1261 010635 1262 010637 1263 010643 1265 010652 1267 010655 1269 010713 1271 010743 1273 010745 1275 010752 1277 011021 1278 011023 1279 011026 1282 011046 1283 011051 1284 011056 1285 011060 1286 011062 1287 011063 1289 011064 1290 011066 1294 011067 1299 011070 1300 011074 1301 011106 1302 011110 1304 011112 1307 011136 1309 011143 1310 011146 1313 011152 1314 011153 1316 011157 1317 011211 1320 011214 1321 011222 1322 011226 1323 011230 1325 011233 1327 011237 1328 011242 1331 011257 1333 011264 1334 011267 1337 011304 1338 011307 1341 011311 1342 011320 1344 011351 1345 011353 1348 011354 1366 011356 1367 011357 1369 011360 1372 011371 1374 011373 1377 011403 1379 011405 1380 011410 1381 011412 1384 011414 1386 011421 1387 011423 1390 011425 1394 011460 1395 011464 1396 011476 1397 011500 1398 011507 1399 011514 1400 011520 1401 011522 1402 011525 1403 011527 1405 011531 1408 011533 1410 011547 1412 011551 1414 011561 1416 011564 1418 011622 1419 011623 1421 011671 1422 011672 1427 011733 1431 011760 1432 011762 1436 011763 1449 011765 1450 011767 1452 011774 1454 011775 1455 012012 1456 012020 1457 012022 1458 012025 1460 012027 1464 012042 1468 012053 1470 012056 1473 012067 1474 012071 1475 012074 1479 012121 1480 012124 1482 012126 1484 012131 1485 012133 1489 012145 1491 012153 1493 012161 1495 012167 1497 012174 1499 012177 1501 012200 1510 012201 1512 012207 1514 012222 1515 012224 1516 012226 1517 012232 1518 012233 1519 012265 1522 012270 1524 012275 1525 012316 1527 012320 1529 012322 1530 012345 1532 012347 1534 012373 1536 012415 1538 012420 1539 012467 1543 012471 1555 012502 1558 012532 1559 012546 1563 012620 1566 012662 1567 012666 1568 012700 1569 012702 1570 012716 1571 012724 1572 012730 1573 012732 1574 012735 1575 012737 1576 012741 1579 012777 1580 013024 1581 013025 1583 013034 1585 013041 1587 013052 1588 013055 1589 013057 1591 013060 1592 013063 1595 013064 1596 013065 1597 013067 1598 013071 1600 013101 1602 013110 1603 013112 1604 013114 1605 013116 1606 013134 1607 013135 1609 013143 1611 013174 1612 013176 1613 013207 1617 013216 1620 013227 1623 013253 1628 013263 1630 013264 1631 013275 1636 013303 1640 013304 1643 013305 1644 013317 1645 013325 1647 013333 1649 013335 1650 013337 1651 013343 1653 013346 1661 013347 1664 013351 1665 013352 1667 013372 1669 013402 1671 013411 1674 013420 1678 013434 1679 013443 1683 013450 1687 013454 1690 013456 1691 013457 1693 013465 1695 013476 1697 013505 1699 013520 1703 013524 1712 013526 1717 013600 1719 013624 1720 013627 1723 013632 1728 013730 1731 013733 1741 013735 1748 014013 1752 014015 1754 014021 1755 014023 1759 014030 1762 014054 1764 014070 1770 014117 1771 014135 1776 014160 1779 014175 1783 014204 1784 014213 1789 014216 1812 014220 1813 014231 1815 014236 1817 014246 1821 014250 1822 014261 1823 014265 1825 014275 1829 014277 1830 014307 1831 014313 1834 014323 1835 014325 1837 014331 1843 014333 1844 014335 1845 014341 1846 014343 1848 014345 1850 014351 1852 014356 1855 014365 1857 014370 1861 014373 1862 014377 1864 014403 1866 014423 1869 014426 1875 014503 1879 014506 1888 014524 1889 014532 1890 014533 1892 014561 1894 014627 1896 014631 1898 014637 1899 014641 1900 014644 1901 014645 1903 014654 1905 014714 1911 014721 1914 014722 1916 014727 1917 014732 1918 014734 1920 014735 1921 014740 1922 014755 1924 014761 1926 014763 1929 014766 1930 014771 1931 014774 1933 014775 1936 014776 1937 014777 1939 015012 1942 015042 1944 015045 1945 015050 1946 015053 1950 015054 1953 015073 1954 015076 1955 015101 1957 015102 1958 015106 1959 015110 1960 015111 1962 015112 1964 015113 1967 015115 1971 015127 1974 015141 1976 015166 1980 015214 1983 015221 1988 015223 1990 015224 1991 015233 1994 015240 1995 015272 1998 015301 2000 015306 2002 015310 2004 015312 2006 015314 2010 015340 2012 015341 2013 015361 2015 015363 2018 015364 2021 015365 2023 015370 2024 015371 2025 015415 2026 015416 2027 015420 2029 015421 2035 015423 2036 015426 2038 015501 2041 015507 2044 015510 2049 015535 2051 015536 2060 015540 2061 015563 2063 015575 2065 015577 2066 015633 2068 015641 2070 015646 2073 015657 2074 015702 2076 015712 2077 015716 2078 015724 2081 015736 2083 015771 2085 015777 2088 016002 2092 016010 2119 016012 2120 016016 2121 016027 2123 016034 2125 016045 2129 016047 2130 016053 2131 016063 2132 016067 2134 016100 2138 016102 2139 016106 2140 016117 2141 016123 2144 016134 2145 016136 2147 016142 2150 016144 2154 016151 2161 016225 2163 016227 2166 016237 2170 016246 2175 016257 2179 016267 2183 016275 2190 016302 2194 016340 2200 016344 2206 016346 2208 016353 2209 016355 2211 016356 2212 016361 2213 016364 2215 016367 2216 016373 2218 016376 2220 016402 2223 016431 2224 016434 2227 016435 2228 016440 2229 016442 2230 016444 2232 016447 2233 016450 2235 016453 2237 016455 2240 016466 2246 016471 2247 016504 2249 016510 2250 016534 2251 016536 2254 016537 2255 016541 2256 016543 2260 016544 2263 016545 2265 016550 2268 016601 2271 016643 2274 016717 2277 016765 2278 016770 2279 016771 2280 016773 2281 016774 2286 016776 2288 017001 2289 017021 2291 017022 2297 017033 2301 017041 2302 017054 2304 017116 2305 017121 2306 017127 2308 017175 2310 017177 2311 017201 2312 017241 2313 017242 2315 017307 2318 017351 2319 017360 2321 017361 2327 017372 2331 017400 2332 017413 2334 017455 2336 017512 2338 017547 2341 017611 2342 017620 2344 017621 2354 017623 2356 017625 2357 017627 2358 017632 2359 017634 2360 017636 2362 017654 2366 017655 2375 017657 2376 017661 2377 017664 2378 017670 2380 017673 2381 017675 2382 017702 2383 017720 2387 017721 2392 017723 2394 017725 2395 017727 2396 017732 2397 017735 2398 017742 2400 017760 2404 017761 2408 017763 2411 020073 2413 020114 2416 020126 2423 020130 2424 020142 2425 020154 2428 020222 2434 020266 2440 020363 2443 020364 2458 020372 2459 020373 2461 020374 2464 020402 2466 020404 2469 020406 2470 020427 2471 020431 2472 020433 2474 020434 2475 020436 2478 020440 2481 020513 2483 020555 2484 020604 2487 020605 2497 020616 2500 020633 2501 020650 2502 020670 2504 020677 2505 020711 2509 020735 2512 020741 2513 020745 2514 020757 2515 020764 2516 020770 2517 020772 2518 020775 2519 020777 2521 021002 2523 021006 2524 021010 2526 021011 2527 021013 2528 021015 2531 021020 2532 021066 2533 021070 2538 021155 2539 021160 2540 021161 2542 021163 2544 021171 2546 021175 2550 021176 2555 021177 2556 021203 2557 021215 2558 021217 2560 021227 2561 021234 2562 021236 2563 021241 2564 021243 2566 021246 2568 021252 2569 021254 2571 021255 2572 021257 2573 021261 2576 021264 2577 021322 2579 021323 2585 021331 2588 021332 2598 021334 2600 021335 2602 021344 2605 021352 2607 021355 2608 021360 2609 021412 2611 021417 2612 021422 2613 021441 2614 021442 2616 021445 2619 021451 2621 021456 2624 021512 2625 021513 2626 021515 ----------------------------------------------------------- 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