PupTypes:
DEFINITIONS =
BEGIN
Byte: TYPE = [0..377B];
Pair: TYPE = MACHINE DEPENDENT RECORD [a, b: CARDINAL];
PupHostID: TYPE = RECORD [Byte];
PupNetID: TYPE = RECORD [Byte];
PupSocketID: TYPE = RECORD [a, b: WORD];
PupAddress:
TYPE =
MACHINE
DEPENDENT
RECORD [
net: PupNetID, host: PupHostID, socket: PupSocketID];
Addressing Constants
fillInNetID: PupNetID = [377B];
fillInHostID: PupHostID = [377B];
fillInSocketID: PupSocketID = [0, 0];
fillInPupAddress: PupAddress = [fillInNetID, fillInHostID, fillInSocketID];
allNets: PupNetID = [0]; -- host must be allHosts too
allHosts: PupHostID = [0]; -- can be directed to a specific network
Buffer size Constants
maxDataWordsPerGatewayPup: CARDINAL = 266;
maxDataBytesPerGatewayPup: CARDINAL = 2*maxDataWordsPerGatewayPup;
maxDataWordsPerRoutingPup: CARDINAL = 64;
maxDataBytesPerRoutingPup: CARDINAL = 2*maxDataWordsPerRoutingPup;
Well Known Sockets: See [MAXC]<System>Pup-Network.txt
telnetSoc: PupSocketID = [0, 1];
gatewaySoc: PupSocketID = [0, 2];
ftpSoc: PupSocketID = [0, 3];
miscSrvSoc: PupSocketID = [0, 4];
echoSoc: PupSocketID = [0, 5];
bspTestSoc: PupSocketID = [0, 6];
mailSoc: PupSocketID = [0, 7];
eftpReceiveSoc: PupSocketID = [0, 20B];
spruceStatusSoc: PupSocketID = [0, 21B];
statSoc: PupSocketID = [0, 22B];
oldCopyDiskSoc: PupSocketID = [0, 24B];
copyDiskSoc: PupSocketID = [0, 25B];
eventReportSoc: PupSocketID = [0, 30B];
printerReportSoc: PupSocketID = [0, 31B];
juniperpackConversionSoc: PupSocketID = [0, 34B];
juniperEventSoc: PupSocketID = [0, 35B];
rpcpSoc: PupSocketID = [0, 36B];
clearinghouseSoc: PupSocketID = [0, 37B];
librarianSoc: PupSocketID = [0, 41B];
pineSoc: PupSocketID = [0, 100B];
PupErrorCode:
TYPE =
MACHINE
DEPENDENT{
Pup got to the destination machine, but wasn't processed
badChecksumPupErrorCode(1B), noProcessPupErrorCode(2B),
resourceLimitsPupErrorCode(3B),
Pup didn't get to the destination machine
inconsistentPupErrorCode(1001B), cantGetTherePupErrorCode(1002B),
hostDownPupErrorCode(1003B), eightHopsPupErrorCode(1004B),
tooBigPupErrorCode(1005B), iAmNotAGatewayPupErrorCode(518),
gatewayResourceLimitsPupErrorCode(519),
used by ForwardBuffer for various hacks
noErrorPupErrorCode(10000), connectionLimitPupErrorCode(10001),
filler(LAST[WORD])};
This is an attempt to get the TYPE checker to help us.
Unfortunately, the values are a bit sparce.
Be sure to have enough values to make it an 8 bit field.
PupType: TYPE = MACHINE DEPENDENT{
000-077 OCTAL! Registered Pup Types
echoMe(1B), iAmEcho, badEcho, error(4B), rfc(10B), abort, end, endRep,
data(20B), aData, ack, mark, int, intRep, aMark, eData(30B), eAck, eEnd,
eAbort, rpp(40B),
200+ Unregistered Pup Types
Socket 2 - Gateway info
gatewayRequest(200B), gatewayInfo(201B),
Socket 4 - Misc services
dateTenexRequest(202B), dateTenexIs, dateAltoRequest(206B), dateAltoIs,
mailCheck(210B), mailIsNew, mailNotNew, mailError, mailCheckLaurel,
nameLookup(220B), nameIs, nameError, addressLookup, addressIs,
whereIsUser(230B), userIs, userError, netDirVersion(240B), sendNetDir,
bootFileSend(244B), kissOfDeath(247B),
Pine (save a few spares too)
request(250B), result, unsolicited, custodian, sync, pineAck, noop,
bootDirReq(257B), bootDirReply(260B),
last(LAST[Byte])};
see <PUP>Servers.EARS (Taft)
Socket 4 Misc Services - these overlap with Gateway info
dateTextRequest: PupType = gatewayRequest;
dateTextIs: PupType = gatewayInfo;
Socket 4 Misc Services - these overlap with Pine
userAuthReq: PupType = request; -- 250
userAuthOk: PupType = result; -- 251
userAuthBad: PupType = unsolicited; -- 252
Socket 22 Statistics - more overlap
statisticsRequest: PupType = gatewayRequest;
statisticsAre: PupType = gatewayInfo;
Socket 30 Event Report - more overlap
eventReport: PupType = netDirVersion;
eventReportReply: PupType = sendNetDir;
END.