COMPILATION LISTING OF SEGMENT mc_commands_ Compiled by: Multics PL/I Compiler, Release 31a, of October 12, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 11/14/88 1007.4 mst Mon Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1984 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 13 /* format: style4 */ 14 15 mc_commands_: proc; 16 17 /* This procedure is part of the message coordinator. 18* It contains entries that support all of the message coordinator commands. 19* * 20* The message coordinator was originally created by Dennis Capps 21* with advice from TH VanVleck in October of 1972. 22* "mc_commands_" originally created by Bill Silver in May, 74. 23* modified by D. M. Wells, July 1976, to understand about FTP channels 24* modified by Robert Coren, August 1976, to use CDT 25* Modified June 1981 by T. Casey for MR9.0 for new wakeup priorities. 26* Modified January 1982 by E. N. Kittlitz to check for intty before searching cdt. 27* * 84-11-16, W. Olin Sibert: Changed to call mc_con_rec_$check correctly 28* 1984-11-??, BIM: changes for iox_. 29* 1985-03-22, E. Swenson: to eliminate extra NL at end of messages and 30* to log operator logout upon dropping a mc terminal. 31* 1985-04-05, E. Swenson: Fixed to handle dropping/substty on accepted 32* channels whose multiplexer has not yet been loaded. 33* 1985-04-17, E. Swenson: To not attempt to sign out a terminal not signed 34* on. 35**/ 36 37 38 /****^ HISTORY COMMENTS: 39* 1) change(85-12-19,MSharpe), approve(87-05-01,MCR7690), 40* audit(87-05-10,Parisek), install(87-08-04,MR12.1-1055): 41* The following modules were changed so that DSA channels could be used as 42* MC terminals: new_tty, KILL_TTY, ATTACH_ATE, SEARCH_MC_ANSTBL. A new 43* module, mc_login, was added for the same purpose. It supports 44* "login Person_id -operator -vchannel"; after the answering service has 45* validated this user to be eligible for logging in as an operator, this 46* routine is called to fill in the actual_channel_name of the pre-accepted 47* virtual channel specified, and to attach the iocb for it. 48* CDD-3/28/86: to clear out login server id in KILL_TTY 49* 2) change(87-02-05,GDixon), approve(87-05-01,MCR7690), 50* audit(87-05-10,Parisek), install(87-08-04,MR12.1-1055): 51* Modified for change to mc_anstbl.incl.pl1. Entrypoint which reference 52* mc_anstbl must now explicitly set mc_ansp from sc_stat_$mc_ansp. 53* CDD-4/10/86: to set virtual and realy tty_name correctly. 54* 3) change(87-02-13,GDixon), approve(87-05-01,MCR7690), 55* audit(87-05-10,Parisek), install(87-08-04,MR12.1-1055): 56* Correct problem in mc_commands_$substty where target terminal is otw_ (the 57* system console). A previous substty operation (substty otw_ XXX) 58* destroyed the ssu_ subsystem associated with the console; an attempt to 59* substitute I/O back to the system console (substty XXX otw_) then assumes 60* the ssu_ subsystem still exists. Avoid the destroy operation for the 61* system console. (phx20406) 62* 4) change(87-04-06,Parisek), approve(87-05-01,MCR7690), 63* audit(87-07-17,Beattie), install(87-08-04,MR12.1-1055): 64* Commented in the error_table_$(bad_vchannel vchn_active vchn_not_found) 65* error assignments. 66* 5) change(87-04-23,GDixon), approve(87-05-01,MCR7690), 67* audit(87-05-10,Parisek), install(87-08-04,MR12.1-1055): 68* Fill in login_server_operator_response.process_group_id so message 69* coordinator channels will have proper group id in connection list. 70* 6) change(87-05-04,Parisek), approve(87-05-01,MCR7690), 71* audit(87-07-17,Beattie), install(87-08-04,MR12.1-1055): 72* A. Set mc_atep for the valid otw_ mc_anstbl entry instead of leaving it 73* null for returning to caller. 74* B. Initialize the mc_ate.oper_info.personid. 75* 7) change(87-05-18,GDixon), approve(87-05-01,MCR7690), 76* audit(87-05-10,Parisek), install(87-08-04,MR12.1-1055): 77* Use revised calling sequence for uc_send_ls_response_. 78* 8) change(87-05-27,Parisek), approve(87-05-01,MCR7690), 79* audit(87-07-17,Beattie), install(87-08-04,MR12.1-1055): 80* A. If by chance the returned cdte pointer from DROP_CDT_TERMINAL is null, 81* I added a call sys_log_ call to document the error. 82* B. Removed FIND_CDTE internal procedure for locating the cdtep, and 83* instead use the value of mc_ate.cdtep which is the cdtep previously 84* set when the channel was originally attached. 85* C. Pass the mc_atep (mc_anstbl entry pointer) as the parameter to 86* DROP_CDT_TERMINAL instead of the tty name so the cdt entry pointer 87* can be determined faster. 88* 9) change(87-06-12,Parisek), approve(87-05-01,MCR7690), 89* audit(87-07-17,Beattie), install(87-08-04,MR12.1-1055): 90* Added the P_utep parameter for mc_login so we can set the ute.proc_id to 91* that of the target process which is needed in case the process is bumped. 92* 10) change(87-06-18,Parisek), approve(87-05-01,MCR7690), 93* audit(87-07-17,Beattie), install(87-08-04,MR12.1-1055): 94* Do not reference mc_ate.cdte for otw_ since otw_ has no cdt entry. This 95* corrects a null pointer fault problem when doing a substty of otw_ for 96* another channel. 97* 11) change(87-06-26,Parisek), approve(87-06-26,MCR7690), 98* audit(87-07-17,Beattie), install(87-08-04,MR12.1-1055): 99* A. Add the access_class_range parameter to mc_login passed by it's caller. 100* B. Check allowable access_class_range for dialed user. 101* C. Add internal procs ABORT_DIALIN and DIALIN_OK for sending audit data. 102* D. Call ABORT_DIALIN or DIALIN_OK where necessary in mc_login entry. 103* 12) change(87-08-07,Parisek), approve(87-08-07,MCR7690), 104* audit(87-08-07,GDixon), install(87-08-07,MR12.1-1073): 105* Change the audit action value for successful dialins to a positive 106* (accepted) value from a negative (rejected) value. 107* 13) change(88-11-04,Parisek), approve(87-06-26,MCR7690), 108* audit(88-11-10,Beattie), install(88-11-14,MR12.2-1211): 109* Check for a valid cdte pointer (mc_ate.cdtep) for a terminal dialed 110* to the MC (DROP_CDT_TERMINAL internal proc) before attempting to reset 111* the cdte information for that terminal. Reestablished the FIND_CDTE 112* internal proc for locating the cdtep for the dialed terminal in the 113* case where mc_atep or mc_ate.cdtep is null. 114* END HISTORY COMMENTS */ 115 116 117 declare P_access_class (2) bit (72) aligned; 118 declare P_cdtp ptr parameter; 119 declare P_cdte_flag bit (1) aligned parameter; 120 declare P_drop_terminal bit (1) aligned parameter; 121 declare P_ls_handle bit (72) parameter; 122 declare P_ls_procid bit (36) parameter; 123 declare P_ls_term_ev_chn fixed bin (71) parameter; 124 declare P_ls_resp_ev_chn fixed bin (71) parameter; 125 declare P_mpx_name char (*) parameter; 126 declare P_mc_ansp ptr parameter; 127 declare P_mc_atep ptr parameter; 128 declare P_mcmp ptr parameter; 129 declare P_message_ptr ptr parameter; 130 declare P_temp_SDBp ptr parameter; 131 declare P_vchannel char (*) parameter; 132 declare P_utep ptr parameter; 133 134 declare inttyp ptr parameter; /* (OUTPUT) ptr to mc_ate */ 135 declare code fixed bin (35) parameter; /* error code */ 136 137 declare Message_ptr pointer parameter; /* used in reply and intercom */ 138 declare Message_length fixed bin (21) parameter; /* ditto */ 139 140 declare insc char (*) parameter; /* A source to route */ 141 declare instream char (*) parameter; /* A stream for us to route */ 142 declare intty char (*) parameter; /* A console for us to use */ 143 declare invc char (*) parameter; /* Virt Cons */ 144 declare param1 char (*) parameter; /* A new target. */ 145 declare type char (*) parameter; /* type of destination */ 146 147 148 /* Declarations of POINTERS */ 149 declare 150 bufferp2 ptr, /* Addr of buffer2 */ 151 iutep ptr, /* ptr to Initializer ute entry */ 152 mcmp ptr int static init (null), /* to message seg for message coordinator */ 153 messp ptr int static init (null), 154 mrtp ptr int static init (null), /* to Message Routing Table */ 155 p ptr, /* A temporary pointer used by substty */ 156 qp ptr, /* to queue of lines to be typed on a device */ 157 streamp ptr, /* to a stream entry in MRT */ 158 temp_SDBp ptr int static init (null), /* to temp_SDB */ 159 vcep ptr, /* to an entry in virtual console table */ 160 vconsp ptr int static init (null), /* to Virtual CONSole table */ 161 wakeup_data_ptr ptr; 162 163 /* Fixed binary quantities */ 164 declare 165 autocode fixed bin (35) init (0), /* error code in automatic storage */ 166 ls_status_code fixed bin (35) init (0), /* ditto */ 167 dest fixed bin, /* Index when looping thru phys devices in vcons_tab */ 168 fbtype fixed bin, /* type of destination,1=>tty 2=>log 3=>sink */ 169 i fixed bin, /* a temporary index */ 170 j fixed bin, /* another temporary index */ 171 jj fixed bin, 172 k fixed bin, /* loop counter for protocol and router */ 173 lng fixed bin, /* Length of formatted string for output */ 174 ls_event_channel fixed bin (71), /* login server event channel; used for drop */ 175 mrt_source fixed bin, /* Index of source entry in MRT */ 176 mrt_stream fixed bin, /* Index of stream entry in source entry in MRT */ 177 nt fixed bin, /* No of characters actually typed */ 178 state fixed bin, /* 0 -- end of data, 1-- more to message */ 179 this_line fixed bin, /* Current link in q of lines to be typed */ 180 vc fixed bin, /* Index when looping thru vcons in MRT */ 181 vce fixed bin, /* Index of Virtual Console table Entry */ 182 wakeup_data_len fixed bin (18); /* length of mc_ate; passed to LS for dial wakeup */ 183 184 /* Character strings */ 185 186 declare Destination char (*) varying; 187 declare Message char (*); 188 dcl old_operator_name char (32); /* operator currently signed on */ 189 declare mpx_starname char (32); /* star name that matches subchannels of mpx */ 190 191 declare message char (Message_length) based (Message_ptr); 192 193 declare 1 ls_operator_resp aligned like login_server_operator_response; 194 declare 1 ls_term_resp aligned like login_server_termination_response; 195 declare 1 CAI structure aligned like channel_audit_info automatic; 196 197 declare buffer2 char (132); 198 declare char32 char (32); /* automatic intty */ 199 declare insca char (32); /* automatic insc */ 200 declare instreama char (32); /* automatic instream */ 201 declare iocb_name char (32); 202 declare recipient char (32); /* the source to which a reply is directed */ 203 declare tempdest char (32); /* A temporary */ 204 declare vchannel char (32); /* automatic P_vchannel */ 205 206 /* BIT strings */ 207 declare 208 access_class_range (2) bit (72) aligned, /* dialed aim class */ 209 authority bit (36), /* Parameter Privileges for this console */ 210 created_seg (8) bit (1) init ((8) (1)"0"b), /* In case we want to write messages */ 211 dont_log bit (1) init ("0"b), /* "1"b=>Sentinel-- Needn't be logged */ 212 cdte_flag bit (1) aligned, /* ""b=> channel not defined in cdt */ 213 ls_handle bit (72) aligned, /* login server handle for channel; used for drop */ 214 ls_process_id bit (36) aligned, /* login server process id; used for drop */ 215 must_send_operator_response bit (1), /* "1"b=> respond to login server's operator request */ 216 new_vchn_flag bit (1), 217 op_ok bit (1), /* ""b => channel must be accepted by oprator */ 218 sendalarm bit (1), /* TRUE if alarm message; at distribute */ 219 virtual_flag bit (1) aligned, /* "1"b if intty in new_tty is a vchn name */ 220 zerobits bit (72) init (""b); /* used for sending operator response */ 221 222 /* BUILTIN FUNCTIONS */ 223 declare 224 addr builtin, 225 clock builtin, 226 index builtin, 227 length builtin, 228 null builtin, 229 search builtin, 230 size builtin, 231 string builtin, 232 substr builtin, 233 unspec builtin, 234 codeptr builtin, 235 rtrim builtin; 236 237 /* CONSTANTS */ 238 239 declare (TRUE init ("1"b), 240 FALSE init (""b)) bit (1) aligned int static options (constant); 241 242 /* EXTERNAL ENTRIES */ 243 244 declare aim_check_$greater entry (bit (72) aligned, bit (72) aligned) returns (bit (1) aligned); 245 declare as_access_audit_$channel entry (ptr, ptr, ptr, fixed bin, ptr, char (*)); 246 declare astty_$tty_event entry (ptr, fixed bin (35)); 247 declare ioa_$ioa_switch entry () options (variable); 248 declare cdt_mgr_$find_cdt_channel entry (pointer, character (32), fixed binary, bit (1) aligned, fixed binary (35)); 249 declare convert_status_code_ entry (fixed binary (35), character (8) aligned, character (100) aligned); 250 declare get_group_id_ entry () returns (char (32)); 251 declare get_process_access_class_ entry () returns (bit (72) aligned); 252 declare get_process_id_ entry () returns (bit (36)); 253 declare get_ring_ entry () returns (fixed bin (3)); 254 declare hcs_$truncate_seg entry (ptr, fixed bin, fixed bin (35)); 255 declare hcs_$chname_seg entry (ptr, char (*), char (*), fixed bin (35)); 256 declare hcs_$wakeup entry (bit (36) aligned, fixed bin (71), fixed bin (71), fixed bin (35)); 257 declare hphcs_$ips_wakeup entry (bit (*) aligned, char (*)); 258 declare ioa_ entry options (variable); 259 declare ioa_$rs entry options (variable); 260 declare ioa_$rsnnl entry options (variable); 261 declare ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 262 declare ipc_$decl_ev_call_chn entry (fixed bin (71), entry, ptr, fixed bin, fixed bin (35)); 263 declare ipc_$delete_ev_chn entry (fixed bin (71), fixed bin (35)); 264 declare lg_ctl_$logout_operator entry (ptr, char (*), char (*)); 265 declare lg_ctl_$logout_channel entry (ptr, char (*)); 266 declare log_write_$open entry (character (*), character (*), bit (1) aligned, pointer, fixed binary (35)); 267 declare log_write_$close entry (pointer, fixed binary (35)); 268 declare match_star_name_ entry (char (*), char (*), fixed bin (35)); 269 declare mc_con_rec_$check entry (); 270 declare mc_util_$get_seg entry (char (*), ptr, fixed bin (35)); 271 declare mc_util_$mrt_source entry (char (*), fixed bin, fixed bin (35)); 272 declare mc_util_$mrt_stream entry (fixed bin, char (*), ptr, fixed bin, fixed bin (35)); 273 declare mc_util_$queue entry (ptr, bit (1), ptr, fixed bin, fixed bin, fixed bin (35)); 274 declare mc_wakeups_$typer_out entry; 275 declare mrd_util_$write entry (ptr, ptr, fixed bin, fixed bin, fixed bin, fixed bin, fixed bin (35)); 276 declare sc_create_sci_ entry (pointer, fixed binary (35)); 277 declare sc_create_sci_$destroy entry (pointer); 278 declare ssu_$get_info_ptr entry (ptr) returns (ptr); 279 declare sys_log_$command_error entry options (variable); 280 declare sys_log_ entry options (variable); 281 declare uc_send_ls_response_ entry (ptr, fixed bin (18), bit (36) aligned, 282 bit (72) aligned, fixed bin (71), ptr, char (32) aligned, 283 fixed bin (35), fixed bin (35)); 284 declare unique_chars_ entry (bit (*)) returns (char (15)); 285 286 /* EXTERNAL constants */ 287 declare as_error_table_$dialnotup fixed bin (35) ext static; 288 declare (error_table_$action_not_performed, 289 error_table_$ai_out_range, 290 error_table_$bad_vchannel, 291 error_table_$invalid_device, 292 error_table_$io_no_permission, 293 error_table_$ioname_not_active, 294 error_table_$ioname_not_found, 295 error_table_$ionmat, 296 error_table_$noentry, 297 error_table_$notalloc, 298 error_table_$typename_not_found, 299 error_table_$vchn_active, 300 error_table_$vchn_not_found) fixed bin (35) ext static; 301 302 declare cleanup condition; 303 304 305 init: entry (P_mc_ansp, P_cdtp, P_temp_SDBp, P_mcmp, P_message_ptr); 306 307 /* This entry is called by mc_util_$init. It sets up all of the internal static 308* variables needed by the other entries. 309**/ 310 311 mc_ansp, sc_stat_$mc_ansp = P_mc_ansp; 312 temp_SDBp = P_temp_SDBp; 313 mcmp = P_mcmp; 314 messp = P_message_ptr; 315 316 mrtp = mc_anstbl.mrtp; 317 vconsp = mc_anstbl.vconsp; 318 319 return; 320 321 322 /* This is the reply command. */ 323 324 reply_command: entry (Destination, Message_ptr, Message_length, inttyp, code); 325 326 code = 0; 327 recipient = Destination; 328 mc_atep = inttyp; 329 if mc_atep ^= null () then 330 if mc_ate.flags.reply_restricted then 331 if mc_ate.restrict_reply ^= "" then /* If there is a restriction on reply */ 332 if recipient ^= mc_ate.restrict_reply then do; /* .. check it. */ 333 code = error_table_$io_no_permission; /* Naughty. */ 334 return; 335 end; 336 337 call mc_util_$mrt_source (recipient, mrt_source, code); 338 if code ^= 0 then return; /* Couldn't find him. */ 339 if ^MRT.source (mrt_source).flags.init then /* He's not attached. */ 340 do; 341 noreply: code = error_table_$ioname_not_active; 342 return; 343 end; 344 temp_SDBp -> stream.hismess = MRT.source (mrt_source).hismess; /* Where to put the reply. */ 345 346 autocode = 0; /* Write it. */ 347 348 call mrd_util_$write (temp_SDBp, Message_ptr, 0, (Message_length), nt, state, autocode); 349 code = autocode; 350 351 return; 352 353 354 /* This entry checks to see if the source named has enabled quits, by checking a bit in mc.message. 355* If quits are enabled, it uses a highly-privileged interface to send an IPS quit. */ 356 357 quit_command: entry (insc, inttyp, code); 358 359 code = 0; 360 insca = insc; 361 if inttyp ^= null () /* Not send_admin_command_ or some other previleged entity */ 362 then if inttyp -> mc_ate.flags.reply_restricted then /* Is this terminal limited in who it can quit? */ 363 if inttyp -> mc_ate.restrict_reply ^= insca then do; 364 code = error_table_$io_no_permission; /* Naughty. */ 365 return; 366 end; 367 368 call mc_util_$mrt_source (insca, mrt_source, code); 369 if code ^= 0 then return; /* Couldn't find him. */ 370 if ^MRT.source (mrt_source).flags.init then /* He's not attached. */ 371 do; 372 code = error_table_$ioname_not_active; 373 return; 374 end; 375 if substr (mcmp -> syscon_mseg.quit_bits, mrt_source, 1) then do; /* Quits enabled? */ 376 call ioa_ ("Sending quit to ^a (^w)", MRT.source (mrt_source).source, MRT.source (mrt_source).hismess -> syscon_mseg.current_process_id); 377 call hphcs_$ips_wakeup (MRT.source (mrt_source).hismess -> syscon_mseg.current_process_id, "quit"); 378 end; 379 else code = error_table_$io_no_permission; 380 return; 381 382 intercom: entry (Destination, Message_ptr, Message_length, inttyp, code); 383 384 /**** This entry is called when an operator downstairs wants to talk to 385* an operator upstairs. */ 386 387 code = 0; 388 bufferp2 = addr (buffer2); 389 390 char32 = Destination; 391 mc_atep = SEARCH_MC_ANSTBL (char32, code); /* Look up destination. */ 392 if code ^= 0 then return; /* Quit if not in table. */ 393 if mc_ate.iocb = null () 394 then do; 395 code = error_table_$ioname_not_active; 396 return; 397 end; 398 399 call ioa_$rsnnl ("FROM ^a: ^a", buffer2, lng, inttyp -> mc_ate.real_tty_name, message); 400 qp = mc_ate.queue_ptr; /* Locate device queue for destination. */ 401 sendalarm = "0"b; /* Don't make a fuss. */ 402 call mc_util_$queue (qp, sendalarm, bufferp2, lng, 0, code); /* Queue stuff for writing. */ 403 return; 404 405 406 /* This entry is called by system_control_ whenever an input line is typed. 407* It logs the input line, so that we can find out what was said to the system, 408* and it may broadcast the input line to other terminals if the mc_ate for the sending terminal specifies. */ 409 410 note_input: entry (Message, inttyp, code); 411 412 code = 0; 413 if inttyp = null () then return; 414 mc_ansp = sc_stat_$mc_ansp; 415 bufferp2 = addr (buffer2); 416 call ioa_$rs (" (input on ^a) ^a", buffer2, lng, inttyp -> mc_ate.real_tty_name, Message); 417 sendalarm = "0"b; /* Not that important. */ 418 419 if inttyp -> mc_ate.broadcast & ^inttyp -> mc_ate.broadcast_all 420 then do; /* Broadcast to specified list? */ 421 do k = 1 to inttyp -> mc_ate.n_casts; /* Scan broadcast list. */ 422 char32 = inttyp -> mc_ate.cast (k); /* Get one destination. */ 423 mc_atep = SEARCH_MC_ANSTBL (char32, code); /* Hunt receiver. */ 424 if code = 0 425 then if mc_atep ^= inttyp then do; /* NEVER broadcast back to inputter. */ 426 qp = mc_ate.queue_ptr; /* Locate queue segment. */ 427 call mc_util_$queue (qp, sendalarm, bufferp2, lng, 0, code); 428 end; 429 end; 430 end; 431 else if inttyp -> mc_ate.broadcast & inttyp -> mc_ate.broadcast_all then do; /* Broadcast to everybody? */ 432 do k = 1 to mc_anstbl.current_size; /* Check all consoles. */ 433 mc_atep = addr (mc_anstbl.entry (k)); 434 if mc_ate.flags.active then 435 if mc_atep ^= inttyp then do; /* .. nor does it mean myself (silly) */ 436 qp = mc_ate.queue_ptr; 437 call mc_util_$queue (qp, sendalarm, bufferp2, lng, 0, code); 438 end; 439 end; 440 end; 441 return; 442 443 444 /* This entry is called by admin to set the broadcast list for a terminal. The default is no broadcast. */ 445 446 set_broadcast: entry (intty, instring, code); 447 448 dcl instring char (*); 449 450 code = 0; 451 char32 = intty; /* Search for this console. */ 452 mc_atep = SEARCH_MC_ANSTBL (char32, code); /* .. */ 453 if code ^= 0 then return; 454 455 if instring = "none" then do; /* Reset switch. */ 456 mc_ate.broadcast, mc_ate.broadcast_all = "0"b; 457 mc_ate.n_casts = 0; 458 mc_ate.cast (*) = ""; 459 end; 460 else if instring = "all" then 461 mc_ate.broadcast, mc_ate.broadcast_all = "1"b; 462 else do; /* Must be list. */ 463 mc_ate.n_casts = 0; /* Clear list. */ 464 mc_ate.broadcast = "1"b; 465 do i = 1 repeat i + j while (i < length (instring)); 466 j = search (substr (instring, i), ","); /* find next comma. */ 467 if j = 0 then j = length (instring) - i + 2; 468 mc_ate.n_casts = mc_ate.n_casts + 1; 469 mc_ate.cast (mc_ate.n_casts) = substr (instring, i, j - 1); 470 end; 471 end; 472 return; 473 474 475 /* This entry is called by admin to set the "reply restriction" for a terminal. */ 476 477 set_restrict: entry (intty, instring, code); 478 479 code = 0; 480 char32 = intty; 481 mc_atep = SEARCH_MC_ANSTBL (char32, code); 482 if code ^= 0 then return; 483 484 mc_ate.restrict_reply = instring; 485 mc_ate.flags.reply_restricted = (instring ^= ""); 486 return; 487 488 489 new_vchannel: entry (intty, authority, inttyp, code); 490 491 /* This entry is the same as accept (below) except that the virtual channels 492* created this way, must be "accepted" by the operator before being used. */ 493 494 code = 0; 495 char32 = intty; 496 new_vchn_flag = "1"b; 497 virtual_flag = "1"b; 498 cdte_flag = "0"b; 499 500 goto COMMON_NEW; 501 502 new_tty: entry (intty, authority, P_cdte_flag, inttyp, code); 503 504 /* This entry accepts a console by symbolic name and adds it 505* to the message coordinator's answer table. It also creates a 506* typeout queue segment for this new tty. 507* 508* First check for this console already hooked up. If not, do it. 509* Return error_table_$ionmat if it's already here. 510* 511* mc_commands_$mc_login is used for creating entries in the mc_anstbl 512* when the "login {person_id} -operator", without -vchannel, is used; 513* it sets the mc_ate.pending flag. Only these custom-made entries may 514* be used for dsa channels when virtual channels are not used. 515**/ 516 517 code = 0; 518 char32 = intty; 519 virtual_flag = (index (char32, ".") = 0) & (char32 ^= "otw_"); 520 cdte_flag = P_cdte_flag; /* has a cdte ? */ 521 new_vchn_flag = ""b; 522 523 COMMON_NEW: /* new_vchannel joins us here */ 524 525 must_send_operator_response = ""b; /* i.e., we don't need to send a response */ 526 527 mc_atep = SEARCH_MC_ANSTBL (char32, code); 528 inttyp = mc_atep; /* output param */ 529 if code = 0 530 then if ^mc_ate.flags.pending 531 then do; 532 string (mc_ate.authority) = authority; /* Reset authority flags. */ 533 if mc_ate.sci_ptr ^= null () then do; /* not supposed to happen, but faults are un-nice. */ 534 sc_subsystem_info_ptr = ssu_$get_info_ptr (mc_ate.sci_ptr); 535 sc_subsystem_info.restriction_flags = authority; 536 end; 537 code = error_table_$ionmat; 538 return; 539 end; 540 else if mc_ate.flags.virtual /* vchannel pending accept */ 541 then do; 542 mc_ate.flags.pending = ""b; 543 if mc_ate.ls_procid ^= ""b /* network line */ 544 then call FILL_RESPONSE_STRUCTURE (); 545 /* prepare to reply to login_server operator request */ 546 547 call CONNECT_PHYSICAL_CHANNEL (); 548 return; 549 end; 550 else ; 551 552 else if (code ^= error_table_$ioname_not_found 553 & code ^= error_table_$ioname_not_active) 554 then return; 555 556 if mc_atep = null /* need to allocate a new_entry */ 557 then do; 558 if ^cdte_flag & ^virtual_flag then do; /* non-cdt channels are created upon "dialing in" */ 559 code = error_table_$ioname_not_found; /* same code as a channel not in MC_SERVICE */ 560 return; 561 end; 562 j, mc_anstbl.current_size = mc_anstbl.current_size + 1; 563 mc_atep = addr (mc_anstbl.entry (j)); 564 end; 565 566 else if ^cdte_flag & ^virtual_flag /* requires pending entry */ 567 & code = error_table_$ioname_not_found 568 then return; 569 570 code = 0; 571 mc_ate.flags = ""b; 572 mc_ate.pad_ptrs = ""b; 573 mc_ate.flags.vchn_requires_accept = new_vchn_flag; 574 mc_ate.queue_ptr = null; 575 mc_ate.sci_ptr = null; 576 mc_ate.iocb = null; 577 mc_ate.cdtep = null; 578 mc_ate.queue_event = 0; 579 mc_ate.pad_ev_chn = ""b; 580 mc_ate.virtual_tty_name = intty; 581 mc_ate.oper_info.personid = ""; 582 583 584 string (mc_ate.authority) = authority; /* What this typewriter is allowed to do. */ 585 mc_ate.flags.active = "1"b; 586 587 /* Now initiate or create queue seg. */ 588 589 if length (rtrim (mc_ate.virtual_tty_name)) + length (".queue") 590 <= 32 then call mc_util_$get_seg 591 (rtrim (mc_ate.virtual_tty_name) || ".queue", qp, code); 592 else do; 593 call mc_util_$get_seg (unique_chars_ (""b), qp, code); 594 if code = 0 then call hcs_$chname_seg (qp, "", intty, (0)); 595 end; 596 597 if code ^= 0 then goto NEWERR; 598 599 mc_ate.queue_ptr = qp; /* Seg for queue of things to be typed. */ 600 mc_ate.n_casts = 0; 601 mc_ate.restrict_reply = ""; /* .. and to whom. (default is everybody) */ 602 string (mc_ate.control) = "0"b; /* Allowed to type but nothing waiting */ 603 604 call ipc_$create_ev_chn (mc_ate.queue_event, code); /* Channel to wake when want to type. */ 605 if code ^= 0 then goto NEWERR; 606 607 /* Set up console queue seg */ 608 call hcs_$truncate_seg (qp, 0, code); 609 if code ^= 0 then goto NEWERR; 610 611 device_queue.channel = mc_ate.queue_event; 612 device_queue.device_name = intty; 613 device_queue.mc_atep = mc_atep; 614 615 /* What to do when typer channel kicked. */ 616 call ipc_$decl_ev_call_chn (device_queue.channel, mc_wakeups_$typer_out, qp, MC_PRIO, code); 617 if code ^= 0 then goto NEWERR; 618 619 call mc_con_rec_$check (); /* Check to see if we can use this 620* terminal for console recovery. */ 621 622 if virtual_flag then do; 623 mc_ate.flags.virtual = "1"b; 624 return; 625 end; 626 627 if mc_ate.ls_procid ^= ""b /* network line */ 628 then call FILL_RESPONSE_STRUCTURE (); /* prepare to reply to login_server operator request */ 629 630 631 call CONNECT_PHYSICAL_CHANNEL (); /* attach iocb, event channel for dial/hangup, etc. 632* mc_login does this for virtual channels 633* when someone logs into one */ 634 if mc_ate.real_tty_name = "otw_" & 635 mc_ate.flags.the_system_console then /* Define the mc_ate pointer for otw_ */ 636 inttyp = addr (mc_anstbl.entry (1)); 637 638 if code = 0 then return; 639 640 NEWERR: 641 642 if must_send_operator_response 643 then do; 644 ls_operator_resp.status_code = code; 645 call uc_send_ls_response_ (addr (ls_operator_resp), 646 size (ls_operator_resp), ls_process_id, 647 ls_handle, ls_event_channel, addr (zerobits), 648 (intty), 0, code); 649 end; 650 else ; 651 652 call KILL_TTY (mc_atep); 653 654 return; 655 656 657 mc_login: entry (intty, Operator_name, P_utep, P_vchannel, P_access_class, P_ls_procid, P_ls_term_ev_chn, P_ls_resp_ev_chn, P_ls_handle, code); 658 659 /* This routine is called by dial_mgr_ to let us know that someone wishes 660* to "login" as a message coordinator. 661* 662* If the P_vchannel is "", we create a pending mc_ate for the channel, and 663* "sign on" the operator. Only a "pending" entry may be used for a DSA 664* channel; "accept" will not create or assign a free mc_ate to DSA channels. 665* This is required for DSA channels since there is no CDTE to hold this 666* information. 667* 668* If the P_vchannel is provided, and a "virtual" mc_ate already exists, 669* we fill in the mc_ate.tty portion, attach the iocb and "sign on" the 670* operator. 671* 672**/ 673 674 code = 0; 675 char32 = intty; 676 utep = P_utep; 677 vchannel = P_vchannel; 678 access_class_range = P_access_class; 679 mc_ansp = sc_stat_$mc_ansp; 680 dutp = as_data_$dutp; 681 iutep = addr (dutbl.entry (1)); /* Initializer's ute entry ptr */ 682 683 op_ok = ""b; 684 685 if vchannel = "" 686 then do; 687 mc_atep = SEARCH_MC_ANSTBL (char32, code); 688 if code = 0 /* already active */ 689 | code = error_table_$ioname_not_active /* already pending */ 690 then do; 691 code = error_table_$ionmat; 692 call ABORT_DIALIN (code, ""); 693 return; 694 end; 695 696 else if code ^= error_table_$ioname_not_found 697 then do; 698 call ABORT_DIALIN (code, ""); 699 return; /* "real" error */ 700 end; 701 702 if mc_atep = null /* create a new entry */ 703 then do; 704 if mc_anstbl.current_size = mc_anstbl.max_size 705 then do; /* no more room */ 706 code = error_table_$notalloc; 707 call ABORT_DIALIN (code, ""); 708 return; 709 end; 710 711 mc_anstbl.current_size = mc_anstbl.current_size + 1; 712 mc_atep = addr (mc_anstbl.entry (mc_anstbl.current_size)); 713 end; 714 715 unspec (mc_ate) = ""b; 716 end; 717 718 else do; /* attach to a virtual channel */ 719 if (index (vchannel, ".") ^= 0) | (vchannel = "otw_") 720 then do; 721 code = error_table_$bad_vchannel; 722 call ABORT_DIALIN (code, ""); 723 return; 724 end; 725 726 mc_atep = SEARCH_MC_ANSTBL (char32, code); 727 if (code = 0 728 | code = error_table_$ioname_not_active) 729 then do; 730 code = error_table_$ionmat; 731 call ioa_$rsnnl ("Channel ^a already in use.", buffer2, 732 (0), char32); 733 call sys_log_$command_error (-1, code, 734 "mc_commands_$mc_login", buffer2); 735 call ABORT_DIALIN (code, ""); 736 return; 737 end; 738 739 else if code ^= error_table_$ioname_not_found 740 then do; 741 call ABORT_DIALIN (code, ""); 742 return; /* real error */ 743 end; 744 745 mc_atep = SEARCH_MC_ANSTBL (vchannel, code); 746 if code = 0 747 then if mc_ate.iocb ^= null () 748 then do; 749 code = error_table_$vchn_active; 750 /* vchannel already active */ 751 call ABORT_DIALIN (code, ""); 752 return; 753 end; 754 else ; 755 756 else do; 757 if code = error_table_$ioname_not_found /* vchannel does not exist */ 758 then code = error_table_$vchn_not_found; 759 call ABORT_DIALIN (code, ""); 760 return; 761 end; 762 763 if sc_stat_$vchn_requires_accept then do; 764 do i = 1 to mc_anstbl.current_size while (^op_ok); 765 if (Operator_name = mc_anstbl.entry (i).oper_info.personid) 766 /* operator already cleared */ 767 then op_ok = "1"b; 768 end; 769 end; 770 if ^mc_ate.flags.vchn_requires_accept then op_ok = "1"b; 771 end; 772 773 if aim_check_$greater (get_process_access_class_ (), access_class_range (1)) 774 then do; 775 call ABORT_DIALIN (error_table_$ai_out_range, "Channel not system_low"); 776 return; 777 end; 778 779 mc_ate.virtual_tty_name = vchannel; 780 mc_ate.real_tty_name = intty; 781 mc_ate.sci_ptr = null (); 782 mc_ate.cdtep = null (); 783 784 mc_ate.ls_procid = P_ls_procid; /* Accept wakeups from this process in mc_tty_ */ 785 mc_ate.ls_term_ev_chn = P_ls_term_ev_chn; 786 mc_ate.ls_resp_ev_chn = P_ls_resp_ev_chn; 787 mc_ate.ls_handle = P_ls_handle; 788 789 call ipc_$create_ev_chn (mc_ate.event, code); 790 if code ^= 0 then do; 791 call ABORT_DIALIN (code, ""); 792 return; 793 end; 794 795 call ipc_$decl_ev_call_chn (mc_ate.event, mc_anstbl.cons_cont_proc, 796 mc_atep, MC_PRIO, code); 797 if code ^= 0 then do; 798 call ABORT_DIALIN (code, ""); 799 return; 800 end; 801 802 if utep ^= null then 803 ute.proc_id = get_process_id_ (); /* Target process set in case a bump is done */ 804 if op_ok 805 then do; 806 mc_ate.flags.pending = ""b; 807 call FILL_RESPONSE_STRUCTURE (); 808 call CONNECT_PHYSICAL_CHANNEL (); 809 if code ^= 0 then do; 810 call ABORT_DIALIN (code, ""); 811 return; /* let AS deal with the login_server */ 812 end; 813 end; 814 else mc_ate.flags.pending = "1"b; /* wait for "accept" */ 815 816 /* Tell the operator */ 817 818 call sys_log_ (SL_LOG_BEEP, "^a: Channel ^a^[ vchannel (^a)^;^s^] dialed to Initializer (^a^[ ACCEPTED^])", 819 "mc_commands_$mc_login", mc_ate.real_tty_name, 820 mc_ate.flags.virtual, mc_ate.virtual_tty_name, 821 Operator_name, op_ok); 822 823 /* Sign on the operator */ 824 825 if ^sc_stat_$no_operator_login then 826 mc_ate.oper_info.personid = Operator_name; 827 828 code = 0; 829 call DIALIN_OK (); 830 831 return; 832 833 834 remove_tty: entry (intty, P_drop_terminal, code); 835 836 /* This entry is called to remove a tty from the message coordinator. 837* It removes all references to this channel from all vcons table entries. 838* If intty is the name of the real channel connected to a virtual channel, 839* the real channel is dropped, but the output to the virtual channel 840* continues to get queued up, i.e., the virtual channel may be reused 841* without needing to be "accepted" again. Otherwise, the channel is removed 842* from the list of destinations of all virtual consoles and the iocb, queue 843* segment, event channels and the corresponding mc_ate are destroyed. 844* 845* If this entry is called from mc_tty_ when a terminal is disconnected, 846* P_drop_terminal is ""b and no attempt is made to disconnect the line. 847**/ 848 849 code = 0; 850 char32 = intty; 851 if index (char32, ".") ^= 0 852 | intty = "otw_" 853 then virtual_flag = ""b; 854 else virtual_flag = "1"b; 855 856 mc_atep = SEARCH_MC_ANSTBL (char32, code); 857 858 if code = error_table_$ioname_not_active 859 then do; 860 if P_drop_terminal 861 then do; 862 code = 0; 863 if mc_ate.ls_procid = ""b & ^mc_ate.virtual 864 then call DROP_CDT_TERMINAL (mc_atep, char32); 865 else call SEND_OPERATOR_RESPONSE (mc_ate.real_tty_name, 866 error_table_$action_not_performed); 867 end; 868 mc_ate.flags.pending = ""b; 869 mc_ate.real_tty_name = ""; 870 mc_ate.oper_info.personid = ""; 871 mc_ate.ls_procid = ""b; 872 return; 873 end; 874 875 if code ^= 0 then do; 876 code = 0; 877 call DROP_CDT_TERMINAL (mc_atep, char32); 878 if code ^= 0 then call 879 sys_log_ (SL_LOG_BEEP, "Unable to locate a CDT entry for ^a while attempting to drop it.", 880 char32); 881 return; 882 end; 883 884 885 /* Find every reference to this typewriter that is made in the vcons tab */ 886 do vce = 1 to vcons_tab.no_of_vcons; 887 vcep = addr (vcons_tab.vcons (vce)); 888 if vcons.flags.inuse /* No need to look at empty entries */ 889 then do dest = 1 to vcons.no_of_dest; 890 if vcons.dest (dest).dest = char32 then /* found a reference */ 891 do; /* Get rid of it */ 892 do i = dest to vcons.no_of_dest - 1; 893 vcons.dest (i).type = vcons.dest (i + 1).type; 894 vcons.dest (i).dest = vcons.dest (i + 1).dest; 895 vcons.dest (i).queue_seg_ptr = vcons.dest (i + 1).queue_seg_ptr; 896 end; 897 vcons.no_of_dest = vcons.no_of_dest - 1; 898 goto rtnext; /* Assume its not here twice */ 899 end; 900 end; 901 rtnext: end; 902 903 904 /* Remember the star entry */ 905 vcep = addr (vcons_tab.star_entry); 906 do dest = 1 to vcons.no_of_dest; 907 if vcons.dest (dest).dest = char32 then 908 do; 909 do i = dest to vcons.no_of_dest - 1; 910 vcons.dest (i).type = vcons.dest (i + 1).type; 911 vcons.dest (i).dest = vcons.dest (i + 1).dest; 912 vcons.dest (i).queue_seg_ptr = vcons.dest (i + 1).queue_seg_ptr; 913 end; 914 vcons.no_of_dest = vcons.no_of_dest - 1; 915 goto rtnext1; 916 end; 917 end; 918 rtnext1: 919 920 if mc_ate.pending /* pending on a vchannel */ 921 then do; 922 if P_drop_terminal 923 then do; 924 code = 0; 925 if mc_ate.ls_procid = ""b & ^mc_ate.virtual 926 then call DROP_CDT_TERMINAL (mc_atep, char32); 927 else call SEND_OPERATOR_RESPONSE (mc_ate.real_tty_name, 928 error_table_$action_not_performed); 929 end; 930 if mc_ate.real_tty_name = char32 /* just drop the real tty of a vchannel */ 931 then do; 932 mc_ate.flags.pending = ""b; 933 mc_ate.real_tty_name = ""; 934 mc_ate.oper_info.personid = ""; 935 mc_ate.ls_procid = ""b; 936 return; 937 end; 938 else ; /* drop down to call kill_tty */ 939 end; 940 941 else if ^(mc_ate.flags.virtual & mc_ate.virtual_tty_name = char32 942 & mc_ate.real_tty_name = "") /* all but vchns not connected to a real channel */ 943 then do; 944 call DELETE_IOCB (mc_atep); 945 if P_drop_terminal then do; 946 if mc_ate.ls_procid = ""b 947 then do; 948 call DROP_CDT_TERMINAL (mc_atep, char32); 949 if code = error_table_$noentry then 950 call sys_log_ (SL_TYPE_BEEP, "Unable to locate a CDT entry for ^a while attempting to drop it.", mc_ate.real_tty_name); 951 end; 952 else do; 953 call SEND_TERMINATE_RESPONSE (); 954 mc_ate.ls_procid = ""b; 955 end; 956 end; 957 if mc_ate.virtual_tty_name ^= char32 958 then do; /* do not remove the mc_ate */ 959 mc_ate.signed_on = ""b; 960 mc_ate.oper_info.personid = ""; 961 return; 962 end; 963 end; 964 965 /* "Delete" the mc_ate, queue segment, the whole thing */ 966 967 code = 0; 968 qp = mc_ate.queue_ptr; 969 970 call KILL_TTY (mc_atep); /* Remove the mc_ate */ 971 972 return; 973 974 /* This entry is essentially an abbreviation for the following sequence of calls: 975* remove_tty(intty) 976* new_tty (param1) 977* define (,param1) where successively takes on the 978* names of all virtual consoles that were 979* previously directed to intty. 980* It is complicated by having to preserve the output destined for intty, which it puts 981* in param1's queue by copying it wholesale. */ 982 983 substty: entry (intty, param1, P_cdte_flag, inttyp, P_drop_terminal, code); 984 985 code = 0; 986 char32 = intty; 987 mc_atep = SEARCH_MC_ANSTBL (char32, code); 988 if code ^= 0 then return; /* Not there, meaningless. */ 989 990 inttyp = SEARCH_MC_ANSTBL ((param1), code); /* We need to weed out the pending entries */ 991 if code = error_table_$ioname_not_active 992 | code = 0 993 then if inttyp -> mc_ate.pending 994 then do; 995 code = error_table_$action_not_performed; 996 return; 997 end; 998 999 cdte_flag = P_cdte_flag; 1000 1001 call new_tty (param1, string (mc_ate.authority), cdte_flag, 1002 inttyp, autocode); 1003 if autocode ^= 0 then 1004 if autocode = error_table_$ionmat then autocode = 0; 1005 else do; /* Real error. */ 1006 code = autocode; 1007 return; 1008 end; 1009 1010 p = inttyp -> mc_ate.queue_ptr; /* Pointer to queue seg of new typewriter. */ 1011 qp = mc_atep -> mc_ate.queue_ptr; /* Pointer to queue seg of old typewriter. */ 1012 1013 /* Change all the references in the virtual console table. */ 1014 do vce = 1 to vcons_tab.no_of_vcons; 1015 vcep = addr (vcons_tab.vcons (vce)); 1016 if vcons.flags.inuse then /* No need to look at empty entries */ 1017 do dest = 1 to vcons.no_of_dest; 1018 if vcons.dest (dest).dest = intty then /* Found a reference */ 1019 do; /* Change it */ 1020 vcons.dest (dest).dest = param1; 1021 vcons.dest (dest).queue_seg_ptr = p; 1022 end; 1023 end; 1024 end; 1025 1026 /* * */ 1027 vcep = addr (vcons_tab.star_entry); 1028 do dest = 1 to vcons.no_of_dest; 1029 if vcons.dest (dest).dest = intty then 1030 do; 1031 vcons.dest (dest).dest = param1; 1032 vcons.dest (dest).queue_seg_ptr = p; 1033 end; 1034 end; 1035 1036 /* Now transfer all the pending output for intty to queue for param1 */ 1037 if qp -> device_queue.no_of_messages = 0 then goto delete; /* Nothing to save */ 1038 i = p -> device_queue.end_of_queue; /* Link saved stuff to end of savior queue */ 1039 if i ^= 0 then p -> device_queue.line (i).next_line = p -> device_queue.next_free + 1; 1040 j = p -> device_queue.next_free + 1; /* Dont fiddle with free list. Just allocate blocks */ 1041 this_line = qp -> device_queue.top_of_queue; 1042 1043 do jj = 1 to 10000 while (this_line ^= 0); 1044 p -> device_queue.line (j).not_done = qp -> device_queue.line (this_line).not_done; 1045 p -> device_queue.line (j).alarm = qp -> device_queue.line (this_line).alarm; 1046 p -> device_queue.line (j).offset = qp -> device_queue.line (this_line).offset; 1047 p -> device_queue.line (j).source = qp -> device_queue.line (this_line).source; 1048 p -> device_queue.line (j).line_length = qp -> device_queue.line (this_line).line_length; 1049 p -> device_queue.line (j).string = qp -> device_queue.line (this_line).string; 1050 this_line = qp -> device_queue.line (this_line).next_line; 1051 if this_line = 0 then /* This is the end of the chain */ 1052 p -> device_queue.line (j).next_line = 0; 1053 else do; 1054 p -> device_queue.line (j).next_line = j + 1; 1055 j = j + 1; 1056 end; 1057 end; 1058 1059 p -> device_queue.no_of_messages = p -> device_queue.no_of_messages + qp -> device_queue.no_of_messages; 1060 if p -> device_queue.top_of_queue = 0 then /* Savior was previously empty */ 1061 do; 1062 p -> device_queue.top_of_queue = p -> device_queue.next_free + 1; 1063 call hcs_$wakeup (mc_anstbl.mc_procid, p -> device_queue.channel, 0, code); /* wake typer_out */ 1064 end; 1065 p -> device_queue.end_of_queue = j; 1066 p -> device_queue.next_free = j; 1067 1068 delete: call DELETE_IOCB (mc_atep); 1069 1070 if mc_ate.ls_procid = ""b & ^mc_ate.virtual 1071 then call DROP_CDT_TERMINAL (mc_atep, char32); 1072 else call SEND_TERMINATE_RESPONSE (); 1073 1074 if ^(mc_ate.flags.virtual & mc_ate.real_tty_name = char32) 1075 then call KILL_TTY (mc_atep); /* Delete the typewriter. */ 1076 1077 return; 1078 1079 /* This is the guts of the define command. The human interface is 1080* in admin_ which then calls this entry for every definition. 1081* If the specified tty is not found in the mc_anstbl, the vcons 1082* given the default destination and an error code is returned. 1083* If the specified vcons is already known, the new destination 1084* is added, otherwise a new vcons entry is created. The real 1085* channel associated with a vchannel may be specified interchangeably 1086* with the vchannel to which it is connected. Pending entries not 1087* associated with vchannels are treated like non-existent ttys. 1088* Pending entries associated with vchannels are rejected; the 1089* operator can define the vcons using the star_entry or the 1090* vchannel name. */ 1091 1092 define: entry (invc, type, intty, code); 1093 1094 code = 0; /* initialization is bliss */ 1095 if type = "tty" then 1096 do; 1097 fbtype = 1; 1098 char32 = intty; 1099 mc_atep = SEARCH_MC_ANSTBL (char32, code); /* Look for this typewriter in mc_answer table */ 1100 if code ^= 0 then 1101 if code ^= error_table_$ioname_not_found 1102 & code ^= error_table_$ioname_not_active 1103 then return; /* A real error */ 1104 else do; /* Not there. Use default typewriter. */ 1105 qp = vcons_tab.star_entry.dest (1).queue_seg_ptr; 1106 tempdest = vcons_tab.star_entry.dest (1).dest; 1107 mc_atep = device_queue.mc_atep; 1108 end; 1109 else do; /* Found it. Get relevant info */ 1110 if mc_ate.flags.pending & mc_ate.real_tty_name = char32 1111 then do; /* the real channel pending accept on vchannel */ 1112 code = error_table_$action_not_performed; 1113 return; 1114 end; 1115 1116 qp = mc_ate.queue_ptr; 1117 tempdest = char32; 1118 end; 1119 vcep = SEARCH_VCONS_TAB (invc, vce, autocode); /* Look for this vcons in table */ 1120 if autocode = 0 then goto change_vce; /* Found it. */ 1121 if autocode = error_table_$ioname_not_found then goto new_vce; /* Not there */ 1122 if code = 0 then code = autocode; /* A real error. */ 1123 return; 1124 end; 1125 else if type = "log" then do; 1126 fbtype = 2; 1127 tempdest = intty; 1128 call log_write_$open (sc_stat_$log_dir, tempdest, "1"b /* create ok */, qp, code); 1129 if code ^= 0 then return; 1130 vcep = SEARCH_VCONS_TAB (invc, vce, code); /* Look for this vcons in table. */ 1131 if code = 0 then goto change_vce; /* Found it. */ 1132 if code ^= error_table_$ioname_not_found then return; /* A real error */ 1133 code = 0; /* not there */ 1134 goto new_vce; 1135 end; 1136 1137 else if type = "sink" then 1138 do; 1139 fbtype = 3; 1140 tempdest = intty; 1141 qp = null; 1142 vcep = SEARCH_VCONS_TAB (invc, vce, code); 1143 if code = 0 then goto change_vce; 1144 if code ^= error_table_$ioname_not_found then return; /* Not there */ 1145 code = 0; 1146 goto new_vce; 1147 end; 1148 1149 else do; /* Bad type */ 1150 code = error_table_$typename_not_found; 1151 return; 1152 end; 1153 1154 change_vce: 1155 /* Find out if this destination is already defined */ 1156 do i = 1 to vcons.no_of_dest while (vcons.dest (i).dest ^= tempdest); 1157 end; 1158 if i > vcons.no_of_dest then /* didn't find it */ 1159 if i > 8 then /* Not room for it anyway */ 1160 do; 1161 if code = 0 then code = error_table_$notalloc; 1162 return; 1163 end; 1164 else vcons.no_of_dest = i; /* Allocate new entry */ 1165 vcons.dest (i).type = fbtype; 1166 vcons.dest (i).dest = tempdest; 1167 vcons.dest (i).queue_seg_ptr = qp; 1168 return; 1169 1170 new_vce: 1171 if vcep = null then /* There wasn't a vacant entry. */ 1172 do; 1173 vce, 1174 vcons_tab.no_of_vcons = vcons_tab.no_of_vcons + 1; /* Allocate a new entry. */ 1175 vcep = addr (vcons_tab.vcons (vce)); 1176 end; 1177 vcons.vcons = invc; 1178 vcons.no_of_dest = 1; 1179 vcons.flags.inuse = "1"b; 1180 vcons.dest (1).type = fbtype; 1181 vcons.dest (1).dest = tempdest; 1182 vcons.dest (1).queue_seg_ptr = qp; 1183 return; 1184 1185 redefine: entry (invc, intty, type, param1, code); 1186 1187 code = 0; 1188 call undefine (invc, intty, code); 1189 if code ^= 0 then return; 1190 call define (invc, type, param1, code); 1191 return; 1192 1193 undefine: entry (invc, intty, code); 1194 1195 code = 0; 1196 vcep = SEARCH_VCONS_TAB (invc, vce, code); 1197 if intty = "*" then goto udsMRT; /* This vcons goes entirely away. */ 1198 if code ^= 0 then return; /* That vcons isn't there! */ 1199 /* Find the destination and delete it. */ 1200 do dest = 1 to vcons.no_of_dest; 1201 if vcons.dest (dest).dest = intty then do; 1202 do i = dest to vcons.no_of_dest - 1; 1203 if vcons.dest (i).type = 2 then 1204 call log_write_$close (vcons.dest (i).queue_seg_ptr, (0)); 1205 vcons.dest (i).dest = vcons.dest (i + 1).dest; 1206 vcons.dest (i).type = vcons.dest (i + 1).type; 1207 vcons.dest (i).queue_seg_ptr = vcons.dest (i + 1).queue_seg_ptr; 1208 end; 1209 vcons.no_of_dest = vcons.no_of_dest - 1; 1210 go to udsMRT; /* If any daemon is stuck, go wake him */ 1211 end; 1212 end; 1213 1214 code = error_table_$ioname_not_found; /* Fell out of loop, bad tty name. */ 1215 return; 1216 1217 udsMRT: /* Eliminate all references in the MRT */ 1218 do mrt_source = 1 to MRT.no_of_sources; 1219 if MRT.source (mrt_source).flags.valid then /* No need to look at empty entries */ 1220 do mrt_stream = 1 to MRT.source (mrt_source).no_of_streams; 1221 streamp = addr (MRT.source (mrt_source).stream (mrt_stream)); 1222 if stream.flags.valid then /* No need to look at empty entries */ 1223 do vc = 1 to stream.no_of_vcons; 1224 if stream.vcons (vc) = invc then do; /* Found a reference */ 1225 if intty = "*" then do; /* Deleting whole vcon? */ 1226 do i = vc to stream.no_of_vcons - 1; 1227 stream.vcons (i) = stream.vcons (i + 1); 1228 stream.vcons_index (i) = stream.vcons_index (i + 1); 1229 end; 1230 stream.no_of_vcons = stream.no_of_vcons - 1; 1231 end; 1232 call SHAKE_SOURCE (MRT.source (mrt_source).hismess); 1233 /* If any daemon waits this console, wake */ 1234 goto udnext; /* Assume it's not here twice */ 1235 end; 1236 end; 1237 udnext: end; 1238 end; 1239 if intty ^= "*" then return; /* Unless destroying a vcon entirely, done */ 1240 1241 streamp = addr (MRT.star_entry.stream); 1242 do vc = 1 to stream.no_of_vcons; 1243 if stream.vcons (vc) = invc then do; 1244 do i = vc to stream.no_of_vcons - 1; 1245 stream.vcons (i) = stream.vcons (i + 1); 1246 stream.vcons_index (i) = stream.vcons_index (i + 1); 1247 end; 1248 stream.no_of_vcons = stream.no_of_vcons - 1; 1249 goto wipeout; 1250 end; 1251 end; 1252 1253 wipeout: 1254 if code ^= 0 then return; /* this vcons isn't there. */ 1255 vcons.flags.inuse = "0"b; /* Invalidate the entry */ 1256 vcons_tab.no_of_vcons = vcons_tab.no_of_vcons - 1; 1257 return; 1258 1259 route: entry (insc, instream, invc, type, code); 1260 1261 code = 0; 1262 insca = insc; 1263 instreama = instream; 1264 1265 /* Find out if this virtual console is known */ 1266 vcep = SEARCH_VCONS_TAB (invc, vce, code); 1267 if code ^= 0 then 1268 if code ^= error_table_$ioname_not_found then return; 1269 else do; /* Use default virtual console */ 1270 vce = 1; 1271 vcep = addr (vcons_tab.vcons (1)); 1272 end; 1273 1274 /* Now find place in MRT */ 1275 /* source */ 1276 call mc_util_$mrt_source (insca, mrt_source, autocode); 1277 if autocode ^= 0 then 1278 if autocode = error_table_$ioname_not_found then goto new_source; /* not already routed */ 1279 else return; /* real error */ 1280 1281 /* stream */ 1282 call mc_util_$mrt_stream (mrt_source, instreama, streamp, mrt_stream, autocode); 1283 if autocode ^= 0 then 1284 if autocode = error_table_$ioname_not_found then goto new_stream; 1285 else return; 1286 1287 /* See if this vcons already recieves messages from this source-stream */ 1288 1289 do vc = 1 to stream.no_of_vcons; 1290 if stream.vcons (vc) = invc then goto refresh; 1291 end; 1292 1293 /* Not here. */ 1294 if stream.no_of_vcons < 8 then /* Room enough for another entry. */ 1295 vc, stream.no_of_vcons = stream.no_of_vcons + 1; 1296 else do; 1297 code = error_table_$notalloc; 1298 return; 1299 end; 1300 1301 refresh: 1302 if type = "alarm" then substr (stream.flags.alarm, vc, 1) = "1"b; /* Are these messages important? */ 1303 else substr (stream.flags.alarm, vc, 1) = "0"b; 1304 stream.vcons (vc) = vcons_tab.vcons (vce).vcons; 1305 stream.vcons_index (vc) = vce; 1306 return; 1307 1308 new_stream: /* Create a new stream entry for this source */ 1309 if mrt_stream = 0 then /* need to allocate a new one */ 1310 if MRT.source (mrt_source).no_of_streams < 8 then /* there's room enough */ 1311 mrt_stream, 1312 MRT.source (mrt_source).no_of_streams = MRT.source (mrt_source).no_of_streams + 1; 1313 else do; /* Not room enough */ 1314 code = error_table_$notalloc; 1315 return; 1316 end; 1317 1318 /* Successfully allocated or there was a vacant entry */ 1319 set_stream: 1320 streamp = addr (MRT.source (mrt_source).stream (mrt_stream)); 1321 stream.flags.valid = "1"b; 1322 stream.flags.active = "0"b; 1323 stream.source = insc; 1324 stream.stream = instream; 1325 stream.ourmess = mcmp; 1326 stream.hismess = MRT.source (mrt_source).hismess; 1327 stream.source_index = mrt_source; 1328 stream.stream_index = mrt_stream; 1329 vc, stream.no_of_vcons = 1; 1330 goto refresh; 1331 1332 new_source: /* Create new source entry in MRT */ 1333 if mrt_source = 0 then /* Need to allocate a new one */ 1334 mrt_source, 1335 MRT.no_of_sources = MRT.no_of_sources + 1; 1336 /* else have a vacant one */ 1337 1338 MRT.source (mrt_source).source = insc; 1339 MRT.source (mrt_source).hismess = null; 1340 mrt_stream, 1341 MRT.source (mrt_source).no_of_streams = 1; 1342 string (MRT.source (mrt_source).flags) = "01"b; /* Not initialized but valid */ 1343 goto set_stream; 1344 1345 reroute: entry (insc, instream, invc, param1, type, code); 1346 1347 code = 0; 1348 call deroute (insc, instream, invc, code); 1349 if code ^= 0 then return; 1350 call route (insc, instream, param1, type, code); 1351 return; 1352 1353 deroute: entry (insc, instream, invc, code); 1354 1355 code = 0; 1356 insca = insc; 1357 instreama = instream; 1358 call mc_util_$mrt_source (insca, mrt_source, code); 1359 if code ^= 0 then return; 1360 call mc_util_$mrt_stream (mrt_source, instreama, streamp, mrt_stream, code); 1361 if code ^= 0 then return; 1362 1363 call SHAKE_SOURCE (MRT.source (mrt_source).hismess); 1364 do vc = 1 to stream.no_of_vcons; 1365 if stream.vcons (vc) = invc then do; 1366 do i = vc to stream.no_of_vcons - 1; 1367 stream.vcons (i) = stream.vcons (i + 1); 1368 stream.vcons_index (i) = stream.vcons_index (i + 1); 1369 end; 1370 1371 stream.no_of_vcons = stream.no_of_vcons - 1; 1372 goto drend; 1373 end; 1374 end; 1375 code = error_table_$ioname_not_found; 1376 1377 drend: return; 1378 1379 1380 declare MC_atep pointer; 1381 declare Operator_name char (*); 1382 declare Ex_operator_name char (*); 1383 declare Code fixed bin (35); 1384 1385 sign_in: entry (MC_atep, Operator_name, Ex_operator_name); 1386 1387 mc_atep = MC_atep; 1388 Ex_operator_name = ""; 1389 1390 if mc_ate.signed_on 1391 then Ex_operator_name = mc_ate.oper_info.personid; 1392 mc_ate.signed_on = "1"b; 1393 mc_ate.oper_info.personid = Operator_name; 1394 mc_ate.oper_info.last_input_time = clock (); 1395 return; 1396 1397 sign_out: entry (MC_atep, Ex_operator_name, Code); 1398 1399 call SIGN_OUT (MC_atep, Ex_operator_name, Code); 1400 return; 1401 1402 1403 listen_to_ttys: entry (P_mpx_name); 1404 1405 /* entry called when FNP comes up, listens to all accepted terminals on that FNP */ 1406 1407 declare error_string char (100) aligned; 1408 1409 mc_ansp = sc_stat_$mc_ansp; 1410 if mc_ansp = null () then return; 1411 mpx_starname = rtrim (P_mpx_name) || ".*.**"; 1412 1413 do i = 1 to mc_anstbl.current_size; 1414 mc_atep = addr (mc_anstbl.entry (i)); 1415 if mc_ate.flags.active 1416 then do; 1417 call match_star_name_ (mc_ate.real_tty_name, 1418 mpx_starname, autocode); 1419 if autocode = 0 then do; 1420 if mc_ate.iocb ^= null () then do; 1421 if mc_anstbl.trace then call ioa_$ioa_switch 1422 (sc_stat_$master_iocb, 1423 "MC ^a listen_to_ttys: DETACHING.", 1424 mc_ate.real_tty_name); 1425 call iox_$close (mc_ate.iocb, (0)); 1426 call iox_$detach_iocb (mc_ate.iocb, (0)); 1427 call iox_$destroy_iocb (mc_ate.iocb, (0)); 1428 end; 1429 if mc_anstbl.trace then call ioa_$ioa_switch 1430 (sc_stat_$master_iocb, 1431 "MC ^a listen_to_ttys: ATTACHING.", 1432 mc_ate.real_tty_name); 1433 1434 call ATTACH_ATE (autocode); 1435 if mc_anstbl.trace then do; 1436 if autocode = 0 then call ioa_$ioa_switch 1437 (sc_stat_$master_iocb, 1438 "MC ^a listen_to_ttys: ATTACHED", 1439 mc_ate.real_tty_name); 1440 else do; 1441 call convert_status_code_ (autocode, 1442 (8)" ", error_string); 1443 call ioa_$ioa_switch (sc_stat_$master_iocb, 1444 "MC ^a listen_to_ttys: ATTACH FAILED ^a", 1445 mc_ate.real_tty_name, error_string); 1446 end; 1447 end; 1448 end; 1449 end; 1450 end; 1451 return; 1452 1453 1454 create_iocb: entry (P_mc_atep, code); 1455 1456 /**** Note, if this attach fails, we will have a null sci_ptr. This will 1457* occur for tty channels if the multiplexer is not up. 1458* 1459* This routine is also called by mc_tty_ when the login server sends 1460* a DIALED_UP wakeup to our event channel. 1461*****/ 1462 1463 mc_ansp = sc_stat_$mc_ansp; 1464 mc_atep = P_mc_atep; 1465 iocb_name = "mc" || unique_chars_ (""b) || "." || 1466 rtrim (mc_ate.real_tty_name); 1467 call iox_$attach_name (iocb_name, mc_ate.iocb, 1468 "tty_ " || rtrim (mc_ate.real_tty_name) || 1469 " -hangup_on_detach -suppress_dial_manager", 1470 codeptr (mc_commands_), code); 1471 if code ^= 0 then return; 1472 1473 call iox_$control (mc_ate.iocb, "set_event_channel", addr (mc_ate.event), code); /* cannot be fast */ 1474 if code ^= 0 then go to ERROR; 1475 1476 call sc_create_sci_ (mc_ate.sci_ptr, code); 1477 if code ^= 0 then go to ERROR; 1478 1479 mc_ate.oper_info.last_input_time = clock (); 1480 1481 sc_subsystem_info_ptr = ssu_$get_info_ptr (mc_ate.sci_ptr); 1482 sc_subsystem_info.real_iocb = mc_ate.iocb; 1483 sc_subsystem_info.mc_atep = mc_atep; 1484 sc_subsystem_info.source_name = mc_ate.real_tty_name; 1485 sc_subsystem_info.restriction_flags = string (mc_ate.authority); 1486 sc_subsystem_info.print_ready = "1"b; /* fake a prompt */ 1487 call iox_$open (mc_ate.iocb, Stream_input_output, "0"b, code); 1488 if code ^= 0 then do; 1489 if mc_ate.flags.virtual then goto ERROR; /* Should not happen */ 1490 call iox_$control (mc_ate.iocb, "listen", null (), (0)); 1491 code = 0; 1492 end; 1493 call hcs_$wakeup (mc_anstbl.mc_procid, mc_ate.event, (0), (0)); /* cause mc_tty_ to notice the arrival. */ 1494 return; 1495 1496 ERROR: 1497 call iox_$close (mc_ate.iocb, (0)); 1498 call iox_$detach_iocb (mc_ate.iocb, (0)); 1499 call iox_$destroy_iocb (mc_ate.iocb, (0)); 1500 if mc_ate.event ^= 0 1501 then call ipc_$delete_ev_chn (mc_ate.event, (0)); 1502 mc_ate.iocb = null (); 1503 return; 1504 1505 1506 1507 /* Internal Procedures Follow */ 1508 1509 1510 SEND_OPERATOR_RESPONSE: procedure (P_tty_name, P_code); 1511 1512 dcl P_tty_name char (32) unaligned; 1513 dcl P_code fixed bin (35) parameter; 1514 dcl code fixed bin (35); 1515 1516 call FILL_RESPONSE_STRUCTURE (); 1517 ls_operator_resp.status_code = P_code; 1518 1519 call uc_send_ls_response_ (addr (ls_operator_resp), 1520 size (ls_operator_resp), ls_process_id, ls_handle, 1521 ls_event_channel, addr (zerobits), 1522 (P_tty_name), 0, code); /* log out user and drop line */ 1523 1524 return; 1525 end SEND_OPERATOR_RESPONSE; 1526 1527 SEND_TERMINATE_RESPONSE: procedure; 1528 1529 unspec (ls_term_resp) = ""b; 1530 ls_term_resp.header.message_type = LS_TERMINATION_RESPONSE; 1531 ls_term_resp.header.version = LOGIN_SERVER_TERMINATION_RESPONSE_VERSION_1; 1532 ls_term_resp.process_id = mc_anstbl.mc_procid; 1533 wakeup_data_ptr = mc_atep; 1534 wakeup_data_len = size (mc_ate); 1535 ls_handle = mc_ate.ls_handle; 1536 ls_process_id = mc_ate.ls_procid; 1537 ls_event_channel = mc_ate.ls_term_ev_chn; 1538 1539 call uc_send_ls_response_ (addr (ls_term_resp), 1540 size (ls_term_resp), ls_process_id, ls_handle, 1541 ls_event_channel, addr (zerobits), 1542 (mc_ate.real_tty_name), 0, code); /* log out user and drop line */ 1543 return; 1544 end SEND_TERMINATE_RESPONSE; 1545 1546 1547 DROP_CDT_TERMINAL: procedure (P_mc_atep, P_tty); 1548 1549 declare P_mc_atep pointer parameter; 1550 declare P_tty char (32) unaligned parameter; 1551 declare wakeup_msg char (8); 1552 declare bin_msg fixed bin (71) based; 1553 declare mc_tty char (32) unaligned; 1554 1555 mc_atep = P_mc_atep; 1556 mc_tty = P_tty; /* channel name, only used in case mc_atep or mc_ate.cdtep = null */ 1557 cdtep = null (); 1558 1559 if mc_atep = null then cdtep = FIND_CDTE (mc_tty); 1560 else 1561 if ^mc_ate.the_system_console then do; 1562 if mc_ate.cdtep = null () then cdtep = FIND_CDTE (mc_tty); 1563 else cdtep = mc_ate.cdtep; 1564 end; 1565 else do; 1566 code = 0; /* this is the booload console */ 1567 return; 1568 end; 1569 1570 if cdtep ^= null () 1571 then do; 1572 1573 if ^(cdte.in_use > NOW_FREE) 1574 then go to SET_NO_ENTRY; /* not ours now */ 1575 1576 if cdte.service_type = MC_SERVICE 1577 then do /* usually an MC terminal */ 1578 cdte.in_use = NOW_HUNG_UP; 1579 cdte.current_service_type = INACTIVE; 1580 /* not now */ 1581 return; /* nothing more to do */ 1582 end; 1583 1584 if cdte.current_service_type = MC_SERVICE 1585 then do; 1586 cdte.current_service_type = INACTIVE; 1587 1588 call astty_$tty_event (cdtep, (0)); 1589 /* get channel back from MC now */ 1590 cdte.current_service_type = cdte.service_type; 1591 /* no longer */ 1592 cdte.dialed_to_procid = "0"b; 1593 cdte.dial_ev_chn = 0; 1594 cdte.process = null (); 1595 cdte.tra_vec = WAIT_DIALUP; 1596 cdte.in_use = NOW_DIALED; 1597 /**** Make dialup_ aware of the channel's new state. */ 1598 wakeup_msg = "device"; 1599 call hcs_$wakeup (as_data_$as_procid, cdte.event, 1600 addr (wakeup_msg) -> bin_msg, code); 1601 /**** If channel is authenticated, log it out */ 1602 if cdte.flags.access_control.slave_dial 1603 then call lg_ctl_$logout_channel (cdtep, "drop"); 1604 end; 1605 else if code ^= error_table_$ioname_not_found 1606 then code = error_table_$action_not_performed; 1607 end; 1608 else 1609 1610 SET_NO_ENTRY: 1611 code = error_table_$noentry; /* +++ should be changed */ 1612 return; 1613 1614 end DROP_CDT_TERMINAL; 1615 1616 1617 DELETE_IOCB: procedure (xp); 1618 1619 1620 dcl xp ptr parameter; /* pointer to mc_ate entry */ 1621 1622 if ^(xp -> mc_ate.the_system_console) & (xp -> mc_ate.iocb ^= null) 1623 & (mc_ate.cdtep ^= null) 1624 then do; 1625 call iox_$control (xp -> mc_ate.iocb, "hangup", null (), (0)); 1626 call iox_$close (xp -> mc_ate.iocb, (0)); 1627 call iox_$detach_iocb (xp -> mc_ate.iocb, (0)); 1628 call iox_$destroy_iocb (xp -> mc_ate.iocb, (0)); 1629 call ipc_$delete_ev_chn (xp -> mc_ate.event, code); 1630 end; 1631 1632 xp -> mc_ate.iocb = null (); 1633 xp -> mc_ate.real_tty_name = ""; 1634 xp -> mc_ate.flags.pending = ""b; 1635 1636 /**** Check to see if we have deleted the terminal used for console recovery. 1637* This routine keys on mc_ate.active to find out if it has any good 1638* consoles left. As far as console recovery goes, this terminal is no 1639* longer active; but if only the real channel of a vchannel is being 1640* dropped, the vchannel is still active. Thus the twiddling of 1641* mc_ate.active below: */ 1642 1643 mc_ate.active = ""b; 1644 call mc_con_rec_$check (); 1645 mc_ate.active = "1"b; 1646 1647 1648 /**** Sign out any operator on this terminal. And destroy the SSU 1649* invocation. */ 1650 1651 call SIGN_OUT (xp, old_operator_name, code); 1652 1653 /**** First check for a null sci_ptr. This can happen if the multiplexer 1654* for this channel never came up. */ 1655 1656 if xp -> mc_ate.sci_ptr ^= null () then 1657 do; 1658 if code = 0 /* only if there was an operator signed on */ 1659 then call lg_ctl_$logout_operator ( 1660 ssu_$get_info_ptr (xp -> mc_ate.sci_ptr), 1661 old_operator_name, "drop"); 1662 if ^xp -> mc_ate.the_system_console then 1663 call sc_create_sci_$destroy (xp -> mc_ate.sci_ptr); 1664 end; 1665 code = 0; 1666 return; 1667 1668 end DELETE_IOCB; 1669 1670 1671 KILL_TTY: procedure (xp); 1672 1673 dcl xp ptr parameter; /* pointer to mc_ate entry */ 1674 1675 dcl (j, jj, k) fixed bin; 1676 dcl qp ptr; 1677 1678 if xp -> mc_ate.queue_event ^= 0 1679 then call ipc_$delete_ev_chn (xp -> mc_ate.queue_event, (0)); 1680 1681 1682 if xp -> mc_ate.queue_ptr ^= null () then do; 1683 qp = xp -> mc_ate.queue_ptr; 1684 j = qp -> device_queue.top_of_queue; 1685 do jj = 1 to 10000 while (j ^= 0); 1686 k = qp -> device_queue.line (j).source; 1687 if k > 0 then call SHAKE_SOURCE (MRT.source (k).hismess); 1688 end; 1689 call hcs_$truncate_seg (qp, 0, (0)); 1690 end; 1691 1692 xp -> mc_ate.flags.active, 1693 xp -> mc_ate.flags.vchn_requires_accept, 1694 xp -> mc_ate.flags.virtual = "0"b; /* free the mc_ate entry */ 1695 xp -> mc_ate.virtual_tty_name = ""; 1696 string (xp -> mc_ate.control) = ""b; 1697 1698 xp -> mc_ate.flags.signed_on = ""b; 1699 xp -> mc_ate.oper_info.personid = ""; 1700 xp -> mc_ate.ls_procid = ""b; 1701 1702 return; 1703 1704 end KILL_TTY; 1705 1706 SEARCH_MC_ANSTBL: proc (typw, code) returns (ptr); 1707 dcl code fixed bin (35); 1708 dcl typw char (32); 1709 dcl xp ptr; 1710 dcl (i, j) fixed bin; 1711 1712 mc_ansp = sc_stat_$mc_ansp; /* Most entrypoints call this internal proc */ 1713 /* just after entry; let this proc set */ 1714 /* mc_ansp. */ 1715 j = 0; 1716 do i = 1 to mc_anstbl.current_size; /* Search through mc_anstbl */ 1717 xp = addr (mc_anstbl.entry (i)); 1718 1719 if xp -> mc_ate.flags.active then /* Entry in use? */ 1720 if xp -> mc_ate.virtual_tty_name = typw 1721 | xp -> mc_ate.real_tty_name = typw 1722 /* That's us! Say it, go home */ 1723 then do; 1724 code = 0; 1725 return (xp); 1726 end; 1727 else ; 1728 else if xp -> mc_ate.flags.pending /* pending & ^vchn */ 1729 then if xp -> mc_ate.real_tty_name = typw 1730 /* That's us ! */ 1731 then do; 1732 code = error_table_$ioname_not_active; 1733 return (xp); 1734 end; 1735 else ; 1736 1737 else if j = 0 then j = i; /* An empty entry; remember first one. */ 1738 else ; 1739 1740 end; 1741 if j = 0 then xp = null; 1742 else xp = addr (mc_anstbl.entry (j)); 1743 code = error_table_$ioname_not_found; 1744 return (xp); 1745 1746 end SEARCH_MC_ANSTBL; 1747 1748 SEARCH_VCONS_TAB: proc (vcon, vce, code) returns (ptr); 1749 dcl code fixed bin (35); 1750 dcl vcon char (*); 1751 dcl vce fixed bin; 1752 dcl xp ptr; 1753 dcl j fixed bin; 1754 1755 if vcon = "*" then 1756 do; 1757 vce = 0; 1758 xp = addr (vcons_tab.star_entry); 1759 code = 0; 1760 return (xp); 1761 end; 1762 j = 0; 1763 do vce = 1 to vcons_tab.no_of_vcons; 1764 xp = addr (vcons_tab.vcons (vce)); 1765 if ^(xp -> vcons.flags.inuse) then /* Empty entry? */ 1766 if j = 0 then j = vce; /* .. yes. remember first one. */ 1767 else ; 1768 else if xp -> vcons.vcons = vcon then 1769 do; 1770 code = 0; 1771 return (xp); 1772 end; 1773 end; 1774 if j = 0 then xp = null; /* Currently always happens */ 1775 else xp = addr (vcons_tab.vcons (j)); 1776 vce = j; 1777 code = error_table_$ioname_not_found; 1778 return (xp); 1779 1780 end SEARCH_VCONS_TAB; 1781 1782 SHAKE_SOURCE: proc (xp); 1783 1784 dcl xp ptr; 1785 1786 if xp = null then return; 1787 if xp -> syscon_mseg.mescount ^= 0 then do; 1788 xp -> syscon_mseg.mescount = 0; 1789 if xp -> syscon_mseg.output_wait then do; 1790 xp -> syscon_mseg.output_wait = "0"b; 1791 call hcs_$wakeup (xp -> syscon_mseg.current_process_id, 1792 xp -> syscon_mseg.ipc_el.channel, 0, code); 1793 end; 1794 end; 1795 1796 end SHAKE_SOURCE; 1797 1798 FILL_RESPONSE_STRUCTURE: procedure (); 1799 1800 must_send_operator_response = "1"b; 1801 1802 unspec (ls_operator_resp) = ""b; 1803 ls_operator_resp.header.message_type = LS_OPERATOR_RESPONSE; 1804 ls_operator_resp.header.version = LOGIN_SERVER_OPERATOR_RESPONSE_VERSION_1; 1805 ls_operator_resp.status_code = 0; 1806 ls_operator_resp.process_group_id = get_group_id_ (); 1807 ls_operator_resp.process_id = mc_anstbl.mc_procid; 1808 ls_operator_resp.event_channel = mc_ate.event; 1809 ls_operator_resp.ring = get_ring_ (); 1810 1811 wakeup_data_ptr = mc_atep; 1812 wakeup_data_len = size (mc_ate); 1813 1814 ls_handle = mc_ate.ls_handle; 1815 ls_process_id = mc_ate.ls_procid; 1816 ls_event_channel = mc_ate.ls_resp_ev_chn; 1817 1818 return; 1819 1820 end FILL_RESPONSE_STRUCTURE; 1821 1822 CONNECT_PHYSICAL_CHANNEL: procedure (); 1823 1824 on cleanup begin; 1825 call CPC_ERROR (); 1826 end; 1827 1828 mc_ate.flags.signed_on = ^(mc_ate.oper_info.personid = ""); 1829 1830 if mc_ate.ls_procid = ""b 1831 then do; 1832 mc_ate.real_tty_name = char32; 1833 call ipc_$create_ev_chn (mc_ate.event, code);/* system console or not */ 1834 if code ^= 0 then go to CPC_ERROR_RETURN; 1835 1836 call ipc_$decl_ev_call_chn (mc_ate.event, 1837 mc_anstbl.cons_cont_proc, mc_atep, MC_PRIO, code); 1838 if code ^= 0 then go to CPC_ERROR_RETURN; 1839 end; 1840 1841 if mc_ate.real_tty_name = "otw_" 1842 then do; 1843 mc_ate.flags.the_system_console = "1"b; 1844 mc_ate.iocb = sc_stat_$master_iocb; 1845 mc_ate.sci_ptr = sc_stat_$master_sci_ptr; 1846 end; 1847 else if must_send_operator_response /* network line */ 1848 then do; /* wait for connect wakeup */ 1849 mc_ate.tra_vec = MC_WAIT_DIALUP; 1850 call uc_send_ls_response_ (addr (ls_operator_resp), 1851 size (ls_operator_resp), ls_process_id, 1852 ls_handle, ls_event_channel, addr (zerobits), 1853 (mc_ate.real_tty_name), 0, code); 1854 1855 must_send_operator_response = ""b; 1856 return; 1857 end; 1858 1859 else do; 1860 call ATTACH_ATE (code); 1861 if code = error_table_$invalid_device /* FNP down */ 1862 then code = 0; 1863 end; 1864 1865 if code = 0 then return; 1866 1867 CPC_ERROR_RETURN: 1868 call CPC_ERROR (); 1869 return; 1870 1871 CPC_ERROR: procedure (); 1872 1873 if mc_ate.iocb ^= null () & char32 ^= "otw_" 1874 then do; 1875 call iox_$close (mc_ate.iocb, (0)); 1876 call iox_$detach_iocb (mc_ate.iocb, (0)); 1877 call iox_$destroy_iocb (mc_ate.iocb, (0)); 1878 end; 1879 1880 mc_ate.flags.pending = ""b; 1881 if ^mc_ate.flags.virtual /* don't inactivate vchannels */ 1882 then mc_ate.flags.active = "0"b; 1883 mc_ate.real_tty_name = ""; 1884 call ipc_$delete_ev_chn (mc_ate.event, (0)); 1885 1886 return; 1887 end CPC_ERROR; 1888 1889 end CONNECT_PHYSICAL_CHANNEL; 1890 1891 ATTACH_ATE: 1892 procedure (code); 1893 1894 declare code fixed bin (35); 1895 declare cdtx fixed bin; 1896 declare fnp bit (1) aligned; 1897 1898 if mc_ate.ls_procid = ""b then do; 1899 call cdt_mgr_$find_cdt_channel (as_data_$cdtp, 1900 mc_ate.real_tty_name, cdtx, fnp, code); 1901 if code ^= 0 then return; 1902 if fnp then do; 1903 code = error_table_$ioname_not_found; 1904 return; 1905 end; 1906 cdtep = addr (as_data_$cdtp -> cdt.cdt_entry (cdtx)); 1907 mc_ate.cdtep = cdtep; 1908 if cdte.in_use = 0 | 1909 cdte.current_service_type ^= MC_SERVICE 1910 then do; 1911 code = error_table_$ioname_not_found; 1912 return; 1913 end; 1914 end; 1915 1916 mc_ate.tra_vec = MC_WAIT_DIALUP; 1917 mc_ate.sci_ptr = null (); /* easier to check for null () */ 1918 1919 if mc_ate.ls_procid = ""b 1920 then call create_iocb (mc_atep, code); 1921 else ; /* mc_tty_ will create the iocb for network channels 1922* when the login server sends it a DIALED_UP wakeup */ 1923 return; 1924 1925 end ATTACH_ATE; 1926 1927 SIGN_OUT: 1928 procedure (MC_atep, Ex_operator_name, Code); 1929 1930 /**** This procedure actually does the work of signing out an MC terminal. */ 1931 1932 dcl MC_atep ptr parameter; 1933 dcl Ex_operator_name char (*) parameter; 1934 dcl Code fixed bin (35) parameter; 1935 1936 mc_atep = MC_atep; 1937 Code = 0; 1938 if ^mc_ate.signed_on 1939 then Code = error_table_$action_not_performed; 1940 else do; 1941 Ex_operator_name = mc_ate.oper_info.personid; 1942 mc_ate.oper_info.personid = ""; 1943 mc_ate.signed_on = "0"b; 1944 end; 1945 return; 1946 end SIGN_OUT; 1947 1948 ABORT_DIALIN: 1949 procedure (P_ec, P_reason); 1950 1951 dcl P_ec fixed bin (35) parameter; 1952 dcl P_reason char (*) parameter; 1953 1954 dcl action fixed bin (17); 1955 dcl code_reason char (150) varying; 1956 dcl code_reason_al char (100) aligned; 1957 1958 if P_ec = 0 1959 then code_reason = P_reason; 1960 else do; 1961 call convert_status_code_ (P_ec, (""), code_reason_al); 1962 code_reason = rtrim (code_reason_al); 1963 if P_reason ^= "" 1964 then do; 1965 code_reason = code_reason || ", "; 1966 code_reason = code_reason || rtrim (P_reason); 1967 end; 1968 end; 1969 1970 if utep ^= null () 1971 then do; 1972 1973 action = -AS_AUDIT_CHANNEL_DIALIN; 1974 1975 CAI.channel_name = ute.tty_name; 1976 CAI.valid = FALSE; 1977 if vchannel = "" then CAI.valid.service_info = FALSE; 1978 else CAI.valid.service_info = TRUE; 1979 if CAI.valid.service_info then do; 1980 if mc_atep ^= null then 1981 CAI.service_info = mc_ate.virtual_tty_name; 1982 else CAI.service_info = "Unknown"; 1983 end; 1984 else CAI.service_info = "system"; 1985 CAI.valid.access_class = FALSE; 1986 CAI.access_class = FALSE; 1987 CAI.valid.access_class_range = FALSE; 1988 CAI.access_class_range = access_class_range; 1989 CAI.valid.user_validation_level = TRUE; 1990 CAI.user_validation_level = iutep -> ute.initial_ring; 1991 call as_access_audit_$channel (null, utep, iutep, action, addr (CAI), (code_reason)); 1992 end; 1993 1994 if P_ec ^= 0 1995 then code = P_ec; /* export this error code */ 1996 else code = as_error_table_$dialnotup; /* default error message */ 1997 1998 return; 1999 2000 end ABORT_DIALIN; 2001 2002 DIALIN_OK: 2003 procedure (); 2004 2005 dcl action fixed bin (17); 2006 2007 action = AS_AUDIT_CHANNEL_DIALIN; 2008 2009 CAI.channel_name = ute.tty_name; 2010 CAI.valid = FALSE; 2011 if vchannel = "" then CAI.valid.service_info = FALSE; 2012 else CAI.valid.service_info = TRUE; 2013 if CAI.valid.service_info then do; 2014 if mc_atep ^= null then 2015 CAI.service_info = mc_ate.virtual_tty_name; 2016 else CAI.service_info = "Unknown"; 2017 end; 2018 else CAI.service_info = "system"; 2019 CAI.valid.access_class = TRUE; 2020 CAI.access_class = FALSE; 2021 CAI.valid.access_class_range = FALSE; 2022 CAI.access_class_range = access_class_range; 2023 CAI.valid.user_validation_level = TRUE; 2024 CAI.user_validation_level = iutep -> ute.initial_ring; 2025 2026 call as_access_audit_$channel (null, utep, iutep, action, addr (CAI), ""); 2027 end DIALIN_OK; 2028 2029 FIND_CDTE: 2030 procedure (P_tty_name) returns (ptr); 2031 2032 dcl P_tty_name char (*) parameter; 2033 2034 dcl cdtx fixed bin (17) automatic; 2035 dcl cdte_ptr pointer; 2036 dcl tty_name char (32); 2037 dcl fnp bit (1) aligned; 2038 2039 tty_name = P_tty_name; 2040 call cdt_mgr_$find_cdt_channel (as_data_$cdtp, tty_name, cdtx, fnp, code); 2041 if code = 0 & ^fnp then do; 2042 cdte_ptr = addr (as_data_$cdtp -> cdt.cdt_entry (cdtx)); 2043 return (cdte_ptr); 2044 end; 2045 else return (null ()); 2046 2047 end FIND_CDTE; 2048 2049 2050 /* format: off */ 2051 /* BEGIN include file access_audit_bin_header.incl.pl1 */ 1 2 1 3 /* format: style4 */ 1 4 1 5 /* NOTE: All changes must also be done to access_audit_bin_header.incl.alm */ 1 6 1 7 /* 85-01-18 E. Swenson - renamed to access_audit_bin_header.incl.pl1 */ 1 8 /* 85-01-17 E. Swenson - restructured, added session_uid, changed 1 9* min and max authorization to authorization range. */ 1 10 /* 85-01-07 EJ Sharpe - added min_authorization, cleanup */ 1 11 /* 84-11-15 EJ Sharpe - added event_flags word */ 1 12 /* 84-11-06 EJ Sharpe - added unaligned attr to version and proxy_flag */ 1 13 /* 84-10-24 EJ Sharpe - added the constants */ 1 14 /* 84-09-04 BIM - created */ 1 15 1 16 declare audit_record_ptr pointer; 1 17 1 18 dcl 1 audit_record_header aligned based (audit_record_ptr), 1 19 2 header aligned like arh_header_, 1 20 2 subject aligned like arh_user_info_; 1 21 1 22 dcl 1 audit_record_header_proxy aligned based (audit_record_ptr), 1 23 2 header aligned like arh_header_, 1 24 2 subjects (2) aligned like arh_user_info_; 1 25 1 26 dcl 1 arh_header_ aligned based, 1 27 2 type fixed bin (9) unsigned unaligned, 1 28 2 version fixed bin (9) unsigned unaligned, 1 29 2 flags unaligned, 1 30 3 ( 1 31 subject_is_process, /* binary data in subject is valid */ 1 32 object_is_valid /* There is an object */ 1 33 ) bit (1) unaligned, 1 34 3 pad bit (16) unaligned, 1 35 2 operation_code bit (36) aligned, /* like access_audit_encoded_op */ 1 36 2 event_flags bit (36) aligned, /* like access_audit_eventflags */ 1 37 2 session_uid fixed bin (35); /* uid for the login session */ 1 38 1 39 dcl 1 arh_user_info_ aligned based, 1 40 2 person char (22) unaligned, /* see anonymous bit */ 1 41 2 project char (9) unaligned, /* blank for nologin w/out proj */ 1 42 2 tag char (1) unaligned, 1 43 2 ring fixed bin (3) uns unaligned, 1 44 2 anonymous bit (1) unaligned, 1 45 2 pad3 bit (32) unaligned, 1 46 2 process_id bit (36) aligned, 1 47 2 authorization bit (72) aligned, 1 48 2 authorization_range (2) bit (72) aligned; 1 49 1 50 dcl ARH_TYPE_PROXY fixed bin init (2) 1 51 static options (constant); 1 52 dcl ARH_TYPE_NO_PROXY fixed bin init (1) 1 53 static options (constant); 1 54 dcl ACCESS_AUDIT_HEADER_VERSION_3 fixed bin (9) unsigned 1 55 init (3) static options (constant); 1 56 1 57 /* End include file access_audit_bin_header.incl.pl1 */ 2051 2052 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 2 2 2 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 4 /* */ 2 5 /* The answer table has one entry per "login instance" whether completed or */ 2 6 /* not. It is connected to the Channel Definition Table by the pointer */ 2 7 /* "channel". The header is used mostly by dialup_. */ 2 8 /* */ 2 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 2 10 /* */ 2 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 12 2 13 /****^ HISTORY COMMENTS: 2 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 2 15* Replace anstbl.incl.pl1. 2 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 2 17* Add anstbl.session_uid_counter. 2 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 2 19* Add anstbl.message_update_time and named constants for values of 2 20* anstbl.session, and to make all padding explicit. 2 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 2 22* Change "entry" to a placeholder so as not to require 2 23* user_table_entry.incl.pl1. 2 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 2 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 2 26* Added the flag login_server_present which indicates whether a login 2 27* server request has been received. This is used to determine whether 2 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 2 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 2 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 2 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 32* A) Moved constants for ute.pw_flags.mask_ctl into 2 33* user_table_entry.incl.pl1. 2 34* B) Added common table header to all user tables. 2 35* END HISTORY COMMENTS */ 2 36 2 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 38 /* */ 2 39 /* The anstbl structure below is divided into sections. Each section begins */ 2 40 /* with a comment describing the elements in the section. Elements are */ 2 41 /* placed within a section, based upon their function or the programs that */ 2 42 /* use them. Each section begins on a double word and is an even number of */ 2 43 /* words long. */ 2 44 /* */ 2 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 2 46 2 47 2 48 2 49 /* format: style4 */ 2 50 2 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 2 52 2 53 dcl ansp ptr automatic init (null); 2 54 2 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 2 56 2 header like ut_header, /* Header common to all user tables. */ 2 57 2 58 /* Counter elements. */ 2 59 2 nlin fixed bin, /* number of active lines */ 2 60 2 mxlin fixed bin, /* maximum number of active lines */ 2 61 2 n_users fixed bin, /* number of logged-in users */ 2 62 2 max_users fixed bin, /* maximum number of users allowed */ 2 63 2 n_units fixed bin, /* number of logged in units */ 2 64 2 max_units fixed bin, /* maximum number of units */ 2 65 2 n_sessions fixed bin, /* number of Multics sessions */ 2 66 2 n_pad fixed bin, 2 67 2 68 /* Name elements. */ 2 69 2 sysdir char (64) unal, /* name of main system control directory */ 2 70 2 as_tty char (8) unal, /* name of main answering service device. */ 2 71 2 72 /* Login elements. */ 2 73 2 login_word char (8) unal, /* login word if special_session=1 */ 2 74 2 session char (8) unal, /* session indicator */ 2 75 2 special_message char (128) unal, /* message to be printed for special session */ 2 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 2 77 2 message_lng fixed bin, /* length of special message */ 2 78 2 login_pad fixed bin, 2 79 2 80 /* Table update elements. */ 2 81 2 lock_count fixed bin, /* global lock for all system control tables */ 2 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 2 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 2 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 2 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 2 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 2 87 2 update_pad fixed bin, 2 88 2 89 /* dialup_ data values. */ 2 90 2 current_time fixed bin (71), /* Time of last transaction */ 2 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 2 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 2 93 2 94 /* load_ctl_ elements. */ 2 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 2 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 2 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 2 98 /* load_ctl_ load leveling desired response range: */ 2 99 2 response_high fixed bin, /* bad if user response time slower than this */ 2 100 2 response_low fixed bin, /* bad if user response time faster than this */ 2 101 2 load_ctl_pad fixed bin, 2 102 2 103 /* Login server request server data. */ 2 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 2 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 2 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 2 107 2 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 2 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 2 110 3 contents (UTE_SIZE) fixed bin; 2 111 2 112 /* constants */ 2 113 2 114 /* values for anstbl.session */ 2 115 2 116 dcl (AT_NORMAL init ("normal "), 2 117 AT_SPECIAL init ("special "), 2 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 2 119 2 120 dcl UTE_SIZE fixed bin internal static initial (300); 2 121 2 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 2052 2053 /* BEGIN: as_audit_structures.incl.pl1 * * * * * */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(84-01-17,Swenson), approve(), audit(), install(): 3 5* Initial coding. 3 6* 2) change(87-06-08,GDixon), approve(87-07-13,MCR7741), 3 7* audit(87-07-31,Brunelle), install(87-08-04,MR12.1-1056): 3 8* A) Add AS_AUDIT_CHANNEL_ACTIONS, AS_AUDIT_CHANNEL_DIRECTION, and 3 9* AS_AUDIT_CHANNEL_SERVICE_INFO arrays. 3 10* B) Add channel audit actions for dialin, dialout and dial system. 3 11* C) Correct declaration of as_channel_audit_record_.pad2. 3 12* D) Revise channel_audit_info. 3 13* 3) change(87-07-15,GDixon), approve(87-07-15,MCR7741), 3 14* audit(87-07-31,Brunelle), install(87-08-04,MR12.1-1056): 3 15* A) Add AS_AUDIT_PROCESS_TERMINATE action code. 3 16* END HISTORY COMMENTS */ 3 17 3 18 /* format: style2 */ 3 19 3 20 /* This include file describes the binary data associated with 3 21* Answering Service audit records. */ 3 22 3 23 /**** This first structure defines the Identification and Authentication 3 24* (I&A) audit records associated with login attempts for interactive 3 25* and daemon logins */ 3 26 3 27 dcl 1 as_ia_audit_record_int_dmn 3 28 structure aligned based, 3 29 2 header like audit_record_header aligned, 3 30 2 record like as_ia_audit_record_; 3 31 3 32 /**** This one is for absentee logins which are not proxy absentees */ 3 33 3 34 dcl 1 as_ia_audit_record_abs 3 35 structure aligned based, 3 36 2 header like audit_record_header aligned, 3 37 2 record like as_ia_audit_record_, 3 38 2 absentee_input_path 3 39 char (168); 3 40 3 41 dcl 1 as_ia_audit_record_abs_proxy 3 42 structure aligned based, 3 43 2 header like audit_record_header aligned, 3 44 2 record like as_ia_audit_record_, 3 45 2 absentee_input_path 3 46 char (168), 3 47 2 proxy_user char (32); 3 48 3 49 /**** The following structure is common to all the I&A records. It 3 50* contains the relevant information about the I&A process. */ 3 51 3 52 dcl 1 as_ia_audit_record_ structure aligned based, 3 53 2 type fixed bin (9) unsigned unaligned, 3 54 2 version fixed bin (9) unsigned unaligned, 3 55 2 process_type fixed bin (3) unsigned unaligned, 3 56 2 min_ring fixed bin (3) unsigned unaligned, 3 57 2 max_ring fixed bin (3) unsigned unaligned, 3 58 2 pad1 bit (9) unaligned, 3 59 2 attributes like user_attributes, 3 60 2 audit_flags bit (36) aligned, 3 61 2 channel char (32) aligned, 3 62 2 terminal_type char (32) aligned, 3 63 2 answerback char (4) aligned; 3 64 3 65 /**** The following structure represents the binary information 3 66* associated with a communications channel access audit message. */ 3 67 3 68 dcl 1 as_channel_audit_record 3 69 structure aligned based, 3 70 2 header like audit_record_header aligned, 3 71 2 record like as_channel_audit_record_; 3 72 3 73 3 74 dcl 1 as_channel_audit_record_ 3 75 structure aligned based, 3 76 2 type fixed bin (9) unsigned unaligned, 3 77 2 version fixed bin (9) unsigned unaligned, 3 78 2 flags unaligned, 3 79 3 channel_info_valid 3 80 bit (1) unaligned, 3 81 3 current_access_class_valid 3 82 bit (1) unaligned, 3 83 3 pad1 bit (16) unaligned, 3 84 2 channel_name char (32), 3 85 2 current_access_class 3 86 (2) bit (72) aligned, 3 87 2 access_class_range (2) bit (72) aligned, 3 88 2 current_service_type 3 89 fixed bin (17) unaligned, 3 90 2 service_type fixed bin (17) unaligned, 3 91 2 terminal_type char (32), 3 92 2 authenticated_user aligned, 3 93 3 personid char (22) unaligned, 3 94 3 projectid char (9) unaligned, 3 95 3 pad2 bit (9) unaligned; 3 96 3 97 /**** The following structure represents the binary information 3 98* associated with a dial service audit record */ 3 99 3 100 dcl 1 as_dial_service_audit_record 3 101 structure aligned based, 3 102 2 header like audit_record_header aligned, 3 103 2 record like as_dial_service_audit_record_; 3 104 3 105 dcl 1 as_dial_service_audit_record_ 3 106 structure aligned based, 3 107 2 type fixed bin (9) unsigned unaligned, 3 108 2 version fixed bin (9) unsigned unaligned, 3 109 2 dial_server_ring fixed bin (3) unsigned unaligned, 3 110 2 flags unaligned, 3 111 3 registered_server 3 112 bit (1) unaligned, 3 113 3 privileged_server 3 114 bit (1) unaligned, 3 115 3 pad1 bit (13) unaligned, 3 116 2 dial_qualifier char (32); 3 117 3 118 /**** The following structure is used by dial_ctl_ to pass the required 3 119* information to as_access_audit_. This structure is necessary since 3 120* the data is not available in the user_table_entry or cdte. */ 3 121 3 122 dcl dial_server_info_ptr ptr; /* pointer to following structure */ 3 123 3 124 dcl 1 dial_server_info structure aligned based (dial_server_info_ptr), 3 125 2 server_ring fixed bin (3) unaligned, 3 126 2 flags unaligned, 3 127 3 registered bit (1) unaligned, 3 128 3 privileged bit (1) unaligned, 3 129 3 pad1 bit (31) unaligned, 3 130 2 dial_qualifier char (32); 3 131 3 132 /**** The following structure is used by dial_ctl_ to pass relevant information 3 133* to as_access_audit_. The channel name is passed here when we do not 3 134* have a cdtep, for instance. */ 3 135 3 136 dcl channel_audit_info_ptr ptr; 3 137 3 138 dcl 1 channel_audit_info aligned based (channel_audit_info_ptr), 3 139 2 channel_name char (32), 3 140 2 valid, 3 141 (3 service_info, 3 142 3 access_class, 3 143 3 access_class_range, 3 144 3 user_validation_level) 3 145 bit(1) unal, 3 146 3 mbz bit(32) unal, 3 147 2 service_info char (32), 3 148 2 access_class bit(72) aligned, 3 149 2 access_class_range (2) bit(72) aligned, 3 150 2 user_validation_level 3 151 fixed bin (3); 3 152 3 153 dcl AS_AUDIT_RECORD_IA_VERSION_1 3 154 fixed bin (9) initial (1) internal static options (constant); 3 155 3 156 dcl AS_AUDIT_RECORD_CHN_VERSION_1 3 157 fixed bin (9) initial (1) internal static options (constant); 3 158 3 159 dcl AS_AUDIT_RECORD_DIALID_VERSION_1 3 160 fixed bin (9) initial (1) internal static options (constant); 3 161 3 162 dcl ( 3 163 AS_AUDIT_PROCESS_CREATE 3 164 initial (1), 3 165 AS_AUDIT_PROCESS_DESTROY 3 166 initial (2), 3 167 AS_AUDIT_PROCESS_CONNECT 3 168 initial (3), 3 169 AS_AUDIT_PROCESS_DISCONNECT 3 170 initial (4), 3 171 AS_AUDIT_PROCESS_TERMINATE 3 172 initial (5) 3 173 ) fixed bin (17) internal static options (constant); 3 174 3 175 dcl ( 3 176 AS_AUDIT_CHANNEL_ATTACH 3 177 initial (1), 3 178 AS_AUDIT_CHANNEL_DETACH 3 179 initial (2), 3 180 AS_AUDIT_CHANNEL_DIALIN 3 181 initial (3), 3 182 AS_AUDIT_CHANNEL_DIALOUT 3 183 initial (4), 3 184 AS_AUDIT_CHANNEL_DIAL_SYSTEM 3 185 initial (5) 3 186 ) fixed bin (17) internal static options (constant); 3 187 3 188 dcl ( 3 189 AS_AUDIT_DIALID_START initial (1), 3 190 AS_AUDIT_DIALID_STOP initial (2) 3 191 ) fixed bin (17) internal static options (constant); 3 192 3 193 dcl AS_AUDIT_CHANNEL_ACTIONS 3 194 (5) char (12) internal static options (constant) 3 195 initial ("ATTACH", "DETACH", "DIALIN", "DIALOUT", "DIAL SYSTEM"); 3 196 dcl AS_AUDIT_CHANNEL_DIRECTION 3 197 (5) char (4) internal static options (constant) 3 198 initial ("to", "from", "to", "from", "to"); 3 199 dcl AS_AUDIT_CHANNEL_SERVICE_INFO 3 200 (5) char (12) internal static options (constant) 3 201 initial ("Service", "Service", "Dial ID", "Destination", "VChannel"); 3 202 dcl AS_AUDIT_PROCESS_ACTIONS 3 203 (5) char (10) internal static options (constant) 3 204 initial ("CREATE", "DESTROY", "CONNECT", "DISCONNECT", "TERMINATE"); 3 205 3 206 /* END OF: as_audit_structures.incl.pl1 * * * * * */ 2053 2054 /* BEGIN INCLUDE FILE ... as_data_.incl.pl1 ... */ 4 2 4 3 /* format: style4 */ 4 4 4 5 /* This file must be kept in sync with as_data_.alm */ 4 6 4 7 /****^ HISTORY COMMENTS: 4 8* 1) change(86-09-21,Beattie), approve(86-09-22,MCR7542), 4 9* audit(86-10-31,Brunelle), install(86-11-12,MR12.0-1211): 4 10* Remove references to the 963 and 029 preaccess commands and remove support 4 11* for ARDS, 202_ETX, 2741 and 1050 in system interfaces. 4 12* 2) change(86-09-25,Swenson), approve(87-07-20,MCR7737), 4 13* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 4 14* Add references to as_data_ entrypoints added for Login Server. 4 15* 3) change(87-03-03,Brunelle), approve(87-07-20,MCR7697), 4 16* audit(87-07-20,GDixon), install(87-08-04,MR12.1-1056): 4 17* Added new user signal field of inacrcvd (14) to handle inactivity response 4 18* from user. 4 19* END HISTORY COMMENTS */ 4 20 4 21 dcl as_data_$BS char (1) aligned ext static; /* BACKSPACE character */ 4 22 dcl as_data_$CR char (1) aligned ext static; /* CARRIAGE RETURN character */ 4 23 dcl as_data_$abs_dim char (32) ext static; /* absentee DIM */ 4 24 dcl as_data_$acct_update_priority fixed bin ext static; /* accounting update IPC priority */ 4 25 dcl as_data_$acsdir char (168) ext static; /* Access Control Segment directory */ 4 26 dcl as_data_$ansp ptr ext static; /* answer_table */ 4 27 dcl as_data_$as_procid bit (36) aligned ext static; /* Answering Service process id */ 4 28 dcl as_data_$as_ring fixed bin (3) ext static; /* AS operating ring */ 4 29 dcl as_data_$as_tty char (6); /* AS master tty channel */ 4 30 dcl as_data_$asmtp ptr ext static; /* AS meter table */ 4 31 dcl as_data_$autp ptr ext static; /* absentee_user_table */ 4 32 dcl as_data_$buzzardp ptr ext static; /* dpg_ list of buteo processes */ 4 33 dcl as_data_$cdtp ptr ext static; /* CDT */ 4 34 dcl as_data_$default_weight fixed bin (35) ext; /* default user process load control weight */ 4 35 dcl as_data_$devtabp ptr ext static; /* device_table */ 4 36 dcl as_data_$dft_user_ring fixed bin (3) ext static; /* default user ring */ 4 37 dcl as_data_$dutp ptr ext static; /* daemon_user_table */ 4 38 dcl as_data_$g115_dim char (32) ext static; 4 39 dcl as_data_$lct_initialized bit (1) aligned ext static; /* LCT allocated in ring 0 */ 4 40 dcl as_data_$lct_size fixed bin ext static; /* CDT tty channels + spares */ 4 41 dcl as_data_$max_user_ring fixed bin (3) ext static; /* maximum user ring */ 4 42 dcl as_data_$mgtp ptr ext static; /* master group table */ 4 43 dcl as_data_$mrd_dim char (32) ext static; /* daemon's message routing DIM */ 4 44 dcl as_data_$ntty_dim char (32) ext static; /* network connection DIM */ 4 45 dcl as_data_$pdtdir char (168) ext static; /* PDT directory */ 4 46 dcl as_data_$pit_ptr ptr ext static; /* pit_temp_ */ 4 47 dcl as_data_$rcpdir char (168) ext static; /* RCP directory */ 4 48 dcl as_data_$request_priority fixed bin ext static; 4 49 dcl as_data_$rs_ptrs (0:9) ptr ext static; /* rate_structures */ 4 50 dcl as_data_$rtdtp ptr ext static; /* RTDT */ 4 51 dcl as_data_$sat_htp ptr ext static; /* SAT hash table */ 4 52 dcl as_data_$satp ptr ext static; /* SAT */ 4 53 dcl as_data_$suffix (0:9) char (2) unaligned ext static; 4 54 dcl as_data_$sysdir char (168) ext static; /* system control directory */ 4 55 dcl as_data_$teens_suffix (10:19) char (2) unaligned ext static; 4 56 dcl as_data_$terminet_tabs_string char (144) varying ext static; 4 57 dcl as_data_$tty_dim char (32) ext static; /* standard interactive DIM */ 4 58 dcl as_data_$update_priority fixed bin ext static; /* ??? */ 4 59 dcl as_data_$version char (8) ext static; /* AS version */ 4 60 dcl as_data_$whoptr ptr ext static; /* whotab */ 4 61 4 62 dcl 1 as_data_$login_args aligned ext static, /* control arguments for login */ 4 63 2 n_login_args fixed bin, 4 64 2 pad fixed bin, 4 65 2 login_args (55 /* as_data_$login_args.n_login_args */) char (24) unaligned; 4 66 4 67 dcl 1 as_data_$signal_types ext static aligned, /* IPC process control signals */ 4 68 2 n_signals fixed bin, 4 69 2 pad fixed bin, 4 70 2 signals (14 /* as_data_$signal_types.n_signals */) char (8) unaligned; 4 71 4 72 dcl 1 as_data_$system_signal_types ext static aligned, /* IPC process control signals */ 4 73 2 n_system_signals fixed bin, 4 74 2 pad fixed bin, 4 75 2 system_signals (10 /* as_data_$system_signal_types.n_system_signals */) char (8) unaligned; 4 76 4 77 dcl as_data_$login_words fixed bin ext static aligned, 4 78 /* interactive login words */ 4 79 1 as_data_login_words aligned based (addr (as_data_$login_words)), 4 80 2 n_words fixed bin, 4 81 2 pad fixed bin, 4 82 2 words (0 refer (as_data_login_words.n_words)) char (16) unaligned; 4 83 4 84 dcl as_data_$debug_flag bit (1) aligned external static; 4 85 dcl as_data_$ls_request_server_info_ptr ptr external static; 4 86 dcl as_data_$ls_message_buffer_cur_lth fixed bin (18) external static; 4 87 dcl as_data_$ls_message_buffer_max_lth fixed bin (18) external static; 4 88 dcl as_data_$ls_message_buffer_ptr ptr external static; 4 89 4 90 /* END INCLUDE FILE ... as_data_.incl.pl1 ... */ 2054 2055 /* BEGIN INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 5 2 5 3 /* This include file defines the priorities of all of the event channels used by the answering service. 5 4* 5 5* They are declared as named constants. They are used in calls to ipc_$decl_ev_call_chn. 5 6* The names correspond to the functions of the event call handlers. 5 7* For brevity in names, MC means message coordinator, and LOGIN includes logout as well. 5 8* 5 9* The comment on each constant lists the procedure(s) that use it to set event channel priorities. 5 10* See the code in those procedures for information on the handlers themselves 5 11* (which are entry variables in some cases, and thus could not be documented in this file). 5 12* 5 13* The priorities range from zero (highest) to 22 (lowest used by the answering service). 5 14* 5 15* The event wait channel on which the A.S. goes blocked awaiting input on the initializer console has highest 5 16* of all priorities, set by as_init_ calling ipc_$set_wait_prior. 5 17* 5 18* Written June 1981 by T. Casey for MR9.0 5 19* Modified 1984-10-15 BIM for sac -> as_request. 5 20* as_request is above login, since sac is important and 5 21* dial requests for already logged in users can take 5 22* first dibs over new logins. 5 23**/ 5 24 5 25 dcl MC_PRIO fixed bin int static options (constant) init (1); /* mc_commands_, mc_con_rec_, mc_util_, mrd_tester */ 5 26 dcl SYSERR_COPY_PRIO fixed bin int static options (constant) init (2); /* syserr_log_man_ */ 5 27 dcl SHUTDOWN_PRIO fixed bin int static options (constant) init (3); /* admin */ 5 28 dcl ACCT_UPDATE_PRIO fixed bin int static options (constant) init (4); /* act_ctl_ */ 5 29 dcl DAEMON_LOGIN_PRIO fixed bin int static options (constant) init (8); /* daemon_user_manager_ */ 5 30 dcl AS_REQUEST_PRIO fixed bin int static options (constant) init (7); /* as_request_ */ 5 31 dcl INSTALL_PRIO fixed bin int static options (constant) init (8); /* up_sysctl_ */ 5 32 dcl INT_LOGIN_PRIO fixed bin int static options (constant) init (8); /* asu_, dialup_, ftp_dialup_ */ 5 33 dcl MPX_LOAD_PRIO fixed bin int static options (constant) init (11); 5 34 /* as_vip7760_mpx_, as_mcs_mpx_, as_ibm3270_mpx_, as_hasp_mpx_ */ 5 35 dcl ABS_DEFER_PRIO fixed bin int static options (constant) init (19); /* absentee_utility_ */ 5 36 dcl ABS_LOGIN_PRIO fixed bin int static options (constant) init (20); /* abentee_user_manager_ */ 5 37 dcl CORE_FLUSH_PRIO fixed bin int static options (constant) init (22); /* as_meter_ */ 5 38 5 39 /* END INCLUDE FILE as_wakeup_priorities.incl.pl1 */ 2055 2056 /* BEGIN INCLUDE FILE ... author_dcl.incl.pl1 */ 6 2 6 3 /* This include file declares the "author" substructure 6 4* in a form suitable for using the PL/I "like" attribute. 6 5* 6 6* Written 750304 by PG 6 7**/ 6 8 6 9 dcl 1 author_dcl aligned based, 7 1 /* BEGIN INCLUDE FILE author.incl.pl1 */ 7 2 7 3 /* the "author" items must always be the first ones in the table. The 7 4* module which moves the converted table to the System Control process 7 5* fills in these data items and assumes them to be at the head of the segment 7 6* regardless of the specific table's actual declaration. The variables 7 7* "lock" and "last_install_time" used to be "process_id" and "ev_channel" 7 8* respectively. For tables installed in multiple processes, these 7 9* are to be used to lock out multiple installations. */ 7 10 7 11 /* Lock should be used as a modification lock. Since, in general, 7 12* entries may not be moved in system tables, even by installations, 7 13* it is sufficient for only installers and programs that change threads 7 14* to set or respect the lock. Simply updating data in an entry 7 15* requires no such protection. 7 16* 7 17* Last_install_time is used by readers of system tables to detect 7 18* installations or other serious modifications. By checking it before 7 19* and after copying a block of data, they can be protected against 7 20* modifications. 7 21* 7 22* Modules that set the lock should save proc_group_id, and then 7 23* put their group id there for the time they hold the lock. 7 24* if they do not actually install the, they should restore the group id. 7 25**/ 7 26 7 27 2 author aligned, /* validation data about table's author */ 7 28 3 proc_group_id char (32), /* process-group-id (personid.projectid.tag) */ 7 29 3 lock bit (36), /* installation lock */ 7 30 3 update_attributes bit (1) unal, /* update/add/delete attributes */ 7 31 3 update_authorization bit (1) unal, /* update only authorizations */ 7 32 3 deferral_notified bit (1) unal, /* installer notified of deferral of installation */ 7 33 3 pad bit (33) unaligned, 7 34 3 last_install_time fixed bin (71), 7 35 3 table char (4), /* name of table, e.g., SAT MGT TTT RTDT PDT etc. */ 7 36 3 w_dir char (64), /* author's working directory */ 7 37 7 38 /* END INCLUDE FILE author.incl.pl1 */ 6 10 6 11 2 pad; 6 12 6 13 /* END INCLUDE FILE ... author_dcl.incl.pl1 */ 2056 2057 /* BEGIN INCLUDE FILE ... cdt.incl.pl1 */ 8 2 8 3 /* format: style3,idind25,indcomtxt */ 8 4 8 5 /* Channel Definition Table. 8 6* This table lists all of the hardware channels (ports) connected 8 7* to the system, and maintains the attributes of each one. 8 8* 8 9* PG 741230 8 10* Modified by Mike Grady 5/6/76 to add FNP info. 8 11* Modified by Tom Casey 7/29/76 to add more FNP info and a few other things. 8 12* Modified by Robert Coren 6/13/77 to make terminal types be character strings. 8 13* Modified July 1979 by T. Casey to add several variables for MR8.0 process preservation facility. 8 14* Modified December 1980 by E. N. Kittlitz to eliminate cdte.phone_no. 8 15* Modified March 1981 by Robert Coren to add "listening" flag for multiplexers and to add TANDD_SERVICE service_type. 8 16* Modified April 1981 by E. N. Kittlitz to add cdte.dial_ev_chn, cdte.recent_wakeup_time, cdte.recent_wakeup_count. 8 17* Modified July 1981 by T. Casey for MR9.0 to add dialup_flags.detach_after_hangup 8 18* Modified December 1981 by E. N. Kittlitz for cdte.leave_edited, cdte.hold_arg, 8 19* Modified September 1981 by Benson I. Margulies for cdt_mgr_'s tree of multiplexer's. 8 20* Modified August 1982 by E. N. Kittlitz for check_acs. 8 21* Modified January 1983 by Keith Loepere for generic_destination. 8 22* Modified August 1983 by Robert Coren to add mpxe.check and mpxe.retry_load. 8 23* Modified 831216 by E. N. Kittlitz for required_access_class. 8 24* Modified 84-04-01 by BIM to finish communications AIM: 8 25* access class ranges, 8 26* access_control flags. 8 27**/ 8 28 8 29 8 30 /****^ HISTORY COMMENTS: 8 31* 1) change(87-03-17,Beattie), approve(87-04-06,MCR7656), 8 32* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 8 33* Add support for answering service to use IOCBs when tty_ cannot be 8 34* used to service login channels. 8 35* END HISTORY COMMENTS */ 8 36 8 37 8 38 dcl CDT_version_5 fixed bin internal static initial (5) options (constant); 8 39 dcl CDT_version fixed bin internal static initial (6) options (constant); 8 40 8 41 dcl (cdtp, cdtep, fnpep, mpxep) 8 42 ptr; 8 43 8 44 dcl 1 cdt based (cdtp) aligned, /* all of the system channels */ 8 45 2 author like author_dcl.author, /* standard header */ 8 46 2 max_size fixed bin, /* maximum number of cdte's in 255K */ 8 47 2 current_size fixed bin, /* number of last cdte. */ 8 48 2 version fixed bin, 8 49 2 freep fixed bin, /* chain of free cdte's */ 8 50 2 n_cdtes fixed bin, /* number of used cdte's */ 8 51 2 meters_last_reset fixed bin (71), /* clock time dialup meters were reset */ 8 52 2 realtime_in_dialup fixed bin (71), /* Dialup meter */ 8 53 2 cpu_in_dialup fixed bin (71), /* .. */ 8 54 2 pf_in_dialup fixed bin, /* .. */ 8 55 2 pp_in_dialup fixed bin, /* .. */ 8 56 2 entries_to_dialup fixed bin, /* .. */ 8 57 2 flags, 8 58 3 go bit (1) unal, /* ans. serv. said "go ahead and answer the phones" */ 8 59 3 cdt_is_live bit (1) unal, /* cdt is active */ 8 60 3 mux_mgr_system_init 8 61 bit (1) unal, /* mux mgr has loaded top-levels */ 8 62 3 pad1 bit (33) unal, 8 63 2 acceptable_fnp_tbf fixed bin, /* acceptable minutes between FNP crashes */ 8 64 2 spare_channel_count fixed bin, /* number of extra channels to leave room for in ring0 */ 8 65 2 threads aligned like channel_threads, 8 66 /* root of non-fnp-top-level-multiplexers */ 8 67 2 pad2 (31) bit (36) aligned, /* pad header to 80 words */ 8 68 2 fnp_entry dim (8) like fnpe, /* max of 8 FNPs for now */ 8 69 2 cdt_entry dim (2500) like cdte; /* # of cdte's in 255K */ 8 70 8 71 8 72 dcl 1 cdte based (cdtep) aligned, /* a channel */ 8 73 2 in_use fixed bin, /* see dialup_values. 0=NOW_FREE */ 8 74 /**** * These variables are filled in when the CDTE is created by cv_cmf. They are not dynamic. */ 8 75 2 pad1 bit (36) aligned, 8 76 2 name char (32), /* ASCII name of channel */ 8 77 2 access_class (2) bit (72) aligned, /* access class range */ 8 78 2 comment char (48), /* printable message about channel */ 8 79 2 charge_type fixed bin (17) unal, /* billing group */ 8 80 2 service_type fixed bin (17) unal, /* service group (AS, ftp, mc) */ 8 81 2 line_type fixed bin (17) unal, /* tty line type (protocol) */ 8 82 2 baud_rate fixed bin (17) unal, /* 110, 133, 150, etc. */ 8 83 2 modem_type fixed bin (17) unal, /* type of modem on this channel */ 8 84 2 pad2 bit (18) unaligned, 8 85 2 answerback char (8), /* answerback string expected */ 8 86 2 initial_terminal_type 8 87 char (32) unal, /* as specified in the CMF */ 8 88 2 mpx_data unal, /* data used only for multiplexed channels */ 8 89 3 mpx_type fixed bin (17), /* type of multiplexing used */ 8 90 3 mpx_service fixed bin (17), /* service type, active or inactive */ 8 91 2 flags, 8 92 ( 3 attributes, 8 93 4 ck_answerback bit (1), /* ON means that ansbk must equal our records */ 8 94 4 audit_access_error 8 95 bit (1), /* ON means ck that person auth is inside access class range */ 8 96 /* this implies that the access_class describes a range of 8 97* legitimate user auths. */ 8 98 4 hardwired bit (1), /* ON means it is */ 8 99 4 set_modes bit (1), /* ON means to set initial modes at dialup */ 8 100 4 dont_read_answerback 8 101 bit (1), /* ON means don't try to read answerback */ 8 102 4 pada bit (4), 8 103 3 access_control unaligned, /* As below */ 8 104 4 dial_out bit (1), /* dialing user must be on ACS */ 8 105 4 priv_attach bit (1), /* PA_ user must be on ACS */ 8 106 4 dial_server bit (1), /* accept_dials process must be on acs */ 8 107 4 login bit (1), /* logging in user must be on acs */ 8 108 4 slave_dial bit (1), /* dialing user must give -user and be on acs */ 8 109 4 pado bit (3), 8 110 3 options, 8 111 4 execute_initial_command 8 112 bit (1), /* ON means to do it */ 8 113 4 attached_by_operator 8 114 bit (1), /* ON means temporary attachment. */ 8 115 4 private_line bit (1), /* ON means private_line sync modem in use */ 8 116 4 bsc_ebcdic bit (1), /* ON means bsc would like to use ebcdic code set */ 8 117 4 bsc_transparent bit (1), /* ON means bsc is in transparent mode */ 8 118 4 vip_pollselect bit (1), /* ON means VIP line is multidrop */ 8 119 4 autobaud bit (1), /* ON means auto baud detection this channel */ 8 120 4 generic_destination_present 8 121 bit (1), /* ON means that the initial_command field contains 8 122* a generic destination to match on dial_out or priv attach */ 8 123 4 use_iocb bit (1), /* ON means to use IOCB operations to support channel */ 8 124 4 pado bit (9) 8 125 ) unaligned, 8 126 2 initial_command char (64), /* pseudo first input line */ 8 127 /**** The following variables represent dynamic control info, and 8 128* are used mostly by dialup_ and asu_ */ 8 129 2 event fixed bin (71), /* event call channel for channel events */ 8 130 2 current_service_type fixed bin (17) unal, /* Current usage of line. */ 8 131 2 tra_vec fixed bin (17) unal, /* which section of dialup_ to do next */ 8 132 2 count fixed bin (17) unal, /* How many login tries he's had. */ 8 133 2 dialup_flags unal, /* flag bits for dialup to maintain */ 8 134 3 ppm bit (1) unal, /* print preaccess message for IBM terminals */ 8 135 3 cpo bit (1) unal, /* conditional printer-off (depends on answerback */ 8 136 3 wakeup_handler bit (1) unal, /* says who is wakeup handler for this channel */ 8 137 /* 0 = dialup_, 1 = mc_tty_ */ 8 138 3 save_arg bit (1) unal, /* -save login arg given */ 8 139 3 nosave_arg bit (1) unal, /* -nosave login arg given */ 8 140 3 detach_after_hangup 8 141 bit (1) unal, /* remember WAIT_DETACH when setting WAIT_BEFORE_HANGUP */ 8 142 3 leave_edited bit (1) unal, /* user control of edited mode */ 8 143 3 hold_arg bit (1) unal, /* -hold arg given */ 8 144 3 no_hold_arg bit (1) unal, /* -no_hold arg given */ 8 145 3 immediate_arg bit (1) unal, /* -immediate arg given */ 8 146 3 current_access_class_valid 8 147 bit (1) unal, /* dialup_ or lg_ctl_ has determined the current_access_class */ 8 148 3 pad bit (7) unal, 8 149 2 twx fixed bin, /* channel device index */ 8 150 2 state fixed bin, /* channel state */ 8 151 2 tty_id_code char (4), /* channel id (answerback) */ 8 152 2 current_terminal_type 8 153 char (32) unal, /* most recently-set terminal type */ 8 154 2 process ptr unal, /* ptr to ATE owning this channel */ 8 155 2 dialed_to_procid bit (36), /* Dialed channels remember owner's proc id */ 8 156 2 next_channel fixed bin (17) unal, /* cdte index of next channel for this process */ 8 157 2 cur_line_type fixed bin (17) unal, /* line type of currently dialed terminal */ 8 158 2 current_access_class (2) bit (72) aligned, /* This is a range, but at this time it must be a null range. 8 159* We do not yet define multi-class connections, but we will someday. */ 8 160 2 disconnected_ate_index 8 161 fixed bin (17) unal, /* index of ate of disconnected process */ 8 162 2 dial_ctl_ring fixed bin (3) unsigned unaligned, 8 163 /* used by dial_ctl_ to record ring of priv_attach or dial_out attachments */ 8 164 2 dial_rq_privileged bit (1) unaligned, /* used by dial ctl to record comm priv from priv_attach or dial_out request */ 8 165 2 pad3 bit (14) unaligned, 8 166 /**** The following variables are kept for metering purposes. */ 8 167 2 n_dialups fixed bin, /* number of times channel has been dialed up */ 8 168 2 n_logins fixed bin, /* number of login sessions on this channel */ 8 169 2 dialed_up_time fixed bin (35), /* total time channel was dialed up (seconds) */ 8 170 2 dialup_time fixed bin (71), /* time of present dialup */ 8 171 2 disconnected_proc_command 8 172 fixed bin (12) unsigned unal, 8 173 /* 1 to 5 for -list,-create,-connect,-new_proc,-destroy */ 8 174 2 disconnected_proc_number 8 175 fixed bin (12) unsigned unal, 8 176 /* {N} in -connect {N}, -new_proc {N}, -destroy {N} */ 8 177 2 n_disconnected_procs fixed bin (12) unsigned unal, 8 178 /* number of disconnected processes that user has */ 8 179 2 recent_wakeup_count fixed bin, /* counter to detect channel wakeup loop */ 8 180 2 recent_wakeup_time fixed bin (71), /* time of first wakeup in suspected channel wakeup loop */ 8 181 2 dial_ev_chn fixed bin (71), /* Dialed channels remember master's IPC channel */ 8 182 /**** cdt_mgr_ uses these to maintain the tree of channels. They ****/ 8 183 /**** really belong in the mpxe, but it is full up, and the cdte ****/ 8 184 /**** had the space. */ 8 185 2 threads aligned like channel_threads, 8 186 /**** The use name is that of the user who gave the dial or slave ****/ 8 187 /**** preaccess request. ****/ 8 188 2 user_name unaligned, 8 189 3 person char (20) unaligned, 8 190 3 project char (9) unaligned, 8 191 3 pad char (3) unaligned, /* no tag */ 8 192 2 iocbp ptr unaligned; /* 104 words */ 8 193 8 194 8 195 dcl generic_destination based char (32); /* used to match destinations on dial_out and priv_attach, 8 196* overlays initial_command field for slave and autocall lines */ 8 197 8 198 8 199 8 200 dcl 1 fnpe based (fnpep) aligned, /* an FNP */ 8 201 /* These variables are filled in from the CMF */ 8 202 2 type fixed bin, /* type of this FNP, DN355, DN6670, etc. */ 8 203 2 memory fixed bin, /* amount of memory on this FNP */ 8 204 2 nlslas fixed bin, /* number of lslas on this FNP */ 8 205 2 nhslas fixed bin, /* number of hslas on this FNP */ 8 206 2 service_type fixed bin, /* service type */ 8 207 2 mpx_type fixed bin, /* type of multiplexer on this fnp */ 8 208 2 coreimage char (168), /* pathname of image, maybe in >sl1 */ 8 209 /**** The following are used during system operation to remember the state of the FNP */ 8 210 2 boot_segp ptr, /* ptr to seg used for bootload */ 8 211 2 boot_ev_chan fixed bin (71), /* for ring0 to report crashes and bootload complete */ 8 212 2 mpxe like mpxe, /* standard multiplexer data */ 8 213 2 threads aligned like channel_threads, 8 214 /* same mpx threads as channel */ 8 215 2 pad3 (25) fixed bin; /* pad to 96 words per entry */ 8 216 8 217 /* This structure describes the data necessary to control a multiplexer. 8 218* For FNP's., a copy appears in the fnpe. For communications lines, it 8 219* overlays the initial_command field in the cdte. */ 8 220 8 221 dcl 1 mpxe based (mpxep) aligned, 8 222 2 state fixed bin, /* current state, up, down, loading */ 8 223 2 current_service_type fixed bin, /* usually = service type, unless cdt installation changes it */ 8 224 2 current_mpx_type fixed bin, /* type of multiplexer currently running */ 8 225 2 n_bootloads fixed bin, /* count of load attempts */ 8 226 2 time_initial_load fixed bin (71), /* time this MPX first completed a load */ 8 227 2 time_last_load fixed bin (71), /* time MPX last completed a bootload */ 8 228 2 time_last_crash fixed bin (71), /* time MPX last crashed */ 8 229 2 time_load_start fixed bin (71), /* time current load started */ 8 230 2 last_tbf fixed bin, /* number of minutes this MPX was up last bootload */ 8 231 2 flags unal, 8 232 3 go bit (1), /* start MPX after it loads */ 8 233 3 listening bit (1), /* listen has been done on subchannels */ 8 234 3 check bit (1), /* loaded with check option */ 8 235 3 retry_load bit (1), /* reload if load fails */ 8 236 3 pad1 bit (32), 8 237 2 pad2 (2) fixed bin; /* pad to 16 words */ 8 238 8 239 /* These threads define the tree of multiplexers in the cdt. */ 8 240 /* next_sister and prev_sister link nodes at the same level, ordered */ 8 241 /* by alpha sort order of the channel name. Daughter points to the */ 8 242 /* first child of this node, if any. Daughter count is the number */ 8 243 /* of children, as a consistency check. Mother is a back pointer to */ 8 244 /* the parent, present in all the children, not just the first. */ 8 245 /* threads are cdt indexes. If positive, they index the cdt_entry array */ 8 246 /* in cdt, if negative, they are the negative of an index into the fnp_entry */ 8 247 /* array. If zero, they refer to the top of the non-fnp mpx tree. */ 8 248 8 249 dcl 1 channel_threads aligned based, 8 250 2 next_sister fixed bin unaligned, 8 251 2 prev_sister fixed bin unaligned, 8 252 2 daughter fixed bin unaligned, 8 253 2 mother fixed bin unaligned, /* negative is a fnpx, positive a cdtx */ 8 254 2 pad bit (18) unaligned, 8 255 2 daughter_count fixed bin unaligned; 8 256 8 257 /* Values for cdte.service_type field */ 8 258 8 259 dcl ( 8 260 ANS_SERVICE init (1), /* login or dial */ 8 261 FTP_SERVICE init (2), /* file transfer service */ 8 262 MC_SERVICE init (3), /* message coordinator */ 8 263 SLAVE_SERVICE init (4), /* special channel */ 8 264 DIAL_SERVICE init (5), /* transient state */ 8 265 DIAL_OUT_SERVICE init (6), /* auto call line */ 8 266 MPX_SERVICE init (8), /* ring0 demultiplexed line */ 8 267 TANDD_SERVICE init (9) /* transient state, attached for T & D */ 8 268 ) fixed bin internal static options (constant); 8 269 8 270 /* Values for service type in both cdte and fnpe */ 8 271 8 272 dcl ( 8 273 INACTIVE init (7), /* not to be used, even though configured */ 8 274 ACTIVE init (1) 8 275 ) /* for FNP only, configured and to be used */ 8 276 fixed bin internal static options (constant); 8 277 8 278 /* Value for both cdte.in_use and fnpe.state */ 8 279 8 280 dcl NOT_CONFIGURED fixed bin int static init (-1) options (constant); 8 281 /* was not configured at Multics bootload time */ 8 282 8 283 /* NOTE: an INACTIVE channel can be made active by operator command or CDT installation, 8 284* but a NOT_CONFIGURED channel can not be used until its multiplexer is reloaded */ 8 285 8 286 /* Value for cdte.in_use */ 8 287 8 288 dcl CHANNEL_DELETED fixed bin int static init (-2); 8 289 /* channel deleted by CDT installation */ 8 290 8 291 /* NOTE: a configured channel being deleted by a CDT installation is set to CHANNEL_DELETED. 8 292* multiplexer_mgr_ sets cdte.in_use to NOW_FREE at the next reload of its multiplexer. 8 293* A NOT_CONFIGURED channel is set to NOW_FREE immediately when deleted by a CDT installation. */ 8 294 8 295 8 296 /* Values for mpxe.state field */ 8 297 8 298 dcl ( 8 299 FNP_FREE init (0), /* this fnpe is not used */ 8 300 FNP_UNKNOWN init (1), /* FNP is in some unknown state */ 8 301 FNP_DOWN init (2), /* FNP crashed, not yet reloaded */ 8 302 FNP_BOOT init (3), /* FNP has been booted, but no response yet */ 8 303 FNP_UP init (4) /* FNP is up and running fine */ 8 304 ) fixed bin internal static options (constant); 8 305 8 306 dcl ( 8 307 MPX_FREE init (0), /* this mpxe is not used */ 8 308 MPX_UNKNOWN init (1), /* MPX is in some unknown state */ 8 309 MPX_DOWN init (2), /* MPX crashed, not yet reloaded */ 8 310 MPX_BOOT init (3), /* MPX has been booted, but no response yet */ 8 311 MPX_UP init (4) /* MPX is up and running fine */ 8 312 ) fixed bin internal static options (constant); 8 313 9 1 /* BEGIN INCLUDE FILE ... fnp_types.incl.pl1 */ 9 2 9 3 9 4 9 5 /****^ HISTORY COMMENTS: 9 6* 1) change(88-06-15,Berno), approve(88-07-13,MCR7928), 9 7* audit(88-06-15,Parisek), install(88-07-19,MR12.2-1061): 9 8* Add data needed for the uncp multiplexer (DSA gateway) interface 9 9* implementation. 9 10* END HISTORY COMMENTS */ 9 11 9 12 9 13 /* Values for fnpe.type field */ 9 14 /* 9 15* Created 79 May 14 by Art Beattie by splitting information out from cdt.incl.pl1 9 16* Added in March 1982 - DN7100.fd. 9 17**/ 9 18 9 19 dcl (DN355 init (1), /* a DataNet 355 FNP */ 9 20 DN6600 init (2), /* a DataNet 6600 FNP */ 9 21 DN6670 init (3), /* a Honeywell Bull Network Processor (18x) */ 9 22 DN7100 init (4) /* The DSA Datanet architecture (DN7) */ 9 23 ) fixed bin internal static options (constant); 9 24 9 25 dcl fnp_types (4) char (8) int static options (constant) 9 26 init ("DN355", "DN6600", "DN6670", "DN7100"); 9 27 9 28 dcl fnp_models (4) fixed bin (17) int static options (constant) 9 29 init (355, 6600, 6670, 7100); 9 30 9 31 dcl supported_fnp (4) bit (1) int static options (constant) 9 32 init ("0"b, "0"b, "1"b, "1"b); 9 33 9 34 9 35 /* END INCLUDE FILE ... fnp_types.incl.pl1 */ 8 314 8 315 8 316 /* END INCLUDE FILE ... cdt.incl.pl1 */ 2057 2058 /* BEGIN INCLUDE FILE ... daemon_user_table.incl.pl1 */ 10 2 10 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 4 /* */ 10 5 /* The daemon_user_table has one entry per daemon. Daemons are logged in by */ 10 6 /* operator command or automatically. If they do any I/O, it is done via */ 10 7 /* the message coordinator. */ 10 8 /* */ 10 9 /* Programs using this include file must also use user_table_header.incl.pl1 */ 10 10 /* and user_table_entry.incl.pl1. */ 10 11 /* */ 10 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 10 13 10 14 10 15 /****^ HISTORY COMMENTS: 10 16* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 10 17* Initially coded from dutbl.incl.pl1. 10 18* 2) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 10 19* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 10 20* A) Add use of ut_header common to all user control tables. 10 21* B) Corrected padding prior to first ute entry. 10 22* END HISTORY COMMENTS */ 10 23 10 24 10 25 dcl DUTBL_version_4 fixed bin int static init (4); /* version of this declaration */ 10 26 10 27 dcl dutp ptr automatic init (null); 10 28 10 29 dcl 1 dutbl based (dutp) aligned, /* Daemon user table */ 10 30 2 header like ut_header, /* Header common to all user tables. */ 10 31 10 32 2 active_count fixed bin, /* the count of active daemons managed by DUM_ */ 10 33 10 34 2 entry_pad (117) fixed bin, /* pad to 128 words */ 10 35 2 entry (0 refer (dutbl.current_size)) like ute; /* daemon user entries */ 10 36 10 37 /* END INCLUDE FILE ... daemon_user_table.incl.pl1 */ 2058 2059 /* Beginning of include file device_queue.incl.pl1 */ 11 2 11 3 /* This structure describes the queue segment associated with 11 4*each operator console in which are placed lines to be typed. */ 11 5 11 6 declare 11 7 1 device_queue aligned based(qp), /* Header 24 dec 30 oct words */ 11 8 2 mc_atep ptr, 11 9 2 channel fixed bin(71), 11 10 2 device_name char(32), 11 11 2 no_of_messages fixed bin, 11 12 2 top_of_queue fixed bin, 11 13 2 end_of_queue fixed bin, 11 14 2 free_top fixed bin, 11 15 2 next_free fixed bin, 11 16 2 pad(7) fixed bin, 11 17 2 line (1), /* 40 dec 50 oct words */ 11 18 3 not_done bit(1) unal, 11 19 3 alarm bit (1) unal, 11 20 3 xpad bit (16) unal, 11 21 3 source fixed bin (17) unal, 11 22 3 next_line fixed bin, 11 23 3 pad(3) fixed bin, 11 24 3 offset fixed bin, 11 25 3 line_length fixed bin, 11 26 3 string char(132); 11 27 11 28 /* End of include file device_queue.incl.pl1 */ 2059 2060 /* BEGIN INCLUDE FILE ... dialup_values.incl.pl1 */ 12 2 12 3 /* format: style4 */ 12 4 12 5 /* Values for "cdte.tra_vec" used by dialup_ and others. */ 12 6 12 7 /* Modified by T. Casey April 1976 to add WAIT_NEW_PASSWORD 12 8* - in 1977 and 1978 to add WAIT_(GREETING_MSG DELETE_CHANNEL) 12 9* - and in October 1979 to add WAIT_CONNECT_REQUEST 12 10* Modified by Robert Coren in May 1981 to add TANDD_ATTACH values and 12 11* WAIT_DISCARD_WAKEUP 12 12* Modified by T. Casey, July 1981, for MR9.0, to add WAIT_BEFORE_HANGUP. 12 13* Modified by E. N. Kittlitz, July 1982, to add TTY_MASKED. 12 14**/ 12 15 12 16 /****^ HISTORY COMMENTS: 12 17* 1) change(87-04-20,GDixon), approve(87-07-13,MCR7741), 12 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 19* Add constant arrays naming cdte.state, cdte.tra_vec and ute.active values. 12 20* 2) change(87-05-11,GDixon), approve(87-07-13,MCR7741), 12 21* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 22* Add named constants for instance tags. 12 23* END HISTORY COMMENTS */ 12 24 12 25 dcl (WAIT_DIALUP init (1), /* Channel waiting for dialup. */ 12 26 WAIT_ANSWERBACK initial (2), /* WRU sent, waiting for reply */ 12 27 WAIT_LOGIN_LINE init (3), /* Greeting typed, wait for login command. */ 12 28 WAIT_LOGIN_ARGS init (4), /* Want rest of login line */ 12 29 WAIT_OLD_PASSWORD init (5), /* "-cpw" was specified. Wait for old password. */ 12 30 WAIT_PASSWORD init (6), /* Waiting for password. (If "-cpw", repeat of new one.) */ 12 31 WAIT_NEW_PASSWORD init (7), /* "-cpw" was specified. Wait for new password */ 12 32 WAIT_LOGOUT_SIG init (8), /* Channel is hooked up. Wait for logout. */ 12 33 WAIT_LOGOUT init (9), /* A logout has been requested. Wait for process to die */ 12 34 WAIT_LOGOUT_HOLD init (10), /* As above but don't hang up when it dies. */ 12 35 WAIT_DETACH init (11), /* As above but ignore channel afterwards. */ 12 36 WAIT_NEW_PROC init (12), /* As above but make new process and continue. */ 12 37 WAIT_REMOVE init (13), /* As above but completely expunge channel. */ 12 38 WAIT_FIN_PRIV_ATTACH init (14), /* When channel dials up, connect it to user */ 12 39 WAIT_DIAL_RELEASE init (15), /* Waiting for master process to release. */ 12 40 WAIT_DIAL_OUT init (16), /* Waiting for auto call to complete */ 12 41 WAIT_HANGUP init (17), /* Wait for the hangup event to occur for a channel */ 12 42 WAIT_SLAVE_REQUEST init (18), /* Ignore line until someone asks */ 12 43 WAIT_GREETING_MSG init (19), /* Print greeting message and wait for login line */ 12 44 WAIT_DELETE_CHANNEL init (20), /* Channel deleted - mark cdte after process is destroyed */ 12 45 WAIT_CONNECT_REQUEST init (21), /* logged in; awaiting request re disconnected processes */ 12 46 WAIT_TANDD_HANGUP init (22), /* when channel hangs up, proceed with t & d attachment */ 12 47 WAIT_FIN_TANDD_ATTACH init (23), /* when channel dials up, finish t & d attachment */ 12 48 WAIT_DISCARD_WAKEUPS init (24), /* disregard all wakeups on channel */ 12 49 WAIT_BEFORE_HANGUP init (25), /* allow output to print before hanging up */ 12 50 WAIT_DESTROY_REQUEST init (26), /* waiting to continue with destroy request after process has destroyed itself */ 12 51 WAIT_NEW_PROC_REQUEST init (27) /* waiting to continue with new_proc request after process has destroyed itself */ 12 52 ) fixed bin internal static options (constant); 12 53 12 54 dcl TRA_VEC_VALUES (0:13) char (32) aligned int static options (constant) init 12 55 /* names of ute.destroy_flag values */ 12 56 ("", "wait dialup", "wait answerback", "wait login line", /* 0-3 */ 12 57 "wait login args", "wait old password", "wait password", /* 4-6 */ 12 58 "wait new password", "wait logout signal", "wait logout", /* 7-9 */ 12 59 "wait logout hold", "wait detach", "wait new proc", /* 10-12 */ 12 60 "wait remove"); /* -13 */ 12 61 12 62 /* Values for "cdte.state", typewriter state. */ 12 63 12 64 dcl (TTY_MASKED init (-1), /* Terminal channel is there, but masked by MCS */ 12 65 TTY_HUNG init (1), /* Terminal channel is there, but dead. */ 12 66 TTY_KNOWN init (2), /* Channel being "listened" to, awaiting dialup. */ 12 67 TTY_DIALED init (5) /* Channel is dialed up. This is normal state. */ 12 68 ) fixed bin internal static options (constant); 12 69 12 70 dcl STATE_VALUES (-1:5) char (15) aligned int static options (constant) init 12 71 /* names of cdte.state values */ 12 72 ("masked", "dead", "hung up", "listening", "", "", "dialed up"); 12 73 12 74 /* Values for "cdte.in_use" and "ate.active" */ 12 75 12 76 dcl (NOW_FREE init (0), /* Entry is empty. */ 12 77 NOW_HUNG_UP init (1), /* Entry is usable but tty is hung up. */ 12 78 NOW_LISTENING init (2), /* Entry is waiting for phone call. */ 12 79 NOW_DIALED init (3), /* Entry is connected but login not complete. */ 12 80 NOW_LOGGED_IN init (4), /* Entry is logged in but no process. */ 12 81 NOW_HAS_PROCESS init (5), /* Entry has a valid process. */ 12 82 NOW_DIALING init (6), /* Entry (auto_call line) is dialing */ 12 83 NOW_DIALED_OUT init (7) /* Entry (auto_call line) is in use */ 12 84 ) fixed bin internal static options (constant); 12 85 12 86 dcl ACTIVE_VALUES (0:5) char (18) aligned int static options (constant) init 12 87 /* names of ute.active values */ 12 88 ("free", "hung-up", "listening", "dialed", "logged in, no proc", "logged in & proc"); 12 89 12 90 12 91 /**** Values for ute.tag */ 12 92 12 93 dcl (TAG_INTERACTIVE init("a"), 12 94 TAG_UFT init("f"), 12 95 TAG_ABSENTEE init("m"), 12 96 TAG_PROXY init("p"), 12 97 TAG_DAEMON init("z") 12 98 ) char(1) int static options(constant); 12 99 12 100 12 101 /**** Following are constants used to indicate to the process termination 12 102* handler the reason for the process termination. They are used by 12 103* uc_proc_term_handler_, as well as uc_ls_new_proc_request_ and 12 104* uc_ls_destroy_request_. */ 12 105 12 106 dcl ( 12 107 PT_FPE initial (1), 12 108 PT_LOGOUT initial (4), 12 109 PT_NEW_PROC_AUTH initial (13), 12 110 PT_HANGUP initial (20), 12 111 PT_SHUTDOWN initial (21), 12 112 PT_BUMP initial (22), 12 113 PT_ALARM initial (23), 12 114 PT_DETACH initial (24), 12 115 PT_UNBUMP initial (25), 12 116 PT_OPERATOR_TERMINATE initial (27), 12 117 PT_DESTROY_REQUEST initial (30), 12 118 PT_NEW_PROC_REQUEST initial (31) 12 119 ) fixed bin (17) internal static options (constant); 12 120 12 121 /**** Values for ute.preempted: 12 122* -1 user unbumped after term signal sent 12 123* 0 user unbumped; ignore alarm___ 12 124* 1 value internally used in load_ctl_ 12 125* 2 user bumped; when alarm___ comes in, send term signal 12 126* 3 term signal sent; destroy process if termsgnl, alarm___, or cpulimit 12 127* signals come in 12 128* 4 user bumped; process sick, so destroy without sending term signal 12 129* 5 trm_ signal sent, termsgnl received; (if still 3, we never got the 12 130* termsgnl). */ 12 131 12 132 dcl ( 12 133 PREEMPT_UNBUMP initial (-1), 12 134 PREEMPT_UNBUMP_IGNORE_ALARM initial (0), 12 135 PREEMPT_LOAD_CTL initial (1), 12 136 PREEMPT_BUMPED initial (2), 12 137 PREEMPT_TERM_SENT initial (3), 12 138 PREEMPT_BUMPED_NO_TERM initial (4), 12 139 PREEMPT_TERMSGNL_RECEIVED initial (5) 12 140 ) fixed bin (17) internal static options(constant); 12 141 12 142 dcl PREEMPT_VALUES (-1:5) char(28) varying int static options(constant) init( 12 143 "unbumped", 12 144 "not bumped, ignore alarm___", 12 145 "load_ctl_", 12 146 "bumped", 12 147 "bumped, trm_ sent", 12 148 "bumped without trm_", 12 149 "bumped, termsgnl received"); 12 150 12 151 /* END INCLUDE FILE ... dialup_values.incl.pl1 */ 2060 2061 /* --------------- BEGIN include file iox_dcls.incl.pl1 --------------- */ 13 2 13 3 /* Written 05/04/78 by C. D. Tavares */ 13 4 /* Fixed declaration of iox_$find_iocb_n 05/07/80 by R. Holmstedt */ 13 5 /* Modified 5/83 by S. Krupp to add declarations for: iox_$open_file, 13 6* iox_$close_file, iox_$detach and iox_$attach_loud entries. */ 13 7 13 8 dcl iox_$attach_name entry (char (*), pointer, char (*), pointer, fixed bin (35)), 13 9 iox_$attach_ptr entry (pointer, char (*), pointer, fixed bin (35)), 13 10 iox_$close entry (pointer, fixed bin (35)), 13 11 iox_$control entry (pointer, char (*), pointer, fixed bin (35)), 13 12 iox_$delete_record entry (pointer, fixed bin (35)), 13 13 iox_$destroy_iocb entry (pointer, fixed bin (35)), 13 14 iox_$detach_iocb entry (pointer, fixed bin (35)), 13 15 iox_$err_not_attached entry options (variable), 13 16 iox_$err_not_closed entry options (variable), 13 17 iox_$err_no_operation entry options (variable), 13 18 iox_$err_not_open entry options (variable), 13 19 iox_$find_iocb entry (char (*), pointer, fixed bin (35)), 13 20 iox_$find_iocb_n entry (fixed bin, ptr, fixed bin(35)), 13 21 iox_$get_chars entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 13 22 iox_$get_line entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 13 23 iox_$look_iocb entry (char (*), pointer, fixed bin (35)), 13 24 iox_$modes entry (pointer, char (*), char (*), fixed bin (35)), 13 25 iox_$move_attach entry (pointer, pointer, fixed bin (35)), 13 26 iox_$open entry (pointer, fixed bin, bit (1) aligned, fixed bin (35)), 13 27 iox_$position entry (pointer, fixed bin, fixed bin (21), fixed bin (35)), 13 28 iox_$propagate entry (pointer), 13 29 iox_$put_chars entry (pointer, pointer, fixed bin (21), fixed bin (35)), 13 30 iox_$read_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 13 31 iox_$read_length entry (pointer, fixed bin (21), fixed bin (35)), 13 32 iox_$read_record entry (pointer, pointer, fixed bin (21), fixed bin (21), fixed bin (35)), 13 33 iox_$rewrite_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 13 34 iox_$seek_key entry (pointer, char (256) varying, fixed bin (21), fixed bin (35)), 13 35 iox_$write_record entry (pointer, pointer, fixed bin (21), fixed bin (35)), 13 36 iox_$open_file entry(ptr, fixed bin, char(*), bit(1) aligned, fixed bin(35)), 13 37 iox_$close_file entry(ptr, char(*), fixed bin(35)), 13 38 iox_$detach entry(ptr, char(*), fixed bin(35)), 13 39 iox_$attach_loud entry(ptr, char(*), ptr, fixed bin(35)); 13 40 13 41 dcl (iox_$user_output, 13 42 iox_$user_input, 13 43 iox_$user_io, 13 44 iox_$error_output) external static pointer; 13 45 13 46 /* ---------------- END include file iox_dcls.incl.pl1 ---------------- */ 2061 2062 /* Begin include file ..... iox_modes.incl.pl1 */ 14 2 14 3 /* Written by C. D. Tavares, 03/17/75 */ 14 4 /* Updated 10/31/77 by CDT to include short iox mode strings */ 14 5 14 6 dcl iox_modes (13) char (24) int static options (constant) aligned initial 14 7 ("stream_input", "stream_output", "stream_input_output", 14 8 "sequential_input", "sequential_output", "sequential_input_output", "sequential_update", 14 9 "keyed_sequential_input", "keyed_sequential_output", "keyed_sequential_update", 14 10 "direct_input", "direct_output", "direct_update"); 14 11 14 12 dcl short_iox_modes (13) char (4) int static options (constant) aligned initial 14 13 ("si", "so", "sio", "sqi", "sqo", "sqio", "squ", "ksqi", "ksqo", "ksqu", "di", "do", "du"); 14 14 14 15 dcl (Stream_input initial (1), 14 16 Stream_output initial (2), 14 17 Stream_input_output initial (3), 14 18 Sequential_input initial (4), 14 19 Sequential_output initial (5), 14 20 Sequential_input_output initial (6), 14 21 Sequential_update initial (7), 14 22 Keyed_sequential_input initial (8), 14 23 Keyed_sequential_output initial (9), 14 24 Keyed_sequential_update initial (10), 14 25 Direct_input initial (11), 14 26 Direct_output initial (12), 14 27 Direct_update initial (13)) fixed bin int static options (constant); 14 28 14 29 /* End include file ..... iox_modes.incl.pl1 */ 2062 2063 /* BEGIN INCLUDE FILE ... login_server_messages.incl.pl1 */ 15 2 15 3 /****^ HISTORY COMMENTS: 15 4* 1) change(86-06-30,Coren), approve(86-06-30,MCR7415), 15 5* audit(86-07-02,Margolin), install(86-07-11,MR12.0-1092): 15 6* Initial implementation. 15 7* 2) change(87-04-16,GDixon), approve(87-07-13,MCR7679), 15 8* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 9* A) Add REQUEST_TYPES and RESPONSE_TYPES arrays. 15 10* B) Add login_server_validate_response.last_incorrect_password.time. 15 11* C) Add user_connection_info.line_type. 15 12* D) Add login_server_process_request.minimum_ring. 15 13* 3) change(87-05-14,GDixon), approve(87-07-13,MCR7737), 15 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 15 15* A) Add login_server_process_response.brief. 15 16* B) Add login_server_list_response.initial_ring. 15 17* C) Separate login_server_process_response into fixed and variable parts. 15 18* D) Move user_connection_info into login_server_request_header. 15 19* END HISTORY COMMENTS */ 15 20 15 21 /* This include file defines all the structures passed in message segments 15 22* between a login server process and the Initializer (or "answering service") 15 23* process. For convenience, messages from the server to the initializer, 15 24* passed using the send_ls_request_ subroutine, are called "requests"; 15 25* messages from the initializer to the server, passed using the user_message_ 15 26* mechanism, are called "responses". 15 27**/ 15 28 15 29 /* Request types */ 15 30 15 31 dcl (LS_VALIDATE_REQUEST initial (1), /* validate user ID and password */ 15 32 LS_PROCESS_REQUEST initial (2), /* create or connect to a process */ 15 33 LS_LIST_REQUEST initial (3), /* list disconnected processes */ 15 34 LS_DIAL_REQUEST initial (4), /* find a dial server */ 15 35 LS_DISCONNECT_REQUEST initial (5), /* report disconnection of a login channel */ 15 36 LS_LOGOUT_REQUEST initial (6), /* discard UTE (end of dialogue) */ 15 37 LS_OPERATOR_REQUEST initial (7)) /* log the user in as an operator */ 15 38 fixed bin internal static options (constant); 15 39 15 40 dcl LS_REQUEST_TYPES (7) char (10) internal static options (constant) initial 15 41 ( 15 42 "validate", 15 43 "process", 15 44 "list", 15 45 "dial", 15 46 "disconnect", 15 47 "logout", 15 48 "operator"); 15 49 15 50 dcl ls_request_ptr pointer; 15 51 15 52 /* common header for all requests */ 15 53 15 54 dcl 1 ls_request_header aligned based (ls_request_ptr), 15 55 2 header_version char (8), /* version for this header */ 15 56 2 request_version char (8), /* varies depending on the request */ 15 57 2 request_type fixed bin, 15 58 2 pad1 bit (36), 15 59 2 reply_event_channel fixed bin (71), /* event channel over which reply_message should be sent */ 15 60 2 reply_handle bit (72) aligned, /* used for dispatching response */ 15 61 2 connection_info like user_connection_info; /* connection making this request. */ 15 62 15 63 dcl LS_REQUEST_HEADER_VERSION_1 char (8) initial ("lsrh0001") internal static options (constant); 15 64 15 65 dcl 1 user_connection_info aligned based, /* common info passed in most requests */ 15 66 2 connection_name char (32), 15 67 2 access_class_range (2) bit (72), 15 68 2 terminal_type char (32), 15 69 2 terminal_id char (4), 15 70 2 line_type fixed bin; 15 71 15 72 15 73 15 74 /* "validate" request: validate user ID and password */ 15 75 15 76 dcl 1 login_server_validate_request aligned based (ls_request_ptr), 15 77 2 header like ls_request_header, /* request_type = LS_VALIDATE_REQUEST */ 15 78 2 current_password char (8), /* scrambled */ 15 79 2 authorization bit (72), /* only valid if auth_given = "1"b */ 15 80 2 terminate_event_channel fixed bin (71), /* event channel to notify server when process terminates */ 15 81 2 person_id char (22), /* as specified in login line */ 15 82 2 project_id char (9), /* likewise, might be null string */ 15 83 2 network_connection_type fixed bin, /* see below for values */ 15 84 2 new_password char (8), /* only valid if change_password = "1"b */ 15 85 2 flags, 15 86 3 gpw bit (1) unaligned, /* password generated in response to -generate_password */ 15 87 3 auth_given bit (1) unaligned, /* -authorization specified */ 15 88 3 anonymous bit (1) unaligned, /* "enterp" request */ 15 89 3 anon_no_password bit (1) unaligned, /* "enter" request */ 15 90 3 change_password bit (1) unaligned, /* gave -cpw or -gpw */ 15 91 3 change_default_auth bit (1) unaligned, /* gave -change_default_authorization */ 15 92 3 change_default_proj bit (1) unaligned, /* gave -change_default_project */ 15 93 3 operator bit (1) unaligned, /* gave -operator */ 15 94 3 pad bit (28) unaligned; 15 95 15 96 15 97 dcl LS_VALIDATE_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsvr0001"); 15 98 15 99 15 100 15 101 /* "process" request: create a process or reconnect to an existing process for the specified user */ 15 102 15 103 dcl 1 login_server_process_request aligned based (ls_request_ptr), 15 104 2 fixed_part, /* to allow for automatic copies */ 15 105 3 header like ls_request_header, /* request_type = LS_PROCESS_REQUEST */ 15 106 3 handle bit (72), /* as provided in validate_response */ 15 107 3 person_id char (22), /* the real one */ 15 108 3 project_id char (9), /* likewise */ 15 109 3 project_pad fixed bin, 15 110 3 command_type fixed bin, /* login, connect, etc.; see below for names */ 15 111 3 process_number fixed bin, /* 0 if unspecified or irrelevant */ 15 112 3 default_io_module char (32), /* I/O module to use if no outer_module specified */ 15 113 3 switch_flags, /* used to indicate if "switch"-type control args were specified */ 15 114 4 warn_given bit (1) unaligned, 15 115 4 force_given bit (1) unaligned, 15 116 4 save_given bit (1) unaligned, 15 117 4 preempt_given bit (1) unaligned, 15 118 4 brief_given bit (1) unaligned, 15 119 4 pad2 bit (31) unaligned, 15 120 3 switch_values, /* these are only valid if corresponding bit in switch_flags is on */ 15 121 4 warn bit (1) unaligned, 15 122 4 force bit (1) unaligned, 15 123 4 save_on_disconnect bit (1) unaligned, 15 124 4 preempt bit (1) unaligned, 15 125 4 brief bit (1) unaligned, /* "0"b & brief_given => -long */ 15 126 4 pad3 bit (31) unaligned, 15 127 3 other_flags, 15 128 4 init_ring_given bit (1) unaligned, /* "1"b if -ring */ 15 129 4 minimum_ring_given bit (1) unaligned, /* "1"b if MNA terminal interface ring > 1 */ 15 130 4 immediate bit (1) unaligned, /* "1"b => -new_proc (or -destroy) -immediate */ 15 131 4 no_start_up bit (1) unaligned, /* "1"b if -no_start_up */ 15 132 4 pad4 bit (32) unaligned, 15 133 3 initial_ring fixed bin, /* valid iff init_ring_given = "1"b */ 15 134 3 minimum_ring fixed bin, /* ring in which MNA terminal mgr operates */ 15 135 3 home_dir char (168), /* null if not specified */ 15 136 3 outer_module char (32), /* likewise */ 15 137 3 process_overseer char (168), /* likewise */ 15 138 3 subsystem char (168), /* likewise */ 15 139 3 n_args fixed bin, /* how many arguments specified after -ag; if 0, ignore the rest of the structure */ 15 140 2 login_arguments, /* variable part, describes stuff after -ag */ 15 141 3 arg_string_length fixed bin (21), 15 142 3 args (ls_process_request_n_args refer (login_server_process_request.n_args)), 15 143 4 start_index fixed bin (21), /* position in arg_string at which arg (i) starts */ 15 144 4 arg_length fixed bin (21), /* length of arg (i) */ 15 145 3 arg_string char (ls_process_request_arg_string_length refer (login_server_process_request.arg_string_length)); 15 146 15 147 dcl ls_process_request_n_args fixed bin; 15 148 dcl ls_process_request_arg_string_length fixed bin (21); 15 149 15 150 dcl LS_PROCESS_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lspr0001"); 15 151 15 152 15 153 15 154 /* "list" request: list the user's disconnected processes, if any */ 15 155 15 156 dcl 1 login_server_list_request aligned based (ls_request_ptr), 15 157 2 header like ls_request_header, /* request_type = LS_LIST_REQUEST */ 15 158 2 handle bit (72); 15 159 15 160 dcl LS_LIST_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lslr0001"); 15 161 15 162 15 163 15 164 /* "dial" request: find a process to accept a dial */ 15 165 15 166 /* Note: because a dial request may or may not have been preceded 15 167* by a validate request/response, the initializer_handle may be null. 15 168**/ 15 169 15 170 dcl 1 login_server_dial_request aligned based (ls_request_ptr), 15 171 2 header like ls_request_header, /* request_type = LS_DIAL_REQUEST */ 15 172 2 initializer_handle bit (72), /* as provided in validate_response (if any) */ 15 173 2 terminate_event_channel fixed bin (71), /* event channel to wake up login server when master process terminates */ 15 174 2 dial_qualifier char (22), 15 175 2 person_id char (22), /* null if not specified */ 15 176 2 project_id char (9), /* likewise */ 15 177 2 user_person_id char (22), /* if -user was specified, otherwise "" */ 15 178 2 user_project_id char (9); /* likewise */ 15 179 15 180 dcl LS_DIAL_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsdr0001"); 15 181 15 182 15 183 15 184 /* "disconnect" request: report that a login channel has disconnected */ 15 185 /* Note: this message is sent if the connection is broken either during the login dialogue 15 186* or later on when the process was using it */ 15 187 15 188 dcl 1 login_server_disconnect_request aligned based (ls_request_ptr), 15 189 2 header like ls_request_header, /* request_type = LS_DISCONNECT_REQUEST */ 15 190 2 handle bit (72), /* from original validate_response */ 15 191 2 process_id bit (36); /* ""b if no process established */ 15 192 15 193 dcl LS_DISCONNECT_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsdc0001"); 15 194 15 195 15 196 15 197 /* "logout" request: indicates that user entered the "logout" request, ending the dialogue; does not require any response */ 15 198 15 199 dcl 1 login_server_logout_request aligned based (ls_request_ptr), 15 200 2 header like ls_request_header, /* request_type = LS_LOGOUT_REQUEST */ 15 201 2 handle bit (72); 15 202 15 203 dcl LS_LOGOUT_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lslg0001"); 15 204 15 205 15 206 15 207 /* "operator" request: sign the user on as an operator, the result of either 15 208* "login -operator" or "dial system". Note that in the latter case, there may 15 209* not have been a validate request (if the -user control argument wasn't specified), 15 210* in which case initializer_handle is null, and the person_id and project_id 15 211* are blank. 15 212**/ 15 213 15 214 dcl 1 login_server_operator_request aligned based (ls_request_ptr), 15 215 2 header like ls_request_header, /* request_type = LS_OPERATOR_REQUEST */ 15 216 2 initializer_handle bit (72) aligned, /* as provided in validate_response (if any) */ 15 217 2 terminate_event_channel fixed bin (71), /* event channel for wakeup when connection is dropped */ 15 218 2 person_id char (22), /* likewise */ 15 219 2 project_id char (9), /* likewise */ 15 220 2 virtual_channel char (32); /* if -virtual_channel specified, otherwise "" */ 15 221 15 222 dcl LOGIN_SERVER_OPERATOR_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsor0001"); 15 223 15 224 15 225 15 226 /* Response types */ 15 227 15 228 dcl (LS_UNKNOWN_RESPONSE initial (100), /* unknown response type. */ 15 229 LS_VALIDATE_RESPONSE initial (101), /* response to validation request */ 15 230 LS_PROCESS_RESPONSE initial (102), /* response to process request */ 15 231 LS_LIST_RESPONSE initial (103), /* response to list request */ 15 232 LS_DIAL_RESPONSE initial (104), /* response to dial request */ 15 233 LS_TERMINATION_RESPONSE initial (105), /* to notify server of a logout */ 15 234 LS_NEW_PROC_RESPONSE initial (106), /* to notify server of process termination */ 15 235 LS_OPERATOR_RESPONSE initial (107)) /* response to operator request */ 15 236 fixed bin internal static options (constant); 15 237 15 238 dcl LS_RESPONSE_TYPES (100:107) char (10) internal static options (constant) initial 15 239 ( 15 240 "UNKNOWN", 15 241 "validate", 15 242 "process", 15 243 "list", 15 244 "dial", 15 245 "terminate", 15 246 "new_proc", 15 247 "operator"); 15 248 15 249 /* NOTE: the server_handle is not included in the response structures because 15 250* it is provided in the user_message_ structures */ 15 251 15 252 15 253 15 254 dcl ls_response_ptr pointer; 15 255 15 256 /* common header for all responses */ 15 257 15 258 dcl 1 login_server_response_header aligned based (ls_response_ptr), 15 259 2 message_type fixed bin, 15 260 2 header_pad bit (36), /* force doubleword alignment */ 15 261 2 version char (8); 15 262 15 263 15 264 15 265 /* "validate" response: indicate whether user_id/password is valid */ 15 266 15 267 dcl 1 login_server_validate_response aligned based (ls_response_ptr), 15 268 2 header like login_server_response_header, /* message_type = LS_VALIDATE_RESPONSE */ 15 269 2 handle bit (72), /* to be provided by the server in subsequent */ 15 270 /* messages for the same connection */ 15 271 2 authorization bit (72), /* default if none was supplied */ 15 272 2 authorization_range (2) bit (72), /* authorization range permitted for this user */ 15 273 2 status_code fixed bin (35), /* 0 iff user is validated */ 15 274 2 person_id char (22), /* primary name from the PNT */ 15 275 2 project_id char (9), /* primary name from the PNT or PDT */ 15 276 2 n_disconnected_processes fixed bin, /* number of disconnected processes for specified user */ 15 277 2 validate_pad fixed bin, 15 278 2 previous_login_info, /* for printing login message */ 15 279 3 time fixed bin (71), 15 280 3 terminal_type char (32), 15 281 3 terminal_id char (4), 15 282 2 incorrect_passwords fixed bin, /* number of times password given incorrectly */ 15 283 2 last_incorrect_password, /* where it came from */ 15 284 3 time fixed bin (71), 15 285 3 terminal_type char (32), 15 286 3 terminal_id char (4), 15 287 2 password_interval fixed bin, /* limit (in days) for password use or change */ 15 288 2 flags, 15 289 3 disconnect bit (1) unaligned, /* if "1"b, close the connection immediately */ 15 290 3 password_changed bit (1) unal, /* "1"b => changed password */ 15 291 3 default_auth_changed bit (1) unal, /* "1"b => changed default authorization */ 15 292 3 default_proj_changed bit (1) unal, /* "1"b => changed default project */ 15 293 3 password_expired bit (1) unal, /* "1"b => password not changed recently enough */ 15 294 3 password_unused_too_long bit (1) unal, /* "1"b => password hasn't been used recently */ 15 295 3 pad bit (30) unaligned; 15 296 15 297 dcl LS_VALIDATE_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsvs0001"); 15 298 15 299 15 300 15 301 /* "process" response: responds to request to create or connect */ 15 302 15 303 dcl 1 login_server_process_response aligned based (ls_response_ptr), 15 304 2 fixed_part, 15 305 3 header like login_server_response_header, /* message_type = LS_PROCESS_RESPONSE */ 15 306 3 status_code fixed bin (35), /* 0 iff process was created or requested process exists */ 15 307 3 process_id bit (36), 15 308 3 new_handle bit (72), /* changed if reconnecting, etc. to preexisting process, all 0 otherwise */ 15 309 3 authorization bit (72), /* authorization of created or existing process */ 15 310 3 process_group_id char (32), /* Person.Project.tag */ 15 311 3 process_number fixed bin, /* as in, "Your disconnected process #2..." */ 15 312 3 n_disconnected_processes fixed bin, /* valid even if code ^= 0, e.g., if request was ambiguous */ 15 313 3 start_event_channel fixed bin (71), /* event channel to wake up user process on */ 15 314 3 login_instance fixed bin, /* "This is your Nth interactive login" */ 15 315 3 accounting_info, /* for destroyed process, if any */ 15 316 4 cpu_usage fixed bin (71), 15 317 4 cost float bin, 15 318 3 flags, /* except for disconnect and logout, invalid if status_code ^= 0 */ 15 319 4 disconnect bit (1) unaligned, /* "1"b => break the connection immediately */ 15 320 4 logout bit (1) unaligned, /* "1"b => restart login sequence */ 15 321 4 created bit (1) unaligned, /* "1"b => new process created */ 15 322 4 connected bit (1) unaligned, /* "1"b => connected to old process */ 15 323 4 new_proc bit (1) unaligned, /* "1"b => connected after new_proc */ 15 324 4 destroyed bit (1) unaligned, /* "1"b => process destroyed */ 15 325 4 anonymous bit (1) unaligned, /* "1"b => anonymous user ("enter" or "enterp") */ 15 326 4 already_logged_in bit (1) unaligned, /* "1"b => user can't log in because he already is */ 15 327 4 message_coordinator bit (1) unaligned, /* "1"b => this connection is going to be used by the message coordinator */ 15 328 4 brief bit (1) unaligned, /* "1"b => brief user attribute from PDT */ 15 329 4 pad bit (26) unaligned, 15 330 3 initial_ring fixed bin, /* ring in which process was created */ 15 331 3 already_logged_in_info, /* relevant if already_logged_in flag is "1"b */ 15 332 4 connection_name char (32), 15 333 4 terminal_type char (32), 15 334 4 terminal_id char (4), 15 335 2 accounting_message_struc, /* character string assembled by initializer giving error or warnings about the user's account */ 15 336 3 accounting_message_length fixed bin, 15 337 3 accounting_message char (ls_process_response_accounting_message_length refer (login_server_process_response.accounting_message_length)); 15 338 15 339 dcl ls_process_response_accounting_message_length fixed bin; 15 340 15 341 dcl LOGIN_SERVER_PROCESS_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsps0001"); 15 342 15 343 15 344 15 345 /* "list" response: used if create request specified "list" command */ 15 346 15 347 dcl 1 login_server_list_response aligned based (ls_response_ptr), 15 348 2 header like login_server_response_header, /* message_type = LS_LIST_RESPONSE */ 15 349 2 n_processes fixed bin, /* number of disconnected processes (might be 0) */ 15 350 2 pad_header fixed bin, 15 351 2 process_info (login_server_list_response_n_processes refer (login_server_list_response.n_processes)), 15 352 3 creation_time fixed bin (71), 15 353 3 authorization bit (72), 15 354 3 initial_ring fixed bin, 15 355 3 pad_process_info fixed bin, 15 356 3 connection_info like user_connection_info; 15 357 15 358 dcl login_server_list_response_n_processes fixed bin; 15 359 15 360 dcl LOGIN_SERVER_LIST_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lslr0001"); 15 361 15 362 15 363 15 364 /* "dial" response: response to dial request */ 15 365 15 366 dcl 1 login_server_dial_response aligned based (ls_response_ptr), 15 367 2 header like login_server_response_header, /* message_type = LS_DIAL_RESPONSE */ 15 368 2 status_code fixed bin (35), /* 0 iff dial server was found and all is OK */ 15 369 2 process_id bit (36), /* of dial server */ 15 370 2 process_group_id char (32), /* likewise */ 15 371 2 authorization bit (72), /* likewise, to make sure connection is usable */ 15 372 2 start_event_channel fixed bin (71), /* event channel to wake up user process on */ 15 373 2 process_ring fixed bin, /* initial ring of dial server */ 15 374 2 flags, 15 375 3 disconnect bit (1) unaligned, /* "1"b => break connection immediately */ 15 376 3 pad bit (35) unaligned; 15 377 15 378 dcl LOGIN_SERVER_DIAL_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsds0001"); 15 379 15 380 15 381 15 382 /* "termination" response: (not a response to anything): notify server that a 15 383* process terminated other than by logout */ 15 384 15 385 dcl 1 login_server_termination_response aligned based (ls_response_ptr), 15 386 2 header like login_server_response_header, /* message_type = LS_TERMINATION_RESPONSE */ 15 387 2 accounting_info, /* for printing in logout message */ 15 388 3 cpu_usage fixed bin (71), 15 389 3 cost float bin, 15 390 3 pad bit (33) unaligned, 15 391 2 process_id bit (36), /* of the logged-out process */ 15 392 2 process_group_id char (32), 15 393 2 status_code fixed bin (35), /* e.g., to indicate reason for fatal error */ 15 394 2 flags, 15 395 3 logout bit (1) aligned, /* no new process coming */ 15 396 3 automatic_logout bit (1) unaligned, 15 397 3 hold bit (1) unaligned, 15 398 3 brief bit (1) unaligned, 15 399 3 new_proc bit (1) unaligned, /* user-requested new process */ 15 400 3 fatal_error bit (1) unaligned, /* process died unexpectedly */ 15 401 3 fpe_caused_logout bit (1) unaligned, /* fatal error doesn't generate new process */ 15 402 3 fpe_loop bit (1) unaligned, /* fatal error loop: too many in too short a time */ 15 403 3 fpe_during_init bit (1) unaligned, /* fatal error during process initialization */ 15 404 3 offer_help bit (1) unaligned, /* print a message offering "help" */ 15 405 3 pad bit (27) unaligned; 15 406 15 407 dcl LOGIN_SERVER_TERMINATION_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lstr0001"); 15 408 15 409 15 410 15 411 /* "new_proc" response: (not actually a response to anything) -- describes a 15 412* new process (after a termination_response) */ 15 413 15 414 dcl 1 login_server_new_proc_response aligned based (ls_response_ptr), 15 415 2 header like login_server_response_header, /* message_type = LS_NEW_PROC_RESPONSE */ 15 416 2 new_authorization bit (72), /* in case of new_proc -auth */ 15 417 2 new_start_event_channel fixed bin (71), /* event channel for starting new process */ 15 418 2 new_process_id bit (36); /* process_id of newly-created process */ 15 419 15 420 dcl LOGIN_SERVER_NEW_PROC_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsnp0001"); 15 421 15 422 15 423 15 424 /* "operator" response: indicates success or failure of operator request */ 15 425 15 426 dcl 1 login_server_operator_response aligned based (ls_response_ptr), 15 427 2 header like login_server_response_header, /* message_type = LS_OPERATOR_RESPONSE */ 15 428 2 status_code fixed bin (35), /* indicates success or failure */ 15 429 2 process_id bit (36), /* process ID of the message coordinator */ 15 430 2 process_group_id char (32), /* Person.Project.tag */ 15 431 2 event_channel fixed bin (71), /* event channel over which to send connect/disconnect wakeups */ 15 432 2 ring fixed bin, /* ring of message coordinator */ 15 433 2 flags, 15 434 3 disconnect bit (1) unaligned, /* "1" => break the connection immediately */ 15 435 3 mbz bit (35) unaligned; 15 436 15 437 15 438 dcl LOGIN_SERVER_OPERATOR_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsos0001"); 15 439 15 440 15 441 /* format of reply message sent to acknowledge receipt of a request */ 15 442 15 443 dcl ls_reply_message_ptr pointer; 15 444 15 445 dcl 1 ls_reply_message aligned based (ls_reply_message_ptr), 15 446 2 code fixed bin (35), 15 447 2 flags, 15 448 3 request_invalid bit (1) unaligned, /* "1"b => could not process request */ 15 449 3 response_sent bit (1) unaligned, /* "1"b => there is a response message */ 15 450 3 as_error_code bit (1) unaligned, /* "1"b => code is from as_error_table_ */ 15 451 3 do_not_reply bit (1) unaligned, /* "1"b => special flag for AS to prevent any reply from being sent to login server */ 15 452 3 mbz bit (32) unaligned; 15 453 15 454 /* The following are values used to identify the various requests internally; those from CREATE_REQ on 15 455* can appear as "command_type" in ls_process_requests. */ 15 456 15 457 dcl (LOGIN_REQ initial (1), 15 458 ENTER_REQ initial (2), 15 459 ENTERP_REQ initial (3), 15 460 CREATE_REQ initial (4), 15 461 DESTROY_REQ initial (5), 15 462 CONNECT_REQ initial (6), 15 463 NEW_PROC_REQ initial (7), 15 464 LIST_REQ initial (8)) 15 465 fixed bin internal static options (constant); 15 466 15 467 /* The following are the possible values for login_server_validate_request.network_connection_type. 15 468* They are used by the initializer to select a default process overseer and an instance tag. 15 469**/ 15 470 15 471 dcl (NETWORK_CONNECTION_LOGIN initial (1), 15 472 NETWORK_CONNECTION_DSA_FILE_TRANSFER initial (2)) 15 473 fixed bin internal static options (constant); 15 474 15 475 /* END INCLUDE FILE ... login_server_messages.incl.pl1 */ 2063 2064 /* BEGIN INCLUDE FILE ... mc_anstbl.incl.pl1 */ 16 2 16 3 16 4 /****^ HISTORY COMMENTS: 16 5* 1) change(85-12-19,MSharpe), approve(87-05-25,MCR7690), 16 6* audit(87-03-30,GDixon), install(87-08-04,MR12.1-1056): 16 7* Added the pending and virtual flags and virtual_tty_name to mc_ate; 16 8* changed mc_ate.tty_name to mc_ate.real_tty_name; added mc_ate.ls_procid, 16 9* mc_ate.ls_term_ev_chn, mc_ate.ls_resp_ev_chn, mc_ate.ls_handle. 16 10* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 16 11* audit(87-06-01,Parisek), install(87-08-04,MR12.1-1056): 16 12* Add mc_ate.vchn_requires_accept in support of virtual channels. Explicitly 16 13* declare implicit pad fields which the compile adds for element alignment 16 14* purposes. Declare mc_ansp and mc_atep, on which major structures are 16 15* based, rather than depending upon includers do to so. 16 16* 3) change(87-03-27,Parisek), approve(87-05-25,MCR7690), 16 17* audit(87-06-11,GDixon), install(87-08-04,MR12.1-1056): 16 18* Added the dsa_ring_number element to provide a constant for determining 16 19* the DSA ring. 16 20* END HISTORY COMMENTS */ 16 21 16 22 16 23 /* format: style3,idind30 */ 16 24 16 25 dcl 1 mc_anstbl based (mc_ansp) aligned, 16 26 /* Structure of answer table */ 16 27 2 max_size fixed bin, /* max number of entries table can grow */ 16 28 2 current_size fixed bin, /* actual size of table (in entries) */ 16 29 2 mc_procid bit (36), /* process ID of message coordinator */ 16 30 2 sysdir char (168), /* name of main system control directory */ 16 31 2 pad_ptrs bit (36), 16 32 2 mrtp ptr, 16 33 2 vconsp ptr, 16 34 2 cons_cont_proc entry, /* mc_tty_ */ 16 35 2 con_rec, /* Data for console recovery. */ 16 36 3 mc_ate_ptr ptr, /* Pts to recovery device. */ 16 37 3 ec_id fixed bin (71), /* Recovery event chan. */ 16 38 3 seq_num fixed bin (35), /* Syserr sequence number. */ 16 39 3 offset bit (18), /* Log entry offset. */ 16 40 3 flags, 16 41 ( 4 enabled bit (1), /* ON => recovery possible. */ 16 42 4 active bit (1), 16 43 4 pad_flags bit (16) 16 44 ) unaligned, /* ON => recovery going on. */ 16 45 2 n_sources fixed bin, /* number of communicating sources */ 16 46 2 max_sources fixed bin, /* maximum number of sources allowed */ 16 47 2 current_time fixed bin (71), /* Time of last transaction */ 16 48 2 trace bit (1) aligned, 16 49 2 dsa_ring_number fixed bin, /* DSA ring number */ 16 50 2 pad_entries (30) bit (36) aligned, 16 51 2 entry (0 refer (mc_anstbl.current_size)) aligned like mc_ate, 16 52 mc_ansp ptr; 16 53 16 54 dcl 1 mc_ate based (mc_atep) aligned, 16 55 /* declaration of a single answer table entry */ 16 56 2 flags aligned, 16 57 3 virtual bit (1) unaligned, /* 1 => login -vchn XXX */ 16 58 3 pending bit (1) unaligned, /* 1 => pending entry created for DSA channel 16 59* since we can't keep info in cdte for it */ 16 60 3 active bit (1) unaligned, 16 61 3 the_system_console bit (1) unaligned, /* otw_/ocd_ */ 16 62 3 a_system_console bit (1) unaligned, /* Not yet implemented -- a random opc through a */ 16 63 /* nonexistent I/O module */ 16 64 3 pad001 bit (1) unaligned, 16 65 3 signed_on bit (1) unaligned, 16 66 3 reply_restricted bit (1) unaligned, 16 67 3 broadcast bit (1) unaligned, 16 68 3 broadcast_all bit (1) unaligned, 16 69 3 vchn_requires_accept bit (1) unaligned, 16 70 3 pad_flags bit (25) unaligned, 16 71 2 virtual_tty_name char (32) unaligned, 16 72 2 real_tty_name char (32) unaligned, 16 73 2 pad_ptrs bit (36), 16 74 2 cdtep pointer, /* we get info from cdt */ 16 75 2 iocb pointer, /* do I/O here */ 16 76 2 sci_ptr pointer, 16 77 2 tra_vec fixed bin, 16 78 2 restrict_reply char (32), /* Source name. if "", everybody. */ 16 79 /* Broadcasting information. */ 16 80 2 n_casts fixed bin, /* If flag is 1 */ 16 81 2 cast (10) char (32), /* If flag is 1, list of consoles. */ 16 82 2 oper_info, /* for oper assigned this console... */ 16 83 3 personid char (32), 16 84 3 last_input_time fixed bin (71), /* time of last input on this console... */ 16 85 2 queue_ptr ptr, 16 86 2 queue_event fixed bin (71), 16 87 2 event fixed binary (71), /* name of event call channel associated with TTY */ 16 88 2 ls_procid bit (36), /* ID of login_server who will wake us up with connect 16 89* and disconnect -- used only for network channels */ 16 90 2 pad_ev_chn bit (36), 16 91 2 ls_term_ev_chn fixed bin (71), /* event channel to send terminate response to ls */ 16 92 2 ls_resp_ev_chn fixed bin (71), /* event channel to send operator response to ls */ 16 93 2 ls_handle bit (72), /* login server handle for this connection */ 16 94 2 authority, 16 95 3 privilege (36) bit (1) unaligned, 16 96 2 control, 16 97 3 inhibit bit (1) unal, 16 98 3 output_wait bit (1) unal, 16 99 3 output_pending bit (1) unal, 16 100 3 pad_control bit (33) unal, 16 101 mc_atep ptr; 16 102 16 103 declare ( 16 104 MC_WAIT_DIALUP init (1), 16 105 MC_WAIT_ANSWERBACK init (2), 16 106 MC_WAIT_READY init (3), 16 107 MC_WAIT_COMMAND init (4) 16 108 ) fixed bin int static options (constant); 16 109 16 110 /* END INCLUDE FILE ... mc_anstbl.incl.pl1 */ 2064 2065 /* Begin include file mess_route_table.incl.pl1 */ 17 2 17 3 /* 17 4*Message Routing Table 17 5* 17 6*This table will be used by the protocol & router entries of the 17 7*message coordinator to match source (e.g. I/O Daemon, answering 17 8*service) -- stream (e.g. "user_i/o","error_output") combinations 17 9*with virtual consoles to which messages are to be directed. 17 10**/ 17 11 17 12 dcl 1 MRT aligned based(mrtp), /* header 4 words */ 17 13 2 lock bit(36), /* 0 */ 17 14 2 no_of_sources fixed bin, 17 15 2 flags bit(36), 17 16 2 pad1 fixed bin, 17 17 2 star_entry aligned, /* 4 * */ 17 18 3 source char(32), 17 19 3 hismess ptr, 17 20 3 no_of_streams fixed bin, 17 21 3 flags, 17 22 4 init bit(1) unal, 17 23 4 valid bit(1) unal, 17 24 4 unused bit(34) unal, 17 25 3 stream like stream aligned, /* 20 * str */ 17 26 2 source(16) aligned, /* source entry head 12 dec 14 oct words */ 17 27 3 source char(32), /* 220-1,2240-2,4260-3 */ 17 28 3 hismess ptr, 17 29 3 no_of_streams fixed bin, 17 30 3 flags, 17 31 4 init bit(1) unal, 17 32 4 valid bit(1) unal, 17 33 4 unused bit(34) unal, 17 34 3 stream(8) like stream aligned; 17 35 17 36 17 37 dcl 1 stream aligned based(streamp), /* 128dec 200 oct words */ 17 38 2 gumbo(28) fixed bin, /* This stuff is not used */ 17 39 2 ourmess ptr, 17 40 2 hismess ptr, 17 41 2 source char(32), 17 42 2 stream char(32), 17 43 2 source_index fixed bin, /* Our own address */ 17 44 2 stream_index fixed bin, 17 45 2 flags, 17 46 3 valid bit(1) unal, 17 47 3 read bit(1) unal, 17 48 3 write bit(1) unal, 17 49 3 active bit(1) unal, 17 50 3 more bit(1) unal, 17 51 3 unused bit(23) unal, 17 52 3 alarm bit (8) unal, 17 53 2 prev_trans, 17 54 3 first_block fixed bin, 17 55 3 end_block fixed bin, 17 56 3 current_block fixed bin, 17 57 3 offset fixed bin, 17 58 17 59 2 no_of_vcons fixed bin, 17 60 2 vcons(8) char(32), 17 61 2 vcons_index(8) fixed bin; 17 62 /* 17 63*MRT 17 64*lock 17 65*no_of_sources Number of source rows in this matrix. 17 66*flags 17 67*star_entry Contains default routing. 17 68*source The source rows 17 69*source Name of this source. 17 70*no_of_streams Number of stream columns that have 17 71* entries in this row. 17 72*flags 17 73*init "1"b -- This entry is for a source which 17 74* is currently attached & sending messages. 17 75*valid "1"b -- This entry contains correct information. 17 76*stream The virtual consoles for this element 17 77* of the matrix. 17 78* The Source Data Block, which 17 79* corresponds to the Stream Data 17 80* Block on the mrd side has been included 17 81* in the MRT. 17 82*gumbo Stream DB has stuff here we dont need. 17 83*ourmess Pointer to message seg for this 17 84* function (in this case mc_ ). 17 85*hismess Pointer to message seg for other 17 86* guy (in this case, the source). 17 87*source Name of this source 17 88*stream Name of this stream. 17 89*source_index in MRT 17 90*stream_index 17 91*flags 17 92*valid "1"b -- This entry contains correct information. 17 93*active "1"b -- This entry is for a stream which 17 94* is currently attached & sending messages. 17 95*alarm "1"b -- These messages are "alarm-class" messages. 17 96*prev_trans Information useful to mrd_util_ if more than 17 97* one read call is made. 17 98*first_block of the message 17 99*end_block of the message 17 100*current_block out of which we are taking text 17 101*offset of current character in current_block 17 102* 17 103*no_of_vcons 17 104*vcons Virtual consoles to which messages should 17 105* go when originating from this source 17 106* over this stream. 17 107*vcons-index Index in the virtual console table 17 108*ev_chn For waking up function waiting for 17 109* input. 17 110*messp Pointer to message segment if this is 17 111* input stream. 17 112**/ 17 113 17 114 /* End include file mess_route_table.incl.pl1 */ 2065 2066 /* BEGIN: sc_stat_.incl.pl1 * * * * * */ 18 2 18 3 18 4 /****^ HISTORY COMMENTS: 18 5* 1) change(87-02-04,GDixon), approve(87-05-25,MCR7690), 18 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 18 7* Add sc_stat_$vchn_requires_accept in support of DSA virtual channels. 18 8* 2) change(87-02-04,GDixon), approve(87-05-25,MCR7680), 18 9* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 18 10* Reorganized by type of data to improve readability. 18 11* END HISTORY COMMENTS */ 18 12 18 13 18 14 /* ACCESS NAMES */ 18 15 dcl ( 18 16 sc_stat_$exec_access_name, /* check MC access in an exec request */ 18 17 sc_stat_$unidentified_access_name /* check access if no one is logged in. */ 18 18 ) char(32) ext static; 18 19 18 20 /* PATHNAMES */ 18 21 dcl ( 18 22 sc_stat_$info_dir, /* admin info segs directory */ 18 23 sc_stat_$log_dir, /* as log segs directory */ 18 24 sc_stat_$mc_acs_dir, /* message coordinator ACS segments (.mcacs) dir */ 18 25 sc_stat_$sysdir /* system control directory */ 18 26 ) char(168) ext static; 18 27 18 28 /* OTHER CHAR STRINGS */ 18 29 dcl ( 18 30 sc_stat_$master_channel /* Master TTY channel. */ 18 31 ) char(6) aligned ext static; 18 32 18 33 /* LABELS */ 18 34 dcl ( 18 35 sc_stat_$admin_listener_exit_label, /* GO here to exit admin mode. Set to */ 18 36 /* ssu_$null_label unless */ 18 37 /* admin_listener is active. */ 18 38 sc_stat_$master_abort_label, /* GO here after fault that is not */ 18 39 /* attributable to a particular */ 18 40 /* command. */ 18 41 sc_stat_$system_shutdown_label /* GO here to shut down system */ 18 42 ) label variable ext static; 18 43 18 44 /* POINTERS TO */ 18 45 dcl ( 18 46 sc_stat_$admin_log_iocb, /* IOCB for admin log */ 18 47 sc_stat_$admin_log_write_ptr, /* DATA for log_write_ calls on the admin log */ 18 48 sc_stat_$admin_sci_ptr, /* DATA ssu_ for terminal currently executing */ 18 49 sc_stat_$as_log_write_ptr, /* DATA for log_write_ calls on as log, used */ 18 50 /* by sys_log_. */ 18 51 sc_stat_$initzer_ttyp, /* ENT mc_ate for initializer terminal */ 18 52 sc_stat_$master_iocb, /* IOCB for "master_i/o" */ 18 53 sc_stat_$master_sci_ptr, /* DATA ssu_ (permanent) for system control */ 18 54 sc_stat_$mc_ansp, /* HEAD of mc_anstbl */ 18 55 sc_stat_$mc_iocb, /* IOCB ptr for "mc_i/o" */ 18 56 sc_stat_$sv1_iocb, /* IOCB ptr for "severity1" */ 18 57 sc_stat_$sv2_iocb, /* IOCB ptr for "severity2" */ 18 58 sc_stat_$sv3_iocb /* IOCB ptr for "severity3" */ 18 59 ) ptr ext static; 18 60 18 61 /* SWITCHES */ 18 62 dcl ( 18 63 sc_stat_$Go, /* TRUE after answering service is listening*/ 18 64 sc_stat_$Go_typed, /* TRUE immediately after 'go' is typed */ 18 65 sc_stat_$Multics, /* TRUE after answering service started */ 18 66 sc_stat_$Multics_typed, /* TRUE immediately after 'mult' is typed */ 18 67 sc_stat_$Star_typed, /* TRUE if 'mult' and 'go' came from 'star' */ 18 68 sc_stat_$admin_listener_switch, /* TRUE if in the admin listener */ 18 69 sc_stat_$did_part1, /* TRUE if part 1 of system startup ec done */ 18 70 sc_stat_$did_part2, /* TRUE if part 2 of system startup ec done */ 18 71 sc_stat_$did_part3, /* TRUE if part 3 of system startup ec done */ 18 72 sc_stat_$mc_is_on, /* TRUE if message coordinator running */ 18 73 sc_stat_$no_operator_login, /* TRUE if operator login not required, or */ 18 74 /* if PNT not yet available. */ 18 75 sc_stat_$shutdown_typed, /* TRUE if 'shutdown' command in progress. */ 18 76 sc_stat_$test_mode, /* TRUE if in test environment */ 18 77 sc_stat_$vchn_requires_accept /* TRUE if vchn may only be used if accepted*/ 18 78 /* by operator signed on system console*/ 18 79 ) bit(1) aligned ext static; 18 80 18 81 18 82 /* END OF: sc_stat_.incl.pl1 * * * * * */ 2066 2067 /* BEGIN: sc_subsystem_info_.incl.pl1 * * * * * */ 19 2 19 3 /* format:style3,idind30 */ 19 4 19 5 /* Created 1984-10-24 BIM */ 19 6 /* Modified 1985-01-07, BIM: access control flags that track admin and X */ 19 7 /* Modified 1985-02-18, E. Swenson to save away abort_line procedure. */ 19 8 19 9 19 10 /****^ HISTORY COMMENTS: 19 11* 1) change(87-02-17,GDixon), approve(87-07-03,MCR7680), 19 12* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 19 13* Correct formatting problems. Add sc_subsystem_info.flags.dont_mask_calls 19 14* switch. 19 15* 2) change(87-07-03,GDixon), approve(87-07-03,MCR7680), 19 16* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 19 17* Removed dont_mask_calls flag. It is no longer needed to correctly perform 19 18* masking on a per-request basis. 19 19* END HISTORY COMMENTS */ 19 20 19 21 19 22 declare sc_subsystem_info_ptr pointer; 19 23 declare 1 sc_subsystem_info aligned based (sc_subsystem_info_ptr), 19 24 2 restriction_flags bit (36) aligned, /* copied from mc atep or fabricated */ 19 25 2 flags aligned, 19 26 3 no_real_tty bit (1) unaligned, /* for sc_admin_command_ */ 19 27 3 print_ready bit (1) unal, /* on for all except the system console, */ 19 28 /* instructs sc_process_command_line_ to deal */ 19 29 /* with the prompt */ 19 30 3 the_system_console bit (1) unal, /* syserr messages are printed here (but console */ 19 31 /* recover doesn't try to fix this) copied here */ 19 32 /* from the mc_ate to save other looking in there*/ 19 33 3 printer_offed bit (1) unal, /* suppress logging */ 19 34 3 pad bit (32) unaligned, 19 35 2 source_name char (32) unaligned, 19 36 2 area_ptr pointer, 19 37 2 mc_atep pointer, /* needed to play with attachments */ 19 38 2 real_iocb pointer, /* for sc_signal_io_handler_ */ 19 39 2 hangup_entry entry (pointer) variable, 19 40 /* called on io_no_permission. */ 19 41 2 real_execute_line entry (ptr, ptr, fixed bin (21), fixed bin (35)), 19 42 2 real_locate_request entry (ptr, char (*), ptr, fixed bin (35)), 19 43 2 access_control_name char (32) unaligned, 19 44 2 real_invoke_request entry, /* since MR11 ssu_ lacks the ability to abort a */ 19 45 /* single request, we have an invoke_request that*/ 19 46 /* handles a condition to unwind the request */ 19 47 2 abort_request_label label, /* go here (nonlocally) to unwind a single request */ 19 48 2 real_abort_line entry options (variable); 19 49 19 50 declare sc_ss_area area based (sc_subsystem_info.area_ptr); 19 51 19 52 /* The following defines the user flags for the request table. */ 19 53 19 54 declare sc_rf_ptr pointer; 19 55 declare 1 sc_request_flags unaligned based (sc_rf_ptr), 19 56 2 dont_parse_arguments bit, /* reply, intercom */ 19 57 2 obsolete bit, /* warn opr to not use it */ 19 58 2 dont_mask_calls bit, /* this runs without masking ev calls */ 19 59 2 requires_as bit, /* not before AS */ 19 60 2 requires_no_as bit, /* only before AS */ 19 61 2 complete_disks_first bit, /* try to mount disks */ 19 62 2 no_login_needed bit, /* sign_on */ 19 63 2 pad bit (5), 19 64 2 restriction_type fixed bin (6) unsigned; 19 65 /* index into restriction flag string */ 19 66 19 67 19 68 /* END OF: sc_subsystem_info_.incl.pl1 * * * * * */ 2067 2068 /* BEGIN INCLUDE FILE sys_log_constants.incl.pl1 ... 82-09-24 E. N. Kittlitz */ 20 2 20 3 20 4 /****^ HISTORY COMMENTS: 20 5* 1) change(87-04-22,GDixon), approve(87-06-10,MCR7708), 20 6* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 20 7* Added sl_info structure and associated named constants for use in calling 20 8* sys_log_$general. 20 9* END HISTORY COMMENTS */ 20 10 20 11 20 12 /* format: style4 */ 20 13 20 14 dcl ( 20 15 SL_TYPE_CRASH init (-3), /* type message with banner & kill system */ 20 16 SL_TYPE_BEEP init (-2), /* type message with banner */ 20 17 SL_TYPE init (-1), /* type message */ 20 18 SL_LOG_SILENT init (0), /* log message */ 20 19 SL_LOG init (1), /* log & type message */ 20 20 SL_LOG_BEEP init (2), /* log & type message with banner */ 20 21 SL_LOG_CRASH init (3) /* log & type message with banner & kill system */ 20 22 ) fixed bin internal static options (constant); 20 23 20 24 dcl 1 sl_info aligned automatic, 20 25 2 version char(8), /* structure version */ 20 26 2 arg_list_ptr ptr, /* arg_list with values */ 20 27 2 loc, 20 28 3 (mode, severity, code, caller, data, class, ioa_msg) fixed bin, 20 29 /* These flags control where the corresponding data item is found.*/ 20 30 /* -1: data appears in the corresponding structure element below */ 20 31 /* 0: data is not present anywhere */ 20 32 /* +N: data is Nth item in argument list pointed to by */ 20 33 /* sl_info.arg_list_ptr. Upon return, data copied into */ 20 34 /* corresponding structure element. */ 20 35 /* if data = +N: */ 20 36 /* argN is data_ptr, argN+1 is data_len */ 20 37 /* if ioa_msg = +N: */ 20 38 /* argN+1, ... argLAST are arguments substituted into the */ 20 39 /* ioa_msg control string. The formatted msg is returned. */ 20 40 2 flags, 20 41 3 ioa_msg_is_error_code bit(1) unal, /* ioa_ctl is error code. */ 20 42 3 flags_pad bit(35) unal, 20 43 2 mode fixed bin, /* as-mode, command-mode */ 20 44 2 severity fixed bin, /* error severity */ 20 45 2 code fixed bin(35), /* error table code */ 20 46 2 caller char(65) varying, /* caller refname$entryname*/ 20 47 2 data, /* binary data ptr/length */ 20 48 3 data_ptr ptr, 20 49 3 data_lth fixed bin(21), 20 50 2 class char(10) varying, /* binary data class */ 20 51 2 ioa_msg char(500) varying; /* formatted message text */ 20 52 20 53 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 54 /* */ 20 55 /* If data values (eg, sl_info.caller) are passed in the argument list, */ 20 56 /* their data types should be as shown in the structure above, except that */ 20 57 /* character strings should be char(*) nonvarying. */ 20 58 /* */ 20 59 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 60 20 61 /* value for sl_info.version */ 20 62 dcl SL_INFO_version_1 char (8) int static options(constant) init("sl_info1"); 20 63 20 64 /* values for sl_info.mode */ 20 65 dcl (SL_INFO_as_mode init(1), 20 66 SL_INFO_command_mode init(2)) fixed bin int static options(constant); 20 67 20 68 /* values for sl_info.loc.(severity code caller data class ioa_ctl arg) */ 20 69 dcl (SL_INFO_arg_given_in_structure init(-1), 20 70 SL_INFO_arg_not_given init(0)) fixed bin int static options(constant); 20 71 20 72 20 73 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 74 /* */ 20 75 /* The following static structures are commonly used in the Login Server */ 20 76 /* user control software. */ 20 77 /* */ 20 78 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 20 79 20 80 /* Syntax: call Abort (severity, code, ioa_ctl, args); */ 20 81 20 82 dcl 1 sl_info_sev_code_msg aligned int static options(constant), 20 83 2 version char(8) init ("sl_info1"), 20 84 2 arg_list_ptr ptr init (null), 20 85 2 loc, 20 86 3 (mode init (-1), 20 87 severity init ( 1), 20 88 code init ( 2), 20 89 caller init (-1), 20 90 data init ( 0), 20 91 class init ( 0), 20 92 ioa_msg init ( 3)) fixed bin, 20 93 2 flags, 20 94 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 20 95 3 flags_pad bit(35) unal init ("0"b), 20 96 2 mode fixed bin init ( 1), 20 97 2 severity fixed bin init ( 0), 20 98 2 code fixed bin(35) init ( 0), 20 99 2 caller char(65) varying init (""), 20 100 2 data, 20 101 3 data_ptr ptr init (null), 20 102 3 data_lth fixed bin(21) init ( 0), 20 103 2 class char(10) varying init (""), 20 104 2 ioa_msg char(500) varying init (""); 20 105 20 106 /* Syntax: call Abort (severity, ioa_ctl, args); */ 20 107 20 108 dcl 1 sl_info_sev_msg aligned int static options(constant), 20 109 2 version char(8) init ("sl_info1"), 20 110 2 arg_list_ptr ptr init (null), 20 111 2 loc, 20 112 3 (mode init (-1), 20 113 severity init ( 1), 20 114 code init ( 0), 20 115 caller init (-1), 20 116 data init ( 0), 20 117 class init ( 0), 20 118 ioa_msg init ( 2)) fixed bin, 20 119 2 flags, 20 120 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 20 121 3 flags_pad bit(35) unal init ("0"b), 20 122 2 mode fixed bin init ( 1), 20 123 2 severity fixed bin init ( 0), 20 124 2 code fixed bin(35) init ( 0), 20 125 2 caller char(65) varying init (""), 20 126 2 data, 20 127 3 data_ptr ptr init (null), 20 128 3 data_lth fixed bin(21) init ( 0), 20 129 2 class char(10) varying init (""), 20 130 2 ioa_msg char(500) varying init (""); 20 131 20 132 /* Syntax: call Abort (severity, ioa_ctl_as_error_code, args); */ 20 133 20 134 dcl 1 sl_info_sev_coded_msg aligned int static options(constant), 20 135 2 version char(8) init ("sl_info1"), 20 136 2 arg_list_ptr ptr init (null), 20 137 2 loc, 20 138 3 (mode init (-1), 20 139 severity init ( 1), 20 140 code init ( 0), 20 141 caller init (-1), 20 142 data init ( 0), 20 143 class init ( 0), 20 144 ioa_msg init ( 2)) fixed bin, 20 145 2 flags, 20 146 3 ioa_msg_is_error_code bit(1) unal init ("1"b), 20 147 3 flags_pad bit(35) unal init ("0"b), 20 148 2 mode fixed bin init ( 1), 20 149 2 severity fixed bin init ( 0), 20 150 2 code fixed bin(35) init ( 0), 20 151 2 caller char(65) varying init (""), 20 152 2 data, 20 153 3 data_ptr ptr init (null), 20 154 3 data_lth fixed bin(21) init ( 0), 20 155 2 class char(10) varying init (""), 20 156 2 ioa_msg char(500) varying init (""); 20 157 20 158 20 159 /* Syntax: call Abort (severity, code, error_return_label, ioa_ctl, args); */ 20 160 20 161 dcl 1 sl_info_sev_code_label_msg aligned int static options(constant), 20 162 2 version char(8) init ("sl_info1"), 20 163 2 arg_list_ptr ptr init (null), 20 164 2 loc, 20 165 3 (mode init (-1), 20 166 severity init ( 1), 20 167 code init ( 2), 20 168 caller init (-1), 20 169 data init ( 0), 20 170 class init ( 0), 20 171 ioa_msg init ( 4)) fixed bin, 20 172 2 flags, 20 173 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 20 174 3 flags_pad bit(35) unal init ("0"b), 20 175 2 mode fixed bin init ( 1), 20 176 2 severity fixed bin init ( 0), 20 177 2 code fixed bin(35) init ( 0), 20 178 2 caller char(65) varying init (""), 20 179 2 data, 20 180 3 data_ptr ptr init (null), 20 181 3 data_lth fixed bin(21) init ( 0), 20 182 2 class char(10) varying init (""), 20 183 2 ioa_msg char(500) varying init (""); 20 184 20 185 /* Syntax: call Log_error (code, ioa_ctl, args); */ 20 186 20 187 dcl 1 sl_info_code_msg aligned int static options(constant), 20 188 2 version char(8) init ("sl_info1"), 20 189 2 arg_list_ptr ptr init (null), 20 190 2 loc, 20 191 3 (mode init (-1), 20 192 severity init (-1), 20 193 code init ( 1), 20 194 caller init (-1), 20 195 data init ( 0), 20 196 class init ( 0), 20 197 ioa_msg init ( 2)) fixed bin, 20 198 2 flags, 20 199 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 20 200 3 flags_pad bit(35) unal init ("0"b), 20 201 2 mode fixed bin init ( 1), 20 202 2 severity fixed bin init ( 0), 20 203 2 code fixed bin(35) init ( 0), 20 204 2 caller char(65) varying init (""), 20 205 2 data, 20 206 3 data_ptr ptr init (null), 20 207 3 data_lth fixed bin(21) init ( 0), 20 208 2 class char(10) varying init (""), 20 209 2 ioa_msg char(500) varying init (""); 20 210 20 211 20 212 /* Syntax: call Trace (ioa_ctl, args); */ 20 213 20 214 dcl 1 sl_info_msg aligned int static options(constant), 20 215 2 version char(8) init ("sl_info1"), 20 216 2 arg_list_ptr ptr init (null), 20 217 2 loc, 20 218 3 (mode init (-1), 20 219 severity init (-1), 20 220 code init ( 0), 20 221 caller init (-1), 20 222 data init ( 0), 20 223 class init ( 0), 20 224 ioa_msg init ( 1)) fixed bin, 20 225 2 flags, 20 226 3 ioa_msg_is_error_code bit(1) unal init ("0"b), 20 227 3 flags_pad bit(35) unal init ("0"b), 20 228 2 mode fixed bin init ( 1), 20 229 2 severity fixed bin init ( 0), 20 230 2 code fixed bin(35) init ( 0), 20 231 2 caller char(65) varying init (""), 20 232 2 data, 20 233 3 data_ptr ptr init (null), 20 234 3 data_lth fixed bin(21) init ( 0), 20 235 2 class char(10) varying init (""), 20 236 2 ioa_msg char(500) varying init (""); 20 237 20 238 /* END INCLUDE FILE sys_log_constants.incl.pl1 */ 2068 2069 /* ====== BEGIN INCLUDE SEGMENT syscon_mseg.incl.pl1 ====================================== */ 21 2 21 3 21 4 21 5 /****^ HISTORY COMMENTS: 21 6* 1) change(87-09-02,Parisek), approve(87-09-03,MECR0005), 21 7* audit(87-09-02,GDixon), install(87-09-03,MR12.1-1098): 21 8* Increase quit_bits from 72 bits to 504 bits so more than 72 sources 21 9* may enable quit without error. (phx20974) 21 10* END HISTORY COMMENTS */ 21 11 21 12 21 13 /* Message Coordinator message segment declaration. Each daemon process 21 14* enqueues its messages in a segment like this one. 21 15* 21 16* The segment consists of a header followed by many message blocks, 21 17* each capable of holding a message of 132 characters plus 21 18* information on when the message was sent, who it's from, etc. 21 19* These blocks are "allocated" only as needed and placed on a free 21 20* storage list when freed. Blocks in use are chained together in a 21 21* first-in-first-out queue. */ 21 22 21 23 dcl buff_len fixed bin init (132) internal static; 21 24 21 25 dcl 1 syscon_mseg aligned based, /* This header is of length 24 dec 30 oct words */ 21 26 2 mlock bit (36) aligned, 21 27 2 current_process_id bit (36), 21 28 2 ipc_el, /* mrdim_ blocks on this list for normal reads */ 21 29 3 n fixed bin, 21 30 3 pad fixed bin, 21 31 3 channel fixed bin (71), 21 32 2 proto_el, /* mrdim_ blocks on this list for attach and detach */ 21 33 3 n fixed bin, 21 34 3 pad fixed bin, 21 35 3 channel fixed bin (71), 21 36 2 flags unaligned, 21 37 3 test_mode bit (1), /* ON if running in test environment */ 21 38 3 receiver_woken bit (1), /* ON if wakeup sent but not received yet */ 21 39 3 unused bit (34), 21 40 2 first_message fixed bin, /* index of head of message chain */ 21 41 2 last_message fixed bin, /* index of tail of message chain */ 21 42 2 first_proto fixed bin, /* index of head of protocol chain */ 21 43 2 last_proto fixed bin, /* index of tail of protocol chain */ 21 44 2 first_free_buffer fixed bin, /* head of free chain */ 21 45 2 last_assigned_buffer fixed bin, /* high water mark of buffers ever used */ 21 46 2 no_of_streams fixed bin, 21 47 2 quit_bits bit (504), /* used in mc.message to mark a source waiting to be quit */ 21 48 2 locked_by_pid bit (36), /* process id of locker */ 21 49 2 mescount fixed bin, /* Count of unprinted messages */ 21 50 2 output_wait bit (1), /* TRUE if in output wait - mc_wakeups resets */ 21 51 2 pad fixed bin, 21 52 2 message (1) like message_block aligned; /* the array of messages */ 21 53 21 54 dcl 1 message_block aligned based (messp), /* 56 dec 70 oct words */ 21 55 2 time_sent fixed bin (71), 21 56 2 from_source char (32), 21 57 2 from_stream char (32), 21 58 2 source_index fixed bin, /* index in MRT */ 21 59 2 stream_index fixed bin, /* .. */ 21 60 2 next_message fixed bin, /* foward pointer of message chain */ 21 61 2 flags unal, 21 62 3 continue bit (1), /* ON if message continued in next block */ 21 63 3 introduction bit (1), /* ON if message is an introduction */ 21 64 3 farewell bit (1), /* ON if message is farewell */ 21 65 3 sentinel bit (1), /* ON if special formatting wanted */ 21 66 3 trace bit (1), /* used only by dump_msg */ 21 67 3 unused bit (31) unal, 21 68 2 length fixed bin, /* number of characters in body */ 21 69 2 message_body char (132); /* text of message */ 21 70 21 71 dcl 1 debug_info based aligned, 21 72 2 flag fixed bin (71), 21 73 2 time fixed bin (71), 21 74 2 last_pid bit (36), 21 75 2 first_msg fixed bin, 21 76 2 last_msg fixed bin, 21 77 2 first_pro fixed bin, 21 78 2 last_pro fixed bin, 21 79 2 free_chain fixed bin; 21 80 21 81 /* ------ END INCLUDE SEGMENT syscon_mseg.incl.pl1 -------------------------------------- */ 2069 2070 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 22 2 22 3 22 4 /****^ HISTORY COMMENTS: 22 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 22 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 22 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 22 8* attribute switches. 22 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 22 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 22 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 22 12* be deleted. 22 13* B) Add constants identifying attributes that can be changed by user at 22 14* login, etc. 22 15* END HISTORY COMMENTS */ 22 16 22 17 22 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 22 19 22 20 /* format: style4 */ 22 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 22 22 (2 administrator bit (1), /* 1 system administrator privileges */ 22 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 22 24 2 nobump bit (1), /* 2 user cannot be bumped */ 22 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 22 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 22 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 22 28* . of same project (distinct from "nobump") */ 22 29 2 nolist bit (1), /* 7 don't list user on "who" */ 22 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 22 31 2 multip bit (1), /* 9 user may have several processes */ 22 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 22 33 2 brief bit (1), /* 11 no login or logout message */ 22 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 22 35 2 vhomedir bit (1), /* 13 user may change homedir */ 22 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 22 37 2 sb_ok bit (1), /* 15 user may be standby */ 22 38 2 pm_ok bit (1), /* 16 user may be primary */ 22 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 22 40 2 daemon bit (1), /* 18 user may login as daemon */ 22 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 22 42 2 no_warning bit (1), /* 20 no warning message */ 22 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 22 44* . in PDT: this user has an individual load control group */ 22 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 22 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 22 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 22 48 2 pad bit (12)) unaligned; 22 49 22 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 22 51 ("none", /* 0 */ 22 52 "administrator", /* 1 */ 22 53 "primary_line", /* 2 */ 22 54 "nobump", /* 3 */ 22 55 "guaranteed_login", /* 4 */ 22 56 "anonymous", /* 5 */ 22 57 "nopreempt", /* 6 */ 22 58 "nolist", /* 7 */ 22 59 "dialok", /* 8 */ 22 60 "multip", /* 9 */ 22 61 "bumping", /* 10 */ 22 62 "brief", /* 11 */ 22 63 "vinitproc", /* 12 */ 22 64 "vhomedir", /* 13 */ 22 65 "nostartup", /* 14 */ 22 66 "no_secondary", /* 15 */ 22 67 "no_prime", /* 16 */ 22 68 "no_eo", /* 17 */ 22 69 "daemon", /* 18 */ 22 70 "", /* 19 vdim OBSOLETE */ 22 71 "no_warning", /* 20 */ 22 72 "igroup", /* 21 */ 22 73 "save_pdir", /* 22 */ 22 74 "disconnect_ok", /* 23 */ 22 75 "save_on_disconnect"); /* 24 */ 22 76 22 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 22 78 ("null", /* 0 */ 22 79 "admin", /* 1 */ 22 80 "", "", /* 2 - 3 */ 22 81 "guar", /* 4 */ 22 82 "anon", /* 5 */ 22 83 "", "", /* 6 - 7 */ 22 84 "dial", /* 8 */ 22 85 "multi_login", /* 9 */ 22 86 "preempting", /* 10 */ 22 87 "", /* 11 */ 22 88 "v_process_overseer", /* 12 */ 22 89 "v_home_dir", /* 13 */ 22 90 "no_start_up", /* 14 */ 22 91 "no_sec", /* 15 */ 22 92 "no_primary", /* 16 */ 22 93 "no_edit_only", /* 17 */ 22 94 "op_login", /* 18 */ 22 95 "", /* 19 */ 22 96 "nowarn", /* 20 */ 22 97 "", "", "", /* 21 - 23 */ 22 98 "save"); /* 24 */ 22 99 22 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 22 101 options(constant) init("000000000010000000010000000000000000"b); 22 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 22 103 22 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 22 105 options(constant) init("000000000010000000010000000000000000"b); 22 106 /* PDT value for (brief, no_warning) is default */ 22 107 22 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 22 109 options(constant) init("000100000110010000010000000000000000"b); 22 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 22 111 23 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 23 2 23 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 23 4 /* */ 23 5 /* This include file describes the attributes of an absentee job. It is */ 23 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 23 7 /* and PIT.incl.pl1. */ 23 8 /* */ 23 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 23 10 23 11 /****^ HISTORY COMMENTS: 23 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 23 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 23 14* Separated abs_attributes from the request structure 23 15* (abs_message_format.incl.pl1) so that the identical structure could be 23 16* used in the ute structure (user_table_entry.incl.pl1). 23 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 23 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 23 19* Added ABS_ATTRIBUTE_NAMES array. 23 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 23 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 23 22* Added the no_start_up flag. SCP6367 23 23* END HISTORY COMMENTS */ 23 24 23 25 dcl 1 user_abs_attributes aligned based, 23 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 23 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 23 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 23 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 23 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 23 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 23 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 23 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 23 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 23 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 23 36 2 attributes_pad bit (26) unaligned; 23 37 23 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 23 39 "restartable", 23 40 "user_deferred_until_time", 23 41 "proxy", 23 42 "set_bit_cnt", 23 43 "time_in_gmt", 23 44 "user_deferred_indefinitely", 23 45 "secondary_ok", 23 46 "truncate_absout", 23 47 "restarted", 23 48 "no_start_up"); 23 49 23 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 23 51 22 112 22 113 22 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 2070 2071 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 24 2 24 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 24 4 /* */ 24 5 /* This include file requires that the user include */ 24 6 /* user_attributes.incl.pl1 as well. It also includes */ 24 7 /* abs_attributes.incl.pl1 itself. */ 24 8 /* */ 24 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 24 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 24 11 /* */ 24 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 24 13 24 14 /****^ HISTORY COMMENTS: 24 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 24 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 24 17* This comment for hcom. 24 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 24 19* anstbl.incl.pl1, and dutbl.incl.pl1. 24 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 24 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 24 22* 84-07-12 BIM added min_process_authorization 24 23* 84-12-31 Keith Loepere added pdir_dir_quota 24 24* 85-01-16 by E. Swenson to add ute.session_uid 24 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 24 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 24 27* Added fields for DSA login server support. 24 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 24 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 24 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 24 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 24 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 24 33* Added disconnection_rel_minutes. 24 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 24 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 24 36* Changed structure under ute.abs_attributes to use like structure in 24 37* abs_attributes.incl.pl1. This allows the same attributes to be used 24 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 24 39* file. 24 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 24 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 24 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 24 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 24 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 24 45* A) Global reorganization to locate things by type of data. 24 46* B) Eliminate ute.uflags.logged_in. 24 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 24 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 24 49* A) Reduced overlength person and project fields to proper length. 24 50* B) Adjusted dialed-console section to begin on even word boundary. 24 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 24 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 24 53* Add ute.line_type. 24 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 24 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 24 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 24 57* for the storage. SCP6367 24 58* END HISTORY COMMENTS */ 24 59 24 60 /* format: style4 */ 24 61 24 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 24 63 /* */ 24 64 /* Each of the named sections below defines a type of data. Typing comes */ 24 65 /* from data associated with the ute entry itself, with the person, with */ 24 66 /* login argument data, from the main user of the data (eg, dialup_, */ 24 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 24 68 /* and is an even number of words long. The total structure is 300 decimal */ 24 69 /* words long. */ 24 70 /* */ 24 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 24 72 24 73 24 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 24 75 24 76 dcl utep pointer automatic init (null); 24 77 24 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 24 79 24 80 /* Variables which give state of this entry */ 24 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 24 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 24 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 24 84 2 next_free fixed bin, /* points to previous free entry */ 24 85 24 86 /* Information user gave about person_id associated with this entry. */ 24 87 2 person char (24) unal, /* user's name */ 24 88 2 project char (12) unal, /* project of absentee user */ 24 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 24 90 2 tag_pad bit (27) unal, 24 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 24 92 2 login_flags, /* flags for login data */ 24 93 3 cpw bit (1) unal, /* flag for wish to change password */ 24 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 24 95 3 special_pw unal, /* dial or slave */ 24 96 4 dial_pw bit (1) unal, /* true if dial -user */ 24 97 4 slave_pw bit (1) unal, /* true if slave -user */ 24 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 24 99 3 cda bit (1) unal, /* flag to change default authorization */ 24 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 24 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 24 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 24 103 3 pw_pad bit (25) unal, /* spare parts */ 24 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 24 105 /* Must remain last in pw_flags so it does not */ 24 106 /* appear in PW_FLAG_VALUES array below. */ 24 107 2 generated_pw char (8) unal, /* user must type this as new password */ 24 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 24 109 2 process_authorization bit (72), /* access_authorization of this process */ 24 110 24 111 /* Information user gave about process associated with this entry. */ 24 112 2 outer_module char (32) unal, /* Name of console dim */ 24 113 2 home_dir char (64) unal, /* initial home directory */ 24 114 2 init_proc char (64) unal, /* name of login responder */ 24 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 24 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 24 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 24 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 24 119 2 initial_ring fixed bin, /* ring process will be started in */ 24 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 24 121 2 ln_args fixed bin, /* length of string containing arguments */ 24 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 24 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 24 124 24 125 /* Most of the following information is relevant only to absentee processes */ 24 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 24 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 24 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 24 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 24 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 24 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 24 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 24 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 24 134* (but see uflags.adjust_abs_q_no). */ 24 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 24 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 24 137 2 abs_flags, 24 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 24 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 24 140 3 abs_flags_pad bit (34) unal, 24 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 24 142 2 sender char (32) unal, /* name of RJE station that job is from */ 24 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 24 144 2 proxy_project char (9) unal, 24 145 2 proxy_project_pad char (3) unal, 24 146 2 abs_pad fixed bin, 24 147 24 148 /* Information about process actually created */ 24 149 2 proc_id bit (36), /* process id of absentee process */ 24 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 24 151 2 process_authorization_range (2) bit (72) aligned, 24 152 2 audit bit (36), /* audit flags for user */ 24 153 2 lot_size fixed bin, /* Size of linkage offset table */ 24 154 2 kst_size fixed bin, /* Size of process known segment table */ 24 155 2 cls_size fixed bin, /* Size of process combined linkage */ 24 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 24 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 24 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 24 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 24 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 24 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 24 162 2 pdir_pad fixed bin(17) unal, 24 163 2 process_pad fixed bin, 24 164 24 165 /* Information about primary terminal associated with this entry */ 24 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 24 167 2 terminal_type char (32) unaligned, /* terminal type */ 24 168 2 line_type fixed bin, /* line type */ 24 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 24 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 24 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 24 172 24 173 /* Variables useful for dialed terminals */ 24 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 24 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 24 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 24 177 2 dial_server_flags, 24 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 24 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 24 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 24 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 24 182 24 183 /* Information about usage/accounting. Device usage meters are in a 24 184* separate segment, "devtab" */ 24 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 24 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 24 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 24 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 24 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 24 190 2 last_update_time fixed bin (71), /* time of last account update */ 24 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 24 192 2 ndevices fixed bin, /* Count of attached devices */ 24 193 2 device_head fixed bin, /* Table index of head of device chain */ 24 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 24 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 24 196 2 rs_number_pad bit(30) unal, 24 197 2 usage_pad fixed bin, 24 198 24 199 /* Information for dialup_ (control variables). */ 24 200 2 event fixed bin (71), /* event associated with channel or user manager */ 24 201 2 uprojp ptr, /* ptr to user project sat entry */ 24 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 24 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 24 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 24 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 24 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 24 207 2 count fixed bin, /* counter for logins and dialups */ 24 208 2 n_processes fixed bin, /* number of processes created in this session */ 24 209 2 lock_value fixed bin, /* number of locks set for this entry */ 24 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 24 211 2 login_code char (8) unal, /* login command from LOGIN line */ 24 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 24 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 24 214 2 logout_type char (4) unal, /* type of logout */ 24 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 24 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 24 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 24 218 2 work_class fixed bin, /* work class used by priority scheduler */ 24 219 2 group char (8) unal, /* party group identifier */ 24 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 24 221 24 222 2 uflags, /* Miscellaneous flags */ 24 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 24 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 24 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 24 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 24 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 24 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 24 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 24 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 24 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 24 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 24 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 24 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 24 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 24 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 24 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 24 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 24 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 24 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 24 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 24 242 3 uflags_pad bit (17) unal, 24 243 24 244 /* Information used by load_ctl_ for the process */ 24 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 24 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 24 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 24 248 24 249 24 250 /* Information for login server */ 24 251 2 login_server_info, 24 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 24 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 24 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 24 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 24 256 3 process_id bit (36) aligned, /* process_id of login server */ 24 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 24 258 24 259 /* values for ute.process_type */ 24 260 24 261 dcl (PT_INTERACTIVE initial (1), 24 262 PT_ABSENTEE initial (2), 24 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 24 264 24 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 24 266 "INVALID-TYPE", 24 267 "interactive", 24 268 "absentee", 24 269 "daemon"); 24 270 24 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 24 272 "UNKNOWN-TABLE", 24 273 "answer_table", 24 274 "absentee_user_table", 24 275 "daemon_user_table"); 24 276 24 277 24 278 /* values for ute.pw_flags.mask_ctl */ 24 279 24 280 dcl (DO_MASK init ("00"b), 24 281 DONT_MASK init ("01"b), 24 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 24 283 24 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 24 285 "do_mask", "dont_mask", "derive_mask", ""); 24 286 24 287 24 288 /* names for ute.pw_flags */ 24 289 24 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 24 291 "cpw", 24 292 "generate_pw", 24 293 "dial_pw", 24 294 "slave_pw", 24 295 "cdp", 24 296 "cda", 24 297 "auth_given", 24 298 "noprint", 24 299 "operator"); 24 300 24 301 /* names for ute.uflags */ 24 302 24 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 24 304 "dont_call_init_admin", 24 305 "ip_given", 24 306 "ss_given", 24 307 "lvs_attached", 24 308 "send_initial_string", 24 309 "adjust_abs_q_no", 24 310 "foreground_secondary_ok", 24 311 "foreground_job", 24 312 "sus_sent", 24 313 "suspended", 24 314 "ignore_cpulimit", 24 315 "deferral_logged", 24 316 "save_if_disconnected", 24 317 "disconnected", 24 318 "disconnected_list", 24 319 "proc_create_ok", 24 320 "activity_can_unbump", 24 321 "fpe_causes_logout", 24 322 "user_specified_immediate"); 24 323 24 324 /* names for ute.abs_flags */ 24 325 24 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 24 327 "abs_run", 24 328 "notify"); 24 329 24 330 /* names of ute.dial_server_flags */ 24 331 24 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 24 333 "registered", 24 334 "privileged"); 24 335 24 336 /* values of ute.login_result */ 24 337 24 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 24 339 "logged in", 24 340 "login failed, hangup", 24 341 "login failed, try again"); 24 342 24 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 2071 2072 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 25 2 25 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 25 4 /* */ 25 5 /* This include file declares the header shared by the answer_table, */ 25 6 /* absentee_user_table and daemon_user_table include files. */ 25 7 /* */ 25 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 25 9 25 10 /****^ HISTORY COMMENTS: 25 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 25 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 25 13* Initial coding. 25 14* END HISTORY COMMENTS */ 25 15 25 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 25 17 2 header_version fixed bin, /* version of the header (3) */ 25 18 2 entry_version fixed bin, /* version of user table entries */ 25 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 25 20 2 header_length fixed bin, /* length of the header */ 25 21 2 max_size fixed bin, /* max number of entries in this table */ 25 22 2 current_size fixed bin, /* actual size of table (in entries) */ 25 23 2 number_free fixed bin, /* number of free entries in the table. */ 25 24 2 first_free fixed bin, /* index of first entry in the free list. */ 25 25 2 as_procid bit (36), /* process ID of user table manager process */ 25 26 2 ut_header_pad fixed bin; 25 27 25 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 2072 2073 /* BEGIN INCLUDE FILE vcons_tab.incl.pl1 */ 26 2 /* 26 3*Virtual Console Table 26 4* 26 5*Associates virtual consoles with physical devices and/or log 26 6*segments. */ 26 7 26 8 26 9 dcl 1 vcons_tab aligned based based(vconsp), /* header 4 words */ 26 10 2 lock bit(36), 26 11 2 no_of_vcons fixed bin, 26 12 2 flags bit(36), 26 13 2 pad1 fixed bin, 26 14 2 star_entry like vcons aligned, 26 15 2 vcons(32) like vcons aligned; 26 16 26 17 dcl 1 vcons aligned based(vcep), /* This header 10 dec 12 oct words */ 26 18 2 vcons char(32), 26 19 2 no_of_dest fixed bin, 26 20 2 flags, 26 21 3 inuse bit(1) unal, 26 22 3 unused bit(35) unal, 26 23 2 dest(8) aligned, /* 12 dec 14 oct words */ 26 24 3 type fixed bin, 26 25 3 pad2 fixed bin, 26 26 3 dest char(32), 26 27 3 queue_seg_ptr ptr; 26 28 /* 26 29* 26 30*vcons_tab 26 31*lock 26 32*no_of_vcons 26 33*vcons 26 34*vcons Symbolic name of virtual console 26 35*no_of_dest Number of physical destinations for 26 36* messages to this virtual console. 26 37*inuse "1"b if this entry is in use. 26 38*dest Where the message is to be sent 26 39*type 1 for tty, 2 for segment 26 40*dest Symbolic name of physical destination 26 41*tty_index If tty, index in mess coordr answer table 26 42*seg_ptr if segment, pointer to it. 26 43**/ 26 44 /* END INCLUDE FILE vcons_tab.incl.pl1 */ 2073 2074 2075 /* BEGIN MESSAGE DOCUMENTATION 2076* 2077* Message: 2078* mc_commands_$mc_login: error: Channel XXXX already in use. 2079* 2080* S: sc (error_output) 2081* 2082* T: $response 2083* 2084* M: The channel specified for MNA attachment is 2085* already in use by the message coordinator. 2086* 2087* A: $tryagain 2088* 2089* Message: 2090* mc_commands_$mc_login: Channel XXXX dialed to Initializer (NAME). 2091* 2092* S: as (severity 1) 2093* 2094* T: In response to a message coordinator dial request. 2095* 2096* M: Informative message indicating that a successful dialin occured on 2097* the specified channel by the named operator. A subsequent accept is 2098* required by an authenticated operator to complete the attachment. 2099* 2100* A: $ignore 2101* 2102* Message: 2103* mc_commands_$mc_login: Channel XXXX dialed to Initializer (NAME ACCEPTED). 2104* 2105* S: as (severity 1) 2106* 2107* T: In response to a message coordinator dial request. 2108* 2109* M: Informative message indicating that a successful dialin occured on 2110* the specified channel by the named operator. 2111* 2112* A: $ignore 2113* 2114* Message: 2115* mc_commands_$mc_login: Channel XXXX vchannel (YYYY) dialed to Initializer (NAME). 2116* 2117* S: as (severity 1) 2118* 2119* T: In response to a message coordinator dial request. 2120* 2121* M: Informative message indicating that a successful dialin occured on 2122* the specified channel by the named operator. A subsequent accept is 2123* required by an authenticated operator to complete the attachment. 2124* 2125* A: $ignore 2126* 2127* Message: 2128* mc_commands_$mc_login: Channel XXXX vchannel (YYYY) dialed to Initializer (NAME ACCEPTED). 2129* 2130* S: as (severity 1) 2131* 2132* T: In response to a message coordinator dial request. 2133* 2134* M: Informative message indicating that a successful dialin occured on 2135* the specified channel by the named operator. 2136* 2137* A: $ignore 2138* 2139* Message: 2140* Unable to locate a CDT entry for XXXX while attempting to drop it. 2141* 2142* S: as (severity 1) 2143* 2144* T: In response to a drop operator command. 2145* 2146* M: Notification that the CDT entry cannot be found to free it as 2147* a result of dropping the tty channel from the message coordinator. 2148* The mc_anstbl entry is freed at this point however. 2149* 2150* A: $ignore 2151* 2152* END MESSAGE DOCUMENTATION */ 2153 2154 end mc_commands_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 11/14/88 1005.9 mc_commands_.pl1 >spec>install>1211>mc_commands_.pl1 2051 1 02/12/85 1429.5 access_audit_bin_header.incl.pl1 >ldd>include>access_audit_bin_header.incl.pl1 2052 2 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 2053 3 08/06/87 0913.4 as_audit_structures.incl.pl1 >ldd>include>as_audit_structures.incl.pl1 2054 4 08/06/87 0913.4 as_data_.incl.pl1 >ldd>include>as_data_.incl.pl1 2055 5 01/21/85 0912.2 as_wakeup_priorities.incl.pl1 >ldd>include>as_wakeup_priorities.incl.pl1 2056 6 09/09/75 2007.3 author_dcl.incl.pl1 >ldd>include>author_dcl.incl.pl1 6-10 7 04/21/82 1211.8 author.incl.pl1 >ldd>include>author.incl.pl1 2057 8 08/06/87 0913.0 cdt.incl.pl1 >ldd>include>cdt.incl.pl1 8-314 9 07/21/88 2036.0 fnp_types.incl.pl1 >ldd>include>fnp_types.incl.pl1 2058 10 08/06/87 0912.9 daemon_user_table.incl.pl1 >ldd>include>daemon_user_table.incl.pl1 2059 11 07/29/76 1747.7 device_queue.incl.pl1 >ldd>include>device_queue.incl.pl1 2060 12 08/06/87 0913.4 dialup_values.incl.pl1 >ldd>include>dialup_values.incl.pl1 2061 13 05/23/83 0916.6 iox_entries.incl.pl1 >ldd>include>iox_dcls.incl.pl1 2062 14 02/02/78 1229.7 iox_modes.incl.pl1 >ldd>include>iox_modes.incl.pl1 2063 15 08/06/87 0913.4 login_server_messages.incl.pl1 >ldd>include>login_server_messages.incl.pl1 2064 16 08/06/87 0913.5 mc_anstbl.incl.pl1 >ldd>include>mc_anstbl.incl.pl1 2065 17 05/06/74 1743.1 mess_route_table.incl.pl1 >ldd>include>mess_route_table.incl.pl1 2066 18 08/06/87 0913.5 sc_stat_.incl.pl1 >ldd>include>sc_stat_.incl.pl1 2067 19 08/06/87 0913.5 sc_subsystem_info_.incl.pl1 >ldd>include>sc_subsystem_info_.incl.pl1 2068 20 08/06/87 0913.5 sys_log_constants.incl.pl1 >ldd>include>sys_log_constants.incl.pl1 2069 21 09/04/87 2012.1 syscon_mseg.incl.pl1 >ldd>include>syscon_mseg.incl.pl1 2070 22 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 22-112 23 07/14/88 2015.0 user_abs_attributes.incl.pl1 >ldd>include>user_abs_attributes.incl.pl1 2071 24 07/14/88 2015.0 user_table_entry.incl.pl1 >ldd>include>user_table_entry.incl.pl1 2072 25 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 2073 26 05/06/74 1759.4 vcons_tab.incl.pl1 >ldd>include>vcons_tab.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. AS_AUDIT_CHANNEL_DIALIN constant fixed bin(17,0) initial dcl 3-175 ref 1973 2007 CAI 000230 automatic structure level 1 dcl 195 set ref 1991 1991 2026 2026 Code parameter fixed bin(35,0) dcl 1934 in procedure "SIGN_OUT" set ref 1927 1937* 1938* Code parameter fixed bin(35,0) dcl 1383 in procedure "mc_commands_" set ref 1397 1399* Destination parameter varying char dcl 186 ref 324 327 382 390 Ex_operator_name parameter char packed unaligned dcl 1933 in procedure "SIGN_OUT" set ref 1927 1941* Ex_operator_name parameter char packed unaligned dcl 1382 in procedure "mc_commands_" set ref 1385 1388* 1390* 1397 1399* FALSE constant bit(1) initial dcl 239 ref 1976 1977 1985 1986 1987 2010 2011 2020 2021 INACTIVE constant fixed bin(17,0) initial dcl 8-272 ref 1579 1586 LOGIN_SERVER_OPERATOR_RESPONSE_VERSION_1 000000 constant char(8) initial packed unaligned dcl 15-438 ref 1804 LOGIN_SERVER_TERMINATION_RESPONSE_VERSION_1 000002 constant char(8) initial packed unaligned dcl 15-407 ref 1531 LS_OPERATOR_RESPONSE constant fixed bin(17,0) initial dcl 15-228 ref 1803 LS_TERMINATION_RESPONSE constant fixed bin(17,0) initial dcl 15-228 ref 1530 MC_PRIO 000064 constant fixed bin(17,0) initial dcl 5-25 set ref 616* 795* 1836* MC_SERVICE constant fixed bin(17,0) initial dcl 8-259 ref 1576 1584 1908 MC_WAIT_DIALUP constant fixed bin(17,0) initial dcl 16-103 ref 1849 1916 MC_atep parameter pointer dcl 1932 in procedure "SIGN_OUT" ref 1927 1936 MC_atep parameter pointer dcl 1380 in procedure "mc_commands_" set ref 1385 1387 1397 1399* MRT based structure level 1 dcl 17-12 Message parameter char packed unaligned dcl 187 set ref 410 416* Message_length parameter fixed bin(21,0) dcl 138 ref 324 348 382 399 399 Message_ptr parameter pointer dcl 137 set ref 324 348* 382 399 NOW_DIALED constant fixed bin(17,0) initial dcl 12-76 ref 1596 NOW_FREE constant fixed bin(17,0) initial dcl 12-76 ref 1573 NOW_HUNG_UP constant fixed bin(17,0) initial dcl 12-76 ref 1576 Operator_name parameter char packed unaligned dcl 1381 set ref 657 765 818* 825 1385 1393 P_access_class parameter bit(72) array dcl 117 ref 657 678 P_cdte_flag parameter bit(1) dcl 119 ref 502 520 983 999 P_cdtp parameter pointer dcl 118 ref 305 P_code parameter fixed bin(35,0) dcl 1513 ref 1510 1517 P_drop_terminal parameter bit(1) dcl 120 ref 834 860 922 945 983 P_ec parameter fixed bin(35,0) dcl 1951 set ref 1948 1958 1961* 1994 1994 P_ls_handle parameter bit(72) packed unaligned dcl 121 ref 657 787 P_ls_procid parameter bit(36) packed unaligned dcl 122 ref 657 784 P_ls_resp_ev_chn parameter fixed bin(71,0) dcl 124 ref 657 786 P_ls_term_ev_chn parameter fixed bin(71,0) dcl 123 ref 657 785 P_mc_ansp parameter pointer dcl 126 ref 305 311 P_mc_atep parameter pointer dcl 127 in procedure "mc_commands_" ref 1454 1464 P_mc_atep parameter pointer dcl 1549 in procedure "DROP_CDT_TERMINAL" ref 1547 1555 P_mcmp parameter pointer dcl 128 ref 305 313 P_message_ptr parameter pointer dcl 129 ref 305 314 P_mpx_name parameter char packed unaligned dcl 125 ref 1403 1411 P_reason parameter char packed unaligned dcl 1952 ref 1948 1958 1963 1966 P_temp_SDBp parameter pointer dcl 130 ref 305 312 P_tty parameter char(32) packed unaligned dcl 1550 ref 1547 1556 P_tty_name parameter char packed unaligned dcl 2032 in procedure "FIND_CDTE" ref 2029 2039 P_tty_name parameter char(32) packed unaligned dcl 1512 in procedure "SEND_OPERATOR_RESPONSE" ref 1510 1519 P_utep parameter pointer dcl 132 ref 657 676 P_vchannel parameter char packed unaligned dcl 131 ref 657 677 SL_LOG_BEEP 000063 constant fixed bin(17,0) initial dcl 20-14 set ref 818* 878* SL_TYPE_BEEP 000015 constant fixed bin(17,0) initial dcl 20-14 set ref 949* Stream_input_output 000060 constant fixed bin(17,0) initial dcl 14-15 set ref 1487* TRUE constant bit(1) initial dcl 239 ref 1978 1989 2012 2019 2023 WAIT_DIALUP constant fixed bin(17,0) initial dcl 12-25 ref 1595 access_class 21 000230 automatic bit(72) level 2 in structure "CAI" dcl 195 in procedure "mc_commands_" set ref 1986* 2020* access_class 10(01) 000230 automatic bit(1) level 3 in structure "CAI" packed packed unaligned dcl 195 in procedure "mc_commands_" set ref 1985* 2019* access_class_range 10(02) 000230 automatic bit(1) level 3 in structure "CAI" packed packed unaligned dcl 195 in procedure "mc_commands_" set ref 1987* 2021* access_class_range 000411 automatic bit(72) array dcl 207 in procedure "mc_commands_" set ref 678* 773* 1988 2022 access_class_range 23 000230 automatic bit(72) array level 2 in structure "CAI" dcl 195 in procedure "mc_commands_" set ref 1988* 2022* access_control 50(09) based structure level 3 packed packed unaligned dcl 8-72 action 001040 automatic fixed bin(17,0) dcl 2005 in procedure "DIALIN_OK" set ref 2007* 2026* action 000730 automatic fixed bin(17,0) dcl 1954 in procedure "ABORT_DIALIN" set ref 1973* 1991* active 0(02) based bit(1) level 3 in structure "mc_ate" packed packed unaligned dcl 16-54 in procedure "mc_commands_" set ref 434 585* 1415 1643* 1645* 1692* 1719 1881* active 62(03) based bit(1) level 3 in structure "stream" packed packed unaligned dcl 17-37 in procedure "mc_commands_" set ref 1322* addr builtin function dcl 223 ref 388 415 433 563 634 645 645 645 645 681 712 887 905 1015 1027 1175 1221 1241 1271 1319 1414 1473 1473 1519 1519 1519 1519 1539 1539 1539 1539 1599 1717 1742 1758 1764 1775 1850 1850 1850 1850 1906 1991 1991 2026 2026 2042 aim_check_$greater 000022 constant entry external dcl 244 ref 773 alarm 30(01) based bit(1) array level 3 in structure "device_queue" packed packed unaligned dcl 11-6 in procedure "mc_commands_" set ref 1045* 1045 alarm 62(28) based bit(8) level 3 in structure "stream" packed packed unaligned dcl 17-37 in procedure "mc_commands_" set ref 1301* 1303* ansp 000464 automatic pointer initial dcl 2-53 set ref 2-53* arh_header_ based structure level 1 dcl 1-26 arh_user_info_ based structure level 1 dcl 1-39 as_access_audit_$channel 000024 constant entry external dcl 245 ref 1991 2026 as_channel_audit_record_ based structure level 1 dcl 3-74 as_data_$as_procid 000174 external static bit(36) dcl 4-27 set ref 1599* as_data_$cdtp 000176 external static pointer dcl 4-33 set ref 1899* 1906 2040* 2042 as_data_$dutp 000200 external static pointer dcl 4-37 ref 680 as_dial_service_audit_record_ based structure level 1 dcl 3-105 as_error_table_$dialnotup 000140 external static fixed bin(35,0) dcl 287 ref 1996 as_ia_audit_record_ based structure level 1 dcl 3-52 astty_$tty_event 000026 constant entry external dcl 246 ref 1588 audit_record_header based structure level 1 dcl 1-18 author based structure level 2 dcl 6-9 author_dcl based structure level 1 dcl 6-9 authority 212 based structure level 2 in structure "mc_ate" dcl 16-54 in procedure "mc_commands_" set ref 532* 584* 1001 1001 1485 authority parameter bit(36) packed unaligned dcl 207 in procedure "mc_commands_" ref 489 502 532 535 584 autocode 000116 automatic fixed bin(35,0) initial dcl 164 set ref 164* 346* 348* 349 1001* 1003 1003 1003* 1006 1119* 1120 1121 1122 1276* 1277 1277 1282* 1283 1283 1417* 1419 1434* 1436 1441* bin_msg based fixed bin(71,0) dcl 1552 set ref 1599* broadcast 0(08) based bit(1) level 3 packed packed unaligned dcl 16-54 set ref 419 431 456* 460* 464* broadcast_all 0(09) based bit(1) level 3 packed packed unaligned dcl 16-54 set ref 419 431 456* 460* buffer2 000260 automatic char(132) packed unaligned dcl 197 set ref 388 399* 415 416* 731* 733* bufferp2 000100 automatic pointer dcl 149 set ref 388* 402* 415* 427* 437* cast 42 based char(32) array level 2 dcl 16-54 set ref 422 458* 469* cdt based structure level 1 dcl 8-44 cdt_entry 1520 based structure array level 2 dcl 8-44 set ref 1906 2042 cdt_mgr_$find_cdt_channel 000032 constant entry external dcl 248 ref 1899 2040 cdte based structure level 1 dcl 8-72 cdte_flag 000417 automatic bit(1) dcl 207 set ref 498* 520* 558 566 999* 1001* cdte_ptr 001052 automatic pointer dcl 2035 set ref 2042* 2043 cdtep 22 based pointer level 2 in structure "mc_ate" dcl 16-54 in procedure "mc_commands_" set ref 577* 782* 1562 1563 1622 1907* cdtep 000466 automatic pointer dcl 8-41 in procedure "mc_commands_" set ref 1557* 1559* 1562* 1563* 1570 1573 1576 1576 1579 1584 1586 1588* 1590 1590 1592 1593 1594 1595 1596 1599 1602 1602* 1906* 1907 1908 1908 cdtx 000100 automatic fixed bin(17,0) dcl 1895 in procedure "ATTACH_ATE" set ref 1899* 1906 cdtx 001050 automatic fixed bin(17,0) dcl 2034 in procedure "FIND_CDTE" set ref 2040* 2042 channel 4 based fixed bin(71,0) level 3 in structure "syscon_mseg" dcl 21-25 in procedure "mc_commands_" set ref 1791* channel 2 based fixed bin(71,0) level 2 in structure "device_queue" dcl 11-6 in procedure "mc_commands_" set ref 611* 616* 1063* channel_audit_info based structure level 1 dcl 3-138 channel_name 000230 automatic char(32) level 2 dcl 195 set ref 1975* 2009* channel_threads based structure level 1 dcl 8-249 char32 000321 automatic char(32) packed unaligned dcl 198 set ref 390* 391* 422* 423* 451* 452* 480* 481* 495* 518* 519 519 527* 675* 687* 726* 731* 850* 851 856* 863* 877* 878* 890 907 925* 930 941 948* 957 986* 987* 1070* 1074 1098* 1099* 1110 1117 1832 1873 cleanup 000000 stack reference condition dcl 302 ref 1824 clock builtin function dcl 223 ref 1394 1479 code parameter fixed bin(35,0) dcl 1894 in procedure "ATTACH_ATE" set ref 1891 1899* 1901 1903* 1911* 1919* code parameter fixed bin(35,0) dcl 1749 in procedure "SEARCH_VCONS_TAB" set ref 1748 1759* 1770* 1777* code parameter fixed bin(35,0) dcl 135 in procedure "mc_commands_" set ref 324 326* 333* 337* 338 341* 349* 357 359* 364* 368* 369 372* 379* 382 387* 391* 392 395* 402* 410 412* 423* 424 427* 437* 446 450* 452* 453 477 479* 481* 482 489 494* 502 517* 527* 529 537* 552 552 559* 566 570* 589* 593* 594 597 604* 605 608* 609 616* 617 638 644 645* 657 674* 687* 688 688 691* 692* 696 698* 706* 707* 721* 722* 726* 727 727 730* 733* 735* 739 741* 745* 746 749* 751* 757 757* 759* 789* 790 791* 795* 797 798* 809 810* 828* 834 849* 856* 858 862* 875 876* 878 924* 949 967* 983 985* 987* 988 990* 991 991 995* 1006* 1063* 1092 1094* 1099* 1100 1100 1100 1112* 1122 1122* 1128* 1129 1130* 1131 1132 1133* 1142* 1143 1144 1145* 1150* 1161 1161* 1185 1187* 1188* 1189 1190* 1193 1195* 1196* 1198 1214* 1253 1259 1261* 1266* 1267 1267 1297* 1314* 1345 1347* 1348* 1349 1350* 1353 1355* 1358* 1359 1360* 1361 1375* 1454 1467* 1471 1473* 1474 1476* 1477 1487* 1488 1491* 1539* 1566* 1599* 1605 1605* 1608* 1629* 1651* 1658 1665* 1791* 1833* 1834 1836* 1838 1850* 1860* 1861 1861* 1865 1994* 1996* 2040* 2041 code parameter fixed bin(35,0) dcl 1707 in procedure "SEARCH_MC_ANSTBL" set ref 1706 1724* 1732* 1743* code 000576 automatic fixed bin(35,0) dcl 1514 in procedure "SEND_OPERATOR_RESPONSE" set ref 1519* code_reason 000731 automatic varying char(150) dcl 1955 set ref 1958* 1962* 1965* 1965 1966* 1966 1991 code_reason_al 001000 automatic char(100) dcl 1956 set ref 1961* 1962 codeptr builtin function dcl 223 ref 1467 1467 cons_cont_proc 62 based entry variable level 2 dcl 16-25 set ref 795* 1836* control 213 based structure level 2 dcl 16-54 set ref 602* 1696* convert_status_code_ 000034 constant entry external dcl 249 ref 1441 1961 created_seg 000415 automatic bit(1) initial array packed unaligned dcl 207 set ref 207* current_process_id 1 based bit(36) level 2 dcl 21-25 set ref 376* 377* 1791* current_service_type 74 based fixed bin(17,0) level 2 packed packed unaligned dcl 8-72 set ref 1579* 1584 1586* 1590* 1908 current_size 1 based fixed bin(17,0) level 2 dcl 16-25 set ref 432 562 562* 704 711* 711 712 764 1413 1716 dest 14 based char(32) array level 3 in structure "vcons" dcl 26-17 in procedure "mc_commands_" set ref 890 894* 894 907 911* 911 1018 1020* 1029 1031* 1154 1166* 1181* 1201 1205* 1205 dest 000120 automatic fixed bin(17,0) dcl 164 in procedure "mc_commands_" set ref 888* 890 892* 906* 907 909* 1016* 1018 1020 1021* 1028* 1029 1031 1032* 1200* 1201 1202* dest 12 based structure array level 2 in structure "vcons" dcl 26-17 in procedure "mc_commands_" dest 20 based char(32) array level 4 in structure "vcons_tab" dcl 26-9 in procedure "mc_commands_" set ref 1106 dest 16 based structure array level 3 in structure "vcons_tab" dcl 26-9 in procedure "mc_commands_" device_name 4 based char(32) level 2 dcl 11-6 set ref 612* device_queue based structure level 1 dcl 11-6 dial_ev_chn 132 based fixed bin(71,0) level 2 dcl 8-72 set ref 1593* dialed_to_procid 112 based bit(36) level 2 dcl 8-72 set ref 1592* dont_log 000416 automatic bit(1) initial packed unaligned dcl 207 set ref 207* dutbl based structure level 1 dcl 10-29 dutp 000470 automatic pointer initial dcl 10-27 set ref 680* 681 10-27* end_of_queue 16 based fixed bin(17,0) level 2 dcl 11-6 set ref 1038 1065* entry 200 based structure array level 2 in structure "dutbl" dcl 10-29 in procedure "mc_commands_" set ref 681 entry 142 based structure array level 2 in structure "mc_anstbl" dcl 16-25 in procedure "mc_commands_" set ref 433 563 634 712 1414 1717 1742 error_string 000432 automatic char(100) dcl 1407 set ref 1441* 1443* error_table_$action_not_performed 000142 external static fixed bin(35,0) dcl 288 set ref 865* 927* 995 1112 1605 1938 error_table_$ai_out_range 000144 external static fixed bin(35,0) dcl 288 set ref 775* error_table_$bad_vchannel 000146 external static fixed bin(35,0) dcl 288 ref 721 error_table_$invalid_device 000150 external static fixed bin(35,0) dcl 288 ref 1861 error_table_$io_no_permission 000152 external static fixed bin(35,0) dcl 288 ref 333 364 379 error_table_$ioname_not_active 000154 external static fixed bin(35,0) dcl 288 ref 341 372 395 552 688 727 858 991 1100 1732 error_table_$ioname_not_found 000156 external static fixed bin(35,0) dcl 288 ref 552 559 566 696 739 757 1100 1121 1132 1144 1214 1267 1277 1283 1375 1605 1743 1777 1903 1911 error_table_$ionmat 000160 external static fixed bin(35,0) dcl 288 ref 537 691 730 1003 error_table_$noentry 000162 external static fixed bin(35,0) dcl 288 ref 949 1608 error_table_$notalloc 000164 external static fixed bin(35,0) dcl 288 ref 706 1161 1297 1314 error_table_$typename_not_found 000166 external static fixed bin(35,0) dcl 288 ref 1150 error_table_$vchn_active 000170 external static fixed bin(35,0) dcl 288 ref 749 error_table_$vchn_not_found 000172 external static fixed bin(35,0) dcl 288 ref 757 event 72 based fixed bin(71,0) level 2 in structure "cdte" dcl 8-72 in procedure "mc_commands_" set ref 1599* event 200 based fixed bin(71,0) level 2 in structure "mc_ate" dcl 16-54 in procedure "mc_commands_" set ref 789* 795* 1473 1473 1493* 1500 1500* 1629* 1808 1833* 1836* 1884* event_channel 16 000162 automatic fixed bin(71,0) level 2 dcl 193 set ref 1808* fbtype 000121 automatic fixed bin(17,0) dcl 164 set ref 1097* 1126* 1139* 1165 1180 flags based structure level 2 in structure "mc_ate" dcl 16-54 in procedure "mc_commands_" set ref 571* flags 50 based structure level 2 in structure "cdte" dcl 8-72 in procedure "mc_commands_" flags 62 based structure level 2 in structure "stream" dcl 17-37 in procedure "mc_commands_" flags 11 based structure level 2 in structure "vcons" dcl 26-17 in procedure "mc_commands_" flags 233 based structure array level 3 in structure "MRT" dcl 17-12 in procedure "mc_commands_" set ref 1342* flags 1 based structure level 2 in structure "sc_subsystem_info" dcl 19-23 in procedure "mc_commands_" fnp 001064 automatic bit(1) dcl 2037 in procedure "FIND_CDTE" set ref 2040* 2041 fnp 000101 automatic bit(1) dcl 1896 in procedure "ATTACH_ATE" set ref 1899* 1902 fnpe based structure level 1 dcl 8-200 get_group_id_ 000036 constant entry external dcl 250 ref 1806 get_process_access_class_ 000040 constant entry external dcl 251 ref 773 773 get_process_id_ 000042 constant entry external dcl 252 ref 802 get_ring_ 000044 constant entry external dcl 253 ref 1809 hcs_$chname_seg 000050 constant entry external dcl 255 ref 594 hcs_$truncate_seg 000046 constant entry external dcl 254 ref 608 1689 hcs_$wakeup 000052 constant entry external dcl 256 ref 1063 1493 1599 1791 header 000162 automatic structure level 2 in structure "ls_operator_resp" dcl 193 in procedure "mc_commands_" header 000204 automatic structure level 2 in structure "ls_term_resp" dcl 194 in procedure "mc_commands_" hismess 36 based pointer level 2 in structure "stream" dcl 17-37 in procedure "mc_commands_" set ref 344* 1326* hismess 230 based pointer array level 3 in structure "MRT" dcl 17-12 in procedure "mc_commands_" set ref 344 376 377 1232* 1326 1339* 1363* 1687* hphcs_$ips_wakeup 000054 constant entry external dcl 257 ref 377 i 000662 automatic fixed bin(17,0) dcl 1710 in procedure "SEARCH_MC_ANSTBL" set ref 1716* 1717 1737* i 000122 automatic fixed bin(17,0) dcl 164 in procedure "mc_commands_" set ref 465* 465* 466 467 469* 470 764* 765* 892* 893 893 894 894 895 895* 909* 910 910 911 911 912 912* 1038* 1039 1039 1154* 1154* 1158 1158 1164 1165 1166 1167 1202* 1203 1203 1205 1205 1206 1206 1207 1207* 1226* 1227 1227 1228 1228* 1244* 1245 1245 1246 1246* 1366* 1367 1367 1368 1368* 1413* 1414* in_use based fixed bin(17,0) level 2 dcl 8-72 set ref 1573 1576* 1596* 1908 index builtin function dcl 223 ref 519 719 851 init 233 based bit(1) array level 4 packed packed unaligned dcl 17-12 set ref 339 370 initial_ring 101 based fixed bin(17,0) level 2 dcl 24-78 ref 1990 2024 insc parameter char packed unaligned dcl 140 set ref 357 360 1259 1262 1323 1338 1345 1348* 1350* 1353 1356 insca 000331 automatic char(32) packed unaligned dcl 199 set ref 360* 361 368* 1262* 1276* 1356* 1358* instream parameter char packed unaligned dcl 141 set ref 1259 1263 1324 1345 1348* 1350* 1353 1357 instreama 000341 automatic char(32) packed unaligned dcl 200 set ref 1263* 1282* 1357* 1360* instring parameter char packed unaligned dcl 448 ref 446 455 460 465 466 467 469 477 484 485 intty parameter char packed unaligned dcl 142 set ref 446 451 477 480 489 495 502 518 580 594* 612 645 657 675 780 834 850 851 983 986 1018 1029 1092 1098 1127 1140 1185 1188* 1193 1197 1201 1225 1239 inttyp parameter pointer dcl 134 set ref 324 328 357 361 361 361 382 399 410 413 416 419 419 421 422 424 431 431 434 489 502 528* 634* 983 990* 991 1001* 1010 inuse 11 based bit(1) level 3 packed packed unaligned dcl 26-17 set ref 888 1016 1179* 1255* 1765 invc parameter char packed unaligned dcl 143 set ref 1092 1119* 1130* 1142* 1177 1185 1188* 1190* 1193 1196* 1224 1243 1259 1266* 1290 1345 1348* 1353 1365 ioa_ 000056 constant entry external dcl 258 ref 376 ioa_$ioa_switch 000030 constant entry external dcl 247 ref 1421 1429 1436 1443 ioa_$rs 000060 constant entry external dcl 259 ref 416 ioa_$rsnnl 000062 constant entry external dcl 260 ref 399 731 iocb 24 based pointer level 2 dcl 16-54 set ref 393 576* 746 1420 1425* 1426* 1427* 1467* 1473* 1482 1487* 1490* 1496* 1498* 1499* 1502* 1622 1625* 1626* 1627* 1628* 1632* 1844* 1873 1875* 1876* 1877* iocb_name 000351 automatic char(32) packed unaligned dcl 201 set ref 1465* 1467* iox_$attach_name 000202 constant entry external dcl 13-8 ref 1467 iox_$close 000204 constant entry external dcl 13-8 ref 1425 1496 1626 1875 iox_$control 000206 constant entry external dcl 13-8 ref 1473 1490 1625 iox_$destroy_iocb 000210 constant entry external dcl 13-8 ref 1427 1499 1628 1877 iox_$detach_iocb 000212 constant entry external dcl 13-8 ref 1426 1498 1627 1876 iox_$open 000214 constant entry external dcl 13-8 ref 1487 ipc_$create_ev_chn 000064 constant entry external dcl 261 ref 604 789 1833 ipc_$decl_ev_call_chn 000066 constant entry external dcl 262 ref 616 795 1836 ipc_$delete_ev_chn 000070 constant entry external dcl 263 ref 1500 1629 1678 1884 ipc_el 2 based structure level 2 dcl 21-25 iutep 000102 automatic pointer dcl 149 set ref 681* 1990 1991* 2024 2026* j 000676 automatic fixed bin(17,0) dcl 1753 in procedure "SEARCH_VCONS_TAB" set ref 1762* 1765 1765* 1774 1775 1776 j 000123 automatic fixed bin(17,0) dcl 164 in procedure "mc_commands_" set ref 466* 467 467* 469 470 562* 563 1040* 1044 1045 1046 1047 1048 1049 1051 1054 1054 1055* 1055 1065 1066 j 000644 automatic fixed bin(17,0) dcl 1675 in procedure "KILL_TTY" set ref 1684* 1685 1686 j 000663 automatic fixed bin(17,0) dcl 1710 in procedure "SEARCH_MC_ANSTBL" set ref 1715* 1737 1737* 1741 1742 jj 000645 automatic fixed bin(17,0) dcl 1675 in procedure "KILL_TTY" set ref 1685* jj 000124 automatic fixed bin(17,0) dcl 164 in procedure "mc_commands_" set ref 1043* k 000646 automatic fixed bin(17,0) dcl 1675 in procedure "KILL_TTY" set ref 1686* 1687 1687 k 000125 automatic fixed bin(17,0) dcl 164 in procedure "mc_commands_" set ref 421* 422* 432* 433* last_input_time 172 based fixed bin(71,0) level 3 dcl 16-54 set ref 1394* 1479* length builtin function dcl 223 ref 465 467 589 589 lg_ctl_$logout_channel 000074 constant entry external dcl 265 ref 1602 lg_ctl_$logout_operator 000072 constant entry external dcl 264 ref 1658 line 30 based structure array level 2 dcl 11-6 line_length 36 based fixed bin(17,0) array level 3 dcl 11-6 set ref 1048* 1048 lng 000126 automatic fixed bin(17,0) dcl 164 set ref 399* 402* 416* 427* 437* log_write_$close 000100 constant entry external dcl 267 ref 1203 log_write_$open 000076 constant entry external dcl 266 ref 1128 login_server_operator_response based structure level 1 dcl 15-426 login_server_response_header based structure level 1 dcl 15-258 login_server_termination_response based structure level 1 dcl 15-385 ls_event_channel 000130 automatic fixed bin(71,0) dcl 164 set ref 645* 1519* 1537* 1539* 1816* 1850* ls_handle 210 based bit(72) level 2 in structure "mc_ate" dcl 16-54 in procedure "mc_commands_" set ref 787* 1535 1814 ls_handle 000420 automatic bit(72) dcl 207 in procedure "mc_commands_" set ref 645* 1519* 1535* 1539* 1814* 1850* ls_operator_resp 000162 automatic structure level 1 dcl 193 set ref 645 645 645 645 1519 1519 1519 1519 1802* 1850 1850 1850 1850 ls_process_id 000422 automatic bit(36) dcl 207 set ref 645* 1519* 1536* 1539* 1815* 1850* ls_procid 202 based bit(36) level 2 dcl 16-54 set ref 543 627 784* 863 871* 925 935* 946 954* 1070 1536 1700* 1815 1830 1898 1919 ls_request_header based structure level 1 dcl 15-54 ls_resp_ev_chn 206 based fixed bin(71,0) level 2 dcl 16-54 set ref 786* 1816 ls_status_code 000117 automatic fixed bin(35,0) initial dcl 164 set ref 164* ls_term_ev_chn 204 based fixed bin(71,0) level 2 dcl 16-54 set ref 785* 1537 ls_term_resp 000204 automatic structure level 1 dcl 194 set ref 1529* 1539 1539 1539 1539 match_star_name_ 000102 constant entry external dcl 268 ref 1417 max_size based fixed bin(17,0) level 2 dcl 16-25 ref 704 mc_ansp 000472 automatic pointer dcl 16-25 set ref 311* 316 317 414* 432 433 562 562 563 634 679* 704 704 711 711 712 712 764 765 795 1063 1409* 1410 1413 1414 1421 1429 1435 1463* 1493 1532 1712* 1716 1717 1742 1807 1836 mc_anstbl based structure level 1 dcl 16-25 mc_ate based structure level 1 dcl 16-54 set ref 715* 1534 1812 mc_atep based pointer level 2 in structure "device_queue" dcl 11-6 in procedure "mc_commands_" set ref 613* 1107 mc_atep 000474 automatic pointer dcl 16-54 in procedure "mc_commands_" set ref 328* 329 329 329 329 391* 393 400 423* 424 426 433* 434 434 436 452* 456 456 457 458 460 460 463 464 468 468 469 469 481* 484 485 527* 528 529 532 533 534 540 542 543 556 563* 571 572 573 574 575 576 577 578 579 580 581 584 585 589 589 599 600 601 602 604 611 613 623 627 634 634 652* 687* 702 712* 715 726* 745* 746 770 779 780 781 782 784 785 786 787 789 795 795* 806 814 818 818 818 825 856* 863 863 863* 865 868 869 870 871 877* 918 925 925 925* 927 930 932 933 934 935 941 941 941 944* 946 948* 949 954 957 959 960 968 970* 987* 1001 1001 1011 1068* 1070 1070 1070* 1074 1074 1074* 1099* 1107* 1110 1110 1116 1387* 1390 1390 1392 1393 1394 1414* 1415 1417 1420 1421 1425 1426 1427 1429 1436 1443 1464* 1465 1467 1467 1473 1473 1473 1476 1479 1481 1482 1483 1484 1485 1487 1489 1490 1493 1496 1498 1499 1500 1500 1502 1533 1534 1535 1536 1537 1539 1555* 1559 1560 1562 1563 1622 1643 1645 1808 1811 1812 1814 1815 1816 1828 1828 1830 1832 1833 1836 1836* 1841 1843 1844 1845 1849 1850 1873 1875 1876 1877 1880 1881 1881 1883 1884 1898 1899 1907 1916 1917 1919 1919* 1936* 1938 1941 1942 1943 1980 1980 2014 2014 mc_atep 14 based pointer level 2 in structure "sc_subsystem_info" dcl 19-23 in procedure "mc_commands_" set ref 1483* mc_con_rec_$check 000104 constant entry external dcl 269 ref 619 1644 mc_procid 2 based bit(36) level 2 dcl 16-25 set ref 1063* 1493* 1532 1807 mc_tty 000616 automatic char(32) packed unaligned dcl 1553 set ref 1556* 1559* 1562* mc_util_$get_seg 000106 constant entry external dcl 270 ref 589 593 mc_util_$mrt_source 000110 constant entry external dcl 271 ref 337 368 1276 1358 mc_util_$mrt_stream 000112 constant entry external dcl 272 ref 1282 1360 mc_util_$queue 000114 constant entry external dcl 273 ref 402 427 437 mc_wakeups_$typer_out 000116 constant entry external dcl 274 ref 616 616 mcmp 000010 internal static pointer initial dcl 149 set ref 313* 375 1325 mescount 41 based fixed bin(17,0) level 2 dcl 21-25 set ref 1787 1788* message based char packed unaligned dcl 191 set ref 399* message_block based structure level 1 dcl 21-54 message_type 000162 automatic fixed bin(17,0) level 3 in structure "ls_operator_resp" dcl 193 in procedure "mc_commands_" set ref 1803* message_type 000204 automatic fixed bin(17,0) level 3 in structure "ls_term_resp" dcl 194 in procedure "mc_commands_" set ref 1530* messp 000012 internal static pointer initial dcl 149 set ref 314* mpx_starname 000152 automatic char(32) packed unaligned dcl 189 set ref 1411* 1417* mpxe based structure level 1 dcl 8-221 mrd_util_$write 000120 constant entry external dcl 275 ref 348 mrt_source 000132 automatic fixed bin(17,0) dcl 164 set ref 337* 339 344 368* 370 375 376 376 377 1217* 1219 1219 1221 1232* 1276* 1282* 1308 1308 1308 1319 1326 1327 1332 1332* 1338 1339 1340 1342 1358* 1360* 1363 mrt_stream 000133 automatic fixed bin(17,0) dcl 164 set ref 1219* 1221* 1282* 1308 1308* 1319 1328 1340* 1360* mrtp 000014 internal static pointer initial dcl 149 in procedure "mc_commands_" set ref 316* 339 344 370 376 376 377 1217 1219 1219 1221 1232 1241 1308 1308 1308 1319 1326 1332 1332 1338 1339 1340 1342 1363 1687 mrtp 56 based pointer level 2 in structure "mc_anstbl" dcl 16-25 in procedure "mc_commands_" ref 316 must_send_operator_response 000423 automatic bit(1) packed unaligned dcl 207 set ref 523* 640 1800* 1847 1855* n_casts 41 based fixed bin(17,0) level 2 dcl 16-54 set ref 421 457* 463* 468* 468 469 600* new_vchn_flag 000424 automatic bit(1) packed unaligned dcl 207 set ref 496* 521* 573 next_free 20 based fixed bin(17,0) level 2 dcl 11-6 set ref 1039 1040 1062 1066* next_line 31 based fixed bin(17,0) array level 3 dcl 11-6 set ref 1039* 1050 1051* 1054* no_of_dest 10 based fixed bin(17,0) level 2 dcl 26-17 set ref 888 892 897* 897 906 909 914* 914 1016 1028 1154 1158 1164* 1178* 1200 1202 1209* 1209 no_of_messages 14 based fixed bin(17,0) level 2 dcl 11-6 set ref 1037 1059* 1059 1059 no_of_sources 1 based fixed bin(17,0) level 2 dcl 17-12 set ref 1217 1332 1332* no_of_streams 232 based fixed bin(17,0) array level 3 dcl 17-12 set ref 1219 1308 1308 1308* 1340* no_of_vcons 1 based fixed bin(17,0) level 2 in structure "vcons_tab" dcl 26-9 in procedure "mc_commands_" set ref 886 1014 1173 1173* 1256* 1256 1763 no_of_vcons 67 based fixed bin(17,0) level 2 in structure "stream" dcl 17-37 in procedure "mc_commands_" set ref 1222 1226 1230* 1230 1242 1244 1248* 1248 1289 1294 1294 1294* 1329* 1364 1366 1371* 1371 not_done 30 based bit(1) array level 3 packed packed unaligned dcl 11-6 set ref 1044* 1044 nt 000134 automatic fixed bin(17,0) dcl 164 set ref 348* null builtin function dcl 223 ref 329 361 393 413 533 556 574 575 576 577 702 746 781 782 802 1141 1170 1339 1410 1420 1490 1490 1502 2-53 10-27 24-76 1557 1559 1562 1570 1594 1622 1622 1625 1625 1632 1656 1682 1741 1774 1786 1873 1917 1970 1980 1991 1991 2014 2026 2026 2045 offset 35 based fixed bin(17,0) array level 3 dcl 11-6 set ref 1046* 1046 old_operator_name 000142 automatic char(32) packed unaligned dcl 188 set ref 1651* 1658* op_ok 000425 automatic bit(1) packed unaligned dcl 207 set ref 683* 764 765* 770* 804 818* oper_info 162 based structure level 2 in structure "mc_ate" dcl 16-54 in procedure "mc_commands_" oper_info 324 based structure array level 3 in structure "mc_anstbl" dcl 16-25 in procedure "mc_commands_" ourmess 34 based pointer level 2 dcl 17-37 set ref 1325* output_wait 42 based bit(1) level 2 dcl 21-25 set ref 1789 1790* p 000104 automatic pointer dcl 149 set ref 1010* 1021 1032 1038 1039 1039 1040 1044 1045 1046 1047 1048 1049 1051 1054 1059 1059 1060 1062 1062 1063 1065 1066 pad_ev_chn 203 based bit(36) level 2 dcl 16-54 set ref 579* pad_ptrs 21 based bit(36) level 2 dcl 16-54 set ref 572* param1 parameter char packed unaligned dcl 144 set ref 983 990 1001* 1020 1031 1185 1190* 1345 1350* pending 0(01) based bit(1) level 3 packed packed unaligned dcl 16-54 set ref 529 542* 806* 814* 868* 918 932* 991 1110 1634* 1728 1880* personid 162 based char(32) level 3 in structure "mc_ate" dcl 16-54 in procedure "mc_commands_" set ref 581* 825* 870* 934* 960* 1390 1393* 1699* 1828 1941 1942* personid 324 based char(32) array level 4 in structure "mc_anstbl" dcl 16-25 in procedure "mc_commands_" set ref 765 print_ready 1(01) based bit(1) level 3 packed packed unaligned dcl 19-23 set ref 1486* proc_id 276 based bit(36) level 2 dcl 24-78 set ref 802* process 111 based pointer level 2 packed packed unaligned dcl 8-72 set ref 1594* process_group_id 6 000162 automatic char(32) level 2 dcl 193 set ref 1806* process_id 5 000162 automatic bit(36) level 2 in structure "ls_operator_resp" dcl 193 in procedure "mc_commands_" set ref 1807* process_id 10 000204 automatic bit(36) level 2 in structure "ls_term_resp" dcl 194 in procedure "mc_commands_" set ref 1532* qp 000106 automatic pointer dcl 149 in procedure "mc_commands_" set ref 400* 402* 426* 427* 436* 437* 589* 593* 594* 599 608* 611 612 613 616 616* 968* 1011* 1037 1041 1044 1045 1046 1047 1048 1049 1050 1059 1105* 1107 1116* 1128* 1141* 1167 1182 qp 000650 automatic pointer dcl 1676 in procedure "KILL_TTY" set ref 1683* 1684 1686 1689* queue_event 176 based fixed bin(71,0) level 2 dcl 16-54 set ref 578* 604* 611 1678 1678* queue_ptr 174 based pointer level 2 dcl 16-54 set ref 400 426 436 574* 599* 968 1010 1011 1116 1682 1683 queue_seg_ptr 24 based pointer array level 3 in structure "vcons" dcl 26-17 in procedure "mc_commands_" set ref 895* 895 912* 912 1021* 1032* 1167* 1182* 1203* 1207* 1207 queue_seg_ptr 30 based pointer array level 4 in structure "vcons_tab" dcl 26-9 in procedure "mc_commands_" set ref 1105 quit_bits 22 based bit(504) level 2 dcl 21-25 ref 375 real_iocb 16 based pointer level 2 dcl 19-23 set ref 1482* real_tty_name 11 based char(32) level 2 packed packed unaligned dcl 16-54 set ref 399* 416* 634 780* 818* 865* 869* 927* 930 933* 941 949* 1074 1110 1417* 1421* 1429* 1436* 1443* 1465 1467 1484 1539 1633* 1719 1728 1832* 1841 1850 1883* 1899* recipient 000361 automatic char(32) packed unaligned dcl 202 set ref 327* 329 337* reply_restricted 0(07) based bit(1) level 3 packed packed unaligned dcl 16-54 set ref 329 361 485* restrict_reply 31 based char(32) level 2 dcl 16-54 set ref 329 329 361 484* 601* restriction_flags based bit(36) level 2 dcl 19-23 set ref 535* 1485* ring 20 000162 automatic fixed bin(17,0) level 2 dcl 193 set ref 1809* rtrim builtin function dcl 223 ref 589 589 1411 1465 1467 1962 1966 sc_create_sci_ 000122 constant entry external dcl 276 ref 1476 sc_create_sci_$destroy 000124 constant entry external dcl 277 ref 1662 sc_stat_$log_dir 000216 external static char(168) packed unaligned dcl 18-21 set ref 1128* sc_stat_$master_iocb 000220 external static pointer dcl 18-45 set ref 1421* 1429* 1436* 1443* 1844 sc_stat_$master_sci_ptr 000222 external static pointer dcl 18-45 ref 1845 sc_stat_$mc_ansp 000224 external static pointer dcl 18-45 set ref 311* 414 679 1409 1463 1712 sc_stat_$no_operator_login 000226 external static bit(1) dcl 18-62 ref 825 sc_stat_$vchn_requires_accept 000230 external static bit(1) dcl 18-62 ref 763 sc_subsystem_info based structure level 1 dcl 19-23 sc_subsystem_info_ptr 000476 automatic pointer dcl 19-22 set ref 534* 535 1481* 1482 1483 1484 1485 1486 sci_ptr 26 based pointer level 2 dcl 16-54 set ref 533 534* 575* 781* 1476* 1481* 1656 1658* 1658* 1662* 1845* 1917* search builtin function dcl 223 ref 466 sendalarm 000426 automatic bit(1) packed unaligned dcl 207 set ref 401* 402* 417* 427* 437* service_info 10 000230 automatic bit(1) level 3 in structure "CAI" packed packed unaligned dcl 195 in procedure "mc_commands_" set ref 1977* 1978* 1979 2011* 2012* 2013 service_info 11 000230 automatic char(32) level 2 in structure "CAI" dcl 195 in procedure "mc_commands_" set ref 1980* 1982* 1984* 2014* 2016* 2018* service_type 32(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 8-72 ref 1576 1590 signed_on 0(06) based bit(1) level 3 packed packed unaligned dcl 16-54 set ref 959* 1390 1392* 1698* 1828* 1938 1943* size builtin function dcl 223 ref 645 645 1519 1519 1534 1539 1539 1812 1850 1850 slave_dial 50(13) based bit(1) level 4 packed packed unaligned dcl 8-72 ref 1602 source 40 based char(32) level 2 in structure "stream" dcl 17-37 in procedure "mc_commands_" set ref 1323* source 30(18) based fixed bin(17,0) array level 3 in structure "device_queue" packed packed unaligned dcl 11-6 in procedure "mc_commands_" set ref 1047* 1047 1686 source 220 based structure array level 2 in structure "MRT" dcl 17-12 in procedure "mc_commands_" source 220 based char(32) array level 3 in structure "MRT" dcl 17-12 in procedure "mc_commands_" set ref 376* 1338* source_index 60 based fixed bin(17,0) level 2 dcl 17-37 set ref 1327* source_name 2 based char(32) level 2 packed packed unaligned dcl 19-23 set ref 1484* ssu_$get_info_ptr 000126 constant entry external dcl 278 ref 534 1481 1658 1658 star_entry 4 based structure level 2 in structure "MRT" dcl 17-12 in procedure "mc_commands_" star_entry 4 based structure level 2 in structure "vcons_tab" dcl 26-9 in procedure "mc_commands_" set ref 905 1027 1758 state 000135 automatic fixed bin(17,0) dcl 164 set ref 348* status_code 4 000162 automatic fixed bin(35,0) level 2 dcl 193 set ref 644* 1517* 1805* stream based structure level 1 dcl 17-37 in procedure "mc_commands_" stream 50 based char(32) level 2 in structure "stream" dcl 17-37 in procedure "mc_commands_" set ref 1324* stream 20 based structure level 3 in structure "MRT" dcl 17-12 in procedure "mc_commands_" set ref 1241 stream 234 based structure array level 3 in structure "MRT" dcl 17-12 in procedure "mc_commands_" set ref 1221 1319 stream_index 61 based fixed bin(17,0) level 2 dcl 17-37 set ref 1328* streamp 000110 automatic pointer dcl 149 set ref 1221* 1222 1222 1224 1226 1227 1227 1228 1228 1230 1230 1241* 1242 1243 1244 1245 1245 1246 1246 1248 1248 1282* 1289 1290 1294 1294 1294 1301 1303 1304 1305 1319* 1321 1322 1323 1324 1325 1326 1327 1328 1329 1360* 1364 1365 1366 1367 1367 1368 1368 1371 1371 string 37 based char(132) array level 3 in structure "device_queue" dcl 11-6 in procedure "mc_commands_" set ref 1049* 1049 string builtin function dcl 223 in procedure "mc_commands_" set ref 532* 584* 602* 1001 1001 1342* 1485 1696* substr builtin function dcl 223 set ref 375 466 469 1301* 1303* sys_log_ 000132 constant entry external dcl 280 ref 818 878 949 sys_log_$command_error 000130 constant entry external dcl 279 ref 733 syscon_mseg based structure level 1 dcl 21-25 temp_SDBp 000016 internal static pointer initial dcl 149 set ref 312* 344 348* tempdest 000371 automatic char(32) packed unaligned dcl 203 set ref 1106* 1117* 1127* 1128* 1140* 1154 1166 1181 the_system_console 0(03) based bit(1) level 3 packed packed unaligned dcl 16-54 set ref 634 1560 1622 1662 1843* this_line 000136 automatic fixed bin(17,0) dcl 164 set ref 1041* 1043 1044 1045 1046 1047 1048 1049 1050* 1050 1051 top_of_queue 15 based fixed bin(17,0) level 2 dcl 11-6 set ref 1041 1060 1062* 1684 tra_vec 74(18) based fixed bin(17,0) level 2 in structure "cdte" packed packed unaligned dcl 8-72 in procedure "mc_commands_" set ref 1595* tra_vec 30 based fixed bin(17,0) level 2 in structure "mc_ate" dcl 16-54 in procedure "mc_commands_" set ref 1849* 1916* trace 102 based bit(1) level 2 dcl 16-25 ref 1421 1429 1435 tty_name 316 based char(32) level 2 in structure "ute" packed packed unaligned dcl 24-78 in procedure "mc_commands_" ref 1975 2009 tty_name 001054 automatic char(32) packed unaligned dcl 2036 in procedure "FIND_CDTE" set ref 2039* 2040* type 12 based fixed bin(17,0) array level 3 in structure "vcons" dcl 26-17 in procedure "mc_commands_" set ref 893* 893 910* 910 1165* 1180* 1203 1206* 1206 type parameter char packed unaligned dcl 145 in procedure "mc_commands_" set ref 1092 1095 1125 1137 1185 1190* 1259 1301 1345 1350* typw parameter char(32) packed unaligned dcl 1708 ref 1706 1719 1719 1728 uc_send_ls_response_ 000134 constant entry external dcl 281 ref 645 1519 1539 1850 unique_chars_ 000136 constant entry external dcl 284 ref 593 593 1465 unspec builtin function dcl 223 set ref 715* 1529* 1802* user_abs_attributes based structure level 1 dcl 23-25 user_attributes based structure level 1 dcl 22-21 user_connection_info based structure level 1 dcl 15-65 user_validation_level 10(03) 000230 automatic bit(1) level 3 in structure "CAI" packed packed unaligned dcl 195 in procedure "mc_commands_" set ref 1989* 2023* user_validation_level 27 000230 automatic fixed bin(3,0) level 2 in structure "CAI" dcl 195 in procedure "mc_commands_" set ref 1990* 2024* ut_header based structure level 1 dcl 25-16 ute based structure level 1 dcl 24-78 utep 000500 automatic pointer initial dcl 24-76 set ref 676* 802 802 24-76* 1970 1975 1991* 2009 2026* valid 233(01) based bit(1) array level 4 in structure "MRT" packed packed unaligned dcl 17-12 in procedure "mc_commands_" set ref 1219 valid 62 based bit(1) level 3 in structure "stream" packed packed unaligned dcl 17-37 in procedure "mc_commands_" set ref 1222 1321* valid 10 000230 automatic structure level 2 in structure "CAI" dcl 195 in procedure "mc_commands_" set ref 1976* 2010* vc 000137 automatic fixed bin(17,0) dcl 164 set ref 1222* 1224 1226* 1242* 1243 1244* 1289* 1290* 1294* 1301 1303 1304 1305 1329* 1364* 1365 1366* vce 000140 automatic fixed bin(17,0) dcl 164 in procedure "mc_commands_" set ref 886* 887* 1014* 1015* 1119* 1130* 1142* 1173* 1175 1196* 1266* 1270* 1304 1305 vce parameter fixed bin(17,0) dcl 1751 in procedure "SEARCH_VCONS_TAB" set ref 1748 1757* 1763* 1764 1765* 1776* vcep 000112 automatic pointer dcl 149 set ref 887* 888 888 890 892 893 893 894 894 895 895 897 897 905* 906 907 909 910 910 911 911 912 912 914 914 1015* 1016 1016 1018 1020 1021 1027* 1028 1029 1031 1032 1119* 1130* 1142* 1154 1154 1158 1164 1165 1166 1167 1170 1175* 1177 1178 1179 1180 1181 1182 1196* 1200 1201 1202 1203 1203 1205 1205 1206 1206 1207 1207 1209 1209 1255 1266* 1271* vchannel 000401 automatic char(32) packed unaligned dcl 204 set ref 677* 685 719 719 745* 779 1977 2011 vchn_requires_accept 0(10) based bit(1) level 3 packed packed unaligned dcl 16-54 set ref 573* 770 1692* vcon parameter char packed unaligned dcl 1750 ref 1748 1755 1768 vcons based char(32) level 2 in structure "vcons" dcl 26-17 in procedure "mc_commands_" set ref 1177* 1768 vcons based structure level 1 dcl 26-17 in procedure "mc_commands_" vcons 156 based char(32) array level 3 in structure "vcons_tab" dcl 26-9 in procedure "mc_commands_" set ref 1304 vcons 156 based structure array level 2 in structure "vcons_tab" dcl 26-9 in procedure "mc_commands_" set ref 887 1015 1175 1271 1764 1775 vcons 70 based char(32) array level 2 in structure "stream" dcl 17-37 in procedure "mc_commands_" set ref 1224 1227* 1227 1243 1245* 1245 1290 1304* 1365 1367* 1367 vcons_index 170 based fixed bin(17,0) array level 2 dcl 17-37 set ref 1228* 1228 1246* 1246 1305* 1368* 1368 vcons_tab based structure level 1 dcl 26-9 vconsp 000020 internal static pointer initial dcl 149 in procedure "mc_commands_" set ref 317* 886 887 905 1014 1015 1027 1105 1106 1173 1173 1175 1256 1256 1271 1304 1758 1763 1764 1775 vconsp 60 based pointer level 2 in structure "mc_anstbl" dcl 16-25 in procedure "mc_commands_" ref 317 version 2 000162 automatic char(8) level 3 in structure "ls_operator_resp" dcl 193 in procedure "mc_commands_" set ref 1804* version 2 000204 automatic char(8) level 3 in structure "ls_term_resp" dcl 194 in procedure "mc_commands_" set ref 1531* virtual based bit(1) level 3 packed packed unaligned dcl 16-54 set ref 540 623* 818* 863 925 941 1070 1074 1489 1692* 1881 virtual_flag 000427 automatic bit(1) dcl 207 set ref 497* 519* 558 566 622 851* 854* virtual_tty_name 1 based char(32) level 2 packed packed unaligned dcl 16-54 set ref 580* 589 589 779* 818* 941 957 1695* 1719 1980 2014 wakeup_data_len 000141 automatic fixed bin(18,0) dcl 164 set ref 1534* 1812* wakeup_data_ptr 000114 automatic pointer dcl 149 set ref 1533* 1811* wakeup_msg 000614 automatic char(8) packed unaligned dcl 1551 set ref 1598* 1599 xp parameter pointer dcl 1784 in procedure "SHAKE_SOURCE" ref 1782 1786 1787 1788 1789 1790 1791 1791 xp parameter pointer dcl 1673 in procedure "KILL_TTY" ref 1671 1678 1678 1682 1683 1692 1692 1692 1695 1696 1698 1699 1700 xp 000660 automatic pointer dcl 1709 in procedure "SEARCH_MC_ANSTBL" set ref 1717* 1719 1719 1719 1725 1728 1728 1733 1741* 1742* 1744 xp 000674 automatic pointer dcl 1752 in procedure "SEARCH_VCONS_TAB" set ref 1758* 1760 1764* 1765 1768 1771 1774* 1775* 1778 xp parameter pointer dcl 1620 in procedure "DELETE_IOCB" set ref 1617 1622 1622 1625 1626 1627 1628 1629 1632 1633 1634 1651* 1656 1658 1658 1662 1662 zerobits 000430 automatic bit(72) initial packed unaligned dcl 207 set ref 207* 645 645 1519 1519 1539 1539 1850 1850 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 23-38 ABS_DEFER_PRIO internal static fixed bin(17,0) initial dcl 5-35 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 24-326 ABS_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 5-36 ACCESS_AUDIT_HEADER_VERSION_3 internal static fixed bin(9,0) initial unsigned dcl 1-54 ACCT_UPDATE_PRIO internal static fixed bin(17,0) initial dcl 5-28 ACTIVE internal static fixed bin(17,0) initial dcl 8-272 ACTIVE_VALUES internal static char(18) initial array dcl 12-86 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 22-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 2-51 ANS_SERVICE internal static fixed bin(17,0) initial dcl 8-259 ARH_TYPE_NO_PROXY internal static fixed bin(17,0) initial dcl 1-52 ARH_TYPE_PROXY internal static fixed bin(17,0) initial dcl 1-50 AS_AUDIT_CHANNEL_ACTIONS internal static char(12) initial array packed unaligned dcl 3-193 AS_AUDIT_CHANNEL_ATTACH internal static fixed bin(17,0) initial dcl 3-175 AS_AUDIT_CHANNEL_DETACH internal static fixed bin(17,0) initial dcl 3-175 AS_AUDIT_CHANNEL_DIALOUT internal static fixed bin(17,0) initial dcl 3-175 AS_AUDIT_CHANNEL_DIAL_SYSTEM internal static fixed bin(17,0) initial dcl 3-175 AS_AUDIT_CHANNEL_DIRECTION internal static char(4) initial array packed unaligned dcl 3-196 AS_AUDIT_CHANNEL_SERVICE_INFO internal static char(12) initial array packed unaligned dcl 3-199 AS_AUDIT_DIALID_START internal static fixed bin(17,0) initial dcl 3-188 AS_AUDIT_DIALID_STOP internal static fixed bin(17,0) initial dcl 3-188 AS_AUDIT_PROCESS_ACTIONS internal static char(10) initial array packed unaligned dcl 3-202 AS_AUDIT_PROCESS_CONNECT internal static fixed bin(17,0) initial dcl 3-162 AS_AUDIT_PROCESS_CREATE internal static fixed bin(17,0) initial dcl 3-162 AS_AUDIT_PROCESS_DESTROY internal static fixed bin(17,0) initial dcl 3-162 AS_AUDIT_PROCESS_DISCONNECT internal static fixed bin(17,0) initial dcl 3-162 AS_AUDIT_PROCESS_TERMINATE internal static fixed bin(17,0) initial dcl 3-162 AS_AUDIT_RECORD_CHN_VERSION_1 internal static fixed bin(9,0) initial dcl 3-156 AS_AUDIT_RECORD_DIALID_VERSION_1 internal static fixed bin(9,0) initial dcl 3-159 AS_AUDIT_RECORD_IA_VERSION_1 internal static fixed bin(9,0) initial dcl 3-153 AS_REQUEST_PRIO internal static fixed bin(17,0) initial dcl 5-30 AT_NORMAL internal static char(8) initial packed unaligned dcl 2-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 2-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 2-116 CDT_version internal static fixed bin(17,0) initial dcl 8-39 CDT_version_5 internal static fixed bin(17,0) initial dcl 8-38 CHANNEL_DELETED internal static fixed bin(17,0) initial dcl 8-288 CONNECT_REQ internal static fixed bin(17,0) initial dcl 15-457 CORE_FLUSH_PRIO internal static fixed bin(17,0) initial dcl 5-37 CREATE_REQ internal static fixed bin(17,0) initial dcl 15-457 DAEMON_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 5-29 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 24-280 DESTROY_REQ internal static fixed bin(17,0) initial dcl 15-457 DIAL_OUT_SERVICE internal static fixed bin(17,0) initial dcl 8-259 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 24-332 DIAL_SERVICE internal static fixed bin(17,0) initial dcl 8-259 DN355 internal static fixed bin(17,0) initial dcl 9-19 DN6600 internal static fixed bin(17,0) initial dcl 9-19 DN6670 internal static fixed bin(17,0) initial dcl 9-19 DN7100 internal static fixed bin(17,0) initial dcl 9-19 DONT_MASK internal static bit(2) initial packed unaligned dcl 24-280 DO_MASK internal static bit(2) initial packed unaligned dcl 24-280 DUTBL_version_4 internal static fixed bin(17,0) initial dcl 10-25 Direct_input internal static fixed bin(17,0) initial dcl 14-15 Direct_output internal static fixed bin(17,0) initial dcl 14-15 Direct_update internal static fixed bin(17,0) initial dcl 14-15 ENTERP_REQ internal static fixed bin(17,0) initial dcl 15-457 ENTER_REQ internal static fixed bin(17,0) initial dcl 15-457 FNP_BOOT internal static fixed bin(17,0) initial dcl 8-298 FNP_DOWN internal static fixed bin(17,0) initial dcl 8-298 FNP_FREE internal static fixed bin(17,0) initial dcl 8-298 FNP_UNKNOWN internal static fixed bin(17,0) initial dcl 8-298 FNP_UP internal static fixed bin(17,0) initial dcl 8-298 FTP_SERVICE internal static fixed bin(17,0) initial dcl 8-259 INSTALL_PRIO internal static fixed bin(17,0) initial dcl 5-31 INT_LOGIN_PRIO internal static fixed bin(17,0) initial dcl 5-32 Keyed_sequential_input internal static fixed bin(17,0) initial dcl 14-15 Keyed_sequential_output internal static fixed bin(17,0) initial dcl 14-15 Keyed_sequential_update internal static fixed bin(17,0) initial dcl 14-15 LIST_REQ internal static fixed bin(17,0) initial dcl 15-457 LOGIN_REQ internal static fixed bin(17,0) initial dcl 15-457 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 24-338 LOGIN_SERVER_DIAL_RESPONSE_VERSION_1 internal static char(8) initial packed unaligned dcl 15-378 LOGIN_SERVER_LIST_RESPONSE_VERSION_1 internal static char(8) initial packed unaligned dcl 15-360 LOGIN_SERVER_NEW_PROC_RESPONSE_VERSION_1 internal static char(8) initial packed unaligned dcl 15-420 LOGIN_SERVER_OPERATOR_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 15-222 LOGIN_SERVER_PROCESS_RESPONSE_VERSION_1 internal static char(8) initial packed unaligned dcl 15-341 LS_DIAL_REQUEST internal static fixed bin(17,0) initial dcl 15-31 LS_DIAL_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 15-180 LS_DIAL_RESPONSE internal static fixed bin(17,0) initial dcl 15-228 LS_DISCONNECT_REQUEST internal static fixed bin(17,0) initial dcl 15-31 LS_DISCONNECT_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 15-193 LS_LIST_REQUEST internal static fixed bin(17,0) initial dcl 15-31 LS_LIST_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 15-160 LS_LIST_RESPONSE internal static fixed bin(17,0) initial dcl 15-228 LS_LOGOUT_REQUEST internal static fixed bin(17,0) initial dcl 15-31 LS_LOGOUT_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 15-203 LS_NEW_PROC_RESPONSE internal static fixed bin(17,0) initial dcl 15-228 LS_OPERATOR_REQUEST internal static fixed bin(17,0) initial dcl 15-31 LS_PROCESS_REQUEST internal static fixed bin(17,0) initial dcl 15-31 LS_PROCESS_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 15-150 LS_PROCESS_RESPONSE internal static fixed bin(17,0) initial dcl 15-228 LS_REQUEST_HEADER_VERSION_1 internal static char(8) initial packed unaligned dcl 15-63 LS_REQUEST_TYPES internal static char(10) initial array packed unaligned dcl 15-40 LS_RESPONSE_TYPES internal static char(10) initial array packed unaligned dcl 15-238 LS_UNKNOWN_RESPONSE internal static fixed bin(17,0) initial dcl 15-228 LS_VALIDATE_REQUEST internal static fixed bin(17,0) initial dcl 15-31 LS_VALIDATE_REQUEST_VERSION_1 internal static char(8) initial packed unaligned dcl 15-97 LS_VALIDATE_RESPONSE internal static fixed bin(17,0) initial dcl 15-228 LS_VALIDATE_RESPONSE_VERSION_1 internal static char(8) initial packed unaligned dcl 15-297 MASK_CTL_NAMES internal static varying char(12) initial array dcl 24-284 MC_WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 16-103 MC_WAIT_COMMAND internal static fixed bin(17,0) initial dcl 16-103 MC_WAIT_READY internal static fixed bin(17,0) initial dcl 16-103 MPX_BOOT internal static fixed bin(17,0) initial dcl 8-306 MPX_DOWN internal static fixed bin(17,0) initial dcl 8-306 MPX_FREE internal static fixed bin(17,0) initial dcl 8-306 MPX_LOAD_PRIO internal static fixed bin(17,0) initial dcl 5-33 MPX_SERVICE internal static fixed bin(17,0) initial dcl 8-259 MPX_UNKNOWN internal static fixed bin(17,0) initial dcl 8-306 MPX_UP internal static fixed bin(17,0) initial dcl 8-306 NETWORK_CONNECTION_DSA_FILE_TRANSFER internal static fixed bin(17,0) initial dcl 15-471 NETWORK_CONNECTION_LOGIN internal static fixed bin(17,0) initial dcl 15-471 NEW_PROC_REQ internal static fixed bin(17,0) initial dcl 15-457 NOT_CONFIGURED internal static fixed bin(17,0) initial dcl 8-280 NOW_DIALED_OUT internal static fixed bin(17,0) initial dcl 12-76 NOW_DIALING internal static fixed bin(17,0) initial dcl 12-76 NOW_HAS_PROCESS internal static fixed bin(17,0) initial dcl 12-76 NOW_LISTENING internal static fixed bin(17,0) initial dcl 12-76 NOW_LOGGED_IN internal static fixed bin(17,0) initial dcl 12-76 PREEMPT_BUMPED internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_BUMPED_NO_TERM internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_LOAD_CTL internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_TERMSGNL_RECEIVED internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_TERM_SENT internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_UNBUMP internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_UNBUMP_IGNORE_ALARM internal static fixed bin(17,0) initial dcl 12-132 PREEMPT_VALUES internal static varying char(28) initial array dcl 12-142 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 24-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 24-261 PT_ALARM internal static fixed bin(17,0) initial dcl 12-106 PT_BUMP internal static fixed bin(17,0) initial dcl 12-106 PT_DAEMON internal static fixed bin(17,0) initial dcl 24-261 PT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 12-106 PT_DETACH internal static fixed bin(17,0) initial dcl 12-106 PT_FPE internal static fixed bin(17,0) initial dcl 12-106 PT_HANGUP internal static fixed bin(17,0) initial dcl 12-106 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 24-261 PT_LOGOUT internal static fixed bin(17,0) initial dcl 12-106 PT_NEW_PROC_AUTH internal static fixed bin(17,0) initial dcl 12-106 PT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 12-106 PT_OPERATOR_TERMINATE internal static fixed bin(17,0) initial dcl 12-106 PT_SHUTDOWN internal static fixed bin(17,0) initial dcl 12-106 PT_UNBUMP internal static fixed bin(17,0) initial dcl 12-106 PW_FLAG_NAMES internal static varying char(12) initial array dcl 24-290 SHUTDOWN_PRIO internal static fixed bin(17,0) initial dcl 5-27 SLAVE_SERVICE internal static fixed bin(17,0) initial dcl 8-259 SL_INFO_arg_given_in_structure internal static fixed bin(17,0) initial dcl 20-69 SL_INFO_arg_not_given internal static fixed bin(17,0) initial dcl 20-69 SL_INFO_as_mode internal static fixed bin(17,0) initial dcl 20-65 SL_INFO_command_mode internal static fixed bin(17,0) initial dcl 20-65 SL_INFO_version_1 internal static char(8) initial packed unaligned dcl 20-62 SL_LOG internal static fixed bin(17,0) initial dcl 20-14 SL_LOG_CRASH internal static fixed bin(17,0) initial dcl 20-14 SL_LOG_SILENT internal static fixed bin(17,0) initial dcl 20-14 SL_TYPE internal static fixed bin(17,0) initial dcl 20-14 SL_TYPE_CRASH internal static fixed bin(17,0) initial dcl 20-14 STATE_VALUES internal static char(15) initial array dcl 12-70 SYSERR_COPY_PRIO internal static fixed bin(17,0) initial dcl 5-26 Sequential_input internal static fixed bin(17,0) initial dcl 14-15 Sequential_input_output internal static fixed bin(17,0) initial dcl 14-15 Sequential_output internal static fixed bin(17,0) initial dcl 14-15 Sequential_update internal static fixed bin(17,0) initial dcl 14-15 Stream_input internal static fixed bin(17,0) initial dcl 14-15 Stream_output internal static fixed bin(17,0) initial dcl 14-15 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 24-271 TAG_ABSENTEE internal static char(1) initial packed unaligned dcl 12-93 TAG_DAEMON internal static char(1) initial packed unaligned dcl 12-93 TAG_INTERACTIVE internal static char(1) initial packed unaligned dcl 12-93 TAG_PROXY internal static char(1) initial packed unaligned dcl 12-93 TAG_UFT internal static char(1) initial packed unaligned dcl 12-93 TANDD_SERVICE internal static fixed bin(17,0) initial dcl 8-259 TRA_VEC_VALUES internal static char(32) initial array dcl 12-54 TTY_DIALED internal static fixed bin(17,0) initial dcl 12-64 TTY_HUNG internal static fixed bin(17,0) initial dcl 12-64 TTY_KNOWN internal static fixed bin(17,0) initial dcl 12-64 TTY_MASKED internal static fixed bin(17,0) initial dcl 12-64 UFLAG_NAMES internal static varying char(24) initial array dcl 24-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 22-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 22-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 22-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 22-50 UTE_SIZE internal static fixed bin(17,0) initial dcl 2-120 UTE_version_4 internal static fixed bin(17,0) initial dcl 24-74 WAIT_ANSWERBACK internal static fixed bin(17,0) initial dcl 12-25 WAIT_BEFORE_HANGUP internal static fixed bin(17,0) initial dcl 12-25 WAIT_CONNECT_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WAIT_DELETE_CHANNEL internal static fixed bin(17,0) initial dcl 12-25 WAIT_DESTROY_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WAIT_DETACH internal static fixed bin(17,0) initial dcl 12-25 WAIT_DIAL_OUT internal static fixed bin(17,0) initial dcl 12-25 WAIT_DIAL_RELEASE internal static fixed bin(17,0) initial dcl 12-25 WAIT_DISCARD_WAKEUPS internal static fixed bin(17,0) initial dcl 12-25 WAIT_FIN_PRIV_ATTACH internal static fixed bin(17,0) initial dcl 12-25 WAIT_FIN_TANDD_ATTACH internal static fixed bin(17,0) initial dcl 12-25 WAIT_GREETING_MSG internal static fixed bin(17,0) initial dcl 12-25 WAIT_HANGUP internal static fixed bin(17,0) initial dcl 12-25 WAIT_LOGIN_ARGS internal static fixed bin(17,0) initial dcl 12-25 WAIT_LOGIN_LINE internal static fixed bin(17,0) initial dcl 12-25 WAIT_LOGOUT internal static fixed bin(17,0) initial dcl 12-25 WAIT_LOGOUT_HOLD internal static fixed bin(17,0) initial dcl 12-25 WAIT_LOGOUT_SIG internal static fixed bin(17,0) initial dcl 12-25 WAIT_NEW_PASSWORD internal static fixed bin(17,0) initial dcl 12-25 WAIT_NEW_PROC internal static fixed bin(17,0) initial dcl 12-25 WAIT_NEW_PROC_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WAIT_OLD_PASSWORD internal static fixed bin(17,0) initial dcl 12-25 WAIT_PASSWORD internal static fixed bin(17,0) initial dcl 12-25 WAIT_REMOVE internal static fixed bin(17,0) initial dcl 12-25 WAIT_SLAVE_REQUEST internal static fixed bin(17,0) initial dcl 12-25 WAIT_TANDD_HANGUP internal static fixed bin(17,0) initial dcl 12-25 anstbl based structure level 1 dcl 2-55 as_channel_audit_record based structure level 1 dcl 3-68 as_data_$BS external static char(1) dcl 4-21 as_data_$CR external static char(1) dcl 4-22 as_data_$abs_dim external static char(32) packed unaligned dcl 4-23 as_data_$acct_update_priority external static fixed bin(17,0) dcl 4-24 as_data_$acsdir external static char(168) packed unaligned dcl 4-25 as_data_$ansp external static pointer dcl 4-26 as_data_$as_ring external static fixed bin(3,0) dcl 4-28 as_data_$as_tty automatic char(6) packed unaligned dcl 4-29 as_data_$asmtp external static pointer dcl 4-30 as_data_$autp external static pointer dcl 4-31 as_data_$buzzardp external static pointer dcl 4-32 as_data_$debug_flag external static bit(1) dcl 4-84 as_data_$default_weight external static fixed bin(35,0) dcl 4-34 as_data_$devtabp external static pointer dcl 4-35 as_data_$dft_user_ring external static fixed bin(3,0) dcl 4-36 as_data_$g115_dim external static char(32) packed unaligned dcl 4-38 as_data_$lct_initialized external static bit(1) dcl 4-39 as_data_$lct_size external static fixed bin(17,0) dcl 4-40 as_data_$login_args external static structure level 1 dcl 4-62 as_data_$login_words external static fixed bin(17,0) dcl 4-77 as_data_$ls_message_buffer_cur_lth external static fixed bin(18,0) dcl 4-86 as_data_$ls_message_buffer_max_lth external static fixed bin(18,0) dcl 4-87 as_data_$ls_message_buffer_ptr external static pointer dcl 4-88 as_data_$ls_request_server_info_ptr external static pointer dcl 4-85 as_data_$max_user_ring external static fixed bin(3,0) dcl 4-41 as_data_$mgtp external static pointer dcl 4-42 as_data_$mrd_dim external static char(32) packed unaligned dcl 4-43 as_data_$ntty_dim external static char(32) packed unaligned dcl 4-44 as_data_$pdtdir external static char(168) packed unaligned dcl 4-45 as_data_$pit_ptr external static pointer dcl 4-46 as_data_$rcpdir external static char(168) packed unaligned dcl 4-47 as_data_$request_priority external static fixed bin(17,0) dcl 4-48 as_data_$rs_ptrs external static pointer array dcl 4-49 as_data_$rtdtp external static pointer dcl 4-50 as_data_$sat_htp external static pointer dcl 4-51 as_data_$satp external static pointer dcl 4-52 as_data_$signal_types external static structure level 1 dcl 4-67 as_data_$suffix external static char(2) array packed unaligned dcl 4-53 as_data_$sysdir external static char(168) packed unaligned dcl 4-54 as_data_$system_signal_types external static structure level 1 dcl 4-72 as_data_$teens_suffix external static char(2) array packed unaligned dcl 4-55 as_data_$terminet_tabs_string external static varying char(144) dcl 4-56 as_data_$tty_dim external static char(32) packed unaligned dcl 4-57 as_data_$update_priority external static fixed bin(17,0) dcl 4-58 as_data_$version external static char(8) packed unaligned dcl 4-59 as_data_$whoptr external static pointer dcl 4-60 as_data_login_words based structure level 1 dcl 4-77 as_dial_service_audit_record based structure level 1 dcl 3-100 as_ia_audit_record_abs based structure level 1 dcl 3-34 as_ia_audit_record_abs_proxy based structure level 1 dcl 3-41 as_ia_audit_record_int_dmn based structure level 1 dcl 3-27 audit_record_header_proxy based structure level 1 dcl 1-22 audit_record_ptr automatic pointer dcl 1-16 buff_len internal static fixed bin(17,0) initial dcl 21-23 cdtp automatic pointer dcl 8-41 channel_audit_info_ptr automatic pointer dcl 3-136 debug_info based structure level 1 dcl 21-71 dial_server_info based structure level 1 dcl 3-124 dial_server_info_ptr automatic pointer dcl 3-122 fnp_models internal static fixed bin(17,0) initial array dcl 9-28 fnp_types internal static char(8) initial array packed unaligned dcl 9-25 fnpep automatic pointer dcl 8-41 generic_destination based char(32) packed unaligned dcl 8-195 iox_$attach_loud 000000 constant entry external dcl 13-8 iox_$attach_ptr 000000 constant entry external dcl 13-8 iox_$close_file 000000 constant entry external dcl 13-8 iox_$delete_record 000000 constant entry external dcl 13-8 iox_$detach 000000 constant entry external dcl 13-8 iox_$err_no_operation 000000 constant entry external dcl 13-8 iox_$err_not_attached 000000 constant entry external dcl 13-8 iox_$err_not_closed 000000 constant entry external dcl 13-8 iox_$err_not_open 000000 constant entry external dcl 13-8 iox_$error_output external static pointer dcl 13-41 iox_$find_iocb 000000 constant entry external dcl 13-8 iox_$find_iocb_n 000000 constant entry external dcl 13-8 iox_$get_chars 000000 constant entry external dcl 13-8 iox_$get_line 000000 constant entry external dcl 13-8 iox_$look_iocb 000000 constant entry external dcl 13-8 iox_$modes 000000 constant entry external dcl 13-8 iox_$move_attach 000000 constant entry external dcl 13-8 iox_$open_file 000000 constant entry external dcl 13-8 iox_$position 000000 constant entry external dcl 13-8 iox_$propagate 000000 constant entry external dcl 13-8 iox_$put_chars 000000 constant entry external dcl 13-8 iox_$read_key 000000 constant entry external dcl 13-8 iox_$read_length 000000 constant entry external dcl 13-8 iox_$read_record 000000 constant entry external dcl 13-8 iox_$rewrite_record 000000 constant entry external dcl 13-8 iox_$seek_key 000000 constant entry external dcl 13-8 iox_$user_input external static pointer dcl 13-41 iox_$user_io external static pointer dcl 13-41 iox_$user_output external static pointer dcl 13-41 iox_$write_record 000000 constant entry external dcl 13-8 iox_modes internal static char(24) initial array dcl 14-6 login_server_dial_request based structure level 1 dcl 15-170 login_server_dial_response based structure level 1 dcl 15-366 login_server_disconnect_request based structure level 1 dcl 15-188 login_server_list_request based structure level 1 dcl 15-156 login_server_list_response based structure level 1 dcl 15-347 login_server_list_response_n_processes automatic fixed bin(17,0) dcl 15-358 login_server_logout_request based structure level 1 dcl 15-199 login_server_new_proc_response based structure level 1 dcl 15-414 login_server_operator_request based structure level 1 dcl 15-214 login_server_process_request based structure level 1 dcl 15-103 login_server_process_response based structure level 1 dcl 15-303 login_server_validate_request based structure level 1 dcl 15-76 login_server_validate_response based structure level 1 dcl 15-267 ls_process_request_arg_string_length automatic fixed bin(21,0) dcl 15-148 ls_process_request_n_args automatic fixed bin(17,0) dcl 15-147 ls_process_response_accounting_message_length automatic fixed bin(17,0) dcl 15-339 ls_reply_message based structure level 1 dcl 15-445 ls_reply_message_ptr automatic pointer dcl 15-443 ls_request_ptr automatic pointer dcl 15-50 ls_response_ptr automatic pointer dcl 15-254 mpxep automatic pointer dcl 8-41 sc_request_flags based structure level 1 packed packed unaligned dcl 19-55 sc_rf_ptr automatic pointer dcl 19-54 sc_ss_area based area(1024) dcl 19-50 sc_stat_$Go external static bit(1) dcl 18-62 sc_stat_$Go_typed external static bit(1) dcl 18-62 sc_stat_$Multics external static bit(1) dcl 18-62 sc_stat_$Multics_typed external static bit(1) dcl 18-62 sc_stat_$Star_typed external static bit(1) dcl 18-62 sc_stat_$admin_listener_exit_label external static label variable dcl 18-34 sc_stat_$admin_listener_switch external static bit(1) dcl 18-62 sc_stat_$admin_log_iocb external static pointer dcl 18-45 sc_stat_$admin_log_write_ptr external static pointer dcl 18-45 sc_stat_$admin_sci_ptr external static pointer dcl 18-45 sc_stat_$as_log_write_ptr external static pointer dcl 18-45 sc_stat_$did_part1 external static bit(1) dcl 18-62 sc_stat_$did_part2 external static bit(1) dcl 18-62 sc_stat_$did_part3 external static bit(1) dcl 18-62 sc_stat_$exec_access_name external static char(32) packed unaligned dcl 18-15 sc_stat_$info_dir external static char(168) packed unaligned dcl 18-21 sc_stat_$initzer_ttyp external static pointer dcl 18-45 sc_stat_$master_abort_label external static label variable dcl 18-34 sc_stat_$master_channel external static char(6) dcl 18-29 sc_stat_$mc_acs_dir external static char(168) packed unaligned dcl 18-21 sc_stat_$mc_iocb external static pointer dcl 18-45 sc_stat_$mc_is_on external static bit(1) dcl 18-62 sc_stat_$shutdown_typed external static bit(1) dcl 18-62 sc_stat_$sv1_iocb external static pointer dcl 18-45 sc_stat_$sv2_iocb external static pointer dcl 18-45 sc_stat_$sv3_iocb external static pointer dcl 18-45 sc_stat_$sysdir external static char(168) packed unaligned dcl 18-21 sc_stat_$system_shutdown_label external static label variable dcl 18-34 sc_stat_$test_mode external static bit(1) dcl 18-62 sc_stat_$unidentified_access_name external static char(32) packed unaligned dcl 18-15 short_iox_modes internal static char(4) initial array dcl 14-12 sl_info automatic structure level 1 dcl 20-24 sl_info_code_msg internal static structure level 1 dcl 20-187 sl_info_msg internal static structure level 1 dcl 20-214 sl_info_sev_code_label_msg internal static structure level 1 dcl 20-161 sl_info_sev_code_msg internal static structure level 1 dcl 20-82 sl_info_sev_coded_msg internal static structure level 1 dcl 20-134 sl_info_sev_msg internal static structure level 1 dcl 20-108 supported_fnp internal static bit(1) initial array packed unaligned dcl 9-31 NAMES DECLARED BY EXPLICIT CONTEXT. ABORT_DIALIN 012744 constant entry internal dcl 1948 ref 692 698 707 722 735 741 751 759 775 791 798 810 ATTACH_ATE 012574 constant entry internal dcl 1891 ref 1434 1860 COMMON_NEW 002046 constant label dcl 523 ref 500 CONNECT_PHYSICAL_CHANNEL 012234 constant entry internal dcl 1822 ref 547 631 808 CPC_ERROR 012460 constant entry internal dcl 1871 ref 1825 1867 CPC_ERROR_RETURN 012452 constant label dcl 1867 ref 1834 1838 DELETE_IOCB 011252 constant entry internal dcl 1617 ref 944 1068 DIALIN_OK 013257 constant entry internal dcl 2002 ref 829 DROP_CDT_TERMINAL 011052 constant entry internal dcl 1547 ref 863 877 925 948 1070 ERROR 010627 constant label dcl 1496 ref 1474 1477 1489 FILL_RESPONSE_STRUCTURE 012153 constant entry internal dcl 1798 ref 543 627 807 1516 FIND_CDTE 013416 constant entry internal dcl 2029 ref 1559 1562 KILL_TTY 011540 constant entry internal dcl 1671 ref 652 970 1074 NEWERR 002605 constant label dcl 640 ref 597 605 609 617 SEARCH_MC_ANSTBL 011666 constant entry internal dcl 1706 ref 391 423 452 481 527 687 726 745 856 987 990 1099 SEARCH_VCONS_TAB 011777 constant entry internal dcl 1748 ref 1119 1130 1142 1196 1266 SEND_OPERATOR_RESPONSE 010711 constant entry internal dcl 1510 ref 865 927 SEND_TERMINATE_RESPONSE 010762 constant entry internal dcl 1527 ref 953 1072 SET_NO_ENTRY 011246 constant label dcl 1608 ref 1573 SHAKE_SOURCE 012114 constant entry internal dcl 1782 ref 1232 1363 1687 SIGN_OUT 012705 constant entry internal dcl 1927 ref 1399 1651 change_vce 005614 constant label dcl 1154 ref 1120 1131 1143 create_iocb 010237 constant entry external dcl 1454 ref 1919 define 005240 constant entry external dcl 1092 ref 1190 delete 005204 constant label dcl 1068 ref 1037 deroute 007303 constant entry external dcl 1353 ref 1348 drend 007524 constant label dcl 1377 ref 1372 init 000357 constant entry external dcl 305 intercom 000770 constant entry external dcl 382 listen_to_ttys 007654 constant entry external dcl 1403 mc_commands_ 000343 constant entry external dcl 15 ref 1467 1467 mc_login 002672 constant entry external dcl 657 new_source 007115 constant label dcl 1332 ref 1277 new_stream 007025 constant label dcl 1308 ref 1283 new_tty 001770 constant entry external dcl 502 ref 1001 new_vce 005665 constant label dcl 1170 ref 1121 1134 1146 new_vchannel 001725 constant entry external dcl 489 noreply 000531 constant label dcl 341 note_input 001144 constant entry external dcl 410 quit_command 000575 constant entry external dcl 357 redefine 005733 constant entry external dcl 1185 refresh 006762 constant label dcl 1301 ref 1290 1330 remove_tty 003770 constant entry external dcl 834 reply_command 000420 constant entry external dcl 324 reroute 007155 constant entry external dcl 1345 route 006523 constant entry external dcl 1259 ref 1350 rtnext 004253 constant label dcl 901 ref 898 rtnext1 004335 constant label dcl 918 ref 915 set_broadcast 001433 constant entry external dcl 446 set_restrict 001630 constant entry external dcl 477 set_stream 007046 constant label dcl 1319 ref 1343 sign_in 007531 constant entry external dcl 1385 sign_out 007613 constant entry external dcl 1397 substty 004520 constant entry external dcl 983 udnext 006405 constant label dcl 1237 ref 1234 udsMRT 006234 constant label dcl 1217 ref 1197 1210 undefine 006040 constant entry external dcl 1193 ref 1188 wipeout 006507 constant label dcl 1253 ref 1249 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 15174 15426 13745 15204 Length 16662 13745 232 1220 1227 12 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mc_commands_ 906 external procedure is an external procedure. SEND_OPERATOR_RESPONSE internal procedure shares stack frame of external procedure mc_commands_. SEND_TERMINATE_RESPONSE internal procedure shares stack frame of external procedure mc_commands_. DROP_CDT_TERMINAL internal procedure shares stack frame of external procedure mc_commands_. DELETE_IOCB internal procedure shares stack frame of external procedure mc_commands_. KILL_TTY internal procedure shares stack frame of external procedure mc_commands_. SEARCH_MC_ANSTBL internal procedure shares stack frame of external procedure mc_commands_. SEARCH_VCONS_TAB internal procedure shares stack frame of external procedure mc_commands_. SHAKE_SOURCE internal procedure shares stack frame of external procedure mc_commands_. FILL_RESPONSE_STRUCTURE internal procedure shares stack frame of external procedure mc_commands_. CONNECT_PHYSICAL_CHANNEL 114 internal procedure enables or reverts conditions. on unit on line 1824 64 on unit CPC_ERROR 72 internal procedure is called by several nonquick procedures. ATTACH_ATE 78 internal procedure is called by several nonquick procedures. SIGN_OUT internal procedure shares stack frame of external procedure mc_commands_. ABORT_DIALIN internal procedure shares stack frame of external procedure mc_commands_. DIALIN_OK internal procedure shares stack frame of external procedure mc_commands_. FIND_CDTE internal procedure shares stack frame of external procedure mc_commands_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 mcmp mc_commands_ 000012 messp mc_commands_ 000014 mrtp mc_commands_ 000016 temp_SDBp mc_commands_ 000020 vconsp mc_commands_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME ATTACH_ATE 000100 cdtx ATTACH_ATE 000101 fnp ATTACH_ATE mc_commands_ 000100 bufferp2 mc_commands_ 000102 iutep mc_commands_ 000104 p mc_commands_ 000106 qp mc_commands_ 000110 streamp mc_commands_ 000112 vcep mc_commands_ 000114 wakeup_data_ptr mc_commands_ 000116 autocode mc_commands_ 000117 ls_status_code mc_commands_ 000120 dest mc_commands_ 000121 fbtype mc_commands_ 000122 i mc_commands_ 000123 j mc_commands_ 000124 jj mc_commands_ 000125 k mc_commands_ 000126 lng mc_commands_ 000130 ls_event_channel mc_commands_ 000132 mrt_source mc_commands_ 000133 mrt_stream mc_commands_ 000134 nt mc_commands_ 000135 state mc_commands_ 000136 this_line mc_commands_ 000137 vc mc_commands_ 000140 vce mc_commands_ 000141 wakeup_data_len mc_commands_ 000142 old_operator_name mc_commands_ 000152 mpx_starname mc_commands_ 000162 ls_operator_resp mc_commands_ 000204 ls_term_resp mc_commands_ 000230 CAI mc_commands_ 000260 buffer2 mc_commands_ 000321 char32 mc_commands_ 000331 insca mc_commands_ 000341 instreama mc_commands_ 000351 iocb_name mc_commands_ 000361 recipient mc_commands_ 000371 tempdest mc_commands_ 000401 vchannel mc_commands_ 000411 access_class_range mc_commands_ 000415 created_seg mc_commands_ 000416 dont_log mc_commands_ 000417 cdte_flag mc_commands_ 000420 ls_handle mc_commands_ 000422 ls_process_id mc_commands_ 000423 must_send_operator_response mc_commands_ 000424 new_vchn_flag mc_commands_ 000425 op_ok mc_commands_ 000426 sendalarm mc_commands_ 000427 virtual_flag mc_commands_ 000430 zerobits mc_commands_ 000432 error_string mc_commands_ 000464 ansp mc_commands_ 000466 cdtep mc_commands_ 000470 dutp mc_commands_ 000472 mc_ansp mc_commands_ 000474 mc_atep mc_commands_ 000476 sc_subsystem_info_ptr mc_commands_ 000500 utep mc_commands_ 000576 code SEND_OPERATOR_RESPONSE 000614 wakeup_msg DROP_CDT_TERMINAL 000616 mc_tty DROP_CDT_TERMINAL 000644 j KILL_TTY 000645 jj KILL_TTY 000646 k KILL_TTY 000650 qp KILL_TTY 000660 xp SEARCH_MC_ANSTBL 000662 i SEARCH_MC_ANSTBL 000663 j SEARCH_MC_ANSTBL 000674 xp SEARCH_VCONS_TAB 000676 j SEARCH_VCONS_TAB 000730 action ABORT_DIALIN 000731 code_reason ABORT_DIALIN 001000 code_reason_al ABORT_DIALIN 001040 action DIALIN_OK 001050 cdtx FIND_CDTE 001052 cdte_ptr FIND_CDTE 001054 tty_name FIND_CDTE 001064 fnp FIND_CDTE THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ext_in_desc call_ext_in call_ext_out_desc call_ext_out call_int_this call_int_other return_mac enable_op shorten_stack ext_entry ext_entry_desc int_entry clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. aim_check_$greater as_access_audit_$channel astty_$tty_event cdt_mgr_$find_cdt_channel convert_status_code_ get_group_id_ get_process_access_class_ get_process_id_ get_ring_ hcs_$chname_seg hcs_$truncate_seg hcs_$wakeup hphcs_$ips_wakeup ioa_ ioa_$ioa_switch ioa_$rs ioa_$rsnnl iox_$attach_name iox_$close iox_$control iox_$destroy_iocb iox_$detach_iocb iox_$open ipc_$create_ev_chn ipc_$decl_ev_call_chn ipc_$delete_ev_chn lg_ctl_$logout_channel lg_ctl_$logout_operator log_write_$close log_write_$open match_star_name_ mc_con_rec_$check mc_util_$get_seg mc_util_$mrt_source mc_util_$mrt_stream mc_util_$queue mc_wakeups_$typer_out mrd_util_$write sc_create_sci_ sc_create_sci_$destroy ssu_$get_info_ptr sys_log_ sys_log_$command_error uc_send_ls_response_ unique_chars_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$as_procid as_data_$cdtp as_data_$dutp as_error_table_$dialnotup error_table_$action_not_performed error_table_$ai_out_range error_table_$bad_vchannel error_table_$invalid_device error_table_$io_no_permission error_table_$ioname_not_active error_table_$ioname_not_found error_table_$ionmat error_table_$noentry error_table_$notalloc error_table_$typename_not_found error_table_$vchn_active error_table_$vchn_not_found sc_stat_$log_dir sc_stat_$master_iocb sc_stat_$master_sci_ptr sc_stat_$mc_ansp sc_stat_$no_operator_login sc_stat_$vchn_requires_accept LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 164 000313 207 000315 2 53 000334 10 27 000336 24 76 000337 15 000342 305 000351 311 000365 312 000373 313 000376 314 000401 316 000404 317 000407 319 000412 324 000413 326 000441 327 000442 328 000450 329 000453 333 000472 334 000475 337 000476 338 000517 339 000521 341 000531 342 000533 344 000534 346 000537 348 000540 349 000566 351 000570 357 000571 359 000616 360 000617 361 000625 364 000642 365 000645 368 000646 369 000667 370 000671 372 000701 373 000703 375 000704 376 000712 377 000737 378 000762 379 000763 380 000765 382 000766 387 001011 388 001012 390 001014 391 001022 392 001034 393 001036 395 001043 396 001046 399 001047 400 001113 401 001116 402 001117 403 001141 410 001142 412 001165 413 001166 414 001172 415 001176 416 001200 417 001242 419 001244 421 001261 422 001271 423 001300 424 001312 426 001320 427 001323 429 001345 430 001347 431 001350 432 001354 433 001365 434 001371 436 001400 437 001402 439 001424 441 001426 446 001427 450 001456 451 001457 452 001467 453 001501 455 001503 456 001512 457 001516 458 001520 459 001535 460 001536 463 001547 464 001551 465 001553 466 001561 467 001602 468 001607 469 001611 470 001622 472 001625 477 001626 479 001653 480 001654 481 001664 482 001676 484 001700 485 001707 486 001717 489 001720 494 001745 495 001746 496 001756 497 001760 498 001761 500 001762 502 001763 517 002010 518 002011 519 002021 520 002041 521 002045 523 002046 527 002047 528 002061 529 002063 532 002070 533 002075 534 002101 535 002112 537 002120 538 002123 540 002124 542 002127 543 002131 547 002134 548 002140 550 002141 552 002142 556 002147 558 002153 559 002160 560 002163 562 002164 563 002171 564 002174 566 002175 570 002206 571 002207 572 002237 573 002241 574 002246 575 002250 576 002251 577 002252 578 002253 579 002255 580 002256 581 002266 584 002271 585 002276 589 002300 592 002352 593 002353 594 002411 597 002441 599 002443 600 002446 601 002447 602 002452 604 002453 605 002464 608 002466 609 002502 611 002504 612 002510 613 002520 616 002521 617 002544 619 002546 622 002553 623 002555 624 002557 627 002560 631 002564 634 002570 638 002603 640 002605 644 002607 645 002611 652 002657 654 002661 657 002662 674 002722 675 002723 676 002733 677 002737 678 002744 679 002750 680 002754 681 002757 683 002762 685 002763 687 002767 688 003001 691 003006 692 003011 693 003025 696 003026 698 003030 699 003044 702 003045 704 003051 706 003055 707 003057 708 003073 711 003074 712 003075 715 003101 716 003105 719 003106 721 003123 722 003125 723 003141 726 003142 727 003154 730 003161 731 003164 733 003214 735 003246 736 003262 739 003263 741 003265 742 003301 745 003302 746 003314 749 003323 751 003326 752 003342 754 003343 757 003344 759 003351 760 003365 763 003366 764 003371 765 003404 768 003420 770 003422 773 003427 775 003454 776 003474 779 003475 780 003501 781 003511 782 003513 784 003514 785 003521 786 003523 787 003525 789 003531 790 003542 791 003544 792 003560 795 003561 797 003602 798 003604 799 003620 802 003621 804 003637 806 003642 807 003644 808 003645 809 003651 810 003653 811 003667 813 003670 814 003671 818 003673 825 003747 828 003761 829 003762 831 003763 834 003764 849 004010 850 004011 851 004021 854 004042 856 004044 858 004056 860 004062 862 004065 863 004066 865 004077 868 004107 869 004111 870 004115 871 004120 872 004121 875 004122 876 004124 877 004125 878 004127 881 004155 886 004156 887 004167 888 004174 890 004207 892 004215 893 004227 894 004234 895 004241 896 004243 897 004245 898 004250 900 004251 901 004253 905 004255 906 004261 907 004271 909 004277 910 004311 911 004316 912 004323 913 004325 914 004327 915 004332 917 004333 918 004335 922 004340 924 004343 925 004344 927 004355 930 004366 932 004373 933 004375 934 004400 935 004403 936 004404 939 004405 941 004406 944 004422 945 004424 946 004427 948 004432 949 004434 951 004464 953 004465 954 004466 957 004470 959 004475 960 004477 961 004502 967 004503 968 004504 970 004507 972 004511 983 004512 985 004546 986 004547 987 004557 988 004571 990 004573 991 004615 995 004627 996 004631 999 004632 1001 004636 1003 004671 1006 004700 1007 004701 1010 004702 1011 004706 1014 004711 1015 004723 1016 004730 1018 004743 1020 004760 1021 004771 1023 004774 1024 004776 1027 005000 1028 005004 1029 005013 1031 005030 1032 005041 1034 005044 1037 005046 1038 005051 1039 005054 1040 005062 1041 005065 1043 005067 1044 005077 1045 005112 1046 005116 1047 005121 1048 005124 1049 005126 1050 005133 1051 005135 1054 005141 1055 005144 1057 005145 1059 005147 1060 005153 1062 005155 1063 005160 1065 005200 1066 005203 1068 005204 1070 005206 1072 005217 1074 005220 1077 005232 1092 005233 1094 005267 1095 005270 1097 005302 1098 005304 1099 005314 1100 005326 1105 005335 1106 005340 1107 005344 1108 005346 1110 005347 1112 005357 1113 005362 1116 005363 1117 005366 1119 005371 1120 005415 1121 005417 1122 005422 1123 005426 1125 005427 1126 005433 1127 005435 1128 005445 1129 005500 1130 005502 1131 005526 1132 005530 1133 005533 1134 005534 1137 005535 1139 005541 1140 005543 1141 005553 1142 005555 1143 005601 1144 005603 1145 005606 1146 005607 1150 005610 1151 005613 1154 005614 1157 005633 1158 005635 1161 005643 1162 005650 1164 005651 1165 005652 1166 005656 1167 005662 1168 005664 1170 005665 1173 005671 1175 005676 1177 005701 1178 005712 1179 005714 1180 005716 1181 005720 1182 005723 1183 005725 1185 005726 1187 005766 1188 005767 1189 006007 1190 006011 1191 006035 1193 006036 1195 006062 1196 006063 1197 006107 1198 006120 1200 006122 1201 006133 1202 006147 1203 006161 1205 006202 1206 006212 1207 006216 1208 006220 1209 006222 1210 006225 1212 006226 1214 006230 1215 006233 1217 006234 1219 006245 1221 006263 1222 006275 1224 006307 1225 006324 1226 006335 1227 006347 1228 006357 1229 006363 1230 006365 1232 006370 1234 006402 1236 006403 1237 006405 1238 006407 1239 006411 1241 006422 1242 006426 1243 006435 1244 006452 1245 006463 1246 006473 1247 006477 1248 006501 1249 006504 1251 006505 1253 006507 1255 006511 1256 006514 1257 006520 1259 006521 1261 006557 1262 006560 1263 006566 1266 006573 1267 006617 1270 006624 1271 006626 1276 006631 1277 006652 1279 006657 1282 006660 1283 006710 1285 006715 1289 006716 1290 006727 1291 006744 1294 006746 1297 006756 1298 006761 1301 006762 1303 007001 1304 007006 1305 007022 1306 007024 1308 007025 1314 007043 1315 007045 1319 007046 1321 007060 1322 007062 1323 007064 1324 007072 1325 007077 1326 007101 1327 007105 1328 007107 1329 007111 1330 007114 1332 007115 1338 007124 1339 007135 1340 007141 1342 007144 1343 007146 1345 007147 1347 007215 1348 007216 1349 007244 1350 007246 1351 007300 1353 007301 1355 007333 1356 007334 1357 007342 1358 007347 1359 007370 1360 007372 1361 007422 1363 007424 1364 007436 1365 007447 1366 007464 1367 007475 1368 007505 1369 007511 1371 007513 1372 007516 1374 007517 1375 007521 1377 007524 1385 007525 1387 007552 1388 007556 1390 007566 1392 007575 1393 007577 1394 007604 1395 007606 1397 007607 1399 007627 1400 007650 1403 007651 1409 007670 1410 007674 1411 007700 1413 007731 1414 007743 1415 007747 1417 007752 1419 007772 1420 007774 1421 010001 1425 010030 1426 010043 1427 010056 1429 010071 1434 010121 1435 010127 1436 010132 1441 010162 1443 010177 1450 010230 1451 010232 1454 010233 1463 010250 1464 010254 1465 010260 1467 010340 1471 010420 1473 010423 1474 010456 1476 010460 1477 010472 1479 010474 1481 010477 1482 010510 1483 010514 1484 010516 1485 010521 1486 010523 1487 010525 1488 010544 1489 010546 1490 010551 1491 010603 1493 010604 1494 010626 1496 010627 1498 010642 1499 010655 1500 010670 1502 010705 1503 010710 1510 010711 1516 010713 1517 010714 1519 010717 1524 010761 1527 010762 1529 010763 1530 010766 1531 010770 1532 010772 1533 010775 1534 010777 1535 011001 1536 011004 1537 011006 1539 011010 1543 011051 1547 011052 1555 011054 1556 011057 1557 011063 1559 011065 1560 011074 1562 011077 1563 011110 1564 011112 1566 011113 1567 011114 1570 011115 1573 011121 1576 011123 1579 011134 1581 011136 1584 011137 1586 011143 1588 011145 1590 011157 1592 011163 1593 011164 1594 011166 1595 011170 1596 011172 1598 011174 1599 011176 1602 011213 1604 011236 1605 011237 1607 011245 1608 011246 1612 011251 1617 011252 1622 011254 1625 011272 1626 011323 1627 011340 1628 011355 1629 011372 1632 011406 1633 011413 1634 011420 1643 011422 1644 011424 1645 011431 1651 011433 1656 011454 1658 011463 1662 011521 1665 011536 1666 011537 1671 011540 1678 011542 1682 011560 1683 011567 1684 011571 1685 011573 1686 011603 1687 011611 1688 011623 1689 011625 1692 011642 1695 011652 1696 011656 1698 011657 1699 011661 1700 011664 1702 011665 1706 011666 1712 011670 1715 011674 1716 011675 1717 011705 1719 011711 1724 011726 1725 011727 1727 011731 1728 011732 1732 011743 1733 011746 1735 011750 1737 011751 1740 011755 1741 011757 1742 011764 1743 011770 1744 011774 1748 011777 1755 012010 1757 012016 1758 012017 1759 012023 1760 012024 1762 012026 1763 012027 1764 012042 1765 012047 1767 012056 1768 012057 1770 012065 1771 012066 1773 012070 1774 012072 1775 012077 1776 012104 1777 012106 1778 012111 1782 012114 1786 012116 1787 012123 1788 012127 1789 012130 1790 012132 1791 012133 1796 012152 1798 012153 1800 012154 1802 012156 1803 012161 1804 012163 1805 012165 1806 012166 1807 012200 1808 012203 1809 012206 1811 012217 1812 012221 1814 012223 1815 012226 1816 012230 1818 012232 1822 012233 1824 012241 1825 012255 1826 012262 1828 012263 1830 012276 1832 012300 1833 012303 1834 012314 1836 012317 1838 012340 1841 012343 1843 012350 1844 012352 1845 012356 1846 012362 1847 012363 1849 012365 1850 012367 1855 012430 1856 012432 1860 012433 1861 012442 1865 012450 1867 012452 1869 012456 1871 012457 1873 012465 1875 012500 1876 012511 1877 012526 1880 012543 1881 012547 1883 012554 1884 012560 1886 012572 1891 012573 1898 012601 1899 012605 1901 012624 1902 012627 1903 012632 1904 012635 1906 012636 1907 012646 1908 012650 1911 012657 1912 012661 1916 012662 1917 012666 1919 012670 1923 012704 1927 012705 1936 012716 1937 012722 1938 012723 1941 012732 1942 012736 1943 012741 1945 012743 1948 012744 1958 012755 1961 012772 1962 013007 1963 013027 1965 013036 1966 013050 1970 013074 1973 013100 1975 013102 1976 013106 1977 013120 1978 013127 1979 013131 1980 013134 1982 013145 1983 013150 1984 013151 1985 013154 1986 013156 1987 013162 1988 013164 1989 013172 1990 013174 1991 013177 1992 013245 1994 013246 1996 013253 1998 013256 2002 013257 2007 013260 2009 013262 2010 013266 2011 013300 2012 013307 2013 013311 2014 013314 2016 013325 2017 013330 2018 013331 2019 013334 2020 013336 2021 013342 2022 013344 2023 013352 2024 013354 2026 013357 2027 013415 2029 013416 2039 013427 2040 013434 2041 013453 2042 013460 2043 013467 2045 013472 ----------------------------------------------------------- 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