*DECK NLOPIP USETEXT ACB USETEXT AHEADER USETEXT APPSTAT USETEXT DRHDR USETEXT LLCB USETEXT NBT USETEXT NHEADER USETEXT NIPDEF USETEXT OVERLAY USETEXT PARAMP USETEXT PARAMS USETEXT PT USETEXT SUPMSG PRGM NLOPIP; # LINK DOWNLINE (OUTBOUND) SUPERVISORY MESSAGE FOR PIP # STARTIMS; # *1DC NLOPIP * * 1. PROC NAME AUTHOR DATE * NLOPIP E. GEE 85/04/02 * * 2. FUNCTIONAL DESCRIPTION * LINK CS/NS SUPERVISORY MESSAGES TO OUTBOUND BUFFER. * * 3. METHOD USED * CHECK THAT THERE IS A CORRECT NBT ENTRY FOR THE SPECIFIC * COUPLER. * IF SUPERVISORY MESSAGE IS FROM CS, * CHECK THAT LOGICAL LINK EXISTS AND SUPERVISION EXISTS FOR THE * LOGICAL LINK. * CHECK NPU OFF FLAG, ACTIVE FLAG, DOWN FLAG, BOOTSTRAP FLAG, AND * LLK FLAG TO ALLOW SUITABLE MESSAGES TO BE LINKED. * IF NO ERROR ENCOUNTERED, * CONVERT APPLICATION HEADER TO NETWORK HEADER. * LINK MESSAGE TO PIP OUTBOUND CHAIN. * ELSE (BAD SUP MSG FROM CS/NS), * CALL OMSG TO ISSUE DAYFILE MESSAGE. * CALL NGIGO TO DAYFILE AND DISCARD BAD SUPERVISORY MESSAGE. * * 4. ENTRY PARAMETERS * ACBADDR ACB ADDRESS OF NS/CS * PARAMP1 MESSAGE BUFFER ADDRESS * * 5. EXIT PARAMETERS * NONE * * 6. COMDECKS CALLED * ACB APPLICATION CONTROL BLOCK TEMPLATE * AHEADER APPLICATION BLOCK HEADER WORD TEMPLATE * APPSTAT NETWORK WORKLIST PROCESSING TABLE * DRHDR DATA ENTRY HEADER WORD TEMPLATE * LLCB LOGICAL LINK CONTROL BLOCK TEMPLATE * NBT NETWORK BUFFER TABLE * NHEADER NETWORK BLOCK HEADER WORD TEMPLATE * NIPDEF NIP CONSTANT DEFINITIONS * OVERLAY OVERLAY TABLE * PARAMP PARAMETERS PASSED TO PRIMARY OVERLAY * PARAMS PARAMETERS PASSED TO SECONDARY OVERLAY * PT POINTER TABLE * SUPMSG SUPERVISORY MESSAGE TEMPLATES * * 7. ROUTINES AND OVERLAYS CALLED * LOCLLCB LOCATE LOGICAL LINK * NXBLINK LINK MESSAGE ON PIP OUTBOUND CHAIN * OMSG ISSUE DAYFILE MESSAGE * OVLCALL LOAD AND EXECUTE OVERLAY * XTRACE TRACE CALLS * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * * * BAD SUP MSG FROM NS/CS DISCARDED * * * THIS PROGRAM IS A PRIMARY OVERLAY LOADED BY SUBROUTINE OVLCALL. * WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO LOCATION RJMAIN * TO RETURN TO THE CALLING PROGRAM. * * W A R N I N G - THIS PROGRAM CANNOT EXCEED THE PRIMARY * OVERLAY BUFFER SIZE MINUS 5 (560B WORDS). * * THIS OVERLAY IS CALLED BY HPPUT. * # STOPIMS; XREF BEGIN PROC MRELS; # RELEASE BUFFER SPACE # PROC LOCLLCB; # LOCATE LOGICAL LINK # PROC NXBLINK ; # LOG MESSAGE INTO PIP OUT # PROC OMSG; # ISSUE DAYFILE MESSAGE # PROC OVLCALL; # LOAD AND EXECUTE OVERLAY # PROC XTRACE; # RECORD TRACES # LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL # END # LOCAL VARIABLES # ITEM BUFAD; # BUFFER ADDRESS # ITEM ERRORF B; # ERROR FLAG # ITEM CNODE; # COUPLER NODE # ITEM I; # LOOP CONTROL VARIABLE # ITEM IND; # INDEX # ITEM INDX; # INDEX # ITEM TEMP; # SAVE APPLICATION BLOCK HEADER # ITEM FOUND B ; # MATCHED NPU FLAG # ITEM TEMPDN ; # TEMPORARY DEST. NODE # ARRAY MSG01 S(4); BEGIN ITEM MSG011 C(0,0,34) = [" BAD SUP MSG FROM NS/CS DISCARDED."]; ITEM MSG01E U(3,24,36) = [0]; END #**********************************************************************# BEGIN # NLOPIP # CONTROL IFEQ DEBUG,1; XTRACE("LOPIP") ; CONTROL FI; P = 0; # DATA BLOCK HEADER ADDRESS # P = ACBADDR; # ADDRESS OF CS/NS ACB # ERRORF = TRUE; # INITIALIZE ERROR FLAG # P = PARAMP1 + DBHSIZE + ABHSIZE; # SM ADDRESS # P = PARAMP1 + DBHSIZE; # APPLICATION HEADER ADDR # CNODE = ABHSN[0]; # COUPLER NODE # P = P; TEMPDN = ABHDN[0]; # DESTINATION NODE # FOUND = FALSE; # SEARCH FOR NBT ENTRY WITH MATCHING COUPLER NODE NUMBER # FOR I = 0 STEP NBTFETNO WHILE I LQ NBTMAXID AND NOT FOUND DO BEGIN # SEARCH FOR NBTE WITH HN = COUPLE # IF NBTHN[I] EQ CNODE AND NBTIUF[I] THEN BEGIN # FOUND THE ENTRY # FOUND = TRUE ; IND = I; # SAVE INDEX # END END # SEARCH FOR NBTE WITH HN = COUPLR # I = IND; INDX = I+4; # INDEX INTO PIP FLAGS IN NBT 5TH FET # # CHECK IF OKAY TO SEND SUPERVISORY MESSAGE TO NPU # IF FOUND AND # ACTIVE NBT EXISTS # NOT NBTOF[INDX] AND # NPU NOT OFF IN EST# ( ( NBTAF[INDX] AND # NPU ACTIVE # NOT NBTMF[INDX] ) OR # AND SAMP IS NOT RUNNING# ( PFC EQ NPU AND # NS DUMP-LOAD SM FOR # CNODE EQ TEMPDN AND # LOCAL NPU-S WHICH IS # ( NOT NBTAF[INDX] OR # NOT AC AND SAM NOT LOAD# NBTDF[INDX] ) ) OR # OR IS IN NPU DUMP-LOAD # ( NBTLF[INDX] AND # PIP WAIT FOR REG/CP RSP# PFCSFC[0] EQ REGCP AND # REG/CP RSP TO PIP ALLOW# REGR[0] ) ) # RESPONSE BIT IS ON # THEN BEGIN ERRORF = FALSE; # NO ERROR ENCOUNTERED # END IF ACBAN[0] EQ PROCAN[CSORD] THEN # SUPERVISORY MESSAGE IS FROM CS # BEGIN ERRORF = TRUE; LOCLLCB(ABHSN[0],ABHDN[0],P) ; IF P NQ 0 AND # LOGICAL LINK EXISTS # LLCBCS[0] # CS HAS SUPERVISION OF THIS NPU # THEN # VALID SUPERVISORY MESSAGE TO SEND TO PIP# BEGIN ERRORF = FALSE; # VALID FOR CS TO SEND SUP MSG TO THIS NPU# END END IF NOT ERRORF THEN # NO ERROR WAS FOUND IN SUP MSG # BEGIN # CONVERT ABH TO NETWORK HEADER # TEMP = ABHWORD[0]; # SAVE APPLICATION HEADER # ABHWORD[0] = 0; # CLEAR APPLICATION HEADER # P = PARAMP1 + DBHSIZE; # NETW HEADER ADDR # P = LOC(TEMP); # APPLICATION HEADER # DN[0] = TEMPDN; # DESTINATION NODE # SN[0] = CNODE; # SOURCE NODE # CN[0] = 0; BT[0] = NETCMD; # BLOCK TYPE # NHACT[0] = ABHACT[0]; # CHARACTER TYPE # CC[0] = ABHTLC[0]; # TEXT LENGTH # IND = NBTINDX[I]*NBTFETNO + OSTFET; NXBLINK(PARAMP1,IND); # LINK MESSAGE TO PIP OUTBOUND QUEUE # END ELSE # DISCARD BAD SUPERVISORY MESSAGE # BEGIN OMSG(MSG01,0); # ISSUE DIAGNOSTICS DAYFILE MESSAGE # PARAMS1 = PARAMP1; P = PARAMP1; PARAMS2 = BLKBS[0]; # SIZE OF BAD SUP MSG BLOCK # OVLNAME = ODAYFLP; # NAME OF OVERLAY TO LOAD # OVLCALL; END GOTO RJMAIN; # RETURN TO CALLING PROGRAM # END TERM