; ; LNI header format ; ..OFST = 0 WORD LN.DMH ;DPNM (high word) WORD LN.DML ;DPNM (low word) BYTE LN.PR ;Protocol (in DPN) BYTE LN.SNT ;Sub-net BYTE LN.RSD ;Reserved BYTE LN.HST ;Host WORD LN.OPH ;OPN (high word) WORD LN.OPL ;OPN (low word) WORD LN.ML ;Packet length LN.LEN = ..OFST ; ; Define the ARPANET header equates ; ..OFST=0 BYTE AH.FMT ;MESSAGE FORMAT FLAGS BYTE AH.NET ;DESTINATION NET (NOT USED) BYTE AH.FLG ;LEADER FLAGS BYTE AH.TYP ;MESSAGE TYPE BYTE AH.HND ;MESSAGE HANDLING TYPE BYTE AH.HST ;SOURCE HOST ID WORD AH.IMP ;SOURCE IMP ID BYTE AH.LNK ;MESSAGE ID (LINK) FIELD BYTE AH.SBL ; SUB-LINK FIELD WORD AH.ML ;MESSAGE LENGTH AH.LEN =..OFST ;LENGTH OF ARPA LEADER PKTLEN = 1020. ;MAX ARPANET PACKET LENGTH ; ; DEFINE EQUATES FOR THE INTERNETWORK ADDRESSING HEADER. THE TWO FORMATS ; SUPPORTED ARE FOR THE OLD TCP 2.5 ADDRESSING HEADER AND THE NEW ; INET HEADER VERSION 4. THE DESTINATION ADDRESS FROM THIS HEADER IS USED ; TO DECIDE ON WHICH HOST PORT THE MESSAGE SHOULD BE SENT. A DISTINCTION ; BETWEEN HEADERS IS MADE AT RUNTIME BASED OF THE CONTENTS OF THE FIRST ; FIELD: IN THE OLD HEADER THIS IS THE DESTINATION NET ID; IN THE NEW ; HEADER THIS IS THE VERSION & HEADER LENGTH. IF THIS FIRST BYTE OF THE ; HEADER CONTAINS A VALUE LESS THAN 105 IT IS ASSUMED TO BE THE OLD FORMAT. ; ; ; OLD TCP V2.5 ADDRESSING HEADER ; ..OFST=0 BYTE OH.DN ;DESTINATION NET BYTE OH.DTH ;DESTINATION TCP, HIGH BYTE WORD OH.DT ;DESTINATION TCP BYTE OH.SN ;SOURCE NET BYTE OH.STH ;SOURCE TCP, HIGH BYTE WORD OH.ST ;SOURCE TCP WORD WORD OH.LEN = ..OFST ;OLD INET HEADER LENGTH ; ; NEW INET V4 HEADER ; ..OFST=0 BYTE IH.IHL ;VERSION # AND HEADER LENGTH IH.VAL = 105 ;VER #4 & LENGTH OF 5 DOUBLEWORDS BYTE IH.TOS ;TYPE-OF-SERVICE FIELD WORD IH.LEN ;TOTAL FRAGMENT LENGTH WORD IH.ID ;FRAGMENT ID WORD IH.FRG ;FRAGMENTATION FLAGS & OFFSET BYTE IH.TTL ;TIME-TO-LIVE BYTE IH.PRO ;PROTOCOL NUMBER WORD IH.CHK ;INET HEADER CHECKSUM BYTE IH.SN ;SOURCE NET ID BYTE IH.STH ;SOURCE TCP HI WORD IH.ST ;SOURCE TCP BYTE IH.DN ;DESTINATION NET BYTE IH.DTH ;DESTINATION TCP HI WORD IH.DT ;DESTINATION TCP IH.HDL = ..OFST ; ; DEFINE THE EQUATES FOR A "CONNECTION BLOCK." AN ENTRY IS MADE IN A ; CONNECTION BLOCK FOR EACH MESSAGE SENT INTO THE ARPANET. WHEN THE RFNM ; (OR INCOMPLETE TRANSMISSION) MESSAGE IS RECEIVED, THE COUNT OF THE NUMBER ; OF MESSAGES OUTSTANDING IS DECREMENTED. THIS DATA STRUCTURE IS USED TO ; ENSURE THAT NO MORE THAN 8 MESSAGES ARE EVER OUTSTANDING TO A SINGLE ; DESTINATION. THIS IS TO PREVENT THE IMP FROM BLOCKING OUR INTERFACE. ; THE CCB TEST IS MORE STRICT THAN THE IMP'S, SINCE THE IMPMUX WILL ONLY ; ALLOW 8 MESSAGES PER DESTINATION AND THE IMP WILL ALLOW 8 PER DESTINATION ; PER LINK PER HANDLING TYPE. ; ..OFST=0 WORD CB.LNK ;LINK TO NEXT CB WORD CB.IMP ;DESTINATION IMP NUMBER BYTE CB.HST ;DESTINATION HOST NUMBER BYTE BYTE CB.CNT ;NUMBER OF MESSAGES OUTSTANDING BYTE CB.IDL ;CONNECTION BLOCK IDLE COUNTER DWORD CB.BLK ;LINKED LIST OF BLOCKED IORBS CB.LEN =..OFST ;LENGTH OF CONNECTION BLOCK ; ; DEFINE THE EQUATES FOR THE "MESSAGE BLOCK." THIS DATA STRUCTURE IS USED ; TO DIRECT INCOMING ARPANET DATA MESSAGES TO A SPECIFIC OUTPUT PORT. ; THE LIST OF MESSAGE BLOCKS ARE SCANNED UNTIL A MATCH IS FOUND. THE PACKET ; IS THEN TRANSMITTED ON THE PORT INDICATED IN THE MESSAGE BLOCK ENTRY. ; A PACKET "MATCHES" IF, AFTER BIT-CLEARING THE INTERNET NET/TCP DESTINATION ; ID FIELD WITH THE MB.MSK VALUE, THE MB.CMP VALUE COMPARES EQUAL TO THE ; INTERNET NET/TCP DESTINATION ID. ; ..OFST=0 DWORD MB.MSK ;2 WORD BIT-CLEAR MASK DWORD MB.CMP ;2 WORD NET/TCPID COMPARE VALUE WORD MB.PRT ;PORT ID MB.LEN =..OFST ;LENGTH OF MATCH BLOCK ; ; DEFINE THE EQUATES FOR THE "PORT BLOCK." THERE IS A PORT BLOCK FOR ; EACH 1822 INTERFACE. IF THE PORT IS AN "IMP" PORT THEN THE IMPMUX ACTS ; AS A REGULAR HOST OVER THIS PORT, I.E. IT SENDS 4 NOP MESSAGES AFTER THE ; PORT COMES UP. IF THE PORT IS A HOST PORT, THEN THE IMPMUX ACTS AS AN IMP ; TO THE ATTACHED HOSTS, I.E. WHEN THE INTERFACES COMES UP, 3 NOP MESSAGES ; FOLLOWED BY A TYPE 10 MSG (INTERFACE RESET) ARE SENT TO THE ATTACHED HOST. ; ..OFST=0 WORD PT.IN ;INPUT DEVICE NUMBER WORD PT.OUT ;OUTPUT DEVICE NUMBER WORD PT.ID ;PORT NUMBER BUFFER PT.NAM,6 ;6 CHAR ASCII PORT NAME WORD PT.INI ;ADDR OF INITIALIZATION HANDLER ; IMP.UP - IMP INITIALIZATION ; HST.UP - HOST INITIALIZATION WORD PT.NRY ;ADDR OF ERROR HANDLER ; IMP.DN - IMP DOWN HANDLER ; HST.DN - HOST DOWN HANDLER WORD PT.RCV ;ADDR OF RECEIVE COMPLETION HANDLER ; IMP.IN - HANDLE INPUT FROM AN IMP ; HST.IN - HANDLE INPUT FROM A HOST WORD PT.TYP ;TYPE OF PORT ; 0 => 1822 ; ~0 => LNI WORD PT.FLG ;PORT CONTROL FLAGS PT.OFL = 1 ; PORT IS OFF-LINE PT.DWN = 2 ; PORT DOWN FLAG PT.WD = 4 ; PORT WAS DOWN IN NEAR PAST PT.ERR = 10 ; LAST I/O REQUEST WAS IN ERROR PT.BLK = 20 ; PORT IS BLOCKED ON RECEIVE WORD PT.UPC ;PORT UP COUNTER ;PERFORMANCE STATISTICS COUNTERS WORD PT.UP ;INTERFACE UP COUNTER WORD PT.DN ;INTERFACE DOWN COUNTER WORD PT.BC ;INTERFACE BLOCKED COUNTER WORD PT.PKI ;PACKETS WAITING RFNM WORD PT.PKO ;PACKETS WAITING OUTPUT I/O COMPLETION BUFFER PT.RC,32. ;RCV COUNTERS FOR EACH MESSAGE TYPE BUFFER PT.SC,32. ;SND COUNTERS FOR EACH MESSAGE TYPE PT.LEN =..OFST