*DECK CSDDNT USETEXT TEXTCS USETEXT TXTAPSS USETEXT TXTSUSS PROC CSDDNT; # TITLE CSDDNT - DISPATCHES NETWORK TRAFFIC TO THE APPROPRIATE QUEUE. # BEGIN # CSDDNT # # * CSDDNT - DISPATCHES NETWORK TRAFFIC TO THE APPROPRIATE QUEUE. * * A. LIM 81/10/05 * C. BRION 82/02/14. * C. BRION 82/03/17. * C. BRION 82/05/06. * * THIS IS A DUMMY PROCEDURE. ITS EXISTENCE IS TO CUSTOMIZE WITH * THE DECK NAME. * * PROC CSDDNT * * 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 * # # **** PROC CSDDNT - 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/10/05 * C. BRION 82/02/14. * * THIS PROCEDURE WILL BE CALLED BY AIP MONITOR WHENEVER A * SM/DATA-BLOCK COMES TO CS. 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 A SM/DATA-BLOCK IS 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 THE CS PROGRAM. * # # * 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 SSTAQE; # SS ACCEPT Q ENTRY # PROC ABORT; # ABORT PROC # PROC MESSAGE; # ISSUE DAYFILE MSG # END # **** # # DEFS # DEF MXPSFC$ # 86 #; # MAX NUM PFCSFC + 1 # # * QSTAT - STATUS LIST VALUES THAT DEFINE THE POSSIBLE QUEUES FOR * DISPATCHING INCOMING NETWORK TRAFFIC. # STATUS QSTAT CNFTERQ, # CONF TERMINAL QUEUE # CNFRCRQ, # RESET CHARACTERISTIC OF TERMINAL # CNTRFQ, # CONN TRAFFIC QUEUE # NPUSUPQ, # NPU SUPERVISION QUEUE # OPSUPQ, # OPERATOR SUPERVISION Q # SSTATQ, # SOLICITED STATUS Q # UNSTATQ, # UNSOLICITED STATUS Q # # ALIAS EVENT QUEUE (EVQ) # IGNORE, # IGNORE THESE SM-S # NOMATCHQ; # QUEUE IDENTIFIER FOR NO # # MATCH IN PFCSFC TABLE # # ITEMS # ITEM I U; # LOOP VARIABLE # ITEM TEMP1 U; # TEMPORARY STORAGE AREA1# ITEM TEMP2 U; # TEMPORARY STORAGE AREA2# ITEM QNUM S:QSTAT; # QUEUE ID FOR GOTO # # * QSWT - STATUS SWITCH FOR CONTROLLING THE TYPE OF QUEUE THAT A * NETWORK MESSAGE SHOULD BE ROUTED TO. # SWITCH QSWT:QSTAT # USING QSTAT STATUS LIST # TOCTQ:CNFTERQ, # CONF TERMINAL REQUEST # TOCNQ:CNTRFQ, # CONNECTION TRAFFIC # TONPUQ:NPUSUPQ, # NPU SUPERVISION # TOOSQ:OPSUPQ, # OPERATOR SUPERVISION # TOSSQ:SSTATQ, # SOLICITED STATUS # TOEVQ:UNSTATQ, # UNSOLICITED STATUS # ENDOK:IGNORE, # IGNORE THESE SM-S # TOABORT:NOMATCHQ; # NO MATCH, TO ABORT LOGIC # # * NOMSG - DAYFILE MESSAGE FOR ABORT WHEN NO ROUTING OCCURS. # $BEGIN ARRAY NOMSG[00:00] S(3); BEGIN ITEM NO$TXT C(00,00,22) = ["CSDDNT - SM NOT ROUTED"]; ITEM NO$ZERO U(02,12,48) = [0]; END $END # * PSFCTBL - PFC/SFC TABLE. * * THE FOLLOWING TABLE CONTAINS THE PFC/SFC OF ALL INCOMING NETWORK * TRAFFIC AND THE CORRESPONDING ASSIGNED QUEUE IDENTIFIER FOR THE * INITIAL DISPATCHING FROM THE NETWORK DISPATCHER PROC, CSDDNT. * THE ORDER OF THE CODES IN THIS TABLE MUST MATCH ONE-FOR-ONE TO * THE ORDER OF THE "SMID" STATUS LIST DEFINED IN TEXTCS. IF ANY * ADDITIONS ARE MADE TO THE TABLE THE FOLLOWING PROCEDURE SHOULD * BE FOLLOWED: * ADD THE NEW PFCSFC TABLE ENTRY AT THE END OF THE * PSF$CODE ITEM LIST. * ADD THE NEW PSF$QID VALUE AT THE END OF THE LIST * BUT BEFORE THE NOMATCHQ ENTRY. * ADJUST THE MAXPSFC$ DEF TO THE NEW NUMBER OF PFCSFC * ENTRIES PLUS ONE. * ADD THE CORRESPONDING SMID STATUS LIST ENTRY IN THE * SAME RELETIVE POSITION FOR THE PFCSFC. * IF A NEW QUEUE ENTRY IS NEEDED, ADD THE NEW QUEUE * VALUE TO THE QSTAT STATUS LIST AND THE NEW ENTRY * TO THE QUEUE SWITCH QSWT. # ARRAY PSFCTBL [00:MXPSFC$] S(1); BEGIN ITEM PSF$CODE U(00,00,16)= # PFC/SFC LIST # # LOCATION # # ******* ********* # [CNFTE, # 0 # CNFRCTM, # 0.1# SUPCB, # 1 # SUPIN, # 2 # # UNSOLICITED PFCSFCS # # ******************* # ALMOP, # 3 # LOGER, # 4 # CDILI, # 5 # CDILL, # 6 # CDITE, # 7 # CDITR, # 8 # MSGOP, # 9 # STILI, # 10 # STINP, # 11 # STITR, # 12 # STIAP, # 12.1 # STITE, # 12.2 # STUTE, # 13 # STULI, # 14 # STULL, # 15 # STUTR, # 16 # STUNP, # 17 # STUCP, # 18 # STUVC, # 19 # OLDDT, # 20 # SUPGO, # 21 # # CONNECTION TRAFFIC PFCSFCS # # ************************** # SHUINS, # 22 # CONREQ, # 23 # HOPSTRT, # 24 # CONCB, # 25 # FCACK, # 26 # INTRUSR, # 27 # FCINA, # 28 # FCINIT, # 29 # FCNAK, # 30 # TCHTCH, # 31 # HOPALT, # 32 # HOPBRK, # 33 # HOPCMD, # 34 # HOPENDD, # 35 # HOPIG, # 36 # HOPPAGE, # 37 # CONENDN, # 38 # BIMARK, # 38.1 # # OPERATOR SUPERVISION PFCSFCS # # **************************** # HOPDU, # 39 # HOPTRCE, # 40 # HOPNOTR, # 41 # HOPREL, # 42 # HOPRS, # 43 # HOPDB, # 43.1 # HOPDE, # 43.2 # TRSNPN, # 44 # TRSTRN, # 45 # LISLIN, # 46 # LISNPN, # 47 # LLSLLN, # 48 # LLSNPN, # 49 # CPSCPN, # 50 # CPSNPN, # 51 # NPSNPN, # 52 # TESLIN, # 53 # TESLLN, # 54 # TESNPN, # 55 # TESTEN, # 56 # VCSLIN, # 57 # VCSNPN, # 58 # VCSVCN, # 59 # MSGLIN, # 60 # MSGLLN, # 61 # MSGNPN, # 62 # MSGTEN, # 63 # MSGLIA, # 64 # MSGLLA, # 65 # MSGTEA, # 66 # OLDINN, # 67 # OLDINA, # 68 # # SOLICITED STATUS PFCSFCS # # ************************ # STUTEN, # 69 # STULIN, # 70 # STULLN, # 71 # STUTRN, # 72 # STUNPN, # 73 # STUCPN, # 74 # STUVCN, # 74.1 # # IGNORE THESE PFCSFCS # # ******************** # CTRTCD, # 75 # CTRCCD, # 75.1 # CTRCHRN, # 75.2 # CTRCHRA, # 75.3 # CTRCTDN, # 75.4 # CTRCTDA, # 75.5 # CTRRTCA, # 75.6 # CTRRCCA, # 75.7 # ]; ITEM PSF$QID S:QSTAT (00,30,30)= # QUEUE IDENTIFIER # # * ** NOTE THE FOLLOWING QUEUE DEFINITIONS FROM THE * ** ABOVE DEFINITION OF QSTAT. # [S"CNFTERQ", # 0 # S"CNFTERQ", # 0.1 # S"NPUSUPQ", # 1 # S"NPUSUPQ", # 2 # # UNSOLICITED PFCSFCS # # ******************* # S"UNSTATQ", # 3 # S"UNSTATQ", # 4 # S"UNSTATQ", # 5 # S"UNSTATQ", # 6 # S"UNSTATQ", # 7 # S"UNSTATQ", # 8 # S"UNSTATQ", # 9 # S"UNSTATQ", # 10 # S"UNSTATQ", # 11 # S"UNSTATQ", # 12 # S"UNSTATQ", # 12.1 # S"UNSTATQ", # 12.2 # S"UNSTATQ", # 13 # S"UNSTATQ", # 14 # S"UNSTATQ", # 15 # S"UNSTATQ", # 16 # S"UNSTATQ", # 17 # S"UNSTATQ", # 18 # S"UNSTATQ", # 19 # S"UNSTATQ", # 20 # S"UNSTATQ", # 21 # # CONNECTION TRAFFIC PFCSFCS # # ************************** # S"CNTRFQ", # 22 # S"CNTRFQ", # 23 # S"CNTRFQ", # 24 # S"CNTRFQ", # 25 # S"CNTRFQ", # 26 # S"CNTRFQ", # 27 # S"CNTRFQ", # 28 # S"CNTRFQ", # 29 # S"CNTRFQ", # 30 # S"CNTRFQ", # 31 # S"CNTRFQ", # 32 # S"CNTRFQ", # 33 # S"CNTRFQ", # 34 # S"CNTRFQ", # 35 # S"CNTRFQ", # 36 # S"CNTRFQ", # 37 # S"CNTRFQ", # 38 # S"CNTRFQ", # 38.1 # # OPERATOR SUPERVISION PFCSFCS # # **************************** # S"OPSUPQ", # 39 # S"OPSUPQ", # 40 # S"OPSUPQ", # 41 # S"OPSUPQ", # 42 # S"OPSUPQ", # 43 # S"OPSUPQ", # 43.1 # S"OPSUPQ", # 43.2 # S"SSTATQ", # 44 # S"SSTATQ", # 45 # S"SSTATQ", # 46 # S"SSTATQ", # 47 # S"SSTATQ", # 48 # S"SSTATQ", # 49 # S"SSTATQ", # 50 # S"SSTATQ", # 51 # S"SSTATQ", # 52 # S"SSTATQ", # 53 # S"SSTATQ", # 54 # S"SSTATQ", # 55 # S"SSTATQ", # 56 # S"SSTATQ", # 57 # S"SSTATQ", # 58 # S"SSTATQ", # 59 # S"OPSUPQ", # 60 # S"OPSUPQ", # 61 # S"OPSUPQ", # 62 # S"OPSUPQ", # 63 # S"OPSUPQ", # 64 # S"OPSUPQ", # 65 # S"OPSUPQ", # 66 # S"OPSUPQ", # 67 # S"OPSUPQ", # 68 # # SOLICITED STATUS PFCSFCS # # ************************ # S"SSTATQ", # 69 # S"SSTATQ", # 70 # S"SSTATQ", # 71 # S"SSTATQ", # 72 # S"SSTATQ", # 73 # S"SSTATQ", # 74 # S"SSTATQ", # 74.1 # # IGNORE THESE PFCSFCS # # ******************** # S"IGNORE", # 75 # S"IGNORE", # 75.1 # S"IGNORE", # 75.2 # S"IGNORE", # 75.3 # S"IGNORE", # 75.4 # S"IGNORE", # 75.5 # S"IGNORE", # 75.6 # S"IGNORE", # 75.7 # # ************************** # S"NOMATCHQ" # 76 # ]; END CONTROL EJECT; # * DETERMINE TYPE OF NETWORK TRAFFIC. IF DATA-BLOCK, ROUTE IT TO * CONNECTION TRAFFIC QUEUE, ELSE SCAN THRU PFC/SFC TABLE FOR A * MATCHING SM. WHEN FOUND, USE THE POSITION OF THE SM IN THE TABLE * DETERMINE THE QUEUE THE SM SHOULD ROUTE TO. # TEMP1 = P; #SAVE ABH POINTER# P = LOC(ABHARY); #POINT TO ABH AREA# IF ABHABT[0] LQ APMSG #IF DATA BLOCK # THEN BEGIN WC$SMID[0] = SMID"DATAIN"; SSTAQE(P,WCARY,ABHARY,TXTARA); # TO CONN TRAFFIC Q # GOTO ENDFIN; END ELSE BEGIN TEMP2 = P; # SAVE INITIAL PTR # P = LOC(TXTARA); # PT TO SM BODY # PSF$CODE[MXPSFC$] = PFCSFC[0]; # SAVE CURRENT SM # # * SEARCH PSFCTBL FOR MATCH ON THE INCOMING PFCSFC. ON MATCH, ROUTE * TO THE APPROPRIATE QUEUE FOR PROCESSING. THE METHOD FOR ROUTING * IS BASED ON THE VALUE OF THE DEFINITIONS FOR THE NUMBER OF SMS * IN EACH APPROPRIATE GROUP OF SMS. * NOTE-CAUTION-NOTE-CAUTION * THE MATCHING AND ROUTING CODE THAT FOLLOWS IS STRONGLY DEPENDENT * ON THE PSFCTBL FORMAT AND RELATION TO THE DEFINES FOR THE NUMBER * OF SMS IN EACH GROUP. IF IT IS CHANGED, BEWARE. * * THE PFCSFC OF THE INCOMING MESSAGE IS STORED INTO THE LAST ENTRY * OF THE PFCSFC TABLE TO INSURE THAT A MATCH ALWAYS OCCURS. * * # FOR I = 0 STEP 1 WHILE PFCSFC[0] NQ PSF$CODE[I] DO BEGIN END # EXIT LOOP MATCH ALWAYS # WC$SMID[0] = I; # SET INTERNAL ID # QNUM = PSF$QID[I]; # SET QUEUE NUMBER FOR ROUTE # GOTO QSWT[QNUM]; TOCTQ: #CONF TERMINAL DISPATCH # SSTAQE(P,WCARY,ABHARY,TXTARA); GOTO ENDOK; TOCNQ: # CONN TRAFFIC DISPATCH # SSTAQE(P,WCARY,ABHARY,TXTARA); GOTO ENDOK; TONPUQ: # NPU SUPER SM DISPATCH # SSTAQE(P,WCARY,ABHARY,TXTARA); GOTO ENDOK; TOOSQ: # OPERATOR SUPER DISPATCH # SSTAQE(P,WCARY,ABHARY,TXTARA); GOTO ENDOK; TOSSQ: # SOLICITED STATUS DISPATCH # SSTAQE(P,WCARY,ABHARY,TXTARA); GOTO ENDOK; TOEVQ: # UNSOL STATUS DISPATCH # # TO EVENT QUEUE # SSTAQE(P,WCARY,ABHARY,TXTARA); GOTO ENDOK; TOABORT: # BAD INP MESSAGE, NO MATCH # $BEGIN MESSAGE(NOMSG[0],0); # DAYFILE MSG # ABORT; $END SSTAQE(P,WCARY,ABHARY,TXTARA); # TO EVQ IF NON DEBUG # GOTO ENDOK; ENDOK: P = TEMP2; # RESTORE POINTER TO SM # END # ELSE IF ABHABT # ENDFIN: P = TEMP1; RETURN; END #CSNVDSP # END # CSDDNT # TERM