1 /*  BEGIN INCLUDE FILE ... user_table_entry.incl.pl1 */
  2 
  3 /* *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
  4 /*                                                                           */
  5 /* This include file requires that the user include                          */
  6 /* user_attributes.incl.pl1 as well.  It also includes                       */
  7 /* abs_attributes.incl.pl1 itself.                                           */
  8 /*                                                                           */
  9 /* This include file must be included to use absentee_user_table.incl.pl1,   */
 10 /* answer_table.incl.pl1, and daemon_user_table.incl.pl1.                    */
 11 /*                                                                           */
 12 /* *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
 13 
 14 /****^  HISTORY COMMENTS:
 15   1) change(81-12-21,Gilcrease), approve(86-03-27,MCR7370),
 16      audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082):
 17      This comment for hcom.
 18      81-12-21  E. N. Kittlitz. derived from abs_user_tab.incl.pl1,
 19      anstbl.incl.pl1, and dutbl.incl.pl1.
 20      82-01-02 E. N. Kittlitz. user_attributes.incl.pl1 changes
 21      84-04-04 BIM added privileged_dial_server and dial_server_ring
 22      84-07-12 BIM added min_process_authorization
 23      84-12-31 Keith Loepere added pdir_dir_quota
 24      85-01-16 by E. Swenson to add ute.session_uid
 25   2) change(85-11-16,Swenson), approve(87-07-13,MCR7737),
 26      audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056):
 27      Added fields for DSA login server support.
 28   3) change(86-03-27,Gilcrease), approve(86-03-27,MCR7370),
 29      audit(86-06-23,Lippard), install(86-06-30,MR12.0-1082):
 30      Add truncate_absout and restarted bit for -truncate absout, SCP6297.
 31   4) change(86-04-09,Herbst), approve(87-07-13,MCR7697),
 32      audit(87-04-14,GDixon), install(87-08-04,MR12.1-1056):
 33      Added disconnection_rel_minutes.
 34   5) change(86-12-08,GDixon), approve(87-07-13,MCR7741),
 35      audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056):
 36      Changed structure under ute.abs_attributes to use like structure in
 37      abs_attributes.incl.pl1.  This allows the same attributes to be used
 38      in abs_message_format.incl.pl1 and pit.incl.pl1 as well as this include
 39      file.
 40   6) change(87-04-14,GDixon), approve(87-07-13,MCR7741),
 41      audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056):
 42      Move constants for ute.pw_flags.mask_ctl from answer_table.incl.pl1.
 43   7) change(87-04-16,GDixon), approve(87-07-13,MCR7741),
 44      audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056):
 45       A) Global reorganization to locate things by type of data.
 46       B) Eliminate ute.uflags.logged_in.
 47   8) change(87-05-10,GDixon), approve(87-07-13,MCR7741),
 48      audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056):
 49       A) Reduced overlength person and project fields to proper length.
 50       B) Adjusted dialed-console section to begin on even word boundary.
 51   9) change(87-05-13,GDixon), approve(87-07-13,MCR7741),
 52      audit(87-07-16,Brunelle), install(87-08-04,MR12.1-1056):
 53      Add ute.line_type.
 54  10) change(87-11-19,Parisek), approve(88-02-11,MCR7849),
 55      audit(88-02-23,Lippard), install(88-07-13,MR12.2-1047):
 56      Added the lowest_ring element. Used the upper half of ute.highest_ring
 57      for the storage.  SCP6367
 58                                                    END HISTORY COMMENTS */
 59 
 60 /* format: style4 */
 61 
 62 /* *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
 63 /*                                                                           */
 64 /* Each of the named sections below defines a type of data.  Typing comes    */
 65 /* from data associated with the ute entry itself, with the person, with     */
 66 /* login argument data, from the main user of the data (eg, dialup_,         */
 67 /* load_ctl_, login server).  Each section begins on a double-word boundary  */
 68 /* and is an even number of words long.  The total structure is 300 decimal  */
 69 /* words long.                                                               */
 70 /*                                                                           */
 71 /* *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
 72 
 73 ^L
 74 dcl  UTE_version_4 fixed bin internal static options (constant) init (4);
 75 
 76 dcl  utep pointer automatic init (null);
 77 
 78 dcl  1 ute based (utep) aligned,                            /* individual entry in one of the user control tables */
 79 
 80 /* Variables which give state of this entry */
 81        2 active fixed bin,                                  /* state of entry. 0=>free. see dialup_values.incl.pl1 */
 82        2 process_type fixed bin,                            /* 1=interactive, 2=absentee, 3=daemon */
 83        2 ute_index fixed bin,                               /* index of ute in (anstbl autbl dutbl).entry array */
 84        2 next_free fixed bin,                               /* points to previous free entry */
 85 
 86 /* Information user gave about person_id associated with this entry. */
 87        2 person char (24) unal,                             /* user's name */
 88        2 project char (12) unal,                            /* project of absentee user */
 89        2 tag char (1) unal,                                 /* instance tag - someday will be generated */
 90        2 tag_pad bit (27) unal,
 91        2 anonymous fixed bin,                               /* 1 if anonymous, otherwise 0 */
 92        2 login_flags,                                       /* flags for login data */
 93          3 cpw bit (1) unal,                                /* flag for wish to change password */
 94          3 generate_pw bit (1) unal,                        /* flag meaning -generate_pw (-gpw) was used. */
 95          3 special_pw unal,                                 /* dial or slave */
 96            4 dial_pw bit (1) unal,                          /* true if dial -user */
 97            4 slave_pw bit (1) unal,                         /* true if slave -user */
 98          3 cdp bit (1) unal,                                /* flag for wish to change default project */
 99          3 cda bit (1) unal,                                /* flag to change default authorization */
