*DECK NVFDDNT USETEXT TEXTNVF USETEXT TXTAPSS USETEXT TXTSUSS PROC NVFDDNT; # TITLE NVFDDNT - DISPATCHES NETWORK TRAFFIC TO THE APPROPRIATE QUEUE. # BEGIN # NVFDDNT # # ** NVFDDNT - DISPATCHES NETWORK TRAFFIC TO THE APPROPRIATE QUEUE. * * A. LIM. 81/08/25. * C. BRION 83/04/13. * * THIS IS A DUMMY PROCEDURE. ITS EXISTENCE IS TO CUSTOMIZE WITH * THE DECK NAME. * * PROC NVFDDNT * * ENTRY NONE * * EXIT NONE * * NOTE THIS PROC WOULD NEVER BE CALLED. INSTEAD AN ALTERNATE * ENTRY POINT, CSNVDSP WILL BE CALLED. CSNVDSP IS USED TO * CUSTOMIZE WITH THE CS DISPATCH PROC. * * METHOD NONE * # # **** ALTERNATE ENTRY POINT # XDEF PROC CSNVDSP; # **** # CONTROL EJECT; PROC CSNVDSP(WCARY,ABHARY,TXTARA); # TITLE CSNVDSP - DISPATCHES SM/DATA-BLOCK TO THE APPROPRIATE QUEUE. # BEGIN # CSNVDSP # # ** CSNVDSP - DISPATCHES SM/DATA-BLOCK TO THE APPROPRIATE QUEUE. * * A. LIM. 81/08/25. * D. G. DEPEW. 82/05/14. * C. J. BRION 82/05/28. * * THIS PROCEDURE WILL BE CALLED BY AIP MONITOR WHENEVER A * SM/DATA-BLOCK COMES TO NVF. ITS CHARTER IS TO * DISPATCH IT TO THE APPROPRIATE QUEUE. * * PROC CSNVDSP(WCARY,ABHARY,TXTARA) * * ENTRY WCARY = A ONE WORD ARRAY FOR INCOMING WC. * ABHARY = A ONE WORD ARRAY FOR INCOMING ABH. * TXTARA = A TEXT AREA FOR INCOMING SM/DATA-BLOCK. * * EXIT SM/DATA ROUTED TO THE APPROPRIATE QUEUE. * * NOTES NONE * * METHOD IF INCOMING NETWORK TRAFFIC IS DATA-BLOCK, ROUTE IT * TO CONNECTION-TRAFFIC-QUEUE. ELSE IF IT IS SM, * SCAN THROUGH PFC/SFC-CLASSIFY TABLE TO FIND * A MATCH ON THE SM, AND ROUTE IT TO THE * APPROPRIATE QUEUE DETERMINED BY THE POSITION * OF THE SM IN THE TABLE. * IF NO MATCH IS FOUND IN THE TABLE, ABORT NVF. * # # * FORMAL PARAMETERS # # ** WCARY - WORD COUNT ARRAY * * WCARY IS A ONE WORD ARRAY FOR INCOMING WC # ARRAY WCARY[00:00] S(1); BEGIN ITEM WC$SMID U(00,00,12); # INTERNAL SM ID # END # ** ABHARY - APPLICATION BLOCK HEADER ARRAY * * ABHARY IS A ONE WORD ARRAY FOR INCOMING ABH. * # ARRAY ABHARY[00:00] S(1); BEGIN ITEM ABH$WRD U(00,00,60); # FULL WORD # END # ** TXTARA - TEXT AREA * * TXTARA IS A TEXT AREA FOR THE INCOMING SM/DATA-BLOCK. * # ARRAY TXTARA[00:10] S(1); BEGIN ITEM TXT$WORD U(00,00,60); END # **** PROC CSNVDSP - XREF LIST # XREF BEGIN PROC ABORT; # ABORT MACRO # PROC MESSAGE; # ISSUE DAYFILE MESSAGE (MACREL) # PROC SSTAQE; # SERVICE AND SCHEDULR ACCEPT-Q-ENTRY RTN# END # **** # # DEFS # DEF MXAPSFC$ # 3 #; # MAX NUMBER OF APP SM # DEF MXCPSFC$ # 23 #; # MAX NUMBER OF CONN TRAFFIC SM # DEF MXHPSFC$ # 7 #; # MAX NUMBER HOP-PROG-CONTROL SM # DEF MXIPSFC$ # 9 #; # MAX NUMBER IGNORED SM (NO-OPS) # DEF MXPSFC$ # 42 #; # SUM OF ALL PRECEEDING (TOTAL ALL SMS) # # ITEMS # ITEM I U; # INDUCTION VARIABLE # ITEM TEMP1 U; # TEMPORARY STORAGE AREA1 # ITEM TEMP2 U; # AND AREA2 # # * DAYFILE MESSAGES FOR ABORT WHEN SM RECEIVED IS BAD # $BEGIN ARRAY BADSM[00:00] S(3); BEGIN ITEM BADSM$TXT C(00,00,23) = ["NVFDDNT - UNEXPECTED SM"]; ITEM NO$ZERO U(02,18,42) = [0]; END ARRAY BADBLKTYPE[00:00] S(3); BEGIN ITEM BADBT$TXT C(00,00,27)=["NVFDDNT - UNEXPECTED ABHABT"]; ITEM BADBT$ZERO U(02,42,18) = [0]; END $END # * THE FOLLOWING TABLE CONTAINS PFC/SFC OF ALL SMS COMING INTO NVF. * THE SMS ARE CATEGORIZED BY THE TYPE OF QUEUE IT IS DESTINED TO. * WITHIN EACH CATEGORY, THE SMS ARE ALPHABETIZED. A CHANGE IN * ANY ONE OF THE CATEGORY REQUIRES THE SAME CHANGE IN ITS * CORRESPONDING STATUS-LIST IN THE APPROPRIATE TEXT. AND THE * PROCEDURE NEED TO BE RECOMPILED WITH NEW MAXIMUM VALUE * DEFINED FOR THE GROUP, AND NEW SUM FOR THE TOTAL SMS. * THE LAST ENTRY IS USED TO STORE THE SM CURRENTLY BEING PROCESSED * IN CASE IT IS AN SM THAT IS NOT EXPECTED AND THUS WILL NOT MATCH * THE PFC/SFC LISTED. # ARRAY PSFCTBL[00:MXPSFC$] S(1); BEGIN ITEM PSF$CODE U(00,00,16) = [ #*** APP SM ***# FAIAPP, # APP FAILED # NETONR, # APP NETON REQ # NETOFFR, # APP NETOFF # #*** CONN TRAFFIC SM ***# CRACC, # APP ACCEPTED CON# CRCB, # CONN BROKEN # CRITE, # TERM CONN REQ # CRIAP, # A-A CON REQ # CRRAP, # REMOTE A-A REQ # CRRCN, # RECON CONN NVF # CRSWHN, # SWCH CON FR NVFN# CRTRMN, # TERMINATE CON N # FCACK, # BLK DEL ACKNGD # FCBRK, # BREAK OCCURRED # INTRUSR, # BREAK OCCURRED # FCINA, # CONN INACTIVE # FCINIT, # CONN INITIALIZED# FCNAK, # BLK NOT DELIVERD# BIMARK, # BREAK INDICATOR # HOPBRK, # OPERATOR BREAK # HOPCMD, # HOP COMMD TO APP# HOPENDD, # K-DIS ASGND APP # HOPIG, # HOP IGNORE ALERT# HOPPAGE, # CHGND DIS PAGE # HOPSTRT, # K-DIS ASGND APP # TCHTCH, # TERM CHARS CHGED# CRSLL, # LLINK STATUS # #*** HOP PROGRAM CNTRL SM ***# HOPDU, # HOP DUMP FL REQ # HOPNOTR, # HOP T-OFF AIP TR# HOPREL, # HOP REL DLF REQ # HOPRS, # RST STAT GATH RQ# HOPTRCE, # HOP T-ON AIP TR # HOPDB, # BEGIN DEBUG # HOPDE, # END DEBUG # #*** IGNORED SM ***# CTRCHRN, # TERM CHARS NORM # CTRCHRA, # TERM CHARS ABN # CTRCTDN, # CDCNT TERMDEF/N # CTRCTDA, # CDCNT TERMDEF/A # CTRTCD, # TERM CHAR DEFS # CTRCCD, #CHANGE CDCNET DEF# CTRUCD, # UNSOLIC CHAR DEF# CTRRTCA, #REQ TRM CHAR/A # CTRRCCA]; #RQST CDCNT CHAR/A# END CONTROL EJECT; # * DETERMINE TYPE OF NETWORK TRAFFIC. IF DATA-BLOCK, ROUTE IT TO * CTQ, ELSE SCAN THRU PFC/SFC-CLASSIFY TABLE FOR A MATCH OF THE * SM. WHEN FOUND, USE THE POSITION OF THE SM IN THE TABLE TO * DETERMINE THE QUEUE THE SM SHOULD ROUTE TO AND SET THE SM ID. # TEMP1 = P; # SAVE ABH POINTER # P = LOC(ABHARY); # POINT TO ABH BUFFER AREA # IF ABHABT[0] LQ APMSG THEN BEGIN # DATA-BLOCK, ROUTE TO CTQ # SSTAQE(P,WCARY,ABHARY,TXTARA); END ELSE IF ABHABT[0] EQ APPCMD THEN BEGIN # APP SM # TEMP2 = P; # SAVE ORGNL APP SM POINTER # P = LOC(TXTARA); # THEN POINT IT TO TEXT AREA # PSF$CODE[MXPSFC$] = PFCSFC[0]; # SAVE CURRENT SM # FOR I = 0 STEP 1 WHILE PFCSFC[0] NQ PSF$CODE[I] DO # DETERMINE WHICH SM # BEGIN END IF I LS MXAPSFC$ THEN BEGIN # APP SM, ROUTE IT TO ASQ # WC$SMID[0] = I; SSTAQE(P,WCARY,ABHARY,TXTARA); END ELSE IF I LS (MXAPSFC$ + MXCPSFC$) THEN BEGIN # CN-TRF-SM, ROUTE IT TO CTQ # WC$SMID[0] = I -MXAPSFC$; SSTAQE(P,WCARY,ABHARY,TXTARA); END ELSE IF I LS (MXAPSFC$ + MXCPSFC$ + MXHPSFC$) THEN BEGIN # HOP-PRG-CTRL-SM, ROUTE TO HCQ# WC$SMID[0] = I - MXAPSFC$ -MXCPSFC$; SSTAQE(P,WCARY,ABHARY,TXTARA); END ELSE IF I LS MXPSFC$ THEN # SM TO IGNORE # BEGIN END ELSE # UNEXPECTED SM # BEGIN $BEGIN IF ABHADR[0] EQ 0 THEN BEGIN MESSAGE (BADSM, 0); ABORT; # ABORT NVF # END $END SSTAQE(P,WCARY,ABHARY,TXTARA); # TO HCQ IF NON DBG # END P = TEMP2; # RESTORE POINTER # END # APP SM # ELSE # UNEXPECTED TYPE OF NETWORK TRAFFIC # BEGIN $BEGIN MESSAGE (BADBLKTYPE, 0); ABORT; # ABORT NVF # $END END P = TEMP1; RETURN; END # CSNVDSP # END # NVFDDNT # TERM