COMPILATION LISTING OF SEGMENT parse_ftp_login_line_ Compiled by: Multics PL/I Compiler, Release 30, of February 16, 1988 Compiled at: Honeywell Bull, Phoenix AZ, SysM Compiled on: 07/13/88 1004.1 mst Wed Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* * Copyright, (C) Honeywell Information Systems Inc., 1982 * 6* * * 7* * Copyright (c) 1972 by Massachusetts Institute of * 8* * Technology and Honeywell Information Systems, Inc. * 9* * * 10* *********************************************************** */ 11 12 /* format: style4 */ 13 parse_ftp_login_line_: proc (lp, ll, ate_p, errarg, code); 14 15 /* This routine is called by ftp_dialup_ to parse the USER command. The strategy 16* here is to not allow some of the control arguments a regular user could use 17* and also to set certain values in the answer table to defaults for ftp users, 18* and to set other ones using special ftp control arguments. 19* 20* Stolen from parse_login_line_ by Roy Planalp, 760819 21* Last modified by D. M. Wells, Oct. 1976, to fix problem caused 22* by using person.project form and including ctl args 23* Modified November 1981, E. N. Kittlitz. user_table_entry conversion. 24* Modified January 1982, E. N. Kittlitz. login_parse_ changes, as_data_ conversion. */ 25 26 27 /****^ HISTORY COMMENTS: 28* 1) change(87-04-26,GDixon), approve(87-08-03,MCR7741), 29* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1055): 30* Upgraded for change to answer_table.incl.pl1 and user_table_entry.incl.pl1 31* END HISTORY COMMENTS */ 32 33 34 /* Contributors to original parse_login_line_: 35* 36* Modified 740807 by PG for -authorization and -change_default_authorization 37* Modified 740913 by PG for -generate_password 38* Modified 750429 by PG for new dial facility 39* Modified 750714 by THVV for -modes and -terminal_type 40* Modified 751024 by T. Casey for -subsystem. 41* Modified 760601 by PG to handle pw masks properly. 42**/ 43 44 /* parameters */ 45 46 dcl lp ptr, /* Pointer to input line buffer. */ 47 ll fixed bin, /* Length of line. */ 48 ate_p ptr, /* Pointer to answer table entry. */ 49 errarg char (*) aligned, /* If an error occurs , what went wrong. */ 50 code fixed bin (35); /* Error code. */ 51 52 /* automatic */ 53 54 dcl i fixed bin; /* temporary */ 55 dcl authorization bit (72) aligned; /* binary authorization */ 56 dcl authorization_string char (150); /* character representation of auth. */ 57 dcl j fixed bin; /* Return from login_parse_: relative cursor */ 58 dcl jj fixed bin; /* Absolute cursor */ 59 dcl arg char (24); /* Single argument to login. */ 60 dcl prev_arg char (24); /* Previous arg, for error message */ 61 dcl k fixed bin; /* Length of argument. */ 62 dcl char64 char (64); /* temporary */ 63 dcl npo bit (1); /* user gave -no_process_overseer arg */ 64 65 /* based */ 66 67 dcl ch (ll) char (1) unal based (lp); /* Image of buffer */ 68 69 /* internal static initial */ 70 71 dcl (true bit (1) aligned init ("1"b), 72 false bit (1) aligned init ("0"b) 73 ) internal static options (constant); 74 75 /* entries */ 76 77 dcl convert_authorization_$from_string entry (bit (72) aligned, char (*), fixed bin (35)); 78 dcl login_parse_ entry (ptr, fixed bin, char (*), fixed bin, fixed bin, fixed bin (35)); 79 dcl cv_dec_check_ entry (char (*), fixed bin (35)) returns (fixed bin (35)); 80 81 /* external static */ 82 83 dcl as_error_table_$no_login_arg_msg fixed bin (35) ext static; 84 dcl as_error_table_$bad_login_arg_msg fixed bin (35) ext static; 85 dcl as_error_table_$long_ip_ss_args fixed bin (35) ext static; 86 dcl error_table_$bad_arg fixed bin (35) ext static; 87 dcl error_table_$noarg fixed bin (35) ext static; 88 89 dcl 1 ftp_misc_$ftp_login_responder aligned external static, 90 2 pathlen fixed bin (35), /* no. chars in path */ 91 2 overseer char (168) aligned; /* the path */ 92 93 94 dcl 1 as_data_$login_args ext aligned, 95 2 n_login_args fixed bin (35), 96 2 pad fixed bin (35), 97 2 login_args (38) char (24); 98 99 dcl as_data_$max_user_ring fixed bin (35) ext; 100 101 /* builtins */ 102 103 dcl (addr, hbound, index, null, substr) builtin; 104 105 /* ================================================== */ 106 107 code = 0; /* Assume no error will happen. */ 108 utep = ate_p; /* Copy argument */ 109 110 ute.login_flags.auth_given = "0"b; /* whether -auth was specified */ 111 ute.at.bumping = "1"b; /* Default is bumping ON, unless -np */ 112 ute.login_code = "login"; /* dft login word */ 113 npo = false; /* dft user gets ftp_server initproc */ 114 ute.at.brief = true; /* and no login messages */ 115 116 char64 = ""; 117 call login_parse_ (lp, ll, char64, k, j, code); /* Get person ID */ 118 if code ^= 0 then /* Personid must be given */ 119 return; 120 if k > 32 then do; 121 code = error_table_$bad_arg; /* bad syntax */ 122 return; 123 end; 124 125 jj = index (substr (char64, 1, j), "."); 126 if jj = 0 then do; 127 ute.person = substr (char64, 1, j); 128 end; 129 else do; 130 ute.person = substr (char64, 1, jj - 1); 131 ute.project = substr (char64, jj + 1, j - jj); 132 end; 133 134 if ute.person = "NETML" then npo = true; /* special kludge for netmail (his dft initproc works for ftp) */ 135 136 jj = 0; 137 138 arg = ""; /* set up for prev_arg */ 139 nxarg: jj = jj + j; /* Advance cursor. */ 140 prev_arg = arg; 141 call login_parse_ (addr (ch (jj)), ll - jj + 1, arg, k, j, code); /* Pick off next argument. */ 142 if code = error_table_$noarg then do; 143 code = 0; 144 go to exit; /* use defaults */ 145 end; 146 if substr (arg, 1, 1) ^= "-" then go to badarg; /* Not a control arg */ 147 do k = 1 to as_data_$login_args.n_login_args while 148 (arg ^= as_data_$login_args.login_args (k)); end; /* Look up argument in table. */ 149 if k > as_data_$login_args.n_login_args /* Fuss if unknown argument. */ 150 then if arg = "-word" /* special ftp arg */ 151 then go to word_handler; 152 else if arg = "-no_process_overseer" | arg = "-npo" /* .. */ 153 then go to npo_handler; 154 else do; 155 badarg: code = as_error_table_$bad_login_arg_msg; /* Return error to ftp_dialup_ */ 156 errarg = arg; /* Tell user what we barf on */ 157 return; 158 end; 159 160 if k > hbound (arg_handler, 1) then go to badarg; /* as_data_ is newer than we are! */ 161 go to arg_handler (k); /* Dispatch on argument. */ 162 163 arg_handler (3): /* -hd */ 164 arg_handler (4): /* -home_dir */ 165 jj = jj + j; /* Advance parse pointer. */ 166 call login_parse_ (addr (ch (jj)), ll - jj + 1, ute.home_dir, k, j, code); 167 if code ^= 0 then go to lp_error; 168 if substr (ute.home_dir, 1, 1) ^= ">" then go to badarg; /* Must be absolute path. */ 169 go to nxarg; 170 arg_handler (5): /* -po */ 171 arg_handler (6): /* -process_overseer */ 172 jj = jj + j; 173 call login_parse_ (addr (ch (jj)), ll - jj + 1, char64, i, j, code); 174 if code ^= 0 then go to lp_error; 175 if ute.uflags.ss_given then do; /* if -subsystem given already, save it */ 176 authorization_string = substr (ute.init_proc, ute.ip_len + 1, ute.ss_len); /* borrow a vacant string */ 177 178 if i + ute.ss_len > 64 then do; /* if sum of both strings too long */ 179 code = as_error_table_$long_ip_ss_args; 180 errarg = char64; 181 return; /* let user try again */ 182 end; 183 end; 184 185 substr (ute.init_proc, 1, i) = substr (char64, 1, i); 186 ute.ip_len = i; 187 ute.uflags.ip_given = "1"b; 188 npo = true; 189 if ute.uflags.ss_given then /* if -ss was already given, put it back at end of string */ 190 substr (ute.init_proc, i + 1, ute.ss_len) = substr (authorization_string, 1, ute.ss_len); 191 go to nxarg; 192 arg_handler (11): /* -nw */ 193 arg_handler (12): /* -no_warning */ 194 ute.at.no_warning = true; 195 ute.ur_at.no_warning = true; 196 go to nxarg; 197 arg_handler (13): /* -np */ 198 arg_handler (14): /* -no_preempt */ 199 ute.at.bumping = false; 200 ute.ur_at.bumping = true; 201 go to nxarg; 202 arg_handler (15): /* -force */ 203 ute.at.guaranteed_login = true; 204 ute.ur_at.guaranteed_login = true; 205 go to nxarg; 206 arg_handler (37): /* -rg */ 207 arg_handler (38): /* -ring */ 208 jj = jj + j; 209 call login_parse_ (addr (ch (jj)), ll - jj + 1, arg, k, j, code); 210 if code ^= 0 then go to lp_error; 211 ute.initial_ring = cv_dec_check_ (arg, code); /* Convert ring to integer. */ 212 if code ^= 0 then go to badarg; /* Check value. */ 213 if ute.initial_ring <= 0 then go to badarg; /* Aw, c'mon. */ 214 if ute.initial_ring > as_data_$max_user_ring then go to badarg; 215 go to nxarg; 216 arg_handler (25): /* -om */ 217 arg_handler (26): /* -outer_module */ 218 jj = jj + j; 219 call login_parse_ (addr (ch (jj)), ll - jj + 1, ute.outer_module, k, j, code); 220 if code ^= 0 then go to lp_error; 221 go to nxarg; 222 223 arg_handler (27): /* -auth */ 224 arg_handler (28): /* -authorization */ 225 jj = jj + j; 226 call login_parse_ (addr (ch (jj)), ll - jj + 1, authorization_string, k, j, code); 227 if code ^= 0 then go to lp_error; 228 call convert_authorization_$from_string (authorization, (authorization_string), code); 229 if code ^= 0 230 then do; 231 errarg = ""; 232 return; 233 end; 234 235 ute.login_flags.auth_given = true; 236 ute.process_authorization = authorization; 237 go to nxarg; 238 239 arg_handler (1): /* -bf */ 240 arg_handler (2): /* -brief */ 241 arg_handler (7): /* -npf */ 242 arg_handler (8): /* -no_print_off */ 243 arg_handler (9): /* -pf */ 244 arg_handler (10): /* -print_off */ 245 arg_handler (19): /* -ns */ 246 arg_handler (20): /* -no_start_up */ 247 arg_handler (21): /* -cpw */ 248 arg_handler (22): /* -change_password */ 249 arg_handler (23): /* -cdp */ 250 arg_handler (24): /* -change_default_project */ 251 arg_handler (29): /* -cda */ 252 arg_handler (30): /* -change_default_auth */ 253 254 arg_handler (31): /* -gpw */ 255 arg_handler (32): /* -generate_password */ 256 257 arg_handler (33): /* -ttp */ 258 arg_handler (34): /* -terminal_type */ 259 260 arg_handler (16): /* -md */ 261 arg_handler (17): /* -mode */ 262 arg_handler (18): /* -modes */ 263 go to badarg; 264 265 arg_handler (35): /* -ss */ 266 arg_handler (36): /* -subsystem */ 267 jj = jj + j; 268 call login_parse_ (addr (ch (jj)), ll - jj + 1, char64, i, j, code); 269 if code ^= 0 then go to lp_error; 270 if i + ute.ip_len > 64 then do; /* -ss arg and -po arg add up to > 64 chars */ 271 code = as_error_table_$long_ip_ss_args; 272 errarg = char64; 273 return; /* let user try again */ 274 end; 275 substr (ute.init_proc, ute.ip_len + 1, i) = substr (char64, 1, i); /* copy subsystem in after initproc */ 276 ute.ss_len = i; /* remember its length */ 277 ute.uflags.ss_given = "1"b; /* and remember that it was given */ 278 goto nxarg; 279 280 npo_handler: 281 npo = true; 282 go to nxarg; 283 284 word_handler: 285 jj = jj + j; 286 call login_parse_ (addr (ch (jj)), ll - jj + 1, ute.login_code, k, j, code); 287 if code ^= 0 then go to lp_error; 288 go to nxarg; 289 290 lp_error: if code = error_table_$noarg then do; 291 code = as_error_table_$no_login_arg_msg; 292 errarg = prev_arg; 293 end; 294 else errarg = arg; /* most likely blanks */ 295 return; /* return with error */ 296 297 /* Come here when we run out of arguments. */ 298 299 exit: 300 if ^npo 301 then do; /* note that we don't yet handle case of this po and specified ss */ 302 ute.init_proc = substr (ftp_misc_$ftp_login_responder.overseer, 1, 303 ftp_misc_$ftp_login_responder.pathlen); /* ftp users have special default initproc */ 304 ute.uflags.ip_given = "1"b; 305 ute.ip_len = ftp_misc_$ftp_login_responder.pathlen; 306 end; 307 /* 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 */ 307 308 /* BEGIN INCLUDE FILE ... user_attributes.incl.pl1 TAC 10/79 */ 2 2 2 3 2 4 /****^ HISTORY COMMENTS: 2 5* 1) change(86-12-11,Brunelle), approve(87-07-13,MCR7741), 2 6* audit(87-04-19,GDixon), install(87-08-04,MR12.1-1056): 2 7* Add incl for abs_attributes.incl.pl1 to automatically include absentee 2 8* attribute switches. 2 9* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 2 10* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 2 11* A) Add USER_ATTRIBUTE_NAMES arrays. attribute_names.incl.pl1 can thereby 2 12* be deleted. 2 13* B) Add constants identifying attributes that can be changed by user at 2 14* login, etc. 2 15* END HISTORY COMMENTS */ 2 16 2 17 2 18 /* Modified 82-01-03 E. N. Kittlitz. to declare a complete level-1 structure */ 2 19 2 20 /* format: style4 */ 2 21 dcl 1 user_attributes aligned based, /* the user user_attributes */ 2 22 (2 administrator bit (1), /* 1 system administrator privileges */ 2 23 2 primary_line bit (1), /* 2 user has primary-line privileges */ 2 24 2 nobump bit (1), /* 2 user cannot be bumped */ 2 25 2 guaranteed_login bit (1), /* 4 user has guaranteed login privileges */ 2 26 2 anonymous bit (1), /* 5 used only in SAT. project may have anon.users */ 2 27 2 nopreempt bit (1), /* 6 used only in PDT. user not preemptable by others 2 28* . of same project (distinct from "nobump") */ 2 29 2 nolist bit (1), /* 7 don't list user on "who" */ 2 30 2 dialok bit (1), /* 8 user may have multiple consoles */ 2 31 2 multip bit (1), /* 9 user may have several processes */ 2 32 2 bumping bit (1), /* 10 in SAT. Can users in project bump each other? */ 2 33 2 brief bit (1), /* 11 no login or logout message */ 2 34 2 vinitproc bit (1), /* 12 user may change initial procedure */ 2 35 2 vhomedir bit (1), /* 13 user may change homedir */ 2 36 2 nostartup bit (1), /* 14 user does not want start_up.ec */ 2 37 2 sb_ok bit (1), /* 15 user may be standby */ 2 38 2 pm_ok bit (1), /* 16 user may be primary */ 2 39 2 eo_ok bit (1), /* 17 user may be edit_only */ 2 40 2 daemon bit (1), /* 18 user may login as daemon */ 2 41 2 vdim bit (1), /* 19 * OBSOLETE * user may change outer mdle */ 2 42 2 no_warning bit (1), /* 20 no warning message */ 2 43 2 igroup bit (1), /* 21 in SAT: this project may give its users individual groups 2 44* . in PDT: this user has an individual load control group */ 2 45 2 save_pdir bit (1), /* 22 save pdir after fatal process error */ 2 46 2 disconnect_ok bit (1), /* 23 ok to save user's disconnected processes */ 2 47 2 save_on_disconnect bit (1), /* 24 save them unless -nosave login arg is given */ 2 48 2 pad bit (12)) unaligned; 2 49 2 50 dcl USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 2 51 ("none", /* 0 */ 2 52 "administrator", /* 1 */ 2 53 "primary_line", /* 2 */ 2 54 "nobump", /* 3 */ 2 55 "guaranteed_login", /* 4 */ 2 56 "anonymous", /* 5 */ 2 57 "nopreempt", /* 6 */ 2 58 "nolist", /* 7 */ 2 59 "dialok", /* 8 */ 2 60 "multip", /* 9 */ 2 61 "bumping", /* 10 */ 2 62 "brief", /* 11 */ 2 63 "vinitproc", /* 12 */ 2 64 "vhomedir", /* 13 */ 2 65 "nostartup", /* 14 */ 2 66 "no_secondary", /* 15 */ 2 67 "no_prime", /* 16 */ 2 68 "no_eo", /* 17 */ 2 69 "daemon", /* 18 */ 2 70 "", /* 19 vdim OBSOLETE */ 2 71 "no_warning", /* 20 */ 2 72 "igroup", /* 21 */ 2 73 "save_pdir", /* 22 */ 2 74 "disconnect_ok", /* 23 */ 2 75 "save_on_disconnect"); /* 24 */ 2 76 2 77 dcl ALT_USER_ATTRIBUTE_NAMES (0:24) char (20) int static options (constant) init 2 78 ("null", /* 0 */ 2 79 "admin", /* 1 */ 2 80 "", "", /* 2 - 3 */ 2 81 "guar", /* 4 */ 2 82 "anon", /* 5 */ 2 83 "", "", /* 6 - 7 */ 2 84 "dial", /* 8 */ 2 85 "multi_login", /* 9 */ 2 86 "preempting", /* 10 */ 2 87 "", /* 11 */ 2 88 "v_process_overseer", /* 12 */ 2 89 "v_home_dir", /* 13 */ 2 90 "no_start_up", /* 14 */ 2 91 "no_sec", /* 15 */ 2 92 "no_primary", /* 16 */ 2 93 "no_edit_only", /* 17 */ 2 94 "op_login", /* 18 */ 2 95 "", /* 19 */ 2 96 "nowarn", /* 20 */ 2 97 "", "", "", /* 21 - 23 */ 2 98 "save"); /* 24 */ 2 99 2 100 dcl USER_ATTRIBUTES_always_allowed bit (36) aligned int static 2 101 options(constant) init("000000000010000000010000000000000000"b); 2 102 /* SAT/PDT attributes not needed for user to give (brief, no_warning) */ 2 103 2 104 dcl USER_ATTRIBUTES_default_in_pdt bit (36) aligned int static 2 105 options(constant) init("000000000010000000010000000000000000"b); 2 106 /* PDT value for (brief, no_warning) is default */ 2 107 2 108 dcl USER_ATTRIBUTES_settable_by_user bit (36) aligned int static 2 109 options(constant) init("000100000110010000010000000000000000"b); 2 110 /* user MIGHT set (bump, ns, brief, guar, no_warning) */ 2 111 3 1 /* BEGIN INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 3 2 3 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 4 /* */ 3 5 /* This include file describes the attributes of an absentee job. It is */ 3 6 /* used by user_table_entry.incl.pl1, abs_message_format.incl.pl1 */ 3 7 /* and PIT.incl.pl1. */ 3 8 /* */ 3 9 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 3 10 3 11 /****^ HISTORY COMMENTS: 3 12* 1) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 3 13* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 14* Separated abs_attributes from the request structure 3 15* (abs_message_format.incl.pl1) so that the identical structure could be 3 16* used in the ute structure (user_table_entry.incl.pl1). 3 17* 2) change(87-04-19,GDixon), approve(87-07-13,MCR7741), 3 18* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 3 19* Added ABS_ATTRIBUTE_NAMES array. 3 20* 3) change(87-11-11,Parisek), approve(88-02-11,MCR7849), 3 21* audit(88-03-22,Lippard), install(88-07-13,MR12.2-1047): 3 22* Added the no_start_up flag. SCP6367 3 23* END HISTORY COMMENTS */ 3 24 3 25 dcl 1 user_abs_attributes aligned based, 3 26 2 restartable bit (1) unaligned, /* 1 if request may be started over from the beginning */ 3 27 2 user_deferred_until_time bit (1) unaligned, /* 1 if request was specified as deferred */ 3 28 2 proxy bit (1) unaligned, /* 1 if request submitted for someone else */ 3 29 2 set_bit_cnt bit (1) unaligned, /* 1 if should set bit count after every write call */ 3 30 2 time_in_gmt bit (1) unaligned, /* 1 if deferred_time is in GMT */ 3 31 2 user_deferred_indefinitely bit (1) unaligned, /* 1 if operator is to say when to run it */ 3 32 2 secondary_ok bit (1) unaligned, /* 1 if ok to log in as secondary foreground user */ 3 33 2 truncate_absout bit (1) unaligned, /* 1 if .absout is to be truncated */ 3 34 2 restarted bit (1) unaligned, /* 1 if job is restarted */ 3 35 2 no_start_up bit (1) unaligned, /* 1 if requested -ns */ 3 36 2 attributes_pad bit (26) unaligned; 3 37 3 38 dcl ABS_ATTRIBUTE_NAMES (10) char (28) varying int static options(constant) init( 3 39 "restartable", 3 40 "user_deferred_until_time", 3 41 "proxy", 3 42 "set_bit_cnt", 3 43 "time_in_gmt", 3 44 "user_deferred_indefinitely", 3 45 "secondary_ok", 3 46 "truncate_absout", 3 47 "restarted", 3 48 "no_start_up"); 3 49 3 50 /* END INCLUDE FILE ... user_abs_attributes.incl.pl1 */ 3 51 2 112 2 113 2 114 /* END INCLUDE FILE ... user_attributes.incl.pl1 */ 308 309 /* BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */ 4 2 4 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 4 /* */ 4 5 /* This include file requires that the user include */ 4 6 /* user_attributes.incl.pl1 as well. It also includes */ 4 7 /* abs_attributes.incl.pl1 itself. */ 4 8 /* */ 4 9 /* This include file must be included to use absentee_user_table.incl.pl1, */ 4 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1. */ 4 11 /* */ 4 12 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 13 4 14 /****^ HISTORY COMMENTS: 4 15* 1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370), 4 16* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 4 17* This comment for hcom. 4 18* 81-12-21 E. N. Kittlitz. derived from abs_user_tab.incl.pl1, 4 19* anstbl.incl.pl1, and dutbl.incl.pl1. 4 20* 82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes 4 21* 84-04-04 BIM added privileged_dial_server and dial_server_ring 4 22* 84-07-12 BIM added min_process_authorization 4 23* 84-12-31 Keith Loepere added pdir_dir_quota 4 24* 85-01-16 by E. Swenson to add ute.session_uid 4 25* 2) change(85-11-16,Swenson), approve(87-07-13,MCR7737), 4 26* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 4 27* Added fields for DSA login server support. 4 28* 3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370), 4 29* audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082): 4 30* Add truncate_absout and restarted bit for -truncate absout, SCP6297. 4 31* 4) change(86-04-09,Herbst), approve(87-07-13,MCR7697), 4 32* audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056): 4 33* Added disconnection_rel_minutes. 4 34* 5) change(86-12-08,GDixon), approve(87-07-13,MCR7741), 4 35* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 36* Changed structure under ute.abs_attributes to use like structure in 4 37* abs_attributes.incl.pl1. This allows the same attributes to be used 4 38* in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include 4 39* file. 4 40* 6) change(87-04-14,GDixon), approve(87-07-13,MCR7741), 4 41* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 42* Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1. 4 43* 7) change(87-04-16,GDixon), approve(87-07-13,MCR7741), 4 44* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 45* A) Global reorganization to locate things by type of data. 4 46* B) Eliminate ute.uflags.logged_in. 4 47* 8) change(87-05-10,GDixon), approve(87-07-13,MCR7741), 4 48* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 49* A) Reduced overlength person and project fields to proper length. 4 50* B) Adjusted dialed-console section to begin on even word boundary. 4 51* 9) change(87-05-13,GDixon), approve(87-07-13,MCR7741), 4 52* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 4 53* Add ute.line_type. 4 54* 10) change(87-11-19,Parisek), approve(88-02-11,MCR7849), 4 55* audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047): 4 56* Added the lowest_ring element. Used the upper half of ute.highest_ring 4 57* for the storage. SCP6367 4 58* END HISTORY COMMENTS */ 4 59 4 60 /* format: style4 */ 4 61 4 62 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 63 /* */ 4 64 /* Each of the named sections below defines a type of data. Typing comes */ 4 65 /* from data associated with the ute entry itself, with the person, with */ 4 66 /* login argument data, from the main user of the data (eg, dialup_, */ 4 67 /* load_ctl_, login server). Each section begins on a double-word boundary */ 4 68 /* and is an even number of words long. The total structure is 300 decimal */ 4 69 /* words long. */ 4 70 /* */ 4 71 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 4 72 4 73 4 74 dcl UTE_version_4 fixed bin internal static options (constant) init (4); 4 75 4 76 dcl utep pointer automatic init (null); 4 77 4 78 dcl 1 ute based (utep) aligned, /* individual entry in one of the user control tables */ 4 79 4 80 /* Variables which give state of this entry */ 4 81 2 active fixed bin, /* state of entry. 0=>free. see dialup_values.incl.pl1 */ 4 82 2 process_type fixed bin, /* 1=interactive, 2=absentee, 3=daemon */ 4 83 2 ute_index fixed bin, /* index of ute in (anstbl autbl dutbl).entry array */ 4 84 2 next_free fixed bin, /* points to previous free entry */ 4 85 4 86 /* Information user gave about person_id associated with this entry. */ 4 87 2 person char (24) unal, /* user's name */ 4 88 2 project char (12) unal, /* project of absentee user */ 4 89 2 tag char (1) unal, /* instance tag - someday will be generated */ 4 90 2 tag_pad bit (27) unal, 4 91 2 anonymous fixed bin, /* 1 if anonymous, otherwise 0 */ 4 92 2 login_flags, /* flags for login data */ 4 93 3 cpw bit (1) unal, /* flag for wish to change password */ 4 94 3 generate_pw bit (1) unal, /* flag meaning -generate_pw (-gpw) was used. */ 4 95 3 special_pw unal, /* dial or slave */ 4 96 4 dial_pw bit (1) unal, /* true if dial -user */ 4 97 4 slave_pw bit (1) unal, /* true if slave -user */ 4 98 3 cdp bit (1) unal, /* flag for wish to change default project */ 4 99 3 cda bit (1) unal, /* flag to change default authorization */ 4 100 3 auth_given bit (1) unal, /* flag to mean -authorization was used. */ 4 101 3 noprint bit (1) unal, /* used at logout. inhibits printing. */ 4 102 3 operator bit (1) unaligned, /* user specified -operator on login command line */ 4 103 3 pw_pad bit (25) unal, /* spare parts */ 4 104 3 mask_ctl bit (2) unal, /* bits controlling pw mask. See constants, below */ 4 105 /* Must remain last in pw_flags so it does not */ 4 106 /* appear in PW_FLAG_VALUES array below. */ 4 107 2 generated_pw char (8) unal, /* user must type this as new password */ 4 108 2 old_password char (8) unal, /* must match user's previous password (value scrambled) */ 4 109 2 process_authorization bit (72), /* access_authorization of this process */ 4 110 4 111 /* Information user gave about process associated with this entry. */ 4 112 2 outer_module char (32) unal, /* Name of console dim */ 4 113 2 home_dir char (64) unal, /* initial home directory */ 4 114 2 init_proc char (64) unal, /* name of login responder */ 4 115 2 ip_len fixed bin (17) unal, /* length of initproc string */ 4 116 2 ss_len fixed bin (17) unal, /* length of subsystem string */ 4 117 2 ur_at like user_attributes aligned, /* bits on means attributes given by user */ 4 118 2 at like user_attributes aligned, /* bits on means attribute is on */ 4 119 2 initial_ring fixed bin, /* ring process will be started in */ 4 120 2 arg_count fixed bin, /* number of arguments to absentee control segment */ 4 121 2 ln_args fixed bin, /* length of string containing arguments */ 4 122 2 arg_lengths_ptr ptr, /* pointer to array of argument lengths */ 4 123 2 args_ptr ptr, /* pointer to arguments to absentee control segment */ 4 124 4 125 /* Most of the following information is relevant only to absentee processes */ 4 126 2 input_seg char (168) unal, /* pathname of absentee control segment */ 4 127 2 output_seg char (168) unal, /* pathname of absentee output file */ 4 128 2 request_id fixed bin (71), /* time request was entered - used as uid of request */ 4 129 2 reservation_id fixed bin (71), /* nonzero if job has a resource reservation */ 4 130 2 message_id bit (72), /* message segment id assoc with absentee request */ 4 131 2 deferred_time fixed bin (71), /* time at which absentee process should be created */ 4 132 2 max_cpu_time fixed bin (35), /* maximum number of seconds this process can run */ 4 133 2 queue fixed bin, /* -1=daemon;0=interactive or foreground;>0=queue no. 4 134* (but see uflags.adjust_abs_q_no). */ 4 135 2 real_queue fixed bin, /* real queue number; ute.queue gets fudged sometimes */ 4 136 2 abs_attributes aligned like user_abs_attributes, /* include abs_attributes.incl.pl1 */ 4 137 2 abs_flags, 4 138 3 abs_run bit (1) unal, /* on if job was started by abs run command */ 4 139 3 notify bit (1) unal, /* on if user wants notification at login and logout */ 4 140 3 abs_flags_pad bit (34) unal, 4 141 2 abs_group char (8) unal, /* original group before load_ctl_ moves it to absentee group */ 4 142 2 sender char (32) unal, /* name of RJE station that job is from */ 4 143 2 proxy_person char (28) unal, /* name of user who actually entered the request, if proxy */ 4 144 2 proxy_project char (9) unal, 4 145 2 proxy_project_pad char (3) unal, 4 146 2 abs_pad fixed bin, 4 147 4 148 /* Information about process actually created */ 4 149 2 proc_id bit (36), /* process id of absentee process */ 4 150 2 session_uid fixed bin (35), /* Unique authentication session id */ 4 151 2 process_authorization_range (2) bit (72) aligned, 4 152 2 audit bit (36), /* audit flags for user */ 4 153 2 lot_size fixed bin, /* Size of linkage offset table */ 4 154 2 kst_size fixed bin, /* Size of process known segment table */ 4 155 2 cls_size fixed bin, /* Size of process combined linkage */ 4 156 2 sus_channel fixed bin (71), /* event channel on which suspended process is blocked */ 4 157 2 lowest_ring fixed bin (17) unal, /* lowest ring permitted */ 4 158 2 highest_ring fixed bin (17) unal, /* highest ring permitted */ 4 159 2 pdir_lvix fixed bin (17) unal, /* index in disk table of lv where pdir is */ 4 160 2 pdir_quota fixed bin (17) unal, /* process directory quota */ 4 161 2 pdir_dir_quota fixed bin (17) unal, /* process directory quota for dirs */ 4 162 2 pdir_pad fixed bin(17) unal, 4 163 2 process_pad fixed bin, 4 164 4 165 /* Information about primary terminal associated with this entry */ 4 166 2 tty_name char (32) unal, /* absentee=>"abs1", etc. daemon=>"bk", etc. */ 4 167 2 terminal_type char (32) unaligned, /* terminal type */ 4 168 2 line_type fixed bin, /* line type */ 4 169 2 tty_id_code char (4) unal, /* "none" for absentee */ 4 170 2 network_connection_type fixed bin, /* see net_event_message.incl.pl1 */ 4 171 2 channel ptr unal, /* points to CDT entry for user, if any */ 4 172 4 173 /* Variables useful for dialed terminals */ 4 174 2 ndialed_consoles fixed bin, /* if master, number of slaves */ 4 175 2 dial_qualifier char (22) unal, /* first argument to dial command */ 4 176 2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */ 4 177 2 dial_server_flags, 4 178 3 registered_dial_server bit (1) unal, /* process is a registered dial server */ 4 179 3 privileged_dial_server bit (1) unal, /* "1"b -> serves range of AIM classes */ 4 180 3 dial_server_flags_pad bit (13) unal, /* fill out the word */ 4 181 2 dial_ev_chn fixed bin (71), /* if master, control event channel */ 4 182 4 183 /* Information about usage/accounting. Device usage meters are in a 4 184* separate segment, "devtab" */ 4 185 2 pdtep ptr, /* ptr to user's pdt entry, where usage meters live */ 4 186 2 cpu_this_process fixed bin (71), /* cpu used so far this process */ 4 187 2 cpu_usage fixed bin (71), /* total cpu time used in this session */ 4 188 2 mem_usage fixed bin (71), /* memory usage for previous processes in session */ 4 189 2 mem_this_process fixed bin (71), /* memory usage at last update */ 4 190 2 last_update_time fixed bin (71), /* time of last account update */ 4 191 2 session_cost float bin, /* dollar cost of session, for printing in logout messages */ 4 192 2 ndevices fixed bin, /* Count of attached devices */ 4 193 2 device_head fixed bin, /* Table index of head of device chain */ 4 194 2 device_tail fixed bin, /* Table index of tail of device chain */ 4 195 2 rs_number fixed bin (6) unsigned unal, /* rate structure number */ 4 196 2 rs_number_pad bit(30) unal, 4 197 2 usage_pad fixed bin, 4 198 4 199 /* Information for dialup_ (control variables). */ 4 200 2 event fixed bin (71), /* event associated with channel or user manager */ 4 201 2 uprojp ptr, /* ptr to user project sat entry */ 4 202 2 login_time fixed bin (71), /* time when absentee user approved by lg_ctl_ */ 4 203 2 cant_bump_until fixed bin (71), /* bump-protection clock */ 4 204 2 recent_fatal_error_time fixed bin (71), /* time of first error in the suspected loop */ 4 205 2 recent_fatal_error_count fixed bin, /* counter to detect fatal process error loops */ 4 206 2 failure_reason fixed bin, /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */ 4 207 2 count fixed bin, /* counter for logins and dialups */ 4 208 2 n_processes fixed bin, /* number of processes created in this session */ 4 209 2 lock_value fixed bin, /* number of locks set for this entry */ 4 210 2 login_result fixed bin, /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */ 4 211 2 login_code char (8) unal, /* login command from LOGIN line */ 4 212 2 preempted fixed bin, /* if ^= 0 user preempted (never for abs) */ 4 213 2 destroy_flag fixed bin, /* >8 when awaiting destroy */ 4 214 2 logout_type char (4) unal, /* type of logout */ 4 215 2 logout_index fixed bin, /* to save logout handler index while waiting for termsgnl */ 4 216 2 disconnection_rel_minutes fixed bin (17) unal, /* disconnected this many minutes after login_time */ 4 217 2 next_disconnected_ate_index fixed bin (17) unal, /* thread of list of user's disconnected processes */ 4 218 2 work_class fixed bin, /* work class used by priority scheduler */ 4 219 2 group char (8) unal, /* party group identifier */ 4 220 2 whotabx fixed bin, /* index of user's entry in whotab */ 4 221 4 222 2 uflags, /* Miscellaneous flags */ 4 223 3 dont_call_init_admin bit (1) unal, /* Call overseer directly */ 4 224 3 ip_given bit (1) unal, /* user gave an initproc arg on login line */ 4 225 3 ss_given bit (1) unal, /* initial_procedure contains a subsystem name */ 4 226 3 lvs_attached bit (1) unal, /* set and used by the lv_request_ procedure */ 4 227 3 send_initial_string bit (1) unal, /* initial string should be sent after login line read */ 4 228 3 adjust_abs_q_no bit (1) unal, /* this is an absentee job; user_profile.queue is NOT true Q # */ 4 229 3 foreground_secondary_ok bit (1) unal, /* ok to login foreground absentee job as secondary */ 4 230 3 foreground_job bit (1) unal, /* job was originally from foreground queue */ 4 231 3 sus_sent bit (1) unal, /* sus_ ips signal has been sent to process */ 4 232 3 suspended bit (1) unal, /* process has responded to sus_ signal */ 4 233 3 ignore_cpulimit bit (1) unal, /* process is released, but timer can't be turned off */ 4 234 3 deferral_logged bit (1) unal, /* abs job deferral has already been logged once */ 4 235 3 save_if_disconnected bit (1) unal, /* user wants process preserved across hangups */ 4 236 3 disconnected bit (1) unal, /* process is disconnected from terminal */ 4 237 3 disconnected_list bit (1) unal, /* this ate is on a list of disconnected processes */ 4 238 3 proc_create_ok bit (1) unal, /* lg_ctl_ has set the process creation variables */ 4 239 3 activity_can_unbump bit (1) unal, /* only bump pending is for inactivity */ 4 240 3 fpe_causes_logout bit (1) unal, /* "1"b means don't try to new_proc after fatal process error */ 4 241 3 user_specified_immediate bit (1) unal, /* "1"b -> don't wait around for process destruction. */ 4 242 3 uflags_pad bit (17) unal, 4 243 4 244 /* Information used by load_ctl_ for the process */ 4 245 2 user_weight fixed bin, /* usually 10 - used in load control */ 4 246 2 standby_line fixed bin, /* 0=user has primary line, 1=standby user */ 4 247 2 bump_grace fixed bin (71), /* bump grace in microseconds */ 4 248 4 249 4 250 /* Information for login server */ 4 251 2 login_server_info, 4 252 3 our_handle bit (72) aligned, /* how LS refers to us. */ 4 253 3 his_handle bit (72) aligned, /* how we talk to LS */ 4 254 3 termination_event_channel fixed bin (71), /* for process termination notifications to the LS */ 4 255 3 response_event_channel fixed bin (71), /* for other communications with the LS */ 4 256 3 process_id bit (36) aligned, /* process_id of login server */ 4 257 2 ls_pad (5) fixed bin; /* pad to 300 decimal words */ 4 258 4 259 /* values for ute.process_type */ 4 260 4 261 dcl (PT_INTERACTIVE initial (1), 4 262 PT_ABSENTEE initial (2), 4 263 PT_DAEMON initial (3)) fixed bin internal static options (constant); 4 264 4 265 dcl PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init( 4 266 "INVALID-TYPE", 4 267 "interactive", 4 268 "absentee", 4 269 "daemon"); 4 270 4 271 dcl TABLE_NAMES (0:3) char(20) int static options(constant) init( 4 272 "UNKNOWN-TABLE", 4 273 "answer_table", 4 274 "absentee_user_table", 4 275 "daemon_user_table"); 4 276 4 277 4 278 /* values for ute.pw_flags.mask_ctl */ 4 279 4 280 dcl (DO_MASK init ("00"b), 4 281 DONT_MASK init ("01"b), 4 282 DERIVE_MASK init ("10"b)) bit (2) internal static options (constant); 4 283 4 284 dcl MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init( 4 285 "do_mask", "dont_mask", "derive_mask", ""); 4 286 4 287 4 288 /* names for ute.pw_flags */ 4 289 4 290 dcl PW_FLAG_NAMES (9) char (12) varying int static options(constant) init( 4 291 "cpw", 4 292 "generate_pw", 4 293 "dial_pw", 4 294 "slave_pw", 4 295 "cdp", 4 296 "cda", 4 297 "auth_given", 4 298 "noprint", 4 299 "operator"); 4 300 4 301 /* names for ute.uflags */ 4 302 4 303 dcl UFLAG_NAMES (19) char (24) varying int static options (constant) init ( 4 304 "dont_call_init_admin", 4 305 "ip_given", 4 306 "ss_given", 4 307 "lvs_attached", 4 308 "send_initial_string", 4 309 "adjust_abs_q_no", 4 310 "foreground_secondary_ok", 4 311 "foreground_job", 4 312 "sus_sent", 4 313 "suspended", 4 314 "ignore_cpulimit", 4 315 "deferral_logged", 4 316 "save_if_disconnected", 4 317 "disconnected", 4 318 "disconnected_list", 4 319 "proc_create_ok", 4 320 "activity_can_unbump", 4 321 "fpe_causes_logout", 4 322 "user_specified_immediate"); 4 323 4 324 /* names for ute.abs_flags */ 4 325 4 326 dcl ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init ( 4 327 "abs_run", 4 328 "notify"); 4 329 4 330 /* names of ute.dial_server_flags */ 4 331 4 332 dcl DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init ( 4 333 "registered", 4 334 "privileged"); 4 335 4 336 /* values of ute.login_result */ 4 337 4 338 dcl LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init( 4 339 "logged in", 4 340 "login failed, hangup", 4 341 "login failed, try again"); 4 342 4 343 /* END INCLUDE FILE ... user_table_entry.incl.pl1 */ 309 310 /* BEGIN INCLUDE FILE ... user_table_header.incl.pl1 */ 5 2 5 3 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 5 4 /* */ 5 5 /* This include file declares the header shared by the answer_table, */ 5 6 /* absentee_user_table and daemon_user_table include files. */ 5 7 /* */ 5 8 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 5 9 5 10 /****^ HISTORY COMMENTS: 5 11* 1) change(87-04-26,GDixon), approve(87-07-13,MCR7741), 5 12* audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056): 5 13* Initial coding. 5 14* END HISTORY COMMENTS */ 5 15 5 16 dcl 1 ut_header aligned based, /* header shared by all user control tables. */ 5 17 2 header_version fixed bin, /* version of the header (3) */ 5 18 2 entry_version fixed bin, /* version of user table entries */ 5 19 2 user_table_type fixed bin, /* 1 interactive, 2 absentee, 3 daemon */ 5 20 2 header_length fixed bin, /* length of the header */ 5 21 2 max_size fixed bin, /* max number of entries in this table */ 5 22 2 current_size fixed bin, /* actual size of table (in entries) */ 5 23 2 number_free fixed bin, /* number of free entries in the table. */ 5 24 2 first_free fixed bin, /* index of first entry in the free list. */ 5 25 2 as_procid bit (36), /* process ID of user table manager process */ 5 26 2 ut_header_pad fixed bin; 5 27 5 28 /* END INCLUDE FILE ... user_table_header.incl.pl1 */ 310 311 312 end parse_ftp_login_line_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 07/13/88 0938.8 parse_ftp_login_line_.pl1 >special_ldd>install>MR12.2-1047>parse_ftp_login_line_.pl1 307 1 08/06/87 0913.0 answer_table.incl.pl1 >ldd>include>answer_table.incl.pl1 308 2 08/06/87 0913.6 user_attributes.incl.pl1 >ldd>include>user_attributes.incl.pl1 2-112 3 07/13/88 0900.1 user_abs_attributes.incl.pl1 >special_ldd>install>MR12.2-1047>user_abs_attributes.incl.pl1 309 4 07/13/88 0903.2 user_table_entry.incl.pl1 >special_ldd>install>MR12.2-1047>user_table_entry.incl.pl1 310 5 08/06/87 0913.6 user_table_header.incl.pl1 >ldd>include>user_table_header.incl.pl1 NAMES DECLARED IN THIS COMPILATION. IDENTIFIER OFFSET LOC STORAGE CLASS DATA TYPE ATTRIBUTES AND REFERENCES (* indicates a set context) NAMES DECLARED BY DECLARE STATEMENT. addr builtin function dcl 103 ref 141 141 166 166 173 173 209 209 219 219 226 226 268 268 286 286 ansp 000212 automatic pointer initial dcl 1-53 set ref 1-53* arg 000154 automatic char(24) packed unaligned dcl 59 set ref 138* 140 141* 146 147 149 152 152 156 209* 211* 294 as_data_$login_args 000032 external static structure level 1 dcl 94 as_data_$max_user_ring 000034 external static fixed bin(35,0) dcl 99 ref 214 as_error_table_$bad_login_arg_msg 000020 external static fixed bin(35,0) dcl 84 ref 155 as_error_table_$long_ip_ss_args 000022 external static fixed bin(35,0) dcl 85 ref 179 271 as_error_table_$no_login_arg_msg 000016 external static fixed bin(35,0) dcl 83 ref 291 at 100 based structure level 2 dcl 4-78 ate_p parameter pointer dcl 46 ref 13 108 auth_given 17(06) based bit(1) level 3 packed packed unaligned dcl 4-78 set ref 110* 235* authorization 000102 automatic bit(72) dcl 55 set ref 228* 236 authorization_string 000104 automatic char(150) packed unaligned dcl 56 set ref 176* 189 226* 228 brief 100(10) based bit(1) level 3 packed packed unaligned dcl 4-78 set ref 114* bumping 100(09) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 4-78 in procedure "parse_ftp_login_line_" set ref 111* 197* bumping 77(09) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 4-78 in procedure "parse_ftp_login_line_" set ref 200* ch based char(1) array packed unaligned dcl 67 set ref 141 141 166 166 173 173 209 209 219 219 226 226 268 268 286 286 char64 000171 automatic char(64) packed unaligned dcl 62 set ref 116* 117* 125 127 130 131 173* 180 185 268* 272 275 code parameter fixed bin(35,0) dcl 46 set ref 13 107* 117* 118 121* 141* 142 143* 155* 166* 167 173* 174 179* 209* 210 211* 212 219* 220 226* 227 228* 229 268* 269 271* 286* 287 290 291* convert_authorization_$from_string 000010 constant entry external dcl 77 ref 228 cv_dec_check_ 000014 constant entry external dcl 79 ref 211 errarg parameter char dcl 46 set ref 13 156* 180* 231* 272* 292* 294* error_table_$bad_arg 000024 external static fixed bin(35,0) dcl 86 ref 121 error_table_$noarg 000026 external static fixed bin(35,0) dcl 87 ref 142 290 false constant bit(1) initial dcl 71 ref 113 197 ftp_misc_$ftp_login_responder 000030 external static structure level 1 dcl 89 guaranteed_login 100(03) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 4-78 in procedure "parse_ftp_login_line_" set ref 202* guaranteed_login 77(03) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 4-78 in procedure "parse_ftp_login_line_" set ref 204* hbound builtin function dcl 103 ref 160 home_dir 36 based char(64) level 2 packed packed unaligned dcl 4-78 set ref 166* 168 i 000100 automatic fixed bin(17,0) dcl 54 set ref 173* 178 185 185 186 189 268* 270 275 275 276 index builtin function dcl 103 ref 125 init_proc 56 based char(64) level 2 packed packed unaligned dcl 4-78 set ref 176 185* 189* 275* 302* initial_ring 101 based fixed bin(17,0) level 2 dcl 4-78 set ref 211* 213 214 ip_given 431(01) based bit(1) level 3 packed packed unaligned dcl 4-78 set ref 187* 304* ip_len 76 based fixed bin(17,0) level 2 packed packed unaligned dcl 4-78 set ref 176 186* 270 275 305* j 000152 automatic fixed bin(17,0) dcl 57 set ref 117* 125 127 131 139 141* 163 166* 170 173* 206 209* 216 219* 223 226* 265 268* 284 286* jj 000153 automatic fixed bin(17,0) dcl 58 set ref 125* 126 130 131 131 136* 139* 139 141 141 141 163* 163 166 166 166 170* 170 173 173 173 206* 206 209 209 209 216* 216 219 219 219 223* 223 226 226 226 265* 265 268 268 268 284* 284 286 286 286 k 000170 automatic fixed bin(17,0) dcl 61 set ref 117* 120 141* 147* 147* 149 160 161 166* 209* 219* 226* 286* ll parameter fixed bin(17,0) dcl 46 set ref 13 117* 141 166 173 209 219 226 268 286 login_args 2 000032 external static char(24) array level 2 dcl 94 ref 147 login_code 416 based char(8) level 2 packed packed unaligned dcl 4-78 set ref 112* 286* login_flags 17 based structure level 2 dcl 4-78 login_parse_ 000012 constant entry external dcl 78 ref 117 141 166 173 209 219 226 268 286 lp parameter pointer dcl 46 set ref 13 117* 141 141 166 166 173 173 209 209 219 219 226 226 268 268 286 286 n_login_args 000032 external static fixed bin(35,0) level 2 dcl 94 ref 147 149 no_warning 77(19) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 4-78 in procedure "parse_ftp_login_line_" set ref 195* no_warning 100(19) based bit(1) level 3 in structure "ute" packed packed unaligned dcl 4-78 in procedure "parse_ftp_login_line_" set ref 192* npo 000211 automatic bit(1) packed unaligned dcl 63 set ref 113* 134* 188* 280* 299 null builtin function dcl 103 ref 1-53 4-76 outer_module 26 based char(32) level 2 packed packed unaligned dcl 4-78 set ref 219* overseer 1 000030 external static char(168) level 2 dcl 89 ref 302 pathlen 000030 external static fixed bin(35,0) level 2 dcl 89 ref 302 305 person 4 based char(24) level 2 packed packed unaligned dcl 4-78 set ref 127* 130* 134 prev_arg 000162 automatic char(24) packed unaligned dcl 60 set ref 140* 292 process_authorization 24 based bit(72) level 2 dcl 4-78 set ref 236* project 12 based char(12) level 2 packed packed unaligned dcl 4-78 set ref 131* ss_given 431(02) based bit(1) level 3 packed packed unaligned dcl 4-78 set ref 175 189 277* ss_len 76(18) based fixed bin(17,0) level 2 packed packed unaligned dcl 4-78 set ref 176 178 189 189 276* substr builtin function dcl 103 set ref 125 127 130 131 146 168 176 185* 185 189* 189 275* 275 302 true constant bit(1) initial dcl 71 ref 114 134 188 192 195 200 202 204 235 280 uflags 431 based structure level 2 dcl 4-78 ur_at 77 based structure level 2 dcl 4-78 user_abs_attributes based structure level 1 dcl 3-25 user_attributes based structure level 1 dcl 2-21 ut_header based structure level 1 dcl 5-16 ute based structure level 1 dcl 4-78 utep 000214 automatic pointer initial dcl 4-76 set ref 108* 110 111 112 114 127 130 131 134 166 168 175 176 176 176 178 185 186 187 189 189 189 189 192 195 197 200 202 204 211 213 214 219 235 236 270 275 275 276 277 286 302 304 305 4-76* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. ABS_ATTRIBUTE_NAMES internal static varying char(28) initial array dcl 3-38 ABS_FLAG_NAMES internal static varying char(8) initial array dcl 4-326 ALT_USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 2-77 ANSTBL_version_4 internal static fixed bin(17,0) initial dcl 1-51 AT_NORMAL internal static char(8) initial packed unaligned dcl 1-116 AT_SHUTDOWN internal static char(8) initial packed unaligned dcl 1-116 AT_SPECIAL internal static char(8) initial packed unaligned dcl 1-116 DERIVE_MASK internal static bit(2) initial packed unaligned dcl 4-280 DIAL_SERVER_FLAG_NAMES internal static varying char(12) initial array dcl 4-332 DONT_MASK internal static bit(2) initial packed unaligned dcl 4-280 DO_MASK internal static bit(2) initial packed unaligned dcl 4-280 LOGIN_RESULT_VALUES internal static varying char(24) initial array dcl 4-338 MASK_CTL_NAMES internal static varying char(12) initial array dcl 4-284 PROCESS_TYPE_NAMES internal static varying char(12) initial array dcl 4-265 PT_ABSENTEE internal static fixed bin(17,0) initial dcl 4-261 PT_DAEMON internal static fixed bin(17,0) initial dcl 4-261 PT_INTERACTIVE internal static fixed bin(17,0) initial dcl 4-261 PW_FLAG_NAMES internal static varying char(12) initial array dcl 4-290 TABLE_NAMES internal static char(20) initial array packed unaligned dcl 4-271 UFLAG_NAMES internal static varying char(24) initial array dcl 4-303 USER_ATTRIBUTES_always_allowed internal static bit(36) initial dcl 2-100 USER_ATTRIBUTES_default_in_pdt internal static bit(36) initial dcl 2-104 USER_ATTRIBUTES_settable_by_user internal static bit(36) initial dcl 2-108 USER_ATTRIBUTE_NAMES internal static char(20) initial array packed unaligned dcl 2-50 UTE_SIZE internal static fixed bin(17,0) initial dcl 1-120 UTE_version_4 internal static fixed bin(17,0) initial dcl 4-74 anstbl based structure level 1 dcl 1-55 NAMES DECLARED BY EXPLICIT CONTEXT. arg_handler 000000 constant label array(38) dcl 163 set ref 160 161 badarg 000411 constant label dcl 155 ref 146 160 168 212 213 214 239 exit 001400 constant label dcl 299 ref 144 lp_error 001356 constant label dcl 290 ref 167 174 210 220 227 269 287 npo_handler 001276 constant label dcl 280 ref 152 nxarg 000255 constant label dcl 139 ref 169 191 196 201 205 215 221 237 278 282 288 parse_ftp_login_line_ 000104 constant entry external dcl 13 word_handler 001301 constant label dcl 284 ref 149 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1604 1642 1417 1614 Length 2164 1417 36 306 165 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME parse_ftp_login_line_ 212 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME parse_ftp_login_line_ 000100 i parse_ftp_login_line_ 000102 authorization parse_ftp_login_line_ 000104 authorization_string parse_ftp_login_line_ 000152 j parse_ftp_login_line_ 000153 jj parse_ftp_login_line_ 000154 arg parse_ftp_login_line_ 000162 prev_arg parse_ftp_login_line_ 000170 k parse_ftp_login_line_ 000171 char64 parse_ftp_login_line_ 000211 npo parse_ftp_login_line_ 000212 ansp parse_ftp_login_line_ 000214 utep parse_ftp_login_line_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. call_ext_out_desc return_mac ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. convert_authorization_$from_string cv_dec_check_ login_parse_ THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. as_data_$login_args as_data_$max_user_ring as_error_table_$bad_login_arg_msg as_error_table_$long_ip_ss_args as_error_table_$no_login_arg_msg error_table_$bad_arg error_table_$noarg ftp_misc_$ftp_login_responder LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 13 000077 1 53 000117 4 76 000121 107 000122 108 000124 110 000127 111 000131 112 000133 113 000136 114 000137 116 000141 117 000144 118 000176 120 000201 121 000204 122 000207 125 000210 126 000222 127 000223 128 000227 130 000230 131 000235 134 000243 136 000251 138 000252 139 000255 140 000257 141 000265 142 000334 143 000341 144 000342 146 000343 147 000347 148 000367 149 000371 152 000401 155 000411 156 000415 157 000422 160 000423 161 000425 163 000426 166 000430 167 000500 168 000503 169 000510 170 000511 173 000513 174 000562 175 000565 176 000571 178 000600 179 000603 180 000606 181 000613 185 000614 186 000620 187 000623 188 000625 189 000627 191 000636 192 000637 195 000642 196 000644 197 000645 200 000650 201 000652 202 000653 204 000656 205 000660 206 000661 209 000663 210 000732 211 000735 212 000760 213 000763 214 000765 215 000770 216 000771 219 000773 220 001043 221 001046 223 001047 226 001051 227 001120 228 001123 229 001147 231 001152 232 001157 235 001160 236 001163 237 001166 239 001167 265 001170 268 001172 269 001241 270 001244 271 001253 272 001256 273 001263 275 001264 276 001271 277 001273 278 001275 280 001276 282 001300 284 001301 286 001303 287 001352 288 001355 290 001356 291 001362 292 001364 293 001371 294 001372 295 001377 299 001400 302 001402 304 001410 305 001412 312 001414 ----------------------------------------------------------- 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