100          3 auth_given bit (1) unal,                         /* flag to mean -authorization was used. */
101          3 noprint bit (1) unal,                            /* used at logout. inhibits printing. */
102          3 operator bit (1) unaligned,                      /* user specified -operator on login command line */
103          3 pw_pad bit (25) unal,                            /* spare parts */
104          3 mask_ctl bit (2) unal,                           /* bits controlling pw mask. See constants, below */
105                                                             /* Must remain last in pw_flags so it does not */
106                                                             /* appear in PW_FLAG_VALUES array below. */
107        2 generated_pw char (8) unal,                        /* user must type this as new password */
108        2 old_password char (8) unal,                        /* must match user's previous password (value scrambled) */
109        2 process_authorization bit (72),                    /* access_authorization of this process */
110 
111 /* Information user gave about process associated with this entry. */
112        2 outer_module char (32) unal,                       /* Name of console dim */
113        2 home_dir char (64) unal,                           /* initial home directory */
114        2 init_proc char (64) unal,                          /* name of login responder */
115        2 ip_len fixed bin (17) unal,                        /* length of initproc string */
116        2 ss_len fixed bin (17) unal,                        /* length of subsystem string */
117        2 ur_at like user_attributes aligned,                /* bits on means attributes given by user */
118        2 at like user_attributes aligned,                   /* bits on means attribute is on */
119        2 initial_ring fixed bin,                            /* ring process will be started in */
120        2 arg_count fixed bin,                               /* number of arguments to absentee control segment */
121        2 ln_args fixed bin,                                 /* length of string containing arguments */
122        2 arg_lengths_ptr ptr,                               /* pointer to array of argument lengths */
123        2 args_ptr ptr,                                      /* pointer to arguments to absentee control segment */
124 ^L
125 /* Most of the following information is relevant only to absentee processes */
126        2 input_seg char (168) unal,                         /* pathname of absentee control segment */
127        2 output_seg char (168) unal,                        /* pathname of absentee output file */
128        2 request_id fixed bin (71),                         /* time request was entered - used as uid of request */
129        2 reservation_id fixed bin (71),                     /* nonzero if job has a resource reservation */
130        2 message_id bit (72),                               /* message segment id assoc with absentee request */
131        2 deferred_time fixed bin (71),                      /* time at which absentee process should be created */
132        2 max_cpu_time fixed bin (35),                       /* maximum number of seconds this process can run */
133        2 queue fixed bin,                                   /* -1=daemon;0=interactive or foreground;>0=queue no.
134                                                                (but see uflags.adjust_abs_q_no). */
135        2 real_queue fixed bin,                              /* real queue number; ute.queue gets fudged sometimes */
136        2 abs_attributes aligned like user_abs_attributes,   /* include abs_attributes.incl.pl1 */
137        2 abs_flags,
138          3 abs_run bit (1) unal,                            /* on if job was started by abs run command */
139          3 notify bit (1) unal,                             /* on if user wants notification at login and logout */
140          3 abs_flags_pad bit (34) unal,
141        2 abs_group char (8) unal,                           /* original group before load_ctl_ moves it to absentee group */
142        2 sender char (32) unal,                             /* name of RJE station that job is from */
143        2 proxy_person char (28) unal,                       /* name of user who actually entered the request, if proxy */
144        2 proxy_project char (9) unal,
145        2 proxy_project_pad char (3) unal,
146        2 abs_pad fixed bin,
147 
148 /* Information about process actually created */
149        2 proc_id bit (36),                                  /* process id of absentee process */
150        2 session_uid fixed bin (35),                        /* Unique authentication session id */
151        2 process_authorization_range (2) bit (72) aligned,
152        2 audit bit (36),                                    /* audit flags for user */
153        2 lot_size fixed bin,                                /* Size of linkage offset table */
154        2 kst_size fixed bin,                                /* Size of process known segment table */
155        2 cls_size fixed bin,                                /* Size of process combined linkage */
156        2 sus_channel fixed bin (71),                        /* event channel on which suspended process is blocked */
157        2 lowest_ring fixed bin (17) unal,                   /* lowest ring permitted */
158        2 highest_ring fixed bin (17) unal,                  /* highest ring permitted */
159        2 pdir_lvix fixed bin (17) unal,                     /* index in disk table of lv where pdir is */
160        2 pdir_quota fixed bin (17) unal,                    /* process directory quota */
161        2 pdir_dir_quota fixed bin (17) unal,                /* process directory quota for dirs */
162        2 pdir_pad fixed bin(17) unal,
163        2 process_pad fixed bin,
164 
165 /* Information about primary terminal associated with this entry */
166        2 tty_name char (32) unal,                           /* absentee=>"abs1", etc.  daemon=>"bk", etc. */
167        2 terminal_type char (32) unaligned,                 /* terminal type */
168        2 line_type fixed bin,                               /* line type */
169        2 tty_id_code char (4) unal,                         /* "none" for absentee */
170        2 network_connection_type fixed bin,                 /* see net_event_message.incl.pl1 */
171        2 channel ptr unal,                                  /* points to CDT entry for user, if any */
172 
173 /* Variables useful for dialed terminals */
174        2 ndialed_consoles fixed bin,                        /* if master, number of slaves */
175        2 dial_qualifier char (22) unal,                     /* first argument to dial command */
176        2 dial_server_ring fixed bin (3) unsigned unaligned, /* dial server intends to attach dialing in channels at this ring. */
177        2 dial_server_flags,
178          3 registered_dial_server bit (1) unal,             /* process is a registered dial server */
179          3 privileged_dial_server bit (1) unal,             /* "1"b -> serves range of AIM classes */
180          3 dial_server_flags_pad bit (13) unal,             /* fill out the word */
181        2 dial_ev_chn fixed bin (71),                        /* if master, control event channel */
182 ^L
183 /* Information about usage/accounting.  Device usage meters are in a
184    separate segment, "devtab" */
185        2 pdtep ptr,                                         /* ptr to user's pdt entry, where usage meters live */
186        2 cpu_this_process fixed bin (71),                   /* cpu used so far this process */
187        2 cpu_usage fixed bin (71),                          /* total cpu time used in this session */
188        2 mem_usage fixed bin (71),                          /* memory usage for previous processes in session */
189        2 mem_this_process fixed bin (71),                   /* memory usage at last update */
190        2 last_update_time fixed bin (71),                   /* time of last account update */
191        2 session_cost float bin,                            /* dollar cost of session, for printing in logout messages */
192        2 ndevices fixed bin,                                /* Count of attached devices */
193        2 device_head fixed bin,                             /* Table index of head of device chain */
194        2 device_tail fixed bin,                             /* Table index of tail of device chain */
195        2 rs_number fixed bin (6) unsigned unal,             /* rate structure number */
196        2 rs_number_pad bit(30) unal,
197        2 usage_pad fixed bin,
198 
199 /* Information for dialup_ (control variables). */
200        2 event fixed bin (71),                              /* event associated with channel or user manager */
201        2 uprojp ptr,                                        /* ptr to user project sat entry */
202        2 login_time fixed bin (71),                         /* time when absentee user approved by lg_ctl_ */
203        2 cant_bump_until fixed bin (71),                    /* bump-protection clock */
204        2 recent_fatal_error_time fixed bin (71),            /* time of first error in the suspected loop */
205        2 recent_fatal_error_count fixed bin,                /* counter to detect fatal process error loops */
206        2 failure_reason fixed bin,                          /* why login refused 1=lg_ctl, 2=act_ctl, 3=load_ctl */
207        2 count fixed bin,                                   /* counter for logins and dialups */
208        2 n_processes fixed bin,                             /* number of processes created in this session */
209        2 lock_value fixed bin,                              /* number of locks set for this entry */
210        2 login_result fixed bin,                            /* 0=logged in;1=hopeless,hang him up;2=allow another attempt */
211        2 login_code char (8) unal,                          /* login command from LOGIN line */
212        2 preempted fixed bin,                               /* if ^= 0 user preempted (never for abs) */
213        2 destroy_flag fixed bin,                            /* >8 when awaiting destroy */
214        2 logout_type char (4) unal,                         /* type of logout */
215        2 logout_index fixed bin,                            /* to save logout handler index while waiting for termsgnl */
216        2 disconnection_rel_minutes fixed bin (17) unal,     /* disconnected this many minutes after login_time */
217        2 next_disconnected_ate_index fixed bin (17) unal,   /* thread of list of user's disconnected processes */
218        2 work_class fixed bin,                              /* work class used by priority scheduler */
219        2 group char (8) unal,                               /* party group identifier */
220        2 whotabx fixed bin,                                 /* index of user's entry in whotab */
221 ^L
222        2 uflags,                                            /* Miscellaneous flags */
223          3 dont_call_init_admin bit (1) unal,               /* Call overseer directly */
224          3 ip_given bit (1) unal,                           /* user gave an initproc arg on login line */
225          3 ss_given bit (1) unal,                           /* initial_procedure contains a subsystem name */
226          3 lvs_attached bit (1) unal,                       /* set and used by the lv_request_ procedure */
227          3 send_initial_string bit (1) unal,                /* initial string should be sent after login line read */
228          3 adjust_abs_q_no bit (1) unal,                    /* this is an absentee job; user_profile.queue is NOT true Q # */
229          3 foreground_secondary_ok bit (1) unal,            /* ok to login foreground absentee job as secondary */
230          3 foreground_job bit (1) unal,                     /* job was originally from foreground queue */
231          3 sus_sent bit (1) unal,                           /* sus_ ips signal has been sent to process */
232          3 suspended bit (1) unal,                          /* process has responded to sus_ signal */
233          3 ignore_cpulimit bit (1) unal,                    /* process is released, but timer can't be turned off */
234          3 deferral_logged bit (1) unal,                    /* abs job deferral has already been logged once */
235          3 save_if_disconnected bit (1) unal,               /* user wants process preserved across hangups */
236          3 disconnected bit (1) unal,                       /* process is disconnected from terminal */
237          3 disconnected_list bit (1) unal,                  /* this ate is on a list of disconnected processes */
238          3 proc_create_ok bit (1) unal,                     /* lg_ctl_ has set the process creation variables */
239          3 activity_can_unbump bit (1) unal,                /* only bump pending is for inactivity */
240          3 fpe_causes_logout bit (1) unal,                  /* "1"b means don't try to new_proc after fatal process error */
241          3 user_specified_immediate bit (1) unal,           /* "1"b -> don't wait around for process destruction. */
242          3 uflags_pad bit (17) unal,
243 
244 /* Information used by load_ctl_ for the process */
245        2 user_weight fixed bin,                             /* usually 10 - used in load control */
246        2 standby_line fixed bin,                            /* 0=user has primary line, 1=standby user */
247        2 bump_grace fixed bin (71),                         /* bump grace in microseconds */
248 
249 
250 /* Information for login server */
251        2 login_server_info,
252          3 our_handle bit (72) aligned,                     /* how LS refers to us. */
253          3 his_handle bit (72) aligned,                     /* how we talk to LS */
254          3 termination_event_channel fixed bin (71),        /* for process termination notifications to the LS */
255          3 response_event_channel fixed bin (71),           /* for other communications with the LS */
256          3 process_id bit (36) aligned,                     /* process_id of login server */
257        2 ls_pad (5) fixed bin;                              /* pad to 300 decimal words */
258 ^L
259 /* values for ute.process_type */
260 
261 dcl  (PT_INTERACTIVE initial (1),
262      PT_ABSENTEE initial (2),
263      PT_DAEMON initial (3)) fixed bin internal static options (constant);
264 
265 dcl  PROCESS_TYPE_NAMES (0:3) char(12) varying int static options(constant) init(
266           "INVALID-TYPE",
267           "interactive",
268           "absentee",
269           "daemon");
270 
271 dcl  TABLE_NAMES (0:3) char(20) int static options(constant) init(
272           "UNKNOWN-TABLE",
273           "answer_table",
274           "absentee_user_table",
275           "daemon_user_table");
276 
277 
278 /* values for ute.pw_flags.mask_ctl  */
279 
280 dcl  (DO_MASK init ("00"b),
281      DONT_MASK init ("01"b),
282      DERIVE_MASK init ("10"b)) bit (2) internal static options (constant);
283 
284 dcl  MASK_CTL_NAMES (0:3) char(12) varying int static options(constant) init(
285           "do_mask", "dont_mask", "derive_mask", "");
286 
287 
288 /* names for ute.pw_flags */
289 
290 dcl  PW_FLAG_NAMES (9) char (12) varying int static options(constant) init(
291           "cpw",
292           "generate_pw",
293           "dial_pw",
294           "slave_pw",
295           "cdp",
296           "cda",
297           "auth_given",
298           "noprint",
299           "operator");
300 ^L
301 /* names for ute.uflags */
302 
303 dcl  UFLAG_NAMES (19) char (24) varying int static options (constant) init (
304           "dont_call_init_admin",
305           "ip_given",
306           "ss_given",
307           "lvs_attached",
308           "send_initial_string",
309           "adjust_abs_q_no",
310           "foreground_secondary_ok",
311           "foreground_job",
312           "sus_sent",
313           "suspended",
314           "ignore_cpulimit",
315           "deferral_logged",
316           "save_if_disconnected",
317           "disconnected",
318           "disconnected_list",
319           "proc_create_ok",
320           "activity_can_unbump",
321           "fpe_causes_logout",
322           "user_specified_immediate");
323 
324 /* names for ute.abs_flags */
325 
326 dcl  ABS_FLAG_NAMES (2) char (8) varying int static options (constant) init (
327           "abs_run",
328           "notify");
329 
330 /* names of ute.dial_server_flags */
331 
332 dcl  DIAL_SERVER_FLAG_NAMES (2) char (12) varying int static options (constant) init (
333           "registered",
334           "privileged");
335 
336 /* values of ute.login_result */
337 
338 dcl  LOGIN_RESULT_VALUES (0:2) char(24) varying int static options(constant) init(
339           "logged in",
340           "login failed, hangup",
341           "login failed, try again");
342 
343 /*  END INCLUDE FILE ... user_table_entry.incl.pl1 */