*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<ABH>; #SAVE ABH POINTER#
P<ABH> = LOC(ABHARY); #POINT TO ABH AREA#
IF ABHABT[0] LQ APMSG #IF DATA BLOCK #
THEN
BEGIN
WC$SMID[0] = SMID"DATAIN";
SSTAQE(P<CNQ>,WCARY,ABHARY,TXTARA); # TO CONN TRAFFIC Q #
GOTO ENDFIN;
END
ELSE
BEGIN
TEMP2 = P<APSM>; # SAVE INITIAL PTR #
P<APSM> = 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<CTQ>,WCARY,ABHARY,TXTARA);
GOTO ENDOK;
TOCNQ: # CONN TRAFFIC DISPATCH #
SSTAQE(P<CNQ>,WCARY,ABHARY,TXTARA);
GOTO ENDOK;
TONPUQ: # NPU SUPER SM DISPATCH #
SSTAQE(P<NPUQ>,WCARY,ABHARY,TXTARA);
GOTO ENDOK;
TOOSQ: # OPERATOR SUPER DISPATCH #
SSTAQE(P<OSQ>,WCARY,ABHARY,TXTARA);
GOTO ENDOK;
TOSSQ: # SOLICITED STATUS DISPATCH #
SSTAQE(P<SSQ>,WCARY,ABHARY,TXTARA);
GOTO ENDOK;
TOEVQ: # UNSOL STATUS DISPATCH #
# TO EVENT QUEUE #
SSTAQE(P<EVQ>,WCARY,ABHARY,TXTARA);
GOTO ENDOK;
TOABORT: # BAD INP MESSAGE, NO MATCH #
$BEGIN
MESSAGE(NOMSG[0],0); # DAYFILE MSG #
ABORT;
$END
SSTAQE(P<EVQ>,WCARY,ABHARY,TXTARA); # TO EVQ IF NON DEBUG #
GOTO ENDOK;
ENDOK:
P<APSM> = TEMP2; # RESTORE POINTER TO SM #
END # ELSE IF ABHABT #
ENDFIN:
P<ABH> = TEMP1;
RETURN;
END #CSNVDSP #
END # CSDDNT #
TERM