*DECK NPPWL USETEXT NIPDEF USETEXT NBT USETEXT OVERLAY USETEXT PARAMP USETEXT PARAMS USETEXT PCNB USETEXT LLCB USETEXT NCNB USETEXT NCNT USETEXT PWL USETEXT PT USETEXT APPSTAT PROC NPPWL(BUFADDR); # PROCESS A PRU WORKLIST # STARTIMS; # *1DC NPPWL * * 1. PROC NAME AUTHOR DATE * NPPWL J.C. LEE 80/04/01 * * 2. FUNCTIONAL DESCRIPTION. * PROCESS A PRU WORKLIST * * 3. METHOD USED. * LOCATE NETWORK-SIDE PCNB * VALIDATE FOR A PCNB AND ALLOWED OPCODE VALUE, * PROCESS PWL * * 4. ENTRY PARAMETERS. * BUFADDR ADDRESS OF WORKLIST BUFFER * * 5. EXIT PARAMETERS. * CODE ZERO IF THERE IS NO SPACE FOR BUFFER * * 6. COMDECKS CALLED AND SYMPL TEXTS USED. * NIPDEF OPSIZE OVERLAY * PARAMP PCNB PWL * LLCB NCNT APPSTAT * * 7. ROUTINES AND OVERLAYS CALLED. * LOCLLCB LOCATE LLCB * LOCNCNT LOCATE NCNT * NCSTTP NETWORK CONNECTION STATE TAB PROCESSOR * NBSTTP NETWORK BLOCK STATE TABLE PROC * NGIGO OVL DAYFILE TEXT GENERATED BY NPU/PIP * NPISM OVL PROCESS ILLEGAL SUPERVISORY MESSAGE * XABTAPP OVL ROUTINE TO ABORT APPLICATION * HAPFAIL OVL PROCESSS APPLICATION FAILURE * NPPSM OVL PROCESS A PRU SUPERVISORY MESSAGE FROM PIP * NRPWL OVL RELEASE A PROCESSED PWL * OVLCALL LOAD AND EXECUTE OVERLAY * XTRACE TRACE CALLS * * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION * THIS PROCEDURE IS CALLED BY NEIB1 AND XSACB. * # STOPIMS; # EXTERNAL VARIABLES # XREF BEGIN PROC LOCLLCB; PROC LOCNCNT; PROC NCSTTP; PROC NBSTTP ; PROC OVLCALL; # LOAD AND EXECUTE OVERLAY # PROC XTRACE; END # INTERNAL VARIABLES # ITEM BUFADDR; # BUFFER ADDRESS # ITEM CODE; # RETURN VALUE # ITEM PCNBADDR; # PCNB ADDRESS # ITEM NCNTEAD; # NCNT ENTRY ADDRESS # ITEM PRUCN; # PRU CONNECTION NUMBER # ITEM REASON U ; ITEM NCTRIGG ; ITEM DISCRDF B ; # WAITING PIP CONN. TERMINATION # SWITCH PWLOPJT ,NPWLOP1,NPWLOP2,NPWLOP3,NPWLOP4,NPWLOP5,NPWLOP6 ; # ******************************************************************** # BEGIN CONTROL IFEQ DEBUG,1; XTRACE("NPPWL") ; CONTROL FI; P = BUFADDR; # PRU WORKLIST ADDRESS # PARAMP4 = 0; # INITIALIZE NGIGO CALL FLAG # DISCRDF = FALSE ; IF PWLOP[0] EQ PWLOPDAYFI OR ( PWLHN[0] EQ PWLTN[0] AND PWLOP[0] EQ PWLOPBPRU ) # OP =6 # # ON A COUPLER, DAYFILE AS OP=5 # THEN # DAYFILE TEXT FROM PIP #$ GOTO NPWLOP5 ; # DAYFILE TEXT FROM PIP # PRUCN = PWLCN[0] ; LOCLLCB(PWLHN[0],PWLTN[0],P); LOCNCNT(P,PRUCN,NCNTEAD); P = NCNTEAD; PCNBADDR = NCNTNCNB[0]; # # IF PCNBADDR EQ 0 THEN # CANNOT LOCATE PCNB # BEGIN PARAMP4 = DMCUCN; # UNKNOWN NETWORK CONNECTION NO # END ELSE BEGIN # FOUND PCNB # P = PCNBADDR; # PCNB ADDRESS # IF PCNBID[0] NQ PCNBIDVALUE AND PCNBID[0] NQ LCNBIDVALUE THEN # NOT A PCNB # BEGIN IF PWLOP[0] EQ PWLOPBPRU # IF OP=6, JUST DAYFILE IT # THEN BEGIN PARAMP4 = DMCPBPE; END ELSE # DAYFILE AND ABORT ON OP OTHER # BEGIN # THAN 6. # PARAMP4 = DMCNPCN; END END ELSE BEGIN CODE = PWLOP[0]; # PRU WORKLIST OPCODE # IF CODE LS PWLOPNSM OR CODE GR PWLOPXPRU THEN # BAD PWL OPCODE # BEGIN PARAMP4 = DMCBPWO; # BAD PWL OPCODE # END ELSE # VALID PWL OPCODE # BEGIN # CALL NETWORK BLOCK TABLE TO VALIDATE STATE # PARAMP2 = 2 ; # PRESET TO INITIAL ERROR STATE # NBSTTP(PCNBADDR,PRUDTA,P) ; IF PARAMP2 EQ 2 THEN BEGIN PARAMP4 = 0; # CLEAR NGIGO CALL FLAG - NGIGO # # OVERLAY HAS ALREADY BEEN CALLD# GOTO NPPWL1 ; # TO PROCESS ILLEGAL PRU DATA # END IF PARAMP2 EQ 1 THEN DISCRDF = TRUE ; # WE ARE WAITING FOR PRU TERMINATION # GOTO PWLOPJT[CODE] ; # SWITCH ON OPCODE # # PROCESS PRU WORKLIST OPCODE FUNCTION # NPWLOP1: OVLNAME = NPPSMP; # PROCESS A PRU SM FROM PIP # IF DISCRDF THEN BEGIN GOTO NPPWL1 ; END GOTO CALLOVL; NPWLOP2: OVLNAME = NRPWLP; # RELEASE A PROCESSED PWL # GOTO CALLOVL; NPWLOP3: IF PWLRC[0] EQ 0 THEN NCTRIGG = PIPR ; ELSE BEGIN IF PWLRC[0] LQ IFTRC AND PWLRC[0] GR 0 THEN NCTRIGG = NXFTOFN ; ELSE # REASON CODE IS NOT WITHIN THE RANG# BEGIN PARAMP4 = DMCBTRC; # BAD TERMINATE PRU CON RC # END END IF PARAMP4 EQ 0 THEN BEGIN # EVERYTHING O.K. # PARAMP1 = P ; PARAMP2 = P ; OVLNAME = NPPCTP ; OVLCALL ; IF PARAMP4 EQ 0 # NO ERROR IN SSTP CALL # AND PARAMP2 NQ 0 # NCNB RETURNED # THEN BEGIN # NO ERROR FOUND, GO AHEAD # P = PARAMP2 ; # CALL STATE PROCESSOR FOR # NCSTTP(P,NCNBCN[0],NCTRIGG,P); END # NCNB # PARAMP4 = 0; # CLEAR NGIGO CALL FLAG # END # EVERYTHING WENT O.K. # GOTO NPPWL1 ; NPWLOP4: OVLNAME = NPISMP; # PROCESS ILLOGICAL SUP MSG # GOTO CALLOVL; NPWLOP5: REASON = PWLRC[0]; # RC ASSOCIATED WITH DAY MSG # IF REASON EQ DFTX THEN # NIP IS TO DAYFILE PWL TEXT # BEGIN PARAMP4 = DMCPDM; # DMC FOR PIP DAYFILE MSG # END ELSE # NIP IS NOT TO DAYFILE MSG # BEGIN IF REASON EQ DFBPE THEN # PIP DETECTED BLOCK PROTOCOL ER# BEGIN # IN UPLINE MSG # PARAMP4 = DMCBNBD; # DMC FOR IVT BLK PROTOCOL ERR # END ELSE # CHECK FOR OTHER DAYFILE CODES # BEGIN IF REASON EQ DFME THEN # NIP IS TO DAYFILE MDI ERR STAT# BEGIN PARAMP4 = DMCMDS; # DMC FOR MDI DETAILED STATUS # END ELSE # NIP IS TO DAYFILE NO SUP MSG # BEGIN IF REASON EQ DFRDM THEN # PIP REJECTED DOWNLINE MSG # BEGIN PARAMP4 = DMCRDM; # DMC FOR REJECTING DOWNLINE MSG# END ELSE # NIP IS TO DAYFILE NO SUP MSG # BEGIN PARAMP4 = DMCNSV; # DMC FOR NONSUPPORT MDI MSG # END END END END GOTO NPPWL1 ; NPWLOP6: PARAMP4 = DMCPBPE; # PRU BLOCK PROTOCOL ERR WORKLST# # STATE TABLE CALL TO NCSTTP TO SEND TO PIP PWL WITH OP 9, PIP WILL RESPONSE PWL WITH OP = 3. # RCBRK = RCCB"NE" ; # RC = 20, NPU ERROR # NCSTTP(P,PRUCN,NCBRKPC,P); GOTO NPPWL1; CALLOVL: PARAMP1 = P; # PRU WORKLIST ADDRESS # PARAMP2 = PCNBADDR; # PCNB ADDRESS # OVLCALL; # CALL OVERLAY # END END END NPPWL1: IF PARAMP4 NQ 0 THEN BEGIN PARAMP1 = P; # PRU WORKLIST ADDRESS # OVLNAME = NGIGOP; # DAYFILE GARBLED TEXT # OVLCALL; # CALL OVERLAY # END # CHECK IF AN APPLICATION NEEDS TO BE ABORTED # IF ABTAPPF NQ 0 THEN BEGIN OVLNAME = XABTAPPP; OVLCALL; END # CHECK IF AN APPLICATION HAS FAILED # IF FAILADR NQ 0 THEN BEGIN # PROCESS APPLICATION FAILURE # OVLNAME = HAPFAILP; OVLCALL; END RETURN; END TERM