-- InrFriends.mesa last edited by LSK on: 17-Feb-84 14:17:01 -- Function: friendly definitions for INRImpl module. DIRECTORY System USING [NetworkNumber, HostNumber, NetworkAddress, nullNetworkNumber], Driver USING [Network], DriverTypes USING [DeviceType]; InrFriends: DEFINITIONS = BEGIN HopCount: TYPE = CARDINAL; RoutingTableEntry: TYPE = LONG POINTER TO RoutingTableObject; RoutingTableObject: TYPE = RECORD [ next: RoutingTableEntry, destNetwork: System.NetworkNumber, -- ultimate destination network. delay: HopCount, --measured in hops to the remote net timeUnits: CARDINAL, -- if zero then this entry is discarded route: System.HostNumber, --of INR on adjacent net network: Driver.Network, --access to driver changed: BOOLEAN]; -- true if the tuple's hop countwas changed or if this is a new tuple. DriverDetails: TYPE = RECORD [ driverType: DriverTypes.DeviceType, driverNetwork: System.NetworkNumber, << the network number of the specific driver. Can be System.nullNetworkNumber for anonymous networks (phone lines, X25, etc) >> via: System.NetworkAddress, << the network address of the next INR towards the destination network. Can be System.nullNetworkAddress if we are directly attached to <destNet>. The socket field is always null, the net field will be the same as the driverNetwork field unless the user sets <allwaysDetermineViaNet> to TRUE. >> lineNumber: CARDINAL, << the RS232C line number. Valid iff driverType = phoneNet >> clientData: LONG UNSPECIFIED << the same client data that was supplied as part of the PhoneNetwork or X25 create calls >> ]; Method: TYPE = {byNetNumber, byDistance}; localDelay: HopCount = 0; <<If a destNet has <delay> = localDelay then we are directly attached to that destination network >> nullNetNumber: System.NetworkNumber = System.nullNetworkNumber; EnumerateRoutes: PROCEDURE [previousNet: System.NetworkNumber, previousDelay: HopCount, method: Method, alwaysDetermineViaNet: BOOLEAN ← FALSE] RETURNS [net: System.NetworkNumber, delay: HopCount, details: DriverDetails]; << Stateless enumerator starts with nullNetworkNumber and zeroHopCount. Ends with nullNetworkNumber. If allwaysDetermineViaNet is TRUE than the INR will attempt to determine the network number of the next INR towards the destination net even if the immediate route is over an anonymous net (phone line or x25 virtual circuit between two INRs. There is a performance cost if alwaysDetermineViaNet is TRUE. >> GetRouteInfo: PROCEDURE [net: System.NetworkNumber] RETURNS [delay: HopCount, details: DriverDetails]; << Returns full info on specific network. Can raise Router.NoTableEntryForNet. >> END. << LOG 10-Oct-83 13:16:29 LSK Created file from Inr. 14-Oct-83 19:11:46 LSK Added fancy EnumerateRoutes 16-Oct-83 14:08:41 LSK Added GetRouteInfo 17-Feb-84 14:16:57 LSK Added <changed> to the routing table object >>