//Pup0.decl -- Network-independent Pup level 0 declarations // Copyright Xerox Corporation 1979, 1980 // Last modified March 9, 1980 5:16 PM by Taft get "pupparams.decl" //---------------------------------------------------------------------------- manifest //---------------------------------------------------------------------------- [ netTypeEther = 1 //Nova or Alto netTypeMCA = 2 //Data General type 4038 netTypeArpa = 3 //Parc version netTypeSLA = 4 //Data General type 4073 netTypePR = 5 //Packet Radio Network ] //---------------------------------------------------------------------------- structure Port: //---------------------------------------------------------------------------- [ net byte host byte socket↑1,2 word ] manifest lenPort = size Port/16 //---------------------------------------------------------------------------- structure Pup: //basic raw pup //---------------------------------------------------------------------------- [ length word transport byte = [ hopCnt bit 4 blank bit 4 ] type byte id↑1,2 word dPort: @Port sPort: @Port bytes↑1,532 byte = words↑1,266 word //actual length varies //checksum word //for documentation only--actual position varies ] manifest pupOvBytes = 22 // Pup overhead (header + checksum) manifest pupOvWords = pupOvBytes/2 //---------------------------------------------------------------------------- structure PBI: //packet buffer item //---------------------------------------------------------------------------- [ link word //queue link queue word //where to put it when done (output only) socket word //owning socket ndb word //pointer to ndb for this packet status word = [ usage bit //true if input PBI, false if output allNets bit //PBI to be sent on all connected nets bypassZeroNet bit //don't send if net identity unknown blank bit 13 ] timer word //retransmission timer (used by BSP) packetLength word //length of packet in words in PBI encapsulation word 2 pup: @Pup ] manifest lenPBIOverhead = offset PBI.pup/16 //---------------------------------------------------------------------------- structure PF: //packet filter //---------------------------------------------------------------------------- [ link word predicate word //do you want this packet? queue word //where to queue it if you do ] manifest lenPF = size PF/16 //---------------------------------------------------------------------------- structure NDB: //network data block (net-independent portion) //---------------------------------------------------------------------------- [ link word localNet word //local net number. zero if unknown localHost word //local host number netType byte //kind of network deviceNum byte //instance of type networkType numGPBI word //pbis allowed to gateway for this net pfQ: //queue of packet filters [ head word tail word ] pupPF: @PF //Pup package PF is wired in encapsulatePup word //procedure to encapsulate a Pup level0Transmit word //procedure to send a pbi level0Stats word //procedure to access interface statistics destroy word //procedure to destroy NDB and associated driver ] manifest lenNDB = size NDB/16