<> <> <> <<>> <> <<>> DIRECTORY Basics USING [FWORD, HWORD], CommBuffer USING [Overhead], XNS USING [Address]; XNSBuf: CEDAR DEFINITIONS ~ BEGIN HWORD: TYPE ~ Basics.HWORD; FWORD: TYPE ~ Basics.FWORD; <> maxBytes: CARDINAL ~ 576; <> <
> 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]) }; noChecksum: HWORD ~ [0FFH, 0FFH]; -- distinguished value of checksum field of Hdr Hdr: TYPE ~ MACHINE DEPENDENT RECORD [ checksum: HWORD, length: HWORD, transportCtl: TransportCtl, type: Type, dest: XNS.Address, source: XNS.Address]; hdrBytes: CARDINAL ~ BYTES[Hdr]; <> Body: TYPE ~ MACHINE DEPENDENT RECORD [ SELECT OVERLAID * FROM bytes => [bytes: PACKED ARRAY [0..maxBodyBytes) OF BYTE], chars => [chars: PACKED ARRAY [0..maxBodyChars) OF CHAR], hWords => [hWords: PACKED ARRAY [0..maxBodyHWords) OF HWORD], fWords => [fWords: PACKED ARRAY [0..maxBodyFWords) OF FWORD] ENDCASE ]; maxBodyBytes: CARDINAL ~ maxBytes - hdrBytes; maxBodyChars: CARDINAL ~ maxBodyBytes; maxBodyHWords: CARDINAL ~ maxBodyBytes/BYTES[HWORD]; maxBodyFWords: CARDINAL ~ maxBodyBytes/BYTES[FWORD]; <> Packet: TYPE ~ REF PacketObject; PacketObject: TYPE ~ MACHINE DEPENDENT RECORD [ hdr: Hdr, body: Body]; <> <> <<>> Buffer: TYPE ~ REF BufferObject; BufferObject: TYPE ~ MACHINE DEPENDENT RECORD [ ovh: CommBuffer.Overhead, hdr1: Hdr, body: Body]; <<>> END.