1 /*  BEGIN:   active_connection_list.incl.pl1                  *  *  *  *  *  */
 2 
 3 /****^  HISTORY COMMENTS:
 4   1) change(85-04-01,Coren), approve(87-06-24,MCR7681), audit(87-03-26,GDixon),
 5      install(87-08-04,MR12.1-1056):
 6      Initial coding.
 7   2) change(87-03-31,GDixon), approve(87-06-24,MCR7681),
 8      audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056):
 9       A) Add CONNECTION_LIST_HASH_SIZE named constant.
10       B) Add initializer_of_list lock element to the table header.
11       C) Add force_accounting_flush_entry element to list entries.
12   3) change(87-05-13,Brunelle), approve(87-06-24,MCR7681),
13      audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056):
14      Add .owner_group_id field.
15                                                    END HISTORY COMMENTS */
16 
17 /* *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
18 /*                                                                           */
19 /* This include file defines the inner-ring system-wide table of network     */
20 /* connections that have been assigned to user processes, either by login    */
21 /* servers or as a result of dial_out operations.  This table is maintained  */
22 /* via gate entries: privileged ones, used by login servers, to add and      */
23 /* delete connections assigned to user processes; and by highly privileged   */
24 /* gates used by the Initializer to obtain connection data for all login     */
25 /* servers.                                                                  */
26 /*                                                                           */
27 /* *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  *  * */
28 
29 dcl active_connection_list_ptr pointer;
30 dcl actl_hash_table_size fixed bin;
31 
32 dcl 1 active_connection_list aligned based (active_connection_list_ptr),
33     2 header,
34       3 version char (8),                                   /* "actlNNNN" */
35       3 lock bit (36) aligned,                              /* to guard against simultaneous updates */
36       3 initializer_of_list bit (36) aligned,               /* lock ID of process which initialized the list. */
37       3 no_of_connections fixed bin,
38       3 first_connection_offset bit (18),
39       3 last_connection_offset bit (18),
40       3 header_pad (7) fixed bin (35),
41     2 hash_table,
42       3 size fixed bin,
43       3 entries (actl_hash_table_size refer (active_connection_list.hash_table.size)) bit (18) unaligned,
44     2 connection_area area (connection_area_size);          /* where connection entries are allocated */
45 
46 dcl connection_area_size fixed bin (18) unsigned;
47 
48 dcl act_ptr pointer;
49 
50 dcl 1 active_connection aligned based (act_ptr),
51     2 version char (8),                                     /* "actNNNNN" */
52     2 connection_name char (32),                            /* ID of the connection */
53     2 service_type char (32),                               /* network service type of this connection */
54     2 user_process_id bit (36) aligned,                     /* process to which this connection is assigned */
55     2 user_group_id char (32),                              /* person.project.tag */
56     2 owner_process_id bit (36) aligned,                    /* login server process, if any */
57     2 owner_group_id char (32),                             /* person.project.tag */
58     2 owner_terminate_event_channel fixed bin (71),         /* to wake up owner on process termination */
59     2 owner_initializer_id bit (72) aligned,                /* for communicating with initializer on termination if owner is dead */
60     2 force_disconnect_entry char (64),                     /* name of the entrypoint used to force disconnection */
61     2 force_accounting_flush_entry char (64),               /* name of the entrypoint used to force account update */
62     2 connection_handle fixed bin (35),                     /* handle used in calling service entries */
63     2 prev_connection bit (18) unaligned,                   /* offset of previous connection in list */
64     2 next_connection bit (18) unaligned,                   /* offset of next connection in list */
65     2 prev_hash bit (18) unaligned,                         /* offset of previous connection sharing hash table entry */
66     2 next_hash bit (18) unaligned,                         /* offset of next connection sharing hash table entry */
67     2 prev_connection_for_user bit (18) unaligned,          /* offset of previous connection for this user */
68     2 next_connection_for_user bit (18) unaligned,          /* offset of next connection for this user */
69     2 prev_connection_for_owner bit (18) unaligned,         /* offset of previous connection for this owner */
70     2 next_connection_for_owner bit (18) unaligned,         /* offset of next connection for this owner */
71     2 usage_type fixed bin,                                 /* login, dial_out, etc. -- see ls_usage_types.incl.pl1 */
72     2 flags,
73       3 delegated bit (1) unaligned,                        /* assigned to user by owner */
74       3 mbz_bits bit (35) unaligned;
75 
76 dcl ACTL_VERSION_1 char (8) internal static options (constant) initial ("actl0001");
77 dcl ACT_VERSION_1 char (8) internal static options (constant) initial ("act00001");
78 dcl ACT_HASH_TABLE_SIZE fixed bin int static options(constant) init(23);
79                                                             /* This constant must be odd, to cause allocation */
80                                                             /* area to begin on a doubleword boundary. */
81 
82 
83 /*  END OF:  active_connection_list.incl.pl1                  *  *  *  *  *  */