<<>> <> <> <> <> DIRECTORY Basics USING [FWORD, HWORD], XNS USING [Address]; MentatInterface: CEDAR DEFINITIONS ~ BEGIN <> <> <> TransportCtl: TYPE ~ MACHINE DEPENDENT RECORD [ trace: BOOL, filler: [0..7h], hopCount: [0 .. 0Fh] ]; Type: TYPE ~ MACHINE DEPENDENT { private(0), routing(1), echo(2), error(3), exchange(4), spp(5), (LAST[BYTE]) }; XNSDatagramHeader: TYPE ~ WORD16 MACHINE DEPENDENT RECORD [ checksum: Basics.HWORD, -- computed by the kernel code length: Basics.HWORD, -- computed by the kernel code transportCtl: TransportCtl, -- computed by the kernel code type: Type, dest: XNS.Address, source: XNS.Address -- computed by the kernel code ]; xnsDatagramHeaderTest: BOOL[TRUE..TRUE] ~ BYTES[XNSDatagramHeader] = 30; <> <> <> <> <> <> <> <> <> <> <> <> <> <<"wasBroadcast" enables the receiver of this information to determine whether or not the packet was set to a specific or a broadcast host address. This field was added primarily so that Time Service can distinguish between a broadcasted time request and a time request which was sent directly to the Time Service.>> < 0); FALSE (wasBroadcast < 0)>> <> <> <<];>> <<>> PacketExchangeOptions: TYPE ~ MACHINE DEPENDENT RECORD [ clientType: Basics.HWORD, -- really XNSExchangeTypes.ExchangeType but this is supposed to be lower than that retries: BYTE, -- 0 implies 10. Don't ask me ask Mentat secondsPerRetry: BYTE, -- if 0, the first timeout is 2 secondss. Each retry timeout is the rtt of the net id: Basics.FWORD, -- generated by the kernel when client. S/B id from recieve as server. passThroughToXR: BYTE, -- if 0 no data to pass through. wantsMultipleReplies: BYTE, -- if not 0, we want all of the replies to the expanding ring broadcast wasBroadcast: BYTE, radius: BYTE, padding0: BYTE, padding1: BYTE <<>> <> ]; packetExchangeOptionsTest: BOOL[TRUE..TRUE] ~ BYTES[PacketExchangeOptions] = 14; <> bytesForPassThroughPE: CARD = 15; bytesForNonPassThroughPE: CARD = 11; <> PacketExchangeOptionsOld: TYPE ~ MACHINE DEPENDENT RECORD [ clientType: Basics.HWORD, -- really XNSExchangeTypes.ExchangeType but this is supposed to be lower than that retries: BYTE, -- 0 implies 10. Don't ask me ask Mentat secondsPerRetry: BYTE, -- if 0, the first timeout is 2 secondss. Each retry timeout is the rtt of the net id: Basics.FWORD, -- generated by the kernel when client. S/B id from recieve as server. passThroughToXR: BYTE, -- if 0 no data to pass through. wantsMultipleReplies: BYTE, -- if not 0, we want all of the replies to the expanding ring broadcast radius: BYTE, padding0: BYTE, padding1: BYTE, padding2: BYTE <> ]; packetExchangeOptionsOldTest: BOOL[TRUE..TRUE] ~ BYTES[PacketExchangeOptionsOld] = 14; bytesForOldPassThroughPE: CARD = BYTES[PacketExchangeOptionsOld]; bytesForOldNonPassThroughPE: CARD = bytesForPassThroughPE - 4; <> xnsRouterDevice: REF TEXT ~ "/dev/xr"; -- the id of the "xr" router device xnsPEPDevice: REF TEXT ~ "/dev/xpe"; -- the id of the Packet Exchange Protocol device xnsEchoDevice: REF TEXT ~ "/dev/xecho"; -- the id of the Echo device xnsSPPDevice: REF TEXT ~ "/dev/xs"; -- the id of the SPP stream device maxXNSPacketSize: INT ~ 534; -- the largest packet the implementation understands END.