COMPILATION LISTING OF SEGMENT display_net_acct_table 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 1330.0 mst Tue Options: optimize map 1 /****^ *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Bull Inc., 1987 * 4* * * 5* *********************************************************** */ 6 7 /****^ HISTORY COMMENTS: 8* 1) change(87-04-07,Brunelle), approve(87-07-31,MCR7694), 9* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1055): 10* New program. 11* 2) change(87-04-21,Brunelle), approve(87-07-31,MCR7694), 12* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1055): 13* Changed to select active_connection_info based on both the process_id and 14* session_id. 15* 3) change(87-05-07,Brunelle), approve(87-07-31,MCR7694), 16* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1055): 17* Add $test entrypoint to allow display of a NAT in a test mode in another 18* directory. 19* 4) change(87-06-11,Brunelle), approve(87-07-31,MCR7694), 20* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1055): 21* Fix problem of not displaying proper user for a network record. 22* 5) change(87-06-16,Brunelle), approve(87-07-31,MCR7694), 23* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1055): 24* Changed the display values for delete & unassigned records in the brief 25* display. 26* 6) change(87-07-31,Brunelle), approve(87-07-31,MCR7694), 27* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1055): 28* Check version from network accounting. 29* Correct errors discovered during auditing. 30* END HISTORY COMMENTS */ 31 32 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 33 /* */ 34 /* TO BE SUPPLIED: */ 35 /* */ 36 /* This program should be changed to cycle entirely through the */ 37 /* network_account_array calling GET_CONNECTION_INFO for each entry and */ 38 /* storing data for later display. This would allow us to know the proper */ 39 /* sizes for each of the display fields and would also allow us to sort */ 40 /* output into any order the user wishes. */ 41 /* */ 42 /* * * * * * * * * * * * * * * * * * * * * * * * * * */ 43 44 /* format: style4 */ 45 46 display_net_acct_table: dnat: proc; 47 48 /* Utility to display the contents of the Network Account Table */ 49 50 /* External procedures */ 51 52 dcl com_err_ entry () options (variable); 53 dcl cu_$arg_count entry (fixed bin, fixed bin (35)); 54 dcl cu_$arg_ptr entry (fixed bin, ptr, fixed bin (21), fixed bin (35)); 55 dcl get_system_free_area_ entry () returns (ptr); 56 dcl hpriv_connection_list_$get_next_owner entry (bit (18), bit (36), ptr, fixed bin (35)); 57 dcl hpriv_connection_list_$get_next_user entry (bit (36), bit (18), ptr, fixed bin (35)); 58 dcl ioa_ entry () options (variable); 59 dcl network_accounting_gate_$dump_table entry (ptr, ptr, char (*), fixed bin (35)); 60 dcl network_accounting_gate_$get_path entry (char (*)); 61 dcl network_accounting_gate_$test entry (char (*)); 62 63 /* External */ 64 65 dcl error_table_$badopt fixed bin (35) ext static; 66 dcl error_table_$noentry fixed bin (35) ext static; 67 68 /* Conditions & Builtin */ 69 70 dcl (addr, index, null) builtin; 71 dcl (cleanup, linkage_error) condition; 72 73 /* Internal Static */ 74 75 dcl ME char (23) int static options (constant) init ("display_net_acct_table"); 76 77 /* Automatic */ 78 79 dcl access_error_string char (64); 80 dcl arg_count fixed bin; 81 dcl arg_len fixed bin (21); 82 dcl arg_ptr ptr; 83 dcl brief_sw bit (1); 84 dcl connection_name char (32); 85 dcl connection_offset bit (18); 86 dcl error fixed bin (35); 87 dcl error_message char (100); 88 dcl group_id char (32); 89 dcl i fixed bin; 90 dcl seeking_user bit (1); 91 dcl system_area_ptr ptr; 92 dcl table_path char (168); 93 94 dcl 1 aci aligned like active_connection_info; 95 96 /* Based */ 97 98 dcl arg char (arg_len) based (arg_ptr); 99 dcl system_area area based (system_area_ptr); 100 dcl test_dir char (arg_len) based (arg_ptr); 101 102 103 COMMON: brief_sw = "1"b; /* default to brief mode */ 104 105 /* see if they want long mode */ 106 call cu_$arg_count (arg_count, error); 107 if error ^= 0 then do; 108 call com_err_ (error, ME); 109 return; 110 end; 111 do i = 1 to arg_count; 112 call cu_$arg_ptr (i, arg_ptr, arg_len, 0); 113 if index (arg, "-") ^= 1 then do; 114 call com_err_ (0, ME, "Usage: ^a {-control_arg}", ME); 115 return; 116 end; 117 else if arg = "-brief" | arg = "-bf" then brief_sw = "1"b; 118 else if arg = "-long" | arg = "-lg" then brief_sw = "0"b; 119 else do; 120 call com_err_ (error_table_$badopt, ME, "^a", arg); 121 return; 122 end; 123 end; 124 125 network_account_array_ptr = null; 126 system_area_ptr = get_system_free_area_ (); 127 aci.version = ACT_INFO_VERSION_1; 128 129 on cleanup call CLEAN_UP; 130 on linkage_error begin; 131 access_error_string = "network_accounting_gate_"; 132 go to NO_ACCESS_ERROR; 133 end; 134 135 /* get location of the NAT being processed */ 136 call network_accounting_gate_$get_path (table_path); 137 138 /* get all entries in the NAT */ 139 call network_accounting_gate_$dump_table (system_area_ptr, network_account_array_ptr, error_message, error); 140 if error ^= 0 then do; 141 call com_err_ (error, ME, "Dumping table ^a", table_path); 142 go to RETURN; 143 end; 144 145 if network_account_array_ptr = null then go to TABLE_EMPTY; 146 147 else do; 148 if network_account_array.version ^= NET_ACCT_ARRAY_VERSION_1 then do; 149 call com_err_ (0, ME, 150 "Illegal version (^a) for net acct array. Should be ^a", 151 network_account_array.version, NET_ACCT_ARRAY_VERSION_1); 152 free network_account_array in (system_area); 153 network_account_array_ptr = null; 154 end; 155 end; 156 157 158 /* special case empty table */ 159 if network_account_array.count = 0 then do; 160 TABLE_EMPTY: call ioa_ ("Table ^a contains no entries.", table_path); 161 go to RETURN; 162 end; 163 164 call ioa_ ("Dumping Network Account Table^/Pathname: ^a", table_path); 165 166 if brief_sw then do; 167 call ioa_ (" 168 Network Connect 169 Channel Name Type Bytes Pkts Secs User"); 170 end; 171 172 /* in case we don't have access on hpriv_connection_list_ */ 173 on linkage_error begin; 174 access_error_string = "hpriv_connection_list_"; 175 go to NO_ACCESS_ERROR; 176 end; 177 178 do i = 1 to network_account_array.count; 179 network_account_data_ptr = addr (network_account_array.record (i)); 180 181 /* get information from the connection list about this user */ 182 call GET_CONNECTION_INFO; 183 184 call DISPLAY_THE_DATA_RECORD; 185 skip_this_entry: 186 end; 187 RETURN: 188 call CLEAN_UP; 189 190 return; 191 192 NO_ACCESS_ERROR: 193 call com_err_ (0, ME, "Sorry, you don't have access on ^a.", access_error_string); 194 go to RETURN; 195 196 197 /* entrypoint to allow display of NAT in test mode. This may be in a directory 198* other than the standard system directory */ 199 200 test: entry; 201 202 /* see if user gave directory to use */ 203 call cu_$arg_count (arg_count, error); 204 if error ^= 0 then do; 205 call com_err_ (error, ME || "$test"); 206 return; 207 end; 208 if arg_count = 0 then do; /* must give directory */ 209 call com_err_ (0, ME || "$test", "Must give name of test directory to use."); 210 return; 211 end; 212 213 network_account_array_ptr = null; 214 215 on linkage_error begin; 216 access_error_string = "network_accounting_gate_"; 217 go to NO_ACCESS_ERROR; 218 end; 219 220 call cu_$arg_ptr (1, arg_ptr, arg_len, error); 221 call network_accounting_gate_$test (test_dir); 222 go to RETURN; 223 224 CLEAN_UP: proc; 225 226 if network_account_array_ptr ^= null then 227 free network_account_array in (system_area); 228 229 end CLEAN_UP; 230 231 232 DISPLAY_THE_DATA_RECORD: proc; 233 234 /* subroutine to display the NAT record */ 235 236 if brief_sw then do; 237 call ioa_ ("^[D^; ^]^[U^; ^]^[P^; ^] ^13a ^[UNK ^s^;^5a^] ^6d ^6d ^6d ^[^.3b-^d^;^2s^a^]", 238 network_account_data.delete_sw, 239 network_account_data.unassigned_sw, 240 network_account_data.purged, 241 connection_name, 242 network_account_data.network_id < 0, 243 NETWORK_TYPE_VALUES (network_account_data.network_id), 244 network_account_data.byte_count, 245 network_account_data.packet_count, 246 network_account_data.connect_time, 247 group_id = "Unknown.Unk", 248 network_account_data.process_id, 249 network_account_data.session_handle, 250 group_id); 251 end; 252 253 else do; 254 255 call ioa_ ("^/User process ID: ^w", network_account_data.process_id); 256 call ioa_ ("Connection handle: ^d", network_account_data.session_handle); 257 call ioa_ ("Connection name: ^a", connection_name); 258 call ioa_ ("Network type: ^[UNKNOWN ^s^;^a ^](^d)", 259 network_account_data.network_id < 0, 260 NETWORK_TYPE_VALUES (network_account_data.network_id), network_account_data.network_id); 261 call ioa_ ("User group ID: ^a", group_id); 262 call ioa_ ("Bytes since last zeroed: ^d", network_account_data.byte_count); 263 call ioa_ ("Packets since last zeroed: ^d", network_account_data.packet_count); 264 call ioa_ ("Connect seconds since last zeroed: ^d", network_account_data.connect_time); 265 call ioa_ ("Delete switch: ^[on^;off^]", network_account_data.delete_sw); 266 call ioa_ ("Unassigned switch: ^[on^;off^]", network_account_data.unassigned_sw); 267 call ioa_ ("Purged switch: ^[on^;off^]", network_account_data.purged); 268 end; 269 270 end DISPLAY_THE_DATA_RECORD; 271 272 GET_CONNECTION_INFO: proc; 273 274 /* get connection list info for user of NAT record */ 275 276 if network_account_data.unassigned_sw then /* if unassigned connection then */ 277 seeking_user = "0"b; /* look in owner list only */ 278 else seeking_user = "1"b; /* else look in the user list first */ 279 connection_offset = "0"b; /* start with first connection for this process */ 280 281 retry_connection_seek: 282 if seeking_user then 283 call hpriv_connection_list_$get_next_user ((network_account_data.process_id), connection_offset, 284 addr (aci), error); 285 else call hpriv_connection_list_$get_next_owner (connection_offset, (network_account_data.process_id), 286 addr (aci), error); 287 288 if error = 0 then do; 289 290 /* we found an entry for this processid. if the session handle matches then 291* we are all done. else try to find the next entry for this processid */ 292 293 if aci.connection_handle ^= network_account_data.session_handle then do; 294 connection_offset = aci.offset; /* set to try for next entry for this user */ 295 go to retry_connection_seek; /* and try again */ 296 end; 297 end; 298 else do; 299 300 /* no entry for this processid. if we are seeking for the user, then shift 301* to seek if there are any entries where this processid is the owner of the 302* session. else, punt out with an unknown name and groupid */ 303 304 if error = error_table_$noentry then do; 305 fake_no_entry: if seeking_user then do; 306 seeking_user = "0"b; /* set to seek for owner of this session */ 307 connection_offset = "0"b; /* and start at the beginning of the owners chain */ 308 go to retry_connection_seek; /* and try again */ 309 end; 310 connection_name = "UNKNOWN"; 311 group_id = "Unknown.Unk"; 312 return; 313 end; 314 else do; 315 call com_err_ (error, ME, "Getting connection list entry."); 316 go to RETURN; 317 end; 318 end; 319 connection_name = aci.connection_name; 320 if network_account_data.unassigned_sw then 321 group_id = aci.owner_group_id; 322 else group_id = aci.user_group_id; 323 324 end GET_CONNECTION_INFO; 325 /* BEGIN: active_connection_info.incl.pl1 * * * * * */ 1 2 1 3 /****^ HISTORY COMMENTS: 1 4* 1) change(86-06-30,Coren), approve(86-06-30,MCR7415), 1 5* audit(86-07-02,Margolin), install(86-07-11,MR12.0-1092): 1 6* Initial implementation. 1 7* 2) change(87-04-07,GDixon), approve(87-06-24,MCR7681), 1 8* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 1 9* Add .force_accounting_flush_entry element. 1 10* 3) change(87-05-13,Brunelle), approve(87-06-24,MCR7681), 1 11* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 1 12* Add .owner_group_id field. 1 13* END HISTORY COMMENTS */ 1 14 1 15 /* Defines the information returned to the outer ring about a single entry in 1 16* the active connection list */ 1 17 1 18 dcl active_connection_info_ptr pointer; 1 19 1 20 dcl 1 active_connection_info aligned based (active_connection_info_ptr), 1 21 2 version char (8), /* "actiNNNN" */ 1 22 2 connection_name char (32), /* name of the connection */ 1 23 2 network_service_type char (32), /* name of service */ 1 24 2 user_process_id bit (36), /* process assigned as the user */ 1 25 2 user_group_id char (32), /* likewise */ 1 26 2 owner_process_id bit (36), /* process that created the connection */ 1 27 2 owner_group_id char (32), /* likewise */ 1 28 2 terminate_event_channel fixed bin (71), /* channel to wake the owner if user process terminates */ 1 29 2 owner_initializer_handle bit (72), /* handle for communicating with initializer */ 1 30 2 force_disconnect_entry char (64), /* name of entry to call to force disconnection */ 1 31 /* (in case owner is gone) */ 1 32 2 force_accounting_flush_entry char (64), /* name of entry to call to force accounting flush */ 1 33 2 connection_handle fixed bin (35), /* handle used in calling service entries */ 1 34 2 usage_type fixed bin, /* login, etc. see ls_usage_types.incl.pl1 */ 1 35 2 flags, 1 36 3 delegated bit (1) unaligned, /* assigned to user by owner */ 1 37 3 mbz_bits bit (35) unaligned, 1 38 2 offset bit (18); /* offset of entry in connection list segment */ 1 39 1 40 dcl ACT_INFO_VERSION_1 char (8) internal static options (constant) initial ("acti0001"); 1 41 1 42 1 43 /* END OF: active_connection_info.incl.pl1 * * * * * */ 325 326 /* BEGIN INCLUDE FILE ... net_event_message.incl.pl1 */ 2 2 2 3 /****^ HISTORY COMMENTS: 2 4* 1) change(86-07-30,Kissel), approve(86-07-30,MCR7475), audit(86-08-04,Coren), 2 5* install(86-10-09,MR12.0-1181): 2 6* This include file was formerly tty_event_message.incl.pl1. It has been 2 7* updated with different fields and new constants, and renamed to 2 8* net_event_message.incl.pl1 2 9* 2) change(87-04-20,GDixon), approve(87-07-13,MCR7694), 2 10* audit(87-06-24,Hartogs), install(87-08-04,MR12.1-1056): 2 11* Add NETWORK_TYPE_VALUES array. 2 12* END HISTORY COMMENTS */ 2 13 2 14 /* describes event message passed with wakeups from the tty DIM */ 2 15 /* Created 5/24/76 by Robert S. Coren */ 2 16 2 17 /* format: style3,linecom,ifthenstmt,indthenelse,^indnoniterdo,indnoniterend,initcol3,dclind5,idind32 */ 2 18 2 19 dcl net_event_message_arg fixed bin (71); /* For calling IPC */ 2 20 dcl NET_EVENT_MESSAGE_VERSION_1 bit (2) internal static options (constant) init ("10"b); 2 21 2 22 dcl 1 net_event_message aligned based (addr (net_event_message_arg)), 2 23 2 version bit (2) unaligned, /* Currently version 1 */ 2 24 2 reason bit (16) unaligned, /* Additional info about the event */ 2 25 2 pad bit (6) unaligned, /* Must be zero */ 2 26 2 network_type fixed bin (4) unsigned unaligned, 2 27 /* See below for constants */ 2 28 2 type fixed bin (8) unsigned unaligned, 2 29 /* Type of interrupt, see below */ 2 30 2 handle fixed bin (35) aligned;/* Caller's handle (devx for MCS, handle for DSA) */ 2 31 2 32 /* Network type constants */ 2 33 2 34 dcl MCS_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (0); 2 35 dcl DSA_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (1); 2 36 dcl MOWSE_NETWORK_TYPE fixed bin (4) unsigned internal static options (constant) init (2); 2 37 2 38 dcl NETWORK_TYPE_VALUES (0:2) char(8) varying int static options(constant) init( 2 39 "MCS", 2 40 "DSA", 2 41 "MOWSE"); 2 42 2 43 2 44 /* MCS event message type constants */ 2 45 2 46 dcl MAX_MCS_EVENT_MSG_TYPE fixed bin internal static options (constant) init (8); 2 47 2 48 dcl MCS_UNSPECIFIED_MSG fixed bin internal static options (constant) init (0); 2 49 /* used for "start" order, etc. */ 2 50 dcl MCS_DIALUP_MSG fixed bin internal static options (constant) init (1); 2 51 /* dialup */ 2 52 dcl MCS_HANGUP_MSG fixed bin internal static options (constant) init (2); 2 53 /* hangup */ 2 54 dcl MCS_DIALOUT_MSG fixed bin internal static options (constant) init (3); 2 55 /* dialout status returned */ 2 56 dcl MCS_QUIT_MSG fixed bin internal static options (constant) init (4); 2 57 /* quit */ 2 58 dcl MCS_READ_MSG fixed bin internal static options (constant) init (5); 2 59 /* input arrived */ 2 60 dcl MCS_WRITE_MSG fixed bin internal static options (constant) init (6); 2 61 /* output completed */ 2 62 dcl MCS_LINE_STATUS_MSG fixed bin internal static options (constant) init (7); 2 63 /* control tables sent status */ 2 64 dcl MCS_MASKED_MSG fixed bin internal static options (constant) init (8); 2 65 /* channel masked by FNP */ 2 66 2 67 dcl MCS_MSG_TYPE_TO_PNAME (0:8) char (20) internal static options (constant) init ("unspecified", 2 68 /* 0 */ 2 69 "dialup", /* 1 */ 2 70 "hangup", /* 2 */ 2 71 "dialout status", /* 3 */ 2 72 "quit", /* 4 */ 2 73 "read", /* 5 */ 2 74 "write", /* 6 */ 2 75 "line status", /* 7 */ 2 76 "masked"); /* 8 */ 2 77 2 78 /* DSA event message type constants */ 2 79 2 80 dcl MAX_DSA_EVENT_MSG_TYPE fixed bin internal static options (constant) init (19); 2 81 2 82 dcl DSA_UNSPECIFIED_MSG fixed bin (8) uns internal static options (constant) init (0); 2 83 dcl DSA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (1); 2 84 dcl DSA_DATA_ATTENTION_MSG fixed bin (8) uns internal static options (constant) init (2); 2 85 dcl DSA_DEMAND_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (3); 2 86 dcl DSA_DEMAND_TURN_MSG fixed bin (8) uns internal static options (constant) init (4); 2 87 dcl DSA_DEMAND_TURN_ACK_MSG fixed bin (8) uns internal static options (constant) init (5); 2 88 dcl DSA_PURGE_MSG fixed bin (8) uns internal static options (constant) init (6); 2 89 dcl DSA_RECOVER_MSG fixed bin (8) uns internal static options (constant) init (7); 2 90 dcl DSA_RECOVER_ACK_MSG fixed bin (8) uns internal static options (constant) init (8); 2 91 dcl DSA_RELEASE_SRU_MSG fixed bin (8) uns internal static options (constant) init (9); 2 92 dcl DSA_RESUME_MSG fixed bin (8) uns internal static options (constant) init (10); 2 93 dcl DSA_RESUME_ACK_MSG fixed bin (8) uns internal static options (constant) init (11); 2 94 dcl DSA_SUSPEND_MSG fixed bin (8) uns internal static options (constant) init (12); 2 95 dcl DSA_SUSPEND_ACK_MSG fixed bin (8) uns internal static options (constant) init (13); 2 96 dcl DSA_TERM_ABNORMAL_MSG fixed bin (8) uns internal static options (constant) init (14); 2 97 dcl DSA_ESTABLISHMENT_MSG fixed bin (8) uns internal static options (constant) init (15); 2 98 dcl DSA_TERMINATED_MSG fixed bin (8) uns internal static options (constant) init (16); 2 99 dcl DSA_USER_UNASSIGN_MSG fixed bin (8) uns internal static options (constant) init (17); 2 100 dcl DSA_DATA_INPUT_MSG fixed bin (8) uns internal static options (constant) init (18); 2 101 dcl DSA_DATA_OUTPUT_MSG fixed bin (8) uns internal static options (constant) init (19); 2 102 2 103 dcl DSA_MSG_TYPE_TO_PNAME (0:19) char (20) internal static options (constant) init ("unspecified", 2 104 /* 0 */ 2 105 "attention", /* 1 */ 2 106 "data_attention", /* 2 */ 2 107 "demand_release_sru", /* 3 */ 2 108 "demand_turn", /* 4 */ 2 109 "demand_turn_ack", /* 5 */ 2 110 "purge", /* 6 */ 2 111 "recover", /* 7 */ 2 112 "recover_ack", /* 8 */ 2 113 "release_sru", /* 9 */ 2 114 "resume", /* 10 */ 2 115 "resume_ack", /* 11 */ 2 116 "suspend", /* 12 */ 2 117 "suspend_ack", /* 13 */ 2 118 "terminate_abnormal", /* 14 */ 2 119 "establishment", /* 15 */ 2 120 "terminated", /* 16 */ 2 121 "user_unassign", /* 17 */ 2 122 "data input", /* 18 */ 2 123 "data output"); /* 19 */ 2 124 2 125 /* END INCLUDE FILE ... net_event_message.incl.pl1 */ 326 327 /* BEGIN INCLUDE FILE: network_account_array.incl.pl1 */ 3 2 3 3 /****^ HISTORY COMMENTS: 3 4* 1) change(86-02-21,Herbst), approve(87-07-31,MCR7694), 3 5* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1056): 3 6* Added process_id field and replaced group_id with it in the key. 3 7* 2) change(87-04-09,Brunelle), approve(87-07-31,MCR7694), 3 8* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1056): 3 9* Completely restructured. 3 10* 3) change(87-05-07,Brunelle), approve(87-07-31,MCR7694), 3 11* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1056): 3 12* Added purged and accounting bit fields. 3 13* 4) change(87-07-31,Brunelle), approve(87-07-31,MCR7694), 3 14* audit(87-07-31,GDixon), install(87-08-04,MR12.1-1056): 3 15* Moved version field from the network_account_data structure to the 3 16* network_account_array structure and changed the value of the constant to 3 17* reflect the move. 3 18* END HISTORY COMMENTS */ 3 19 3 20 /* format: style4 */ 3 21 /* used by the $dump_table, $get_process_total and $read_and_reset_table 3 22* entrypoints of network_accounting_.pl1 */ 3 23 3 24 dcl network_account_array_ptr ptr; 3 25 dcl network_account_array_bound fixed bin; 3 26 3 27 dcl 1 network_account_array aligned based (network_account_array_ptr), 3 28 2 version char (8), 3 29 2 max_count fixed bin, 3 30 2 count fixed bin, 3 31 2 record (network_account_array_bound refer (network_account_array.max_count)) 3 32 aligned like network_account_data; 3 33 3 34 dcl network_account_data_ptr ptr; 3 35 3 36 dcl 1 network_account_data aligned based (network_account_data_ptr), 3 37 2 key, 3 38 3 process_id bit (36) aligned, /* of the process using the connection */ 3 39 3 session_handle fixed bin (35), /* identifier of the connection being charged */ 3 40 3 network_id fixed bin (35), /* identifies the network being used */ 3 41 2 switches unaligned, 3 42 3 delete_sw bit (1) unaligned, /* delete entry when next read */ 3 43 3 unassigned_sw bit (1) unaligned, /* owner connected to the session */ 3 44 3 purged bit (1) unaligned, /* network_accounting_ purged this record */ 3 45 3 accounting bit (1) unaligned, /* used by act_ctl_ */ 3 46 3 mbz bit (32) unaligned, 3 47 2 connect_time fixed bin (35), /* incremental seconds of connect time to charge */ 3 48 2 byte_count fixed bin (35), /* incremental count of bytes to be charged */ 3 49 2 packet_count fixed bin (35); /* incremental count of packets to be charged */ 3 50 3 51 dcl NET_ACCT_ARRAY_VERSION_1 char (8) int static options (constant) init ("NETACTA1"); 3 52 3 53 /* END INCLUDE FILE: network_account_array.incl.pl1 */ 327 328 329 end display_net_acct_table; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 08/04/87 1221.5 display_net_acct_table.pl1 >special_ldd>install>MR12.1-1054>display_net_acct_table.pl1 325 1 08/04/87 1140.5 active_connection_info.incl.pl1 >spec>install>1056>active_connection_info.incl.pl1 326 2 08/04/87 1139.3 net_event_message.incl.pl1 >spec>install>1056>net_event_message.incl.pl1 327 3 08/04/87 1139.3 network_account_array.incl.pl1 >spec>install>1056>network_account_array.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. ACT_INFO_VERSION_1 000014 constant char(8) initial unaligned dcl 1-40 ref 127 ME 000016 constant char(23) initial unaligned dcl 75 set ref 108* 114* 114* 120* 141* 149* 192* 205 209 315* NETWORK_TYPE_VALUES 000002 constant varying char(8) initial array dcl 2-38 set ref 237* 258* NET_ACCT_ARRAY_VERSION_1 000000 constant char(8) initial unaligned dcl 3-51 set ref 148 149* access_error_string 000114 automatic char(64) unaligned dcl 79 set ref 131* 174* 192* 216* aci 000272 automatic structure level 1 dcl 94 set ref 281 281 285 285 active_connection_info based structure level 1 dcl 1-20 addr builtin function dcl 70 ref 179 281 281 285 285 arg based char unaligned dcl 98 set ref 113 117 117 118 118 120* arg_count 000134 automatic fixed bin(17,0) dcl 80 set ref 106* 111 203* 208 arg_len 000135 automatic fixed bin(21,0) dcl 81 set ref 112* 113 117 117 118 118 120 120 220* 221 221 arg_ptr 000136 automatic pointer dcl 82 set ref 112* 113 117 117 118 118 120 220* 221 brief_sw 000140 automatic bit(1) unaligned dcl 83 set ref 103* 117* 118* 166 236 byte_count 5 based fixed bin(35,0) level 2 dcl 3-36 set ref 237* 262* cleanup 000100 stack reference condition dcl 71 ref 129 com_err_ 000010 constant entry external dcl 52 ref 108 114 120 141 149 192 205 209 315 connect_time 4 based fixed bin(35,0) level 2 dcl 3-36 set ref 237* 264* connection_handle 110 000272 automatic fixed bin(35,0) level 2 dcl 94 set ref 293 connection_name 000141 automatic char(32) unaligned dcl 84 in procedure "dnat" set ref 237* 257* 310* 319* connection_name 2 000272 automatic char(32) level 2 in structure "aci" dcl 94 in procedure "dnat" set ref 319 connection_offset 000151 automatic bit(18) unaligned dcl 85 set ref 279* 281* 285* 294* 307* count 3 based fixed bin(17,0) level 2 dcl 3-27 ref 159 178 cu_$arg_count 000012 constant entry external dcl 53 ref 106 203 cu_$arg_ptr 000014 constant entry external dcl 54 ref 112 220 delete_sw 3 based bit(1) level 3 packed unaligned dcl 3-36 set ref 237* 265* error 000152 automatic fixed bin(35,0) dcl 86 set ref 106* 107 108* 139* 140 141* 203* 204 205* 220* 281* 285* 288 304 315* error_message 000153 automatic char(100) unaligned dcl 87 set ref 139* error_table_$badopt 000034 external static fixed bin(35,0) dcl 65 set ref 120* error_table_$noentry 000036 external static fixed bin(35,0) dcl 66 ref 304 get_system_free_area_ 000016 constant entry external dcl 55 ref 126 group_id 000204 automatic char(32) unaligned dcl 88 set ref 237 237* 261* 311* 320* 322* hpriv_connection_list_$get_next_owner 000020 constant entry external dcl 56 ref 285 hpriv_connection_list_$get_next_user 000022 constant entry external dcl 57 ref 281 i 000214 automatic fixed bin(17,0) dcl 89 set ref 111* 112* 178* 179* index builtin function dcl 70 ref 113 ioa_ 000024 constant entry external dcl 58 ref 160 164 167 237 255 256 257 258 261 262 263 264 265 266 267 key based structure level 2 dcl 3-36 linkage_error 000106 stack reference condition dcl 71 ref 130 173 215 max_count 2 based fixed bin(17,0) level 2 dcl 3-27 ref 152 226 network_account_array based structure level 1 dcl 3-27 set ref 152 226 network_account_array_ptr 000406 automatic pointer dcl 3-24 set ref 125* 139* 145 148 149 152 153* 159 178 179 213* 226 226 network_account_data based structure level 1 dcl 3-36 network_account_data_ptr 000410 automatic pointer dcl 3-34 set ref 179* 237 237 237 237 237 237 237 237 237 237 255 256 258 258 258 262 263 264 265 266 267 276 281 285 293 320 network_accounting_gate_$dump_table 000026 constant entry external dcl 59 ref 139 network_accounting_gate_$get_path 000030 constant entry external dcl 60 ref 136 network_accounting_gate_$test 000032 constant entry external dcl 61 ref 221 network_id 2 based fixed bin(35,0) level 3 dcl 3-36 set ref 237 237 258 258 258* null builtin function dcl 70 ref 125 145 153 213 226 offset 113 000272 automatic bit(18) level 2 dcl 94 set ref 294 owner_group_id 34 000272 automatic char(32) level 2 dcl 94 set ref 320 packet_count 6 based fixed bin(35,0) level 2 dcl 3-36 set ref 237* 263* process_id based bit(36) level 3 dcl 3-36 set ref 237* 255* 281 285 purged 3(02) based bit(1) level 3 packed unaligned dcl 3-36 set ref 237* 267* record 4 based structure array level 2 dcl 3-27 set ref 179 seeking_user 000215 automatic bit(1) unaligned dcl 90 set ref 276* 278* 281 305 306* session_handle 1 based fixed bin(35,0) level 3 dcl 3-36 set ref 237* 256* 293 switches 3 based structure level 2 packed unaligned dcl 3-36 system_area based area(1024) dcl 99 ref 152 226 system_area_ptr 000216 automatic pointer dcl 91 set ref 126* 139* 152 226 table_path 000220 automatic char(168) unaligned dcl 92 set ref 136* 141* 160* 164* test_dir based char unaligned dcl 100 set ref 221* unassigned_sw 3(01) based bit(1) level 3 packed unaligned dcl 3-36 set ref 237* 266* 276 320 user_group_id 23 000272 automatic char(32) level 2 dcl 94 set ref 322 version based char(8) level 2 in structure "network_account_array" dcl 3-27 in procedure "dnat" set ref 148 149* version 000272 automatic char(8) level 2 in structure "aci" dcl 94 in procedure "dnat" set ref 127* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. DSA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 2-83 DSA_DATA_ATTENTION_MSG internal static fixed bin(8,0) initial unsigned dcl 2-84 DSA_DATA_INPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 2-100 DSA_DATA_OUTPUT_MSG internal static fixed bin(8,0) initial unsigned dcl 2-101 DSA_DEMAND_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 2-85 DSA_DEMAND_TURN_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 2-87 DSA_DEMAND_TURN_MSG internal static fixed bin(8,0) initial unsigned dcl 2-86 DSA_ESTABLISHMENT_MSG internal static fixed bin(8,0) initial unsigned dcl 2-97 DSA_MSG_TYPE_TO_PNAME internal static char(20) initial array unaligned dcl 2-103 DSA_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 2-35 DSA_PURGE_MSG internal static fixed bin(8,0) initial unsigned dcl 2-88 DSA_RECOVER_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 2-90 DSA_RECOVER_MSG internal static fixed bin(8,0) initial unsigned dcl 2-89 DSA_RELEASE_SRU_MSG internal static fixed bin(8,0) initial unsigned dcl 2-91 DSA_RESUME_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 2-93 DSA_RESUME_MSG internal static fixed bin(8,0) initial unsigned dcl 2-92 DSA_SUSPEND_ACK_MSG internal static fixed bin(8,0) initial unsigned dcl 2-95 DSA_SUSPEND_MSG internal static fixed bin(8,0) initial unsigned dcl 2-94 DSA_TERMINATED_MSG internal static fixed bin(8,0) initial unsigned dcl 2-98 DSA_TERM_ABNORMAL_MSG internal static fixed bin(8,0) initial unsigned dcl 2-96 DSA_UNSPECIFIED_MSG internal static fixed bin(8,0) initial unsigned dcl 2-82 DSA_USER_UNASSIGN_MSG internal static fixed bin(8,0) initial unsigned dcl 2-99 MAX_DSA_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 2-80 MAX_MCS_EVENT_MSG_TYPE internal static fixed bin(17,0) initial dcl 2-46 MCS_DIALOUT_MSG internal static fixed bin(17,0) initial dcl 2-54 MCS_DIALUP_MSG internal static fixed bin(17,0) initial dcl 2-50 MCS_HANGUP_MSG internal static fixed bin(17,0) initial dcl 2-52 MCS_LINE_STATUS_MSG internal static fixed bin(17,0) initial dcl 2-62 MCS_MASKED_MSG internal static fixed bin(17,0) initial dcl 2-64 MCS_MSG_TYPE_TO_PNAME internal static char(20) initial array unaligned dcl 2-67 MCS_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 2-34 MCS_QUIT_MSG internal static fixed bin(17,0) initial dcl 2-56 MCS_READ_MSG internal static fixed bin(17,0) initial dcl 2-58 MCS_UNSPECIFIED_MSG internal static fixed bin(17,0) initial dcl 2-48 MCS_WRITE_MSG internal static fixed bin(17,0) initial dcl 2-60 MOWSE_NETWORK_TYPE internal static fixed bin(4,0) initial unsigned dcl 2-36 NET_EVENT_MESSAGE_VERSION_1 internal static bit(2) initial unaligned dcl 2-20 active_connection_info_ptr automatic pointer dcl 1-18 net_event_message based structure level 1 dcl 2-22 net_event_message_arg automatic fixed bin(71,0) dcl 2-19 network_account_array_bound automatic fixed bin(17,0) dcl 3-25 NAMES DECLARED BY EXPLICIT CONTEXT. CLEAN_UP 001461 constant entry internal dcl 224 ref 129 187 COMMON 000447 constant label dcl 103 DISPLAY_THE_DATA_RECORD 001502 constant entry internal dcl 232 ref 184 GET_CONNECTION_INFO 002131 constant entry internal dcl 272 ref 182 NO_ACCESS_ERROR 001242 constant label dcl 192 ref 132 175 217 RETURN 001235 constant label dcl 187 ref 142 161 194 222 316 TABLE_EMPTY 001112 constant label dcl 160 ref 145 display_net_acct_table 000442 constant entry external dcl 46 dnat 000433 constant entry external dcl 46 fake_no_entry 002225 constant label dcl 305 retry_connection_seek 002143 constant label dcl 281 ref 295 308 skip_this_entry 001233 constant label dcl 185 test 001275 constant entry external dcl 200 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 2540 2600 2305 2550 Length 3106 2305 40 271 232 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME dnat 472 external procedure is an external procedure. on unit on line 129 64 on unit on unit on line 130 64 on unit on unit on line 173 64 on unit on unit on line 215 64 on unit CLEAN_UP 64 internal procedure is called by several nonquick procedures. DISPLAY_THE_DATA_RECORD internal procedure shares stack frame of external procedure dnat. GET_CONNECTION_INFO internal procedure shares stack frame of external procedure dnat. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME dnat 000114 access_error_string dnat 000134 arg_count dnat 000135 arg_len dnat 000136 arg_ptr dnat 000140 brief_sw dnat 000141 connection_name dnat 000151 connection_offset dnat 000152 error dnat 000153 error_message dnat 000204 group_id dnat 000214 i dnat 000215 seeking_user dnat 000216 system_area_ptr dnat 000220 table_path dnat 000272 aci dnat 000406 network_account_array_ptr dnat 000410 network_account_data_ptr dnat THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. r_l_a r_e_as call_ext_out_desc call_ext_out call_int_this call_int_other return_mac tra_ext_1 enable_op ext_entry int_entry op_freen_ THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. com_err_ cu_$arg_count cu_$arg_ptr get_system_free_area_ hpriv_connection_list_$get_next_owner hpriv_connection_list_$get_next_user ioa_ network_accounting_gate_$dump_table network_accounting_gate_$get_path network_accounting_gate_$test THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. error_table_$badopt error_table_$noentry LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 46 000432 103 000447 106 000451 107 000461 108 000463 109 000500 111 000501 112 000511 113 000527 114 000543 115 000573 117 000574 118 000607 120 000621 121 000653 123 000654 125 000656 126 000660 127 000667 129 000671 130 000713 131 000727 132 000733 136 000736 139 000747 140 000773 141 000775 142 001030 145 001031 148 001035 149 001042 152 001077 153 001105 159 001107 160 001112 161 001132 164 001133 166 001153 167 001155 173 001171 174 001205 175 001211 178 001214 179 001225 182 001231 184 001232 185 001233 187 001235 190 001241 192 001242 194 001273 200 001274 203 001302 204 001313 205 001315 206 001340 208 001341 209 001343 210 001376 213 001377 215 001401 216 001415 217 001421 220 001424 221 001443 222 001457 224 001460 226 001466 229 001501 232 001502 236 001503 237 001505 251 001614 255 001615 256 001635 257 001656 258 001701 261 001736 262 001756 263 001777 264 002020 265 002041 266 002062 267 002105 270 002130 272 002131 276 002132 278 002140 279 002142 281 002143 285 002167 288 002210 293 002212 294 002216 295 002220 297 002221 304 002222 305 002225 306 002227 307 002230 308 002232 310 002233 311 002236 312 002241 315 002242 316 002265 319 002266 320 002271 322 002301 324 002304 ----------------------------------------------------------- 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