cdc:nos2.source:nam5871:neib1
Table of Contents
NEIB1
Table Of Contents
- [00021] PROC NEIB1 (BUFADDR,NBTHNN)
- [00091] PROC NPPWL
- [00092] PROC LOCLLCB
- [00093] PROC MRELS
- [00094] PROC NBSTTP
- [00095] PROC LOCNCNT
- [00096] PROC BLINK
- [00097] PROC HFASTQ
- [00098] PROC OSCHAPP
- [00099] PROC OVLCALL
- [00100] PROC NPNIPSM
- [00101] PROC XTRACE
Source Code
- NEIB1.txt
- *DECK NEIB1
- USETEXT NIPDEF
- USETEXT DRHDR
- USETEXT NHEADER
- USETEXT NCNB
- USETEXT LLCB
- USETEXT NCNT
- USETEXT SUPMSG
- USETEXT AHEADER
- USETEXT ACB
- USETEXT ACNB
- USETEXT ACNT
- USETEXT AT
- USETEXT NBT
- USETEXT PT
- USETEXT STATTAB
- USETEXT OVERLAY
- USETEXT PARAMP
- USETEXT PARAMS
- PROC NEIB1 (BUFADDR,NBTHNN) ;
- STARTIMS;
- #
- *1DC NEIB1
- *
- * 1. PROC NAME AUTHOR DATE
- * NEIB1 C. BITTNER 82/06/18
- *
- * 2. FUNCTIONAL DESCRIPTION
- * CALL APPROPRIATE PROCESSOR TO PROCESS
- * MESSAGES IN THE PIP INBOUND BUFFER
- * AND MESSAGES IN THE A-A MESSAGE QUEUE.
- *
- * 3. METHOD USED
- * JUMP ON ACTION ORDINAL DERIVED FROM
- * PFC/SFC MATCH
- *
- * 4. ENTRY PARAMETERS
- * BUFADDR - ADDRESS OF MESSAGE BLOCK
- * NBTHNN - HOST NODE ON INBOUND BLOCK
- * NBTIDX - INDEX OF CURRENT NBT ENTRY BEING PROCESSED
- *
- * 5. EXIT PARAMETERS
- * NONE
- *
- * 6. SYMPL TEXTS USED
- * NIPDEF DRHDR
- * NHEADER NCNB
- * LLCB NCNT
- * SUPMSG AHEADER
- * ACB AT
- * NBT NETWORK BUFFER TABLE
- * PT STATTAB
- * OVERLAY PARAMP
- * ACNB ACNT
- * PIT PARAMS
- *
- * 7. ROUTINES CALLED
- * BLINK - LINK MESSAGE ON APPLICATION-S ACB
- * LOCLLCB - LOCATE LLCB
- * LOCNCNT - LOCATE NCNT ENTRY
- * NBSTTP - NETWORK BLOCK STATE TABLE
- * NPNIPSM - PROCESS NIP SM
- * NPPWL - PROCESS PRU WORKLIST FROM PIP
- * OSCHAPP - SCHEDULE APPLICATION
- * OVLCALL - LOAD AND EXECUTE OVERLAY
- * FINDPIT OVL ALLOCATE PIT ENTRY INDEX
- * NGIGO OVL PROCESS GARBAGE MESSAGE
- * HFASTQ - QUEUE UPLINE MESSAGE TO ACNB
- * MRELS - RELEASE BUFFER SPACE
- * XTRACE - TRACE PROCEDURE CALL
- *
- * 8. DAYFILE MESSAGES AND OTHER IMPORTANT INFORMATION
- *
- * THIS PROCEDURE IS CALLED BY NEIB.
- *
- #
- STOPIMS;
- #
- INPUT PARAMETERS
- #
- ITEM BUFADDR; # ADDRESS OF MSG BLOCK #
- ITEM NBTHNN ; # HOST NODE NUMBER FROM THE NBT #
- #
- EXTERNAL VARIABLES
- #
- XREF
- BEGIN
- PROC NPPWL; # PROCESS PRU WORKLIST FROM PIP #
- PROC LOCLLCB; # LOCATE LLCB #
- PROC MRELS; # RELEASE BUFFER #
- PROC NBSTTP; # NETWORK BLOCK STATE TABLE #
- PROC LOCNCNT; # LOCATE NCNT ENTRY #
- PROC BLINK; # LINK MSG ON APPLICATION-S ACB #
- PROC HFASTQ ;
- PROC OSCHAPP; # SCHEDULE APPLICATION #
- PROC OVLCALL; # LOAD AND EXECUTE OVERLAY #
- PROC NPNIPSM; # PROCESS NIP SM #
- PROC XTRACE; # TRACE PROCEDURE CALL #
- END
- #
- INTERNAL VARIABLES
- #
- ITEM BADNBLK B; # FLAG FOR BAD NETWORK BLOCK #
- ITEM DISCSNS B; # FLAG FOR JUST DISCARDING DUMP/LOAD #
- ITEM I; # INDEX OF PFCSFC FOUND #
- ITEM BLKT; # TEMPORARY FOR BLOCK TYPE #
- ITEM DNNUM ;
- ITEM FOUND B; # PFCSFC MATCH FOUND FLAG #
- ITEM NBSTRIG; # NBSTTP TRIGGER #
- ITEM TWORD; # TEMPORARY TO HOLD NETWORK HEADER #
- ITEM ACNTINDX ; # INDEX INTO ACNB IN ACNT #
- DEF ERR1 #77#; # ERROR CASE - NO VALID STATE TABLE TRIG #
- SWITCH MSGDESTJT SMC0,SMC1,SMC2;
- ARRAY NBTRIGTAB [NETBLK:NETICMDR] S(1);
- BEGIN # NETW BLOCK STATE TABLE TRIGGER FOR NETW BLK #
- ITEM NBS$TRIG U(0,0,60) = [ NBRMSG,
- NBRMSG,
- NBRBACK,
- NBRMSG,
- NBRBRK,
- NBRMSG,
- NBRMSG,
- NBRRST,
- RINITR,
- RINITN,
- RTERM,
- NBRICMD,
- ICMDR
- ];
- END
- BEGIN
- CONTROL IFEQ DEBUG,1;
- XTRACE("NEIB1");
- CONTROL FI;
- P<DRHDRWD> = BUFADDR;
- P<NHEADER> = P<DRHDRWD> + BLKHSIZE;
- PARAMP4 = DMCBNBD; # INDEX FOR BAD NETWORK BLK DISCARDED #
- BADNBLK = TRUE;
- DISCSNS = FALSE ;
- DNNUM = DN[0] ;
- IF ( (DNNUM NQ NBTHNN) OR # DN DOES NOT MATCH HN #
- (SN[0] EQ 0 ) ) AND # SN IS 0 #
- (NBTHNN NQ 0 ) AND # NOT INTRAHOST MSG #
- ( (DNNUM NQ 0 ) OR # DN IS NONZERO #
- (SN[0] NQ 0 ) OR # SN IS NONZERO #
- (NBTET[NBTIDX] NQ "ND") ) # NOT CDCNET FRONT END #
- THEN
- BEGIN
- PARAMP4 = DMCBNN; # INDEX FOR BAD NODE NUMBER DAY MSG #
- GOTO NEXT ;
- END
- BLKT = BT[0]; # BLOCK TYPE #
- IF BLKID[0] EQ PWLIDVALUE
- THEN
- BEGIN
- NPPWL(P<DRHDRWD>); # PROCESS PRU WORKLIST FROM PIP #
- BADNBLK = FALSE;
- END
- ELSE
- BEGIN # NOT A PWL #
- IF BLKT LS NETBLK
- OR BLKT GR NETICMDR
- THEN
- BEGIN
- IF BLKT EQ 0
- THEN # ASSUME PIP IS DISCARDING BAD NETWORK MSG#
- BEGIN
- PARAMP4 = DMCBNBD; # DMC FOR IVT BLK PROTOCOL ERR #
- END
- ELSE # PIP GENERATED BAD BLOCK TYPE IN MSG #
- BEGIN
- PARAMP4 = DMCUBT; # UNKNOWN BLOCK TYPE DAY MSG #
- END
- GOTO NEXT ; # INVALID BLOCK TYPE FROM PIP #
- END
- IF CN[0] NQ 0
- THEN
- BEGIN
- LOCLLCB(DN[0],SN[0],P<LLCB>); # LOCATE LLCB #
- IF P<LLCB> NQ 0
- THEN
- BEGIN # VALID NETWORK BLOCK #
- LOCNCNT(P<LLCB>,CN[0],P<NCNT>); # LOCATE NCNT ENTRY #
- IF P<NCNT> NQ 0
- THEN
- BEGIN
- P<NCNB> = NCNTNCNB[0]; # NCNB ADDRESS #
- IF P<NCNB> NQ 0
- THEN
- BEGIN
- NBSTRIG = NBS$TRIG[BLKT];
- IF NBSTRIG NQ ERR1 AND BLKT LQ NETICMDR
- THEN
- BEGIN
- CONTROL IFEQ STAT,1; # STATISTICS ON #
- IF BT[0] LQ NETMSG
- OR BT[0] EQ NETQBLK
- OR BT[0] EQ NETQMSG
- THEN
- BEGIN # DATA BLOCK #
- ST$IDB = ST$IDB + 1; # INCR *N/W IN DATA BLOCK #
- ST$IDC = ST$IDC + CC[0]; # INCR *N/W IN DATA CHARS#
- END
- ELSE
- BEGIN # NON DATA BLOCKS #
- ST$INB = ST$INB + 1; # INCR *N/W IN NON-DATA BK #
- ST$INC = ST$INC + CC[0]; # INCR *N/W IN ND CR #
- END
- CONTROL FI;
- P<ACNB> = NCNBACNB[0] ; # TRY FIND THE TWIN #
- IF NBSTRIG EQ NBRMSG AND P<ACNB> NQ 0
- THEN # WE TRY TO SKIP THE STATE TABLES #
- BEGIN
- P<ACB> = ATACBA[ACNBAN[0]] ;
- P<ACNT>= ACBACNT[0] ;
- ACNTINDX = ACNBACN[0]+ACNTHSIZE-ACNTMINACN[0] ;
- IF( NCNBBST[0] EQ NBALLD # ALL DATA ALLOWED #
- AND ACNTIS[ACNTINDX] EQ HBALLD)# ALSO HOST SIDE #
- THEN
- BEGIN
- IF NHBSN[0] LS 7
- THEN
- NCNTNIB[0] = NHBSN[0] + 1 ; # NEXT BSN OF UPLIN#
- ELSE
- NCNTNIB[0] = 1 ;
- HFASTQ(BUFADDR,P<ACNB>) ;
- GOTO GOON ;
- END
- END
- NBSTTP(P<NCNB>,NBSTRIG,BUFADDR) ;
- GOON: BADNBLK = FALSE ;
- END
- END
- END
- END
- END
- ELSE # CN = 0 ASYNCHRONOUS SM #
- IF (CC[0] GQ 2 ) AND # SUP MSG IS NOT TOO SMALL #
- (CC[0] LQ 472) # SUP MSG IS NOT TOO LARGE #
- THEN
- BEGIN
- P<SUPMSG> = P<NHEADER> + NBHSIZE;
- FOUND = FALSE;
- IF (PFCSFC[0] EQ NPIDD) OR
- (PFCSFC[0] EQ NPIPP)
- THEN # HALT NPU SUP MSG TO BE PROCESSED BY NIP #
- BEGIN # FALL THROUGH TO LABEL SMC0 #
- FOUND = TRUE; # FOUND MATCHING PFC/SFC #
- END
- FOR I=1 STEP 1 WHILE I LQ 4 AND NOT FOUND
- DO
- BEGIN
- IF PFC[0] GQ MINPFC[I]
- AND PFC[0] LQ MAXPFC[I]
- THEN
- BEGIN
- IF PROCAN[I] NQ 0
- THEN
- BEGIN # WITHIN PFC/SFC RANGE #
- FOUND = TRUE;
- GOTO MSGDESTJT[CASEORD[I]];
- END
- ELSE
- BEGIN
- IF I NQ 4 # MSG TO MISSING CS OR NS #
- THEN
- DISCSNS = TRUE ;
- END
- END
- END
- SMC0:
- #
- SM-S PROCESSED BY NIP
- #
- NPNIPSM(P<DRHDRWD>,BADNBLK);
- GOTO SMC2;
- SMC1:
- #
- SM-S PROCESSED BY NS/CS
- #
- P<ACB> = ATACBA[PROCAN[I]] ;
- IF ATNVFN[ACBAN] OR ATNVFF[ACBAN]
- THEN
- BEGIN # APPLICATION HAS NETTED OFF OR FAIL#
- BADNBLK = TRUE ; # DISCARD THIS MESAGE #
- GOTO NEXT ;
- END # APPL. HAS NETTED OFF OR FAILED #
- # FORMAT SPECIAL ABH FOR ABT=4 #
- P<AHEADER> = P<NHEADER>;
- TWORD = NHWORD[0]; # SAVE NETWORK HEADER #
- P<NHEADER> = LOC(TWORD);
- ABHWORD[0] = 0;
- ABHABT[0] = APPSUP; # APPLICATION BLOCK TYPE #
- ABHBT[0] = BLKT; # NETWORK BLOCK TYPE #
- ABHNBH[0] = NBHABH[0]; # SET DN/SN/CN #
- ABHTLC[0] = CC[0]; # TEXT LENGTH #
- ABHACT[0] = CT8ASCII; # CHARACTER TYPE #
- BLINK(P<DRHDRWD>,P<ACB>); # LINK SM TO APP ACB #
- OSCHAPP(P<ACB>); # SCHEDULE APPLICATION #
- BADNBLK = FALSE;
- SMC2:
- END
- END # NOT A PWL #
- NEXT: IF BADNBLK AND ( NOT DISCSNS)
- THEN # PROCESS GARBAGE MESSAGE #
- BEGIN
- OVLNAME = NGIGOP; # OVERLAY NAME #
- PARAMP1 = P<DRHDRWD>; # ADDRESS OF BAD MSG #
- OVLCALL; # LOAD AND EXECUTE OVERLAY #
- END
- BLKT = BLKID[0];
- IF BLKT NQ DRIDVALUE AND BLKT NQ PWLRIDVALUE
- AND BLKT NQ POBIDVALUE
- THEN # BUFFER NOT QUEUED TO DATA RING
- BUFFER NOT QUEUED TO ACB
- #
- MRELS(P<DRHDRWD>); #RELEASE BUFFER#
- RETURN;
- END
- TERM
cdc/nos2.source/nam5871/neib1.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator