*DECK NCSTTP USETEXT NIPDEF USETEXT ACB USETEXT ACNB USETEXT AHEADER USETEXT APPSTAT USETEXT AT USETEXT DRHDR USETEXT DUMPFLG USETEXT LLCB USETEXT MSGIDX USETEXT NCNB USETEXT NCNT USETEXT PCNB USETEXT PWL USETEXT OVERLAY USETEXT PARAMP USETEXT PARAMS USETEXT PT USETEXT STPRESP USETEXT SUPMSG PROC NCSTTP((LLCBAD),(CN),(TRIGGER),(SMPTR)); STARTIMS; # *1DC NCSTTP * * 1. PROC NAME AUTHOR DATE * NCSTTP C. BITTNER 81/05/15 * * 2. FUNCTIONAL DESCRIPTION * NETWORK CONNECTION STATE TABLE PROCESSOR * * 3. METHOD USED * VALIDATE TRIGGER. SET CURRENT STATE (IF THERE IS NO NCNB * THEN SET THE CURRENT STATE TO STATX). CALL XSTTP (STATE TABLE * PROCESSOR) PASSING THE STATE TABLE ORDINAL, CURRENT * CONNECTION STATE AND TRIGGER. IF A LEGAL TRIGGER IS * RETURNED THEN DO THE FOLLOWING (IF VALUE NOT SET TO NOCHG): * A) ACTION - EXECUTE NETWORK CONNECTION STATE TABLE * ACTION (ISSUE SM, ETC) * B) NEWSTATE - UPDATE NEW CONNECTION STATE * C) TRIGC - TRIGGER HOST CONNECTION STATE TABLE * D) TRIGB - TRIGGER HOST BLOCK PROTOCOL STATE TABLE * * IF AN ILLEGAL TRIGGER IS RETURNED THEN DO THE * FOLLOWING: IF THE TRIGGER IS INTERNAL TO NIP THEN ABORT * NIP. IF ILLEGAL EXTERNAL TRIGGER AND IN DEBUG MODE * ABORT CCP (SEND NPI/IN TO CCP). IF ILLEGAL EXTERNAL * TRIGGER AND NOT IN DEBUG MODE, IGNORE TRIGGER (NO-OP). * * * 4. ENTRY PARAMETERS * LLCBAD - LLCB ADDRESS OR NCNB ADDRESS * CN - NETWORK CONNECTION NUMBER * TRIGGER - NETWORK CONNECTION STATE TABLE TRIGGER * SMPTR - ADDRESS OF SM BUFFER * * 5. EXIT PARAMETERS * NONE * * 6. SYMPL TEXTS USED * ACNB * APPSTAT * AT * NCNB NCNT * OVERLAY * NIPDEF PARAMP * PARAMS PT * STPRESP PCNB PWL * SUPMSG * AHEADER LLCB MSGIDX * * 7. ROUTINES CALLED * NBSTTP - NETWORK BLOCK PROTOCOL STATE TABLE PROCESSOR * HCSTTP - HOST CONNECTION STATE TABLE PROCESSOR * MGETS - GET A BUFFER * LOCLLCB - FIND LLCB ADDRESS * LOCNCNT - LOCATE NCNT ENTRY ADDRESS * OMSG - ISSUE DAYFILE MESSAGE * OVLCALL - LOAD AND EXECUTE OVERLAY * ABORT - ABORT NIP * NFOB - LINK MESSAGE ON PIP OUTBOUND CHAIN * CRNCNBP - INTERNAL PROC TO CREATE NCNB * NNPIIN OVL SEND NPI/IN TO CCP * NICTEAX OVL ISSUE ICN/TE/A * COMPCON OVL TRIGGER CONNECTION PROCESSING ROUTINES * NTCNTAR OVL ISSUE TCN/TA/R * UPDNCNB OVL UPDATE NCNB ON RECEIPT OF CHC/TE * NICNTEA OVL SEND ICN/TE/A TO CCP * NTCNTAN OVL SENT TCN/TA/N TO CCP * NPPCT OVL CONVERT PCNB TO NCNB * RELNCNB OVL RELEASE NCNB * STPNERR OVL ISSUE STP ERROR MESSAGE * XERRMSG OVL ISSUE ERROR MESSAGE * STRTCON OVL TRIGGER CONNECTION PROCESSING ROUTINES * XSTTP - STATE TABLE PROCESSOR * XTRACE - RECORD PROCEDURE CALL * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * "CCP ERROR - NCSTTP" * "NIP INTERNAL ERROR - PROC NAME" * "INVALID TRIGGER NUMBER - __STTP" * * THIS PROCEDURE IS CALLED BY HCSTTP, NBSTTP * NPNIPSM, NPPWL, AND RELCONN. * # STOPIMS; # INPUT PARAMETERS # ITEM LLCBAD; # LLCB ADDRESS # ITEM CN; # CONNECTION NUMBER # ITEM TRIGGER; # STATE TABLE TRIGGER # ITEM SMPTR; # ADDRESS OF SM BUFFER # # EXTERNAL VARIABLES # XREF BEGIN PROC ABORT; # ABORT NIP # PROC NBSTTP; # NETW BLOCK PROTOCOL STATE TABLE PROC # PROC HCSTTP; # HOST CONNECTION STATE TABLE PROC # PROC MGETS; PROC HRELPWL; # RELEASE USED PORTION OF NWL # PROC LOCLLCB ; PROC LOCNCNT; # LOCATE NCNT ENTRY ADDRESS # PROC NFOB ; PROC OMSG; # ISSUE DAYFILE MESSAGE # PROC OVLCALL; # LOAD AND EXECUTE OVERLAY # PROC XSTTP; # STATE TABLE PROCESSOR # PROC XTRACE; # RECORD PROCEDURE CALL # END # INTERNAL VARIABLES # SWITCH NCACTION NC0,NC1,NC2,NC3,NC4,NC5,NC6,NC7,NC8, NC9,NC10,NC11,NC12,NC13,NC14,NC15,NC16,NC17,NC18,NC19; ITEM ACN; # APPLICATION CONNECTION NUMBER # ITEM AN; # APPLICATION NUMBER # ITEM CURST; # CURRENT STATE # ITEM NCNTEAD; # NCNT ENTRY ADDRESS # ITEM RESP U; # RESPONSE WORD # ITEM TRC I ; # TERMINATED REASON CODE # #**********************************************************************# BEGIN BEGIN CONTROL IFEQ DEBUG,1; XTRACE("NCSTT") ; CONTROL FI; TRC = 0 ; # ASSUMING RC TO TERMINATE IS ZERO # CURST = 0 ; P = 0 ; PARAMS3 = 0; P = 0; P = SMPTR+BLKHSIZE+ABHSIZE; P = P; P = P; # VALIDATE TRIGGER NUMBER # IF TRIGGER LQ NCMTR AND TRIGGER GQ 0 THEN BEGIN # VALID TRIGGER NUMBER # P = LLCBAD ; IF LLCBID[0] EQ NCNBIDVALUE OR LLCBID[0] EQ LCNBIDVALUE OR LLCBID[0] EQ PCNBIDVALUE THEN BEGIN P = LLCBAD ; CURST = NCNBCST[0] ; P=NCNBACNB[0]; LOCLLCB(NCNBHN[0],NCNBTN[0],LLCBAD) ; END ELSE # THIS IS AN LLCB (CALLED FROM HOST SIDE) # BEGIN LOCNCNT(LLCBAD,CN,NCNTEAD); # LOCATE NCNT ENTRY ADDRESS # P = NCNTEAD; IF P EQ 0 THEN CURST = STATX; ELSE BEGIN P = NCNTNCNB[0]; IF P EQ 0 THEN CURST = STATX; ELSE BEGIN CURST = NCNBCST[0] ; P = NCNBACNB[0] ; END END END XSTTP(NCORD,CURST,TRIGGER,RESP); # CALL STATE TABLE PROC # P = LOC(RESP); IF LEGTRIG[0] THEN BEGIN # LEGAL TRIGGER # IF ACTION[0] NQ NOCHG THEN GOTO NCACTION[ACTION[0]]; # EXECUTE PROPER ACTION # ELSE GOTO NCA; CONTROL EJECT; NC0: # BUILD NCNB, LINK IT TO ACNB FORMAT ICN/AP/R FROM CR/IAP/N SEND ICN/AP/R TO NETWORK # CRNCNBP; # BUILD NCNB FROM CR/IAP/N # NCNBACNB[0] = ACNBADD; P = ACNBADD; ACNBNCNB[0] = NCNBADD; # LINK NCNB/ACNB # SICNXXP; # SEND ICN/AP/R TO NETWORK # GOTO NCA ; NC1: # CNCNB2 (ACTION NO. 1) REJECT CN IF IN SHUTDOWN ELSE CREATE NCNB # IF SHUTDOWN THEN # REJECT, HOST IN SHUTDOWN MODE # PARAMS3 = RTEA"HSD"; ELSE BEGIN IF ATACBA[NVFAN] EQ 0 THEN # NVF NOT YET NETTED ON # PARAMS3 = RTEA"NNO"; END IF PARAMS3 EQ 0 THEN CRNCNBP; # BUILD NCNB IF POSSIBLE # IF PARAMS3 NQ 0 THEN # ERROR DETECTED # BEGIN IF TRIGGER EQ RICNTER THEN # ERROR ON ICN/TE/R # BEGIN PARAMS1 = SMPTR; # FWA OF SM BUFFER # PARAMS2 = LLCBAD; # LLCB ADDRESS # OVLNAME = NICTEAXP; # SEND ICN/TE/A # OVLCALL; END ELSE # ERROR ON ICN/EX/R OR ICN/AP/R # SICNXXP; # SEND ICN/EX/A OR ICN/AP/A # GOTO NCST$EXIT; # EXIT NCSTTP IMMEDIATELY # END GOTO NCA; NC2: # DNCNB1 (ACTION NO. 2) ISSUE TCN/TA/R TO CCP # # ISSUE TCN/TA/R TO CCP # PARAMS1 = P; # NCNB ADDRESS # PARAMS2 = RCBRK; # REASON CODE FROM CR/TRM/R # OVLNAME = NTCNTARP; # OVERLAY NAME # OVLCALL; # LOAD AND EXECUTE OVERLAY # GOTO NCA; NC3: # UNCNB (ACTION NO. 3) UPDATE NCNB WITH TERMINAL CHARACTERISTIC CHANGES # PARAMS1 = P; # NCNB ADDRESS # PARAMS2 = SMPTR; # SM BUFFER - CHC/TE # OVLNAME = UPDNCNBP; # OVERLAY NAME # OVLCALL; # LOAD AND EXECUTE OVERLAY # GOTO NCA; NC4: # INCNB (ACTION NO. 4) UPDATE NCNB WITH TERMINAL NAME AND SEND ICN/TE/N TO CCP # CONTROL IFEQ DEBUG,1; IF P EQ 0 THEN BEGIN # NO CONNECTION # D27M2[0] = "NCSTTP1"; ABORT(DFMSG27,0); # "NIP INTERNAL ERROR" # END CONTROL FI; NCNBTNAM[0] = CRITN[0]; # TERMINAL NAME # # ISSUE ICN/TE/N # PARAMS1 = NCNBCN[0]; PARAMS2 = LLCBAD; PARAMS9 = COMPCX"ICNTE$" ; OVLNAME = COMPCONP; # OVERLAY NAME # OVLCALL; # LOAD AND EXECUTE OVERLAY # GOTO NCA; NC5: # SICNTEA (ACTION NO. 5) SEND ICN/TE/A TO CCP # PARAMS1 = CRRITE; # REASON CODE FROM NVF # PARAMS2 = CN; # NETWORK CONNECTION NUMBER # PARAMS3 = LLCBAD; # LLCB ADDRESS # OVLNAME = NICNTEAP; # OVERLAY NAME # OVLCALL; # LOAD AND EXECUTE OVERLAY # GOTO NCA; NC6: # SEND ICN/AP/N TO CCP (AFTER CR/RAP/N FROM NVF) # SICNXXP; # SEND ICN/AP/N TO NETWORK # GOTO NCA ; NC7: NC8: # STCNTAN (ACTION NO. 8) ISSUE TCN/TA/N TO CCP # RCBRK = TCNRC[0]; # REASON CODE FOR TERMINATION # PARAMS1 = P; # NCNB ADDRESS # OVLNAME = NTCNTANP; # OVERLAY NAME # OVLCALL; # LOAD AND EXECUTE OVERLAY # GOTO NCA; NC9: NC10: GOTO NCA; NC16: # SEND IMMEDIATE WORKLIST TO PIP # P = P ; PCNBRC[0] = RCBRK ; # SAVE REASON CODE (IF TCN/TA) # MGETS(LTCPWL,P,TRUE); PWLID[0] = PWLIDVALUE ; PWLHN[0] = PCNBHN[0] ; PWLTN[0] = PCNBTN[0] ; PWLCN[0] = CN ; PWLOP[0] = PWLOPTRMCN; # TERMINATE CONN REQUEST # PWLRC[0] = TRC ; # TELL PIP THE REASON CODE # # AND LINK IT TO IMMEDIATE QUEUE # PCNBIMMO[0] = P ; GOTO NCA ; NC17: # AFTER COMPLETION SEND TCN/TA/R TO CCP # PARAMS1 = P ; PARAMS2 = RCBRK; OVLNAME = NTCNTARP ; OVLCALL ; # SEND TCN/TA/R TO CCP # GOTO NCA ; NC18: # NO TCN/TA/R TO CCP # GOTO NCA ; NC19: P = SMPTR + BLKHSIZE + ABHSIZE ; IF PFC[0] EQ OFT THEN TRC = OFTRC ; ELSE IF PFC[0] EQ IFT THEN TRC = IFTRC ; ELSE ABORT(0,0) ; GOTO NC16 ; NC11: NC12: # STANRNC (ACTION NO. 12) ISSUE TCN/TA/N TO CCP RELEASE NCNB # RCBRK = TCNRC[0]; # REASON CODE FOR TERMINATION # PARAMS1 = P; # NCNB ADDRESS # OVLNAME = NTCNTANP; # OVERLAY NAME # OVLCALL; # LOAD AND EXECUTE OVERLAY # PARAMS1 = P; # NCNB ADDRESS # OVLNAME = RELNCNBP; # OVERLAY NAME # OVLCALL; # LOAD AND EXECUTE OVERLAY # GOTO NCA; NC13: # STEARNC (ACTION NO. 13) ISSUE ICN/TE/A AND DELETE NCNB # PARAMS1 = CRRITE; # REASON CODE FROM NVF # PARAMS2 = CN; # NETWORK CONNECTION NUMBER # PARAMS3 = LLCBAD; # LLCB ADDRESS # OVLNAME = NICNTEAP; # OVERLAY NAME # OVLCALL; # LOAD AND EXECUTE OVERLAY # PARAMS1 = P; # NCNB ADDRESS # OVLNAME = RELNCNBP; # OVERLAY NAME # OVLCALL; # LOAD AND EXECUTE OVERLAY # GOTO NCA; NC14: # RLNCNB (ACTION NO. 14) RELEASE NCNB # PARAMS1 = P; # NCNB ADDRESS # RCBRK = RCCB"LLF" ; # LOGICAL-LINK HAS FAILED # # # OVLNAME = RELNCNBP; # OVERLAY NAME # OVLCALL; # LOAD AND EXECUTE OVERLAY # GOTO NCA; NC15: # SAPARNC (ACTION NO. 15) ISSUE ICN/AP/A AND DELETE NCNB # PARAMS3 = CRRRAP[0]; # REASON CODE FROM CR/RAP/A # SICNXXP; # SEND ICN/AP/A OR ICN/EX/A # PARAMS1 = P ; OVLNAME = RELNCNBP; # RELEASE NCNB # OVLCALL ; GOTO NCA; CONTROL EJECT; NCA: IF NEWSTATE[0] NQ STATX THEN BEGIN NCNBLCS[0] = CURST ; # UPDATE LAST CONNECTION STATE # NCNBLCT[0] = TRIGGER ; # UPDATE LAST CONNECTION TRIGGER # IF NEWSTATE[0] NQ NOCHG THEN NCNBCST[0] = NEWSTATE[0]; # UPDATE NEW CONN STATE # END IF TRIGC[0] NQ NOCHG THEN BEGIN # TRIGGER HOST CONNECTION STATE TABLE # IF P EQ 0 THEN BEGIN # THERE IS NO CONNNECTION # ACN = 0; # APPLICATION CONNNECTION NUMBER # AN = NVFAN; # APPLICATION NUMBER # END ELSE BEGIN # THERE IS A CONNECTION # AN = ACNBAN[0]; # APPLICATION NUMBER # ACN = ACNBACN[0]; # APPLICATION CONNECTION NUMBER # END P = ATACBA[AN]; # BASE APPLICATION CONTROL BLK # HCSTTP(P,ACN,TRIGC[0],SMPTR); END IF TRIGB[0] NQ NOCHG THEN # TRIGGER NETW BLOCK PROTOCOL STATE TABLE # BEGIN CONTROL IFEQ DEBUG,1; IF P EQ 0 THEN BEGIN D27M2[0] = "NCSTTP2"; ABORT(DFMSG27,0); # "NIP INTERNAL ERROR" # END CONTROL FI; NBSTTP(P,TRIGB[0],0); END END ELSE BEGIN # ILLEGAL TRIGGER # PARAMS1 = NCNBHN[0]; # HOST NODE # PARAMS2 = NCNBTN[0]; # TERMINAL NODE # PARAMS3 = CN; # NETWORK CONNECTION NUMBER # PARAMS4 = TRIGGER; # ILLEGAL TRIGGER # PARAMS6 = "NCSTTP";# NAME OF STATE TABLE PROCESSOR # PARAMS7 = CURST; # CURRENT CONNECTION STATE # OVLNAME = STPNERRP;# ISSUE STP ERROR MESSAGE # OVLCALL; # LOAD AND EXECUTE OVERLAY # IF TRIGGER LS NCMINXT OR TRIGGER GR NCMAXXT THEN # TRIGGER INTERNAL TO NIP # BEGIN ABORT(0,0); # ABORT NIP # END ELSE BEGIN # ILLEGAL EXTERNAL TRIGGER (CCP) # CONTROL IFEQ DEBUG,1; IF TRIGGER EQ RICNTER OR TRIGGER EQ RICNAPR THEN BEGIN PARAMS1 = SMPTR; # SM BUFFER # PARAMS2 = LLCBAD; # LLCB ADDRESS # PARAMS3 = RTEA"TCE"; # RC=9 TERM CON EXISTS # IF TRIGGER EQ RICNTER THEN BEGIN OVLNAME = NICTEAXP ; OVLCALL ; END ELSE BEGIN P = 0; # SEND ICN/AP/A IMMEDIATELY # SICNXXP; END END PARAMS1 = LLCBAD ; PARAMS2 = TRIGGER; # BAD TRIGGER FROM NETWORK # PARAMS3 = CURST; # CURRENT STATE OF CONNECTION # PARAMS4 = CN; # NETWORK CONNECTION NUMBER # PARAMS7 = X"43"; # STATE TABLE PROCESSOR # OVLNAME = NNPIINP; # SEND NPI/IN TO CCP # OVLCALL; # LOAD AND EXECUTE OVERLAY # CONTROL FI; END END END ELSE # INVALID TRIGGER - NIP INTERNAL ERROR # NCERR: BEGIN PARAMS1 = DFMSG26; PARAMS6 = "NC"; OVLNAME = XERRMSGP; OVLCALL; END NCST$EXIT: # EXIT # RETURN; END PROC CRNCNBP ; # CREATE NCNB # BEGIN PARAMS1 = P; # FWA OF CR/IAP/N OR ICN/TE/R # # OR ICN/EX/R OR ICN/AP/R # PARAMS2 = LLCBAD; # LLCB ADDRESS # PARAMP5 = STRTCX"BNCNB$" ; OVLNAME = STRTCONP ; OVLCALL; # LOAD AND EXECUTE OVERLAY # P = PARAMS1; NCNBADD = PARAMS1; # NCNB ADDRESS # P = PARAMS2; # NCNT ADDRESS # RETURN ; END PROC SICNXXP; # SEND ICN/XX TO NETWORK # BEGIN PARAMS1 = SMPTR; PARAMS2 = LLCBAD; PARAMS4 = P; PARAMS9 = COMPCX"ICNAP$"; OVLNAME = COMPCONP; OVLCALL; RETURN; END END TERM