(FILECREATED "26-Sep-84 12:34:38" {ERIS}<LISP>HARMONY>LIBRARY>ETHERRECORDS.;2 8657   )(* Copyright (c) 1983, 1984 by Xerox Corporation. All rights reserved.)(PRETTYCOMPRINT ETHERRECORDSCOMS)(RPAQQ ETHERRECORDSCOMS ((RECORDS * ETHERRECORDS)			 (CONSTANTS \PUPOVLEN \XIPOVLEN)))(RPAQQ ETHERRECORDS (ETHERPACKET PUP PUPADDRESS XIP NSHOSTNUMBER SYSQUEUE QABLEITEM NSNAME NSADDRESS))[DECLARE: EVAL@COMPILE (DATATYPE ETHERPACKET ((NIL BYTE)		       (EPLINK POINTER)                      (* For queue maintenence)		       (EPFLAGS BYTE)                        (* optional flags for some applications)		       (EPUSERFIELD POINTER)                 (* Arbitrary pointer for applications)		       (NIL BYTE)		       (EPPLIST POINTER)                     (* Extra field for use as an A-list for properties)		       (EPTRANSMITTING FLAG)                 (* True while packet is being transmitted and hence 							     cannot be reused)		       (NIL BITS 7)		       (EPREQUEUE POINTER)                   (* Where to requeue this packet after transmission)		       (NIL BYTE)		       (EPSOCKET POINTER)		       (NIL BYTE)		       (EPNETWORK POINTER)		       (EPTYPE WORD)                         (* Type of packet to be encapsulated 							     (PUP or XIP or 10TO3))		       (NIL WORD)		       (EPTIMESTAMP FIXP)                    (* Gets RCLK value when transmitted/received)		       (EPREQUEUEFN POINTER)                 (* FN to perform requeueing)		       (NIL 4 WORD)                          (* Space for expansion)                                                             (* Note: This next field wants to be quad+2 aligned so 							     that the 10mb packet is quad+3 aligned)		       (EPENCAPSULATION 8 WORD)              (* 10mb encapsulation, or 3mb encapsulation with 							     padding)		       (EPBODY 289 WORD)                     (* Body of packet, header up to 16 words plus data up 							     to 546 bytes)		       ))(ACCESSFNS PUP [(PUPBASE (LOCF (fetch (ETHERPACKET EPBODY) of DATUM]	       [BLOCKRECORD PUPBASE ((PUPLENGTH WORD)			     (PUPTCONTROL BYTE)			     (PUPTYPE BYTE)			     (PUPID FIXP)			     (PUPDEST WORD)			     (PUPDESTSOCKET FIXP)			     (PUPSOURCE WORD)			     (PUPSOURCESOCKET FIXP)			     (PUPDATASTART 266 WORD))			    (BLOCKRECORD PUPBASE ((NIL WORD)					  (TYPEWORD WORD)					  (PUPIDHI WORD)					  (PUPIDLO WORD)					  (PUPDESTNET BYTE)					  (PUPDESTHOST BYTE)					  (PUPDESTSOCKETHI WORD)					  (PUPDESTSOCKETLO WORD)					  (PUPSOURCENET BYTE)					  (PUPSOURCEHOST BYTE)					  (PUPSOURCESOCKETHI WORD)					  (PUPSOURCESOCKETLO WORD))                                                             (* Temporary extra synonyms)					 (SYNONYM PUPDESTNET (DESTNET))					 (SYNONYM PUPDESTHOST (DESTHOST))					 (SYNONYM PUPDESTSOCKETHI (DESTSKTHI))					 (SYNONYM PUPDESTSOCKETLO (DESTSKTLO))					 (SYNONYM PUPSOURCENET (SOURCENET))					 (SYNONYM PUPSOURCEHOST (SOURCEHOST))					 (SYNONYM PUPSOURCESOCKETHI (SOURCESKTHI))					 (SYNONYM PUPSOURCESOCKETLO (SOURCESKTLO)))			    (SYNONYM PUPDEST (DEST))			    (SYNONYM PUPDESTSOCKET (DESTSKT))			    (SYNONYM PUPSOURCE (SOURCE))			    (SYNONYM PUPSOURCESOCKET (SOURCESKT))			    (ACCESSFNS PUPDATASTART ((PUPCONTENTS (LOCF DATUM]	       [ACCESSFNS PUP [(PUPCHECKSUMBASE (fetch PUPBASE of DATUM))			   (PUPCHECKSUMLOC (\ADDBASE (fetch PUPBASE of DATUM)						     (FOLDLO (SUB1 (fetch PUPLENGTH of DATUM))							     BYTESPERWORD]			  (BLOCKRECORD PUPCHECKSUMLOC ((PUPCHECKSUM WORD]	       (TYPE? (type? ETHERPACKET DATUM)))(ACCESSFNS PUPADDRESS ((PUPNET# (LRSH DATUM 8))		       (PUPHOST# (LOGAND DATUM 255)))		      (CREATE (IPLUS (LLSH PUPNET# 8)				     PUPHOST#)))(ACCESSFNS XIP [(XIPBASE (LOCF (fetch (ETHERPACKET EPBODY) of DATUM]	       [BLOCKRECORD XIPBASE ((XIPCHECKSUM WORD)			     (XIPLENGTH WORD)			     (XIPTCONTROL BYTE)			     (XIPTYPE BYTE)			     (XIPDESTNET FIXP)			     (XIPDESTWORD1 3 WORD)			     (XIPDESTSOCKET WORD)			     (XIPSOURCENET FIXP)			     (XIPSOURCEWORD1 3 WORD)			     (XIPSOURCESOCKET WORD)			     (XIPFIRSTDATAWORD WORD)         (* Start of data)			     )			    [ACCESSFNS XIPLENGTH ((XIPCHECKSUMBASE (LOCF DATUM]			    [ACCESSFNS XIPFIRSTDATAWORD ((XIPCONTENTS (LOCF DATUM]			    [ACCESSFNS XIPSOURCEWORD1 ((XIPSOURCEHOST (LOADNSHOSTNUMBER (LOCF DATUM))								      (STORENSHOSTNUMBER									(LOCF DATUM)									NEWVALUE]			    [ACCESSFNS XIPDESTWORD1 ((XIPDESTHOST (LOADNSHOSTNUMBER (LOCF DATUM))								  (STORENSHOSTNUMBER (LOCF DATUM)										     NEWVALUE]			    [ACCESSFNS XIPSOURCENET ((XIPSOURCENSADDRESS (\LOADNSADDRESS									   (LOCF DATUM))									 (\STORENSADDRESS									   (LOCF DATUM)									   NEWVALUE]			    (ACCESSFNS XIPDESTNET ((XIPDESTNSADDRESS (\LOADNSADDRESS (LOCF DATUM))								     (\STORENSADDRESS (LOCF DATUM)										      NEWVALUE]	       (TYPE? (type? ETHERPACKET DATUM)))(TYPERECORD NSHOSTNUMBER (NSHOST0 NSHOST1 NSHOST2))(DATATYPE SYSQUEUE ((NIL BYTE)		    (SYSQUEUEHEAD POINTER)		    (NIL BYTE)		    (SYSQUEUETAIL POINTER)))(BLOCKRECORD QABLEITEM ((NIL BYTE)			(QLINK POINTER)                      (* Link to next thing in queue always in first pointer 							     of datum, independent of what the datum is)			)		       (BLOCKRECORD QABLEITEM ((NIL BYTE)				     (LINK POINTER)          (* Let's also be able to call it a LINK)				     )))(DATATYPE NSNAME ((NSOBJECT POINTER)		  (NSDOMAIN POINTER)		  (NSORGANIZATION POINTER))                  (* Canonical three-part Clearinghouse name)		 )(DATATYPE NSADDRESS ((NSNET FIXP)		     (NSHNM0 WORD)		     (NSHNM1 WORD)		     (NSHNM2 WORD)		     (NSSOCKET WORD))		    (ACCESSFNS (NSHOSTNUMBER (LOADNSHOSTNUMBER (LOCF (fetch NSHNM0 of DATUM)))					     (STORENSHOSTNUMBER (LOCF (fetch NSHNM0 of DATUM))								NEWVALUE)))		    (BLOCKRECORD NSADDRESS ((NSNETHI WORD)				  (NSNETLO WORD))))](/DECLAREDATATYPE (QUOTE ETHERPACKET)		  (QUOTE (BYTE POINTER BYTE POINTER BYTE POINTER FLAG (BITS 7)			       POINTER BYTE POINTER BYTE POINTER WORD WORD FIXP POINTER WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD WORD 			       WORD WORD WORD WORD WORD)))(/DECLAREDATATYPE (QUOTE SYSQUEUE)		  (QUOTE (BYTE POINTER BYTE POINTER)))(/DECLAREDATATYPE (QUOTE NSNAME)		  (QUOTE (POINTER POINTER POINTER)))(/DECLAREDATATYPE (QUOTE NSADDRESS)		  (QUOTE (FIXP WORD WORD WORD WORD)))(DECLARE: EVAL@COMPILE (RPAQQ \PUPOVLEN 22)(RPAQQ \XIPOVLEN 30)(CONSTANTS \PUPOVLEN \XIPOVLEN))(PUTPROPS ETHERRECORDS COPYRIGHT ("Xerox Corporation" 1983 1984))(DECLARE: DONTCOPY  (FILEMAP (NIL)))STOP