COMPILATION LISTING OF SEGMENT mlsys_address_route_mgr_ Compiled by: Multics PL/I Compiler, Release 28e, of February 14, 1985 Compiled at: Honeywell Multics Op. - System M Compiled on: 06/30/86 1400.8 mst Mon Options: optimize map 1 /* *********************************************************** 2* * * 3* * Copyright, (C) Honeywell Information Systems Inc., 1983 * 4* * * 5* *********************************************************** */ 6 7 /* format: off */ 8 9 /* Address route management for the Multics Mail System */ 10 11 /* Created: July 1983 by G. Palter */ 12 13 /* format: on,style4,delnl,insnl,ifthenstmt,ifthen */ 14 15 16 mlsys_address_route_mgr_: 17 procedure () options (rename ((alloc_, mlsys_storage_mgr_$allocate))); 18 19 return; /* not an entrypoint */ 20 21 22 /* Parameters */ 23 24 dcl P_address_route_ptr pointer parameter; 25 26 dcl P_relay_list (*) character (256) varying parameter; /* create_address_route: the list of systems in the route */ 27 28 dcl P_address_ptr pointer parameter; /* compute_*_route: -> address for which a route is needed */ 29 dcl P_code fixed binary (35) parameter; /* compute_*_route */ 30 31 32 /* Local copies of parameters */ 33 34 dcl address_ptr pointer; 35 dcl code fixed binary (35); 36 37 38 /* Definition of the reserved data in the address_route structure */ 39 40 dcl 1 address_route_reserved_data aligned based (addr (address_route.reserved)), 41 2 reference_count fixed binary; /* # of objects that care about this route */ 42 43 44 /* Remaining declarations */ 45 46 dcl address_type fixed binary; 47 dcl (explicit_route, implicit_route) pointer; 48 dcl (foreign_system_name, first_relay_system, extra_relay_system) character (256) varying; 49 dcl (n_from_explicit_route, n_from_implicit_route) fixed binary; 50 51 dcl (route_idx, old_idx, idx) fixed binary; 52 53 /* format: off */ 54 dcl (UPPERCASE initial ("ABCDEFGHIJKLMNOPQRSTUVWXYZ"), 55 LOWERCASE initial ("abcdefghijklmnopqrstuvwxyz")) 56 character (26) static options (constant); 57 58 dcl (mlsys_et_$bad_explicit_route, mlsys_et_$cant_compute_route, mlsys_et_$ism_not_available) 59 fixed binary (35) external; 60 /* format: on */ 61 62 dcl mlsys_address_mgr_$get_address_explicit_route entry (pointer, character (8), pointer, fixed binary (35)); 63 dcl mlsys_address_mgr_$get_address_implicit_route entry (pointer, character (8), pointer, fixed binary (35)); 64 dcl mlsys_address_mgr_$get_address_system entry (pointer, character (256) varying, fixed binary (35)); 65 dcl mlsys_address_mgr_$get_address_type entry (pointer, fixed binary, fixed binary (35)); 66 dcl mlsys_nit_interface_$get_fully_qualified_name entry (character (256) varying) returns (character (256) varying); 67 dcl mlsys_nit_interface_$is_local_system entry (character (256) varying) returns (bit (1) aligned); 68 dcl mlsys_nit_interface_$is_mail_supported entry (character (256) varying, character (256) varying, fixed binary (35)); 69 70 dcl (addr, dimension, hbound, lbound, null, translate) builtin; 71 72 /* Create an address route */ 73 74 create_address_route: 75 entry (P_relay_list, P_address_route_ptr); 76 77 address_route_n_relays = dimension (P_relay_list, 1); 78 79 allocate address_route in (mlsys_area) set (address_route_ptr); 80 81 address_route.version = ADDRESS_ROUTE_VERSION_1; 82 address_route_reserved_data.reference_count = 0; 83 84 do idx = lbound (P_relay_list, 1) to hbound (P_relay_list, 1); 85 address_route.relays (idx - lbound (P_relay_list, 1) + 1) = 86 translate (P_relay_list (idx), UPPERCASE, LOWERCASE); 87 end; /* ... don't lookup the names: we probably don't know them */ 88 89 address_route.relays (1) = /* ... except the first relaying host should be known to us */ 90 mlsys_nit_interface_$get_fully_qualified_name (address_route.relays (1)); 91 92 P_address_route_ptr = address_route_ptr; 93 94 return; 95 96 /* Free an address route if its reference count is zero (ie: if o other mail system object has a pointer to it) */ 97 98 free_address_route: 99 entry (P_address_route_ptr); 100 101 address_route_ptr = P_address_route_ptr; 102 P_address_route_ptr = null (); /* insure that the caller doesn't use it anymore */ 103 104 if address_route_reserved_data.reference_count > 0 then return; 105 106 free address_route in (mlsys_area); 107 108 return; 109 110 111 112 /* Increment the reference count of an address route: to avoid freeing an address route referenced by several objects 113* before all the objects are themselves freed */ 114 115 increment_reference_count: 116 entry (P_address_route_ptr); 117 118 addr (P_address_route_ptr -> address_route.reserved) -> address_route_reserved_data.reference_count = 119 addr (P_address_route_ptr -> address_route.reserved) -> address_route_reserved_data.reference_count + 1; 120 121 return; 122 123 124 125 /* Decrement the reference count of an address route: If the reference count reaches zero, nothing in the mail system is 126* using this address route any longer and its storage is released */ 127 128 decrement_reference_count: 129 entry (P_address_route_ptr); 130 131 addr (P_address_route_ptr -> address_route.reserved) -> address_route_reserved_data.reference_count = 132 addr (P_address_route_ptr -> address_route.reserved) -> address_route_reserved_data.reference_count - 1; 133 134 if addr (P_address_route_ptr -> address_route.reserved) -> address_route_reserved_data.reference_count <= 0 then 135 call free_address_route (P_address_route_ptr); 136 137 P_address_route_ptr = null (); /* keep the caller from using it anymore */ 138 139 return; 140 141 /* Compute the route required to deliver a message to the given address */ 142 143 compute_optimum_route: /* ... best possible route: not without real name servers */ 144 compute_route: 145 entry (P_address_ptr, P_address_route_ptr, P_code); 146 147 address_ptr = P_address_ptr; 148 149 call mlsys_address_mgr_$get_address_type (address_ptr, address_type, code); 150 if code ^= 0 then do; /* eh? */ 151 P_code = code; 152 return; 153 end; 154 155 if address_type ^= FOREIGN_ADDRESS then do; 156 ADDRESS_IS_LOCAL: 157 P_address_route_ptr = null (); /* indicates a local address */ 158 P_code = 0; 159 return; 160 161 end; 162 163 call mlsys_address_mgr_$get_address_system (address_ptr, foreign_system_name, (0)); 164 165 call mlsys_address_mgr_$get_address_explicit_route (address_ptr, ADDRESS_ROUTE_VERSION_1, explicit_route, code); 166 if code ^= 0 then explicit_route = null (); /* only possible error is that's there no route */ 167 168 call mlsys_address_mgr_$get_address_implicit_route (address_ptr, ADDRESS_ROUTE_VERSION_1, implicit_route, code); 169 if code ^= 0 then implicit_route = null (); /* only possible error is that's there no route */ 170 171 172 /* Determine the name of the first system in the route: If there's an explicit route, use it. In either case, eliminate 173* the local system from the start of the route. (Ie: "via A via B via LOCAL via LOCAL" is the same as "via A via B" */ 174 175 first_relay_system = ""; /* null string means address is on our system */ 176 177 n_from_explicit_route, n_from_implicit_route = 0; /* don't know how many from each path are necessary yet */ 178 179 if explicit_route ^= null () then do; /* check out the explicit route */ 180 address_route_ptr = explicit_route; 181 n_from_explicit_route = address_route.n_relays; 182 do while ((first_relay_system = "") & (n_from_explicit_route > 0)); 183 idx = address_route.n_relays - n_from_explicit_route + 1; 184 first_relay_system = address_route.relays (idx); 185 if mlsys_nit_interface_$is_local_system (first_relay_system) then do; 186 first_relay_system = ""; /* it's local: keep looking */ 187 n_from_explicit_route = n_from_explicit_route - 1; 188 end; 189 end; 190 end; 191 192 if n_from_explicit_route = 0 then /* no explicit route or all were actually us ... */ 193 if mlsys_nit_interface_$is_local_system (foreign_system_name) then 194 go to ADDRESS_IS_LOCAL; 195 else first_relay_system = foreign_system_name; 196 197 198 /* Have the first system in the route: Check if we can send it mail; if we can't (unknown system, no mail service), try 199* using the implicit route which is the route by which the message actually was transmitted to reach this system */ 200 201 extra_relay_system = ""; /* NIT may specify an extra "hop" */ 202 203 call mlsys_nit_interface_$is_mail_supported (first_relay_system, extra_relay_system, code); 204 205 if code ^= 0 then /* don't know how to send mail to the given system ... */ 206 if code = mlsys_et_$ism_not_available then do; 207 P_code = code; /* ... no inter-system mailer should always be reported */ 208 return; 209 end; 210 211 else if implicit_route = null () then do; /* ... no implicit route: there's no way to send mail */ 212 if n_from_explicit_route > 0 then /* ... because the user gave a bad route */ 213 code = mlsys_et_$bad_explicit_route; 214 P_code = code; 215 return; 216 end; 217 218 else do; /* ... try using the implicit route */ 219 address_route_ptr = implicit_route; 220 n_from_implicit_route = address_route.n_relays; 221 do while ((first_relay_system = "") & (n_from_implicit_route > 0)); 222 idx = address_route.n_relays - n_from_implicit_route + 1; 223 first_relay_system = address_route.relays (idx); 224 if mlsys_nit_interface_$is_local_system (first_relay_system) then do; 225 first_relay_system = ""; /* it's local: keep looking */ 226 n_from_implicit_route = n_from_implicit_route - 1; 227 end; 228 end; 229 if n_from_implicit_route = 0 then do; /* no help in the implicit route */ 230 CANT_COMPUTE_ADDRESS_ROUTE: 231 P_code = mlsys_et_$cant_compute_route; 232 return; 233 end; 234 call mlsys_nit_interface_$is_mail_supported (first_relay_system, extra_relay_system, code); 235 if code ^= 0 then /* ... don't know how to get it by the implicit route */ 236 if code = mlsys_et_$ism_not_available then do; 237 P_code = code; /* ... no inter-system mailer should always be reported */ 238 return; 239 end; 240 else go to CANT_COMPUTE_ADDRESS_ROUTE; 241 end; 242 243 244 /* Control arrives here iff there is a workable route */ 245 246 address_route_n_relays = 1; /* always have the foreign system itself */ 247 248 address_route_n_relays = address_route_n_relays + n_from_explicit_route; 249 address_route_n_relays = address_route_n_relays + n_from_implicit_route; 250 251 if extra_relay_system ^= "" then address_route_n_relays = address_route_n_relays + 1; 252 253 allocate address_route in (mlsys_area) set (address_route_ptr); 254 255 address_route.version = ADDRESS_ROUTE_VERSION_1; 256 address_route_reserved_data.reference_count = 0; 257 258 if extra_relay_system ^= "" then do; /* system from the NIT is the first hop */ 259 address_route.relays (1) = extra_relay_system; 260 route_idx = 2; 261 end; 262 else route_idx = 1; 263 264 if n_from_implicit_route > 0 then do; /* put in relays from the implicit route */ 265 do idx = 1 to n_from_implicit_route; 266 old_idx = implicit_route -> address_route.n_relays - n_from_implicit_route + idx; 267 address_route.relays (route_idx) = implicit_route -> address_route.relays (old_idx); 268 route_idx = route_idx + 1; 269 end; 270 end; 271 272 if n_from_explicit_route > 0 then do; /* put in relays from the explicit route */ 273 do idx = 1 to n_from_explicit_route; 274 old_idx = explicit_route -> address_route.n_relays - n_from_explicit_route + idx; 275 address_route.relays (route_idx) = explicit_route -> address_route.relays (old_idx); 276 route_idx = route_idx + 1; 277 end; 278 end; 279 280 address_route.relays (route_idx) = foreign_system_name; 281 /* don't forget the target system */ 282 283 P_address_route_ptr = address_route_ptr; 284 P_code = 0; /* success */ 285 286 return; 287 1 1 /* BEGIN INCLUDE FILE ... mlsys_address_route.incl.pl1 */ 1 2 /* Created: June 1983 by G. Palter */ 1 3 1 4 /* Definition of a mail system address route */ 1 5 1 6 dcl 1 address_route aligned based (address_route_ptr), 1 7 2 header, 1 8 3 version character (8) unaligned, 1 9 3 reserved bit (144), /* ... exclusively for use by the mail system */ 1 10 3 n_relays fixed binary, /* # of relay systems in the route */ 1 11 2 relays (address_route_n_relays refer (address_route.n_relays)) character (256) varying; 1 12 /* the relays: relays(1) is closest to the local host */ 1 13 1 14 dcl ADDRESS_ROUTE_VERSION_1 character (8) static options (constant) initial ("mlsrte01"); 1 15 1 16 dcl address_route_ptr pointer; 1 17 1 18 dcl address_route_n_relays fixed binary; /* for allocating above structure (users do on occasion) */ 1 19 1 20 /* END INCLUDE FILE ... mlsys_address_route.incl.pl1 */ 288 289 2 1 /* BEGIN INCLUDE FILE ... mlsys_address_types.incl.pl1 */ 2 2 /* Created: June 1983 by G. Palter */ 2 3 2 4 /* Types of addresses supported by the Multics Mail System */ 2 5 2 6 dcl (INVALID_ADDRESS initial (0), /* a syntactically invalid address: used as a place holder 2 7* when parsing printed representations */ 2 8 USER_MAILBOX_ADDRESS initial (1), /* identifies a user's default mailbox */ 2 9 LOGBOX_ADDRESS initial (2), /* identifies a user's logbox */ 2 10 SAVEBOX_ADDRESS initial (3), /* identifies one of a user's saveboxes by pathname */ 2 11 MAILBOX_ADDRESS initial (4), /* identifies some other mailbox by pathname */ 2 12 FORUM_ADDRESS initial (5), /* identifies a forum meeting by pathname */ 2 13 FOREIGN_ADDRESS initial (6), /* identifies a user (or group) on another compute system */ 2 14 MAIL_TABLE_ADDRESS initial (7), /* identifies an entry in the system's mail table */ 2 15 MAILING_LIST_ADDRESS initial (8), /* identifies a mailing list by pathname */ 2 16 NAMED_GROUP_ADDRESS initial (9)) /* identifies a named group of addresses */ 2 17 fixed binary static options (constant); 2 18 2 19 /* END INCLUDE FILE ... mlsys_address_types.incl.pl1 */ 290 291 3 1 /* BEGIN INCLUDE FILE ... mlsys_internal_data.incl.pl1 */ 3 2 3 3 3 4 /****^ HISTORY COMMENTS: 3 5* 1) change(86-06-11,Mills), approve(86-06-11,MCR7419), 3 6* audit(86-06-17,Margolin), install(86-06-30,MR12.0-1080): 3 7* Added mlsys_data_$domains_available. 3 8* END HISTORY COMMENTS */ 3 9 3 10 3 11 /* Created: May 1981 by G. Palter */ 3 12 /* Modified: July 1983 by G. Palter to merge with mlsys_data_ */ 3 13 3 14 /* Constants used internally by the Multics mail system */ 3 15 3 16 dcl mlsys_data_$max_opening_retries fixed binary external; /* maximum number of times to reopen a mailbox if it gets 3 17* damaged and salvaged while open */ 3 18 3 19 dcl mlsys_data_$max_lock_wait_retries fixed binary external; 3 20 /* maximum number of times to try to send a message while the 3 21* mailbox is locked (being salvaged?) */ 3 22 3 23 3 24 /* Allocation overhead factors: When allocating those structures with refer extents, insure that the variable portion of 3 25* the structure contains a multiple of the appropriate constant number of slots. These extra slots will be used for 3 26* later additions to the structure; when a new element must be added to a full structure, add this many new slots (rather 3 27* than a single new slot) 3 28* 3 29* The following expression should be used to determine the initial allocation: 3 30* 3 31* n_slots_to_allocate = n_slots_needed + CONSTANT - mod (n_slots_needed, CONSTANT); */ 3 32 3 33 dcl (mlsys_data_$mailbox_allocation, /* mailbox.messages */ 3 34 mlsys_data_$message_body_sections_allocation, /* message.body_sections */ 3 35 mlsys_data_$message_redistributions_list_allocation, /* message_redistributions_list.redistributions */ 3 36 mlsys_data_$message_user_fields_allocation, /* message_user_fields_list.user_fields */ 3 37 mlsys_data_$message_references_list_allocation, /* message_references_list.references */ 3 38 mlsys_data_$address_list_allocation) /* address_list.addresses */ 3 39 fixed binary external; 3 40 3 41 3 42 /* Static data user by the Multics mail system */ 3 43 3 44 dcl (mlsys_data_$forum_not_available, /* 1 => forum isn't available on the system or in this ring */ 3 45 mlsys_data_$ism_not_available, /* 1 => no inter-system mailer on this system */ 3 46 mlsys_data_$domains_available) /* 1 => domain name system software on this sytem */ 3 47 fixed binary (1) external; 3 48 3 49 dcl (mlsys_data_$subsystem_ring, /* ring in which the mail system is secured */ 3 50 mlsys_data_$highest_usable_ring, /* highest ring of execution which may use the mail system */ 3 51 mlsys_data_$lowest_forum_ring) /* lowest ring of execution with access to forum */ 3 52 fixed binary (3) external; 3 53 3 54 dcl mlsys_data_$temp_segment_list_ptr pointer external; /* -> list of all mail system temporary segments */ 3 55 3 56 dcl mlsys_data_$valid_segments (0:4095) bit (1) unaligned external; 3 57 /* indicates which segments have been used by the mail system 3 58* for the allocation of user-visible data in order to 3 59* validate that pointers passed from the user-ring are OK */ 3 60 3 61 dcl mlsys_area area based (mlsys_data_$subsystem_area_ptr);/* area used for all user-visible allocations ... */ 3 62 dcl mlsys_data_$subsystem_area_ptr pointer external; /* ... and the pointer on which it is based */ 3 63 3 64 dcl mlsys_data_$hash_tables_segment_ptr pointer external; /* -> hash tables used by the mail system */ 3 65 3 66 dcl mlsys_data_$transmit_cache_ptr pointer external; /* -> cache of recently used mailboxes for mlsys_transmit_ */ 3 67 3 68 dcl mlsys_data_$user_is_anonymous bit (1) aligned external;/* ON => the user is an anonymous user */ 3 69 3 70 dcl mlsys_data_$person_id character (24) varying external; /* the user's Person_id */ 3 71 dcl mlsys_data_$project_id character (12) varying external;/* the user's Project_id */ 3 72 dcl mlsys_data_$user_id character (32) varying external; /* the user's User_id (Person_id.Project_id) */ 3 73 3 74 /* END INCLUDE FILE ... mlsys_internal_data.incl.pl1 */ 292 293 294 end mlsys_address_route_mgr_; SOURCE FILES USED IN THIS COMPILATION. LINE NUMBER DATE MODIFIED NAME PATHNAME 0 06/30/86 1343.8 mlsys_address_route_mgr_.pl1 >spec>install>1080>mlsys_address_route_mgr_.pl1 288 1 10/27/83 2104.2 mlsys_address_route.incl.pl1 >ldd>include>mlsys_address_route.incl.pl1 290 2 10/27/83 2104.2 mlsys_address_types.incl.pl1 >ldd>include>mlsys_address_types.incl.pl1 292 3 06/30/86 1338.7 mlsys_internal_data.incl.pl1 >spec>install>1080>mlsys_internal_data.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. ADDRESS_ROUTE_VERSION_1 000000 constant char(8) initial unaligned dcl 1-14 set ref 81 165* 168* 255 FOREIGN_ADDRESS constant fixed bin(17,0) initial dcl 2-6 ref 155 LOWERCASE 000002 constant char(26) initial unaligned dcl 54 ref 85 P_address_ptr parameter pointer dcl 28 ref 143 143 147 P_address_route_ptr parameter pointer dcl 24 set ref 74 92* 98 101 102* 115 118 118 128 131 131 134 134* 137* 143 143 156* 283* P_code parameter fixed bin(35,0) dcl 29 set ref 143 143 151* 158* 207* 214* 230* 237* 284* P_relay_list parameter varying char(256) array dcl 26 ref 74 77 84 84 85 85 UPPERCASE 000011 constant char(26) initial unaligned dcl 54 ref 85 addr builtin function dcl 70 ref 82 104 118 118 131 131 134 256 address_ptr 000100 automatic pointer dcl 34 set ref 147* 149* 163* 165* 168* address_route based structure level 1 dcl 1-6 set ref 79 106 253 address_route_n_relays 000422 automatic fixed bin(17,0) dcl 1-18 set ref 77* 79 79 246* 248* 248 249* 249 251* 251 253 253 address_route_ptr 000420 automatic pointer dcl 1-16 set ref 79* 81 82 85 89 89 92 101* 104 106 180* 181 183 184 219* 220 222 223 253* 255 256 259 267 275 280 283 address_route_reserved_data based structure level 1 dcl 40 address_type 000103 automatic fixed bin(17,0) dcl 46 set ref 149* 155 code 000102 automatic fixed bin(35,0) dcl 35 set ref 149* 150 151 165* 166 168* 169 203* 205 205 207 212* 214 234* 235 235 237 dimension builtin function dcl 70 ref 77 explicit_route 000104 automatic pointer dcl 47 set ref 165* 166* 179 180 274 275 extra_relay_system 000312 automatic varying char(256) dcl 48 set ref 201* 203* 234* 251 258 259 first_relay_system 000211 automatic varying char(256) dcl 48 set ref 175* 182 184* 185* 186* 195* 203* 221 223* 224* 225* 234* foreign_system_name 000110 automatic varying char(256) dcl 48 set ref 163* 192* 195 280 hbound builtin function dcl 70 ref 84 header based structure level 2 dcl 1-6 idx 000417 automatic fixed bin(17,0) dcl 51 set ref 84* 85 85* 183* 184 222* 223 265* 266* 273* 274* implicit_route 000106 automatic pointer dcl 47 set ref 168* 169* 211 219 266 267 lbound builtin function dcl 70 ref 84 85 mlsys_address_mgr_$get_address_explicit_route 000022 constant entry external dcl 62 ref 165 mlsys_address_mgr_$get_address_implicit_route 000024 constant entry external dcl 63 ref 168 mlsys_address_mgr_$get_address_system 000026 constant entry external dcl 64 ref 163 mlsys_address_mgr_$get_address_type 000030 constant entry external dcl 65 ref 149 mlsys_area based area(1024) dcl 3-61 ref 79 106 253 mlsys_data_$subsystem_area_ptr 000040 external static pointer dcl 3-62 ref 79 106 253 mlsys_et_$bad_explicit_route 000014 external static fixed bin(35,0) dcl 58 ref 212 mlsys_et_$cant_compute_route 000016 external static fixed bin(35,0) dcl 58 ref 230 mlsys_et_$ism_not_available 000020 external static fixed bin(35,0) dcl 58 ref 205 235 mlsys_nit_interface_$get_fully_qualified_name 000032 constant entry external dcl 66 ref 89 mlsys_nit_interface_$is_local_system 000034 constant entry external dcl 67 ref 185 192 224 mlsys_nit_interface_$is_mail_supported 000036 constant entry external dcl 68 ref 203 234 n_from_explicit_route 000413 automatic fixed bin(17,0) dcl 49 set ref 177* 181* 182 183 187* 187 192 212 248 272 273 274 n_from_implicit_route 000414 automatic fixed bin(17,0) dcl 49 set ref 177* 220* 221 222 226* 226 229 249 264 265 266 n_relays 6 based fixed bin(17,0) level 3 dcl 1-6 set ref 79* 106 181 183 220 222 253* 266 274 null builtin function dcl 70 ref 102 137 156 166 169 179 211 old_idx 000416 automatic fixed bin(17,0) dcl 51 set ref 266* 267 274* 275 reference_count based fixed bin(17,0) level 2 dcl 40 set ref 82* 104 118* 118 131* 131 134 256* relays 7 based varying char(256) array level 2 dcl 1-6 set ref 85* 89* 89* 184 223 259* 267* 267 275* 275 280* reserved 2 based bit(144) level 3 dcl 1-6 set ref 82 104 118 118 131 131 134 256 route_idx 000415 automatic fixed bin(17,0) dcl 51 set ref 260* 262* 267 268* 268 275 276* 276 280 translate builtin function dcl 70 ref 85 version based char(8) level 3 packed unaligned dcl 1-6 set ref 81* 255* NAMES DECLARED BY DECLARE STATEMENT AND NEVER REFERENCED. FORUM_ADDRESS internal static fixed bin(17,0) initial dcl 2-6 INVALID_ADDRESS internal static fixed bin(17,0) initial dcl 2-6 LOGBOX_ADDRESS internal static fixed bin(17,0) initial dcl 2-6 MAILBOX_ADDRESS internal static fixed bin(17,0) initial dcl 2-6 MAILING_LIST_ADDRESS internal static fixed bin(17,0) initial dcl 2-6 MAIL_TABLE_ADDRESS internal static fixed bin(17,0) initial dcl 2-6 NAMED_GROUP_ADDRESS internal static fixed bin(17,0) initial dcl 2-6 SAVEBOX_ADDRESS internal static fixed bin(17,0) initial dcl 2-6 USER_MAILBOX_ADDRESS internal static fixed bin(17,0) initial dcl 2-6 mlsys_data_$address_list_allocation external static fixed bin(17,0) dcl 3-33 mlsys_data_$domains_available external static fixed bin(1,0) dcl 3-44 mlsys_data_$forum_not_available external static fixed bin(1,0) dcl 3-44 mlsys_data_$hash_tables_segment_ptr external static pointer dcl 3-64 mlsys_data_$highest_usable_ring external static fixed bin(3,0) dcl 3-49 mlsys_data_$ism_not_available external static fixed bin(1,0) dcl 3-44 mlsys_data_$lowest_forum_ring external static fixed bin(3,0) dcl 3-49 mlsys_data_$mailbox_allocation external static fixed bin(17,0) dcl 3-33 mlsys_data_$max_lock_wait_retries external static fixed bin(17,0) dcl 3-19 mlsys_data_$max_opening_retries external static fixed bin(17,0) dcl 3-16 mlsys_data_$message_body_sections_allocation external static fixed bin(17,0) dcl 3-33 mlsys_data_$message_redistributions_list_allocation external static fixed bin(17,0) dcl 3-33 mlsys_data_$message_references_list_allocation external static fixed bin(17,0) dcl 3-33 mlsys_data_$message_user_fields_allocation external static fixed bin(17,0) dcl 3-33 mlsys_data_$person_id external static varying char(24) dcl 3-70 mlsys_data_$project_id external static varying char(12) dcl 3-71 mlsys_data_$subsystem_ring external static fixed bin(3,0) dcl 3-49 mlsys_data_$temp_segment_list_ptr external static pointer dcl 3-54 mlsys_data_$transmit_cache_ptr external static pointer dcl 3-66 mlsys_data_$user_id external static varying char(32) dcl 3-72 mlsys_data_$user_is_anonymous external static bit(1) dcl 3-68 mlsys_data_$valid_segments external static bit(1) array unaligned dcl 3-56 NAMES DECLARED BY EXPLICIT CONTEXT. ADDRESS_IS_LOCAL 000401 constant label dcl 156 ref 192 CANT_COMPUTE_ADDRESS_ROUTE 000702 constant label dcl 230 ref 235 compute_optimum_route 000342 constant entry external dcl 143 compute_route 000327 constant entry external dcl 143 create_address_route 000045 constant entry external dcl 74 decrement_reference_count 000274 constant entry external dcl 128 free_address_route 000212 constant entry external dcl 98 ref 134 increment_reference_count 000256 constant entry external dcl 115 mlsys_address_route_mgr_ 000033 constant entry external dcl 16 THERE WERE NO NAMES DECLARED BY CONTEXT OR IMPLICATION. STORAGE REQUIREMENTS FOR THIS PROGRAM. Object Text Link Symbol Defs Static Start 0 0 1644 1706 1331 1654 Length 2176 1331 42 253 313 0 BLOCK NAME STACK SIZE TYPE WHY NONQUICK/WHO SHARES STACK FRAME mlsys_address_route_mgr_ 308 external procedure is an external procedure. STORAGE FOR AUTOMATIC VARIABLES. STACK FRAME LOC IDENTIFIER BLOCK NAME mlsys_address_route_mgr_ 000100 address_ptr mlsys_address_route_mgr_ 000102 code mlsys_address_route_mgr_ 000103 address_type mlsys_address_route_mgr_ 000104 explicit_route mlsys_address_route_mgr_ 000106 implicit_route mlsys_address_route_mgr_ 000110 foreign_system_name mlsys_address_route_mgr_ 000211 first_relay_system mlsys_address_route_mgr_ 000312 extra_relay_system mlsys_address_route_mgr_ 000413 n_from_explicit_route mlsys_address_route_mgr_ 000414 n_from_implicit_route mlsys_address_route_mgr_ 000415 route_idx mlsys_address_route_mgr_ 000416 old_idx mlsys_address_route_mgr_ 000417 idx mlsys_address_route_mgr_ 000420 address_route_ptr mlsys_address_route_mgr_ 000422 address_route_n_relays mlsys_address_route_mgr_ THE FOLLOWING EXTERNAL OPERATORS ARE USED BY THIS PROGRAM. alloc_cs call_ext_in call_ext_out return shorten_stack ext_entry ext_entry_desc THE FOLLOWING EXTERNAL ENTRIES ARE CALLED BY THIS PROGRAM. freen_ mlsys_address_mgr_$get_address_explicit_route mlsys_address_mgr_$get_address_implicit_route mlsys_address_mgr_$get_address_system mlsys_address_mgr_$get_address_type mlsys_nit_interface_$get_fully_qualified_name mlsys_nit_interface_$is_local_system mlsys_nit_interface_$is_mail_supported mlsys_storage_mgr_$allocate THE FOLLOWING EXTERNAL VARIABLES ARE USED BY THIS PROGRAM. mlsys_data_$subsystem_area_ptr mlsys_et_$bad_explicit_route mlsys_et_$cant_compute_route mlsys_et_$ism_not_available LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC LINE LOC 16 000032 19 000040 74 000041 77 000055 79 000065 81 000111 82 000114 84 000115 85 000127 87 000167 89 000172 92 000204 94 000206 98 000207 101 000222 102 000225 104 000227 106 000231 108 000253 115 000254 118 000266 121 000271 128 000272 131 000304 134 000310 137 000320 139 000322 143 000323 147 000352 149 000356 150 000371 151 000373 152 000375 155 000376 156 000401 158 000403 159 000405 163 000406 165 000422 166 000437 168 000443 169 000460 175 000464 177 000465 179 000467 180 000473 181 000475 182 000500 183 000507 184 000514 185 000524 186 000540 187 000541 189 000543 192 000544 195 000562 201 000567 203 000570 205 000603 207 000610 208 000612 211 000613 212 000617 214 000623 215 000626 219 000627 220 000631 221 000634 222 000643 223 000650 224 000660 225 000674 226 000675 228 000677 229 000700 230 000702 232 000706 234 000707 235 000722 237 000727 238 000731 246 000732 248 000734 249 000736 251 000740 253 000746 255 000773 256 000776 258 000777 259 001004 260 001011 261 001013 262 001014 264 001016 265 001020 266 001027 267 001034 268 001052 269 001053 272 001055 273 001057 274 001065 275 001072 276 001110 277 001111 280 001113 283 001125 284 001126 286 001130 ----------------------------------------------------------- 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