Changes in low-level Ethernet code in Fugue ReleaseJune, 1983The Ethernet code was substantially rewritten for the Fugue releaseto accommodate the 10mb Ethernet and NS protocols, and to removesome (eventually all) of the Bcpl Ethernet code. The changes arelargely internal, but there are some user-visible changes. Forcomplete details, see the Lisp Ethernet documentation. Herewithare the principal visible changes:The PUP record. PUP's are now instances of the datatypeETHERPACKET, which has several special fields and then a large datasection where the actual PUP (or other level-one packet) lives.The PUP record is an overlay into this structure. The fields ofthe PUP record have been renamed for consistency, although the oldnames temporarily continue to give you time to switch over. Thus,your existing code with Fetches and Replaces of PUP fields shouldstill work, although it absolutely MUST be recompiled. ThePUPCONTENTS field is also still there, even though a PUP is nowphysically in one piece; this should not have any logical effect onyour old code. The "extra" fields of the old PUP record no longerexist, however. There are extra fields in an ETHERPACKET that maybe useful: EPFLAGS (a BYTE field) and EPUSERFIELD (a POINTERfield). The PUP and other records are not included in the standardloadup; you must load the LispUsers package ETHERRECORDS.SENDPUP -- is largely the same, except that while the pup is beingsent, it is considered to be no longer in your possession, butrather in the possession of the ethernet driver. This means, inparticular, that you may not write into the pup at least until ithas finished transmission. A packet is in transmission while theEPTRANSMITTING flag in the packet is true. For aid insynchronizing with the transmitter, there is an additional field inthe ETHERPACKET record called EPREQUEUE, which says what thetransmitter should do with the packet when it is finished. Thevalue FREE means the packet should be returned to the free pool(which means you had better not still be hanging on to it after youdo the SENDPUP); a value that is a SYSQUEUE means to place thepacket on the specified queue. See documentation for descriptionof SYSQUEUE's. There is an optional extra argument REQUEUE toSETUPPUP, to set the EPREQUEUE field.GETPUP -- takes only one argument, the pup socket, and returns abrand new pup. That is, GETPUP no longer takes a scratch pup asinput and copies data into it. Similarly, EXCHANGEPUPS now ignoresits INPUP argument, instead returning the pup, if any, thatarrived.CREATESOCKET, FLUSHSOCKET -- are now called OPENPUPSOCKET,CLOSEPUPSOCKET. Again, the old names will exist temporarily duringthe switchover.FILLPUPSOURCE -- no longer exists. If any of the 3 source fieldsof a pup (net, host, socket) are zero when the pup is handed toSENDPUP, the fields are defaulted appropriately.neweTHER.TTY13-Jul-83 0:25:23Page 1î ìïa«ð3î ìï` î ìï]ðCî ìï[wð@î ìïYêðAî ìïX]ð?î ìïVÐð@î ìïUCð"î ìïR)ð8î ìïPœðCî ìïOð?î ìïM‚ð@î ìïKõðBî ìïJhðCî ìïHÛðAî ìïGNð;î ìïEÁð?î ìïD4ðCî ìïB§ðBî ìïAðBî ìï?ð<î ìï>ðCî ìïî ìï6?ð@î ìï4²ðAî ìï3%ðAî ìï1˜ð6î ìï0 ðCî ìï.~ð<î ìï,ñð?î ìï+dð?î ìï)×ðCî ìï(Jð>î ìï&½ðAî ìï%0ð>î ìï#£ð%î ìï ‰ð@î ìïüð@î ìïoðCî ìïâð;î ìïUî ìï;ð:î ìï®ðCî ìï!î ìïðAî ìïzð?î ìï íð0ïh.î ì î"ºîEt ^ ì“8ˆ[LÖGACHA]Hý]G *<---- gpÄxggAgoôÂÿÚãgg‚¾´g^go¾´½³geÿÿ¾´½³ÿÿg|õp¾Ó&gƒÀ'¶Ùg‡õpö€gŽÀ'g|gõp²Dg˜gog‡À'g‹¶À\gxg”¶À'À\g¢Êñ ½€¶¿è‡,h@¨ ¶"gµg¹ŒÞ"h:½€´µ¶ö½½³WßÎ EMPRESS.RUN9,¶Ù9,ê~½³¾´õòö|ÿÿê~ ögÛ*h!Ùñ“?;@ùx9,¶Ù“œê~ÞÞgð¾´“?ÿþõò9,g÷9,ê~“œ¾´háéÿÿhÿÿ¾´½³ÿÿháé¾´ÿÿ¾´ÿÿh¾´½³zðˆ‘T‰"@‘ ˆ‚$@Q@‘ ‰!DðD‰ ˆ‘(‰@ "D"I‘ ˆ’$HD!@‘"É$ˆ‰ „H„ð8pàÀ‡(ˆâ€"8ñÁ†€â pb#ˆ8 à@°ñÄG ƒ‡ð€ð€ððj/ ÿÿ›;¶éNewEther.pressý§ :ºJonL.pa‰dA ˆ’$‘0’b@ "D13-Jul-83 0:25:23