<> <> <<>> <> <> DIRECTORY Arpa USING [Address], CommDriver USING [Network] ; ArpaTranslation: CEDAR DEFINITIONS ~ { Address: TYPE ~ Arpa.Address; Network: TYPE ~ CommDriver.Network; <> <> NetAndSubnetMask: TYPE ~ REF NetAndSubnetMaskObject; NetAndSubnetMaskObject: TYPE ~ RECORD [ net: Arpa.Address, subnetMask: Arpa.Address, translation: REF ]; <> GetNet: PROC [n: Network] RETURNS [Arpa.Address] ~ INLINE { RETURN [NARROW[n.arpa.translation, NetAndSubnetMask].net] }; GetSubnetMask: PROC [n: Network] RETURNS [Arpa.Address] ~ INLINE { RETURN [NARROW[n.arpa.translation, NetAndSubnetMask].subnetMask] }; GetTranslationTable: PROC [n: Network] RETURNS [REF] ~ INLINE { RETURN [NARROW[n.arpa.translation, NetAndSubnetMask].translation] }; PutTranslationTable: PROC [n: Network, table: REF] ~ INLINE { NARROW[n.arpa.translation, NetAndSubnetMask].translation _ table }; <> <> <<>> DetermineAddressAndSubnetMaskForInterface: PROC [n: Network] RETURNS [ok: BOOL]; <> <> <> }...