COMPILATION LISTING OF SEGMENT ls_validate_user_ Compiled by: Multics PL/I Compiler, Release 29, of July 28, 1986 Compiled at: Honeywell Bull, Phx. Az., Sys-M Compiled on: 08/04/87 1302.1 mst Tue Options: optimize map 1 /****^ ******************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* ******************************************** */ 6 7 /****^ HISTORY COMMENTS: 8* 1) change(85-08-01,Coren), approve(87-06-26,MCR7679), 9* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 10* Initial coding. 11* 2) change(87-02-20,GDixon), approve(87-06-26,MCR7679), 12* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 13* A) Modified to properly set terminal type, based upon answerback 14* term_type information returned by tty_info_$decode_answerback. 15* B) Eliminate extra newline following special session line of greeting 16* banner (dsa 141). 17* C) Look for changes to greeting banner only every 3 minutes, rather than 18* every 30 seconds. 19* D) Changed to use ls_cp_info.(login connect)_info_dir. 20* E) Make destroy -hold the default for the login-connect-loop request. 21* Add -no_hold to counter -hold. Allow -immediate for new_proc and 22* destroy. (dsa 111) 23* F) Add -auth to the dial request. 24* G) Added login timeout handler to allow logins for only 25* installation_parms.login_time seconds. Add a wakeup loop count 26* mechanism to detect high rate of wakeups (indicating comm line 27* failure) and disconnect comm line. (dsa 70) 28* H) Modified to make hello always print greeting banner, even at login 29* request loop returned to by "logout -hold -brief". 30* I) Correct coding standard violations. 31* J) Add check for minimum password length. 32* K) Add check for new password same as original password. 33* L) Generate passwords whose length is specified by 34* installation_parms.password_gpw_length and .password_min_length. 35* M) Avoid telling Initializer when login fails because of too many 36* bad passwords. (dsa 154) 37* N) Prompt for login args when user just types "login", "enter" or 38* "enterp". (dsa 135) 39* 3) change(87-04-16,GDixon), approve(87-06-25,MCR7702), 40* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 41* A) Include LS_RESPONSE_TYPES value in Unexpected response error message. 42* B) Include time of last bad password in incorrect_passwords warning. 43* C) Copy login_server_operator_response.process_group_id into 44* ls_process_info for operator logins, so process_group_id will be 45* correct in connection list. 46* D) Add login_server_validate_request.connection_info.line_type. (dsa 123) 47* E) Upgraded for change to answer_table.incl.pl1. 48* F) Add support for login_server_process_request.minimum_ring, setting it 49* to the minimum ring for DSA (ring 2). This enforces the limitation in 50* dsa 208. 51* 4) change(87-05-05,GDixon), approve(87-06-26,MCR7679), 52* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 53* A) Don't attempt to call ssu_$abort_subsystem in io_error on unit until 54* after ssu_$listen has been called. Otherwise, ssu_ will attempt to 55* print a message on the terminal, causing another io_error (thus 56* looping to get oob_stack). 57* 5) change(87-05-07,GDixon), approve(87-06-25,MCR7702), 58* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 59* A) Make LOGIN_TIMEOUT handler correctly check ls_validate.info.state to 60* determine if hangup is needed. 61* B) Changed MINIMUM_DSA_RING to 2. 62* 6) change(87-05-14,GDixon), approve(87-06-25,MCR7702), 63* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 64* A) Copy login_server_process_response.brief into ls_validate_info.brief. 65* B) Change list request to print initial ring and authorization of 66* disconnected processes, and use table format. 67* C) Add cleanup handler to delete Initializer reply event channel. 68* D) Allow process termination (eg, operator bump) after user is logged in 69* but before process creation. 70* E) Consolidate handling of validate_response in a new internal proc. 71* F) Remove access_class_range from our calling sequence. 72* G) Use ls_connection_desc.access_class_range and .minimum_ring instead. 73* H) Add connection_info to login_server_list_request structure. 74* 7) change(87-05-26,GDixon), approve(87-06-26,MCR7679), 75* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 76* A) Use new ls_report_subr_error_ calling sequence. Avoid lsdumps for 77* some, "expected" errors. 78* 8) change(87-06-08,GDixon), approve(87-06-26,MCR7679), 79* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 80* A) Change Parse_login_args to remove -hd as short name for -hold. This 81* program (and the documentation) says -hd is short name for 82* -home_dir. 83* 9) change(87-06-13,GDixon), approve(87-06-26,MCR7679), 84* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 85* A) Correctly diagnose io_error condition when going to NO_SETUP label 86* from io_error on unit. 87* B) Similarly, diagnose "iox_$control terminal_info" when going there 88* from Read_answerback internal proc. 89* 10) change(87-06-26,GDixon), approve(87-06-26,MCR7679), 90* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 91* A) Change -printer_off/-no_printer_off to match parse_login_line_'s 92* -print_off/-no_print_off. 93* B) Add these control args to the dial preaccess command. 94* 11) change(87-07-06,GDixon), approve(87-07-06,MCR7679), 95* audit(87-07-10,Parisek), install(87-08-04,MR12.1-1055): 96* A) Fix bug in handling of enter and enterp preaccess commands. These 97* commands were never getting forwarded to the Initializer. 98* END HISTORY COMMENTS */ 99 100 /* format: style4,delnl,insnl,^ifthendo */ 101 ls_validate_user_: 102 procedure (a_ls_cp_info_ptr, a_ls_validate_options_ptr, 103 a_process_info_ptr, a_code); 104 105 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 106 /* */ 107 /* This procedure engages in the login dialogue with the user, and exchanges */ 108 /* requests/responses with the Initializer in order to get a process created */ 109 /* or reconnected, etc. */ 110 /* */ 111 /* A non-zero status code is returned if and only if the connection is */ 112 /* terminated. */ 113 /* */ 114 /* The login dialogue is implemented as an ssu_ subsystem, wherein the */ 115 /* various preaccess and access requests are subsystem requests. The */ 116 /* "unknown_request" procedure is replaced in order to check for a special */ 117 /* session login word. */ 118 /* */ 119 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 120 121 /* PARAMETERS */ 122 123 dcl a_arg_list_ptr pointer parameter; 124 dcl a_code fixed bin (35) parameter; 125 dcl a_cond_name char (*) parameter; /* for timer call routine -- not used */ 126 dcl a_continue_sw bit (1) aligned parameter; 127 dcl a_data_ptr pointer parameter; 128 dcl a_info_ptr pointer parameter; 129 dcl a_ls_cp_info_ptr pointer parameter; 130 dcl a_ls_validate_options_ptr pointer parameter; 131 dcl a_mc_ptr pointer parameter; /* for timer call routine -- not used */ 132 dcl a_process_info_ptr pointer parameter; 133 dcl a_request_name char (*) parameter; 134 dcl a_sci_ptr pointer parameter; 135 dcl a_wc_ptr pointer parameter; /* for timer call routine -- not used */ 136 137 138 /* AUTOMATIC */ 139 140 dcl anonymous bit (1) aligned; 141 dcl answer char (3); 142 dcl arg_list_ptr pointer; 143 dcl argl fixed bin (21); 144 dcl argp pointer; 145 dcl auth_range_string char (512); 146 dcl code fixed bin (35); 147 dcl dial_person char (22); 148 dcl dial_project char (9); 149 dcl gpw_length fixed bin; 150 dcl hangup_flag bit (1) aligned; 151 dcl help_flag bit (1) aligned; 152 dcl hold bit (1) aligned; 153 dcl new_password char (8) aligned; 154 dcl new_password_generated char (8); 155 dcl new_password_hyphenated char (12); 156 dcl period_index fixed bin; 157 dcl process_request_size fixed bin (18); 158 dcl quit_flag bit (1) aligned; 159 dcl request_name char (32); 160 dcl sci_ptr pointer; 161 dcl second_new_password char (8) aligned; 162 dcl subr_name char (64); 163 dcl this_arg fixed bin; 164 dcl user_specified bit (1); 165 166 167 /* AUTOMATIC STRUCTURES */ 168 169 dcl 1 auto_as_user_message_info aligned like as_user_message_info; 170 dcl 1 auto_dial_request aligned like login_server_dial_request; 171 dcl 1 auto_hangup_request aligned like login_server_disconnect_request; 172 dcl 1 auto_logout_request aligned like login_server_logout_request; 173 dcl 1 auto_rp_options aligned like rp_options; 174 dcl 1 auto_validate_info aligned like ls_validate_info; 175 dcl 1 auto_validate_request aligned like login_server_validate_request; 176 177 178 /* The following declarations are grouped together because they are all 179* "global" variables set by Parse_login_args in response to control arguments 180* on the initial request line. 181**/ 182 183 dcl auth_specified bit (1) aligned; 184 dcl authorization bit (72) aligned; 185 dcl brief bit (1) aligned; 186 dcl brief_specified bit (1) aligned; 187 dcl cda bit (1) aligned; 188 dcl cdp bit (1) aligned; 189 dcl change_password bit (1) aligned; 190 dcl command_type fixed bin; 191 dcl first_arg_arg fixed bin; /* position in argument list of first arg after "-args" */ 192 dcl force bit (1) aligned; 193 dcl force_specified bit (1) aligned; 194 dcl generate_password bit (1) aligned; 195 dcl hold_given bit (1) aligned; 196 dcl hold_on_destroy bit (1) aligned; 197 dcl home_dir char (168); 198 dcl immediate bit (1) aligned; 199 dcl mask_needed bit (1) aligned; 200 dcl mode_string char (512); 201 dcl no_start_up bit (1) aligned; 202 dcl number_of_args fixed bin; 203 dcl operator bit (1) aligned; 204 dcl outer_module char (32); 205 dcl person_name char (22); 206 dcl preempt bit (1) aligned; 207 dcl preempt_specified bit (1) aligned; 208 dcl process_number fixed bin; 209 dcl process_overseer char (168); 210 dcl project_name char (9); 211 dcl ring fixed bin; 212 dcl ring_specified bit (1) aligned; 213 dcl save bit (1) aligned; 214 dcl save_specified bit (1) aligned; 215 dcl subsystem char (168); 216 dcl terminal_id char (4); 217 dcl terminal_type char (32); 218 dcl virtual_channel_name char (32); 219 dcl warn bit (1) aligned; 220 dcl warn_specified bit (1) aligned; 221 222 223 /* BASED */ 224 225 dcl arg char (argl) based (argp); 226 dcl system_area area based (system_areap); 227 228 229 /* ENTRIES */ 230 231 dcl check_password_ entry (char (*), char (*), fixed bin (35)); 232 dcl convert_authorization_$from_string entry (bit (72) aligned, char (*), fixed bin (35)); 233 dcl convert_authorization_$to_string entry (bit (72) aligned, char (*), fixed bin (35)); 234 dcl convert_authorization_$to_string_range entry ((2) bit (72) aligned, char (*), fixed bin (35)); 235 dcl cu_$arg_count_rel entry (fixed bin, ptr, fixed bin (35)); 236 dcl cu_$arg_ptr_rel entry (fixed bin, ptr, fixed bin (21), fixed bin (35), ptr); 237 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 238 /** */ 239 dcl dsa_log_manager_$trace_message entry options (variable); 240 /*** */ 241 dcl date_time_$format entry (char (*), fixed bin (71), char (*), char (*)) returns (char (250) var); 242 dcl date_time_$format_max_length entry (char (*), char (*), char (*)) returns (fixed bin); 243 dcl generate_word_ entry (char (*), char (*), fixed bin, fixed bin); 244 dcl get_system_free_area_ entry () returns (ptr); 245 dcl ioa_ entry () options (variable); 246 dcl ioa_$nnl entry () options (variable); 247 dcl iox_$control entry (ptr, char (*), ptr, fixed bin (35)); 248 dcl iox_$get_chars entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 249 dcl iox_$get_line entry (ptr, ptr, fixed bin (21), fixed bin (21), fixed bin (35)); 250 dcl iox_$modes entry (ptr, char (*), char (*), fixed bin (35)); 251 dcl ipc_$create_ev_chn entry (fixed bin (71), fixed bin (35)); 252 dcl ipc_$delete_ev_chn entry (fixed bin(71), fixed bin(35)); 253 dcl ls_convert_as_error_code_ entry (fixed bin (35)) returns (fixed bin (35)); 254 dcl ls_message_$print entry options (variable); 255 dcl ls_message_$print_nnl entry options (variable); 256 dcl ls_message_$print_error entry options (variable); 257 dcl ls_report_internal_error_ entry options (variable); 258 dcl ls_report_subr_error_ entry (fixed bin(35), char(*), ptr, char(*), bit(1) aligned, bit(1) aligned); 259 dcl net_info_$get_field entry (char (*), char (*), char (*), char (*), fixed bin (35)); 260 dcl scramble_ entry (char (8)) returns (char (8)); 261 dcl send_ls_request_ entry (ptr, fixed bin (18), ptr, fixed bin (35)); 262 dcl ssu_$abort_line entry () options (variable); 263 dcl ssu_$abort_subsystem entry () options (variable); 264 dcl ssu_$add_info_dir entry (ptr, char (*), fixed bin, fixed bin (35)); 265 dcl ssu_$add_request_table entry (ptr, ptr, fixed bin, fixed bin (35)); 266 dcl ssu_$arg_count entry (ptr, fixed bin); 267 dcl ssu_$arg_list_ptr entry (ptr, ptr); 268 dcl ssu_$arg_ptr entry (ptr, fixed bin, ptr, fixed bin (21)); 269 dcl ssu_$cpescape_disabled entry options (variable); 270 dcl ssu_$create_invocation entry (char (*), char (*), ptr, ptr, char (*), ptr, fixed bin (35)); 271 dcl ssu_$delete_info_dir entry (ptr, char (*), fixed bin (35)); 272 dcl ssu_$delete_request_table entry (ptr, ptr, fixed bin (35)); 273 dcl ssu_$destroy_invocation entry (ptr); 274 dcl ssu_$execute_line entry (ptr, ptr, fixed bin (21), fixed bin (35)); 275 dcl ssu_$get_request_name entry (ptr) returns (char (32)); 276 dcl ssu_$get_info_ptr entry (ptr) returns (ptr); 277 dcl ssu_$get_procedure entry (ptr, char (*), entry, fixed bin (35)); 278 dcl ssu_$get_request_processor_options entry (ptr, char (8), ptr, fixed bin (35)); 279 dcl ssu_$listen entry (ptr, ptr, fixed bin (35)); 280 dcl ssu_$print_message entry () options (variable); 281 dcl ssu_$set_procedure entry (ptr, char (*), entry, fixed bin (35)); 282 dcl ssu_$set_prompt_mode entry (ptr, bit (*)); 283 dcl ssu_$set_request_processor_options entry (ptr, ptr, fixed bin (35)); 284 dcl ssu_requests_$help entry options (variable); 285 dcl system_info_$installation_id entry (char (*)); 286 dcl system_info_$sysid entry (char (*)); 287 dcl timer_manager_$alarm_call entry (fixed bin (71), bit (2), entry, ptr); 288 dcl timer_manager_$reset_alarm_call entry (entry, ptr); 289 dcl ttt_info_$decode_answerback entry (char (*), fixed bin, char (*), char (4), fixed bin (35)); 290 dcl user_message_$read_message entry (ptr, ptr, fixed bin (35)); 291 292 293 /* EXTERNAL STATIC */ 294 295 dcl ( 296 as_error_table_$no_connect_aclass, 297 as_error_table_$no_such_process_msg 298 ) fixed bin (35) external static; 299 300 dcl ( 301 error_table_$action_not_performed, 302 error_table_$bad_arg, 303 error_table_$bad_conversion, 304 error_table_$bad_mode, 305 error_table_$badopt, 306 error_table_$fatal_error, 307 error_table_$inconsistent, 308 error_table_$long_record, 309 error_table_$noarg, 310 error_table_$no_message, 311 error_table_$smallarg, 312 error_table_$timeout, 313 error_table_$too_many_args, 314 error_table_$unimplemented_version, 315 error_table_$user_requested_hangup, 316 error_table_$user_requested_logout, 317 error_table_$wrong_no_of_args 318 ) fixed bin (35) external static; 319 320 dcl ( 321 iox_$user_input, 322 iox_$user_io 323 ) pointer external static; 324 325 dcl ls_data_$suffix (0:9) char (4) external static; 326 dcl ls_data_$teens_suffix (0:9) char (4) external static; 327 328 dcl ( 329 ls_message_table_$aclass_banner_msg, 330 ls_message_table_$already_logged_in, 331 ls_message_table_$authorization, 332 ls_message_table_$bad_password_check, 333 ls_message_table_$bad_password_format, 334 ls_message_table_$connect_requests, 335 ls_message_table_$connected, 336 ls_message_table_$connected_after_new_proc, 337 ls_message_table_$cost_message, 338 ls_message_table_$current_modes, 339 ls_message_table_$current_terminal_id, 340 ls_message_table_$current_terminal_type, 341 ls_message_table_$default_auth_changed, 342 ls_message_table_$default_project_changed, 343 ls_message_table_$dial_connect_msg, 344 ls_message_table_$dialed_to_mc, 345 ls_message_table_$disconnected_processes, 346 ls_message_table_$dropped_by_mc, 347 ls_message_table_$generated_password, 348 ls_message_table_$generated_password_error, 349 ls_message_table_$give_instructions, 350 ls_message_table_$greeting_msg, 351 ls_message_table_$hangup, 352 ls_message_table_$help_gpw_verify, 353 ls_message_table_$help_new_password, 354 ls_message_table_$help_npw_verify, 355 ls_message_table_$help_password, 356 ls_message_table_$incorrect_passwords, 357 ls_message_table_$last_login, 358 ls_message_table_$list_process, 359 ls_message_table_$list_proc_header, 360 ls_message_table_$login, 361 ls_message_table_$login_args, 362 ls_message_table_$login_excess_wakeups, 363 ls_message_table_$login_requests, 364 ls_message_table_$login_timeout, 365 ls_message_table_$logout, 366 ls_message_table_$logout_disconnected, 367 ls_message_table_$multiple_login_msg, 368 ls_message_table_$must_give_process_no, 369 ls_message_table_$new_password, 370 ls_message_table_$new_password_again, 371 ls_message_table_$new_password_error, 372 ls_message_table_$new_password_indistinct, 373 ls_message_table_$no_connect_aclass, 374 ls_message_table_$no_disconnected_processes, 375 ls_message_table_$no_such_process, 376 ls_message_table_$password, 377 ls_message_table_$password_changed, 378 ls_message_table_$password_expired, 379 ls_message_table_$password_format_warning, 380 ls_message_table_$password_quit, 381 ls_message_table_$password_unused_too_long, 382 ls_message_table_$please_try_again, 383 ls_message_table_$process_destroyed, 384 ls_message_table_$requesting_dial_to_mc, 385 ls_message_table_$special_session, 386 ls_message_table_$user_required_for_dial 387 ) fixed bin (35) external static; 388 389 dcl ls_ssu_request_tables_$connect_requests fixed bin external static; 390 dcl ls_ssu_request_tables_$enabled_standard_requests fixed bin external static; 391 dcl ls_ssu_request_tables_$login_requests fixed bin external static; 392 393 dcl ( 394 ssu_et_$program_interrupt, 395 ssu_et_$request_line_aborted, 396 ssu_et_$subsystem_aborted 397 ) fixed bin (35) external static; 398 399 /* INTERNAL STATIC */ 400 401 dcl BS char (1) int static options (constant) initial (""); /* backspace */ 402 dcl CONSTANT_MASK char (72) internal static options (constant) 403 initial ("QMQMQMQMQMQM" || (12)"" || "XWXWXWXWXWXW" || (12)"" || "986543435689" || (12)""); 404 /* constant part of password mask -- contains backspaces between graphic strings */ 405 dcl DONT_FORCE_MESSAGE bit (1) int static options (constant) init ("0"b); 406 dcl DONT_TAKE_DUMP bit (1) aligned int static options (constant) init ("0"b); 407 dcl DONT_TELL_INITIALIZER bit (1) aligned int static options (constant) init ("0"b); 408 dcl DONT_TELL_USER bit (1) aligned int static options (constant) init ("0"b); 409 dcl DOT char (1) internal static options (constant) initial ("."); 410 dcl FALSE bit (1) int static options (constant) init ("0"b); 411 dcl FORCE_MESSAGE bit (1) int static options (constant) init ("1"b); 412 dcl HELP_GI_REQUEST char (17) internal static options (constant) initial ("help general_info"); 413 dcl HYPHEN char (1) internal static options (constant) initial ("-"); 414 dcl LARGE_NUMBER fixed bin internal static options (constant) initial (100000); 415 /* for adding standard request table at end */ 416 dcl LS_DIALOGUE_NAME char (14) internal static options (constant) initial ("login_dialogue"); 417 dcl LS_DIALOGUE_VERSION char (4) internal static options (constant) initial ("1.0 "); 418 dcl NL char (1) internal static options (constant) initial (" 419 "); 420 dcl ONE_MILLION fixed bin (35) internal static options (constant) initial (1000000); 421 dcl OUR_NAME char (17) internal static options (constant) initial ("ls_validate_user_"); 422 dcl RANDOM_ALPHABET char (40) aligned int static init ("etaiosqwertyuioplkjhgfdsazxcvbnmqhpwygdj"); 423 /* For variable part of password mask */ 424 dcl SP char (1) int static options (constant) init (" "); 425 dcl SPSP char (2) int static options (constant) init (" "); 426 dcl SPACE_SEMICOLON char (2) internal static options (constant) initial (" ;"); 427 dcl SYSTEM_DIAL_ID char (6) internal static options (constant) initial ("system"); 428 dcl SYSTEM_LOW bit (72) int static options (constant) init (""b); 429 dcl TAKE_DUMP bit (1) aligned int static options (constant) init ("1"b); 430 dcl TELL_INITIALIZER bit (1) aligned int static options (constant) init ("1"b); 431 dcl TELL_USER bit (1) aligned int static options (constant) init ("1"b); 432 dcl THREE_MINUTES fixed bin (71) internal static options (constant) initial (180000000); 433 dcl TRUE bit (1) int static options (constant) init ("1"b); 434 dcl system_areap pointer internal static initial (null ()); 435 436 437 /* BUILTINS & CONDITIONS */ 438 439 dcl (addr, after, before, bit, clock, copy, currentsize, divide, float, hbound, index, lbound, length, max, mod, null, 440 rank, rtrim, search, size, string, substr, translate, unspec) builtin; 441 442 dcl (cleanup, io_error) condition; 443 444 ls_cp_info_ptr = a_ls_cp_info_ptr; 445 ls_validate_options_ptr = a_ls_validate_options_ptr; 446 ls_process_info_ptr = a_process_info_ptr; 447 448 if system_areap = null () 449 then system_areap = get_system_free_area_ (); 450 451 ls_connection_desc_ptr = ls_cp_info.connection_desc_ptr; 452 453 if ls_process_info.version ^= LS_PROCESS_INFO_V1 454 then do; 455 a_code = error_table_$unimplemented_version; 456 return; 457 end; 458 459 unspec (auto_validate_info) = ""b; 460 auto_validate_info.cp_info_ptr = ls_cp_info_ptr; 461 auto_validate_info.options_ptr = ls_validate_options_ptr; 462 auto_validate_info.process_info_ptr = ls_process_info_ptr; 463 auto_validate_info.connection_desc_ptr = ls_cp_info.connection_desc_ptr; 464 auto_validate_info.process_request_ptr = null (); 465 auto_validate_info.brief = ls_validate_options.brief; 466 auto_validate_info.minimum_ring = ls_connection_desc.minimum_ring; 467 auto_validate_info.connection_name = ls_connection_desc.name; 468 auto_validate_info.access_class_range = ls_connection_desc.access_class_range; 469 ls_validate_info_ptr = addr (auto_validate_info); 470 call Change_state (JUST_CONNECTED); 471 472 sci_ptr = null (); 473 on cleanup 474 begin; 475 if ls_validate_info.process_request_ptr ^= null () 476 /* which means lower-level cleanup handler didn't get it */ 477 then free ls_validate_info.process_request_ptr -> login_server_process_request in (system_area); 478 479 if auto_validate_info.reply_channel ^= 0 then 480 call ipc_$delete_ev_chn (auto_validate_info.reply_channel, 481 code); 482 483 if sci_ptr ^= null () 484 then call ssu_$destroy_invocation (sci_ptr); 485 486 call Change_state (DISCONNECTED); 487 end; 488 489 call ssu_$create_invocation (LS_DIALOGUE_NAME, LS_DIALOGUE_VERSION, addr (auto_validate_info), 490 addr (ls_ssu_request_tables_$login_requests), ls_cp_info.login_info_dir, sci_ptr, code); 491 492 if code ^= 0 493 then do; 494 call ls_report_subr_error_ (code, OUR_NAME, ls_cp_info_ptr, 495 "ssu_$create_invocation", TELL_USER, TAKE_DUMP); 496 call Hangup (DONT_TELL_INITIALIZER); 497 a_code = code; 498 return; 499 end; 500 501 auto_validate_info.sci_ptr = sci_ptr; 502 503 call ssu_$set_procedure (sci_ptr, "cpescape", ssu_$cpescape_disabled, code); 504 /* don't want ".." escapes in login dialogue */ 505 if code ^= 0 506 then do; 507 subr_name = "ssu_$set_procedure"; 508 go to NO_SETUP; 509 end; 510 511 call ssu_$add_request_table (sci_ptr, addr (ls_ssu_request_tables_$enabled_standard_requests), LARGE_NUMBER, 512 code); 513 if code ^= 0 514 then do; 515 subr_name = "ssu_$add_request_table"; 516 go to NO_SETUP; 517 end; 518 519 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 520 /* */ 521 /* Disable iteration in requests. */ 522 /* */ 523 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 524 525 call ssu_$get_request_processor_options (sci_ptr, RP_OPTIONS_VERSION_1, addr (auto_rp_options), code); 526 if code ^= 0 527 then do; 528 subr_name = "ssu$get_request_processor_options"; 529 go to NO_SETUP; 530 end; 531 auto_rp_options.non_standard_language = "1"b; 532 auto_rp_options.character_types (rank ("(")), auto_rp_options.character_types (rank (")")), 533 auto_rp_options.character_types (rank ("[")), auto_rp_options.character_types (rank ("]")), 534 auto_rp_options.character_types (rank (";")) = NORMAL_CHARACTER; 535 call ssu_$set_request_processor_options (sci_ptr, addr (auto_rp_options), code); 536 if code ^= 0 537 then do; 538 subr_name = "ssu_$set_request_processor_options"; 539 go to NO_SETUP; 540 end; 541 542 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 543 /* */ 544 /* Setup procedure to look for special session login word. */ 545 /* */ 546 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 547 548 call ssu_$set_procedure (sci_ptr, "unknown_request", unknown_request, code); 549 if code ^= 0 550 then do; 551 subr_name = "ssu_$set_procedure"; 552 go to NO_SETUP; 553 end; 554 555 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 556 /* */ 557 /* Establish procedure and data to measure wakeup frequency. Login aborted */ 558 /* if the wakeups (incoming lines) are too frequent. */ 559 /* */ 560 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 561 562 ls_validate_info.wakeup_loop.recent_wakeup_time = clock (); 563 ls_validate_info.wakeup_loop.recent_wakeup_count = 1; 564 call ssu_$get_procedure (sci_ptr, "execute_line", ls_validate_info.wakeup_loop.real_execute_line, code); 565 if code ^= 0 566 then do; 567 subr_name = "ssu_$get_procedure"; 568 go to NO_SETUP; 569 end; 570 call ssu_$set_procedure (sci_ptr, "execute_line", COUNT_WAKEUP_FOR_REQUEST_LINE, code); 571 if code ^= 0 572 then do; 573 subr_name = "ssu_$set_procedure"; 574 go to NO_SETUP; 575 end; 576 577 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 578 /* */ 579 /* Turn off ssu_ prompting for request lines. */ 580 /* */ 581 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 582 583 call ssu_$set_prompt_mode (sci_ptr, DONT_PROMPT | DONT_PROMPT_AFTER_NULL_LINES | DONT_PROMPT_IF_TYPEAHEAD); 584 585 586 call ipc_$create_ev_chn (auto_validate_info.reply_channel, code); 587 /* set up event channel for as_request replies */ 588 if code ^= 0 589 then do; 590 subr_name = "ipc_$create_ev_chn"; 591 go to NO_SETUP; 592 end; 593 594 auto_validate_info.server_handle = bit (clock (), 72); 595 596 on io_error /* connection must be gone, prior to entering */ 597 begin; /* ssu_$listen; we cannot call ssu_$abort_subsystem */ 598 /* here, for it would try to write on connection */ 599 call Hangup_no_message (DONT_TELL_INITIALIZER); 600 ls_validate_info.code = error_table_$fatal_error; 601 subr_name = "io_error condition"; 602 go to NO_SETUP; /* calling ssu_$abort_subsystem here would cause */ 603 /* ssu_ to print message, causing resignal of */ 604 end; /* io_error condition, and infinite loop! */ 605 606 if ^ls_validate_options.not_first | ^ls_process_info.terminal_info_set 607 then call Read_answerback (); /* this will also set initial terminal type */ 608 /* and do all the necessary mode-setting */ 609 else do; 610 auto_validate_info.user_connection_info.terminal_type = ls_process_info.terminal_type; 611 auto_validate_info.user_connection_info.terminal_id = ls_process_info.terminal_id; 612 auto_validate_info.user_connection_info.line_type = ls_process_info.line_type; 613 end; 614 615 call Write_greeting_message (DONT_FORCE_MESSAGE); 616 617 call Change_state (AWAITING_INITIAL_REQUEST); 618 619 on io_error /* ready to enter ssu_$listen; can now call */ 620 begin; /* ssu_$abort_subsystem if connection is gone */ 621 call Hangup_no_message (ls_validate_info.initializer_handle ^= ""b); 622 ls_validate_info.code = error_table_$fatal_error; 623 call ssu_$abort_subsystem (sci_ptr); 624 end; 625 626 call ssu_$listen (sci_ptr, null (), code); 627 628 call Change_state (USER_VALIDATED); 629 630 if ls_cp_info.trace 631 then call dsa_log_manager_$trace_message (LS_CALLER_TYPE, OUR_NAME, INFO_LOG_SEVERITY, auto_validate_info.code, 632 null (), 0, "", "(validate_info.code) returned from ssu_$listen."); 633 634 if code = ssu_et_$subsystem_aborted 635 then a_code = auto_validate_info.code; 636 else do; 637 call ls_report_subr_error_ (code, OUR_NAME, ls_cp_info_ptr, 638 "ssu_$listen", DONT_TELL_USER, TAKE_DUMP); 639 a_code = code; 640 end; 641 642 DESTROY: 643 call ipc_$delete_ev_chn (auto_validate_info.reply_channel, code); 644 call ssu_$destroy_invocation (sci_ptr); 645 646 return; 647 648 NO_SETUP: 649 call ls_report_subr_error_ (code, OUR_NAME, ls_cp_info_ptr, 650 subr_name, TELL_USER, TAKE_DUMP); 651 call Hangup (DONT_TELL_INITIALIZER); 652 a_code = code; 653 go to DESTROY; 654 655 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 656 /* */ 657 /* ALARM CALL HANDLERS */ 658 /* */ 659 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 660 661 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 662 /* */ 663 /* LOGIN_TIMEOUT: */ 664 /* alarm call triggered entry, called installation_parms.login_time */ 665 /* seconds after starting to login, to cause the login attempt to */ 666 /* timeout. If the user does not login within this many seconds, the */ 667 /* connection is dropped. It is an entry rather than an internal */ 668 /* procedure so that procedures it calls (eg, Hangup_with_error) */ 669 /* can remain quick. It is also an entry rather than an internal proc */ 670 /* so that it gets passed to timer_manager_ with a null environment ptr. */ 671 /* This allows any invocation of ls_validate_user_ (eg, the one calling */ 672 /* ssu_$listen, the one invoked for each request, the one invoked for */ 673 /* an alarm call) to reset the timer, and establish a new timer than any */ 674 /* other invocation can later reset. */ 675 /* LOGIN_TIMEOUT_CHECK: */ 676 /* establishes the alarm call timer for login timeouts. */ 677 /* LOGIN_TIMEOUT_CHECK_stop: */ 678 /* turns off the alarm call. */ 679 /* */ 680 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 681 682 LOGIN_TIMEOUT: 683 entry (a_mc_ptr, a_cond_name, a_wc_ptr, a_data_ptr); 684 ls_validate_info_ptr = a_data_ptr; 685 if login_timeout_check_required (ls_validate_info.state) 686 then do; 687 sci_ptr = ls_validate_info.sci_ptr; 688 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 689 ip = ls_cp_info.installation_parms_ptr; 690 call ls_message_$print (ls_message_table_$login_timeout, Minutes (installation_parms.login_time), 691 Minutes (installation_parms.login_time) ^= 1.0); 692 call Hangup_with_error (error_table_$timeout, DONT_TELL_INITIALIZER); 693 end; 694 else ; /* ignore timeout if login just completed. */ 695 return; 696 697 698 LOGIN_TIMEOUT_CHECK: 699 procedure; 700 ip = ls_cp_info.installation_parms_ptr; 701 call timer_manager_$alarm_call ((installation_parms.login_time), RELATIVE_SECONDS, LOGIN_TIMEOUT, 702 ls_validate_info_ptr); 703 return; 704 LOGIN_TIMEOUT_CHECK_stop: 705 entry; 706 call timer_manager_$reset_alarm_call (LOGIN_TIMEOUT, ls_validate_info_ptr); 707 end LOGIN_TIMEOUT_CHECK; 708 709 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 710 711 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 712 /* */ 713 /* PRINT_BANNER_IF_CHANGED: */ 714 /* alarm call triggered entry, called every 3 minutes to check if */ 715 /* greeting banner changes so the new banner can be printed on the */ 716 /* connection if it's still waiting for the login request. It is an */ 717 /* entry rather than an internal procedure so that procedures it calls */ 718 /* (eg, Write_greeting_message) can remain quick. */ 719 /* PRINT_CHANGED_BANNER: */ 720 /* checks for change, and actually prints the banner. */ 721 /* WATCH_FOR_CHANGED_BANNER: */ 722 /* turns on the alarm call. */ 723 /* WATCH_FOR_CHANGED_BANNER_stop: */ 724 /* turns off the alarm call. */ 725 /* */ 726 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 727 728 PRINT_BANNER_IF_CHANGED: 729 entry (a_mc_ptr, a_cond_name, a_wc_ptr, a_data_ptr); 730 731 ls_validate_info_ptr = a_data_ptr; 732 call PRINT_CHANGED_BANNER (); 733 return; 734 735 736 737 PRINT_CHANGED_BANNER: 738 procedure; 739 740 if ls_validate_info.state = AWAITING_INITIAL_REQUEST 741 then do; 742 if ls_validate_info.cp_info_ptr -> ls_cp_info.answer_table_ptr -> anstbl.message_update_time 743 > ls_validate_info.banner_checked_time 744 then do; 745 call ioa_ (""); /* put out blank line */ 746 call Write_greeting_message (FORCE_MESSAGE); 747 call iox_$control (iox_$user_io, "start", null (), (0)); 748 end; /* in case this is necessary */ 749 call WATCH_FOR_CHANGED_BANNER (); 750 end; 751 end PRINT_CHANGED_BANNER; 752 753 754 WATCH_FOR_CHANGED_BANNER: 755 procedure; 756 ls_validate_info.banner_checked_time = clock (); 757 call timer_manager_$alarm_call (THREE_MINUTES, RELATIVE_MICROSECONDS, PRINT_BANNER_IF_CHANGED, 758 ls_validate_info_ptr); 759 return; 760 761 WATCH_FOR_CHANGED_BANNER_stop: 762 entry; 763 call timer_manager_$reset_alarm_call (PRINT_BANNER_IF_CHANGED, ls_validate_info_ptr); 764 end WATCH_FOR_CHANGED_BANNER; 765 766 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 767 768 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 769 /* */ 770 /* SSU_ REPLACEMENT PROCEDURES */ 771 /* */ 772 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 773 774 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 775 /* */ 776 /* COUNT_WAKEUP_FOR_REQUEST_LINE: */ 777 /* This is a replacement for the ssu_$execute_line procedure. It is invoked */ 778 /* for each request line (eg, login) typed by the user. */ 779 /* 1) Check for excessive incoming wakeups. */ 780 /* 2) If high rate found, hangup the terminal. */ 781 /* 3) Otherwise, execute the request line via the normal ssu_ mechanisms. */ 782 /* */ 783 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 784 785 COUNT_WAKEUP_FOR_REQUEST_LINE: 786 entry (a_sci_ptr, a_request_line_ptr, a_request_line_len, a_code); 787 788 dcl a_request_line_ptr ptr parameter; 789 dcl a_request_line_len fixed bin (21) parameter; 790 791 sci_ptr = a_sci_ptr; 792 ls_validate_info_ptr = ssu_$get_info_ptr (sci_ptr); 793 call Count_wakeups (); 794 call ls_validate_info.wakeup_loop.real_execute_line (a_sci_ptr, a_request_line_ptr, a_request_line_len, a_code); 795 return; 796 797 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 798 799 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 800 /* */ 801 /* LOGIN REQUESTS: */ 802 /* access_class, acc enter, e hello noecho */ 803 /* dial, d enterp, ep login, l terminal_id, tid */ 804 /* echo hangup modes terminal_type, ttp */ 805 /* */ 806 /* In addition, the "unknown_request" handler in included in this group, to */ 807 /* field special session logins that use a system-generated login number or */ 808 /* operator-specified login word. */ 809 /* */ 810 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 811 812 access_class: 813 entry (a_sci_ptr, a_info_ptr); 814 815 /* display the connection's access class range */ 816 817 sci_ptr = a_sci_ptr; 818 ls_validate_info_ptr = a_info_ptr; 819 820 call ssu_$arg_count (sci_ptr, number_of_args); /* there shouldn't be any */ 821 if number_of_args ^= 0 822 then call ssu_$abort_line (sci_ptr, error_table_$too_many_args, "This request takes no arguments."); 823 824 ls_connection_desc_ptr = ls_validate_info.connection_desc_ptr; 825 call convert_authorization_$to_string_range (ls_connection_desc.access_class_range, auth_range_string, code); 826 827 if code ^= 0 & code ^= error_table_$smallarg 828 then call ls_report_subr_error_ (code, OUR_NAME, 829 ls_validate_info.cp_info_ptr, 830 "convert_authorization_$to_string_range", TELL_USER, TAKE_DUMP); 831 else call ls_message_$print (ls_message_table_$aclass_banner_msg, auth_range_string); 832 833 return; 834 835 dial: 836 entry (a_sci_ptr, a_info_ptr); 837 838 /* the "dial" request is for connection as a "slave" to an existing process, identified 839* by a dial qualifier and optionally by a user ID. The user entering the dial 840* request may also identify himself (or may be required to do so) by means of 841* the -user control argument. 842**/ 843 844 sci_ptr = a_sci_ptr; 845 ls_validate_info_ptr = a_info_ptr; 846 847 call ssu_$arg_list_ptr (sci_ptr, arg_list_ptr); 848 call Parse_dial_args (); 849 ls_validate_info.mask_needed = mask_needed; 850 851 ls_request_ptr, ls_response_ptr = null (); 852 on cleanup call Cleanup_handler (); 853 854 ls_process_info_ptr = ls_validate_info.process_info_ptr; 855 ls_process_info.server_handle = ls_validate_info.server_handle; 856 857 if user_specified 858 then do; /* have to get password and validate user */ 859 ls_request_ptr = addr (auto_validate_request); 860 861 call Get_initial_password (code); 862 863 if code ^= 0 864 then go to RESTART_DIAL; 865 866 login_server_validate_request.person_id = dial_person; 867 login_server_validate_request.project_id = dial_project; 868 login_server_validate_request.authorization = authorization; 869 login_server_validate_request.terminate_event_channel = 870 ls_validate_info.connection_desc_ptr -> ls_connection_desc.terminate_event_channel; 871 login_server_validate_request.network_connection_type = NETWORK_CONNECTION_LOGIN; 872 string (login_server_validate_request.flags) = ""b; 873 login_server_validate_request.auth_given = auth_specified; 874 login_server_validate_request.connection_info = ls_validate_info.user_connection_info; 875 876 call Send_request_to_initializer (LS_VALIDATE_REQUEST, 877 LS_VALIDATE_REQUEST_VERSION_1, 878 size (login_server_validate_request), "0"b, 879 LS_VALIDATE_RESPONSE, ls_response_ptr, code); 880 881 call Process_validate_response (code); 882 883 ls_validate_info.initializer_handle = 884 login_server_validate_response.handle; 885 ls_process_info.initializer_handle = 886 ls_validate_info.initializer_handle; 887 dial_person = login_server_validate_response.person_id; 888 dial_project = login_server_validate_response.project_id; 889 890 free login_server_validate_response in (system_area); 891 end; 892 893 else do; /* didn't say -user */ 894 ls_validate_info.initializer_handle = ""b; /* to make sure we start clean */ 895 dial_person, dial_project = ""; 896 897 if ls_validate_info.dial_id = SYSTEM_DIAL_ID 898 then go to USER_REQUIRED; /* "dial system" always requires -user */ 899 900 call net_info_$get_field ("endpoint", 901 (ls_validate_info.connection_desc_ptr -> ls_connection_desc.endpoint_name), 902 "user_required_for_dial", answer, code); 903 if code ^= 0 904 then do; 905 call ls_report_subr_error_ (code, OUR_NAME, 906 ls_validate_info.cp_info_ptr, "net_info_$get_field", 907 TELL_USER, TAKE_DUMP); 908 go to RESTART_DIAL; 909 end; 910 911 else if answer = "yes" 912 then do; 913 USER_REQUIRED: 914 call ls_message_$print ( 915 ls_message_table_$user_required_for_dial); 916 go to RESTART_DIAL; 917 end; 918 919 ls_process_info.initializer_handle = ""b; /* no UTE was created */ 920 end; 921 922 if ls_validate_info.dial_id = SYSTEM_DIAL_ID 923 then do; /* "system" is special -- treat like operator login */ 924 call Login_operator (dial_person, dial_project, "", code); 925 if code ^= 0 926 then go to RESTART_DIAL; 927 end; 928 929 else do; 930 ls_request_ptr = addr (auto_dial_request); 931 932 login_server_dial_request.initializer_handle = ls_validate_info.initializer_handle; 933 login_server_dial_request.terminate_event_channel = 934 ls_validate_info.connection_desc_ptr -> 935 ls_connection_desc.terminate_event_channel; 936 login_server_dial_request.dial_qualifier = 937 ls_validate_info.dial_id; 938 login_server_dial_request.person_id = 939 ls_validate_info.person_id; 940 login_server_dial_request.project_id = 941 ls_validate_info.project_id; 942 login_server_dial_request.connection_info = 943 ls_validate_info.user_connection_info; 944 login_server_dial_request.user_person_id = dial_person; 945 login_server_dial_request.user_project_id = dial_project; 946 947 call Send_request_to_initializer (LS_DIAL_REQUEST, LS_DIAL_REQUEST_VERSION_1, 948 size (login_server_dial_request), "0"b, LS_DIAL_RESPONSE, ls_response_ptr, code); 949 950 if code ^= 0 951 then do; 952 call ssu_$print_message (sci_ptr, code); 953 if ls_response_ptr ^= null () 954 then free login_server_dial_response in (system_area); 955 go to RESTART_DIAL; 956 end; 957 958 /* now look at response and see if it worked */ 959 960 if login_server_dial_response.status_code ^= 0 961 then do; 962 ls_validate_info.code = ls_convert_as_error_code_ ( 963 login_server_dial_response.status_code); 964 call ls_message_$print_error (ls_validate_info.code); 965 hangup_flag = login_server_dial_response.disconnect; 966 967 free login_server_dial_response in (system_area); 968 969 if hangup_flag 970 then call Hangup_with_error (ls_validate_info.code, DONT_TELL_INITIALIZER); 971 else go to RESTART_DIAL; 972 end; 973 974 /* otherwise, all is well, pass it back */ 975 976 ls_validate_info.code = 0; 977 ls_process_info.process_group_id = 978 login_server_dial_response.process_group_id; 979 ls_process_info.start_event_channel = 980 login_server_dial_response.start_event_channel; 981 ls_process_info.authorization = 982 login_server_dial_response.authorization; 983 ls_process_info.process_id = 984 login_server_dial_response.process_id; 985 ls_process_info.initial_ring = 986 login_server_dial_response.process_ring; 987 ls_process_info.usage_type = LS_DIAL_USAGE; 988 ls_process_info.terminal_type = ls_validate_info. 989 user_connection_info.terminal_type; 990 ls_process_info.terminal_id = ls_validate_info. 991 user_connection_info.terminal_id; 992 ls_process_info.line_type = ls_validate_info. 993 user_connection_info.line_type; 994 ls_process_info.flags.terminal_info_set = "1"b; 995 996 call ls_message_$print (ls_message_table_$dial_connect_msg, 997 ls_validate_info.user_connection_info.terminal_type, 998 ls_validate_info.user_connection_info.terminal_id, 999 ls_process_info.process_group_id, date_time_$format ( 1000 "system_time", clock (), "system_zone", "system_lang")); 1001 1002 free login_server_dial_response in (system_area); 1003 end; 1004 1005 call ssu_$abort_subsystem (sci_ptr); /* ALL DONE */ 1006 return; 1007 1008 echo: 1009 entry (a_sci_ptr, a_info_ptr); 1010 1011 /* "echo" and "noecho" are pretty simple: just turn echoplex mode on or off */ 1012 1013 call Set_modes ("echoplex"); 1014 return; 1015 1016 1017 1018 noecho: 1019 entry (a_sci_ptr, a_info_ptr); 1020 1021 call Set_modes ("^echoplex"); 1022 return; 1023 1024 enter: 1025 entry (a_sci_ptr, a_info_ptr); 1026 1027 /* "enter" request: create a process for an anonymous user */ 1028 1029 command_type = ENTER_REQ; 1030 go to ENTER_JOIN; 1031 1032 1033 enterp: 1034 entry (a_sci_ptr, a_info_ptr); 1035 1036 /* "enterp" request: create a process for an anonymous user, but require a password */ 1037 command_type = ENTERP_REQ; 1038 ENTER_JOIN: 1039 sci_ptr = a_sci_ptr; 1040 ls_validate_info_ptr = a_info_ptr; 1041 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 1042 ansp = ls_cp_info.answer_table_ptr; 1043 anonymous = "1"b; 1044 arg_list_ptr = null (); 1045 request_name = ssu_$get_request_name (sci_ptr); 1046 go to LOGIN_JOIN; 1047 1048 hangup: 1049 entry (a_sci_ptr, a_info_ptr); 1050 1051 /* the "hangup" request causes the breaking of the connection with no further action */ 1052 1053 sci_ptr = a_sci_ptr; 1054 ls_validate_info_ptr = a_info_ptr; 1055 1056 call Hangup ((ls_validate_info.initializer_handle ^= ""b)); 1057 1058 ls_validate_info.code = error_table_$user_requested_hangup; 1059 call ssu_$abort_subsystem (sci_ptr); 1060 return; 1061 1062 hello: 1063 entry (a_sci_ptr, a_info_ptr); 1064 1065 /* The "hello" request simply requests the (re)display of the "greeting" banner */ 1066 1067 sci_ptr = a_sci_ptr; 1068 ls_validate_info_ptr = a_info_ptr; 1069 1070 call Write_greeting_message (FORCE_MESSAGE); 1071 return; /* with no change of state */ 1072 1073 help: 1074 entry (a_sci_ptr, a_info_ptr); 1075 1076 /* Normally this entry simply passes the help request along to the standard request; with 1077* no arguments, however, it translates it into a line that will cause the standard 1078* request to print the "general_info" info. 1079**/ 1080 1081 sci_ptr = a_sci_ptr; 1082 ls_validate_info_ptr = a_info_ptr; 1083 1084 call ssu_$arg_count (sci_ptr, number_of_args); 1085 1086 if number_of_args > 0 /* normal help request */ 1087 then call ssu_requests_$help (sci_ptr, ls_validate_info_ptr); 1088 1089 else do; 1090 call ssu_$execute_line (sci_ptr, addr (HELP_GI_REQUEST), length (HELP_GI_REQUEST), code); 1091 1092 if code ^= 0 /* if it's not one of the "standard" ones, */ 1093 /* we'd better report it */ 1094 then if code ^= ssu_et_$request_line_aborted & code ^= ssu_et_$subsystem_aborted 1095 & code ^= ssu_et_$program_interrupt 1096 then call ls_report_subr_error_ (code, OUR_NAME, 1097 ls_validate_info.cp_info_ptr, "ssu_$execute_line", 1098 TELL_USER, TAKE_DUMP); 1099 end; 1100 1101 return; /* no change of state */ 1102 1103 login: 1104 entry (a_sci_ptr, a_info_ptr); 1105 1106 /* the entry to handle the "login" request. Also contains common code used by "enter" and "enterp", 1107* and is branched into by the unknown_request handler if the "unknown" request 1108* turns out to be the login word. 1109**/ 1110 1111 sci_ptr = a_sci_ptr; 1112 ls_validate_info_ptr = a_info_ptr; 1113 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 1114 ansp = ls_cp_info.answer_table_ptr; 1115 arg_list_ptr = null (); 1116 anonymous = "0"b; 1117 command_type = LOGIN_REQ; 1118 request_name = ssu_$get_request_name (sci_ptr); 1119 1120 LOGIN_JOIN: /* common for all of login, enter, enterp */ 1121 if anstbl.login_word ^= "login" & anstbl.login_word ^= "l" 1122 /* oops, special session */ 1123 then do; 1124 call ls_message_$print (ls_message_table_$special_session); 1125 go to TRY_AGAIN; 1126 end; 1127 1128 ACTUALLY_LOGIN: /* we branch to here from unknown_request if it was */ 1129 /* a special-session login word */ 1130 ls_request_ptr, ls_response_ptr = null (); 1131 on cleanup call Cleanup_handler (); 1132 1133 if arg_list_ptr = null () 1134 then call ssu_$arg_list_ptr (sci_ptr, arg_list_ptr); 1135 1136 call cu_$arg_count_rel (number_of_args, arg_list_ptr, (0)); 1137 if number_of_args < 1 1138 then do; 1139 call Get_and_process_login_args (TRY_AGAIN); 1140 return; 1141 end; 1142 1143 call Parse_login_args (); 1144 if terminal_type ^= "" /* user specified terminal type */ 1145 then call Set_terminal_type (terminal_type); 1146 if mode_string ^= "" /* user specified modes */ 1147 then call Set_modes (mode_string); 1148 1149 if terminal_id ^= "" 1150 then call Set_term_id (terminal_id); 1151 1152 ls_validate_info.brief = brief; 1153 ls_validate_info.mask_needed = mask_needed; 1154 1155 ls_request_ptr = addr (auto_validate_request); 1156 1157 if command_type ^= ENTER_REQ /* if password required */ 1158 then do; 1159 call Get_initial_password (code); 1160 if code ^= 0 1161 then go to RESTART_LOGIN; 1162 1163 if generate_password 1164 then do; 1165 ip = ls_cp_info.installation_parms_ptr; 1166 gpw_length = max (installation_parms.password_gpw_length, installation_parms.password_min_length, 1); 1167 REGENERATE_PASSWORD: 1168 call generate_word_ (new_password_generated, new_password_hyphenated, gpw_length, 1169 length (new_password)); 1170 new_password = scramble_ (new_password_generated); 1171 if login_server_validate_request.current_password = new_password 1172 then go to REGENERATE_PASSWORD; 1173 call ls_message_$print (ls_message_table_$generated_password, new_password_generated, 1174 new_password_hyphenated); 1175 new_password_generated, new_password_hyphenated = ""; 1176 1177 CHECK_GENERATED_PASSWORD: 1178 call ls_message_$print_nnl (ls_message_table_$new_password); 1179 call Get_password (second_new_password, quit_flag, help_flag, code); 1180 1181 if quit_flag 1182 then go to RESTART_LOGIN; 1183 else if help_flag 1184 then do; 1185 call ls_message_$print (ls_message_table_$help_gpw_verify); 1186 go to CHECK_GENERATED_PASSWORD; 1187 end; 1188 1189 else if code ^= 0 | second_new_password ^= new_password 1190 then do; 1191 call ls_message_$print (ls_message_table_$generated_password_error); 1192 go to CHECK_GENERATED_PASSWORD; 1193 end; 1194 end; 1195 1196 else if change_password 1197 then do; 1198 GET_NEW_PASSWORD: 1199 call ls_message_$print_nnl (ls_message_table_$new_password); 1200 call Get_password (new_password, quit_flag, help_flag, code); 1201 1202 if code ^= 0 1203 then go to RESTART_LOGIN; 1204 else if quit_flag 1205 then go to RESTART_LOGIN; 1206 else if help_flag 1207 then do; 1208 call ls_message_$print (ls_message_table_$help_new_password); 1209 go to GET_NEW_PASSWORD; 1210 end; 1211 1212 if login_server_validate_request.current_password = new_password 1213 then do; 1214 call ls_message_$print (ls_message_table_$new_password_indistinct); 1215 go to RESTART_LOGIN; 1216 end; 1217 1218 NEW_PASSWORD_AGAIN: 1219 call ls_message_$print_nnl (ls_message_table_$new_password_again); 1220 call Get_password (second_new_password, quit_flag, help_flag, code); 1221 1222 if code ^= 0 1223 then go to RESTART_LOGIN; 1224 else if quit_flag 1225 then go to RESTART_LOGIN; 1226 else if help_flag 1227 then do; 1228 call ls_message_$print (ls_message_table_$help_npw_verify); 1229 go to NEW_PASSWORD_AGAIN; 1230 end; 1231 1232 if second_new_password ^= new_password 1233 then do; 1234 call ls_message_$print (ls_message_table_$new_password_error); 1235 go to GET_NEW_PASSWORD; 1236 end; 1237 end; 1238 end; 1239 1240 /* we have ID and password (if any), now send validate request */ 1241 1242 login_server_validate_request.person_id = person_name; 1243 login_server_validate_request.project_id = project_name; 1244 login_server_validate_request.connection_info = ls_validate_info.user_connection_info; 1245 login_server_validate_request.terminal_id = ls_validate_info.user_connection_info.terminal_id; 1246 login_server_validate_request.authorization = authorization; 1247 login_server_validate_request.terminate_event_channel = 1248 ls_validate_info.connection_desc_ptr -> ls_connection_desc.terminate_event_channel; 1249 login_server_validate_request.network_connection_type = NETWORK_CONNECTION_LOGIN; 1250 login_server_validate_request.gpw = generate_password; 1251 login_server_validate_request.auth_given = auth_specified; 1252 login_server_validate_request.anonymous = (command_type = ENTERP_REQ); 1253 login_server_validate_request.anon_no_password = (command_type = ENTER_REQ); 1254 login_server_validate_request.change_password = change_password | generate_password; 1255 login_server_validate_request.change_default_auth = cda; 1256 login_server_validate_request.change_default_proj = cdp; 1257 login_server_validate_request.operator = operator; 1258 login_server_validate_request.pad = ""b; 1259 login_server_validate_request.new_password = new_password; 1260 1261 call Send_request_to_initializer (LS_VALIDATE_REQUEST, LS_VALIDATE_REQUEST_VERSION_1, 1262 size (login_server_validate_request), "0"b, LS_VALIDATE_RESPONSE, ls_response_ptr, code); 1263 1264 call Process_validate_response (code); 1265 1266 ls_validate_info.initializer_handle = 1267 login_server_validate_response.handle; 1268 ls_validate_info.person_id = 1269 login_server_validate_response.person_id; 1270 ls_validate_info.project_id = 1271 login_server_validate_response.project_id; 1272 ls_validate_info.n_disconnected_processes = 1273 login_server_validate_response.n_disconnected_processes; 1274 ls_validate_info.previous_login_info = 1275 login_server_validate_response.previous_login_info; 1276 1277 ls_process_info_ptr = ls_validate_info.process_info_ptr; 1278 ls_process_info.authorization = 1279 login_server_validate_response.authorization; 1280 ls_process_info.server_handle = ls_validate_info.server_handle; 1281 ls_process_info.initializer_handle = 1282 ls_validate_info.initializer_handle; 1283 1284 free login_server_validate_response in (system_area); 1285 1286 if operator 1287 then do; /* use operator request instead of process request */ 1288 call Login_operator ((ls_validate_info.person_id), (ls_validate_info.project_id), virtual_channel_name, 1289 code); 1290 if code ^= 0 1291 then go to TRY_AGAIN; 1292 1293 else call ssu_$abort_subsystem (sci_ptr); /* we're finished */ 1294 end; 1295 1296 else do; 1297 1298 /* now we're ready to set up create request. First we have to get the login args (subject of -arguments arg) if any */ 1299 1300 ls_process_request_n_args = number_of_args - first_arg_arg + 1; 1301 if ls_process_request_n_args = 0 1302 then ls_process_request_arg_string_length = 0; 1303 else ls_process_request_arg_string_length = Get_total_arg_length (); 1304 1305 process_request_size = size (login_server_process_request); 1306 /* allowing for args */ 1307 allocate login_server_process_request in (system_area) set (ls_request_ptr); 1308 ls_validate_info.process_request_ptr = ls_request_ptr; 1309 1310 /* now fill in the actual args */ 1311 1312 call Get_arg_args (); 1313 call Fill_in_process_request (command_type); 1314 1315 if command_type = LIST_REQ 1316 then call List_request (); 1317 else if command_type = ENTER_REQ | command_type = ENTERP_REQ 1318 then do; /* anonymous proc*/ 1319 /* cannot be */ 1320 /* disconnected */ 1321 call Send_request_to_initializer (LS_PROCESS_REQUEST, LS_PROCESS_REQUEST_VERSION_1, 1322 currentsize (login_server_process_request), "0"b, LS_PROCESS_RESPONSE, ls_response_ptr, code); 1323 1324 call Process_process_response (code); 1325 end; 1326 else do; /* login, create */ 1327 /* et al can have*/ 1328 /* disconnected */ 1329 /* processes. */ 1330 if ls_validate_info.n_disconnected_processes > 0 1331 then do; 1332 call ls_message_$print (ls_message_table_$disconnected_processes, 1333 ls_validate_info.n_disconnected_processes, (ls_validate_info.n_disconnected_processes > 1)); 1334 1335 if command_type ^= CREATE_REQ 1336 then if command_type = LOGIN_REQ | ls_validate_info.n_disconnected_processes < process_number 1337 then do; 1338 if command_type = LOGIN_REQ 1339 then call ls_message_$print (ls_message_table_$give_instructions); 1340 else call ls_message_$print (ls_message_table_$no_such_process, process_number); 1341 call Enter_connect_loop (); 1342 return; 1343 end; 1344 1345 else if ls_validate_info.n_disconnected_processes > 1 1346 then if process_number = 0 /* process number omitted, ambiguous */ 1347 then do; 1348 call ls_message_$print (ls_message_table_$must_give_process_no); 1349 call Enter_connect_loop (); 1350 return; 1351 end; 1352 end; 1353 1354 else if command_type ^= LOGIN_REQ & command_type ^= CREATE_REQ 1355 then do; 1356 call ls_message_$print (ls_message_table_$no_disconnected_processes); 1357 call Enter_connect_loop (); 1358 return; 1359 end; 1360 1361 call Send_request_to_initializer (LS_PROCESS_REQUEST, LS_PROCESS_REQUEST_VERSION_1, 1362 currentsize (login_server_process_request), "0"b, LS_PROCESS_RESPONSE, ls_response_ptr, code); 1363 1364 call Process_process_response (code); 1365 end; 1366 1367 return; 1368 end; 1369 1370 RESTART_LOGIN: 1371 RESTART_DIAL: 1372 TRY_AGAIN: 1373 call ls_message_$print (ls_message_table_$please_try_again); 1374 call Change_state (AWAITING_INITIAL_REQUEST); 1375 return; /* back to ssu_ listener */ 1376 1377 modes: 1378 entry (a_sci_ptr, a_info_ptr); 1379 1380 /* set or print the terminal modes */ 1381 1382 sci_ptr = a_sci_ptr; 1383 ls_validate_info_ptr = a_info_ptr; 1384 1385 call ssu_$arg_count (sci_ptr, number_of_args); 1386 if number_of_args > 1 1387 then call ssu_$abort_line (sci_ptr, error_table_$too_many_args); 1388 1389 if number_of_args = 0 1390 then do; 1391 call iox_$modes (iox_$user_io, "", mode_string, code); 1392 if code ^= 0 1393 then call ls_report_subr_error_ (code, OUR_NAME, 1394 ls_validate_info.cp_info_ptr, "iox_$modes", TELL_USER, 1395 DONT_TAKE_DUMP); 1396 1397 else call ls_message_$print (ls_message_table_$current_modes, mode_string); 1398 end; 1399 1400 else do; 1401 call ssu_$arg_ptr (sci_ptr, 1, argp, argl); 1402 call Set_modes (arg); 1403 end; 1404 1405 return; 1406 1407 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1408 /* */ 1409 /* The slave request is left over from the old answering service, and is not */ 1410 /* applicable in this context. */ 1411 /* */ 1412 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1413 1414 slave: 1415 entry (a_sci_ptr, a_info_ptr); 1416 1417 sci_ptr = a_sci_ptr; 1418 1419 call ssu_$abort_line (sci_ptr, 0, "The ""slave"" request is not available on this type of connection."); 1420 return; 1421 1422 terminal_id: 1423 entry (a_sci_ptr, a_info_ptr); 1424 1425 /* set or print the terminal ID */ 1426 1427 sci_ptr = a_sci_ptr; 1428 ls_validate_info_ptr = a_info_ptr; 1429 1430 call ssu_$arg_count (sci_ptr, number_of_args); 1431 if number_of_args > 1 1432 then call ssu_$abort_line (sci_ptr, error_table_$too_many_args); 1433 1434 if number_of_args = 0 1435 then call ls_message_$print (ls_message_table_$current_terminal_id, 1436 ls_validate_info.user_connection_info.terminal_id); 1437 1438 else do; 1439 call ssu_$arg_ptr (sci_ptr, 1, argp, argl); 1440 call Set_term_id (arg); 1441 end; 1442 1443 return; 1444 1445 terminal_type: 1446 entry (a_sci_ptr, a_info_ptr); 1447 1448 /* set or print the terminal type */ 1449 1450 sci_ptr = a_sci_ptr; 1451 ls_validate_info_ptr = a_info_ptr; 1452 1453 call ssu_$arg_count (sci_ptr, number_of_args); 1454 if number_of_args > 1 1455 then call ssu_$abort_line (sci_ptr, error_table_$too_many_args); 1456 1457 if number_of_args = 0 1458 then call ls_message_$print (ls_message_table_$current_terminal_type, 1459 ls_validate_info.user_connection_info.terminal_type); 1460 1461 else do; 1462 call ssu_$arg_ptr (sci_ptr, 1, argp, argl); 1463 call Set_terminal_type (arg); 1464 end; 1465 1466 return; 1467 1468 1469 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1470 /* */ 1471 /* unknown request handler: it might be that the "unknown" request is */ 1472 /* actually a special-session login word. */ 1473 /* */ 1474 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1475 1476 unknown_request: 1477 entry (a_sci_ptr, a_info_ptr, a_request_name, a_arg_list_ptr, a_continue_sw); 1478 1479 sci_ptr = a_sci_ptr; 1480 ls_validate_info_ptr = a_info_ptr; 1481 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 1482 ansp = ls_cp_info.answer_table_ptr; 1483 arg_list_ptr = a_arg_list_ptr; 1484 request_name = a_request_name; 1485 anonymous = "0"b; 1486 command_type = LOGIN_REQ; 1487 1488 if anstbl.login_word = request_name /* equivalent of "login" */ 1489 then do; 1490 a_continue_sw = "1"b; /* we'll handle it, thanks */ 1491 go to ACTUALLY_LOGIN; 1492 end; 1493 1494 else a_continue_sw = "0"b; /* really unknown */ 1495 return; 1496 1497 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1498 /* */ 1499 /* CONNECT LOOP REQUESTS: */ 1500 /* connect destroy logout */ 1501 /* create list new_proc */ 1502 /* */ 1503 /* The following several request entry points implement "connect loop" */ 1504 /* requests, and are only included in the request table used when in the */ 1505 /* connect loop. They behave very similarly, and most of their work is done */ 1506 /* by the internal procedure Connect_loop_process_request. */ 1507 /* */ 1508 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1509 1510 connect: 1511 entry (a_sci_ptr, a_info_ptr); 1512 1513 /* connect to an existing disconnected process */ 1514 1515 sci_ptr = a_sci_ptr; 1516 ls_validate_info_ptr = a_info_ptr; 1517 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 1518 1519 ls_request_ptr, ls_response_ptr = null (); 1520 on cleanup call Cleanup_handler (); 1521 1522 call Get_process_number ("0"b, "0"b, process_number, ("0"b), ("0"b)); 1523 call Connect_loop_process_request (CONNECT_REQ, process_number, "0"b); 1524 return; 1525 1526 1527 create: 1528 entry (a_sci_ptr, a_info_ptr); 1529 1530 /* create a new process */ 1531 1532 sci_ptr = a_sci_ptr; 1533 ls_validate_info_ptr = a_info_ptr; 1534 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 1535 1536 ls_request_ptr, ls_response_ptr = null (); 1537 on cleanup call Cleanup_handler (); 1538 1539 call Connect_loop_process_request (CREATE_REQ, 0, "0"b); 1540 return; 1541 1542 1543 destroy: 1544 entry (a_sci_ptr, a_info_ptr); 1545 1546 /* destroy a disconnected process */ 1547 1548 sci_ptr = a_sci_ptr; 1549 ls_validate_info_ptr = a_info_ptr; 1550 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 1551 1552 ls_request_ptr, ls_response_ptr = null (); 1553 on cleanup call Cleanup_handler (); 1554 1555 call Get_process_number ("1"b, "1"b, process_number, immediate, hold_on_destroy); 1556 call Connect_loop_process_request (DESTROY_REQ, process_number, immediate); 1557 return; 1558 1559 1560 list: 1561 entry (a_sci_ptr, a_info_ptr); 1562 1563 /* list the user's disconnected processes */ 1564 1565 sci_ptr = a_sci_ptr; 1566 ls_validate_info_ptr = a_info_ptr; 1567 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 1568 1569 call List_request (); 1570 return; 1571 1572 logout: 1573 entry (a_sci_ptr, a_info_ptr); 1574 1575 sci_ptr = a_sci_ptr; 1576 ls_validate_info_ptr = a_info_ptr; 1577 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 1578 1579 hold, brief = "0"b; 1580 call ssu_$arg_count (sci_ptr, number_of_args); 1581 1582 do this_arg = 1 to number_of_args; 1583 call ssu_$arg_ptr (sci_ptr, this_arg, argp, argl); 1584 1585 if index (arg, HYPHEN) ^= 1 1586 then call ssu_$abort_line (sci_ptr, error_table_$bad_arg, "^a", arg); 1587 1588 if arg = "-hold" | arg = "-hd" 1589 then hold = "1"b; 1590 1591 else if arg = "-no_hold" | arg = "-nhd" 1592 then hold = "0"b; 1593 1594 else if arg = "-brief" | arg = "-bf" 1595 then brief = "1"b; 1596 1597 else if arg = "-long" | arg = "-lg" 1598 then brief = "0"b; 1599 1600 else call ssu_$abort_line (sci_ptr, error_table_$badopt, arg); 1601 end; 1602 1603 if ls_validate_info.initializer_handle ^= ""b 1604 then do; /* if initializer has ever heard of us, */ 1605 /* tell it we're going away */ 1606 ls_request_ptr = addr (auto_logout_request); 1607 login_server_logout_request.handle = ls_validate_info.initializer_handle; 1608 login_server_logout_request.connection_info = ls_validate_info.user_connection_info; 1609 call Send_request_to_initializer (LS_LOGOUT_REQUEST, LS_LOGOUT_REQUEST_VERSION_1, 1610 size (auto_logout_request), "0"b, 0, (null ()), code); 1611 end; 1612 1613 if code ^= 0 1614 then call ssu_$print_message (sci_ptr, code); 1615 call Logout (^hold, brief, error_table_$user_requested_logout); 1616 return; 1617 1618 new_proc: 1619 entry (a_sci_ptr, a_info_ptr); 1620 1621 /* execute new_proc in disconnected process */ 1622 1623 sci_ptr = a_sci_ptr; 1624 ls_validate_info_ptr = a_info_ptr; 1625 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 1626 1627 ls_request_ptr, ls_response_ptr = null (); 1628 on cleanup call Cleanup_handler (); 1629 1630 call Get_process_number ("1"b, "0"b, process_number, immediate, ("0"b)); 1631 call Connect_loop_process_request (NEW_PROC_REQ, process_number, immediate); 1632 return; 1633 1634 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1635 /* */ 1636 /* INTERNAL PROCEDURES */ 1637 /* */ 1638 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1639 1640 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1641 /* */ 1642 /* Change_state: */ 1643 /* 1) Set ls_validate_info.state to a new value. */ 1644 /* 2) If state is changing to AWAITING_INITIAL_REQUEST, establish timer to */ 1645 /* watch for a change to the login banner, and time login attempt. */ 1646 /* 3) If state is changing from AWAITING_INITIAL_REQUEST, turn off the */ 1647 /* timers. */ 1648 /* */ 1649 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1650 1651 Change_state: 1652 procedure (new_state); 1653 1654 dcl new_state fixed bin; 1655 1656 if ls_validate_info.state = new_state 1657 then ; 1658 else if new_state = AWAITING_INITIAL_REQUEST 1659 then call WATCH_FOR_CHANGED_BANNER (); 1660 else if ls_validate_info.state = AWAITING_INITIAL_REQUEST 1661 then call WATCH_FOR_CHANGED_BANNER_stop (); 1662 1663 if login_timeout_check_required (ls_validate_info.state) = login_timeout_check_required (new_state) 1664 then ; 1665 else if login_timeout_check_required (new_state) 1666 then call LOGIN_TIMEOUT_CHECK (); 1667 else if login_timeout_check_required (ls_validate_info.state) 1668 then call LOGIN_TIMEOUT_CHECK_stop (); 1669 1670 ls_validate_info.state = new_state; 1671 1672 end Change_state; 1673 1674 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1675 1676 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1677 /* */ 1678 /* cleanup on unit: */ 1679 /* 1) Free any allocated login_server requests or responses. */ 1680 /* 2) Change state to AWAITING_INITIAL_REQUEST. */ 1681 /* */ 1682 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1683 1684 Cleanup_handler: 1685 procedure (); 1686 1687 if ls_request_ptr ^= null () 1688 then do; /* check for "process" requests, which are */ 1689 /* the only kind we allocate */ 1690 if ls_request_header.request_type = LS_PROCESS_REQUEST 1691 then do; 1692 if ls_validate_info.process_request_ptr = ls_request_ptr 1693 /* check to see if we've got another one hidden away */ 1694 then ls_validate_info.process_request_ptr = null (); 1695 /* not any more we don't */ 1696 free login_server_process_request in (system_area); 1697 end; 1698 end; 1699 1700 if ls_response_ptr ^= null () /* there's a response around, free it */ 1701 then do; 1702 if login_server_response_header.message_type = LS_VALIDATE_RESPONSE 1703 then free login_server_validate_response in (system_area); 1704 else if login_server_response_header.message_type = LS_PROCESS_RESPONSE 1705 then free login_server_process_response in (system_area); 1706 else if login_server_response_header.message_type = LS_LIST_RESPONSE 1707 then free login_server_list_response in (system_area); 1708 else if login_server_response_header.message_type = LS_DIAL_RESPONSE 1709 then free login_server_dial_response in (system_area); 1710 else if login_server_response_header.message_type = LS_OPERATOR_RESPONSE 1711 then free login_server_operator_response in (system_area); 1712 end; 1713 1714 call Change_state (AWAITING_INITIAL_REQUEST); 1715 1716 end Cleanup_handler; 1717 1718 Connect_loop_process_request: 1719 procedure (command_type, process_number, immediate); 1720 1721 /* build a new process request, or (for a "create" request) update an already-allocated one, 1722* in response to a connect-loop request */ 1723 1724 dcl command_type fixed bin parameter; 1725 dcl process_number fixed bin parameter; 1726 dcl immediate bit (1) aligned parameter; 1727 1728 dcl new_request bit (1) aligned; 1729 1730 if command_type ^= CREATE_REQ & ls_validate_info.n_disconnected_processes > 1 & process_number = 0 1731 /* process number omitted, ambiguous */ 1732 then do; 1733 call ls_message_$print (ls_message_table_$must_give_process_no); 1734 call Enter_connect_loop (); 1735 return; 1736 end; 1737 1738 ls_validate_info.process_number = process_number; 1739 if ls_validate_info.process_request_ptr ^= null () 1740 then do; /* use the process request that was filled in from the original login request */ 1741 new_request = "0"b; 1742 ls_request_ptr = ls_validate_info.process_request_ptr; 1743 login_server_process_request.command_type = command_type; 1744 login_server_process_request.process_number = process_number; 1745 login_server_process_request.connection_info = ls_validate_info.user_connection_info; 1746 /* some of this might have been changed by an intervening terminal_type request */ 1747 end; 1748 1749 else do; /* allocate a fresh one */ 1750 ls_process_request_n_args = 0; 1751 ls_process_request_arg_string_length = 0; 1752 process_request_size = size (login_server_process_request); 1753 allocate login_server_process_request in (system_area) set (ls_request_ptr); 1754 new_request = "1"b; 1755 1756 /* initialize values that Fill_in_process_request will need, which otherwise would 1757* have been supplied on initial command line */ 1758 1759 auth_specified, brief_specified, brief, warn_specified, force_specified, save_specified, preempt_specified, 1760 no_start_up, ring_specified = ""b; 1761 1762 outer_module, process_overseer, subsystem, home_dir = ""; 1763 1764 call Fill_in_process_request (command_type); 1765 end; 1766 1767 login_server_process_request.immediate = immediate; 1768 call Send_request_to_initializer (LS_PROCESS_REQUEST, LS_PROCESS_REQUEST_VERSION_1, 1769 currentsize (login_server_process_request), new_request, LS_PROCESS_RESPONSE, ls_response_ptr, code); 1770 1771 call Process_process_response (code); 1772 return; 1773 1774 end Connect_loop_process_request; 1775 1776 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1777 /* */ 1778 /* COUNT_WAKEUPS: */ 1779 /* This procedure implements the wakeup loop counter. Reading of a request */ 1780 /* line, a password, answerback data, etc occurs via a wakeup. Such wakeups */ 1781 /* coming at too fast a rate may indicating garbage transmissions of the */ 1782 /* communication line. This procedure detects high wakeup frequency and */ 1783 /* hangs up the connection. */ 1784 /* */ 1785 /* An excessive rate is defined to be more than COUNT wakeups within */ 1786 /* INTERVAL seconds, where COUNT and INTERVAL are installation parameters. */ 1787 /* Whenever we get through an interval with fewer than COUNT wakeups, */ 1788 /* we reset the counter and start a new interval. Thus, in the most extreme */ 1789 /* case, we could get 2 * COUNT -1 wakeups within INTERVAL + DELTA before we */ 1790 /* decide to hang up. */ 1791 /* */ 1792 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1793 1794 Count_wakeups: 1795 procedure; 1796 1797 dcl code fixed bin (35); 1798 dcl current_time fixed bin (71); 1799 1800 ls_cp_info_ptr = ls_validate_info.cp_info_ptr; 1801 ip = ls_cp_info.installation_parms_ptr; 1802 current_time = clock (); 1803 if ls_validate_info.wakeup_loop.recent_wakeup_time + installation_parms.chn_wakeup_error_loop_seconds * 1000000 1804 < current_time 1805 then do; 1806 ls_validate_info.wakeup_loop.recent_wakeup_count = 1; 1807 ls_validate_info.wakeup_loop.recent_wakeup_time = current_time; 1808 end; 1809 else do; 1810 ls_validate_info.wakeup_loop.recent_wakeup_count = ls_validate_info.wakeup_loop.recent_wakeup_count + 1; 1811 if ls_validate_info.wakeup_loop.recent_wakeup_count > installation_parms.chn_wakeup_error_loop_count 1812 then do; /* wakeup loop rate exceeded. */ 1813 /* reset the wakeup loop counters */ 1814 ls_validate_info.wakeup_loop.recent_wakeup_time = 0; 1815 ls_validate_info.wakeup_loop.recent_wakeup_count = 0; 1816 /* we'll start counting again at next wakeup */ 1817 call iox_$control (iox_$user_io, "abort", null, code); 1818 call ls_message_$print (ls_message_table_$login_excess_wakeups); 1819 call Hangup_with_error (error_table_$fatal_error, DONT_TELL_INITIALIZER); 1820 end; 1821 end; 1822 end Count_wakeups; 1823 1824 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1825 1826 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 1827 1828 1829 Enter_connect_loop: 1830 procedure (); 1831 1832 /* procedure to switch to (or remain in) connect loop: print instructions, set 1833* new request table if necessary 1834**/ 1835 1836 if ls_validate_info.n_disconnected_processes > 0 1837 then call ls_message_$print (ls_message_table_$connect_requests); 1838 else call ls_message_$print (ls_message_table_$login_requests); 1839 1840 if ^ls_validate_info.connect_loop 1841 then do; 1842 call ssu_$delete_request_table (sci_ptr, addr (ls_ssu_request_tables_$login_requests), (0)); 1843 call ssu_$add_request_table (sci_ptr, addr (ls_ssu_request_tables_$connect_requests), 1, code); 1844 if code ^= 0 1845 then do; 1846 call ls_report_subr_error_ (code, OUR_NAME, 1847 ls_validate_info.cp_info_ptr, 1848 "ssu_$add_request_table", TELL_USER, TAKE_DUMP); 1849 call Hangup_with_error (code, TELL_INITIALIZER); 1850 end; 1851 1852 /* make sure "help" works for connect-loop requests */ 1853 1854 call ssu_$delete_info_dir (sci_ptr, ls_cp_info.login_info_dir, (0)); 1855 call ssu_$add_info_dir (sci_ptr, ls_cp_info.connect_info_dir, 1, code); 1856 if code ^= 0 1857 then call ls_report_subr_error_ (code, OUR_NAME, 1858 ls_validate_info.cp_info_ptr, "ssu_$add_info_dir", 1859 TELL_USER, TAKE_DUMP); 1860 1861 ls_validate_info.connect_loop = "1"b; 1862 end; 1863 1864 call Change_state (AWAITING_CONNECT_REQUEST); 1865 1866 return; 1867 end Enter_connect_loop; 1868 1869 Fill_in_process_request: 1870 procedure (command_type); 1871 1872 /* this procedure puts together a login_server_process_request to pass to Send_request_to_initializer. 1873* The "process" request has already been allocated, and the login args already filled in. 1874**/ 1875 1876 dcl command_type fixed bin parameter; 1877 1878 login_server_process_request.handle = 1879 ls_validate_info.initializer_handle; 1880 login_server_process_request.person_id = 1881 ls_validate_info.person_id; 1882 login_server_process_request.project_id = 1883 ls_validate_info.project_id; 1884 login_server_process_request.connection_info = 1885 ls_validate_info.user_connection_info; 1886 login_server_process_request.command_type = command_type; 1887 login_server_process_request.process_number = 1888 ls_validate_info.process_number; 1889 login_server_process_request.default_io_module = 1890 ls_validate_info.connection_desc_ptr -> 1891 ls_connection_desc.io_module; 1892 1893 /* in case we're creating a process from login line, copy values set by Parse_login_args */ 1894 1895 login_server_process_request.warn_given = warn_specified; 1896 login_server_process_request.force_given = force_specified; 1897 login_server_process_request.save_given = save_specified; 1898 login_server_process_request.preempt_given = preempt_specified; 1899 login_server_process_request.brief_given = brief_specified; 1900 login_server_process_request.init_ring_given = ring_specified; 1901 login_server_process_request.minimum_ring_given = "1"b; 1902 login_server_process_request.warn = warn; 1903 login_server_process_request.force = force; 1904 login_server_process_request.save_on_disconnect = save; 1905 login_server_process_request.preempt = preempt; 1906 login_server_process_request.brief = brief; 1907 login_server_process_request.initial_ring = ring; 1908 login_server_process_request.minimum_ring = 1909 ls_validate_info.minimum_ring; 1910 login_server_process_request.no_start_up = no_start_up; 1911 login_server_process_request.home_dir = home_dir; 1912 login_server_process_request.outer_module = outer_module; 1913 login_server_process_request.process_overseer = process_overseer; 1914 login_server_process_request.subsystem = subsystem; 1915 1916 if command_type = NEW_PROC_REQ | command_type = DESTROY_REQ 1917 then login_server_process_request.immediate = immediate; 1918 1919 return; 1920 end Fill_in_process_request; 1921 1922 Get_and_process_login_args: 1923 procedure (TRY_AGAIN); 1924 1925 dcl TRY_AGAIN label parameter; 1926 1927 dcl login_line char (100); 1928 dcl login_line_read fixed bin (21); 1929 1930 call ls_message_$print (ls_message_table_$login_args); 1931 call Change_state (AWAITING_LOGIN_ARGS); 1932 call iox_$get_line (iox_$user_input, addr (login_line), length (login_line), login_line_read, code); 1933 if code ^= 0 1934 then do; 1935 call ssu_$print_message (sci_ptr, code, "Reading login arguments."); 1936 go to TRY_AGAIN; 1937 end; 1938 login_line = rtrim (request_name) || " " || substr (login_line, 1, login_line_read); 1939 call Change_state (AWAITING_INITIAL_REQUEST); 1940 call ssu_$execute_line (sci_ptr, addr (login_line), length (rtrim (login_line)), code); 1941 if code ^= 0 1942 then do; 1943 call ssu_$print_message (sci_ptr, code, "Processing login arguments."); 1944 go to TRY_AGAIN; 1945 end; 1946 1947 end Get_and_process_login_args; 1948 1949 Get_arg_args: 1950 procedure (); 1951 1952 /* this procedure gets all the user-supplied arguments (i.e., sub-args of the 1953* "-ag" control arg) and fills them into the login_server_process_request structure. 1954**/ 1955 1956 dcl current_index fixed bin (21); 1957 dcl current_entry fixed bin; 1958 1959 login_server_process_request.n_args = ls_process_request_n_args; 1960 login_server_process_request.arg_string_length = ls_process_request_arg_string_length; 1961 1962 if ls_process_request_n_args > 0 1963 then do; 1964 current_index = 1; 1965 current_entry = 1; 1966 1967 do this_arg = first_arg_arg to number_of_args; 1968 call cu_$arg_ptr_rel (this_arg, argp, argl, (0), arg_list_ptr); 1969 1970 login_server_process_request.args (current_entry).start_index = current_index; 1971 login_server_process_request.args (current_entry).arg_length = argl; 1972 substr (login_server_process_request.arg_string, current_index, argl) = arg; 1973 1974 current_index = current_index + argl; 1975 current_entry = current_entry + 1; 1976 end; 1977 end; 1978 1979 end Get_arg_args; 1980 1981 Get_initial_password: 1982 procedure (code); 1983 1984 /* procedure to get current password initially for login or dial request */ 1985 1986 dcl code fixed bin (35) parameter; 1987 dcl quit_flag bit (1) aligned; 1988 dcl help_flag bit (1) aligned; 1989 1990 1991 REREAD_PASSWORD: 1992 call ls_message_$print_nnl (ls_message_table_$password); 1993 call Get_password (login_server_validate_request.current_password, quit_flag, help_flag, code); 1994 1995 if code ^= 0 1996 then return; 1997 1998 if quit_flag 1999 then code = error_table_$action_not_performed; 2000 2001 else if help_flag 2002 then do; 2003 call ls_message_$print (ls_message_table_$help_password); 2004 go to REREAD_PASSWORD; 2005 end; 2006 2007 else code = 0; 2008 return; 2009 2010 end Get_initial_password; 2011 2012 Get_password: 2013 procedure (result_password, quit_flag, help_flag, code); 2014 2015 dcl result_password char (8) aligned parameter; 2016 dcl quit_flag bit (1) aligned parameter; /* set to "1"b if response is "quit" */ 2017 dcl help_flag bit (1) aligned parameter; /* set to "1"b if response is "help" or "?" */ 2018 dcl code fixed bin (35) parameter; 2019 2020 dcl error_message char (64); 2021 dcl password char (8); 2022 2023 result_password = ""; 2024 quit_flag, help_flag = "0"b; 2025 code = 0; 2026 2027 password = Read_password (); 2028 2029 if search (rtrim (password), SPACE_SEMICOLON) ^= 0 2030 then do; 2031 password = ""; /* keep possible typo hidden */ 2032 call ls_message_$print (ls_message_table_$bad_password_format); 2033 code = error_table_$action_not_performed; 2034 end; 2035 2036 else if password = "help" | password = "HELP" | password = "?" 2037 then help_flag = "1"b; 2038 2039 else if password = "quit" | password = "QUIT" 2040 then do; 2041 call ls_message_$print (ls_message_table_$password_quit); 2042 quit_flag = "1"b; 2043 end; 2044 2045 else do; 2046 call check_password_ (password, error_message, code); 2047 if code ^= 0 /* check password minimum length and content */ 2048 then do; 2049 password = ""; 2050 call ls_message_$print (ls_message_table_$bad_password_check, error_message); 2051 code = error_table_$action_not_performed; 2052 end; 2053 else do; 2054 result_password = scramble_ (password); 2055 password = ""; /* cover this up as soon as possible */ 2056 end; 2057 end; 2058 2059 return; 2060 2061 end Get_password; 2062 2063 Get_process_number: 2064 procedure (immediate_allowed, hold_allowed, process_number, immediate, hold); 2065 2066 /* this procedure gets the (optional) arguments for the connect loop requests: 2067* process number, and possibly -immediate and/or -hold 2068**/ 2069 2070 dcl immediate_allowed bit (1) aligned parameter; 2071 dcl hold_allowed bit (1) aligned parameter; 2072 dcl process_number fixed bin parameter; 2073 dcl immediate bit (1) aligned parameter; 2074 dcl hold bit (1) aligned parameter; 2075 2076 immediate = "0"b; 2077 hold = "1"b; 2078 process_number = 0; 2079 call ssu_$arg_count (sci_ptr, number_of_args); 2080 2081 if number_of_args = 0 2082 then return; 2083 2084 else if number_of_args > 3 2085 then call ssu_$abort_line (sci_ptr, error_table_$too_many_args); 2086 2087 else do this_arg = 1 to number_of_args; 2088 call ssu_$arg_ptr (sci_ptr, this_arg, argp, argl); 2089 2090 if index (arg, HYPHEN) = 1 2091 then if (arg = "-immediate" | arg = "-im") & immediate_allowed 2092 then immediate = "1"b; 2093 2094 else if (arg = "-hold" | arg = "-hd") & hold_allowed 2095 then hold = "1"b; 2096 2097 else if (arg = "-no_hold" | arg = "-nhd") & hold_allowed 2098 then hold = "0"b; 2099 2100 else call ssu_$abort_line (sci_ptr, error_table_$badopt, "^a", arg); 2101 2102 else do; 2103 if arg = "" 2104 then call ssu_$abort_line (sci_ptr, error_table_$bad_conversion, "Null value for process number."); 2105 process_number = cv_dec_check_ (arg, code); 2106 if code ^= 0 2107 then call ssu_$abort_line (sci_ptr, error_table_$bad_conversion, "^a", arg); 2108 end; 2109 end; 2110 return; 2111 2112 end Get_process_number; 2113 2114 Get_total_arg_length: 2115 procedure () returns (fixed bin (21)); 2116 2117 /* this procedure returns the total length of the user-supplied arguments (i.e., 2118* the sub-arguments of the "-ag" control arg) 2119**/ 2120 2121 dcl total_length fixed bin (21); 2122 2123 total_length = 0; 2124 do this_arg = first_arg_arg to number_of_args; 2125 call cu_$arg_ptr_rel (this_arg, argp, argl, (0), arg_list_ptr); 2126 total_length = total_length + argl; 2127 end; 2128 2129 return (total_length); 2130 end Get_total_arg_length; 2131 2132 Hangup: 2133 procedure (tell_initializer); 2134 2135 /* close the connection. the argument indicates whether a disconnect_request has to 2136* be sent to the Initializer, or whether the latter has already discarded it. 2137**/ 2138 2139 dcl tell_initializer bit (1) aligned parameter; 2140 2141 call ls_message_$print (ls_message_table_$hangup); 2142 2143 Hangup_no_message: 2144 entry (tell_initializer); 2145 2146 ls_connection_desc_ptr = ls_validate_info.connection_desc_ptr; 2147 login_service_entries_ptr = ls_connection_desc.service_entries_ptr; 2148 2149 call login_service_entries 2150 .disconnect ((ls_connection_desc.name), ls_connection_desc.connection_handle, ""b, code); 2151 2152 if ls_validate_info.cp_info_ptr -> ls_cp_info.trace 2153 then call dsa_log_manager_$trace_message (LS_CALLER_TYPE, OUR_NAME, INFO_LOG_SEVERITY, code, null (), 0, "", 2154 "Disconnecting ^a", ls_connection_desc.name); 2155 2156 if tell_initializer 2157 then do; 2158 ls_request_ptr = addr (auto_hangup_request); 2159 login_server_disconnect_request.handle = ls_validate_info.initializer_handle; 2160 login_server_disconnect_request.process_id = ""b; 2161 login_server_disconnect_request.connection_info = ls_validate_info.user_connection_info; 2162 2163 call Send_request_to_initializer (LS_DISCONNECT_REQUEST, LS_DISCONNECT_REQUEST_VERSION_1, 2164 size (auto_hangup_request), "0"b, 0, (null ()), (0)); 2165 end; 2166 2167 return; 2168 2169 end Hangup; 2170 2171 Hangup_with_error: 2172 procedure (code, tell_initializer); 2173 2174 /* Called to wrap up when some unrecoverable disaster occurs */ 2175 2176 dcl code fixed bin (35) parameter; 2177 dcl tell_initializer bit (1) aligned parameter; 2178 2179 ls_validate_info.code = code; 2180 call Hangup (tell_initializer); 2181 call ssu_$abort_subsystem (sci_ptr); 2182 return; 2183 2184 end Hangup_with_error; 2185 2186 List_request: 2187 procedure (); 2188 2189 /* This procedure sends a "list" request, and displays the information provided in the response */ 2190 2191 dcl auth_case fixed bin; 2192 dcl (auth_col, chn_col, date_col, id_col, type_col) fixed bin; 2193 dcl auth_sw bit (1); 2194 dcl code fixed bin (35); 2195 dcl (chn_len, date_len, id_len, type_len) fixed bin; 2196 dcl n_processes fixed bin; 2197 dcl px fixed bin; 2198 2199 dcl 1 auto_list_request aligned like login_server_list_request; 2200 2201 ls_request_ptr = addr (auto_list_request); 2202 2203 login_server_list_request.connection_info = 2204 ls_validate_info.user_connection_info; 2205 login_server_list_request.handle = 2206 ls_validate_info.initializer_handle; 2207 2208 ls_response_ptr = null (); 2209 on cleanup 2210 begin; 2211 if ls_response_ptr ^= null () 2212 then free login_server_list_response in (system_area); 2213 end; 2214 2215 call Send_request_to_initializer (LS_LIST_REQUEST, 2216 LS_LIST_REQUEST_VERSION_1, size (login_server_list_request), 2217 "0"b, LS_LIST_RESPONSE, ls_response_ptr, code); 2218 2219 if code ^= 0 2220 then call ssu_$print_message (sci_ptr, code); 2221 2222 else do; 2223 n_processes, ls_validate_info.n_disconnected_processes = login_server_list_response.n_processes; 2224 2225 if n_processes = 0 2226 then call ls_message_$print (ls_message_table_$no_disconnected_processes); 2227 2228 else do; 2229 call ls_message_$print (ls_message_table_$disconnected_processes, n_processes, (n_processes > 1)); 2230 2231 /* NOTE: the access_class_range in the user_connection_info substructure in 2232* the list_response is not accurate and is not to be used. */ 2233 2234 date_len = date_time_$format_max_length ("system_date_time", "system_zone", "system_lang"); 2235 chn_len = length ("CHANNEL"); 2236 type_len = length ("TERM TYPE"); 2237 id_len = length ("ID"); 2238 auth_sw = FALSE; 2239 do px = 1 to n_processes; 2240 chn_len = max (chn_len, length (rtrim (login_server_list_response.connection_name (px)))); 2241 type_len = max (type_len, length (rtrim (login_server_list_response.terminal_type (px)))); 2242 id_len = max (id_len, length (rtrim (login_server_list_response.terminal_id (px)))); 2243 if login_server_list_response.initial_ring (px) ^= 0 2244 then auth_sw = TRUE; 2245 if login_server_list_response.authorization (px) ^= SYSTEM_LOW 2246 then auth_sw = TRUE; 2247 end; 2248 date_col = length ("NN. D"); 2249 chn_col = date_col + date_len + length (SPSP); 2250 type_col = chn_col + chn_len + length (SP); 2251 id_col = type_col + type_len + length (SP); 2252 if auth_sw 2253 then auth_col = id_col + id_len + length (SPSP); 2254 else auth_col = id_col + id_len; 2255 2256 call ls_message_$print (ls_message_table_$list_proc_header, date_col, chn_col, type_col, id_col, 2257 auth_col, auth_sw); 2258 2259 do px = 1 to n_processes; 2260 auth_case = 0; 2261 if login_server_list_response.authorization (px) ^= SYSTEM_LOW 2262 then auth_case = 2; 2263 if login_server_list_response.initial_ring (px) ^= 0 2264 then auth_case = auth_case + 1; 2265 call ls_message_$print (ls_message_table_$list_process, px, date_col, 2266 date_time_$format ("system_date_time", login_server_list_response.creation_time (px), 2267 "system_zone", "system_lang"), chn_col, login_server_list_response.connection_name (px), 2268 type_col, login_server_list_response.terminal_type (px), id_col, 2269 login_server_list_response.terminal_id (px), auth_col, auth_case, 2270 login_server_list_response.initial_ring (px), login_server_list_response.authorization (px)) 2271 ; 2272 end; 2273 end; 2274 end; 2275 2276 if ls_response_ptr ^= null () 2277 then free login_server_list_response in (system_area); 2278 call Enter_connect_loop (); 2279 return; 2280 2281 end List_request; 2282 2283 Login_operator: 2284 procedure (a_person, a_project, a_virtual_channel, a_code); 2285 2286 /* procedure to send an operator_request and process the response. invoked when 2287* user enters "dial system" or "login...-operator". 2288**/ 2289 2290 dcl a_person char (22) parameter; 2291 dcl a_project char (9) parameter; 2292 dcl a_virtual_channel char (32) parameter; 2293 dcl a_code fixed bin (35) parameter; 2294 2295 dcl 1 auto_operator_request aligned like login_server_operator_request; 2296 2297 /* let the user know we're initiating the request -- it might be a while before the operator accepts */ 2298 2299 call ls_message_$print (ls_message_table_$requesting_dial_to_mc); 2300 2301 ls_request_ptr = addr (auto_operator_request); 2302 2303 login_server_operator_request.initializer_handle = ls_validate_info.initializer_handle; 2304 login_server_operator_request.terminate_event_channel = 2305 ls_validate_info.connection_desc_ptr -> ls_connection_desc.terminate_event_channel; 2306 login_server_operator_request.person_id = a_person; 2307 login_server_operator_request.project_id = a_project; 2308 login_server_operator_request.virtual_channel = a_virtual_channel; 2309 login_server_operator_request.connection_info = ls_validate_info.user_connection_info; 2310 2311 ls_response_ptr = null (); 2312 on cleanup 2313 begin; 2314 if ls_response_ptr ^= null () 2315 then free login_server_operator_response in (system_area); 2316 end; 2317 2318 call Send_request_to_initializer (LS_OPERATOR_REQUEST, LOGIN_SERVER_OPERATOR_REQUEST_VERSION_1, 2319 size (login_server_operator_request), "0"b, LS_OPERATOR_RESPONSE, ls_response_ptr, code); 2320 2321 if code ^= 0 2322 then do; 2323 call ssu_$print_message (sci_ptr, code); 2324 if ls_response_ptr ^= null () 2325 then free login_server_operator_response in (system_area); 2326 a_code = code; 2327 return; 2328 end; 2329 2330 if login_server_operator_response.status_code ^= 0 2331 then do; 2332 ls_validate_info.code = ls_convert_as_error_code_ (login_server_operator_response.status_code); 2333 if ls_validate_info.code = error_table_$action_not_performed 2334 then call ls_message_$print (ls_message_table_$dropped_by_mc, 2335 ls_validate_info.user_connection_info.connection_name); 2336 else call ls_message_$print_error (ls_validate_info.code); 2337 hangup_flag = login_server_operator_response.disconnect; 2338 2339 free login_server_operator_response in (system_area); 2340 2341 if hangup_flag 2342 then do; 2343 call Hangup (DONT_TELL_INITIALIZER); 2344 call ssu_$abort_subsystem (sci_ptr); 2345 end; 2346 2347 a_code = ls_validate_info.code; 2348 return; 2349 end; 2350 2351 /* successfully connected to message coordinator */ 2352 2353 ls_validate_info.code = 0; 2354 ls_process_info.process_group_id = login_server_operator_response.process_group_id; 2355 ls_process_info.start_event_channel = login_server_operator_response.event_channel; 2356 ls_process_info.authorization = ""b; /* like process_group_id */ 2357 ls_process_info.process_id = login_server_operator_response.process_id; 2358 ls_process_info.initial_ring = login_server_operator_response.ring; 2359 ls_process_info.usage_type = LS_MC_USAGE; 2360 ls_process_info.terminal_type = ls_validate_info.user_connection_info.terminal_type; 2361 ls_process_info.terminal_id = ls_validate_info.user_connection_info.terminal_id; 2362 ls_process_info.line_type = ls_validate_info.user_connection_info.line_type; 2363 ls_process_info.flags.terminal_info_set = "1"b; 2364 2365 call ls_message_$print (ls_message_table_$dialed_to_mc, ls_validate_info.user_connection_info.connection_name); 2366 2367 free login_server_operator_response in (system_area); 2368 a_code = 0; 2369 return; 2370 2371 end Login_operator; 2372 2373 Logout: 2374 procedure (hangup_flag, brief_flag, hangup_code); 2375 2376 /* procedure to terminate the dialogue, and either hang up or restart with the banner, 2377* depending on the value of hangup_flag */ 2378 2379 dcl hangup_flag bit (1) aligned parameter; 2380 dcl brief_flag bit (1) aligned parameter; 2381 dcl hangup_code fixed bin (35) parameter; 2382 2383 if ^brief_flag 2384 then call ls_message_$print (ls_message_table_$logout_disconnected, ls_validate_info.person_id, 2385 ls_validate_info.project_id, 2386 date_time_$format ("system_date_time", clock (), "system_zone", "system_lang")); 2387 2388 if hangup_flag 2389 then do; 2390 call Hangup (DONT_TELL_INITIALIZER); 2391 ls_validate_info.code = hangup_code; 2392 call ssu_$abort_subsystem (sci_ptr); 2393 end; 2394 2395 /* now reinitialize the validate_info structure */ 2396 2397 if ls_validate_info.process_request_ptr ^= null () 2398 then do; 2399 free ls_validate_info.process_request_ptr -> login_server_process_request in (system_area); 2400 ls_validate_info.process_request_ptr = null (); 2401 end; 2402 2403 ls_validate_info.initializer_handle = ""b; 2404 ls_validate_info.n_disconnected_processes = 0; 2405 ls_validate_info.process_number = 0; 2406 ls_validate_info.validation_failures = 0; 2407 ls_validate_info.person_id = ""; 2408 ls_validate_info.project_id = ""; 2409 ls_validate_info.dial_id = ""; 2410 2411 if ls_validate_info.connect_loop 2412 then do; 2413 call ssu_$delete_request_table (sci_ptr, addr (ls_ssu_request_tables_$connect_requests), (0)); 2414 call ssu_$add_request_table (sci_ptr, addr (ls_ssu_request_tables_$login_requests), 1, code); 2415 if code ^= 0 2416 then do; 2417 call ls_report_subr_error_ (code, OUR_NAME, 2418 ls_validate_info.cp_info_ptr, 2419 "ssu_$add_request_table", TELL_USER, TAKE_DUMP); 2420 call Hangup_with_error (code, TELL_INITIALIZER); 2421 end; 2422 2423 /* make sure "help" doesn't find connect-loop requests */ 2424 2425 call ssu_$delete_info_dir (sci_ptr, ls_cp_info.connect_info_dir, (0)); 2426 call ssu_$add_info_dir (sci_ptr, ls_cp_info.login_info_dir, 1, code); 2427 if code ^= 0 2428 then call ls_report_subr_error_ (code, OUR_NAME, 2429 ls_validate_info.cp_info_ptr, "ssu_$add_info_dir", 2430 TELL_USER, TAKE_DUMP); 2431 2432 ls_validate_info.connect_loop = "0"b; 2433 end; 2434 2435 call ioa_ (""); /* just put out newline */ 2436 call Write_greeting_message (DONT_FORCE_MESSAGE); 2437 call Change_state (AWAITING_INITIAL_REQUEST); 2438 2439 return; 2440 end Logout; 2441 2442 Minutes: 2443 procedure (seconds) returns (fixed decimal (5, 1)) reducible; 2444 2445 dcl seconds fixed bin; 2446 dcl minutes fixed decimal (5, 1); 2447 dcl seconds_dec fixed decimal (7); 2448 dcl SECONDS_PER_MINUTE fixed decimal (2, 0) int static options (constant) init (60); 2449 2450 seconds_dec = seconds; 2451 minutes = divide (seconds_dec, SECONDS_PER_MINUTE, 5, 1); 2452 return (minutes); 2453 end Minutes; 2454 2455 Parse_dial_args: 2456 procedure (); 2457 2458 dcl keyword char (32); 2459 2460 call cu_$arg_count_rel (number_of_args, arg_list_ptr, 0); 2461 2462 if number_of_args < 1 | number_of_args > 6 2463 then call ssu_$abort_line (sci_ptr, error_table_$wrong_no_of_args, 2464 "^/Usage: dial dial_qualifier {Person.Project} {-control_args}"); 2465 2466 ls_validate_info.person_id, ls_validate_info.project_id = ""; 2467 user_specified, auth_specified, mask_needed = "0"b; 2468 2469 call cu_$arg_ptr_rel (1, argp, argl, 0, arg_list_ptr); 2470 ls_validate_info.dial_id = arg; /* first arg is always the dial qualifier */ 2471 2472 do this_arg = 2 to number_of_args; 2473 call cu_$arg_ptr_rel (this_arg, argp, argl, 0, arg_list_ptr); 2474 2475 if index (arg, HYPHEN) ^= 1 2476 then do; /* not control arg. must be Person.Project */ 2477 if this_arg = 2 2478 then do; /* User_id must be second arg if given. */ 2479 period_index = index (arg, DOT); 2480 if period_index <= 1 | period_index >= length (arg) 2481 then call ssu_$abort_line (sci_ptr, error_table_$bad_arg, 2482 "Second argument must have the form Person.Project."); 2483 else do; 2484 ls_validate_info.person_id = before (arg, DOT); 2485 ls_validate_info.project_id = after (arg, DOT); 2486 end; 2487 end; 2488 else call ssu_$abort_line (sci_ptr, error_table_$bad_arg, 2489 "^a^/Usage: dial dial_qualifier {Person.Project} {-control_args}"); 2490 end; 2491 else do; 2492 2493 if arg = "-user" 2494 then do; 2495 call Get_value (dial_person); 2496 user_specified = "1"b; 2497 if index (dial_person, DOT) = 0 2498 then dial_project = ""; 2499 else do; 2500 dial_project = after (dial_person, DOT); 2501 dial_person = before (dial_person, DOT); 2502 end; 2503 end; 2504 2505 else if arg = "-authorization" | arg = "-auth" 2506 then do; 2507 auth_specified = "1"b; 2508 call Get_value (auth_string); 2509 call convert_authorization_$from_string (authorization, auth_string, code); 2510 if code ^= 0 2511 then call ssu_$abort_line (sci_ptr, code, "^a ^a", keyword, auth_string); 2512 end; 2513 2514 else if arg = "-print_off" | arg = "-pf" 2515 then mask_needed = "0"b; 2516 2517 else if arg = "-no_print_off" | arg = "-npf" 2518 then mask_needed = "1"b; 2519 2520 else call ssu_$abort_line (sci_ptr, error_table_$badopt, "^a", arg); 2521 end; 2522 end; 2523 2524 if auth_specified & ^user_specified 2525 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, "-auth ^a requires the -user control argument.", 2526 auth_string); 2527 return; 2528 2529 Parse_login_args: 2530 entry (); 2531 2532 /* parse the arguments to the login, enter, enterp requests */ 2533 2534 /* we have to use cu_$arg_ptr_rel because one path into here is via the unknown_request 2535* procedure, in which case ssu_$arg_ptr doesn't work. 2536**/ 2537 2538 dcl first_control_arg fixed bin; 2539 dcl auth_string char (256); 2540 2541 auth_specified, brief_specified, brief, immediate, hold_given, hold_on_destroy, change_password, 2542 generate_password, cda, cdp, warn_specified, force_specified, save_specified, preempt_specified, 2543 no_start_up, ring_specified, mask_needed, operator = ""b; 2544 2545 terminal_type, mode_string, terminal_id, outer_module, process_overseer, subsystem, home_dir, 2546 virtual_channel_name = ""; 2547 2548 first_arg_arg = number_of_args + 1; /* initially, to indicate no -arguments */ 2549 2550 /* get first arg, may be person ID or Person.Project) */ 2551 2552 call cu_$arg_ptr_rel (1, argp, argl, (0), arg_list_ptr); 2553 if index (arg, DOT) ^= 0 /* Person.project */ 2554 then do; 2555 person_name = before (arg, DOT); 2556 project_name = after (arg, DOT); 2557 first_control_arg = 2; 2558 end; 2559 2560 else do; /* first arg is person, second might be project */ 2561 person_name = arg; 2562 if number_of_args < 2 2563 then do; 2564 project_name = ""; 2565 return; 2566 end; 2567 2568 call cu_$arg_ptr_rel (2, argp, argl, (0), arg_list_ptr); 2569 if index (arg, HYPHEN) ^= 1 2570 then do; 2571 project_name = arg; 2572 first_control_arg = 3; 2573 end; 2574 2575 else do; /* it's a control arg, process it later */ 2576 project_name = ""; 2577 first_control_arg = 2; 2578 end; 2579 end; 2580 2581 do this_arg = first_control_arg to number_of_args; 2582 call cu_$arg_ptr_rel (this_arg, argp, argl, (0), arg_list_ptr); 2583 if index (arg, HYPHEN) ^= 1 2584 then call ssu_$abort_line (sci_ptr, error_table_$bad_arg, "^a", arg); 2585 2586 if arg = "-arguments" | arg = "-ag" 2587 then do; 2588 first_arg_arg = this_arg + 1; /* we'll process the rest later */ 2589 go to NO_MORE_CONTROL_ARGS; 2590 end; 2591 2592 else if arg = "-brief" | arg = "-bf" 2593 then do; 2594 brief_specified = "1"b; 2595 brief = "1"b; 2596 end; 2597 2598 else if arg = "-long" | arg = "-lg" 2599 then do; 2600 brief_specified = "1"b; 2601 brief = "0"b; 2602 end; 2603 2604 else if arg = "-modes" | arg = "-mode" | arg = "-md" 2605 then call Get_value (mode_string); 2606 2607 else if arg = "-terminal_id" | arg = "-tid" 2608 then call Get_value (terminal_id); 2609 2610 else if arg = "-terminal_type" | arg = "-ttp" 2611 then call Get_value (terminal_type); 2612 2613 else if arg = "-print_off" | arg = "-pf" 2614 then mask_needed = "0"b; 2615 2616 else if arg = "-no_print_off" | arg = "-npf" 2617 then mask_needed = "1"b; 2618 2619 else if arg = "-warning" 2620 then do; 2621 warn_specified = "1"b; 2622 warn = "1"b; 2623 end; 2624 2625 else if arg = "-no_warning" | arg = "-nw" 2626 then do; 2627 warn_specified = "1"b; 2628 warn = "0"b; 2629 end; 2630 2631 else if arg = "-force" 2632 then do; 2633 force_specified = "1"b; 2634 force = "1"b; 2635 end; 2636 2637 else if arg = "-home_dir" | arg = "-hd" 2638 then call Get_value (home_dir); 2639 2640 else if arg = "-no_preempt" | arg = "-np" 2641 then do; 2642 preempt_specified = "1"b; 2643 preempt = "0"b; 2644 end; 2645 2646 else if arg = "-no_start_up" | arg = "-ns" 2647 then no_start_up = "1"b; 2648 2649 else if arg = "-outer_module" | arg = "-om" 2650 then call Get_value (outer_module); 2651 2652 else if arg = "-process_overseer" | arg = "-po" 2653 then call Get_value (process_overseer); 2654 2655 else if arg = "-subsystem" | arg = "-ss" 2656 then call Get_value (subsystem); 2657 2658 else if arg = "-ring" | arg = "-rg" 2659 then do; 2660 call Get_numeric_value (ring); 2661 if ring < 1 | ring > 7 2662 then call ssu_$abort_line (sci_ptr, error_table_$bad_arg, "^d is not a valid ring number.", ring); 2663 ring_specified = "1"b; 2664 end; 2665 2666 else if anonymous 2667 then go to UNRECOGNIZED_ARG; /* the rest are not allowed for anonymous users */ 2668 2669 else if arg = "-authorization" | arg = "-auth" 2670 then do; 2671 auth_specified = "1"b; 2672 call Get_value (auth_string); 2673 call convert_authorization_$from_string (authorization, auth_string, code); 2674 if code ^= 0 2675 then call ssu_$abort_line (sci_ptr, code, "^a ^a", keyword, auth_string); 2676 end; 2677 2678 else if arg = "-change_password" | arg = "-cpw" 2679 then change_password = "1"b; 2680 2681 else if arg = "-generate_password" | arg = "-gpw" 2682 then generate_password = "1"b; 2683 2684 else if arg = "-change_default_auth" | arg = "-cda" 2685 then cda = "1"b; 2686 2687 else if arg = "-change_default_project" | arg = "-cdp" 2688 then cdp = "1"b; 2689 2690 else if arg = "-save_on_disconnect" | arg = "-save" 2691 then do; 2692 save_specified = "1"b; 2693 save = "1"b; 2694 end; 2695 2696 else if arg = "-no_save_on_disconnect" | arg = "-nosave" 2697 then do; 2698 save_specified = "1"b; 2699 save = "0"b; 2700 end; 2701 2702 else if arg = "-immediate" | arg = "-im" 2703 then immediate = "1"b; 2704 2705 else if arg = "-hold" /* -hd refers to */ 2706 then hold_on_destroy, hold_given = "1"b; /* -home_dir. */ 2707 2708 else if arg = "-no_hold" 2709 then do; 2710 hold_on_destroy = "0"b; 2711 hold_given = "1"b; 2712 end; 2713 2714 else if arg = "-connect" 2715 then do; 2716 call Check_consistent (); 2717 call Get_optional_numeric_arg (process_number); 2718 command_type = CONNECT_REQ; 2719 end; 2720 2721 else if arg = "-new_proc" 2722 then do; 2723 call Check_consistent (); 2724 call Get_optional_numeric_arg (process_number); 2725 command_type = NEW_PROC_REQ; 2726 end; 2727 2728 else if arg = "-destroy" 2729 then do; 2730 call Check_consistent (); 2731 call Get_optional_numeric_arg (process_number); 2732 command_type = DESTROY_REQ; 2733 end; 2734 2735 else if arg = "-create" 2736 then do; 2737 call Check_consistent (); 2738 command_type = CREATE_REQ; 2739 end; 2740 2741 else if arg = "-list" 2742 then do; 2743 call Check_consistent (); 2744 command_type = LIST_REQ; 2745 end; 2746 2747 else if arg = "-operator" | arg = "-op" 2748 then operator = "1"b; 2749 2750 else if arg = "-virtual_channel" | arg = "-vchn" | arg = "-vc" 2751 then call Get_value (virtual_channel_name); 2752 2753 else 2754 UNRECOGNIZED_ARG: 2755 call ssu_$abort_line (sci_ptr, error_table_$badopt, "^a", arg); 2756 end; 2757 2758 NO_MORE_CONTROL_ARGS: 2759 if immediate & (command_type ^= NEW_PROC_REQ & command_type ^= DESTROY_REQ) 2760 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, "-immediate without -new_proc or -destroy."); 2761 2762 if hold_given 2763 then if command_type ^= DESTROY_REQ 2764 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, "-hold without -destroy."); 2765 else ; 2766 else if command_type = DESTROY_REQ /* -hold is default with -destroy. */ 2767 then hold_on_destroy = "1"b; 2768 2769 if cda & ^auth_specified 2770 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 2771 "-change_default_auth requires that -authorization also be used."); 2772 2773 if cdp & project_name = "" 2774 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 2775 "Syntax is ""login Person.NewDefaultProj -change_default_project""."); 2776 2777 if virtual_channel_name ^= "" & ^operator 2778 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, "-virtual_channel without -operator."); 2779 2780 if operator 2781 then if (auth_specified | warn_specified | force_specified | save_specified | preempt_specified | no_start_up 2782 | ring_specified | first_arg_arg <= number_of_args | process_overseer ^= "" | subsystem ^= "" 2783 | home_dir ^= "" | command_type ^= LOGIN_REQ) 2784 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 2785 "-operator with one or more arguments that only apply to normal user processes."); 2786 2787 return; 2788 2789 Check_consistent: 2790 procedure (); 2791 2792 /* (internal to Parse_login_args) checks for inconsistent combinations (such as 2793* -destroy and -connect) */ 2794 2795 if command_type ^= LOGIN_REQ 2796 then call ssu_$abort_line (sci_ptr, error_table_$inconsistent, 2797 "Only one of -connect, -new_proc, -destroy, -create, or -list may be specified."); 2798 return; 2799 end Check_consistent; 2800 2801 2802 Get_value: 2803 procedure (value); 2804 2805 /* this procedure (internal to Parse_login_args) gets the string value associated 2806* with a control argument, and returns it 2807**/ 2808 2809 dcl value char (*) parameter; 2810 dcl n_value fixed bin parameter; 2811 2812 dcl numeric bit (1); 2813 2814 numeric = "0"b; 2815 go to GET_VALUE_COMMON; 2816 2817 Get_numeric_value: 2818 entry (n_value); 2819 2820 /* likewise, but value must be a number */ 2821 2822 numeric = "1"b; 2823 2824 GET_VALUE_COMMON: 2825 if this_arg >= number_of_args /* oops, there isn't one */ 2826 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "After ^a", arg); 2827 2828 else do; 2829 keyword = arg; 2830 this_arg = this_arg + 1; 2831 2832 call cu_$arg_ptr_rel (this_arg, argp, argl, (0), arg_list_ptr); 2833 if index (arg, HYPHEN) = 1 2834 then call ssu_$abort_line (sci_ptr, error_table_$noarg, "After ^a", keyword); 2835 2836 else if ^numeric 2837 then value = arg; 2838 2839 else do; 2840 CHECK_NUMERIC: 2841 if arg = "" 2842 then call ssu_$abort_line (sci_ptr, error_table_$bad_conversion, "Null value for ^a.", keyword); 2843 n_value = cv_dec_check_ (arg, code); 2844 if code ^= 0 2845 then call ssu_$abort_line (sci_ptr, error_table_$bad_conversion, "^a ^a", keyword, arg); 2846 end; 2847 end; 2848 return; 2849 2850 Get_optional_numeric_arg: 2851 entry (n_value); 2852 2853 /* this procedure returns a numeric value for a keyword; if there is no value, 2854* it returns 0 2855**/ 2856 2857 n_value = 0; 2858 if this_arg >= number_of_args 2859 then return; 2860 2861 call cu_$arg_ptr_rel (this_arg + 1, argp, argl, (0), arg_list_ptr); 2862 if index (arg, HYPHEN) = 1 2863 then return; 2864 2865 else do; 2866 this_arg = this_arg + 1; 2867 go to CHECK_NUMERIC; 2868 end; 2869 2870 end Get_value; 2871 2872 end Parse_dial_args; 2873 2874 Print_password_mask: 2875 procedure (); 2876 2877 /* take a constant set of overprinting and overprint it with a random, clock-derived 2878* string to make deciphering very difficult */ 2879 2880 call ioa_$nnl ("^a^a", CONSTANT_MASK, substr (RANDOM_ALPHABET, mod (clock (), 28), 12) || copy (BS, 12)); 2881 /* 12 backspaces at the end */ 2882 2883 return; 2884 end Print_password_mask; 2885 2886 Process_process_response: 2887 procedure (reply_code); 2888 2889 /* this procedure is called when a response comes from a "process" request -- 2890* this is how we determine if the user's intentions were carried out 2891**/ 2892 2893 dcl reply_code fixed bin (35) parameter; /* an input parameter indicating the reply code from Send_request_to_initializer */ 2894 2895 dcl logout bit (1) aligned; 2896 dcl hangup bit (1) aligned; 2897 dcl process_code fixed bin (35); 2898 dcl cpu_seconds fixed bin; 2899 dcl cpu_minutes fixed bin; 2900 dcl instance fixed bin; 2901 dcl suffix char (4); 2902 dcl auth_string char (256); 2903 2904 if reply_code ^= 0 2905 then do; /* got back non-zero code in response to process request */ 2906 call ssu_$print_message (sci_ptr, reply_code); 2907 if ls_response_ptr ^= null () 2908 then free login_server_process_response in (system_area); 2909 call Enter_connect_loop (); 2910 return; 2911 end; 2912 2913 logout = login_server_process_response.logout; 2914 hangup = login_server_process_response.disconnect; 2915 2916 if login_server_process_response.status_code ^= 0 2917 then do; /* but we didn't succeed */ 2918 process_code = ls_convert_as_error_code_ (login_server_process_response.status_code); 2919 2920 if process_code = as_error_table_$no_such_process_msg 2921 then call ls_message_$print (ls_message_table_$no_such_process, ls_validate_info.process_number); 2922 2923 else if process_code = as_error_table_$no_connect_aclass 2924 then call ls_message_$print (ls_message_table_$no_connect_aclass, 2925 (ls_validate_info.n_disconnected_processes > 1), ls_validate_info.process_number); 2926 2927 else if login_server_process_response.already_logged_in 2928 then call ls_message_$print (ls_message_table_$already_logged_in, ls_validate_info.person_id, 2929 ls_validate_info.project_id, login_server_process_response.already_logged_in_info.terminal_type, 2930 login_server_process_response.already_logged_in_info.terminal_id); 2931 2932 else call ls_message_$print_error (process_code); 2933 2934 if logout | hangup 2935 then do; 2936 free login_server_process_response in (system_area); 2937 if ls_validate_info.process_request_ptr ^= null () 2938 then free ls_validate_info.process_request_ptr -> login_server_process_request in (system_area); 2939 if logout 2940 then call Logout (hangup, (ls_validate_info.brief), process_code); 2941 2942 else if hangup 2943 then do; 2944 ls_validate_info.code = process_code; 2945 call Hangup (DONT_TELL_INITIALIZER); 2946 call ssu_$abort_subsystem (sci_ptr); 2947 end; 2948 return; 2949 end; 2950 2951 if login_server_process_response.n_disconnected_processes > 0 2952 then call ls_message_$print (ls_message_table_$disconnected_processes, 2953 login_server_process_response.n_disconnected_processes, 2954 (login_server_process_response.n_disconnected_processes > 1)); 2955 ls_validate_info.n_disconnected_processes = login_server_process_response.n_disconnected_processes; 2956 free login_server_process_response in (system_area); 2957 call Enter_connect_loop (); 2958 return; 2959 end; 2960 2961 /* code is 0, so the initializer did what was requested */ 2962 2963 ls_process_info_ptr = ls_validate_info.process_info_ptr; 2964 if login_server_process_response.new_handle ^= ""b 2965 then ls_validate_info.initializer_handle, ls_process_info.initializer_handle = 2966 login_server_process_response.new_handle; 2967 /* in case handle is different from */ 2968 /* the one in the validate_response */ 2969 if login_server_process_response.flags.brief 2970 then ls_validate_info.brief = "1"b; 2971 2972 if login_server_process_response.destroyed 2973 then do; 2974 call ls_message_$print (ls_message_table_$process_destroyed, 2975 (ls_validate_info.n_disconnected_processes > 1), ls_validate_info.process_number); 2976 2977 cpu_seconds = divide (login_server_process_response.cpu_usage, ONE_MILLION, 17, 0); 2978 cpu_minutes = divide (cpu_seconds, 60, 17, 0); 2979 cpu_seconds = cpu_seconds - 60 * cpu_minutes; 2980 2981 if logout 2982 then call ls_message_$print (ls_message_table_$logout, ls_validate_info.person_id, 2983 ls_validate_info.project_id, 2984 date_time_$format ("system_date_time", clock (), "system_zone", "system_lang"), 2985 (cpu_minutes ^= 0), cpu_minutes, cpu_seconds, login_server_process_response.cost); 2986 2987 else call ls_message_$print (ls_message_table_$cost_message, (cpu_minutes ^= 0), cpu_minutes, cpu_seconds, 2988 login_server_process_response.cost); 2989 2990 free login_server_process_response in (system_area); 2991 /* don't need this any more */ 2992 2993 if logout 2994 then call Logout (^hold_on_destroy, "1"b, error_table_$user_requested_logout); 2995 2996 else call Enter_connect_loop (); 2997 2998 return; 2999 end; 3000 3001 /* There's now a process (new or pre-existing) to connect to */ 3002 3003 ls_process_info.process_group_id = login_server_process_response.process_group_id; 3004 ls_process_info.start_event_channel = login_server_process_response.start_event_channel; 3005 ls_process_info.process_id = login_server_process_response.process_id; 3006 ls_process_info.usage_type = LS_LOGIN_USAGE; 3007 ls_process_info.authorization = login_server_process_response.authorization; 3008 ls_process_info.initial_ring = login_server_process_response.initial_ring; 3009 ls_process_info.terminal_type = ls_validate_info.user_connection_info.terminal_type; 3010 ls_process_info.terminal_id = ls_validate_info.user_connection_info.terminal_id; 3011 ls_process_info.line_type = ls_validate_info.user_connection_info.line_type; 3012 ls_process_info.flags.terminal_info_set = "1"b; 3013 3014 /* other fields in ls_process_info were filled in earlier */ 3015 3016 call convert_authorization_$to_string (login_server_process_response.authorization, auth_string, code); 3017 if auth_string ^= "" 3018 then call ls_message_$print (ls_message_table_$authorization, auth_string); 3019 3020 if login_server_process_response.connected 3021 then call ls_message_$print (ls_message_table_$connected, (ls_validate_info.n_disconnected_processes > 1), 3022 login_server_process_response.process_number); 3023 3024 else if login_server_process_response.new_proc 3025 then call ls_message_$print (ls_message_table_$connected_after_new_proc, 3026 (ls_validate_info.n_disconnected_processes > 1), ls_validate_info.process_number); 3027 3028 else do; /* brand-new process */ 3029 if login_server_process_response.login_instance > 1 3030 then do; 3031 instance = login_server_process_response.login_instance; 3032 if instance > 9 & instance < 20 3033 then suffix = ls_data_$teens_suffix (mod (instance, 10)); 3034 else suffix = ls_data_$suffix (mod (instance, 10)); 3035 call ls_message_$print (ls_message_table_$multiple_login_msg, instance, suffix); 3036 end; 3037 3038 if ^ls_validate_info.brief 3039 then do; 3040 3041 if login_server_process_response.accounting_message_length > 0 3042 then call ls_message_$print_error (0, "^a", login_server_process_response.accounting_message); 3043 3044 call ls_message_$print (ls_message_table_$login, login_server_process_response.anonymous, 3045 ls_validate_info.person_id, ls_validate_info.project_id, 3046 date_time_$format ("system_date_time", clock (), "system_zone", "system_lang"), 3047 ls_validate_info.user_connection_info.terminal_type, 3048 ls_validate_info.user_connection_info.terminal_id); 3049 call ls_message_$print (ls_message_table_$last_login, 3050 date_time_$format ("system_date_time", ls_validate_info.previous_login_info.time, "system_zone", 3051 "system_lang"), ls_validate_info.previous_login_info.terminal_type, 3052 ls_validate_info.previous_login_info.terminal_id); 3053 end; 3054 end; 3055 3056 free login_server_process_response in (system_area); 3057 if ls_validate_info.process_request_ptr ^= null () 3058 then free ls_validate_info.process_request_ptr -> login_server_process_request in (system_area); 3059 3060 ls_validate_info.code = 0; /* all is OK */ 3061 call ssu_$abort_subsystem (sci_ptr); /* and we're ALL DONE */ 3062 return; 3063 3064 end Process_process_response; 3065 3066 Process_validate_response: 3067 procedure (reply_code); 3068 3069 dcl reply_code fixed bin (35) parameter; /* an input parameter indicating the reply code from Send_request_to_initializer */ 3070 3071 if reply_code ^= 0 3072 then do; 3073 call ssu_$print_message (sci_ptr, reply_code); 3074 if ls_response_ptr ^= null () 3075 then free login_server_validate_response in (system_area); 3076 go to TRY_AGAIN; 3077 end; 3078 3079 /* attributes might have been changed even if login refused, so report it now */ 3080 3081 if login_server_validate_response.password_changed 3082 then call ls_message_$print (ls_message_table_$password_changed); 3083 3084 if login_server_validate_response.default_auth_changed 3085 then call ls_message_$print (ls_message_table_$default_auth_changed); 3086 3087 if login_server_validate_response.default_proj_changed 3088 then call ls_message_$print (ls_message_table_$default_project_changed); 3089 3090 if login_server_validate_response.status_code ^= 0 3091 then do; 3092 ls_validate_info.code = ls_convert_as_error_code_ (login_server_validate_response.status_code); 3093 call ssu_$print_message (sci_ptr, ls_validate_info.code); 3094 hangup_flag = login_server_validate_response.disconnect; 3095 3096 if login_server_validate_response.password_expired 3097 then call ls_message_$print (ls_message_table_$password_expired, 3098 login_server_validate_response.password_interval); 3099 3100 if login_server_validate_response.password_unused_too_long 3101 then call ls_message_$print (ls_message_table_$password_unused_too_long, 3102 login_server_validate_response.password_interval); 3103 3104 free login_server_validate_response in (system_area); 3105 if hangup_flag 3106 then do; 3107 call Hangup (DONT_TELL_INITIALIZER); 3108 call ssu_$abort_subsystem (sci_ptr); 3109 end; 3110 3111 else do; 3112 ls_validate_info.validation_failures = ls_validate_info.validation_failures + 1; 3113 ip = ls_cp_info.installation_parms_ptr; 3114 if ls_validate_info.validation_failures >= installation_parms.part_1.login_tries 3115 then do; /* not logged in */ 3116 call Hangup (DONT_TELL_INITIALIZER); 3117 call ssu_$abort_subsystem (sci_ptr); 3118 end; 3119 3120 else go to TRY_AGAIN; 3121 end; 3122 end; 3123 3124 /* user is validated now. Tell him if his password has been entered incorrectly */ 3125 3126 if login_server_validate_response.incorrect_passwords > 0 3127 then call ls_message_$print (ls_message_table_$incorrect_passwords, 3128 (login_server_validate_response.incorrect_passwords > 1), 3129 login_server_validate_response.incorrect_passwords, 3130 date_time_$format ("system_date_time", login_server_validate_response.last_incorrect_password.time, 3131 "system_zone", "system_lang"), login_server_validate_response.last_incorrect_password.terminal_type, 3132 login_server_validate_response.last_incorrect_password.terminal_id); 3133 end Process_validate_response; 3134 3135 Read_answerback: 3136 procedure (); 3137 3138 /* this procedure reads the answerback, and adjusts the terminal type if necessary */ 3139 3140 dcl new_term_type char (32); 3141 dcl answerback char (64); 3142 dcl length_read fixed bin (21); 3143 3144 dcl terminal_id char (4); 3145 3146 dcl 1 auto_terminal_info aligned like terminal_info; 3147 3148 auto_terminal_info.version = terminal_info_version; 3149 call iox_$control (iox_$user_io, "terminal_info", addr (auto_terminal_info), code); 3150 if code ^= 0 3151 then do; 3152 subr_name = "iox_$control terminal_info"; 3153 call Hangup_no_message (DONT_TELL_INITIALIZER); 3154 go to NO_SETUP; 3155 end; 3156 3157 ls_validate_info.user_connection_info.terminal_id = auto_terminal_info.id; 3158 ls_validate_info.user_connection_info.terminal_type = auto_terminal_info.term_type; 3159 ls_validate_info.user_connection_info.line_type = auto_terminal_info.line_type; 3160 3161 call iox_$control (iox_$user_io, "wru", null (), code); 3162 if code = 0 3163 then do; 3164 call iox_$get_chars (iox_$user_input, addr (answerback), length (answerback), length_read, code); 3165 if code ^= 0 3166 then call Hangup_with_error (code, DONT_TELL_INITIALIZER); 3167 call Count_wakeups (); 3168 3169 if length_read ^= 0 3170 then do; 3171 call ttt_info_$decode_answerback (substr (answerback, 1, length_read), -1, new_term_type, terminal_id, 3172 code); 3173 if code = 0 3174 then do; 3175 if terminal_id ^= "" & terminal_id ^= auto_terminal_info.id 3176 then call Set_term_id (terminal_id); 3177 if new_term_type ^= "" & new_term_type ^= auto_terminal_info.term_type 3178 then call Set_terminal_type (new_term_type); 3179 end; 3180 end; 3181 end; 3182 else code = 0; /* set main proc's code argument, used at NO_SETUP */ 3183 return; 3184 end Read_answerback; 3185 3186 Read_password: 3187 procedure () returns (char (8)); 3188 3189 /* read the password, unechoed */ 3190 3191 dcl password_buff char (10); 3192 dcl length_read fixed bin (21); 3193 dcl code fixed bin (35); 3194 dcl send_mask bit (1); 3195 3196 password_buff = ""; 3197 call Change_state (AWAITING_PASSWORD); 3198 send_mask = ls_validate_info.mask_needed; 3199 3200 if ^send_mask 3201 then do; 3202 call iox_$control (iox_$user_io, "printer_off", null (), code); 3203 if code ^= 0 3204 then send_mask = "1"b; 3205 end; 3206 3207 call ioa_ (""); /* put out newline after printer_off */ 3208 if send_mask 3209 then call Print_password_mask (); 3210 3211 call iox_$get_line (iox_$user_input, addr (password_buff), length (password_buff), length_read, code); 3212 if code ^= 0 3213 then if code ^= error_table_$long_record 3214 then call Hangup_with_error (code, (ls_validate_info.initializer_handle ^= ""b)); 3215 call Count_wakeups (); 3216 3217 if length_read > 9 | code = error_table_$long_record 3218 then do; 3219 call ls_message_$print (ls_message_table_$password_format_warning); 3220 call iox_$control (iox_$user_input, "resetread", null (), (0)); 3221 /* to get rid of any extra characters */ 3222 end; 3223 3224 if ^send_mask 3225 then call iox_$control (iox_$user_io, "printer_on", null (), (0)); 3226 return (before (password_buff, NL)); 3227 3228 end Read_password; 3229 3230 Send_request_to_initializer: 3231 procedure (a_request_type, a_request_version, a_request_size, free_request, response_expected, response_ptr, a_code); 3232 3233 /* procedure to send any of the various login_server requests to the Initializer, using send_ls_request_. 3234* If the request does not provoke the expected response, it is bad news. */ 3235 3236 dcl a_request_type fixed bin parameter; 3237 dcl a_request_version char (8) parameter; 3238 dcl a_request_size fixed bin parameter; 3239 dcl free_request bit (1) aligned parameter; 3240 dcl response_expected fixed bin parameter; 3241 dcl response_ptr pointer parameter; 3242 dcl a_code fixed bin (35) parameter; 3243 3244 dcl request_size fixed bin (18); 3245 dcl message_name fixed bin; 3246 dcl message_type fixed bin; 3247 dcl code fixed bin (35); 3248 dcl reply_code fixed bin (35); 3249 3250 dcl 1 auto_ls_reply_message aligned like ls_reply_message; 3251 3252 dcl user_message (as_user_message_info.message_length) bit (36) aligned based (ls_response_ptr); 3253 3254 dcl ls_request (request_size) bit (36) aligned based (ls_request_ptr); 3255 3256 3257 request_size = a_request_size; 3258 3259 ls_request_header.request_type = a_request_type; 3260 ls_request_header.request_version = a_request_version; 3261 ls_request_header.header_version = LS_REQUEST_HEADER_VERSION_1; 3262 ls_request_header.reply_event_channel = ls_validate_info.reply_channel; 3263 ls_request_header.reply_handle = ls_validate_info.server_handle; 3264 ls_request_header.pad1 = ""b; 3265 3266 ls_validate_info.expected_response = response_expected; 3267 call Change_state (AWAITING_INITIALIZER_RESPONSE); 3268 3269 ls_reply_message_ptr = addr (auto_ls_reply_message); 3270 call send_ls_request_ (ls_request_ptr, request_size, ls_reply_message_ptr, code); 3271 if free_request 3272 then free ls_request in (system_area); 3273 3274 if code ^= 0 3275 then do; 3276 call ls_report_subr_error_ (code, OUR_NAME, 3277 ls_validate_info.cp_info_ptr, "send_ls_request_", 3278 TELL_USER, TAKE_DUMP); 3279 call Hangup_with_error (code, DONT_TELL_INITIALIZER); 3280 end; 3281 3282 reply_code = ls_convert_as_error_code_ (ls_reply_message.code); 3283 3284 if reply_code ^= 0 3285 then if ls_reply_message.request_invalid 3286 then do; 3287 call ls_report_internal_error_ (reply_code, OUR_NAME, ls_validate_info.cp_info_ptr, 3288 "Reported in as_reply_message."); 3289 call Hangup_with_error (reply_code, ls_validate_info.initializer_handle ^= ""b); 3290 end; 3291 3292 if ls_reply_message.response_sent 3293 then do; 3294 as_user_message_info_ptr = addr (auto_as_user_message_info); 3295 3296 as_user_message_info.version = AS_USER_MESSAGE_INFO_VERSION_1; 3297 string (as_user_message_info.flags) = ""b; 3298 as_user_message_info.message_info.message_handle = ls_validate_info.server_handle; 3299 3300 call user_message_$read_message (system_areap, as_user_message_info_ptr, code); 3301 3302 if code ^= 0 3303 then do; 3304 call ls_report_subr_error_ (code, OUR_NAME, 3305 ls_validate_info.cp_info_ptr, 3306 "user_message_$read_message", TELL_USER, 3307 (code ^= error_table_$no_message)); 3308 call Hangup_with_error (code, ls_validate_info.initializer_handle ^= ""b); 3309 end; 3310 3311 ls_response_ptr = as_user_message_info.message_ptr; 3312 3313 message_type = login_server_response_header.message_type; 3314 if message_type = response_expected then; 3315 else if message_type = LS_TERMINATION_RESPONSE 3316 then do; /* valid anytime */ 3317 reply_code = 3318 ls_convert_as_error_code_ (login_server_termination_response.status_code); 3319 call Hangup_with_error (reply_code, DONT_TELL_INITIALIZER); 3320 end; 3321 else if message_type ^= response_expected 3322 then do; 3323 free user_message in (system_area); 3324 if lbound (LS_RESPONSE_TYPES, 1) <= message_type & message_type <= hbound (LS_RESPONSE_TYPES, 1) 3325 then message_name = message_type; 3326 else message_name = LS_UNKNOWN_RESPONSE; 3327 call ls_report_internal_error_ (0, OUR_NAME, ls_validate_info.cp_info_ptr, "1"b, 3328 "Unexpected response from initializer: 3329 expected ^d (^a response), received ^d (^a response)", response_expected, LS_RESPONSE_TYPES (response_expected), 3330 message_type, LS_RESPONSE_TYPES (message_name)); 3331 call Hangup_with_error (error_table_$fatal_error, ls_validate_info.initializer_handle ^= ""b); 3332 end; 3333 3334 response_ptr = ls_response_ptr; 3335 a_code = 0; /* because relevant information is in response; */ 3336 end; 3337 3338 else do; /* no response */ 3339 response_ptr = null (); 3340 a_code = reply_code; 3341 if a_code = 0 /* claimed there was nothing wrong */ 3342 then if response_expected ^= 0 /* but didn't send expected response */ 3343 then do; 3344 call ls_report_internal_error_ (0, OUR_NAME, ls_validate_info.cp_info_ptr, "1"b, 3345 "No response when ^d expected, but code = 0", response_expected); 3346 call Hangup_with_error (error_table_$fatal_error, ls_validate_info.initializer_handle ^= ""b); 3347 end; 3348 end; 3349 3350 return; 3351 end Send_request_to_initializer; 3352 3353 Set_modes: 3354 procedure (a_mode_string); 3355 3356 dcl a_mode_string char (*) parameter; 3357 3358 dcl mode_string char (512); 3359 dcl returned_modes char (32); 3360 dcl code fixed bin (35); 3361 3362 mode_string = a_mode_string; 3363 3364 call iox_$modes (iox_$user_io, mode_string, returned_modes, code); 3365 3366 if code ^= 0 3367 then if code = error_table_$bad_mode 3368 then call ls_message_$print_error (code, returned_modes); 3369 else call ls_report_subr_error_ (code, OUR_NAME, 3370 ls_validate_info.cp_info_ptr, "iox_$modes", 3371 TELL_USER, DONT_TAKE_DUMP); 3372 3373 return; 3374 end Set_modes; 3375 3376 Set_term_id: 3377 procedure (a_terminal_id); 3378 3379 dcl a_terminal_id char (*); 3380 3381 dcl code fixed bin (35); 3382 3383 call iox_$control (iox_$user_io, "store_id", addr (a_terminal_id), code); 3384 if code ^= 0 3385 then call ls_message_$print_error (code, "Cannot set terminal id."); 3386 else ls_validate_info.user_connection_info.terminal_id = a_terminal_id; 3387 3388 return; 3389 end Set_term_id; 3390 3391 Set_terminal_type: 3392 procedure (a_type); 3393 3394 dcl a_type char (*) parameter; 3395 3396 dcl terminal_type char (32); 3397 3398 dcl 1 auto_set_term_info aligned like set_term_type_info; 3399 3400 terminal_type = translate (a_type, "ABCDEFGHIJKLMNOPQRSTUVWXYZ", "abcdefghijklmnopqrstuvwxyz"); 3401 /* make it be all upper case */ 3402 3403 auto_set_term_info.version = stti_version_1; 3404 auto_set_term_info.name = terminal_type; 3405 auto_set_term_info.send_initial_string = "1"b; 3406 auto_set_term_info.set_modes = "1"b; 3407 auto_set_term_info.ignore_line_type = "0"b; 3408 auto_set_term_info.mbz = ""b; 3409 3410 call iox_$control (iox_$user_io, "set_term_type", addr (auto_set_term_info), code); 3411 if code ^= 0 3412 then call ls_message_$print_error (code, "Cannot set terminal type."); 3413 else ls_validate_info.user_connection_info.terminal_type = terminal_type; 3414 3415 return; 3416 end Set_terminal_type; 3417 3418 3419 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3420 /* */ 3421 /* Write_greeting_message: */ 3422 /* 1) If not in brief mode, then print greeting banner message on terminal. */ 3423 /* Also, update ls_validate_info.banner_checked_time, since the banner is */ 3424 /* checked by the act of printing. */ 3425 /* */ 3426 /* NOTE: This procedure is called by PRINT_BANNER_IF_CHANGED, an alarm call */ 3427 /* handler which is a separate entrypoint into ls_validate_user_. The only */ 3428 /* variable set by this separate entrypoint is ls_validate_info_ptr, so only */ 3429 /* the ls_validate_info structure (and things it points to) can be */ 3430 /* referenced by this procedure. */ 3431 /* */ 3432 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3433 3434 Write_greeting_message: 3435 procedure (force_message); 3436 3437 dcl force_message bit (1); 3438 3439 dcl installation_id char (64); 3440 dcl special_length fixed bin (21); 3441 dcl special_msg char (special_length) based; 3442 dcl sysid char (8); 3443 3444 if ^ls_validate_info.brief | force_message 3445 then do; 3446 ansp = ls_validate_info.cp_info_ptr -> ls_cp_info.answer_table_ptr; 3447 3448 if anstbl.special_message ^= "" 3449 then do; 3450 special_length = anstbl.message_lng; 3451 call ioa_$nnl ("^a", addr (anstbl.special_message) -> special_msg); 3452 end; 3453 3454 call system_info_$sysid (sysid); 3455 call system_info_$installation_id (installation_id); 3456 3457 call ls_message_$print (ls_message_table_$greeting_msg, sysid, installation_id, 3458 ls_validate_info.connection_desc_ptr -> ls_connection_desc.name, float (anstbl.n_units) / 10.0e0, 3459 float (anstbl.max_units) / 10.0e0, anstbl.n_users, 3460 date_time_$format ("system_date_time", clock (), "system_zone", "system_lang")); 3461 ls_validate_info.banner_checked_time = clock (); 3462 end; 3463 3464 return; 3465 end Write_greeting_message; 3466 3467 /* * * * * * * * * * * * * * * * * * * * * * * * * */ 3468 1 1 /* BEGIN INCLUDE FILE ... answer_table.incl.pl1 */ 1 2 1 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 4 /* */ 1 5 /* The answer table has one entry per "login instance" whether completed or */ 1 6 /* not. It is connected to the Channel Definition Table by the pointer */ 1 7 /* "channel". The header is used mostly by dialup_. */ 1 8 /* */ 1 9 /* Programs which use this file must also include user_table_header.incl.pl1 */ 1 10 /* */ 1 11 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 12 1 13 /****^ HISTORY COMMENTS: 1 14* 1) change(81-09-10,Kittlitz), approve(), audit(), install(): 1 15* Replace anstbl.incl.pl1. 1 16* 2) change(85-01-15,Swenson), approve(), audit(), install(): 1 17* Add anstbl.session_uid_counter. 1 18* 3) change(85-08-21,Coren), approve(), audit(), install(): 1 19* Add anstbl.message_update_time and named constants for values of 1 20* anstbl.session, and to make all padding explicit. 1 21* 4) change(85-08-23,Coren), approve(), audit(), install(): 1 22* Change "entry" to a placeholder so as not to require 1 23* user_table_entry.incl.pl1. 1 24* 5) change(86-06-29,Swenson), approve(87-07-13,MCR7741), 1 25* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 1 26* Added the flag login_server_present which indicates whether a login 1 27* server request has been received. This is used to determine whether 1 28* dial_ctl_ should call uc_cleanup_network_dials_ (and thus 1 29* hpriv_connection_list_, which only exists with the MNA RPQ software). 1 30* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 1 31* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 1 32* A) Moved constants for ute.pw_flags.mask_ctl into 1 33* user_table_entry.incl.pl1. 1 34* B) Added common table header to all user tables. 1 35* END HISTORY COMMENTS */ 1 36 1 37 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 38 /* */ 1 39 /* The anstbl structure below is divided into sections. Each section begins */ 1 40 /* with a comment describing the elements in the section. Elements are */ 1 41 /* placed within a section, based upon their function or the programs that */ 1 42 /* use them. Each section begins on a double word and is an even number of */ 1 43 /* words long. */ 1 44 /* */ 1 45 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 1 46 1 47 1 48 1 49 /* format: style4 */ 1 50 1 51 dcl ANSTBL_version_4 static options (constant) init (4); /* version of this declaration */ 1 52 1 53 dcl ansp ptr automatic init (null); 1 54 1 55 dcl 1 anstbl based (ansp) aligned, /* Structure of answer table */ 1 56 2 header like ut_header, /* Header common to all user tables. */ 1 57 1 58 /* Counter elements. */ 1 59 2 nlin fixed bin, /* number of active lines */ 1 60 2 mxlin fixed bin, /* maximum number of active lines */ 1 61 2 n_users fixed bin, /* number of logged-in users */ 1 62 2 max_users fixed bin, /* maximum number of users allowed */ 1 63 2 n_units fixed bin, /* number of logged in units */ 1 64 2 max_units fixed bin, /* maximum number of units */ 1 65 2 n_sessions fixed bin, /* number of Multics sessions */ 1 66 2 n_pad fixed bin, 1 67 1 68 /* Name elements. */ 1 69 2 sysdir char (64) unal, /* name of main system control directory */ 1 70 2 as_tty char (8) unal, /* name of main answering service device. */ 1 71 1 72 /* Login elements. */ 1 73 2 login_word char (8) unal, /* login word if special_session=1 */ 1 74 2 session char (8) unal, /* session indicator */ 1 75 2 special_message char (128) unal, /* message to be printed for special session */ 1 76 2 message_update_time fixed bin (71), /* time at which special_message was last updated */ 1 77 2 message_lng fixed bin, /* length of special message */ 1 78 2 login_pad fixed bin, 1 79 1 80 /* Table update elements. */ 1 81 2 lock_count fixed bin, /* global lock for all system control tables */ 1 82 2 update_pending bit (1) aligned, /* flag indicating that update is required */ 1 83 2 update_channel fixed binary (71), /* event channel of update procedure */ 1 84 2 acct_update_chn fixed bin (71) aligned, /* Timer IPC channel */ 1 85 2 acct_last_update_time fixed bin (71) aligned, /* Time of last accounting update */ 1 86 2 acct_alarm_fail fixed bin, /* non-zero if alarm has failed */ 1 87 2 update_pad fixed bin, 1 88 1 89 /* dialup_ data values. */ 1 90 2 current_time fixed bin (71), /* Time of last transaction */ 1 91 2 processid_index fixed bin (18), /* unique index for process id generation */ 1 92 2 session_uid_counter fixed bin (35), /* current session_uid */ 1 93 1 94 /* load_ctl_ elements. */ 1 95 2 shift fixed bin, /* Shift, set by act_ctl_ */ 1 96 2 auto_maxu fixed bin, /* 0 = manual, 1 = config, 2 = load-level */ 1 97 2 extra_units fixed bin, /* Total daemon and abs units. */ 1 98 /* load_ctl_ load leveling desired response range: */ 1 99 2 response_high fixed bin, /* bad if user response time slower than this */ 1 100 2 response_low fixed bin, /* bad if user response time faster than this */ 1 101 2 load_ctl_pad fixed bin, 1 102 1 103 /* Login server request server data. */ 1 104 2 ls_request_server_event_channel fixed bin (71), /* channel for login server requests */ 1 105 2 ls_request_server_process_id bit (36) aligned, /* process serving login server requests */ 1 106 2 login_server_present bit (1) aligned, /* On IFF a login server request has been processed */ 1 107 1 108 2 entry_pad (28) fixed bin, /* pad to 128 words */ 1 109 2 entry (0 refer (anstbl.current_size)), /* user entries */ 1 110 3 contents (UTE_SIZE) fixed bin; 1 111 1 112 /* constants */ 1 113 1 114 /* values for anstbl.session */ 1 115 1 116 dcl (AT_NORMAL init ("normal "), 1 117 AT_SPECIAL init ("special "), 1 118 AT_SHUTDOWN init ("shutdown")) char (8) internal static options (constant); 1 119 1 120 dcl UTE_SIZE fixed bin internal static initial (300); 1 121 1 122 /* END INCLUDE FILE ... answer_table.incl.pl1 */ 3469 3470 2 1 /* Begin include file as_user_message_info.incl.pl1 BIM 1985-01-11 */ 2 2 /* format: style4 */ 2 3 2 4 /**** This structure is passed in by a user process to read out 2 5* an A.S. user message. */ 2 6 2 7 declare as_user_message_info_ptr pointer; 2 8 declare 1 as_user_message_info aligned based (as_user_message_info_ptr), 2 9 2 version char (8) aligned, 2 10 2 flags aligned, 2 11 3 read_message_id bit (1) unaligned, /* message_id specified -- read that one */ 2 12 3 read_after_message_id bit (1) unaligned, /* message_id specified -- read the next one for the handle after that */ 2 13 3 no_handle_given bit (1) unaligned, /* application debugging: look at all messages for us, regardless of handle */ 2 14 3 ring_given bit (1) unaligned, /* application debugging: look at outer ring messages */ 2 15 3 dont_delete bit (1) unaligned, /* application debugging, look at message but don't delete them */ 2 16 3 pad bit (31) unaligned, 2 17 2 message_info aligned, /* Output arguments */ 2 18 3 message_ptr pointer, 2 19 3 message_length fixed bin (18), /* words */ 2 20 3 pad bit (36) aligned, 2 21 3 message_id bit (72) aligned, 2 22 3 message_access_class bit (72) aligned, 2 23 3 message_handle bit (72) aligned, 2 24 3 message_ring fixed bin (3), 2 25 2 sender_info aligned, 2 26 3 group_id char (32) unaligned, 2 27 3 process_id bit (36) aligned, 2 28 2 destination_info aligned, 2 29 3 group_id char (32) unal, 2 30 3 process_id bit (36) aligned, 2 31 3 ring fixed bin (3) aligned; 2 32 2 33 declare AS_USER_MESSAGE_INFO_VERSION_1 char (8) aligned init ("asum0001") int static options (constant); 2 34 2 35 /* End include file as_user_message_info.incl.pl1 */ 3471 3472 3 1 /* BEGIN INCLUDE FILE ... cp_character_types.incl.pl1 */ 3 2 /* Created: June 1982 by G. Palter */ 3 3 3 4 /* Character types used to define Multics command language and subsystem request languages */ 3 5 3 6 dcl (NORMAL_CHARACTER initial ( 0), /* normal everyday character */ 3 7 3 8 WHITESPACE initial ( 1), /* separates tokens but is otherwise ignored (ie: does not 3 9* appear in the command/request name or any arguments */ 3 10 3 11 COMMAND_SEPARATOR initial ( 2), /* separate multiple commands/requests on the line but is 3 12* otherwise ignored (as above) (semi-colon) */ 3 13 COMMAND_SEPARATOR_OR_WHITESPACE initial ( 3), /* separate multiple commands/requests on the line and is also 3 14* treated as whitespace when rescanning |[...] return values 3 15* (newline) */ 3 16 3 17 SINGLE_TOKEN initial ( 4), /* appears as a one character argument to the command/request 3 18* even if not surrounded by whitespace (causes a break) */ 3 19 3 20 COMPOUND_TOKEN initial ( 5), /* appears as an argument to the command/request even if not 3 21* surrounded by whitespace; if several of this type character 3 22* appear on the line without any intervening characters, they 3 23* are merged into a single argument (eg: ^=) */ 3 24 3 25 QUOTE_CHARACTER initial ( 6), /* begin and end a quoted string ("): only the same character 3 26* ends the quoted string (ie: "' isn't a completed string); 3 27* within the string, any occurence of this character must be 3 28* doubled */ 3 29 3 30 ACTIVE_STRING_MODIFIER initial ( 7), /* modifies interpretation of an active string (|) */ 3 31 3 32 BEGIN_ITERATION_1 initial (17), /* starts an iteration set; only matches END_ITERATION_1 */ 3 33 BEGIN_ITERATION_2 initial (18), /* starts an iteration set; only matches END_ITERATION_2 */ 3 34 BEGIN_ITERATION_3 initial (19), /* ... */ 3 35 BEGIN_ITERATION_4 initial (20), /* ... */ 3 36 BEGIN_ITERATION_5 initial (21), /* ... */ 3 37 BEGIN_ITERATION_6 initial (22), /* ... */ 3 38 BEGIN_ITERATION_7 initial (23), /* ... */ 3 39 BEGIN_ITERATION_8 initial (24), /* ... */ 3 40 3 41 END_ITERATION_1 initial (25), /* ends an iteration set; only matches BEGIN_ITERATION_1 */ 3 42 END_ITERATION_2 initial (26), /* ends an iteration set; only matches BEGIN_ITERATION_2 */ 3 43 END_ITERATION_3 initial (27), /* ... */ 3 44 END_ITERATION_4 initial (28), /* ... */ 3 45 END_ITERATION_5 initial (29), /* ... */ 3 46 END_ITERATION_6 initial (30), /* ... */ 3 47 END_ITERATION_7 initial (31), /* ... */ 3 48 END_ITERATION_8 initial (32), /* ... */ 3 49 3 50 BEGIN_ACTIVE_STRING_1 initial (33), /* starts active string; only matches END_ACTIVE_STRING_1 */ 3 51 BEGIN_ACTIVE_STRING_2 initial (34), /* starts active string; only matches END_ACTIVE_STRING_2 */ 3 52 BEGIN_ACTIVE_STRING_3 initial (35), /* ... */ 3 53 BEGIN_ACTIVE_STRING_4 initial (36), /* ... */ 3 54 BEGIN_ACTIVE_STRING_5 initial (37), /* ... */ 3 55 BEGIN_ACTIVE_STRING_6 initial (38), /* ... */ 3 56 BEGIN_ACTIVE_STRING_7 initial (39), /* ... */ 3 57 BEGIN_ACTIVE_STRING_8 initial (40), /* ... */ 3 58 3 59 END_ACTIVE_STRING_1 initial (41), /* ends active string; only matches BEGIN_ACTIVE_STRING_1 */ 3 60 END_ACTIVE_STRING_2 initial (42), /* ends active string; only matches BEGIN_ACTIVE_STRING_2 */ 3 61 END_ACTIVE_STRING_3 initial (43), /* ... */ 3 62 END_ACTIVE_STRING_4 initial (44), /* ... */ 3 63 END_ACTIVE_STRING_5 initial (45), /* ... */ 3 64 END_ACTIVE_STRING_6 initial (46), /* ... */ 3 65 END_ACTIVE_STRING_7 initial (47), /* ... */ 3 66 END_ACTIVE_STRING_8 initial (48)) /* ... */ 3 67 fixed binary (9) unsigned static options (constant); 3 68 3 69 /* END INCLUDE FILE ... cp_character_types.incl.pl1 */ 3473 3474 4 1 /*----------BEGIN dsa_log_constants.incl.pl1---------------------------------*/ 4 2 4 3 /****^ HISTORY COMMENTS: 4 4* 1) change(85-12-01,Kissel), approve(87-07-13,MCR7679), 4 5* audit(87-03-13,GDixon), install(87-08-04,MR12.1-1056): 4 6* Initial coding. 4 7* END HISTORY COMMENTS */ 4 8 4 9 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 4 10 4 11 /*****************************************************************************/ 4 12 /* */ 4 13 /* If any changes are made to the entry_type, caller_type, or severity */ 4 14 /* constants, then dsa_log_manager_.pl1 must be updated. It keeps an */ 4 15 /* number of internal static tables which are dimensioned using these */ 4 16 /* constants. */ 4 17 /* */ 4 18 /*****************************************************************************/ 4 19 4 20 /* Types of entries to the dsa_log_manager_. */ 4 21 4 22 dcl AEP_ENTRY_TYPE fixed bin internal static options (constant) init (1); 4 23 dcl ERROR_ENTRY_TYPE fixed bin internal static options (constant) init (2); 4 24 dcl TRACE_ENTRY_TYPE fixed bin internal static options (constant) init (3); 4 25 4 26 /* Types of callers for logging purposes. */ 4 27 4 28 dcl CXI_CALLER_TYPE fixed bin internal static options (constant) init (1); 4 29 dcl SC_CALLER_TYPE fixed bin internal static options (constant) init (2); 4 30 dcl DSAC_CALLER_TYPE fixed bin internal static options (constant) init (3); 4 31 dcl UFT_USER_CALLER_TYPE fixed bin internal static options (constant) init (4); 4 32 dcl UFT_SYSTEM_CALLER_TYPE fixed bin internal static options (constant) init (5); 4 33 dcl TM_CALLER_TYPE fixed bin internal static options (constant) init (6); 4 34 dcl LS_CALLER_TYPE fixed bin internal static options (constant) init (7); 4 35 dcl USER_CALLER_TYPE fixed bin internal static options (constant) init (8); 4 36 4 37 /* Values for the severity parameter in the log. */ 4 38 4 39 dcl INFO_LOG_SEVERITY fixed bin internal static options (constant) init (0); 4 40 dcl WARN_LOG_SEVERITY fixed bin internal static options (constant) init (1); 4 41 dcl SERIOUS_LOG_SEVERITY fixed bin internal static options (constant) init (2); 4 42 dcl FATAL_LOG_SEVERITY fixed bin internal static options (constant) init (3); 4 43 4 44 /* Values for the classes of binary data that can be put into a log. */ 4 45 4 46 dcl AEP_BIN_DATA_CLASS char (16) varying internal static options (constant) init ("aep_record"); 4 47 dcl AEP_UNCONVERTED_DATA_CLASS char (16) varying internal static options (constant) init ("aep_unc_record"); 4 48 dcl DSA_BIN_DATA_CLASS char (16) varying internal static options (constant) init ("dsa_binary"); 4 49 4 50 /* Values for the AEP data types, for use by the conversion routine. */ 4 51 4 52 dcl AEP_NO_CONVERT_DATA_TYPE fixed bin internal static options (constant) init (-1); 4 53 4 54 /*----------END dsa_log_constants.incl.pl1-----------------------------------*/ 3475 3476 5 1 /* BEGIN INCLUDE FILE ... installation_parms.incl.pl1 */ 5 2 5 3 /* Modified 740723 by PG to add short AIM access names */ 5 4 /* Modified Fall 1977 by T. Casey to add fatal loop and trm_ signal parameters */ 5 5 /* Modified 04/03/78 by CDT to add rcp_init_flags structure */ 5 6 /* Modified May 1978 by T. Casey to add resource timer and resource price list parameters */ 5 7 /* Modified November 1978 by T. Casey for MR7.0, to add absentee control parameters */ 5 8 /* Modified 17 September 1980 by G. Palter to add default absentee queue */ 5 9 /* Modified April 1981 by E. N. Kittlitz for chn_wakeup_error_loop, chn_wakeup_error_count */ 5 10 /* Modified June 1981 by E. N. Kittlitz for nrates/rate_structures UNCA rate_structure support. 5 11* Version, expand foregound_cpu_default_limit and abs_cpu_max_limit to fixed bin (35) fields. 5 12* nrscp & resource array moved from offset 2064 (octal) to 2400 (octal). */ 5 13 /* Modified 1984-06-19 BIM to remove obsolete fields, and add 5 14* strict_trusted_path. */ 5 15 /* Modified 1984-10-24 BIM for default_pdir_quota. */ 5 16 /* Modified 1984-12-05 BIM for require_operator_login. */ 5 17 /* Modified 1985-03-01 by E. Swenson for password flags. */ 5 18 5 19 5 20 /****^ HISTORY COMMENTS: 5 21* 1) change(86-01-27,MSharpe), approve(87-05-25,MCR7690), 5 22* audit(87-03-29,GDixon), install(87-08-04,MR12.1-1056): 5 23* added vchn_requires_accept parameter. 5 24* 2) change(87-02-17,GDixon), approve(87-05-25,MCR7680), 5 25* audit(87-06-02,Parisek), install(87-08-04,MR12.1-1056): 5 26* Correct formatting problems. 5 27* END HISTORY COMMENTS */ 5 28 5 29 5 30 /* NOTE: rate_structure.incl.pl1 uses these declarations */ 5 31 5 32 5 33 dcl 1 installation_parms based (ip) aligned, /* describes installation parameters */ 5 34 2 part_1 like installation_parms_part_1 aligned, 5 35 2 resource (0 refer (installation_parms.nrscp)) like installation_parms_resource_array_part aligned; 5 36 5 37 dcl installation_parms_version_1 fixed bin init (1) static internal options (constant); 5 38 dcl installation_parms_version_2 fixed bin init (2) static internal options (constant); 5 39 5 40 dcl 1 installation_parms_part_1 based aligned, /* Used only by installation_parms and rate_structure */ 5 41 2 installation_id char (32), /* Name printed at dialup and in who */ 5 42 2 company char (64), /* company name */ 5 43 2 department char (64), /* department */ 5 44 2 companyds char (120), /* company, double spaced */ 5 45 2 departmentds char (120), /* dpeartment double spaced */ 5 46 2 shifttab (336) bit (3) unal, /* half-hrs from 0000 Mon, value is shift no */ 5 47 2 cpu_price (0: 7) float bin, /* price for cpu hour, by shift */ 5 48 2 log_base_price (0: 7) float bin, /* price for log hour, by shift */ 5 49 2 io_ops_price (0: 7) float bin, /* price per 1000 terminal io ops */ 5 50 2 core_price (0: 7) float bin, /* price for core page-hour, by shift */ 5 51 2 ndevices fixed bin, /* number of devices to charge */ 5 52 2 devtab (16), /* Maximum 16 */ 5 53 3 device_id char (8), /* Name of device */ 5 54 3 device_price (0: 7) float bin, /* Price by shift */ 5 55 2 inactive_time fixed bin, /* seconds of inactivity permitted */ 5 56 2 warning_time fixed bin, /* seconds from warning to logout */ 5 57 2 login_time fixed bin, /* seconds in which to complete login */ 5 58 2 acct_update fixed bin, /* seconds between acct update */ 5 59 2 login_tries fixed bin, /* number of login tries allowed */ 5 60 2 disk_price float bin, /* disk rate, in $/page-sec */ 5 61 2 registration_price float bin, /* fee per month per user */ 5 62 2 dolsign char (1), /* "dollar sign" */ 5 63 2 abs_cpu_price (4) float bin, /* price for absentee cpu by queue */ 5 64 2 abs_mem_price (4) float bin, /* Absentee memory charge */ 5 65 2 iod_rec_price (4) float bin, /* price for io daemon lines, per K, by queue */ 5 66 2 abs_timax (4) fixed bin (35), /* Absentee TIMAX parameter */ 5 67 2 abs_cpu_default_limit (4) fixed bin (35), /* default absentee cpu limit in seconds (changed from usec.) */ 5 68 2 syserr_log_copy_threshold fixed bin (9), /* Threshold (in PAGES) at which the 5 69* Initializer will copy the syserr_log */ 5 70 2 default_pdir_seg_quota fixed bin (17) unaligned, /* if system and project say 0 */ 5 71 2 default_pdir_dir_quota fixed bin (17) unaligned, /* Always used */ 5 72 2 fatal_error_loop_count fixed bin (17) unaligned, 5 73 2 fatal_error_loop_seconds fixed bin (17) unaligned, 5 74 2 term_real_time_seconds fixed bin (17) unaligned, 5 75 2 term_cpu_time_seconds fixed bin (17) unaligned, 5 76 2 rcp_init_flags like rcp_init_flags aligned, /* one word long */ 5 77 2 rsc_timer_seconds fixed bin (17) unaligned, /* time interval at which to check for resource availability */ 5 78 2 pad_old_fg_cpu_default_limit bit (18) unaligned, 5 79 2 foreground_queue_position fixed bin (17) unal, /* queue that foreground queue comes after */ 5 80 2 idle_time_constant_seconds fixed bin (17) unal, /* how far back to maintain moving average of load */ 5 81 2 sus_cpu_time_seconds fixed bin (17) unal, /* allow suspended process this much cpu time */ 5 82 2 sus_real_time_seconds fixed bin (17) unal, /* and this much real time, before bumping it */ 5 83 2 foreground_cpu_default_limit fixed bin (35), /* default cpu time limit (sec) for foreground absentee jobs */ 5 84 2 access_authorization_ceiling bit (72), /* "System high" access authorization. */ 5 85 2 level_names (0:7) char (32), /* Names for security levels. */ 5 86 2 category_names (18) char (32), /* Names for security categories. */ 5 87 2 short_level_names (0:7) char (8), /* Abbreviated level names. */ 5 88 2 short_category_names (18) char (8), /* Abbreviated category names. */ 5 89 2 ncon fixed bin, /* Number of config elements. */ 5 90 2 cona (51), /* each entry is 5 words long */ 5 91 3 cpu fixed bin (5) unal, /* Number of CPU's */ 5 92 3 shift fixed bin (5) unal, /* Shift number */ 5 93 3 x1 fixed bin (23) unal, 5 94 3 kmem fixed bin (17) unal, /* Memory size */ 5 95 3 kbulk fixed bin (17) unal, /* Bulk store size */ 5 96 3 x2 fixed bin (17) unal, 5 97 3 maxa fixed bin (11) unal, /* Max abs users */ 5 98 3 maxq fixed bin (5) unal, /* Max abs q */ 5 99 3 maxu_base fixed bin (17) unal, 5 100 3 response_high fixed bin (17) unal, 5 101 3 response_low fixed bin (17) unal, 5 102 3 x3 fixed bin (17) unal, 5 103 5 104 /* Absentee control parameters. New for MR7.0 */ 5 105 5 106 2 max_abs (0:7) fixed bin (17) unal, /* per-shift upper limit on abs_maxu */ 5 107 2 min_abs (0:7) fixed bin (17) unal, /* per-shift lower limit on abs_maxu */ 5 108 2 pct_abs (0:7) fixed bin (17) unal, /* abs_maxu is this pct (per-shift) of idle units */ 5 109 5 110 2 max_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue upper limit on reserved slots */ 5 111 2 min_qres (0:7, 4) fixed bin (17) unal, /* per-shift-and-queue lower limit on reserved slots */ 5 112 2 pct_qres (0:7, 4) fixed bin (17) unal, /* reserved slots are these pcts of abs_maxu */ 5 113 5 114 2 abs_cpu_max_limit (0:7, 4) fixed bin (35), /* per-shift-and-queue upper limit (sec) on jobs' cpu times */ 5 115 5 116 2 default_absentee_queue fixed binary (17) unaligned, /* default absentee queue for ear, etc. */ 5 117 5 118 2 chn_wakeup_error_loop_count fixed bin (17) unaligned, /* maximum number of channel wakeups in following interval */ 5 119 2 chn_wakeup_error_loop_seconds fixed bin (17) unaligned, /* works like fatal_error_loop_count/seconds */ 5 120 2 rate_structure_number fixed bin (17) unaligned, /* rate_structure number of this RS */ 5 121 2 version fixed bin (35), /* must be 2 */ 5 122 2 nrates fixed bin, /* number of rate structures */ 5 123 2 rate_structures (0:9) char (32), /* names of rate_structures */ 5 124 2 trusted_path_login bit (1) aligned, /* forbid logout -hold and new_proc -auth */ 5 125 2 require_operator_login bit (1) aligned, /* just what it says */ 5 126 2 operator_inactive_time fixed bin, /* seconds between commands --> not logged in. */ 5 127 2 validate_daemon_commands bit (1) aligned, /* force existence and adequate access to 5 128* mcacs segments for operators */ 5 129 2 password_min_length fixed bin, /* minimum length of passwords */ 5 130 2 password_gpw_length fixed bin, /* length of generated passwords */ 5 131 2 password_change_interval fixed bin, /* number of days until must change */ 5 132 2 password_expiration_interval fixed bin, /* number of days that a password may remain unused */ 5 133 2 vchn_requires_accept bit (1) aligned, /* "login personid -op -vchn foo" must be 5 134* "accepted" by operator if personid is not 5 135* signed on system console */ 5 136 2 end_pad (219) bit (36) aligned, /* leave plenty of pad before the variable length price list */ 5 137 2 nrscp fixed bin; /* length of resource price array; must have offset 2400 (octal), 5 138* or someone miscounted when using part of pad2 */ 5 139 5 140 5 141 /* Entries in the following array may be accessed via system_info_$resource_price. 5 142* This array should not be accessed directly, since its format will change in subsequent releases of Multics. */ 5 143 5 144 dcl 1 installation_parms_resource_array_part (0 refer (installation_parms.nrscp)) based, 5 145 2 name char (32), 5 146 2 price float bin; 5 147 6 1 /* BEGIN INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 6 2 6 3 /* Created on 04/24/78 by Michael R. Jordan */ 6 4 /* Modified 04/10/79 by C. D. Tavares */ 6 5 6 6 dcl rifp ptr; 6 7 6 8 dcl 1 rcp_init_flags based (rifp), 6 9 2 unload_on_detach bit (1) unaligned, /* ON => tape volumes are unloaded after detaching */ 6 10 2 pad1 bit (2) unaligned, /* obsolete */ 6 11 2 resource_mgmt_enabled bit (1) unaligned, /* ON => resource management has been enabled */ 6 12 2 auto_registration bit (1) unaligned, /* ON => auto registration allowed */ 6 13 2 pad2 bit (2) unaligned, /* future expansion, possibly of authentication_level */ 6 14 2 authentication_level fixed bin (2) unaligned unsigned; /* see below for values */ 6 15 6 16 dcl (No_authentication initial (0), 6 17 Nominal_authentication initial (1), 6 18 Automatic_authentication initial (2), 6 19 Manual_authentication initial (3)) fixed bin internal static options (constant); 6 20 6 21 dcl authentication_level_names (0:3) char (12) internal static options (constant) initial 6 22 ("none", "nominal", "automatic", "manual"); 6 23 6 24 /* END INCLUDE FILE ... rcp_init_flags.incl.pl1 */ 5 148 5 149 5 150 /* END INCLUDE FILE ... installation_parms.incl.pl1 */ 3477 3478 3479 dcl ip pointer; 3480 7 1 /* BEGIN INCLUDE FILE ... login_server_messages.incl.pl1 */ 7 2 7 3 /****^ HISTORY COMMENTS: 7 4* 1) change(86-06-30,Coren), approve(86-06-30,MCR7415), 7 5* audit(86-07-02,Margolin), install(86-07-11,MR12.0-1092): 7 6* Initial implementation. 7 7* 2) change(87-04-16,GDixon), approve(87-07-13,MCR7679), 7 8* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 9* A) Add REQUEST_TYPES and RESPONSE_TYPES arrays. 7 10* B) Add login_server_validate_response.last_incorrect_password.time. 7 11* C) Add user_connection_info.line_type. 7 12* D) Add login_server_process_request.minimum_ring. 7 13* 3) change(87-05-14,GDixon), approve(87-07-13,MCR7737), 7 14* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 7 15* A) Add login_server_process_response.brief. 7 16* B) Add login_server_list_response.initial_ring. 7 17* C) Separate login_server_process_response into fixed and variable parts. 7 18* D) Move user_connection_info into login_server_request_header. 7 19* END HISTORY COMMENTS */ 7 20 7 21 /* This include file defines all the structures passed in message segments 7 22* between a login server process and the Initializer (or "answering service") 7 23* process. For convenience, messages from the server to the initializer, 7 24* passed using the send_ls_request_ subroutine, are called "requests"; 7 25* messages from the initializer to the server, passed using the user_message_ 7 26* mechanism, are called "responses". 7 27**/ 7 28 7 29 /* Request types */ 7 30 7 31 dcl (LS_VALIDATE_REQUEST initial (1), /* validate user ID and password */ 7 32 LS_PROCESS_REQUEST initial (2), /* create or connect to a process */ 7 33 LS_LIST_REQUEST initial (3), /* list disconnected processes */ 7 34 LS_DIAL_REQUEST initial (4), /* find a dial server */ 7 35 LS_DISCONNECT_REQUEST initial (5), /* report disconnection of a login channel */ 7 36 LS_LOGOUT_REQUEST initial (6), /* discard UTE (end of dialogue) */ 7 37 LS_OPERATOR_REQUEST initial (7)) /* log the user in as an operator */ 7 38 fixed bin internal static options (constant); 7 39 7 40 dcl LS_REQUEST_TYPES (7) char (10) internal static options (constant) initial 7 41 ( 7 42 "validate", 7 43 "process", 7 44 "list", 7 45 "dial", 7 46 "disconnect", 7 47 "logout", 7 48 "operator"); 7 49 7 50 dcl ls_request_ptr pointer; 7 51 7 52 /* common header for all requests */ 7 53 7 54 dcl 1 ls_request_header aligned based (ls_request_ptr), 7 55 2 header_version char (8), /* version for this header */ 7 56 2 request_version char (8), /* varies depending on the request */ 7 57 2 request_type fixed bin, 7 58 2 pad1 bit (36), 7 59 2 reply_event_channel fixed bin (71), /* event channel over which reply_message should be sent */ 7 60 2 reply_handle bit (72) aligned, /* used for dispatching response */ 7 61 2 connection_info like user_connection_info; /* connection making this request. */ 7 62 7 63 dcl LS_REQUEST_HEADER_VERSION_1 char (8) initial ("lsrh0001") internal static options (constant); 7 64 7 65 dcl 1 user_connection_info aligned based, /* common info passed in most requests */ 7 66 2 connection_name char (32), 7 67 2 access_class_range (2) bit (72), 7 68 2 terminal_type char (32), 7 69 2 terminal_id char (4), 7 70 2 line_type fixed bin; 7 71 7 72 7 73 7 74 /* "validate" request: validate user ID and password */ 7 75 7 76 dcl 1 login_server_validate_request aligned based (ls_request_ptr), 7 77 2 header like ls_request_header, /* request_type = LS_VALIDATE_REQUEST */ 7 78 2 current_password char (8), /* scrambled */ 7 79 2 authorization bit (72), /* only valid if auth_given = "1"b */ 7 80 2 terminate_event_channel fixed bin (71), /* event channel to notify server when process terminates */ 7 81 2 person_id char (22), /* as specified in login line */ 7 82 2 project_id char (9), /* likewise, might be null string */ 7 83 2 network_connection_type fixed bin, /* see below for values */ 7 84 2 new_password char (8), /* only valid if change_password = "1"b */ 7 85 2 flags, 7 86 3 gpw bit (1) unaligned, /* password generated in response to -generate_password */ 7 87 3 auth_given bit (1) unaligned, /* -authorization specified */ 7 88 3 anonymous bit (1) unaligned, /* "enterp" request */ 7 89 3 anon_no_password bit (1) unaligned, /* "enter" request */ 7 90 3 change_password bit (1) unaligned, /* gave -cpw or -gpw */ 7 91 3 change_default_auth bit (1) unaligned, /* gave -change_default_authorization */ 7 92 3 change_default_proj bit (1) unaligned, /* gave -change_default_project */ 7 93 3 operator bit (1) unaligned, /* gave -operator */ 7 94 3 pad bit (28) unaligned; 7 95 7 96 7 97 dcl LS_VALIDATE_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsvr0001"); 7 98 7 99 7 100 7 101 /* "process" request: create a process or reconnect to an existing process for the specified user */ 7 102 7 103 dcl 1 login_server_process_request aligned based (ls_request_ptr), 7 104 2 fixed_part, /* to allow for automatic copies */ 7 105 3 header like ls_request_header, /* request_type = LS_PROCESS_REQUEST */ 7 106 3 handle bit (72), /* as provided in validate_response */ 7 107 3 person_id char (22), /* the real one */ 7 108 3 project_id char (9), /* likewise */ 7 109 3 project_pad fixed bin, 7 110 3 command_type fixed bin, /* login, connect, etc.; see below for names */ 7 111 3 process_number fixed bin, /* 0 if unspecified or irrelevant */ 7 112 3 default_io_module char (32), /* I/O module to use if no outer_module specified */ 7 113 3 switch_flags, /* used to indicate if "switch"-type control args were specified */ 7 114 4 warn_given bit (1) unaligned, 7 115 4 force_given bit (1) unaligned, 7 116 4 save_given bit (1) unaligned, 7 117 4 preempt_given bit (1) unaligned, 7 118 4 brief_given bit (1) unaligned, 7 119 4 pad2 bit (31) unaligned, 7 120 3 switch_values, /* these are only valid if corresponding bit in switch_flags is on */ 7 121 4 warn bit (1) unaligned, 7 122 4 force bit (1) unaligned, 7 123 4 save_on_disconnect bit (1) unaligned, 7 124 4 preempt bit (1) unaligned, 7 125 4 brief bit (1) unaligned, /* "0"b & brief_given => -long */ 7 126 4 pad3 bit (31) unaligned, 7 127 3 other_flags, 7 128 4 init_ring_given bit (1) unaligned, /* "1"b if -ring */ 7 129 4 minimum_ring_given bit (1) unaligned, /* "1"b if MNA terminal interface ring > 1 */ 7 130 4 immediate bit (1) unaligned, /* "1"b => -new_proc (or -destroy) -immediate */ 7 131 4 no_start_up bit (1) unaligned, /* "1"b if -no_start_up */ 7 132 4 pad4 bit (32) unaligned, 7 133 3 initial_ring fixed bin, /* valid iff init_ring_given = "1"b */ 7 134 3 minimum_ring fixed bin, /* ring in which MNA terminal mgr operates */ 7 135 3 home_dir char (168), /* null if not specified */ 7 136 3 outer_module char (32), /* likewise */ 7 137 3 process_overseer char (168), /* likewise */ 7 138 3 subsystem char (168), /* likewise */ 7 139 3 n_args fixed bin, /* how many arguments specified after -ag; if 0, ignore the rest of the structure */ 7 140 2 login_arguments, /* variable part, describes stuff after -ag */ 7 141 3 arg_string_length fixed bin (21), 7 142 3 args (ls_process_request_n_args refer (login_server_process_request.n_args)), 7 143 4 start_index fixed bin (21), /* position in arg_string at which arg (i) starts */ 7 144 4 arg_length fixed bin (21), /* length of arg (i) */ 7 145 3 arg_string char (ls_process_request_arg_string_length refer (login_server_process_request.arg_string_length)); 7 146 7 147 dcl ls_process_request_n_args fixed bin; 7 148 dcl ls_process_request_arg_string_length fixed bin (21); 7 149 7 150 dcl LS_PROCESS_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lspr0001"); 7 151 7 152 7 153 7 154 /* "list" request: list the user's disconnected processes, if any */ 7 155 7 156 dcl 1 login_server_list_request aligned based (ls_request_ptr), 7 157 2 header like ls_request_header, /* request_type = LS_LIST_REQUEST */ 7 158 2 handle bit (72); 7 159 7 160 dcl LS_LIST_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lslr0001"); 7 161 7 162 7 163 7 164 /* "dial" request: find a process to accept a dial */ 7 165 7 166 /* Note: because a dial request may or may not have been preceded 7 167* by a validate request/response, the initializer_handle may be null. 7 168**/ 7 169 7 170 dcl 1 login_server_dial_request aligned based (ls_request_ptr), 7 171 2 header like ls_request_header, /* request_type = LS_DIAL_REQUEST */ 7 172 2 initializer_handle bit (72), /* as provided in validate_response (if any) */ 7 173 2 terminate_event_channel fixed bin (71), /* event channel to wake up login server when master process terminates */ 7 174 2 dial_qualifier char (22), 7 175 2 person_id char (22), /* null if not specified */ 7 176 2 project_id char (9), /* likewise */ 7 177 2 user_person_id char (22), /* if -user was specified, otherwise "" */ 7 178 2 user_project_id char (9); /* likewise */ 7 179 7 180 dcl LS_DIAL_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsdr0001"); 7 181 7 182 7 183 7 184 /* "disconnect" request: report that a login channel has disconnected */ 7 185 /* Note: this message is sent if the connection is broken either during the login dialogue 7 186* or later on when the process was using it */ 7 187 7 188 dcl 1 login_server_disconnect_request aligned based (ls_request_ptr), 7 189 2 header like ls_request_header, /* request_type = LS_DISCONNECT_REQUEST */ 7 190 2 handle bit (72), /* from original validate_response */ 7 191 2 process_id bit (36); /* ""b if no process established */ 7 192 7 193 dcl LS_DISCONNECT_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsdc0001"); 7 194 7 195 7 196 7 197 /* "logout" request: indicates that user entered the "logout" request, ending the dialogue; does not require any response */ 7 198 7 199 dcl 1 login_server_logout_request aligned based (ls_request_ptr), 7 200 2 header like ls_request_header, /* request_type = LS_LOGOUT_REQUEST */ 7 201 2 handle bit (72); 7 202 7 203 dcl LS_LOGOUT_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lslg0001"); 7 204 7 205 7 206 7 207 /* "operator" request: sign the user on as an operator, the result of either 7 208* "login -operator" or "dial system". Note that in the latter case, there may 7 209* not have been a validate request (if the -user control argument wasn't specified), 7 210* in which case initializer_handle is null, and the person_id and project_id 7 211* are blank. 7 212**/ 7 213 7 214 dcl 1 login_server_operator_request aligned based (ls_request_ptr), 7 215 2 header like ls_request_header, /* request_type = LS_OPERATOR_REQUEST */ 7 216 2 initializer_handle bit (72) aligned, /* as provided in validate_response (if any) */ 7 217 2 terminate_event_channel fixed bin (71), /* event channel for wakeup when connection is dropped */ 7 218 2 person_id char (22), /* likewise */ 7 219 2 project_id char (9), /* likewise */ 7 220 2 virtual_channel char (32); /* if -virtual_channel specified, otherwise "" */ 7 221 7 222 dcl LOGIN_SERVER_OPERATOR_REQUEST_VERSION_1 char (8) internal static options (constant) initial ("lsor0001"); 7 223 7 224 7 225 7 226 /* Response types */ 7 227 7 228 dcl (LS_UNKNOWN_RESPONSE initial (100), /* unknown response type. */ 7 229 LS_VALIDATE_RESPONSE initial (101), /* response to validation request */ 7 230 LS_PROCESS_RESPONSE initial (102), /* response to process request */ 7 231 LS_LIST_RESPONSE initial (103), /* response to list request */ 7 232 LS_DIAL_RESPONSE initial (104), /* response to dial request */ 7 233 LS_TERMINATION_RESPONSE initial (105), /* to notify server of a logout */ 7 234 LS_NEW_PROC_RESPONSE initial (106), /* to notify server of process termination */ 7 235 LS_OPERATOR_RESPONSE initial (107)) /* response to operator request */ 7 236 fixed bin internal static options (constant); 7 237 7 238 dcl LS_RESPONSE_TYPES (100:107) char (10) internal static options (constant) initial 7 239 ( 7 240 "UNKNOWN", 7 241 "validate", 7 242 "process", 7 243 "list", 7 244 "dial", 7 245 "terminate", 7 246 "new_proc", 7 247 "operator"); 7 248 7 249 /* NOTE: the server_handle is not included in the response structures because 7 250* it is provided in the user_message_ structures */ 7 251 7 252 7 253 7 254 dcl ls_response_ptr pointer; 7 255 7 256 /* common header for all responses */ 7 257 7 258 dcl 1 login_server_response_header aligned based (ls_response_ptr), 7 259 2 message_type fixed bin, 7 260 2 header_pad bit (36), /* force doubleword alignment */ 7 261 2 version char (8); 7 262 7 263 7 264 7 265 /* "validate" response: indicate whether user_id/password is valid */ 7 266 7 267 dcl 1 login_server_validate_response aligned based (ls_response_ptr), 7 268 2 header like login_server_response_header, /* message_type = LS_VALIDATE_RESPONSE */ 7 269 2 handle bit (72), /* to be provided by the server in subsequent */ 7 270 /* messages for the same connection */ 7 271 2 authorization bit (72), /* default if none was supplied */ 7 272 2 authorization_range (2) bit (72), /* authorization range permitted for this user */ 7 273 2 status_code fixed bin (35), /* 0 iff user is validated */ 7 274 2 person_id char (22), /* primary name from the PNT */ 7 275 2 project_id char (9), /* primary name from the PNT or PDT */ 7 276 2 n_disconnected_processes fixed bin, /* number of disconnected processes for specified user */ 7 277 2 validate_pad fixed bin, 7 278 2 previous_login_info, /* for printing login message */ 7 279 3 time fixed bin (71), 7 280 3 terminal_type char (32), 7 281 3 terminal_id char (4), 7 282 2 incorrect_passwords fixed bin, /* number of times password given incorrectly */ 7 283 2 last_incorrect_password, /* where it came from */ 7 284 3 time fixed bin (71), 7 285 3 terminal_type char (32), 7 286 3 terminal_id char (4), 7 287 2 password_interval fixed bin, /* limit (in days) for password use or change */ 7 288 2 flags, 7 289 3 disconnect bit (1) unaligned, /* if "1"b, close the connection immediately */ 7 290 3 password_changed bit (1) unal, /* "1"b => changed password */ 7 291 3 default_auth_changed bit (1) unal, /* "1"b => changed default authorization */ 7 292 3 default_proj_changed bit (1) unal, /* "1"b => changed default project */ 7 293 3 password_expired bit (1) unal, /* "1"b => password not changed recently enough */ 7 294 3 password_unused_too_long bit (1) unal, /* "1"b => password hasn't been used recently */ 7 295 3 pad bit (30) unaligned; 7 296 7 297 dcl LS_VALIDATE_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsvs0001"); 7 298 7 299 7 300 7 301 /* "process" response: responds to request to create or connect */ 7 302 7 303 dcl 1 login_server_process_response aligned based (ls_response_ptr), 7 304 2 fixed_part, 7 305 3 header like login_server_response_header, /* message_type = LS_PROCESS_RESPONSE */ 7 306 3 status_code fixed bin (35), /* 0 iff process was created or requested process exists */ 7 307 3 process_id bit (36), 7 308 3 new_handle bit (72), /* changed if reconnecting, etc. to preexisting process, all 0 otherwise */ 7 309 3 authorization bit (72), /* authorization of created or existing process */ 7 310 3 process_group_id char (32), /* Person.Project.tag */ 7 311 3 process_number fixed bin, /* as in, "Your disconnected process #2..." */ 7 312 3 n_disconnected_processes fixed bin, /* valid even if code ^= 0, e.g., if request was ambiguous */ 7 313 3 start_event_channel fixed bin (71), /* event channel to wake up user process on */ 7 314 3 login_instance fixed bin, /* "This is your Nth interactive login" */ 7 315 3 accounting_info, /* for destroyed process, if any */ 7 316 4 cpu_usage fixed bin (71), 7 317 4 cost float bin, 7 318 3 flags, /* except for disconnect and logout, invalid if status_code ^= 0 */ 7 319 4 disconnect bit (1) unaligned, /* "1"b => break the connection immediately */ 7 320 4 logout bit (1) unaligned, /* "1"b => restart login sequence */ 7 321 4 created bit (1) unaligned, /* "1"b => new process created */ 7 322 4 connected bit (1) unaligned, /* "1"b => connected to old process */ 7 323 4 new_proc bit (1) unaligned, /* "1"b => connected after new_proc */ 7 324 4 destroyed bit (1) unaligned, /* "1"b => process destroyed */ 7 325 4 anonymous bit (1) unaligned, /* "1"b => anonymous user ("enter" or "enterp") */ 7 326 4 already_logged_in bit (1) unaligned, /* "1"b => user can't log in because he already is */ 7 327 4 message_coordinator bit (1) unaligned, /* "1"b => this connection is going to be used by the message coordinator */ 7 328 4 brief bit (1) unaligned, /* "1"b => brief user attribute from PDT */ 7 329 4 pad bit (26) unaligned, 7 330 3 initial_ring fixed bin, /* ring in which process was created */ 7 331 3 already_logged_in_info, /* relevant if already_logged_in flag is "1"b */ 7 332 4 connection_name char (32), 7 333 4 terminal_type char (32), 7 334 4 terminal_id char (4), 7 335 2 accounting_message_struc, /* character string assembled by initializer giving error or warnings about the user's account */ 7 336 3 accounting_message_length fixed bin, 7 337 3 accounting_message char (ls_process_response_accounting_message_length refer (login_server_process_response.accounting_message_length)); 7 338 7 339 dcl ls_process_response_accounting_message_length fixed bin; 7 340 7 341 dcl LOGIN_SERVER_PROCESS_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsps0001"); 7 342 7 343 7 344 7 345 /* "list" response: used if create request specified "list" command */ 7 346 7 347 dcl 1 login_server_list_response aligned based (ls_response_ptr), 7 348 2 header like login_server_response_header, /* message_type = LS_LIST_RESPONSE */ 7 349 2 n_processes fixed bin, /* number of disconnected processes (might be 0) */ 7 350 2 pad_header fixed bin, 7 351 2 process_info (login_server_list_response_n_processes refer (login_server_list_response.n_processes)), 7 352 3 creation_time fixed bin (71), 7 353 3 authorization bit (72), 7 354 3 initial_ring fixed bin, 7 355 3 pad_process_info fixed bin, 7 356 3 connection_info like user_connection_info; 7 357 7 358 dcl login_server_list_response_n_processes fixed bin; 7 359 7 360 dcl LOGIN_SERVER_LIST_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lslr0001"); 7 361 7 362 7 363 7 364 /* "dial" response: response to dial request */ 7 365 7 366 dcl 1 login_server_dial_response aligned based (ls_response_ptr), 7 367 2 header like login_server_response_header, /* message_type = LS_DIAL_RESPONSE */ 7 368 2 status_code fixed bin (35), /* 0 iff dial server was found and all is OK */ 7 369 2 process_id bit (36), /* of dial server */ 7 370 2 process_group_id char (32), /* likewise */ 7 371 2 authorization bit (72), /* likewise, to make sure connection is usable */ 7 372 2 start_event_channel fixed bin (71), /* event channel to wake up user process on */ 7 373 2 process_ring fixed bin, /* initial ring of dial server */ 7 374 2 flags, 7 375 3 disconnect bit (1) unaligned, /* "1"b => break connection immediately */ 7 376 3 pad bit (35) unaligned; 7 377 7 378 dcl LOGIN_SERVER_DIAL_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsds0001"); 7 379 7 380 7 381 7 382 /* "termination" response: (not a response to anything): notify server that a 7 383* process terminated other than by logout */ 7 384 7 385 dcl 1 login_server_termination_response aligned based (ls_response_ptr), 7 386 2 header like login_server_response_header, /* message_type = LS_TERMINATION_RESPONSE */ 7 387 2 accounting_info, /* for printing in logout message */ 7 388 3 cpu_usage fixed bin (71), 7 389 3 cost float bin, 7 390 3 pad bit (33) unaligned, 7 391 2 process_id bit (36), /* of the logged-out process */ 7 392 2 process_group_id char (32), 7 393 2 status_code fixed bin (35), /* e.g., to indicate reason for fatal error */ 7 394 2 flags, 7 395 3 logout bit (1) aligned, /* no new process coming */ 7 396 3 automatic_logout bit (1) unaligned, 7 397 3 hold bit (1) unaligned, 7 398 3 brief bit (1) unaligned, 7 399 3 new_proc bit (1) unaligned, /* user-requested new process */ 7 400 3 fatal_error bit (1) unaligned, /* process died unexpectedly */ 7 401 3 fpe_caused_logout bit (1) unaligned, /* fatal error doesn't generate new process */ 7 402 3 fpe_loop bit (1) unaligned, /* fatal error loop: too many in too short a time */ 7 403 3 fpe_during_init bit (1) unaligned, /* fatal error during process initialization */ 7 404 3 offer_help bit (1) unaligned, /* print a message offering "help" */ 7 405 3 pad bit (27) unaligned; 7 406 7 407 dcl LOGIN_SERVER_TERMINATION_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lstr0001"); 7 408 7 409 7 410 7 411 /* "new_proc" response: (not actually a response to anything) -- describes a 7 412* new process (after a termination_response) */ 7 413 7 414 dcl 1 login_server_new_proc_response aligned based (ls_response_ptr), 7 415 2 header like login_server_response_header, /* message_type = LS_NEW_PROC_RESPONSE */ 7 416 2 new_authorization bit (72), /* in case of new_proc -auth */ 7 417 2 new_start_event_channel fixed bin (71), /* event channel for starting new process */ 7 418 2 new_process_id bit (36); /* process_id of newly-created process */ 7 419 7 420 dcl LOGIN_SERVER_NEW_PROC_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsnp0001"); 7 421 7 422 7 423 7 424 /* "operator" response: indicates success or failure of operator request */ 7 425 7 426 dcl 1 login_server_operator_response aligned based (ls_response_ptr), 7 427 2 header like login_server_response_header, /* message_type = LS_OPERATOR_RESPONSE */ 7 428 2 status_code fixed bin (35), /* indicates success or failure */ 7 429 2 process_id bit (36), /* process ID of the message coordinator */ 7 430 2 process_group_id char (32), /* Person.Project.tag */ 7 431 2 event_channel fixed bin (71), /* event channel over which to send connect/disconnect wakeups */ 7 432 2 ring fixed bin, /* ring of message coordinator */ 7 433 2 flags, 7 434 3 disconnect bit (1) unaligned, /* "1" => break the connection immediately */ 7 435 3 mbz bit (35) unaligned; 7 436 7 437 7 438 dcl LOGIN_SERVER_OPERATOR_RESPONSE_VERSION_1 char (8) internal static options (constant) initial ("lsos0001"); 7 439 7 440 7 441 /* format of reply message sent to acknowledge receipt of a request */ 7 442 7 443 dcl ls_reply_message_ptr pointer; 7 444 7 445 dcl 1 ls_reply_message aligned based (ls_reply_message_ptr), 7 446 2 code fixed bin (35), 7 447 2 flags, 7 448 3 request_invalid bit (1) unaligned, /* "1"b => could not process request */ 7 449 3 response_sent bit (1) unaligned, /* "1"b => there is a response message */ 7 450 3 as_error_code bit (1) unaligned, /* "1"b => code is from as_error_table_ */ 7 451 3 do_not_reply bit (1) unaligned, /* "1"b => special flag for AS to prevent any reply from being sent to login server */ 7 452 3 mbz bit (32) unaligned; 7 453 7 454 /* The following are values used to identify the various requests internally; those from CREATE_REQ on 7 455* can appear as "command_type" in ls_process_requests. */ 7 456 7 457 dcl (LOGIN_REQ initial (1), 7 458 ENTER_REQ initial (2), 7 459 ENTERP_REQ initial (3), 7 460 CREATE_REQ initial (4), 7 461 DESTROY_REQ initial (5), 7 462 CONNECT_REQ initial (6), 7 463 NEW_PROC_REQ initial (7), 7 464 LIST_REQ initial (8)) 7 465 fixed bin internal static options (constant); 7 466 7 467 /* The following are the possible values for login_server_validate_request.network_connection_type. 7 468* They are used by the initializer to select a default process overseer and an instance tag. 7 469**/ 7 470 7 471 dcl (NETWORK_CONNECTION_LOGIN initial (1), 7 472 NETWORK_CONNECTION_DSA_FILE_TRANSFER initial (2)) 7 473 fixed bin internal static options (constant); 7 474 7 475 /* END INCLUDE FILE ... login_server_messages.incl.pl1 */ 3481 3482 8 1 /* BEGIN INCLUDE FILE...login_service_entries.incl.pl1 */ 8 2 8 3 /****^ HISTORY COMMENTS: 8 4* 1) change(85-03-01,Coren), approve(87-07-13,MCR7679), audit(87-03-18,GDixon), 8 5* install(87-08-04,MR12.1-1056): 8 6* Initial coding. 8 7* 2) change(87-04-16,Brunelle), approve(87-07-13,MCR7679), 8 8* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 8 9* Add group_id parameter to the assign_connection entry. 8 10* 3) change(87-05-18,GDixon), approve(87-07-13,MCR7679), 8 11* audit(87-07-13,Parisek), install(87-08-04,MR12.1-1056): 8 12* A) Update calling sequence for .listen to add minimum_ring parameter. 8 13* B) Update calling sequence for .validate_user to remove 8 14* access_class_range parameter. 8 15* END HISTORY COMMENTS */ 8 16 8 17 /* This include file defines the entries to be returned by a call */ 8 18 /* net_info_$get_service_entries with a service type of "login_service". */ 8 19 8 20 /* format: style3,dclind5,idind25,insnl,ll79,comcol7 */ 8 21 8 22 dcl login_service_entries_ptr 8 23 pointer; 8 24 8 25 dcl 1 login_service_entries aligned based (login_service_entries_ptr), 8 26 /**/ 8 27 /* version: "lsveNNNN" */ 8 28 2 version char (8), 8 29 /**/ 8 30 /* listen (generic_connection_name, area_ptr, disconnect_event_channel */ 8 31 /* , connection_name, connection_handle, connection_info_ptr, */ 8 32 /* connection_info_length, attach_description, */ 8 33 /* access_class_range, minimum_ring, code) */ 8 34 2 listen variable 8 35 entry (char (*), ptr, fixed bin (71), char (*), 8 36 fixed bin (35), ptr, fixed bin (18) unsigned, 8 37 char (*) varying, (2) bit (72) aligned, 8 38 fixed bin, fixed bin (35)), 8 39 /**/ 8 40 /* stop_listen (endpoint_name, code) */ 8 41 2 stop_listen variable entry (char (*), fixed bin (35)), 8 42 /**/ 8 43 /* assign_connection (connection_name, connection_handle, process_id, */ 8 44 /* group_id, */ 8 45 /* initializer_handle, disconnect_event_channel, */ 8 46 /* terminate_event_channel, usage_type, code) */ 8 47 2 assign_connection variable 8 48 entry (char (*), fixed bin (35), 8 49 bit (36) aligned, char (32), bit (72) aligned, 8 50 fixed bin (71), fixed bin (71), fixed bin, 8 51 fixed bin (35)), 8 52 /**/ 8 53 /* unassign_connection (connection_name, connection_handle, */ 8 54 /* wakeup_message, code) */ 8 55 2 unassign_connection variable 8 56 entry (char (*), fixed bin (35), bit (72), 8 57 fixed bin (35)), 8 58 /**/ 8 59 /* disconnect (connection_name, connection_handle, wakeup_message, */ 8 60 /* code) */ 8 61 2 disconnect variable 8 62 entry (char (*), fixed bin (35), bit (72), 8 63 fixed bin (35)), 8 64 /**/ 8 65 /* force_disconnect (connection_name, connection_handle, code) */ 8 66 2 force_disconnect variable 8 67 entry (char (*), fixed bin (35), fixed bin (35)), 8 68 /**/ 8 69 /* validate_user (lscp_info_ptr, option_structure_ptr, */ 8 70 /* ls_process_info_ptr, code) */ 8 71 2 validate_user variable 8 72 entry (ptr, ptr, ptr, fixed bin (35)); 8 73 8 74 8 75 dcl LS_ENTRIES_V1 char (8) internal static 8 76 options (constant) initial ("lsve0001"); 8 77 8 78 /* END INCLUDE FILE...login_service_entries.incl.pl1 */ 3483 3484 9 1 /* BEGIN INCLUDE FILE...ls_connection_desc.incl.pl1 */ 9 2 9 3 /****^ HISTORY COMMENTS: 9 4* 1) change(85-04-01,Coren), approve(87-07-14,MCR7679), audit(87-03-18,GDixon), 9 5* install(87-08-04,MR12.1-1056): 9 6* Initial coding. 9 7* 2) change(87-05-18,GDixon), approve(87-07-14,MCR7679), 9 8* audit(87-07-14,Parisek), install(87-08-04,MR12.1-1056): 9 9* Add minimum_ring element. 9 10* END HISTORY COMMENTS */ 9 11 9 12 /* This include file defines the info structure passed to the control point 9 13* that conducts the logn dialogue with a connection once it has been 9 14* established. 9 15**/ 9 16 9 17 dcl ls_connection_desc_ptr pointer; 9 18 9 19 dcl 1 ls_connection_desc aligned based (ls_connection_desc_ptr), 9 20 2 version char (8), /* "lscdNNNN" */ 9 21 2 name char (32), /* name of the connection */ 9 22 2 endpoint_name char (32), /* name of endpoint through which connection was made */ 9 23 2 io_module char (32), /* I/O module through which connection is attached */ 9 24 2 disconnect_event_channel fixed bin (71), /* event channel over which disconnects will be signalled */ 9 25 2 terminate_event_channel fixed bin (71), /* event channel over which process terminations will be signalled */ 9 26 2 service_entries_ptr pointer, /* points to list of network service entries */ 9 27 2 connection_info_ptr pointer, /* points to entity-specific connection info */ 9 28 2 connection_info_len fixed bin (18) unsigned, /* length of said info in words */ 9 29 2 connection_handle fixed bin (35), /* unique ID of connection */ 9 30 2 process_info_ptr pointer, /* points to ls_process_info */ 9 31 2 access_class_range (2) bit (72), /* min:max access class of the connection */ 9 32 2 minimum_ring fixed bin, /* min ring in which MNA connections works. */ 9 33 2 conn_pad fixed bin; 9 34 9 35 dcl LS_CONNECTION_DESC_V1 char (8) internal static options (constant) initial ("lscd0001"); 9 36 9 37 /* END INCLUDE FILE...ls_connection_desc.incl.pl1 */ 3485 3486 10 1 /* BEGIN INCLUDE FILE...ls_cp_info.incl.pl1 */ 10 2 10 3 /****^ HISTORY COMMENTS: 10 4* 1) change(85-04-01,Coren), approve(87-06-25,MCR7679), audit(87-03-05,GDixon), 10 5* install(87-08-04,MR12.1-1056): 10 6* Initial coding. 10 7* 2) change(87-03-05,GDixon), approve(87-06-25,MCR7679), 10 8* audit(87-07-14,Parisek), install(87-08-04,MR12.1-1056): 10 9* Add info directory paths to ls_cp_info structure. This allows them to 10 10* be changed while running in a test environment. 10 11* 3) change(87-06-25,GDixon), approve(87-06-25,MCR7679), 10 12* audit(87-07-14,Parisek), install(87-08-04,MR12.1-1056): 10 13* Add ls_cp_info.flags.call_probe to allow debug_mode messages without 10 14* stopping in probe. 10 15* END HISTORY COMMENTS */ 10 16 10 17 /* This include file describes the info structure passed to the initial 10 18* procedure of a login server control point that manages a particular 10 19* connection. 10 20**/ 10 21 10 22 dcl ls_cp_info_ptr pointer; 10 23 10 24 dcl 1 ls_cp_info aligned based (ls_cp_info_ptr), 10 25 2 version char (8), /* "lscpNNNN" */ 10 26 2 connection_desc_ptr pointer, /* points to ls_connection_desc */ 10 27 2 error_info_ptr pointer, /* pointer to ls_error_info structure */ 10 28 2 error_event_channel fixed bin (71), /* event channel for signalling errors in parent control point */ 10 29 2 connection_gone_event_channel fixed bin (71), /* event channel for telling parent that connection is gone */ 10 30 2 answer_table_ptr pointer, /* needed by validate_user_ */ 10 31 2 installation_parms_ptr pointer, /* likewise */ 10 32 2 flags, 10 33 3 debug_mode bit (1) unaligned, /* "1"b => debugging environment */ 10 34 3 call_probe bit (1) unaligned, /* "1"b => call probe when control point reports error */ 10 35 3 trace bit (1) unaligned, /* "1"b => make tracing calls */ 10 36 3 fault_recursion bit (1) unaligned, /* "1"b => cl_intermediary being entered for second time */ 10 37 3 no_io_switches bit (1) unaligned, /* "1"b => control point doesn't have separate I/O switches */ 10 38 3 pad bit (31) unaligned, 10 39 2 login_info_dir char (168) unal, /* info dir for login requests */ 10 40 2 connect_info_dir char (168) unal; /* info dir for connect requests */ 10 41 10 42 dcl LS_CP_INFO_V1 char (8) internal static options (constant) initial ("lscp0001"); 10 43 10 44 /* END INCLUDE FILE...ls_cp_info.incl.pl1 */ 3487 3488 11 1 /* BEGIN INCLUDE FILE...ls_process_info.incl.pl1 */ 11 2 11 3 /****^ HISTORY COMMENTS: 11 4* 1) change(85-04-01,Coren), approve(87-07-14,MCR7679), audit(87-03-18,GDixon), 11 5* install(87-08-04,MR12.1-1056): 11 6* Initial coding. 11 7* 2) change(87-04-23,GDixon), approve(87-07-14,MCR7679), 11 8* audit(87-07-14,Parisek), install(87-08-04,MR12.1-1056): 11 9* A) Add line_type to ls_process_info structure. 11 10* B) Make process_group_id unaligned. 11 11* END HISTORY COMMENTS */ 11 12 11 13 /* This include file describes the information returned by validate_user_ to 11 14* login_server_connection_, and maintained for the life of the process or the 11 15* connection (whichever is shorter). */ 11 16 11 17 dcl ls_process_info_ptr pointer; 11 18 11 19 dcl 1 ls_process_info aligned based (ls_process_info_ptr), 11 20 2 version char (8), /* "lspiNNNN" */ 11 21 2 process_group_id char (32) unal, /* Person.Project.tag */ 11 22 2 start_event_channel fixed bin (71), /* event channel for sending initial wakeup to user process */ 11 23 2 authorization bit (72), /* process's AIM authorization */ 11 24 2 initializer_handle bit (72), /* "handle" used in request messages with the Initializer about this connection */ 11 25 2 server_handle bit (72), /* "handle" for reading responses from the Initializer */ 11 26 2 process_id bit (36), 11 27 2 initial_ring fixed bin, /* initial ring of process */ 11 28 2 usage_type fixed bin, /* login, dial, etc.; see active_connection_info.incl.pl1 */ 11 29 2 flags, 11 30 3 fatal_error bit (1) unaligned, /* "1"b when process has taken a fatal error */ 11 31 3 terminal_info_set bit (1) unaligned, /* terminal_type and terminal_id are valid */ 11 32 3 pad bit (34) unaligned, 11 33 2 terminal_type char (32), /* terminal type established during login dialogue */ 11 34 2 terminal_id char (4), /* similarly for terminal ID */ 11 35 2 line_type fixed bin; /* similarly for line type. */ 11 36 11 37 dcl LS_PROCESS_INFO_V1 char (8) internal static options (constant) initial ("lspi0001"); 11 38 11 39 11 40 /* The following structure describes the option flags passed to validate_user_ */ 11 41 11 42 dcl ls_validate_options_ptr pointer; 11 43 11 44 dcl 1 ls_validate_options aligned based (ls_validate_options_ptr), 11 45 2 version char (8), /* "lsvoNNNN" */ 11 46 2 flags, 11 47 3 brief bit (1) unaligned, /* "1"b => don't print greeting message */ 11 48 3 not_first bit (1) unaligned, /* "1"b => this is not first dialogue for this connection */ 11 49 3 mbz bit (34) unaligned; 11 50 11 51 dcl LS_VALIDATE_OPTIONS_V1 char (8) internal static options (constant) initial ("lsvo0001"); 11 52 11 53 /* END INCLUDE FILE...ls_process_info.incl.pl1 */ 3489 3490 12 1 /* BEGIN INCLUDE FILE ... ls_usage_types.incl.pl1 */ 12 2 12 3 /****^ HISTORY COMMENTS: 12 4* 1) change(86-06-30,Coren), approve(86-06-30,MCR7415), 12 5* audit(86-07-02,Margolin), install(86-07-11,MR12.0-1092): 12 6* Initial implementation. 12 7* 2) change(87-05-26,GDixon), approve(87-07-13,MCR7679), 12 8* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 12 9* A) Add LS_USAGE_VALUES constant array. 12 10* END HISTORY COMMENTS */ 12 11 12 12 /* Defines the permissible values for the "usage_type" field in the acctive_connection_list entry and elsewhere */ 12 13 12 14 dcl (LS_ENDPOINT_USAGE initial (0), /* an endpoint for logins, UFT, etc */ 12 15 LS_LOGIN_USAGE initial (1), /* primary login connection */ 12 16 LS_DIAL_USAGE initial (2), /* assigned to dial server */ 12 17 LS_DIAL_OUT_USAGE initial (3), /* user did dial_out operation */ 12 18 LS_SLAVE_ATTACH_USAGE initial (4), /* user did slave attachment */ 12 19 LS_MC_USAGE initial (5)) /* message coordinator channel */ 12 20 fixed bin internal static options (constant); 12 21 12 22 dcl LS_USAGE_VALUES (0:5) char(16) varying int static options(constant) init( 12 23 "endpoint", 12 24 "login", 12 25 "dial-in", 12 26 "dial-out", 12 27 "slave attach", 12 28 "msg coord"); 12 29 12 30 /* END INCLUDE FILE ... ls_usage_types.incl.pl1 */ 3491 3492 13 1 /* BEGIN INCLUDE FILE...ls_validate_info.incl.pl1 */ 13 2 13 3 /****^ HISTORY COMMENTS: 13 4* 1) change(85-08-01,Coren), approve(87-07-14,MCR7679), audit(87-03-18,GDixon), 13 5* install(87-08-04,MR12.1-1056): 13 6* Initial coding. 13 7* 2) change(87-03-30,GDixon), approve(87-07-14,MCR7679), 13 8* audit(87-07-14,Parisek), install(87-08-04,MR12.1-1056): 13 9* A) Add banner_last_checked element. 13 10* B) Add wakeup loop counter elements. 13 11* C) Add several new state values. 13 12* 3) change(87-04-23,GDixon), approve(87-07-14,MCR7679), 13 13* audit(87-07-14,Parisek), install(87-08-04,MR12.1-1056): 13 14* Correct doubleword alignment of structure elements after change to 13 15* user_connection_info. 13 16* 4) change(87-05-07,GDixon), approve(87-07-14,MCR7679), 13 17* audit(87-07-14,Parisek), install(87-08-04,MR12.1-1056): 13 18* Correct login_timeout_check_required to correspond to new state field 13 19* values. 13 20* 5) change(87-05-18,GDixon), approve(87-07-14,MCR7679), 13 21* audit(87-07-14,Parisek), install(87-08-04,MR12.1-1056): 13 22* Add minimum_ring element. 13 23* END HISTORY COMMENTS */ 13 24 13 25 /* This include file defines the structure used internally by validate_user_ 13 26* to keep track of various things needed by its several entrypoints. 13 27* login_server_messages.incl.pl1 must be included also, to define user_connection_info. 13 28**/ 13 29 13 30 dcl ls_validate_info_ptr pointer; 13 31 13 32 dcl 1 ls_validate_info aligned based (ls_validate_info_ptr), 13 33 2 version char (8), /* "lsviNNNN" */ 13 34 2 sci_ptr pointer, 13 35 2 cp_info_ptr pointer, /* -> ls_cp_info */ 13 36 2 connection_desc_ptr pointer, /* -> ls_connection_desc */ 13 37 2 options_ptr pointer, /* -> ls_validate_options */ 13 38 2 process_info_ptr pointer, /* -> ls_process_info */ 13 39 2 process_request_ptr pointer, /* pointer to "process_request" structure if one has been allocated */ 13 40 2 server_handle bit (72), /* handle used to read responses */ 13 41 2 initializer_handle bit (72), /* handle used in requests to identify connection */ 13 42 2 reply_channel fixed bin (71), /* event channel over which Initializer responds to as_requests */ 13 43 2 banner_checked_time fixed bin(71), /* time when greeting banner last checked for changes */ 13 44 2 wakeup_loop, /* wakeup loop counter information */ 13 45 3 real_execute_line entry (ptr, ptr, fixed bin(21), fixed bin(35)), 13 46 /* real target of ssu_$execute_line */ 13 47 3 recent_wakeup_time fixed bin(71), /* time of last wakeup. */ 13 48 3 recent_wakeup_count fixed bin, /* number of wakeups received in the recent past. */ 13 49 2 state fixed bin, /* indicates what request or response expected next */ 13 50 2 last_request fixed bin, /* type of request user most recently entered */ 13 51 2 expected_response fixed bin, /* response expected from Initializer */ 13 52 2 n_disconnected_processes fixed bin, /* number of disconnected processes */ 13 53 2 process_number fixed bin, /* of relevant disconnected process */ 13 54 2 code fixed bin (35), /* used to indicate success or failure to top-level of subsystem */ 13 55 2 minimum_ring fixed bin, /* minimum ring in which connection works */ 13 56 2 user_connection_info like user_connection_info, /* defined in login_server_messages.incl.pl1 */ 13 57 2 person_id char (22), 13 58 2 project_id char (9), 13 59 2 dial_id char (22), 13 60 2 validation_failures fixed bin, /* number of times validation has been rejected */ 13 61 2 previous_login_info, /* for printing login message */ 13 62 3 time fixed bin (71), 13 63 3 terminal_type char (32), 13 64 3 terminal_id char (4), 13 65 2 flags, 13 66 3 connect_loop bit (1) unaligned, /* "1"b => in connect loop (as opposed to initial login sequence */ 13 67 3 brief bit (1) unaligned, /* "1"b => -brief specified on original request line */ 13 68 3 mask_needed bit (1) unaligned, /* "1"b => -no_printer_off */ 13 69 3 others_to_be_supplied bit (33) unaligned; 13 70 13 71 13 72 /* Possible values for ls_validate_info.state. When adding states, you 13 73* must also change login_time_check_required variable below. */ 13 74 13 75 dcl (DISCONNECTED initial (0), /* connection broken for various reasons. */ 13 76 13 77 JUST_CONNECTED initial (1), /* initial state, connection just made. */ 13 78 AWAITING_INITIAL_REQUEST initial (2), /* start of login sequence */ 13 79 AWAITING_LOGIN_ARGS initial (3), /* read login args when login typed. */ 13 80 AWAITING_PASSWORD initial (4), /* read for password outstanding */ 13 81 AWAITING_CONNECT_REQUEST initial (5), /* in connect loop */ 13 82 AWAITING_INITIALIZER_RESPONSE initial (6), /* sent request to initializer */ 13 83 USER_VALIDATED initial(7)) /* user connection has been validated. */ 13 84 fixed bin internal static options (constant); 13 85 13 86 dcl login_timeout_check_required (0:7) bit (1) aligned int static options(constant) initial( 13 87 /*** 0 1 2 3 4 5 6 7 */ 13 88 "0"b, "0"b, "1"b, "1"b, "1"b, "0"b, "0"b, "0"b); 13 89 13 90 /* END INCLUDE FILE...ls_validate_info.incl.pl1 */ 3493 3494 14 1 /* BEGIN INCLUDE FILE ... set_term_type_info.incl.pl1 */ 14 2 /* Created 7/18/77 by Robert Coren */ 14 3 /* Defines info structure for set_term_type order */ 14 4 14 5 dcl stti_version_1 fixed bin int static options (constant) init (1); 14 6 dcl sttip ptr; 14 7 14 8 dcl 1 set_term_type_info aligned based (sttip), 14 9 2 version fixed bin, 14 10 2 name char (32) unal, 14 11 2 flags unal, 14 12 3 send_initial_string bit (1), 14 13 3 set_modes bit (1), 14 14 3 ignore_line_type bit (1), 14 15 3 mbz bit (33); 14 16 14 17 /* END INCLUDE FILE ... set_term_type_info.incl.pl1 */ 3495 3496 15 1 /* BEGIN INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 15 2 /* Created: 15 February 1982 by G. Palter */ 15 3 15 4 /* Values for use in calls to ssu_$set_prompt_mode to control prompting by the subsystem listener */ 15 5 15 6 dcl PROMPT bit (1) static options (constant) initial ("0"b); 15 7 dcl DONT_PROMPT bit (1) static options (constant) initial ("1"b); 15 8 15 9 dcl PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("01"b); 15 10 dcl DONT_PROMPT_AFTER_NULL_LINES bit (2) static options (constant) initial ("00"b); 15 11 15 12 dcl PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("000"b); 15 13 dcl DONT_PROMPT_IF_TYPEAHEAD bit (3) static options (constant) initial ("001"b); 15 14 15 15 /* For example: 15 16* call ssu_$set_prompt_mode (sci_ptr, PROMPT | DONT_PROMPT_AFTER_NULL_LINES | DONT_PROMPT_IF_TYPEAHEAD); */ 15 17 15 18 /* END INCLUDE FILE ... ssu_prompt_modes.incl.pl1 */ 3497 3498 16 1 /* BEGIN INCLUDE FILE ... ssu_rp_options.incl.pl1 */ 16 2 /* Created: June 1982 by G. Palter */ 16 3 16 4 /* Options for the standard subsystem request processor */ 16 5 16 6 dcl 1 rp_options aligned based (rp_options_ptr), 16 7 2 version character (8), 16 8 2 language_info, /* defines the request language */ 16 9 3 non_standard_language bit (1) aligned, /* ... ON => use language defined in following array */ 16 10 3 character_types (0 : 511) fixed binary (9) unaligned unsigned, 16 11 2 abbrev_info, /* information related to abbreviation processing ... */ 16 12 3 expand_request_lines bit (1) aligned, /* ... ON => request processor should expand abbreviations */ 16 13 3 default_profile_ptr pointer, /* ... -> profile to use if ".u" given without pathname */ 16 14 3 profile_ptr pointer; /* ... -> abbreviation profile used by this subsystem */ 16 15 16 16 dcl rp_options_ptr pointer; 16 17 16 18 dcl RP_OPTIONS_VERSION_1 character (8) static options (constant) initial ("rpo_0001"); 16 19 16 20 /* END INCLUDE FILE ... ssu_rp_options.incl.pl1 */ 3499 3500 17 1 /* BEGIN INCLUDE FiLE ... terminal_info.incl.pl1 */ 17 2 17 3 /* Created 5/25/77 by J. Stern */ 17 4 17 5 17 6 dcl 1 terminal_info aligned based (terminal_info_ptr), /* info structure for terminal_info order */ 17 7 2 version fixed bin, /* version number of this sturcture */ 17 8 2 id char (4) unaligned, /* terminal id from answerback */ 17 9 2 term_type char (32) unaligned, /* terminal type name */ 17 10 2 line_type fixed bin, /* line type number */ 17 11 2 baud_rate fixed bin, 17 12 2 reserved (4) fixed bin; /* reserved for future use */ 17 13 17 14 17 15 dcl terminal_info_ptr ptr; 17 16 dcl terminal_info_version fixed bin int static options (constant) init (1); /* current version */ 17 17 17 18 17 19 /* END INCLUDE FILE ... terminal_info.incl.pl1 */ 3501 3502 18 1 /* BEGIN INCLUDE FILE timer_manager_constants.incl.pl1 */ 18 2 18 3 /****^ HISTORY COMMENTS: 18 4* 1) change(85-03-05,Sibert), approve(87-05-25,MCR7678), 18 5* audit(87-04-02,GDixon), install(87-08-04,MR12.1-1056): 18 6* Initially written. 18 7* END HISTORY COMMENTS */ 18 8 18 9 /* Values for the flags arguments in timer_manager_ calls */ 18 10 18 11 dcl ABSOLUTE_MICROSECONDS bit (2) int static options (constant) init ("00"b); 18 12 dcl ABSOLUTE_SECONDS bit (2) int static options (constant) init ("01"b); 18 13 dcl RELATIVE_MICROSECONDS bit (2) int static options (constant) init ("10"b); 18 14 dcl RELATIVE_SECONDS bit (2) int static options (constant) init ("11"b); 18 15 18 16 /* END INCLUDE FILE timer_manager_constants.incl.pl1 */ 3503 3504 19 1 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 19 2 19 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 19 4 /* */ 19 5 /* This include file declares the header shared by the answer_table, */ 19 6 /* absentee_user_table and daemon_user_table include files. */ 19 7 /* */ 19 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 19 9 19 10 /****^ HISTORY COMMENTS: 19 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 19 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 19 13* Initial coding. 19 14* END HISTORY COMMENTS */ 19 15 19 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 19 17 2 header_version fixed bin, /* version of the header (3) */ 19 18 2 entry_version fixed bin, /* version of user table entries */ 19 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 19 20 2 header_length fixed bin, /* length of the header */ 19 21 2 max_size fixed bin, /* max number of entries in this table */ 19 22 2 current_size fixed bin, /* actual size of table (in entries) */ 19 23 2 number_free fixed bin, /* number of free entries in the table. */ 19 24 2 first_free fixed bin, /* index of first entry in the free list. */ 19 25 2 as_procid bit (36), /* process ID of user table manager process */ 19 26 2 ut_header_pad fixed bin; 19 27 19 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 3505 3506 3507 end ls_validate_user_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1222.3 ls_validate_user_.pl1 >special_ldd>install>MR12.1-1054>ls_validate_user_.pl1 3469 1 08/04/87 1210.2 answer_table.incl.pl1 >spec>install>1056>answer_table.incl.pl1 3471 2 03/08/85 0852.7 as_user_message_info.incl.pl1 >ldd>include>as_user_message_info.incl.pl1 3473 3 09/09/82 1418.0 cp_character_types.incl.pl1 >ldd>include>cp_character_types.incl.pl1 3475 4 08/04/87 1140.2 dsa_log_constants.incl.pl1 >spec>install>1056>dsa_log_constants.incl.pl1 3477 5 08/04/87 1140.0 installation_parms.incl.pl1 >spec>install>1056>installation_parms.incl.pl1 5-148 6 11/21/79 1458.3 rcp_init_flags.incl.pl1 >ldd>include>rcp_init_flags.incl.pl1 3481 7 08/04/87 1139.9 login_server_messages.incl.pl1 >spec>install>1056>login_server_messages.incl.pl1 3483 8 08/04/87 1139.9 login_service_entries.incl.pl1 >spec>install>1056>login_service_entries.incl.pl1 3485 9 08/04/87 1139.9 ls_connection_desc.incl.pl1 >spec>install>1056>ls_connection_desc.incl.pl1 3487 10 08/04/87 1139.9 ls_cp_info.incl.pl1 >spec>install>1056>ls_cp_info.incl.pl1 3489 11 08/04/87 1139.9 ls_process_info.incl.pl1 >spec>install>1056>ls_process_info.incl.pl1 3491 12 08/04/87 1139.6 ls_usage_types.incl.pl1 >spec>install>1056>ls_usage_types.incl.pl1 3493 13 08/04/87 1139.5 ls_validate_info.incl.pl1 >spec>install>1056>ls_validate_info.incl.pl1 3495 14 09/01/77 1359.3 set_term_type_info.incl.pl1 >ldd>include>set_term_type_info.incl.pl1 3497 15 04/13/82 1620.2 ssu_prompt_modes.incl.pl1 >ldd>include>ssu_prompt_modes.incl.pl1 3499 16 09/28/82 1437.6 ssu_rp_options.incl.pl1 >ldd>include>ssu_rp_options.incl.pl1 3501 17 06/29/77 1624.0 terminal_info.incl.pl1 >ldd>include>terminal_info.incl.pl1 3503 18 08/04/87 1138.9 timer_manager_constants.incl.pl1 >spec>install>1056>timer_manager_constants.incl.pl1 3505 19 08/04/87 1138.0 user_table_header.incl.pl1 >spec>install>1056>user_table_header.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. AS_USER_MESSAGE_INFO_VERSION_1 000066 constant char(8) initial dcl 2-33 ref 3296 AWAITING_CONNECT_REQUEST 000324 constant fixed bin(17,0) initial dcl 13-75 set ref 1864* AWAITING_INITIALIZER_RESPONSE 000313 constant fixed bin(17,0) initial dcl 13-75 set ref 3267* AWAITING_INITIAL_REQUEST 000327 constant fixed bin(17,0) initial dcl 13-75 set ref 617* 740 1374* 1658 1660 1714* 1939* 2437* AWAITING_LOGIN_ARGS 000322 constant fixed bin(17,0) initial dcl 13-75 set ref 1931* AWAITING_PASSWORD 000331 constant fixed bin(17,0) initial dcl 13-75 set ref 3197* BS constant char(1) initial unaligned dcl 401 ref 2880 CONNECT_REQ constant fixed bin(17,0) initial dcl 7-457 set ref 1523* 2718 CONSTANT_MASK 000130 constant char(72) initial unaligned dcl 402 set ref 2880* CREATE_REQ constant fixed bin(17,0) initial dcl 7-457 set ref 1335 1354 1539* 1730 2738 DESTROY_REQ constant fixed bin(17,0) initial dcl 7-457 set ref 1556* 1916 2732 2758 2762 2766 DISCONNECTED 000070 constant fixed bin(17,0) initial dcl 13-75 set ref 486* DONT_FORCE_MESSAGE constant bit(1) initial unaligned dcl 405 set ref 615* 2436* DONT_PROMPT constant bit(1) initial unaligned dcl 15-7 ref 583 DONT_PROMPT_AFTER_NULL_LINES constant bit(2) initial unaligned dcl 15-10 ref 583 DONT_PROMPT_IF_TYPEAHEAD constant bit(3) initial unaligned dcl 15-13 ref 583 DONT_TAKE_DUMP 000307 constant bit(1) initial dcl 406 set ref 1392* 3369* DONT_TELL_INITIALIZER 000307 constant bit(1) initial dcl 407 set ref 496* 599* 651* 692* 969* 1819* 2343* 2390* 2945* 3107* 3116* 3153* 3165* 3279* 3319* DONT_TELL_USER 000307 constant bit(1) initial dcl 408 set ref 637* DOT constant char(1) initial unaligned dcl 409 ref 2479 2484 2485 2497 2500 2501 2553 2555 2556 ENTERP_REQ constant fixed bin(17,0) initial dcl 7-457 ref 1037 1252 1317 ENTER_REQ constant fixed bin(17,0) initial dcl 7-457 ref 1029 1157 1253 1317 FALSE constant bit(1) initial unaligned dcl 410 ref 2238 FORCE_MESSAGE constant bit(1) initial unaligned dcl 411 set ref 746* 1070* HELP_GI_REQUEST 000123 constant char(17) initial unaligned dcl 412 set ref 1090 1090 1090 1090 HYPHEN constant char(1) initial unaligned dcl 413 ref 1585 2090 2475 2569 2583 2833 2862 INFO_LOG_SEVERITY 000070 constant fixed bin(17,0) initial dcl 4-39 set ref 630* 2152* JUST_CONNECTED 000323 constant fixed bin(17,0) initial dcl 13-75 set ref 470* LARGE_NUMBER 000122 constant fixed bin(17,0) initial dcl 414 set ref 511* LIST_REQ constant fixed bin(17,0) initial dcl 7-457 ref 1315 2744 LOGIN_REQ constant fixed bin(17,0) initial dcl 7-457 ref 1117 1335 1338 1354 1486 2780 2795 LOGIN_SERVER_OPERATOR_REQUEST_VERSION_1 000046 constant char(8) initial unaligned dcl 7-222 set ref 2318* LS_CALLER_TYPE 000230 constant fixed bin(17,0) initial dcl 4-34 set ref 630* 2152* LS_DIALOGUE_NAME 000116 constant char(14) initial unaligned dcl 416 set ref 489* LS_DIALOGUE_VERSION 000115 constant char(4) initial unaligned dcl 417 set ref 489* LS_DIAL_REQUEST 000331 constant fixed bin(17,0) initial dcl 7-31 set ref 947* LS_DIAL_REQUEST_VERSION_1 000054 constant char(8) initial unaligned dcl 7-180 set ref 947* LS_DIAL_RESPONSE 000042 constant fixed bin(17,0) initial dcl 7-228 set ref 947* 1708 LS_DIAL_USAGE constant fixed bin(17,0) initial dcl 12-14 ref 987 LS_DISCONNECT_REQUEST 000324 constant fixed bin(17,0) initial dcl 7-31 set ref 2163* LS_DISCONNECT_REQUEST_VERSION_1 000052 constant char(8) initial unaligned dcl 7-193 set ref 2163* LS_LIST_REQUEST 000322 constant fixed bin(17,0) initial dcl 7-31 set ref 2215* LS_LIST_REQUEST_VERSION_1 000056 constant char(8) initial unaligned dcl 7-160 set ref 2215* LS_LIST_RESPONSE 000043 constant fixed bin(17,0) initial dcl 7-228 set ref 1706 2215* LS_LOGIN_USAGE constant fixed bin(17,0) initial dcl 12-14 ref 3006 LS_LOGOUT_REQUEST 000313 constant fixed bin(17,0) initial dcl 7-31 set ref 1609* LS_LOGOUT_REQUEST_VERSION_1 000050 constant char(8) initial unaligned dcl 7-203 set ref 1609* LS_MC_USAGE constant fixed bin(17,0) initial dcl 12-14 ref 2359 LS_OPERATOR_REQUEST 000230 constant fixed bin(17,0) initial dcl 7-31 set ref 2318* LS_OPERATOR_RESPONSE 000157 constant fixed bin(17,0) initial dcl 7-228 set ref 1710 2318* LS_PROCESS_INFO_V1 000014 constant char(8) initial unaligned dcl 11-37 ref 453 LS_PROCESS_REQUEST 000327 constant fixed bin(17,0) initial dcl 7-31 set ref 1321* 1361* 1690 1768* LS_PROCESS_REQUEST_VERSION_1 000060 constant char(8) initial unaligned dcl 7-150 set ref 1321* 1361* 1768* LS_PROCESS_RESPONSE 000044 constant fixed bin(17,0) initial dcl 7-228 set ref 1321* 1361* 1704 1768* LS_REQUEST_HEADER_VERSION_1 000064 constant char(8) initial unaligned dcl 7-63 ref 3261 LS_RESPONSE_TYPES 000016 constant char(10) initial array unaligned dcl 7-238 set ref 3324 3324 3327* 3327* LS_TERMINATION_RESPONSE constant fixed bin(17,0) initial dcl 7-228 ref 3315 LS_UNKNOWN_RESPONSE constant fixed bin(17,0) initial dcl 7-228 ref 3326 LS_VALIDATE_REQUEST 000323 constant fixed bin(17,0) initial dcl 7-31 set ref 876* 1261* LS_VALIDATE_REQUEST_VERSION_1 000062 constant char(8) initial unaligned dcl 7-97 set ref 876* 1261* LS_VALIDATE_RESPONSE 000045 constant fixed bin(17,0) initial dcl 7-228 set ref 876* 1261* 1702 NETWORK_CONNECTION_LOGIN constant fixed bin(17,0) initial dcl 7-471 ref 871 1249 NEW_PROC_REQ constant fixed bin(17,0) initial dcl 7-457 set ref 1631* 1916 2725 2758 NL constant char(1) initial unaligned dcl 418 ref 3226 NORMAL_CHARACTER constant fixed bin(9,0) initial unsigned dcl 3-6 ref 532 ONE_MILLION 000244 constant fixed bin(35,0) initial dcl 420 ref 2977 OUR_NAME 000110 constant char(17) initial unaligned dcl 421 set ref 494* 630* 637* 648* 827* 905* 1092* 1392* 1846* 1856* 2152* 2417* 2427* 3276* 3287* 3304* 3327* 3344* 3369* RANDOM_ALPHABET 000076 constant char(40) initial dcl 422 ref 2880 RELATIVE_MICROSECONDS 000302 constant bit(2) initial unaligned dcl 18-13 set ref 757* RELATIVE_SECONDS 000001 constant bit(2) initial unaligned dcl 18-14 set ref 701* RP_OPTIONS_VERSION_1 000002 constant char(8) initial unaligned dcl 16-18 set ref 525* SECONDS_PER_MINUTE 000000 constant fixed dec(2,0) initial dcl 2448 ref 2451 SP constant char(1) initial unaligned dcl 424 ref 2250 2251 SPACE_SEMICOLON constant char(2) initial unaligned dcl 426 ref 2029 SPSP constant char(2) initial unaligned dcl 425 ref 2249 2252 SYSTEM_DIAL_ID 000074 constant char(6) initial unaligned dcl 427 ref 897 922 SYSTEM_LOW 000072 constant bit(72) initial unaligned dcl 428 ref 2245 2261 TAKE_DUMP 000302 constant bit(1) initial dcl 429 set ref 494* 637* 648* 827* 905* 1092* 1846* 1856* 2417* 2427* 3276* TELL_INITIALIZER 000302 constant bit(1) initial dcl 430 set ref 1849* 2420* TELL_USER 000302 constant bit(1) initial dcl 431 set ref 494* 648* 827* 905* 1092* 1392* 1846* 1856* 2417* 2427* 3276* 3304* 3369* THREE_MINUTES 000070 constant fixed bin(71,0) initial dcl 432 set ref 757* TRUE constant bit(1) initial unaligned dcl 433 ref 2243 2245 TRY_AGAIN parameter label variable dcl 1925 ref 1922 1936 1944 USER_VALIDATED 000230 constant fixed bin(17,0) initial dcl 13-75 set ref 628* a_arg_list_ptr parameter pointer dcl 123 ref 1476 1483 a_code parameter fixed bin(35,0) dcl 3242 in procedure "Send_request_to_initializer" set ref 3230 3335* 3340* 3341 a_code parameter fixed bin(35,0) dcl 2293 in procedure "Login_operator" set ref 2283 2326* 2347* 2368* a_code parameter fixed bin(35,0) dcl 124 in procedure "ls_validate_user_" set ref 101 455* 497* 634* 639* 652* 785 794* a_cond_name parameter char unaligned dcl 125 ref 682 728 a_continue_sw parameter bit(1) dcl 126 set ref 1476 1490* 1494* a_data_ptr parameter pointer dcl 127 ref 682 684 728 731 a_info_ptr parameter pointer dcl 128 ref 812 818 835 845 1008 1018 1024 1033 1040 1048 1054 1062 1068 1073 1082 1103 1112 1377 1383 1414 1422 1428 1445 1451 1476 1480 1510 1516 1527 1533 1543 1549 1560 1566 1572 1576 1618 1624 a_ls_cp_info_ptr parameter pointer dcl 129 ref 101 444 a_ls_validate_options_ptr parameter pointer dcl 130 ref 101 445 a_mc_ptr parameter pointer dcl 131 ref 682 728 a_mode_string parameter char unaligned dcl 3356 ref 3353 3362 a_person parameter char(22) unaligned dcl 2290 ref 2283 2306 a_process_info_ptr parameter pointer dcl 132 ref 101 446 a_project parameter char(9) unaligned dcl 2291 ref 2283 2307 a_request_line_len parameter fixed bin(21,0) dcl 789 set ref 785 794* a_request_line_ptr parameter pointer dcl 788 set ref 785 794* a_request_name parameter char unaligned dcl 133 ref 1476 1484 a_request_size parameter fixed bin(17,0) dcl 3238 ref 3230 3257 a_request_type parameter fixed bin(17,0) dcl 3236 ref 3230 3259 a_request_version parameter char(8) unaligned dcl 3237 ref 3230 3260 a_sci_ptr parameter pointer dcl 134 set ref 785 791 794* 812 817 835 844 1008 1018 1024 1033 1038 1048 1053 1062 1067 1073 1081 1103 1111 1377 1382 1414 1417 1422 1427 1445 1450 1476 1479 1510 1515 1527 1532 1543 1548 1560 1565 1572 1575 1618 1623 a_terminal_id parameter char unaligned dcl 3379 set ref 3376 3383 3383 3386 a_type parameter char unaligned dcl 3394 ref 3391 3400 a_virtual_channel parameter char(32) unaligned dcl 2292 ref 2283 2308 a_wc_ptr parameter pointer dcl 135 ref 682 728 access_class_range 46 based bit(72) array level 2 in structure "ls_connection_desc" dcl 9-19 in procedure "ls_validate_user_" set ref 468 825* access_class_range 54 001054 automatic bit(72) array level 3 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 468* accounting_info 30 based structure level 3 dcl 7-303 accounting_message 57 based char level 3 dcl 7-303 set ref 3041* accounting_message_length 56 based fixed bin(17,0) level 3 dcl 7-303 ref 1704 2907 2936 2956 2990 3041 3041 3041 3056 accounting_message_struc 56 based structure level 2 dcl 7-303 addr builtin function dcl 439 ref 469 489 489 489 489 511 511 525 525 535 535 859 930 1090 1090 1155 1606 1842 1842 1843 1843 1932 1932 1940 1940 2158 2201 2301 2413 2413 2414 2414 3149 3149 3164 3164 3211 3211 3269 3294 3383 3383 3410 3410 3451 after builtin function dcl 439 ref 2485 2500 2556 already_logged_in 33(07) based bit(1) level 4 packed unaligned dcl 7-303 ref 2927 already_logged_in_info 35 based structure level 3 dcl 7-303 anon_no_password 62(03) based bit(1) level 3 packed unaligned dcl 7-76 set ref 1253* anonymous 33(06) based bit(1) level 4 in structure "login_server_process_response" packed unaligned dcl 7-303 in procedure "ls_validate_user_" set ref 3044* anonymous 62(02) based bit(1) level 3 in structure "login_server_validate_request" packed unaligned dcl 7-76 in procedure "ls_validate_user_" set ref 1252* anonymous 000100 automatic bit(1) dcl 140 in procedure "ls_validate_user_" set ref 1043* 1116* 1485* 2666 ansp 001776 automatic pointer initial dcl 1-53 set ref 1042* 1114* 1120 1120 1482* 1488 1-53* 3446* 3448 3450 3451 3457 3457 3457 anstbl based structure level 1 dcl 1-55 answer 000101 automatic char(3) unaligned dcl 141 set ref 900* 911 answer_table_ptr 12 based pointer level 2 dcl 10-24 ref 742 1042 1114 1482 3446 answerback 002552 automatic char(64) unaligned dcl 3141 set ref 3164 3164 3164 3164 3171 3171 arg based char unaligned dcl 225 set ref 1402* 1440* 1463* 1585 1585* 1588 1588 1591 1591 1594 1594 1597 1597 1600* 1972 2090 2090 2090 2094 2094 2097 2097 2100* 2103 2105* 2106* 2470 2475 2479 2480 2484 2485 2493 2505 2505 2514 2514 2517 2517 2520* 2553 2555 2556 2561 2569 2571 2583 2583* 2586 2586 2592 2592 2598 2598 2604 2604 2604 2607 2607 2610 2610 2613 2613 2616 2616 2619 2625 2625 2631 2637 2637 2640 2640 2646 2646 2649 2649 2652 2652 2655 2655 2658 2658 2669 2669 2678 2678 2681 2681 2684 2684 2687 2687 2690 2690 2696 2696 2702 2702 2705 2708 2714 2721 2728 2735 2741 2747 2747 2750 2750 2750 2753* 2824* 2829 2833 2836 2840 2843* 2844* 2862 arg_length 304 based fixed bin(21,0) array level 4 dcl 7-103 set ref 1971* arg_list_ptr 000102 automatic pointer dcl 142 set ref 847* 1044* 1115* 1133 1133* 1136* 1483* 1968* 2125* 2460* 2469* 2473* 2552* 2568* 2582* 2832* 2861* arg_string based char level 3 dcl 7-103 set ref 1972* arg_string_length 302 based fixed bin(21,0) level 3 dcl 7-103 set ref 475 1307* 1321 1321 1361 1361 1696 1753* 1768 1768 1960* 1972 2399 2937 3057 argl 000104 automatic fixed bin(21,0) dcl 143 set ref 1401* 1402 1402 1439* 1440 1440 1462* 1463 1463 1583* 1585 1585 1585 1588 1588 1591 1591 1594 1594 1597 1597 1600 1600 1968* 1971 1972 1972 1974 2088* 2090 2090 2090 2094 2094 2097 2097 2100 2100 2103 2105 2105 2106 2106 2125* 2126 2469* 2470 2473* 2475 2479 2480 2484 2485 2493 2505 2505 2514 2514 2517 2517 2520 2520 2552* 2553 2555 2556 2561 2568* 2569 2571 2582* 2583 2583 2583 2586 2586 2592 2592 2598 2598 2604 2604 2604 2607 2607 2610 2610 2613 2613 2616 2616 2619 2625 2625 2631 2637 2637 2640 2640 2646 2646 2649 2649 2652 2652 2655 2655 2658 2658 2669 2669 2678 2678 2681 2681 2684 2684 2687 2687 2690 2690 2696 2696 2702 2702 2705 2708 2714 2721 2728 2735 2741 2747 2747 2750 2750 2750 2753 2753 2824 2824 2829 2832* 2833 2836 2840 2843 2843 2844 2844 2861* 2862 argp 000106 automatic pointer dcl 144 set ref 1401* 1402 1439* 1440 1462* 1463 1583* 1585 1585 1588 1588 1591 1591 1594 1594 1597 1597 1600 1968* 1972 2088* 2090 2090 2090 2094 2094 2097 2097 2100 2103 2105 2106 2125* 2469* 2470 2473* 2475 2479 2480 2484 2485 2493 2505 2505 2514 2514 2517 2517 2520 2552* 2553 2555 2556 2561 2568* 2569 2571 2582* 2583 2583 2586 2586 2592 2592 2598 2598 2604 2604 2604 2607 2607 2610 2610 2613 2613 2616 2616 2619 2625 2625 2631 2637 2637 2640 2640 2646 2646 2649 2649 2652 2652 2655 2655 2658 2658 2669 2669 2678 2678 2681 2681 2684 2684 2687 2687 2690 2690 2696 2696 2702 2702 2705 2708 2714 2721 2728 2735 2741 2747 2747 2750 2750 2750 2753 2824 2829 2832* 2833 2836 2840 2843 2844 2861* 2862 args 303 based structure array level 3 dcl 7-103 as_error_table_$no_connect_aclass 000176 external static fixed bin(35,0) dcl 295 ref 2923 as_error_table_$no_such_process_msg 000200 external static fixed bin(35,0) dcl 295 ref 2920 as_user_message_info based structure level 1 dcl 2-8 as_user_message_info_ptr 002000 automatic pointer dcl 2-7 set ref 3294* 3296 3297 3298 3300* 3311 3323 auth_case 000100 automatic fixed bin(17,0) dcl 2191 set ref 2260* 2261* 2263* 2263 2265* auth_col 000101 automatic fixed bin(17,0) dcl 2192 set ref 2252* 2254* 2256* 2265* auth_given 62(01) based bit(1) level 3 packed unaligned dcl 7-76 set ref 873* 1251* auth_range_string 000110 automatic char(512) unaligned dcl 145 set ref 825* 831* auth_specified 001265 automatic bit(1) dcl 183 set ref 873 1251 1759* 2467* 2507* 2524 2541* 2671* 2769 2780 auth_string 002261 automatic char(256) unaligned dcl 2539 in procedure "Parse_dial_args" set ref 2508* 2509* 2510* 2524* 2672* 2673* 2674* auth_string 002425 automatic char(256) unaligned dcl 2902 in procedure "Process_process_response" set ref 3016* 3017 3017* auth_sw 000106 automatic bit(1) unaligned dcl 2193 set ref 2238* 2243* 2245* 2252 2256* authorization 16 based bit(72) level 2 in structure "login_server_dial_response" dcl 7-366 in procedure "ls_validate_user_" ref 981 authorization 10 based bit(72) level 3 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" set ref 3007 3016* authorization 10 based bit(72) array level 3 in structure "login_server_list_response" dcl 7-347 in procedure "ls_validate_user_" set ref 2245 2261 2265* authorization 42 based bit(72) level 2 in structure "login_server_validate_request" dcl 7-76 in procedure "ls_validate_user_" set ref 868* 1246* authorization 001266 automatic bit(72) dcl 184 in procedure "ls_validate_user_" set ref 868 1246 2509* 2673* authorization 6 based bit(72) level 2 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" ref 1278 authorization 14 based bit(72) level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" set ref 981* 1278* 2356* 3007* auto_as_user_message_info 000376 automatic structure level 1 dcl 169 set ref 3294 auto_dial_request 000440 automatic structure level 1 dcl 170 set ref 930 auto_hangup_request 000534 automatic structure level 1 dcl 171 set ref 2158 2163 2163 auto_list_request 000116 automatic structure level 1 dcl 2199 set ref 2201 auto_logout_request 000600 automatic structure level 1 dcl 172 set ref 1606 1609 1609 auto_ls_reply_message 000106 automatic structure level 1 dcl 3250 set ref 3269 auto_operator_request 000100 automatic structure level 1 dcl 2295 set ref 2301 auto_rp_options 000642 automatic structure level 1 dcl 173 set ref 525 525 535 535 auto_set_term_info 003076 automatic structure level 1 dcl 3398 set ref 3410 3410 auto_terminal_info 002574 automatic structure level 1 dcl 3146 set ref 3149 3149 auto_validate_info 001054 automatic structure level 1 dcl 174 set ref 459* 469 489 489 auto_validate_request 001202 automatic structure level 1 dcl 175 set ref 859 1155 banner_checked_time 24 based fixed bin(71,0) level 2 dcl 13-32 set ref 742 756* 3461* before builtin function dcl 439 ref 2484 2501 2555 3226 bit builtin function dcl 439 ref 594 brief 33(09) based bit(1) level 4 in structure "login_server_process_response" packed unaligned dcl 7-303 in procedure "ls_validate_user_" ref 2969 brief 125(01) 001054 automatic bit(1) level 3 in structure "auto_validate_info" packed unaligned dcl 174 in procedure "ls_validate_user_" set ref 465* brief 125(01) based bit(1) level 3 in structure "ls_validate_info" packed unaligned dcl 13-32 in procedure "ls_validate_user_" set ref 1152* 2939 2969* 3038 3444 brief 67(04) based bit(1) level 4 in structure "login_server_process_request" packed unaligned dcl 7-103 in procedure "ls_validate_user_" set ref 1906* brief 001270 automatic bit(1) dcl 185 in procedure "ls_validate_user_" set ref 1152 1579* 1594* 1597* 1615* 1759* 1906 2541* 2595* 2601* brief 2 based bit(1) level 3 in structure "ls_validate_options" packed unaligned dcl 11-44 in procedure "ls_validate_user_" ref 465 brief_flag parameter bit(1) dcl 2380 ref 2373 2383 brief_given 66(04) based bit(1) level 4 packed unaligned dcl 7-103 set ref 1899* brief_specified 001271 automatic bit(1) dcl 186 set ref 1759* 1899 2541* 2594* 2600* cda 001272 automatic bit(1) dcl 187 set ref 1255 2541* 2684* 2769 cdp 001273 automatic bit(1) dcl 188 set ref 1256 2541* 2687* 2773 change_default_auth 62(05) based bit(1) level 3 packed unaligned dcl 7-76 set ref 1255* change_default_proj 62(06) based bit(1) level 3 packed unaligned dcl 7-76 set ref 1256* change_password 62(04) based bit(1) level 3 in structure "login_server_validate_request" packed unaligned dcl 7-76 in procedure "ls_validate_user_" set ref 1254* change_password 001274 automatic bit(1) dcl 189 in procedure "ls_validate_user_" set ref 1196 1254 2541* 2678* character_types 3 000642 automatic fixed bin(9,0) array level 3 packed unsigned unaligned dcl 173 set ref 532* 532* 532* 532* 532* check_password_ 000012 constant entry external dcl 231 ref 2046 chn_col 000102 automatic fixed bin(17,0) dcl 2192 set ref 2249* 2250 2256* 2265* chn_len 000110 automatic fixed bin(17,0) dcl 2195 set ref 2235* 2240* 2240 2250 chn_wakeup_error_loop_count 1710(18) based fixed bin(17,0) level 3 packed unaligned dcl 5-33 ref 1811 chn_wakeup_error_loop_seconds 1711 based fixed bin(17,0) level 3 packed unaligned dcl 5-33 ref 1803 cleanup 001762 stack reference condition dcl 442 ref 473 852 1131 1520 1537 1553 1628 2209 2312 clock builtin function dcl 439 ref 562 594 756 996 996 1802 2383 2383 2880 2981 2981 3044 3044 3457 3457 3461 code parameter fixed bin(35,0) dcl 2018 in procedure "Get_password" set ref 2012 2025* 2033* 2046* 2047 2051* code 42 based fixed bin(35,0) level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 600* 622* 962* 964* 969* 976* 1058* 2179* 2332* 2333 2336* 2347 2353* 2391* 2944* 3060* 3092* 3093* code parameter fixed bin(35,0) dcl 2176 in procedure "Hangup_with_error" ref 2171 2179 code 42 001054 automatic fixed bin(35,0) level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 630* 634 code 003056 automatic fixed bin(35,0) dcl 3381 in procedure "Set_term_id" set ref 3383* 3384 3384* code 000310 automatic fixed bin(35,0) dcl 146 in procedure "ls_validate_user_" set ref 479* 489* 492 494* 497 503* 505 511* 513 525* 526 535* 536 548* 549 564* 565 570* 571 586* 588 626* 634 637* 639 642* 648* 652 825* 827 827 827* 861* 863 876* 881* 900* 903 905* 924* 925 947* 950 952* 1090* 1092 1092 1092 1092 1092* 1159* 1160 1179* 1189 1200* 1202 1220* 1222 1261* 1264* 1288* 1290 1321* 1324* 1361* 1364* 1391* 1392 1392* 1609* 1613 1613* 1768* 1771* 1843* 1844 1846* 1849* 1855* 1856 1856* 1932* 1933 1935* 1940* 1941 1943* 2105* 2106 2149* 2152* 2318* 2321 2323* 2326 2414* 2415 2417* 2420* 2426* 2427 2427* 2509* 2510 2510* 2673* 2674 2674* 2843* 2844 3016* 3149* 3150 3161* 3162 3164* 3165 3165* 3171* 3173 3182* 3410* 3411 3411* code 000107 automatic fixed bin(35,0) dcl 2194 in procedure "List_request" set ref 2215* 2219 2219* code 002056 automatic fixed bin(35,0) dcl 1797 in procedure "Count_wakeups" set ref 1817* code parameter fixed bin(35,0) dcl 1986 in procedure "Get_initial_password" set ref 1981 1993* 1995 1998* 2007* code 003046 automatic fixed bin(35,0) dcl 3360 in procedure "Set_modes" set ref 3364* 3366 3366 3366* 3369* code 000103 automatic fixed bin(35,0) dcl 3247 in procedure "Send_request_to_initializer" set ref 3270* 3274 3276* 3279* 3300* 3302 3304* 3304 3308* code 002626 automatic fixed bin(35,0) dcl 3193 in procedure "Read_password" set ref 3202* 3203 3211* 3212 3212 3212* 3217 code based fixed bin(35,0) level 2 in structure "ls_reply_message" dcl 7-445 in procedure "ls_validate_user_" set ref 3282* command_type parameter fixed bin(17,0) dcl 1876 in procedure "Fill_in_process_request" ref 1869 1886 1916 1916 command_type 54 based fixed bin(17,0) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1743* 1886* command_type 001275 automatic fixed bin(17,0) dcl 190 in procedure "ls_validate_user_" set ref 1029* 1037* 1117* 1157 1252 1253 1313* 1315 1317 1317 1335 1335 1338 1354 1354 1486* 2718* 2725* 2732* 2738* 2744* 2758 2758 2762 2766 2780 2795 command_type parameter fixed bin(17,0) dcl 1724 in procedure "Connect_loop_process_request" set ref 1718 1730 1743 1764* connect_info_dir 71 based char(168) level 2 packed unaligned dcl 10-24 set ref 1855* 2425* connect_loop 125 based bit(1) level 3 packed unaligned dcl 13-32 set ref 1840 1861* 2411 2432* connected 33(03) based bit(1) level 4 packed unaligned dcl 7-303 ref 3020 connection_desc_ptr 6 001054 automatic pointer level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 463* connection_desc_ptr 6 based pointer level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" ref 824 869 900 933 1247 1889 2146 2304 3457 connection_desc_ptr 2 based pointer level 2 in structure "ls_cp_info" dcl 10-24 in procedure "ls_validate_user_" ref 451 463 connection_handle 43 based fixed bin(35,0) level 2 dcl 9-19 set ref 2149* connection_info 12 based structure level 3 in structure "login_server_operator_request" dcl 7-214 in procedure "ls_validate_user_" set ref 2309* connection_info 12 based structure level 3 in structure "login_server_disconnect_request" dcl 7-188 in procedure "ls_validate_user_" set ref 2161* connection_info 12 based structure level 3 in structure "login_server_logout_request" dcl 7-199 in procedure "ls_validate_user_" set ref 1608* connection_info 12 based structure level 3 in structure "login_server_validate_request" dcl 7-76 in procedure "ls_validate_user_" set ref 874* 1244* connection_info 12 based structure level 3 in structure "login_server_dial_request" dcl 7-170 in procedure "ls_validate_user_" set ref 942* connection_info 12 based structure level 4 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1745* 1884* connection_info 14 based structure array level 3 in structure "login_server_list_response" dcl 7-347 in procedure "ls_validate_user_" connection_info 12 based structure level 3 in structure "login_server_list_request" dcl 7-156 in procedure "ls_validate_user_" set ref 2203* connection_name 44 based char(32) level 3 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 2333* 2365* connection_name 14 based char(32) array level 4 in structure "login_server_list_response" dcl 7-347 in procedure "ls_validate_user_" set ref 2240 2265* connection_name 44 001054 automatic char(32) level 3 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 467* convert_authorization_$from_string 000014 constant entry external dcl 232 ref 2509 2673 convert_authorization_$to_string 000016 constant entry external dcl 233 ref 3016 convert_authorization_$to_string_range 000020 constant entry external dcl 234 ref 825 copy builtin function dcl 439 ref 2880 cost 32 based float bin(27) level 4 dcl 7-303 set ref 2981* 2987* cp_info_ptr 4 001054 automatic pointer level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 460* cp_info_ptr 4 based pointer level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 688 742 827* 905* 1041 1092* 1113 1392* 1481 1517 1534 1550 1567 1577 1625 1800 1846* 1856* 2152 2417* 2427* 3276* 3287* 3304* 3327* 3344* 3369* 3446 cpu_minutes 002422 automatic fixed bin(17,0) dcl 2899 set ref 2978* 2979 2981 2981* 2987 2987* cpu_seconds 002421 automatic fixed bin(17,0) dcl 2898 set ref 2977* 2978 2979* 2979 2981* 2987* cpu_usage 30 based fixed bin(71,0) level 4 dcl 7-303 ref 2977 creation_time 6 based fixed bin(71,0) array level 3 dcl 7-347 set ref 2265* cu_$arg_count_rel 000022 constant entry external dcl 235 ref 1136 2460 cu_$arg_ptr_rel 000024 constant entry external dcl 236 ref 1968 2125 2469 2473 2552 2568 2582 2832 2861 current_entry 002137 automatic fixed bin(17,0) dcl 1957 set ref 1965* 1970 1971 1975* 1975 current_index 002136 automatic fixed bin(21,0) dcl 1956 set ref 1964* 1970 1972 1974* 1974 current_password 40 based char(8) level 2 dcl 7-76 set ref 1171 1212 1993* current_time 002060 automatic fixed bin(71,0) dcl 1798 set ref 1802* 1803 1807 currentsize builtin function dcl 439 ref 1321 1321 1361 1361 1768 1768 cv_dec_check_ 000026 constant entry external dcl 237 ref 2105 2843 date_col 000103 automatic fixed bin(17,0) dcl 2192 set ref 2248* 2249 2256* 2265* date_len 000111 automatic fixed bin(17,0) dcl 2195 set ref 2234* 2249 date_time_$format 000032 constant entry external dcl 241 ref 996 2265 2383 2981 3044 3049 3126 3457 date_time_$format_max_length 000034 constant entry external dcl 242 ref 2234 default_auth_changed 60(02) based bit(1) level 3 packed unaligned dcl 7-267 ref 3084 default_io_module 56 based char(32) level 3 dcl 7-103 set ref 1889* default_proj_changed 60(03) based bit(1) level 3 packed unaligned dcl 7-267 ref 3087 destroyed 33(05) based bit(1) level 4 packed unaligned dcl 7-303 ref 2972 dial_id 103 based char(22) level 2 dcl 13-32 set ref 897 922 936 2409* 2470* dial_person 000311 automatic char(22) unaligned dcl 147 set ref 866 887* 895* 924* 944 2495* 2497 2500 2501* 2501 dial_project 000317 automatic char(9) unaligned dcl 148 set ref 867 888* 895* 924* 945 2497* 2500* dial_qualifier 44 based char(22) level 2 dcl 7-170 set ref 936* disconnect 60 based bit(1) level 3 in structure "login_server_validate_response" packed unaligned dcl 7-267 in procedure "ls_validate_user_" ref 3094 disconnect 21 based bit(1) level 3 in structure "login_server_operator_response" packed unaligned dcl 7-426 in procedure "ls_validate_user_" ref 2337 disconnect 33 based bit(1) level 4 in structure "login_server_process_response" packed unaligned dcl 7-303 in procedure "ls_validate_user_" ref 2914 disconnect 23 based bit(1) level 3 in structure "login_server_dial_response" packed unaligned dcl 7-366 in procedure "ls_validate_user_" ref 965 disconnect 22 based entry variable level 2 in structure "login_service_entries" dcl 8-25 in procedure "ls_validate_user_" ref 2149 divide builtin function dcl 439 ref 2451 2977 2978 dsa_log_manager_$trace_message 000030 constant entry external dcl 239 ref 630 2152 endpoint_name 12 based char(32) level 2 dcl 9-19 ref 900 error_message 002160 automatic char(64) unaligned dcl 2020 set ref 2046* 2050* error_table_$action_not_performed 000202 external static fixed bin(35,0) dcl 300 ref 1998 2033 2051 2333 error_table_$bad_arg 000204 external static fixed bin(35,0) dcl 300 set ref 1585* 2480* 2488* 2583* 2661* error_table_$bad_conversion 000206 external static fixed bin(35,0) dcl 300 set ref 2103* 2106* 2840* 2844* error_table_$bad_mode 000210 external static fixed bin(35,0) dcl 300 ref 3366 error_table_$badopt 000212 external static fixed bin(35,0) dcl 300 set ref 1600* 2100* 2520* 2753* error_table_$fatal_error 000214 external static fixed bin(35,0) dcl 300 set ref 600 622 1819* 3331* 3346* error_table_$inconsistent 000216 external static fixed bin(35,0) dcl 300 set ref 2524* 2758* 2762* 2769* 2773* 2777* 2780* 2795* error_table_$long_record 000220 external static fixed bin(35,0) dcl 300 ref 3212 3217 error_table_$no_message 000224 external static fixed bin(35,0) dcl 300 ref 3304 error_table_$noarg 000222 external static fixed bin(35,0) dcl 300 set ref 2824* 2833* error_table_$smallarg 000226 external static fixed bin(35,0) dcl 300 ref 827 error_table_$timeout 000230 external static fixed bin(35,0) dcl 300 set ref 692* error_table_$too_many_args 000232 external static fixed bin(35,0) dcl 300 set ref 821* 1386* 1431* 1454* 2084* error_table_$unimplemented_version 000234 external static fixed bin(35,0) dcl 300 ref 455 error_table_$user_requested_hangup 000236 external static fixed bin(35,0) dcl 300 ref 1058 error_table_$user_requested_logout 000240 external static fixed bin(35,0) dcl 300 set ref 1615* 2993* error_table_$wrong_no_of_args 000242 external static fixed bin(35,0) dcl 300 set ref 2462* event_channel 16 based fixed bin(71,0) level 2 dcl 7-426 ref 2355 expected_response 37 based fixed bin(17,0) level 2 dcl 13-32 set ref 3266* first_arg_arg 001276 automatic fixed bin(17,0) dcl 191 set ref 1300 1967 2124 2548* 2588* 2780 first_control_arg 002260 automatic fixed bin(17,0) dcl 2538 set ref 2557* 2572* 2577* 2581 fixed_part based structure level 2 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" fixed_part based structure level 2 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" flags 2 based structure level 2 in structure "as_user_message_info" dcl 2-8 in procedure "ls_validate_user_" set ref 3297* flags 125 based structure level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" flags 2 based structure level 2 in structure "ls_validate_options" dcl 11-44 in procedure "ls_validate_user_" flags 33 based structure level 3 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" flags 11 003076 automatic structure level 2 in structure "auto_set_term_info" packed unaligned dcl 3398 in procedure "Set_terminal_type" flags 23 based structure level 2 in structure "login_server_dial_response" dcl 7-366 in procedure "ls_validate_user_" flags 16 based structure level 2 in structure "ls_cp_info" dcl 10-24 in procedure "ls_validate_user_" flags 60 based structure level 2 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" flags 1 based structure level 2 in structure "ls_reply_message" dcl 7-445 in procedure "ls_validate_user_" flags 25 based structure level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" flags 62 based structure level 2 in structure "login_server_validate_request" dcl 7-76 in procedure "ls_validate_user_" set ref 872* flags 21 based structure level 2 in structure "login_server_operator_response" dcl 7-426 in procedure "ls_validate_user_" flags 125 001054 automatic structure level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" float builtin function dcl 439 ref 3457 3457 force 67(01) based bit(1) level 4 in structure "login_server_process_request" packed unaligned dcl 7-103 in procedure "ls_validate_user_" set ref 1903* force 001277 automatic bit(1) dcl 192 in procedure "ls_validate_user_" set ref 1903 2634* force_given 66(01) based bit(1) level 4 packed unaligned dcl 7-103 set ref 1896* force_message parameter bit(1) unaligned dcl 3437 ref 3434 3444 force_specified 001300 automatic bit(1) dcl 193 set ref 1759* 1896 2541* 2633* 2780 free_request parameter bit(1) dcl 3239 ref 3230 3271 generate_password 001301 automatic bit(1) dcl 194 set ref 1163 1250 1254 2541* 2681* generate_word_ 000036 constant entry external dcl 243 ref 1167 get_system_free_area_ 000040 constant entry external dcl 244 ref 448 gpw 62 based bit(1) level 3 packed unaligned dcl 7-76 set ref 1250* gpw_length 000322 automatic fixed bin(17,0) dcl 149 set ref 1166* 1167* handle 4 based bit(72) level 2 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" ref 883 1266 handle 40 based bit(72) level 2 in structure "login_server_list_request" dcl 7-156 in procedure "ls_validate_user_" set ref 2205* handle 40 based bit(72) level 2 in structure "login_server_logout_request" dcl 7-199 in procedure "ls_validate_user_" set ref 1607* handle 40 based bit(72) level 2 in structure "login_server_disconnect_request" dcl 7-188 in procedure "ls_validate_user_" set ref 2159* handle 40 based bit(72) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1878* hangup 002417 automatic bit(1) dcl 2896 set ref 2914* 2934 2939* 2942 hangup_code parameter fixed bin(35,0) dcl 2381 ref 2373 2391 hangup_flag 000323 automatic bit(1) dcl 150 in procedure "ls_validate_user_" set ref 965* 969 2337* 2341 3094* 3105 hangup_flag parameter bit(1) dcl 2379 in procedure "Logout" ref 2373 2388 hbound builtin function dcl 439 ref 3324 header based structure level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" header based structure level 2 in structure "login_server_list_request" dcl 7-156 in procedure "ls_validate_user_" header based structure level 2 in structure "login_server_logout_request" dcl 7-199 in procedure "ls_validate_user_" header based structure level 2 in structure "login_server_disconnect_request" dcl 7-188 in procedure "ls_validate_user_" header based structure level 2 in structure "login_server_validate_request" dcl 7-76 in procedure "ls_validate_user_" header based structure level 2 in structure "login_server_dial_request" dcl 7-170 in procedure "ls_validate_user_" header based structure level 2 in structure "login_server_operator_request" dcl 7-214 in procedure "ls_validate_user_" header_version based char(8) level 2 dcl 7-54 set ref 3261* help_flag 000324 automatic bit(1) dcl 151 in procedure "ls_validate_user_" set ref 1179* 1183 1200* 1206 1220* 1226 help_flag 002151 automatic bit(1) dcl 1988 in procedure "Get_initial_password" set ref 1993* 2001 help_flag parameter bit(1) dcl 2017 in procedure "Get_password" set ref 2012 2024* 2036* hold parameter bit(1) dcl 2074 in procedure "Get_process_number" set ref 2063 2077* 2094* 2097* hold 000325 automatic bit(1) dcl 152 in procedure "ls_validate_user_" set ref 1579* 1588* 1591* 1615 hold_allowed parameter bit(1) dcl 2071 ref 2063 2094 2097 hold_given 001302 automatic bit(1) dcl 195 set ref 2541* 2705* 2711* 2762 hold_on_destroy 001303 automatic bit(1) dcl 196 set ref 1555* 2541* 2705* 2710* 2766* 2993 home_dir 73 based char(168) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1911* home_dir 001304 automatic char(168) unaligned dcl 197 in procedure "ls_validate_user_" set ref 1762* 1911 2545* 2637* 2780 id 1 002574 automatic char(4) level 2 packed unaligned dcl 3146 set ref 3157 3175 id_col 000104 automatic fixed bin(17,0) dcl 2192 set ref 2251* 2252 2254 2256* 2265* id_len 000112 automatic fixed bin(17,0) dcl 2195 set ref 2237* 2242* 2242 2252 2254 ignore_line_type 11(02) 003076 automatic bit(1) level 3 packed unaligned dcl 3398 set ref 3407* immediate 70(02) based bit(1) level 4 in structure "login_server_process_request" packed unaligned dcl 7-103 in procedure "ls_validate_user_" set ref 1767* 1916* immediate 001356 automatic bit(1) dcl 198 in procedure "ls_validate_user_" set ref 1555* 1556* 1630* 1631* 1916 2541* 2702* 2758 immediate parameter bit(1) dcl 1726 in procedure "Connect_loop_process_request" ref 1718 1767 immediate parameter bit(1) dcl 2073 in procedure "Get_process_number" set ref 2063 2076* 2090* immediate_allowed parameter bit(1) dcl 2070 ref 2063 2090 incorrect_passwords 43 based fixed bin(17,0) level 2 dcl 7-267 set ref 3126 3126 3126* index builtin function dcl 439 ref 1585 2090 2475 2479 2497 2553 2569 2583 2833 2862 init_ring_given 70 based bit(1) level 4 packed unaligned dcl 7-103 set ref 1900* initial_ring 23 based fixed bin(17,0) level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" set ref 985* 2358* 3008* initial_ring 71 based fixed bin(17,0) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1907* initial_ring 12 based fixed bin(17,0) array level 3 in structure "login_server_list_response" dcl 7-347 in procedure "ls_validate_user_" set ref 2243 2263 2265* initial_ring 34 based fixed bin(17,0) level 3 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" ref 3008 initializer_handle 20 based bit(72) level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 621 883* 885 894* 932 1056 1266* 1281 1603 1607 1878 2159 2205 2303 2403* 2964* 3212 3289 3308 3331 3346 initializer_handle 40 based bit(72) level 2 in structure "login_server_operator_request" dcl 7-214 in procedure "ls_validate_user_" set ref 2303* initializer_handle 40 based bit(72) level 2 in structure "login_server_dial_request" dcl 7-170 in procedure "ls_validate_user_" set ref 932* initializer_handle 16 based bit(72) level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" set ref 885* 919* 1281* 2964* installation_id 003116 automatic char(64) unaligned dcl 3439 set ref 3455* 3457* installation_parms based structure level 1 dcl 5-33 installation_parms_part_1 based structure level 1 dcl 5-40 installation_parms_ptr 14 based pointer level 2 dcl 10-24 ref 689 700 1165 1801 3113 installation_parms_resource_array_part based structure array level 1 unaligned dcl 5-144 instance 002423 automatic fixed bin(17,0) dcl 2900 set ref 3031* 3032 3032 3032 3034 3035* io_error 001770 stack reference condition dcl 442 ref 596 619 io_module 22 based char(32) level 2 dcl 9-19 ref 1889 ioa_ 000042 constant entry external dcl 245 ref 745 2435 3207 ioa_$nnl 000044 constant entry external dcl 246 ref 2880 3451 iox_$control 000046 constant entry external dcl 247 ref 747 1817 3149 3161 3202 3220 3224 3383 3410 iox_$get_chars 000050 constant entry external dcl 248 ref 3164 iox_$get_line 000052 constant entry external dcl 249 ref 1932 3211 iox_$modes 000054 constant entry external dcl 250 ref 1391 3364 iox_$user_input 000244 external static pointer dcl 320 set ref 1932* 3164* 3211* 3220* iox_$user_io 000246 external static pointer dcl 320 set ref 747* 1391* 1817* 3149* 3161* 3202* 3224* 3364* 3383* 3410* ip 002002 automatic pointer dcl 3479 set ref 689* 690 690 690 700* 701 1165* 1166 1166 1801* 1803 1811 3113* 3114 ipc_$create_ev_chn 000056 constant entry external dcl 251 ref 586 ipc_$delete_ev_chn 000060 constant entry external dcl 252 ref 479 642 keyword 002250 automatic char(32) unaligned dcl 2458 set ref 2510* 2674* 2829* 2833* 2840* 2844* language_info 2 000642 automatic structure level 2 dcl 173 last_incorrect_password 44 based structure level 2 dcl 7-267 lbound builtin function dcl 439 ref 3324 length builtin function dcl 439 ref 1090 1090 1167 1167 1932 1932 1940 1940 2235 2236 2237 2240 2241 2242 2248 2249 2250 2251 2252 2480 3164 3164 3211 3211 length_read 002572 automatic fixed bin(21,0) dcl 3142 in procedure "Read_answerback" set ref 3164* 3169 3171 3171 length_read 002625 automatic fixed bin(21,0) dcl 3192 in procedure "Read_password" set ref 3211* 3217 line_type 71 001054 automatic fixed bin(17,0) level 3 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 612* line_type 71 based fixed bin(17,0) level 3 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 992 2362 3011 3159* line_type 37 based fixed bin(17,0) level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" set ref 612 992* 2362* 3011* line_type 12 002574 automatic fixed bin(17,0) level 2 in structure "auto_terminal_info" dcl 3146 in procedure "Read_answerback" set ref 3159 login_arguments 302 based structure level 2 dcl 7-103 login_info_dir 17 based char(168) level 2 packed unaligned dcl 10-24 set ref 489* 1854* 2426* login_instance 26 based fixed bin(17,0) level 3 dcl 7-303 ref 3029 3031 login_line 002076 automatic char(100) unaligned dcl 1927 set ref 1932 1932 1932 1932 1938* 1938 1940 1940 1940 1940 login_line_read 002127 automatic fixed bin(21,0) dcl 1928 set ref 1932* 1938 login_server_dial_request based structure level 1 dcl 7-170 set ref 947 947 login_server_dial_response based structure level 1 dcl 7-366 set ref 953 967 1002 1708 login_server_disconnect_request based structure level 1 dcl 7-188 login_server_list_request based structure level 1 dcl 7-156 set ref 2215 2215 login_server_list_response based structure level 1 dcl 7-347 set ref 1706 2211 2276 login_server_logout_request based structure level 1 dcl 7-199 login_server_operator_request based structure level 1 dcl 7-214 set ref 2318 2318 login_server_operator_response based structure level 1 dcl 7-426 set ref 1710 2314 2324 2339 2367 login_server_process_request based structure level 1 dcl 7-103 set ref 475 1305 1307 1321 1321 1361 1361 1696 1752 1753 1768 1768 2399 2937 3057 login_server_process_response based structure level 1 dcl 7-303 set ref 1704 2907 2936 2956 2990 3056 login_server_response_header based structure level 1 dcl 7-258 login_server_termination_response based structure level 1 dcl 7-385 login_server_validate_request based structure level 1 dcl 7-76 set ref 876 876 1261 1261 login_server_validate_response based structure level 1 dcl 7-267 set ref 890 1284 1702 3074 3104 login_service_entries based structure level 1 dcl 8-25 login_service_entries_ptr 002014 automatic pointer dcl 8-22 set ref 2147* 2149 login_time 503 based fixed bin(17,0) level 3 dcl 5-33 set ref 690* 690* 690* 701 login_timeout_check_required 000004 constant bit(1) initial array dcl 13-86 ref 685 1663 1663 1665 1667 login_tries 505 based fixed bin(17,0) level 3 dcl 5-33 ref 3114 login_word 44 based char(8) level 2 packed unaligned dcl 1-55 ref 1120 1120 1488 logout 33(01) based bit(1) level 4 in structure "login_server_process_response" packed unaligned dcl 7-303 in procedure "ls_validate_user_" ref 2913 logout 002416 automatic bit(1) dcl 2895 in procedure "Process_process_response" set ref 2913* 2934 2939 2981 2993 ls_connection_desc based structure level 1 dcl 9-19 ls_connection_desc_ptr 002016 automatic pointer dcl 9-17 set ref 451* 466 467 468 824* 825 2146* 2147 2149 2149 2152 ls_convert_as_error_code_ 000062 constant entry external dcl 253 ref 962 2332 2918 3092 3282 3317 ls_cp_info based structure level 1 dcl 10-24 ls_cp_info_ptr 002020 automatic pointer dcl 10-22 set ref 444* 451 460 463 489 494* 630 637* 648* 688* 689 700 1041* 1042 1113* 1114 1165 1481* 1482 1517* 1534* 1550* 1567* 1577* 1625* 1800* 1801 1854 1855 2425 2426 3113 ls_data_$suffix 000250 external static char(4) array unaligned dcl 325 ref 3034 ls_data_$teens_suffix 000252 external static char(4) array unaligned dcl 326 ref 3032 ls_message_$print 000064 constant entry external dcl 254 ref 690 831 913 996 1124 1173 1185 1191 1208 1214 1228 1234 1332 1338 1340 1348 1356 1370 1397 1434 1457 1733 1818 1836 1838 1930 2003 2032 2041 2050 2141 2225 2229 2256 2265 2299 2333 2365 2383 2920 2923 2927 2951 2974 2981 2987 3017 3020 3024 3035 3044 3049 3081 3084 3087 3096 3100 3126 3219 3457 ls_message_$print_error 000070 constant entry external dcl 256 ref 964 2336 2932 3041 3366 3384 3411 ls_message_$print_nnl 000066 constant entry external dcl 255 ref 1177 1198 1218 1991 ls_message_table_$aclass_banner_msg 000254 external static fixed bin(35,0) dcl 328 set ref 831* ls_message_table_$already_logged_in 000256 external static fixed bin(35,0) dcl 328 set ref 2927* ls_message_table_$authorization 000260 external static fixed bin(35,0) dcl 328 set ref 3017* ls_message_table_$bad_password_check 000262 external static fixed bin(35,0) dcl 328 set ref 2050* ls_message_table_$bad_password_format 000264 external static fixed bin(35,0) dcl 328 set ref 2032* ls_message_table_$connect_requests 000266 external static fixed bin(35,0) dcl 328 set ref 1836* ls_message_table_$connected 000270 external static fixed bin(35,0) dcl 328 set ref 3020* ls_message_table_$connected_after_new_proc 000272 external static fixed bin(35,0) dcl 328 set ref 3024* ls_message_table_$cost_message 000274 external static fixed bin(35,0) dcl 328 set ref 2987* ls_message_table_$current_modes 000276 external static fixed bin(35,0) dcl 328 set ref 1397* ls_message_table_$current_terminal_id 000300 external static fixed bin(35,0) dcl 328 set ref 1434* ls_message_table_$current_terminal_type 000302 external static fixed bin(35,0) dcl 328 set ref 1457* ls_message_table_$default_auth_changed 000304 external static fixed bin(35,0) dcl 328 set ref 3084* ls_message_table_$default_project_changed 000306 external static fixed bin(35,0) dcl 328 set ref 3087* ls_message_table_$dial_connect_msg 000310 external static fixed bin(35,0) dcl 328 set ref 996* ls_message_table_$dialed_to_mc 000312 external static fixed bin(35,0) dcl 328 set ref 2365* ls_message_table_$disconnected_processes 000314 external static fixed bin(35,0) dcl 328 set ref 1332* 2229* 2951* ls_message_table_$dropped_by_mc 000316 external static fixed bin(35,0) dcl 328 set ref 2333* ls_message_table_$generated_password 000320 external static fixed bin(35,0) dcl 328 set ref 1173* ls_message_table_$generated_password_error 000322 external static fixed bin(35,0) dcl 328 set ref 1191* ls_message_table_$give_instructions 000324 external static fixed bin(35,0) dcl 328 set ref 1338* ls_message_table_$greeting_msg 000326 external static fixed bin(35,0) dcl 328 set ref 3457* ls_message_table_$hangup 000330 external static fixed bin(35,0) dcl 328 set ref 2141* ls_message_table_$help_gpw_verify 000332 external static fixed bin(35,0) dcl 328 set ref 1185* ls_message_table_$help_new_password 000334 external static fixed bin(35,0) dcl 328 set ref 1208* ls_message_table_$help_npw_verify 000336 external static fixed bin(35,0) dcl 328 set ref 1228* ls_message_table_$help_password 000340 external static fixed bin(35,0) dcl 328 set ref 2003* ls_message_table_$incorrect_passwords 000342 external static fixed bin(35,0) dcl 328 set ref 3126* ls_message_table_$last_login 000344 external static fixed bin(35,0) dcl 328 set ref 3049* ls_message_table_$list_proc_header 000350 external static fixed bin(35,0) dcl 328 set ref 2256* ls_message_table_$list_process 000346 external static fixed bin(35,0) dcl 328 set ref 2265* ls_message_table_$login 000352 external static fixed bin(35,0) dcl 328 set ref 3044* ls_message_table_$login_args 000354 external static fixed bin(35,0) dcl 328 set ref 1930* ls_message_table_$login_excess_wakeups 000356 external static fixed bin(35,0) dcl 328 set ref 1818* ls_message_table_$login_requests 000360 external static fixed bin(35,0) dcl 328 set ref 1838* ls_message_table_$login_timeout 000362 external static fixed bin(35,0) dcl 328 set ref 690* ls_message_table_$logout 000364 external static fixed bin(35,0) dcl 328 set ref 2981* ls_message_table_$logout_disconnected 000366 external static fixed bin(35,0) dcl 328 set ref 2383* ls_message_table_$multiple_login_msg 000370 external static fixed bin(35,0) dcl 328 set ref 3035* ls_message_table_$must_give_process_no 000372 external static fixed bin(35,0) dcl 328 set ref 1348* 1733* ls_message_table_$new_password 000374 external static fixed bin(35,0) dcl 328 set ref 1177* 1198* ls_message_table_$new_password_again 000376 external static fixed bin(35,0) dcl 328 set ref 1218* ls_message_table_$new_password_error 000400 external static fixed bin(35,0) dcl 328 set ref 1234* ls_message_table_$new_password_indistinct 000402 external static fixed bin(35,0) dcl 328 set ref 1214* ls_message_table_$no_connect_aclass 000404 external static fixed bin(35,0) dcl 328 set ref 2923* ls_message_table_$no_disconnected_processes 000406 external static fixed bin(35,0) dcl 328 set ref 1356* 2225* ls_message_table_$no_such_process 000410 external static fixed bin(35,0) dcl 328 set ref 1340* 2920* ls_message_table_$password 000412 external static fixed bin(35,0) dcl 328 set ref 1991* ls_message_table_$password_changed 000414 external static fixed bin(35,0) dcl 328 set ref 3081* ls_message_table_$password_expired 000416 external static fixed bin(35,0) dcl 328 set ref 3096* ls_message_table_$password_format_warning 000420 external static fixed bin(35,0) dcl 328 set ref 3219* ls_message_table_$password_quit 000422 external static fixed bin(35,0) dcl 328 set ref 2041* ls_message_table_$password_unused_too_long 000424 external static fixed bin(35,0) dcl 328 set ref 3100* ls_message_table_$please_try_again 000426 external static fixed bin(35,0) dcl 328 set ref 1370* ls_message_table_$process_destroyed 000430 external static fixed bin(35,0) dcl 328 set ref 2974* ls_message_table_$requesting_dial_to_mc 000432 external static fixed bin(35,0) dcl 328 set ref 2299* ls_message_table_$special_session 000434 external static fixed bin(35,0) dcl 328 set ref 1124* ls_message_table_$user_required_for_dial 000436 external static fixed bin(35,0) dcl 328 set ref 913* ls_process_info based structure level 1 dcl 11-19 ls_process_info_ptr 002022 automatic pointer dcl 11-17 set ref 446* 453 462 606 610 611 612 854* 855 885 919 977 979 981 983 985 987 988 990 992 994 996 1277* 1278 1280 1281 2354 2355 2356 2357 2358 2359 2360 2361 2362 2363 2963* 2964 3003 3004 3005 3006 3007 3008 3009 3010 3011 3012 ls_process_request_arg_string_length 002007 automatic fixed bin(21,0) dcl 7-148 set ref 1301* 1303* 1305 1307 1307 1751* 1752 1753 1753 1960 ls_process_request_n_args 002006 automatic fixed bin(17,0) dcl 7-147 set ref 1300* 1301 1305 1307 1307 1750* 1752 1753 1753 1959 1962 ls_reply_message based structure level 1 dcl 7-445 ls_reply_message_ptr 002012 automatic pointer dcl 7-443 set ref 3269* 3270* 3282 3284 3292 ls_report_internal_error_ 000072 constant entry external dcl 257 ref 3287 3327 3344 ls_report_subr_error_ 000074 constant entry external dcl 258 ref 494 637 648 827 905 1092 1392 1846 1856 2417 2427 3276 3304 3369 ls_request based bit(36) array dcl 3254 ref 3271 ls_request_header based structure level 1 dcl 7-54 ls_request_ptr 002004 automatic pointer dcl 7-50 set ref 851* 859* 866 867 868 869 871 872 873 874 876 876 930* 932 933 936 938 940 942 944 945 947 947 1128* 1155* 1171 1212 1242 1243 1244 1245 1246 1247 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1261 1261 1305 1307* 1308 1321 1321 1361 1361 1519* 1536* 1552* 1606* 1607 1608 1627* 1687 1690 1692 1696 1742* 1743 1744 1745 1752 1753* 1767 1768 1768 1878 1880 1882 1884 1886 1887 1889 1895 1896 1897 1898 1899 1900 1901 1902 1903 1904 1905 1906 1907 1908 1910 1911 1912 1913 1914 1916 1959 1960 1970 1971 1972 1993 2158* 2159 2160 2161 2201* 2203 2205 2215 2215 2301* 2303 2304 2306 2307 2308 2309 2318 2318 3259 3260 3261 3262 3263 3264 3270* 3271 ls_response_ptr 002010 automatic pointer dcl 7-254 set ref 851* 876* 883 887 888 890 947* 953 953 960 962 965 967 977 979 981 983 985 1002 1128* 1261* 1266 1268 1270 1272 1274 1278 1284 1321* 1361* 1519* 1536* 1552* 1627* 1700 1702 1702 1704 1704 1706 1706 1708 1708 1710 1710 1768* 2208* 2211 2211 2215* 2223 2240 2241 2242 2243 2245 2261 2263 2265 2265 2265 2265 2265 2265 2276 2276 2311* 2314 2314 2318* 2324 2324 2330 2332 2337 2339 2354 2355 2357 2358 2367 2907 2907 2913 2914 2916 2918 2927 2927 2927 2936 2951 2951 2951 2955 2956 2964 2964 2969 2972 2977 2981 2987 2990 3003 3004 3005 3007 3008 3016 3020 3020 3024 3029 3031 3041 3041 3044 3056 3074 3074 3081 3084 3087 3090 3092 3094 3096 3096 3100 3100 3104 3126 3126 3126 3126 3126 3126 3311* 3313 3317 3323 3334 ls_ssu_request_tables_$connect_requests 000440 external static fixed bin(17,0) dcl 389 set ref 1843 1843 2413 2413 ls_ssu_request_tables_$enabled_standard_requests 000442 external static fixed bin(17,0) dcl 390 set ref 511 511 ls_ssu_request_tables_$login_requests 000444 external static fixed bin(17,0) dcl 391 set ref 489 489 1842 1842 2414 2414 ls_validate_info based structure level 1 dcl 13-32 ls_validate_info_ptr 002026 automatic pointer dcl 13-30 set ref 469* 475 475 562 563 564 600 621 622 684* 685 687 688 701* 706* 731* 740 742 742 756 757* 763* 792* 794 818* 824 827 845* 849 854 855 869 874 883 885 894 897 900 905 922 932 933 936 938 940 942 962 964 969 976 988 990 992 996 996 1040* 1041 1054* 1056 1058 1068* 1082* 1086* 1092 1112* 1113 1152 1153 1244 1245 1247 1266 1268 1270 1272 1274 1277 1280 1281 1288 1288 1308 1330 1332 1332 1335 1345 1383* 1392 1428* 1434 1451* 1457 1480* 1481 1516* 1517 1533* 1534 1549* 1550 1566* 1567 1576* 1577 1603 1607 1608 1624* 1625 1656 1660 1663 1667 1670 1692 1692 1730 1738 1739 1742 1745 1800 1803 1806 1807 1810 1810 1811 1814 1815 1836 1840 1846 1856 1861 1878 1880 1882 1884 1887 1889 1908 2146 2152 2159 2161 2179 2203 2205 2223 2303 2304 2309 2332 2333 2333 2336 2347 2353 2360 2361 2362 2365 2383 2383 2391 2397 2399 2400 2403 2404 2405 2406 2407 2408 2409 2411 2417 2427 2432 2466 2466 2470 2484 2485 2920 2923 2923 2927 2927 2937 2937 2939 2944 2955 2963 2964 2969 2974 2974 2981 2981 3009 3010 3011 3020 3024 3024 3038 3044 3044 3044 3044 3049 3049 3049 3057 3057 3060 3092 3093 3112 3112 3114 3157 3158 3159 3198 3212 3262 3263 3266 3276 3287 3289 3298 3304 3308 3327 3331 3344 3346 3369 3386 3413 3444 3446 3457 3461 ls_validate_options based structure level 1 dcl 11-44 ls_validate_options_ptr 002024 automatic pointer dcl 11-42 set ref 445* 461 465 606 mask_needed 001357 automatic bit(1) dcl 199 in procedure "ls_validate_user_" set ref 849 1153 2467* 2514* 2517* 2541* 2613* 2616* mask_needed 125(02) based bit(1) level 3 in structure "ls_validate_info" packed unaligned dcl 13-32 in procedure "ls_validate_user_" set ref 849* 1153* 3198 max builtin function dcl 439 ref 1166 2240 2241 2242 max_units 17 based fixed bin(17,0) level 2 dcl 1-55 ref 3457 mbz 11(03) 003076 automatic bit(33) level 3 packed unaligned dcl 3398 set ref 3408* message_handle 14 based bit(72) level 3 dcl 2-8 set ref 3298* message_info 4 based structure level 2 dcl 2-8 message_length 6 based fixed bin(18,0) level 3 dcl 2-8 ref 3323 message_lng 112 based fixed bin(17,0) level 2 dcl 1-55 ref 3450 message_name 000101 automatic fixed bin(17,0) dcl 3245 set ref 3324* 3326* 3327 message_ptr 4 based pointer level 3 dcl 2-8 ref 3311 message_type 000102 automatic fixed bin(17,0) dcl 3246 in procedure "Send_request_to_initializer" set ref 3313* 3314 3315 3321 3324 3324 3324 3327* message_type based fixed bin(17,0) level 2 in structure "login_server_response_header" dcl 7-258 in procedure "ls_validate_user_" ref 1702 1704 1706 1708 1710 3313 message_update_time 110 based fixed bin(71,0) level 2 dcl 1-55 ref 742 minimum_ring 72 based fixed bin(17,0) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1908* minimum_ring 52 based fixed bin(17,0) level 2 in structure "ls_connection_desc" dcl 9-19 in procedure "ls_validate_user_" ref 466 minimum_ring 43 001054 automatic fixed bin(17,0) level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 466* minimum_ring 43 based fixed bin(17,0) level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" ref 1908 minimum_ring_given 70(01) based bit(1) level 4 packed unaligned dcl 7-103 set ref 1901* minutes 002236 automatic fixed dec(5,1) dcl 2446 set ref 2451* 2452 mod builtin function dcl 439 ref 2880 3032 3034 mode_string 002636 automatic char(512) unaligned dcl 3358 in procedure "Set_modes" set ref 3362* 3364* mode_string 001360 automatic char(512) unaligned dcl 200 in procedure "ls_validate_user_" set ref 1146 1146* 1391* 1397* 2545* 2604* n_args 301 based fixed bin(17,0) level 3 dcl 7-103 set ref 475 1307* 1321 1321 1361 1361 1696 1753* 1768 1768 1959* 1972 2399 2937 3057 n_disconnected_processes 26 based fixed bin(17,0) level 2 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" ref 1272 n_disconnected_processes 23 based fixed bin(17,0) level 3 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" set ref 2951 2951* 2951 2955 n_disconnected_processes 40 based fixed bin(17,0) level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 1272* 1330 1332* 1332 1335 1345 1730 1836 2223* 2404* 2923 2955* 2974 3020 3024 n_processes 000114 automatic fixed bin(17,0) dcl 2196 in procedure "List_request" set ref 2223* 2225 2229* 2229 2239 2259 n_processes 4 based fixed bin(17,0) level 2 in structure "login_server_list_response" dcl 7-347 in procedure "ls_validate_user_" ref 1706 2211 2223 2276 n_units 16 based fixed bin(17,0) level 2 dcl 1-55 ref 3457 n_users 14 based fixed bin(17,0) level 2 dcl 1-55 set ref 3457* n_value parameter fixed bin(17,0) dcl 2810 set ref 2817 2843* 2850 2857* name 2 based char(32) level 2 in structure "ls_connection_desc" dcl 9-19 in procedure "ls_validate_user_" set ref 467 2149 2152* 3457* name 1 003076 automatic char(32) level 2 in structure "auto_set_term_info" packed unaligned dcl 3398 in procedure "Set_terminal_type" set ref 3404* net_info_$get_field 000076 constant entry external dcl 259 ref 900 network_connection_type 57 based fixed bin(17,0) level 2 dcl 7-76 set ref 871* 1249* new_handle 6 based bit(72) level 3 dcl 7-303 ref 2964 2964 new_password 000326 automatic char(8) dcl 153 in procedure "ls_validate_user_" set ref 1167 1167 1170* 1171 1189 1200* 1212 1232 1259 new_password 60 based char(8) level 2 in structure "login_server_validate_request" dcl 7-76 in procedure "ls_validate_user_" set ref 1259* new_password_generated 000330 automatic char(8) unaligned dcl 154 set ref 1167* 1170* 1173* 1175* new_password_hyphenated 000332 automatic char(12) unaligned dcl 155 set ref 1167* 1173* 1175* new_proc 33(04) based bit(1) level 4 packed unaligned dcl 7-303 ref 3024 new_request 002046 automatic bit(1) dcl 1728 set ref 1741* 1754* 1768* new_state parameter fixed bin(17,0) dcl 1654 ref 1651 1656 1658 1663 1665 1670 new_term_type 002542 automatic char(32) unaligned dcl 3140 set ref 3171* 3177 3177 3177* no_start_up 001560 automatic bit(1) dcl 201 in procedure "ls_validate_user_" set ref 1759* 1910 2541* 2646* 2780 no_start_up 70(03) based bit(1) level 4 in structure "login_server_process_request" packed unaligned dcl 7-103 in procedure "ls_validate_user_" set ref 1910* non_standard_language 2 000642 automatic bit(1) level 3 dcl 173 set ref 531* not_first 2(01) based bit(1) level 3 packed unaligned dcl 11-44 ref 606 null builtin function dcl 439 ref 448 464 472 626 626 630 630 851 953 1044 1115 1128 1133 1519 1536 1552 1609 1627 1-53 475 483 747 747 1687 1692 1700 1739 1817 1817 2152 2152 2163 2208 2211 2276 2311 2314 2324 2397 2400 2907 2937 3057 3074 3161 3161 3202 3202 3220 3220 3224 3224 3339 number_of_args 001561 automatic fixed bin(17,0) dcl 202 set ref 820* 821 1084* 1086 1136* 1137 1300 1385* 1386 1389 1430* 1431 1434 1453* 1454 1457 1580* 1582 1967 2079* 2081 2084 2087 2124 2460* 2462 2462 2472 2548 2562 2581 2780 2824 2858 numeric 002400 automatic bit(1) unaligned dcl 2812 set ref 2814* 2822* 2836 operator 001562 automatic bit(1) dcl 203 in procedure "ls_validate_user_" set ref 1257 1286 2541* 2747* 2777 2780 operator 62(07) based bit(1) level 3 in structure "login_server_validate_request" packed unaligned dcl 7-76 in procedure "ls_validate_user_" set ref 1257* options_ptr 10 001054 automatic pointer level 2 dcl 174 set ref 461* other_flags 70 based structure level 3 dcl 7-103 outer_module 001563 automatic char(32) unaligned dcl 204 in procedure "ls_validate_user_" set ref 1762* 1912 2545* 2649* outer_module 145 based char(32) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1912* pad 62(08) based bit(28) level 3 packed unaligned dcl 7-76 set ref 1258* pad1 5 based bit(36) level 2 dcl 7-54 set ref 3264* part_1 based structure level 2 dcl 5-33 password 002200 automatic char(8) unaligned dcl 2021 set ref 2027* 2029 2031* 2036 2036 2036 2039 2039 2046* 2049* 2054* 2055* password_buff 002622 automatic char(10) unaligned dcl 3191 set ref 3196* 3211 3211 3211 3211 3226 password_changed 60(01) based bit(1) level 3 packed unaligned dcl 7-267 ref 3081 password_expired 60(04) based bit(1) level 3 packed unaligned dcl 7-267 ref 3096 password_gpw_length 2041 based fixed bin(17,0) level 3 dcl 5-33 ref 1166 password_interval 57 based fixed bin(17,0) level 2 dcl 7-267 set ref 3096* 3100* password_min_length 2040 based fixed bin(17,0) level 3 dcl 5-33 ref 1166 password_unused_too_long 60(05) based bit(1) level 3 packed unaligned dcl 7-267 ref 3100 period_index 000335 automatic fixed bin(17,0) dcl 156 set ref 2479* 2480 2480 person_id 42 based char(22) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1880* person_id 52 based char(22) level 2 in structure "login_server_dial_request" dcl 7-170 in procedure "ls_validate_user_" set ref 938* person_id 46 based char(22) level 2 in structure "login_server_validate_request" dcl 7-76 in procedure "ls_validate_user_" set ref 866* 1242* person_id 72 based char(22) level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 938 1268* 1288 1880 2383* 2407* 2466* 2484* 2927* 2981* 3044* person_id 44 based char(22) level 2 in structure "login_server_operator_request" dcl 7-214 in procedure "ls_validate_user_" set ref 2306* person_id 15 based char(22) level 2 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" ref 887 1268 person_name 001573 automatic char(22) unaligned dcl 205 set ref 1242 2555* 2561* preempt 001601 automatic bit(1) dcl 206 in procedure "ls_validate_user_" set ref 1905 2643* preempt 67(03) based bit(1) level 4 in structure "login_server_process_request" packed unaligned dcl 7-103 in procedure "ls_validate_user_" set ref 1905* preempt_given 66(03) based bit(1) level 4 packed unaligned dcl 7-103 set ref 1898* preempt_specified 001602 automatic bit(1) dcl 207 set ref 1759* 1898 2541* 2642* 2780 previous_login_info 30 based structure level 2 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" ref 1274 previous_login_info 112 based structure level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 1274* process_code 002420 automatic fixed bin(35,0) dcl 2897 set ref 2918* 2920 2923 2932* 2939* 2944 process_group_id 6 based char(32) level 2 in structure "login_server_dial_response" dcl 7-366 in procedure "ls_validate_user_" ref 977 process_group_id 2 based char(32) level 2 in structure "ls_process_info" packed unaligned dcl 11-19 in procedure "ls_validate_user_" set ref 977* 996* 2354* 3003* process_group_id 12 based char(32) level 3 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" ref 3003 process_group_id 6 based char(32) level 2 in structure "login_server_operator_response" dcl 7-426 in procedure "ls_validate_user_" ref 2354 process_id 22 based bit(36) level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" set ref 983* 2357* 3005* process_id 5 based bit(36) level 3 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" ref 3005 process_id 5 based bit(36) level 2 in structure "login_server_operator_response" dcl 7-426 in procedure "ls_validate_user_" ref 2357 process_id 5 based bit(36) level 2 in structure "login_server_dial_response" dcl 7-366 in procedure "ls_validate_user_" ref 983 process_id 42 based bit(36) level 2 in structure "login_server_disconnect_request" dcl 7-188 in procedure "ls_validate_user_" set ref 2160* process_info 6 based structure array level 2 dcl 7-347 process_info_ptr 12 001054 automatic pointer level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 462* process_info_ptr 12 based pointer level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" ref 854 1277 2963 process_number 41 based fixed bin(17,0) level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 1738* 1887 2405* 2920* 2923* 2974* 3024* process_number 55 based fixed bin(17,0) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1744* 1887* process_number 22 based fixed bin(17,0) level 3 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" set ref 3020* process_number parameter fixed bin(17,0) dcl 1725 in procedure "Connect_loop_process_request" ref 1718 1730 1738 1744 process_number 001603 automatic fixed bin(17,0) dcl 208 in procedure "ls_validate_user_" set ref 1335 1340* 1345 1522* 1523* 1555* 1556* 1630* 1631* 2717* 2724* 2731* process_number parameter fixed bin(17,0) dcl 2072 in procedure "Get_process_number" set ref 2063 2078* 2105* process_overseer 155 based char(168) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1913* process_overseer 001604 automatic char(168) unaligned dcl 209 in procedure "ls_validate_user_" set ref 1762* 1913 2545* 2652* 2780 process_request_ptr 14 001054 automatic pointer level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 464* process_request_ptr 14 based pointer level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 475 475 1308* 1692 1692* 1739 1742 2397 2399 2400* 2937 2937 3057 3057 process_request_size 000336 automatic fixed bin(18,0) dcl 157 set ref 1305* 1752* process_ring 22 based fixed bin(17,0) level 2 dcl 7-366 ref 985 project_id 54 based char(9) level 2 in structure "login_server_validate_request" dcl 7-76 in procedure "ls_validate_user_" set ref 867* 1243* project_id 23 based char(9) level 2 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" ref 888 1270 project_id 100 based char(9) level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 940 1270* 1288 1882 2383* 2408* 2466* 2485* 2927* 2981* 3044* project_id 52 based char(9) level 2 in structure "login_server_operator_request" dcl 7-214 in procedure "ls_validate_user_" set ref 2307* project_id 60 based char(9) level 2 in structure "login_server_dial_request" dcl 7-170 in procedure "ls_validate_user_" set ref 940* project_id 50 based char(9) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1882* project_name 001656 automatic char(9) unaligned dcl 210 set ref 1243 2556* 2564* 2571* 2576* 2773 px 000115 automatic fixed bin(17,0) dcl 2197 set ref 2239* 2240 2241 2242 2243 2245* 2259* 2261 2263 2265* 2265 2265 2265 2265 2265 2265* quit_flag 000337 automatic bit(1) dcl 158 in procedure "ls_validate_user_" set ref 1179* 1181 1200* 1204 1220* 1224 quit_flag 002150 automatic bit(1) dcl 1987 in procedure "Get_initial_password" set ref 1993* 1998 quit_flag parameter bit(1) dcl 2016 in procedure "Get_password" set ref 2012 2024* 2042* rank builtin function dcl 439 ref 532 532 532 532 532 rcp_init_flags based structure level 1 packed unaligned dcl 6-8 real_execute_line 26 based entry variable level 3 dcl 13-32 set ref 564* 794 recent_wakeup_count 34 based fixed bin(17,0) level 3 dcl 13-32 set ref 563* 1806* 1810* 1810 1811 1815* recent_wakeup_time 32 based fixed bin(71,0) level 3 dcl 13-32 set ref 562* 1803 1807* 1814* reply_channel 22 001054 automatic fixed bin(71,0) level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 479 479* 586* 642* reply_channel 22 based fixed bin(71,0) level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" ref 3262 reply_code 000104 automatic fixed bin(35,0) dcl 3248 in procedure "Send_request_to_initializer" set ref 3282* 3284 3287* 3289* 3317* 3319* 3340 reply_code parameter fixed bin(35,0) dcl 2893 in procedure "Process_process_response" set ref 2886 2904 2906* reply_code parameter fixed bin(35,0) dcl 3069 in procedure "Process_validate_response" set ref 3066 3071 3073* reply_event_channel 6 based fixed bin(71,0) level 2 dcl 7-54 set ref 3262* reply_handle 10 based bit(72) level 2 dcl 7-54 set ref 3263* request_invalid 1 based bit(1) level 3 packed unaligned dcl 7-445 ref 3284 request_name 000340 automatic char(32) unaligned dcl 159 set ref 1045* 1118* 1484* 1488 1938 request_size 000100 automatic fixed bin(18,0) dcl 3244 set ref 3257* 3270* 3271 request_type 4 based fixed bin(17,0) level 2 dcl 7-54 set ref 1690 3259* request_version 2 based char(8) level 2 dcl 7-54 set ref 3260* response_expected parameter fixed bin(17,0) dcl 3240 set ref 3230 3266 3314 3321 3327* 3327 3341 3344* response_ptr parameter pointer dcl 3241 set ref 3230 3334* 3339* response_sent 1(01) based bit(1) level 3 packed unaligned dcl 7-445 ref 3292 result_password parameter char(8) dcl 2015 set ref 2012 2023* 2054* returned_modes 003036 automatic char(32) unaligned dcl 3359 set ref 3364* 3366* ring 20 based fixed bin(17,0) level 2 in structure "login_server_operator_response" dcl 7-426 in procedure "ls_validate_user_" ref 2358 ring 001661 automatic fixed bin(17,0) dcl 211 in procedure "ls_validate_user_" set ref 1907 2660* 2661 2661 2661* ring_specified 001662 automatic bit(1) dcl 212 set ref 1759* 1900 2541* 2663* 2780 rp_options based structure level 1 dcl 16-6 rtrim builtin function dcl 439 ref 1938 1940 1940 2029 2240 2241 2242 save 001663 automatic bit(1) dcl 213 set ref 1904 2693* 2699* save_given 66(02) based bit(1) level 4 packed unaligned dcl 7-103 set ref 1897* save_on_disconnect 67(02) based bit(1) level 4 packed unaligned dcl 7-103 set ref 1904* save_specified 001664 automatic bit(1) dcl 214 set ref 1759* 1897 2541* 2692* 2698* 2780 sci_ptr 000350 automatic pointer dcl 160 in procedure "ls_validate_user_" set ref 472* 483 483* 489* 501 503* 511* 525* 535* 548* 564* 570* 583* 623* 626* 644* 687* 791* 792* 817* 820* 821* 844* 847* 952* 1005* 1038* 1045* 1053* 1059* 1067* 1081* 1084* 1086* 1090* 1111* 1118* 1133* 1293* 1382* 1385* 1386* 1401* 1417* 1419* 1427* 1430* 1431* 1439* 1450* 1453* 1454* 1462* 1479* 1515* 1532* 1548* 1565* 1575* 1580* 1583* 1585* 1600* 1613* 1623* 1842* 1843* 1854* 1855* 1935* 1940* 1943* 2079* 2084* 2088* 2100* 2103* 2106* 2181* 2219* 2323* 2344* 2392* 2413* 2414* 2425* 2426* 2462* 2480* 2488* 2510* 2520* 2524* 2583* 2661* 2674* 2753* 2758* 2762* 2769* 2773* 2777* 2780* 2795* 2824* 2833* 2840* 2844* 2906* 2946* 3061* 3073* 3093* 3108* 3117* sci_ptr 2 001054 automatic pointer level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 501* sci_ptr 2 based pointer level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" ref 687 scramble_ 000100 constant entry external dcl 260 ref 1170 2054 search builtin function dcl 439 ref 2029 second_new_password 000352 automatic char(8) dcl 161 set ref 1179* 1189 1220* 1232 seconds parameter fixed bin(17,0) dcl 2445 ref 2442 2450 seconds_dec 002240 automatic fixed dec(7,0) dcl 2447 set ref 2450* 2451 send_initial_string 11 003076 automatic bit(1) level 3 packed unaligned dcl 3398 set ref 3405* send_ls_request_ 000102 constant entry external dcl 261 ref 3270 send_mask 002627 automatic bit(1) unaligned dcl 3194 set ref 3198* 3200 3203* 3208 3224 server_handle 16 001054 automatic bit(72) level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 594* server_handle 16 based bit(72) level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" ref 855 1280 3263 3298 server_handle 20 based bit(72) level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" set ref 855* 1280* service_entries_ptr 36 based pointer level 2 dcl 9-19 ref 2147 set_modes 11(01) 003076 automatic bit(1) level 3 packed unaligned dcl 3398 set ref 3406* set_term_type_info based structure level 1 dcl 14-8 size builtin function dcl 439 ref 876 876 947 947 1261 1261 1305 1609 1609 1752 2163 2163 2215 2215 2318 2318 special_length 003136 automatic fixed bin(21,0) dcl 3440 set ref 3450* 3451 3451 special_message 50 based char(128) level 2 packed unaligned dcl 1-55 set ref 3448 3451 special_msg based char unaligned dcl 3441 set ref 3451* ssu_$abort_line 000104 constant entry external dcl 262 ref 821 1386 1419 1431 1454 1585 1600 2084 2100 2103 2106 2462 2480 2488 2510 2520 2524 2583 2661 2674 2753 2758 2762 2769 2773 2777 2780 2795 2824 2833 2840 2844 ssu_$abort_subsystem 000106 constant entry external dcl 263 ref 623 1005 1059 1293 2181 2344 2392 2946 3061 3108 3117 ssu_$add_info_dir 000110 constant entry external dcl 264 ref 1855 2426 ssu_$add_request_table 000112 constant entry external dcl 265 ref 511 1843 2414 ssu_$arg_count 000114 constant entry external dcl 266 ref 820 1084 1385 1430 1453 1580 2079 ssu_$arg_list_ptr 000116 constant entry external dcl 267 ref 847 1133 ssu_$arg_ptr 000120 constant entry external dcl 268 ref 1401 1439 1462 1583 2088 ssu_$cpescape_disabled 000122 constant entry external dcl 269 ref 503 503 ssu_$create_invocation 000124 constant entry external dcl 270 ref 489 ssu_$delete_info_dir 000126 constant entry external dcl 271 ref 1854 2425 ssu_$delete_request_table 000130 constant entry external dcl 272 ref 1842 2413 ssu_$destroy_invocation 000132 constant entry external dcl 273 ref 483 644 ssu_$execute_line 000134 constant entry external dcl 274 ref 1090 1940 ssu_$get_info_ptr 000140 constant entry external dcl 276 ref 792 ssu_$get_procedure 000142 constant entry external dcl 277 ref 564 ssu_$get_request_name 000136 constant entry external dcl 275 ref 1045 1118 ssu_$get_request_processor_options 000144 constant entry external dcl 278 ref 525 ssu_$listen 000146 constant entry external dcl 279 ref 626 ssu_$print_message 000150 constant entry external dcl 280 ref 952 1613 1935 1943 2219 2323 2906 3073 3093 ssu_$set_procedure 000152 constant entry external dcl 281 ref 503 548 570 ssu_$set_prompt_mode 000154 constant entry external dcl 282 ref 583 ssu_$set_request_processor_options 000156 constant entry external dcl 283 ref 535 ssu_et_$program_interrupt 000446 external static fixed bin(35,0) dcl 393 ref 1092 ssu_et_$request_line_aborted 000450 external static fixed bin(35,0) dcl 393 ref 1092 ssu_et_$subsystem_aborted 000452 external static fixed bin(35,0) dcl 393 ref 634 1092 ssu_requests_$help 000160 constant entry external dcl 284 ref 1086 start_event_channel 24 based fixed bin(71,0) level 3 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" ref 3004 start_event_channel 12 based fixed bin(71,0) level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" set ref 979* 2355* 3004* start_event_channel 20 based fixed bin(71,0) level 2 in structure "login_server_dial_response" dcl 7-366 in procedure "ls_validate_user_" ref 979 start_index 303 based fixed bin(21,0) array level 4 dcl 7-103 set ref 1970* state 35 based fixed bin(17,0) level 2 dcl 13-32 set ref 685 740 1656 1660 1663 1667 1670* status_code 21 based fixed bin(35,0) level 2 in structure "login_server_termination_response" dcl 7-385 in procedure "ls_validate_user_" set ref 3317* status_code 4 based fixed bin(35,0) level 2 in structure "login_server_dial_response" dcl 7-366 in procedure "ls_validate_user_" set ref 960 962* status_code 4 based fixed bin(35,0) level 2 in structure "login_server_operator_response" dcl 7-426 in procedure "ls_validate_user_" set ref 2330 2332* status_code 14 based fixed bin(35,0) level 2 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" set ref 3090 3092* status_code 4 based fixed bin(35,0) level 3 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" set ref 2916 2918* string builtin function dcl 439 set ref 872* 3297* stti_version_1 constant fixed bin(17,0) initial dcl 14-5 ref 3403 subr_name 000354 automatic char(64) unaligned dcl 162 set ref 507* 515* 528* 538* 551* 567* 573* 590* 601* 648* 3152* substr builtin function dcl 439 set ref 1938 1972* 2880 3171 3171 subsystem 227 based char(168) level 3 in structure "login_server_process_request" dcl 7-103 in procedure "ls_validate_user_" set ref 1914* subsystem 001665 automatic char(168) unaligned dcl 215 in procedure "ls_validate_user_" set ref 1762* 1914 2545* 2655* 2780 suffix 002424 automatic char(4) unaligned dcl 2901 set ref 3032* 3034* 3035* switch_flags 66 based structure level 3 dcl 7-103 switch_values 67 based structure level 3 dcl 7-103 sysid 003140 automatic char(8) unaligned dcl 3442 set ref 3454* 3457* system_area based area(1024) dcl 226 ref 475 890 953 967 1002 1284 1307 1696 1702 1704 1706 1708 1710 1753 2211 2276 2314 2324 2339 2367 2399 2907 2936 2937 2956 2990 3056 3057 3074 3104 3271 3323 system_areap 000010 internal static pointer initial dcl 434 set ref 448 448* 475 890 953 967 1002 1284 1307 1696 1702 1704 1706 1708 1710 1753 2211 2276 2314 2324 2339 2367 2399 2907 2936 2937 2956 2990 3056 3057 3074 3104 3271 3300* 3323 system_info_$installation_id 000162 constant entry external dcl 285 ref 3455 system_info_$sysid 000164 constant entry external dcl 286 ref 3454 tell_initializer parameter bit(1) dcl 2139 in procedure "Hangup" ref 2132 2143 2156 tell_initializer parameter bit(1) dcl 2177 in procedure "Hangup_with_error" set ref 2171 2180* term_type 2 002574 automatic char(32) level 2 packed unaligned dcl 3146 set ref 3158 3177 terminal_id 36 based char(4) level 4 in structure "login_server_validate_request" dcl 7-76 in procedure "ls_validate_user_" set ref 1245* terminal_id 002573 automatic char(4) unaligned dcl 3144 in procedure "Read_answerback" set ref 3171* 3175 3175 3175* terminal_id 70 001054 automatic char(4) level 3 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 611* terminal_id 56 based char(4) level 3 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" set ref 3126* terminal_id 36 based char(4) level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" set ref 611 990* 2361* 3010* terminal_id 124 based char(4) level 3 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 3049* terminal_id 70 based char(4) level 3 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 990 996* 1245 1434* 2361 3010 3044* 3157* 3386* terminal_id 40 based char(4) array level 4 in structure "login_server_list_response" dcl 7-347 in procedure "ls_validate_user_" set ref 2242 2265* terminal_id 001737 automatic char(4) unaligned dcl 216 in procedure "ls_validate_user_" set ref 1149 1149* 2545* 2607* terminal_id 55 based char(4) level 4 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" set ref 2927* terminal_info based structure level 1 dcl 17-6 terminal_info_set 25(01) based bit(1) level 3 packed unaligned dcl 11-19 set ref 606 994* 2363* 3012* terminal_info_version constant fixed bin(17,0) initial dcl 17-16 ref 3148 terminal_type 60 001054 automatic char(32) level 3 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" set ref 610* terminal_type 26 based char(32) level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" set ref 610 988* 2360* 3009* terminal_type 46 based char(32) level 3 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" set ref 3126* terminal_type 60 based char(32) level 3 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 988 996* 1457* 2360 3009 3044* 3158* 3413* terminal_type 001740 automatic char(32) unaligned dcl 217 in procedure "ls_validate_user_" set ref 1144 1144* 2545* 2610* terminal_type 30 based char(32) array level 4 in structure "login_server_list_response" dcl 7-347 in procedure "ls_validate_user_" set ref 2241 2265* terminal_type 45 based char(32) level 4 in structure "login_server_process_response" dcl 7-303 in procedure "ls_validate_user_" set ref 2927* terminal_type 003066 automatic char(32) unaligned dcl 3396 in procedure "Set_terminal_type" set ref 3400* 3404 3413 terminal_type 114 based char(32) level 3 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 3049* terminate_event_channel 42 based fixed bin(71,0) level 2 in structure "login_server_dial_request" dcl 7-170 in procedure "ls_validate_user_" set ref 933* terminate_event_channel 34 based fixed bin(71,0) level 2 in structure "ls_connection_desc" dcl 9-19 in procedure "ls_validate_user_" ref 869 933 1247 2304 terminate_event_channel 44 based fixed bin(71,0) level 2 in structure "login_server_validate_request" dcl 7-76 in procedure "ls_validate_user_" set ref 869* 1247* terminate_event_channel 42 based fixed bin(71,0) level 2 in structure "login_server_operator_request" dcl 7-214 in procedure "ls_validate_user_" set ref 2304* this_arg 000374 automatic fixed bin(17,0) dcl 163 set ref 1582* 1583* 1967* 1968* 2087* 2088* 2124* 2125* 2472* 2473* 2477* 2581* 2582* 2588* 2824 2830* 2830 2832* 2858 2861 2866* 2866 time 44 based fixed bin(71,0) level 3 in structure "login_server_validate_response" dcl 7-267 in procedure "ls_validate_user_" set ref 3126* time 112 based fixed bin(71,0) level 3 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 3049* timer_manager_$alarm_call 000166 constant entry external dcl 287 ref 701 757 timer_manager_$reset_alarm_call 000170 constant entry external dcl 288 ref 706 763 total_length 002220 automatic fixed bin(21,0) dcl 2121 set ref 2123* 2126* 2126 2129 trace 16(02) based bit(1) level 3 packed unaligned dcl 10-24 ref 630 2152 translate builtin function dcl 439 ref 3400 ttt_info_$decode_answerback 000172 constant entry external dcl 289 ref 3171 type_col 000105 automatic fixed bin(17,0) dcl 2192 set ref 2250* 2251 2256* 2265* type_len 000113 automatic fixed bin(17,0) dcl 2195 set ref 2236* 2241* 2241 2251 unspec builtin function dcl 439 set ref 459* usage_type 24 based fixed bin(17,0) level 2 dcl 11-19 set ref 987* 2359* 3006* user_connection_info based structure level 1 dcl 7-65 in procedure "ls_validate_user_" user_connection_info 44 based structure level 2 in structure "ls_validate_info" dcl 13-32 in procedure "ls_validate_user_" set ref 874 942 1244 1608 1745 1884 2161 2203 2309 user_connection_info 44 001054 automatic structure level 2 in structure "auto_validate_info" dcl 174 in procedure "ls_validate_user_" user_message based bit(36) array dcl 3252 ref 3323 user_message_$read_message 000174 constant entry external dcl 290 ref 3300 user_person_id 63 based char(22) level 2 dcl 7-170 set ref 944* user_project_id 71 based char(9) level 2 dcl 7-170 set ref 945* user_specified 000375 automatic bit(1) unaligned dcl 164 set ref 857 2467* 2496* 2524 ut_header based structure level 1 dcl 19-16 validation_failures 111 based fixed bin(17,0) level 2 dcl 13-32 set ref 2406* 3112* 3112 3114 value parameter char unaligned dcl 2809 set ref 2802 2836* version 003076 automatic fixed bin(17,0) level 2 in structure "auto_set_term_info" dcl 3398 in procedure "Set_terminal_type" set ref 3403* version 002574 automatic fixed bin(17,0) level 2 in structure "auto_terminal_info" dcl 3146 in procedure "Read_answerback" set ref 3148* version based char(8) level 2 in structure "as_user_message_info" dcl 2-8 in procedure "ls_validate_user_" set ref 3296* version based char(8) level 2 in structure "ls_process_info" dcl 11-19 in procedure "ls_validate_user_" ref 453 virtual_channel 55 based char(32) level 2 dcl 7-214 set ref 2308* virtual_channel_name 001750 automatic char(32) unaligned dcl 218 set ref 1288* 2545* 2750* 2777 wakeup_loop 26 based structure level 2 dcl 13-32 warn 001760 automatic bit(1) dcl 219 in procedure "ls_validate_user_" set ref 1902 2622* 2628* warn 67 based bit(1) level 4 in structure "login_server_process_request" packed unaligned dcl 7-103 in procedure "ls_validate_user_" set ref 1902* warn_given 66 based bit(1) level 4 packed unaligned dcl 7-103 set ref 1895* warn_specified 001761 automatic bit(1) dcl 220 set ref 1759* 1895 2541* 2621* 2627* 2780 NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABSOLUTE_MICROSECONDS internal static bit(2) initial unaligned dcl 18-11 ABSOLUTE_SECONDS internal static bit(2) initial unaligned dcl 18-12 ACTIVE_STRING_MODIFIER internal static fixed bin(9,0) initial unsigned dcl 3-6 AEP_BIN_DATA_CLASS internal static varying char(16) initial dcl 4-46 AEP_ENTRY_TYPE internal static fixed bin(17,0) initial dcl 4-22 AEP_NO_CONVERT_DATA_TYPE internal static fixed bin(17,0) initial dcl 4-52 AEP_UNCONVERTED_DATA_CLASS internal static varying char(16) initial dcl 4-47 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 1-51 AT_NORMAL internal static char(8) initial unaligned dcl 1-116 AT_SHUTDOWN internal static char(8) initial unaligned dcl 1-116 AT_SPECIAL internal static char(8) initial unaligned dcl 1-116 Automatic_authentication internal static fixed bin(17,0) initial dcl 6-16 BEGIN_ACTIVE_STRING_1 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ACTIVE_STRING_2 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ACTIVE_STRING_3 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ACTIVE_STRING_4 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ACTIVE_STRING_5 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ACTIVE_STRING_6 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ACTIVE_STRING_7 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ACTIVE_STRING_8 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ITERATION_1 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ITERATION_2 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ITERATION_3 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ITERATION_4 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ITERATION_5 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ITERATION_6 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ITERATION_7 internal static fixed bin(9,0) initial unsigned dcl 3-6 BEGIN_ITERATION_8 internal static fixed bin(9,0) initial unsigned dcl 3-6 COMMAND_SEPARATOR internal static fixed bin(9,0) initial unsigned dcl 3-6 COMMAND_SEPARATOR_OR_WHITESPACE internal static fixed bin(9,0) initial unsigned dcl 3-6 COMPOUND_TOKEN internal static fixed bin(9,0) initial unsigned dcl 3-6 CXI_CALLER_TYPE internal static fixed bin(17,0) initial dcl 4-28 DSAC_CALLER_TYPE internal static fixed bin(17,0) initial dcl 4-30 DSA_BIN_DATA_CLASS internal static varying char(16) initial dcl 4-48 END_ACTIVE_STRING_1 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ACTIVE_STRING_2 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ACTIVE_STRING_3 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ACTIVE_STRING_4 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ACTIVE_STRING_5 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ACTIVE_STRING_6 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ACTIVE_STRING_7 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ACTIVE_STRING_8 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ITERATION_1 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ITERATION_2 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ITERATION_3 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ITERATION_4 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ITERATION_5 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ITERATION_6 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ITERATION_7 internal static fixed bin(9,0) initial unsigned dcl 3-6 END_ITERATION_8 internal static fixed bin(9,0) initial unsigned dcl 3-6 ERROR_ENTRY_TYPE internal static fixed bin(17,0) initial dcl 4-23 FATAL_LOG_SEVERITY internal static fixed bin(17,0) initial dcl 4-42 LOGIN_SERVER_DIAL_RESPONSE_VERSION_1 internal static char(8) initial unaligned dcl 7-378 LOGIN_SERVER_LIST_RESPONSE_VERSION_1 internal static char(8) initial unaligned dcl 7-360 LOGIN_SERVER_NEW_PROC_RESPONSE_VERSION_1 internal static char(8) initial unaligned dcl 7-420 LOGIN_SERVER_OPERATOR_RESPONSE_VERSION_1 internal static char(8) initial unaligned dcl 7-438 LOGIN_SERVER_PROCESS_RESPONSE_VERSION_1 internal static char(8) initial unaligned dcl 7-341 LOGIN_SERVER_TERMINATION_RESPONSE_VERSION_1 internal static char(8) initial unaligned dcl 7-407 LS_CONNECTION_DESC_V1 internal static char(8) initial unaligned dcl 9-35 LS_CP_INFO_V1 internal static char(8) initial unaligned dcl 10-42 LS_DIAL_OUT_USAGE internal static fixed bin(17,0) initial dcl 12-14 LS_ENDPOINT_USAGE internal static fixed bin(17,0) initial dcl 12-14 LS_ENTRIES_V1 internal static char(8) initial unaligned dcl 8-75 LS_NEW_PROC_RESPONSE internal static fixed bin(17,0) initial dcl 7-228 LS_REQUEST_TYPES internal static char(10) initial array unaligned dcl 7-40 LS_SLAVE_ATTACH_USAGE internal static fixed bin(17,0) initial dcl 12-14 LS_USAGE_VALUES internal static varying char(16) initial array dcl 12-22 LS_VALIDATE_OPTIONS_V1 internal static char(8) initial unaligned dcl 11-51 LS_VALIDATE_RESPONSE_VERSION_1 internal static char(8) initial unaligned dcl 7-297 Manual_authentication internal static fixed bin(17,0) initial dcl 6-16 NETWORK_CONNECTION_DSA_FILE_TRANSFER internal static fixed bin(17,0) initial dcl 7-471 No_authentication internal static fixed bin(17,0) initial dcl 6-16 Nominal_authentication internal static fixed bin(17,0) initial dcl 6-16 PROMPT internal static bit(1) initial unaligned dcl 15-6 PROMPT_AFTER_NULL_LINES internal static bit(2) initial unaligned dcl 15-9 PROMPT_IF_TYPEAHEAD internal static bit(3) initial unaligned dcl 15-12 QUOTE_CHARACTER internal static fixed bin(9,0) initial unsigned dcl 3-6 SC_CALLER_TYPE internal static fixed bin(17,0) initial dcl 4-29 SERIOUS_LOG_SEVERITY internal static fixed bin(17,0) initial dcl 4-41 SINGLE_TOKEN internal static fixed bin(9,0) initial unsigned dcl 3-6 TM_CALLER_TYPE internal static fixed bin(17,0) initial dcl 4-33 TRACE_ENTRY_TYPE internal static fixed bin(17,0) initial dcl 4-24 UFT_SYSTEM_CALLER_TYPE internal static fixed bin(17,0) initial dcl 4-32 UFT_USER_CALLER_TYPE internal static fixed bin(17,0) initial dcl 4-31 USER_CALLER_TYPE internal static fixed bin(17,0) initial dcl 4-35 UTE_SIZE internal static fixed bin(17,0) initial dcl 1-120 WARN_LOG_SEVERITY internal static fixed bin(17,0) initial dcl 4-40 WHITESPACE internal static fixed bin(9,0) initial unsigned dcl 3-6 authentication_level_names internal static char(12) initial array unaligned dcl 6-21 installation_parms_version_1 internal static fixed bin(17,0) initial dcl 5-37 installation_parms_version_2 internal static fixed bin(17,0) initial dcl 5-38 login_server_list_response_n_processes automatic fixed bin(17,0) dcl 7-358 login_server_new_proc_response based structure level 1 dcl 7-414 ls_process_response_accounting_message_length automatic fixed bin(17,0) dcl 7-339 rifp automatic pointer dcl 6-6 rp_options_ptr automatic pointer dcl 16-16 sttip automatic pointer dcl 14-6 terminal_info_ptr automatic pointer dcl 17-15 NAMES DECLARED BY EXPLICIT CONTEXT. ACTUALLY_LOGIN 005126 constant label dcl 1128 ref 1491 CHECK_GENERATED_PASSWORD 005401 constant label dcl 1177 ref 1186 1192 CHECK_NUMERIC 020031 constant label dcl 2840 ref 2867 COUNT_WAKEUP_FOR_REQUEST_LINE 003263 constant entry external dcl 785 ref 570 570 Change_state 010335 constant entry internal dcl 1651 ref 470 486 617 628 1374 1714 1864 1931 1939 2437 3197 3267 Check_consistent 017617 constant entry internal dcl 2789 ref 2716 2723 2730 2737 2743 Cleanup_handler 010421 constant entry internal dcl 1684 ref 852 1131 1520 1537 1553 1628 Connect_loop_process_request 010541 constant entry internal dcl 1718 ref 1523 1539 1556 1631 Count_wakeups 010757 constant entry internal dcl 1794 ref 793 3167 3215 DESTROY 003024 constant label dcl 642 ref 653 ENTER_JOIN 004552 constant label dcl 1038 ref 1030 Enter_connect_loop 011070 constant entry internal dcl 1829 ref 1341 1349 1357 1734 2278 2909 2957 2996 Fill_in_process_request 011403 constant entry internal dcl 1869 ref 1313 1764 GET_NEW_PASSWORD 005456 constant label dcl 1198 ref 1209 1235 GET_VALUE_COMMON 017667 constant label dcl 2824 ref 2815 Get_and_process_login_args 011565 constant entry internal dcl 1922 ref 1139 Get_arg_args 012017 constant entry internal dcl 1949 ref 1312 Get_initial_password 012114 constant entry internal dcl 1981 ref 861 1159 Get_numeric_value 017663 constant entry internal dcl 2817 ref 2660 Get_optional_numeric_arg 020161 constant entry internal dcl 2850 ref 2717 2724 2731 Get_password 012177 constant entry internal dcl 2012 ref 1179 1200 1220 1993 Get_process_number 012421 constant entry internal dcl 2063 ref 1522 1555 1630 Get_total_arg_length 012747 constant entry internal dcl 2114 ref 1303 Get_value 017650 constant entry internal dcl 2802 ref 2495 2508 2604 2607 2610 2637 2649 2652 2655 2672 2750 Hangup 013012 constant entry internal dcl 2132 ref 496 651 1056 2180 2343 2390 2945 3107 3116 Hangup_no_message 013031 constant entry internal dcl 2143 ref 599 621 3153 Hangup_with_error 013241 constant entry internal dcl 2171 ref 692 969 1819 1849 2420 3165 3212 3279 3289 3308 3319 3331 3346 LOGIN_JOIN 005076 constant label dcl 1120 ref 1046 LOGIN_TIMEOUT 003120 constant entry external dcl 682 ref 701 701 706 706 LOGIN_TIMEOUT_CHECK 010115 constant entry internal dcl 698 ref 1665 LOGIN_TIMEOUT_CHECK_stop 010150 constant entry internal dcl 704 ref 1667 List_request 013276 constant entry internal dcl 2186 ref 1315 1569 Login_operator 014155 constant entry internal dcl 2283 ref 924 1288 Logout 014527 constant entry internal dcl 2373 ref 1615 2939 2993 Minutes 015205 constant entry internal dcl 2442 ref 690 690 690 NEW_PASSWORD_AGAIN 005532 constant label dcl 1218 ref 1229 NO_MORE_CONTROL_ARGS 017316 constant label dcl 2758 ref 2589 NO_SETUP 003045 constant label dcl 648 ref 508 516 529 539 552 568 574 591 602 3154 PRINT_BANNER_IF_CHANGED 003234 constant entry external dcl 728 ref 757 757 763 763 PRINT_CHANGED_BANNER 010170 constant entry internal dcl 737 ref 732 Parse_dial_args 015224 constant entry internal dcl 2455 ref 848 Parse_login_args 016010 constant entry internal dcl 2529 ref 1143 Print_password_mask 020232 constant entry internal dcl 2874 ref 3208 Process_process_response 020273 constant entry internal dcl 2886 ref 1324 1364 1771 Process_validate_response 021704 constant entry internal dcl 3066 ref 881 1264 REGENERATE_PASSWORD 005305 constant label dcl 1167 ref 1171 REREAD_PASSWORD 012116 constant label dcl 1991 ref 2004 RESTART_DIAL 006411 constant label dcl 1370 ref 863 908 916 925 955 969 RESTART_LOGIN 006411 constant label dcl 1370 ref 1160 1181 1202 1204 1215 1222 1224 Read_answerback 022271 constant entry internal dcl 3135 ref 606 Read_password 022541 constant entry internal dcl 3186 ref 2027 Send_request_to_initializer 023030 constant entry internal dcl 3230 ref 876 947 1261 1321 1361 1609 1768 2163 2215 2318 Set_modes 023706 constant entry internal dcl 3353 ref 1013 1021 1146 1402 Set_term_id 024035 constant entry internal dcl 3376 ref 1149 1440 3175 Set_terminal_type 024135 constant entry internal dcl 3391 ref 1144 1463 3177 TRY_AGAIN 006411 constant label dcl 1370 ref 1125 1139 1139 1290 3076 3114 UNRECOGNIZED_ARG 017262 constant label dcl 2753 ref 2666 USER_REQUIRED 004063 constant label dcl 913 ref 897 WATCH_FOR_CHANGED_BANNER 010254 constant entry internal dcl 754 ref 749 1658 WATCH_FOR_CHANGED_BANNER_stop 010310 constant entry internal dcl 761 ref 1660 Write_greeting_message 024260 constant entry internal dcl 3434 ref 615 746 1070 2436 access_class 003332 constant entry external dcl 812 connect 007242 constant entry external dcl 1510 create 007324 constant entry external dcl 1527 destroy 007400 constant entry external dcl 1543 dial 003517 constant entry external dcl 835 echo 004471 constant entry external dcl 1008 enter 004527 constant entry external dcl 1024 enterp 004542 constant entry external dcl 1033 hangup 004605 constant entry external dcl 1048 hello 004654 constant entry external dcl 1062 help 004676 constant entry external dcl 1073 list 007456 constant entry external dcl 1560 login 005037 constant entry external dcl 1103 logout 007504 constant entry external dcl 1572 ls_validate_user_ 001505 constant entry external dcl 101 modes 006433 constant entry external dcl 1377 new_proc 010037 constant entry external dcl 1618 noecho 004507 constant entry external dcl 1018 slave 006650 constant entry external dcl 1414 terminal_id 006712 constant entry external dcl 1422 terminal_type 007036 constant entry external dcl 1445 unknown_request 007165 constant entry external dcl 1476 ref 548 548 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 30254 30730 25443 30264 Length 32432 25443 454 1466 2611 2 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME ls_validate_user_ 2924 external procedure is an external procedure. on unit on line 473 72 on unit on unit on line 596 70 on unit on unit on line 619 72 on unit LOGIN_TIMEOUT_CHECK internal procedure shares stack frame of internal procedure Change_state. PRINT_CHANGED_BANNER internal procedure shares stack frame of external procedure ls_validate_user_. WATCH_FOR_CHANGED_BANNER 78 internal procedure is called by several nonquick procedures. on unit on line 852 64 on unit on unit on line 1131 64 on unit on unit on line 1520 64 on unit on unit on line 1537 64 on unit on unit on line 1553 64 on unit on unit on line 1628 64 on unit Change_state 86 internal procedure is called by several nonquick procedures. Cleanup_handler 72 internal procedure is called by several nonquick procedures. Connect_loop_process_request internal procedure shares stack frame of external procedure ls_validate_user_. Count_wakeups internal procedure shares stack frame of external procedure ls_validate_user_. Enter_connect_loop 118 internal procedure is called by several nonquick procedures. Fill_in_process_request internal procedure shares stack frame of external procedure ls_validate_user_. Get_and_process_login_args internal procedure shares stack frame of external procedure ls_validate_user_. Get_arg_args internal procedure shares stack frame of external procedure ls_validate_user_. Get_initial_password internal procedure shares stack frame of external procedure ls_validate_user_. Get_password internal procedure shares stack frame of external procedure ls_validate_user_. Get_process_number internal procedure shares stack frame of external procedure ls_validate_user_. Get_total_arg_length internal procedure shares stack frame of external procedure ls_validate_user_. Hangup 142 internal procedure is called by several nonquick procedures. Hangup_with_error 70 internal procedure is called by several nonquick procedures. List_request 322 internal procedure enables or reverts conditions. on unit on line 2209 64 on unit Login_operator 150 internal procedure enables or reverts conditions. on unit on line 2312 64 on unit Logout internal procedure shares stack frame of external procedure ls_validate_user_. Minutes internal procedure shares stack frame of external procedure ls_validate_user_. Parse_dial_args internal procedure shares stack frame of external procedure ls_validate_user_. Check_consistent internal procedure shares stack frame of external procedure ls_validate_user_. Get_value internal procedure shares stack frame of external procedure ls_validate_user_. Print_password_mask internal procedure shares stack frame of external procedure ls_validate_user_. Process_process_response internal procedure shares stack frame of external procedure ls_validate_user_. Process_validate_response internal procedure shares stack frame of external procedure ls_validate_user_. Read_answerback internal procedure shares stack frame of external procedure ls_validate_user_. Read_password internal procedure shares stack frame of external procedure ls_validate_user_. Send_request_to_initializer 156 internal procedure is called by several nonquick procedures. Set_modes internal procedure shares stack frame of external procedure ls_validate_user_. Set_term_id internal procedure shares stack frame of external procedure ls_validate_user_. Set_terminal_type internal procedure shares stack frame of external procedure ls_validate_user_. Write_greeting_message internal procedure shares stack frame of external procedure ls_validate_user_. STORAGE FOR INTERNAL STATIC VARIABLES. LOC IDENTIFIER BLOCK NAME 000010 system_areap ls_validate_user_ STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME List_request 000100 auth_case List_request 000101 auth_col List_request 000102 chn_col List_request 000103 date_col List_request 000104 id_col List_request 000105 type_col List_request 000106 auth_sw List_request 000107 code List_request 000110 chn_len List_request 000111 date_len List_request 000112 id_len List_request 000113 type_len List_request 000114 n_processes List_request 000115 px List_request 000116 auto_list_request List_request Login_operator 000100 auto_operator_request Login_operator Send_request_to_initializer 000100 request_size Send_request_to_initializer 000101 message_name Send_request_to_initializer 000102 message_type Send_request_to_initializer 000103 code Send_request_to_initializer 000104 reply_code Send_request_to_initializer 000106 auto_ls_reply_message Send_request_to_initializer ls_validate_user_ 000100 anonymous ls_validate_user_ 000101 answer ls_validate_user_ 000102 arg_list_ptr ls_validate_user_ 000104 argl ls_validate_user_ 000106 argp ls_validate_user_ 000110 auth_range_string ls_validate_user_ 000310 code ls_validate_user_ 000311 dial_person ls_validate_user_ 000317 dial_project ls_validate_user_ 000322 gpw_length ls_validate_user_ 000323 hangup_flag ls_validate_user_ 000324 help_flag ls_validate_user_ 000325 hold ls_validate_user_ 000326 new_password ls_validate_user_ 000330 new_password_generated ls_validate_user_ 000332 new_password_hyphenated ls_validate_user_ 000335 period_index ls_validate_user_ 000336 process_request_size ls_validate_user_ 000337 quit_flag ls_validate_user_ 000340 request_name ls_validate_user_ 000350 sci_ptr ls_validate_user_ 000352 second_new_password ls_validate_user_ 000354 subr_name ls_validate_user_ 000374 this_arg ls_validate_user_ 000375 user_specified ls_validate_user_ 000376 auto_as_user_message_info ls_validate_user_ 000440 auto_dial_request ls_validate_user_ 000534 auto_hangup_request ls_validate_user_ 000600 auto_logout_request ls_validate_user_ 000642 auto_rp_options ls_validate_user_ 001054 auto_validate_info ls_validate_user_ 001202 auto_validate_request ls_validate_user_ 001265 auth_specified ls_validate_user_ 001266 authorization ls_validate_user_ 001270 brief ls_validate_user_ 001271 brief_specified ls_validate_user_ 001272 cda ls_validate_user_ 001273 cdp ls_validate_user_ 001274 change_password ls_validate_user_ 001275 command_type ls_validate_user_ 001276 first_arg_arg ls_validate_user_ 001277 force ls_validate_user_ 001300 force_specified ls_validate_user_ 001301 generate_password ls_validate_user_ 001302 hold_given ls_validate_user_ 001303 hold_on_destroy ls_validate_user_ 001304 home_dir ls_validate_user_ 001356 immediate ls_validate_user_ 001357 mask_needed ls_validate_user_ 001360 mode_string ls_validate_user_ 001560 no_start_up ls_validate_user_ 001561 number_of_args ls_validate_user_ 001562 operator ls_validate_user_ 001563 outer_module ls_validate_user_ 001573 person_name ls_validate_user_ 001601 preempt ls_validate_user_ 001602 preempt_specified ls_validate_user_ 001603 process_number ls_validate_user_ 001604 process_overseer ls_validate_user_ 001656 project_name ls_validate_user_ 001661 ring ls_validate_user_ 001662 ring_specified ls_validate_user_ 001663 save ls_validate_user_ 001664 save_specified ls_validate_user_ 001665 subsystem ls_validate_user_ 001737 terminal_id ls_validate_user_ 001740 terminal_type ls_validate_user_ 001750 virtual_channel_name ls_validate_user_ 001760 warn ls_validate_user_ 001761 warn_specified ls_validate_user_ 001776 ansp ls_validate_user_ 002000 as_user_message_info_ptr ls_validate_user_ 002002 ip ls_validate_user_ 002004 ls_request_ptr ls_validate_user_ 002006 ls_process_request_n_args ls_validate_user_ 002007 ls_process_request_arg_string_length ls_validate_user_ 002010 ls_response_ptr ls_validate_user_ 002012 ls_reply_message_ptr ls_validate_user_ 002014 login_service_entries_ptr ls_validate_user_ 002016 ls_connection_desc_ptr ls_validate_user_ 002020 ls_cp_info_ptr ls_validate_user_ 002022 ls_process_info_ptr ls_validate_user_ 002024 ls_validate_options_ptr ls_validate_user_ 002026 ls_validate_info_ptr ls_validate_user_ 002046 new_request Connect_loop_process_request 002056 code Count_wakeups 002060 current_time Count_wakeups 002076 login_line Get_and_process_login_args 002127 login_line_read Get_and_process_login_args 002136 current_index Get_arg_args 002137 current_entry Get_arg_args 002150 quit_flag Get_initial_password 002151 help_flag Get_initial_password 002160 error_message Get_password 002200 password Get_password 002220 total_length Get_total_arg_length 002236 minutes Minutes 002240 seconds_dec Minutes 002250 keyword Parse_dial_args 002260 first_control_arg Parse_dial_args 002261 auth_string Parse_dial_args 002400 numeric Get_value 002416 logout Process_process_response 002417 hangup Process_process_response 002420 process_code Process_process_response 002421 cpu_seconds Process_process_response 002422 cpu_minutes Process_process_response 002423 instance Process_process_response 002424 suffix Process_process_response 002425 auth_string Process_process_response 002542 new_term_type Read_answerback 002552 answerback Read_answerback 002572 length_read Read_answerback 002573 terminal_id Read_answerback 002574 auto_terminal_info Read_answerback 002622 password_buff Read_password 002625 length_read Read_password 002626 code Read_password 002627 send_mask Read_password 002636 mode_string Set_modes 003036 returned_modes Set_modes 003046 code Set_modes 003056 code Set_term_id 003066 terminal_type Set_terminal_type 003076 auto_set_term_info Set_terminal_type 003116 installation_id Write_greeting_message 003136 special_length Write_greeting_message 003140 sysid Write_greeting_message THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. fx1_to_fl2 r_g_a r_e_as r_ne_as alloc_char_temp cat_realloc_chars call_ent_var_desc call_ent_var call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 tra_ext_2 mdfx1 mdfx3 enable_op shorten_stack ext_entry ext_entry_desc int_entry divide_fx3 op_alloc_ op_freen_ clock_mac THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. check_password_ convert_authorization_$from_string convert_authorization_$to_string convert_authorization_$to_string_range cu_$arg_count_rel cu_$arg_ptr_rel cv_dec_check_ date_time_$format date_time_$format_max_length dsa_log_manager_$trace_message generate_word_ get_system_free_area_ ioa_ ioa_$nnl iox_$control iox_$get_chars iox_$get_line iox_$modes ipc_$create_ev_chn ipc_$delete_ev_chn ls_convert_as_error_code_ ls_message_$print ls_message_$print_error ls_message_$print_nnl ls_report_internal_error_ ls_report_subr_error_ net_info_$get_field scramble_ send_ls_request_ ssu_$abort_line ssu_$abort_subsystem ssu_$add_info_dir ssu_$add_request_table ssu_$arg_count ssu_$arg_list_ptr ssu_$arg_ptr ssu_$cpescape_disabled ssu_$create_invocation ssu_$delete_info_dir ssu_$delete_request_table ssu_$destroy_invocation ssu_$execute_line ssu_$get_info_ptr ssu_$get_procedure ssu_$get_request_name ssu_$get_request_processor_options ssu_$listen ssu_$print_message ssu_$set_procedure ssu_$set_prompt_mode ssu_$set_request_processor_options ssu_requests_$help system_info_$installation_id system_info_$sysid timer_manager_$alarm_call timer_manager_$reset_alarm_call ttt_info_$decode_answerback user_message_$read_message THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_error_table_$no_connect_aclass as_error_table_$no_such_process_msg error_table_$action_not_performed error_table_$bad_arg error_table_$bad_conversion error_table_$bad_mode error_table_$badopt error_table_$fatal_error error_table_$inconsistent error_table_$long_record error_table_$no_message error_table_$noarg error_table_$smallarg error_table_$timeout error_table_$too_many_args error_table_$unimplemented_version error_table_$user_requested_hangup error_table_$user_requested_logout error_table_$wrong_no_of_args iox_$user_input iox_$user_io ls_data_$suffix ls_data_$teens_suffix ls_message_table_$aclass_banner_msg ls_message_table_$already_logged_in ls_message_table_$authorization ls_message_table_$bad_password_check ls_message_table_$bad_password_format ls_message_table_$connect_requests ls_message_table_$connected ls_message_table_$connected_after_new_proc ls_message_table_$cost_message ls_message_table_$current_modes ls_message_table_$current_terminal_id ls_message_table_$current_terminal_type ls_message_table_$default_auth_changed ls_message_table_$default_project_changed ls_message_table_$dial_connect_msg ls_message_table_$dialed_to_mc ls_message_table_$disconnected_processes ls_message_table_$dropped_by_mc ls_message_table_$generated_password ls_message_table_$generated_password_error ls_message_table_$give_instructions ls_message_table_$greeting_msg ls_message_table_$hangup ls_message_table_$help_gpw_verify ls_message_table_$help_new_password ls_message_table_$help_npw_verify ls_message_table_$help_password ls_message_table_$incorrect_passwords ls_message_table_$last_login ls_message_table_$list_proc_header ls_message_table_$list_process ls_message_table_$login ls_message_table_$login_args ls_message_table_$login_excess_wakeups ls_message_table_$login_requests ls_message_table_$login_timeout ls_message_table_$logout ls_message_table_$logout_disconnected ls_message_table_$multiple_login_msg ls_message_table_$must_give_process_no ls_message_table_$new_password ls_message_table_$new_password_again ls_message_table_$new_password_error ls_message_table_$new_password_indistinct ls_message_table_$no_connect_aclass ls_message_table_$no_disconnected_processes ls_message_table_$no_such_process ls_message_table_$password ls_message_table_$password_changed ls_message_table_$password_expired ls_message_table_$password_format_warning ls_message_table_$password_quit ls_message_table_$password_unused_too_long ls_message_table_$please_try_again ls_message_table_$process_destroyed ls_message_table_$requesting_dial_to_mc ls_message_table_$special_session ls_message_table_$user_required_for_dial ls_ssu_request_tables_$connect_requests ls_ssu_request_tables_$enabled_standard_requests ls_ssu_request_tables_$login_requests ssu_et_$program_interrupt ssu_et_$request_line_aborted ssu_et_$subsystem_aborted LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 1 53 001474 101 001500 444 001513 445 001517 446 001522 448 001525 451 001540 453 001543 455 001550 456 001554 459 001555 460 001560 461 001562 462 001564 463 001565 464 001567 465 001571 466 001576 467 001601 468 001604 469 001612 470 001614 472 001622 473 001624 475 001640 479 001662 483 001676 486 001712 487 001721 489 001722 492 001766 494 001770 496 002032 497 002040 498 002043 501 002044 503 002046 505 002101 507 002103 508 002106 511 002107 513 002126 515 002130 516 002133 525 002134 526 002153 528 002155 529 002160 531 002161 532 002163 535 002247 536 002264 538 002266 539 002271 548 002272 549 002327 551 002331 552 002334 562 002335 563 002340 564 002342 565 002374 567 002376 568 002401 570 002402 571 002440 573 002442 574 002445 583 002446 586 002466 588 002477 590 002501 591 002504 594 002505 596 002512 599 002526 600 002535 601 002542 602 002545 606 002550 610 002562 611 002565 612 002567 615 002571 617 002573 619 002601 621 002615 622 002633 623 002640 624 002650 626 002651 628 002666 630 002674 634 002752 637 002762 639 003021 642 003024 644 003035 646 003044 648 003045 651 003101 652 003107 653 003112 682 003113 684 003134 685 003140 687 003143 688 003145 689 003147 690 003151 692 003220 695 003231 728 003232 731 003250 732 003254 733 003255 785 003256 791 003271 792 003275 793 003306 794 003307 795 003325 812 003326 817 003340 818 003344 820 003347 821 003360 824 003406 825 003411 827 003432 831 003477 833 003514 835 003515 844 003525 845 003531 847 003534 848 003545 849 003546 851 003554 852 003557 854 003601 855 003604 857 003611 859 003613 861 003615 863 003617 866 003621 867 003625 868 003633 869 003636 871 003642 872 003644 873 003645 874 003652 876 003655 881 003703 883 003705 885 003713 887 003716 888 003721 890 003724 891 003726 894 003727 895 003732 897 003740 900 003744 903 004011 905 004013 908 004056 911 004057 913 004063 916 004074 919 004075 922 004101 924 004106 925 004125 927 004127 930 004130 932 004132 933 004136 936 004141 938 004144 940 004147 942 004155 944 004160 945 004163 947 004171 950 004217 952 004221 953 004236 955 004244 960 004245 962 004250 964 004262 965 004274 967 004300 969 004302 976 004315 977 004317 979 004324 981 004326 983 004332 985 004334 987 004336 988 004340 990 004343 992 004345 994 004347 996 004351 1002 004453 1005 004455 1006 004466 1008 004467 1013 004477 1014 004504 1018 004505 1021 004515 1022 004524 1024 004525 1029 004535 1030 004537 1033 004540 1037 004550 1038 004552 1040 004556 1041 004561 1042 004563 1043 004565 1044 004567 1045 004571 1046 004602 1048 004603 1053 004613 1054 004617 1056 004622 1058 004635 1059 004641 1060 004651 1062 004652 1067 004662 1068 004666 1070 004671 1071 004673 1073 004674 1081 004704 1082 004710 1084 004713 1086 004724 1090 004743 1092 004764 1101 005034 1103 005035 1111 005045 1112 005051 1113 005054 1114 005056 1115 005060 1116 005062 1117 005063 1118 005065 1120 005076 1124 005114 1125 005125 1128 005126 1131 005131 1133 005153 1136 005170 1137 005204 1139 005207 1140 005214 1143 005215 1144 005216 1146 005225 1149 005234 1152 005244 1153 005252 1155 005257 1157 005261 1159 005264 1160 005266 1163 005270 1165 005272 1166 005275 1167 005305 1170 005333 1171 005346 1173 005353 1175 005374 1177 005401 1179 005412 1181 005414 1183 005417 1185 005422 1186 005433 1189 005434 1191 005441 1192 005452 1194 005453 1196 005454 1198 005456 1200 005467 1202 005471 1204 005473 1206 005476 1208 005501 1209 005512 1212 005513 1214 005520 1215 005531 1218 005532 1220 005543 1222 005545 1224 005547 1226 005552 1228 005555 1229 005566 1232 005567 1234 005572 1235 005603 1242 005604 1243 005610 1244 005615 1245 005621 1246 005623 1247 005626 1249 005631 1250 005633 1251 005637 1252 005644 1253 005653 1254 005661 1255 005667 1256 005674 1257 005701 1258 005706 1259 005710 1261 005713 1264 005741 1266 005743 1268 005751 1270 005754 1272 005762 1274 005764 1277 005767 1278 005771 1280 005775 1281 006001 1284 006005 1286 006007 1288 006011 1290 006036 1293 006040 1294 006051 1300 006052 1301 006056 1303 006061 1305 006063 1307 006075 1308 006117 1312 006121 1313 006122 1315 006124 1317 006134 1321 006140 1324 006177 1325 006201 1330 006202 1332 006205 1335 006231 1338 006242 1340 006257 1341 006274 1342 006300 1345 006301 1348 006305 1349 006316 1350 006322 1352 006323 1354 006324 1356 006331 1357 006342 1358 006346 1361 006347 1364 006406 1367 006410 1370 006411 1374 006422 1375 006430 1377 006431 1382 006441 1383 006445 1385 006450 1386 006461 1389 006501 1391 006503 1392 006530 1397 006575 1398 006612 1401 006613 1402 006632 1405 006645 1414 006646 1417 006656 1419 006662 1420 006707 1422 006710 1427 006720 1428 006724 1430 006727 1431 006740 1434 006760 1439 007001 1440 007020 1443 007033 1445 007034 1450 007044 1451 007050 1453 007053 1454 007064 1457 007104 1462 007125 1463 007144 1466 007157 1476 007160 1479 007201 1480 007205 1481 007210 1482 007212 1483 007214 1484 007217 1485 007224 1486 007225 1488 007227 1490 007233 1491 007235 1494 007236 1495 007237 1510 007240 1515 007250 1516 007254 1517 007257 1519 007261 1520 007264 1522 007306 1523 007315 1524 007321 1527 007322 1532 007332 1533 007336 1534 007341 1536 007343 1537 007346 1539 007370 1540 007375 1543 007376 1548 007406 1549 007412 1550 007415 1552 007417 1553 007422 1555 007444 1556 007451 1557 007453 1560 007454 1565 007464 1566 007470 1567 007473 1569 007475 1570 007501 1572 007502 1575 007512 1576 007516 1577 007521 1579 007523 1580 007525 1582 007536 1583 007545 1585 007562 1588 007630 1591 007645 1594 007657 1597 007672 1600 007704 1601 007730 1603 007732 1606 007737 1607 007741 1608 007743 1609 007746 1613 007777 1615 010016 1616 010034 1618 010035 1623 010045 1624 010051 1625 010054 1627 010056 1628 010061 1630 010103 1631 010112 1632 010114 698 010115 700 010116 701 010123 703 010147 704 010150 706 010151 707 010167 737 010170 740 010171 742 010175 745 010202 746 010213 747 010215 749 010246 751 010252 754 010253 756 010261 757 010265 759 010306 761 010307 763 010315 764 010333 1651 010334 1656 010342 1658 010351 1660 010362 1663 010372 1665 010403 1667 010407 1670 010412 1672 010417 1684 010420 1687 010426 1690 010433 1692 010437 1696 010446 1700 010462 1702 010467 1704 010475 1706 010507 1708 010520 1710 010525 1714 010531 1716 010540 1718 010541 1730 010543 1733 010554 1734 010565 1735 010571 1738 010572 1739 010575 1741 010601 1742 010602 1743 010604 1744 010606 1745 010610 1747 010614 1750 010615 1751 010616 1752 010617 1753 010631 1754 010653 1759 010655 1762 010666 1764 010702 1767 010711 1768 010720 1771 010754 1772 010756 1794 010757 1800 010760 1801 010763 1802 010765 1803 010767 1806 010776 1807 011000 1808 011002 1810 011003 1811 011004 1814 011011 1815 011013 1817 011014 1818 011044 1819 011055 1822 011066 1829 011067 1836 011075 1838 011112 1840 011122 1842 011127 1843 011145 1844 011167 1846 011172 1849 011235 1854 011247 1855 011273 1856 011324 1861 011367 1864 011373 1866 011402 1869 011403 1878 011405 1880 011413 1882 011416 1884 011424 1886 011427 1887 011431 1889 011433 1895 011437 1896 011443 1897 011450 1898 011455 1899 011462 1900 011467 1901 011473 1902 011475 1903 011501 1904 011506 1905 011513 1906 011520 1907 011525 1908 011527 1910 011531 1911 011536 1912 011541 1913 011544 1914 011547 1916 011552 1919 011564 1922 011565 1930 011567 1931 011600 1932 011606 1933 011631 1935 011633 1936 011662 1938 011665 1939 011725 1940 011734 1941 011765 1943 011767 1944 012013 1947 012016 1949 012017 1959 012020 1960 012023 1962 012025 1964 012027 1965 012031 1967 012033 1968 012043 1970 012063 1971 012071 1972 012073 1974 012106 1975 012110 1976 012111 1979 012113 1981 012114 1991 012116 1993 012127 1995 012145 1998 012151 2001 012160 2003 012163 2004 012174 2007 012175 2008 012176 2012 012177 2023 012201 2024 012205 2025 012207 2027 012210 2029 012212 2031 012235 2032 012237 2033 012250 2034 012254 2036 012255 2039 012300 2041 012312 2042 012323 2043 012326 2046 012327 2047 012351 2049 012354 2050 012356 2051 012373 2052 012377 2054 012400 2055 012416 2059 012420 2063 012421 2076 012423 2077 012424 2078 012426 2079 012427 2081 012440 2084 012443 2087 012463 2088 012471 2090 012506 2094 012541 2097 012562 2100 012577 2103 012632 2105 012662 2106 012710 2109 012744 2110 012746 2114 012747 2123 012751 2124 012752 2125 012761 2126 013001 2127 013003 2129 013005 2132 013011 2141 013017 2143 013027 2146 013036 2147 013043 2149 013045 2152 013075 2156 013163 2158 013167 2159 013173 2160 013200 2161 013201 2163 013204 2167 013237 2171 013240 2179 013246 2180 013253 2181 013262 2182 013274 2186 013275 2201 013303 2203 013306 2205 013312 2208 013316 2209 013320 2211 013334 2213 013350 2215 013351 2219 013401 2223 013422 2225 013430 2229 013443 2234 013467 2235 013530 2236 013532 2237 013534 2238 013536 2239 013537 2240 013547 2241 013571 2242 013610 2243 013626 2245 013635 2247 013644 2248 013646 2249 013650 2250 013653 2251 013656 2252 013661 2254 013670 2256 013672 2259 013727 2260 013737 2261 013740 2263 013752 2265 013756 2272 014131 2276 014133 2278 014146 2279 014153 2283 014154 2299 014162 2301 014172 2303 014175 2304 014202 2306 014205 2307 014212 2308 014216 2309 014222 2311 014226 2312 014230 2314 014244 2316 014254 2318 014255 2321 014305 2323 014310 2324 014325 2326 014334 2327 014340 2330 014341 2332 014344 2333 014356 2336 014401 2337 014411 2339 014416 2341 014420 2343 014423 2344 014432 2347 014444 2348 014451 2353 014452 2354 014454 2355 014460 2356 014462 2357 014465 2358 014467 2359 014471 2360 014473 2361 014476 2362 014500 2363 014502 2365 014504 2367 014521 2368 014524 2369 014526 2373 014527 2383 014531 2388 014631 2390 014635 2391 014643 2392 014647 2397 014660 2399 014665 2400 014701 2403 014704 2404 014710 2405 014711 2406 014712 2407 014713 2408 014716 2409 014721 2411 014724 2413 014727 2414 014745 2415 014766 2417 014770 2420 015033 2425 015043 2426 015066 2427 015116 2432 015160 2435 015163 2436 015174 2437 015176 2439 015204 2442 015205 2450 015207 2451 015213 2452 015217 2455 015224 2460 015225 2462 015241 2466 015272 2467 015301 2469 015304 2470 015326 2472 015334 2473 015343 2475 015363 2477 015377 2479 015402 2480 015413 2484 015444 2485 015455 2487 015473 2488 015474 2490 015520 2493 015521 2495 015525 2496 015530 2497 015532 2500 015547 2501 015565 2503 015575 2505 015576 2507 015606 2508 015610 2509 015613 2510 015634 2512 015671 2514 015672 2517 015704 2520 015717 2522 015751 2524 015753 2527 016007 2529 016010 2541 016011 2545 016033 2548 016062 2552 016065 2553 016107 2555 016122 2556 016132 2557 016150 2558 016152 2561 016153 2562 016156 2564 016161 2565 016164 2568 016165 2569 016207 2571 016223 2572 016226 2573 016230 2576 016231 2577 016234 2581 016236 2582 016245 2583 016265 2586 016333 2588 016345 2589 016350 2592 016351 2594 016361 2595 016363 2596 016364 2598 016365 2600 016375 2601 016377 2602 016400 2604 016401 2607 016421 2610 016435 2613 016451 2616 016463 2619 016476 2621 016502 2622 016504 2623 016505 2625 016506 2627 016516 2628 016520 2629 016521 2631 016522 2633 016526 2634 016530 2635 016531 2637 016532 2640 016546 2642 016556 2643 016560 2644 016561 2646 016562 2649 016575 2652 016611 2655 016625 2658 016641 2660 016651 2661 016653 2663 016710 2664 016712 2666 016713 2669 016715 2671 016726 2672 016730 2673 016733 2674 016754 2676 017011 2678 017012 2681 017025 2684 017040 2687 017053 2690 017066 2692 017076 2693 017100 2694 017101 2696 017102 2698 017112 2699 017114 2700 017115 2702 017116 2705 017131 2708 017141 2710 017145 2711 017146 2712 017150 2714 017151 2716 017155 2717 017156 2718 017160 2719 017162 2721 017163 2723 017167 2724 017170 2725 017172 2726 017174 2728 017175 2730 017201 2731 017202 2732 017204 2733 017206 2735 017207 2737 017213 2738 017214 2739 017216 2741 017217 2743 017223 2744 017224 2745 017226 2747 017227 2750 017242 2753 017262 2756 017314 2758 017316 2762 017352 2765 017406 2766 017407 2769 017414 2773 017444 2777 017476 2780 017530 2787 017616 2789 017617 2795 017620 2798 017647 2802 017650 2814 017661 2815 017662 2817 017663 2822 017665 2824 017667 2829 017725 2830 017732 2832 017733 2833 017753 2836 020017 2840 020031 2843 020072 2844 020120 2848 020160 2850 020161 2857 020163 2858 020165 2861 020171 2862 020213 2866 020230 2867 020231 2874 020232 2880 020233 2883 020272 2886 020273 2904 020275 2906 020277 2907 020315 2909 020330 2910 020334 2913 020335 2914 020342 2916 020345 2918 020347 2920 020360 2923 020402 2927 020432 2932 020470 2934 020500 2936 020505 2937 020514 2939 020535 2942 020547 2944 020552 2945 020555 2946 020563 2948 020574 2951 020575 2955 020624 2956 020630 2957 020636 2958 020642 2963 020643 2964 020646 2969 020657 2972 020665 2974 020670 2977 020716 2978 020724 2979 020726 2981 020732 2987 021055 2990 021110 2993 021117 2996 021143 2998 021147 3003 021150 3004 021153 3005 021155 3006 021157 3007 021161 3008 021165 3009 021167 3010 021173 3011 021175 3012 021177 3016 021201 3017 021222 3020 021243 3024 021276 3029 021330 3031 021333 3032 021334 3034 021346 3035 021353 3038 021373 3041 021377 3044 021430 3049 021544 3056 021640 3057 021647 3060 021670 3061 021672 3062 021703 3066 021704 3071 021706 3073 021710 3074 021726 3076 021734 3081 021735 3084 021752 3087 021767 3090 022004 3092 022007 3093 022021 3094 022037 3096 022043 3100 022063 3104 022104 3105 022106 3107 022110 3108 022116 3109 022127 3112 022130 3113 022132 3114 022135 3116 022140 3117 022146 3126 022157 3133 022270 3135 022271 3148 022272 3149 022274 3150 022326 3152 022330 3153 022333 3154 022341 3157 022342 3158 022345 3159 022350 3161 022352 3162 022402 3164 022404 3165 022427 3167 022441 3169 022442 3171 022444 3173 022505 3175 022510 3177 022523 3181 022536 3182 022537 3183 022540 3186 022541 3196 022543 3197 022546 3198 022554 3200 022561 3202 022562 3203 022614 3207 022620 3208 022631 3211 022634 3212 022657 3215 022702 3217 022703 3219 022712 3220 022723 3224 022757 3226 023014 3230 023027 3257 023035 3259 023040 3260 023044 3261 023050 3262 023053 3263 023056 3264 023062 3266 023063 3267 023065 3269 023074 3270 023077 3271 023114 3274 023123 3276 023125 3279 023167 3282 023200 3284 023212 3287 023221 3289 023252 3292 023272 3294 023277 3296 023301 3297 023304 3298 023305 3300 023312 3302 023325 3304 023327 3308 023373 3311 023413 3313 023420 3314 023422 3315 023426 3317 023430 3319 023441 3320 023452 3321 023453 3323 023455 3324 023457 3326 023467 3327 023471 3331 023561 3334 023602 3335 023606 3336 023607 3339 023610 3340 023613 3341 023615 3344 023620 3346 023664 3350 023705 3353 023706 3362 023717 3364 023724 3366 023751 3369 023773 3373 024034 3376 024035 3383 024046 3384 024077 3386 024125 3388 024134 3391 024135 3400 024146 3403 024160 3404 024163 3405 024166 3406 024170 3407 024172 3408 024174 3410 024176 3411 024230 3413 024253 3415 024257 3434 024260 3444 024262 3446 024273 3448 024276 3450 024302 3451 024304 3454 024325 3455 024336 3457 024347 3461 024476 3464 024501 ----------------------------------------------------------- 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