cdc:nos2.source:nam5871:nvfavvd
Table of Contents
NVFAVVD
Table Of Contents
- [00009] PROC NVFAVVD
- [00010] NVFAVVD - VERIFY A-A VALIDATION DATA
- [00014] VERIFY A-A VALIDATION DATA.
- [00056] PROC NVFUMQE
- [00057] PROC NVFUFVO
- [00058] PROC SSTRTS
- [00059] PROC NVFAIAM
- [00060] PROC NVFSCAD
- [00061] PROC MOVE
- [00062] PROC NVFUCRS
- [00063] PROC SSCATR
- [00064] PROC MESSAGE
- [00065] PROC ABORT
- [00066] PROC SSTAQE
- [00067] PROC NVFCFCE
- [00095] VDATBUF - VALIDATION DATA UTILITY ARRAY DEF.
- [00104] T1TEMP - TEMP ARRAY DEFINITION FOR MOVE.
- [00113] T2TEMP - TEMP ARRAY DEFINITION FOR MOVE.
- [00136] TMBBUF - TIMER REQUEST BUFFER.
Source Code
- NVFAVVD.txt
- *DECK NVFAVVD
- USETEXT TEXTNVF
- USETEXT TEXTSS
- USETEXT TXSMNVF
- USETEXT TXTSUSS
- USETEXT TXTANVF
- USETEXT TXTAPSS
- PROC NVFAVVD;
- # TITLE NVFAVVD - VERIFY A-A VALIDATION DATA #
- BEGIN # NVFAVVD #
- #
- ** NVFAVVD - VERIFY A-A VALIDATION DATA.
- *
- * C. BRION 82/12/03. 82/12/18. 83/01/14. 83/03/24.
- * 83/05/09.
- *
- * THIS PROCEDURE RECEIVES THE VALIDATION DATA FOR AN A-A
- * CONNECTION AT THE RECEIVING HOST. VALIDATION PROCESSING
- * IS PERFORMED AND FURTHUR CONNECTION PROCESSING IS THEN
- * PERFORMED DEPENDENT UPON THE VALIDATION RESULTS AND THE
- * TYPE OF APPLICATION AND THE STATUS OF THE CALLED APPLICATION.
- *
- * PROC NVFAVVD
- *
- * ENTRY:
- * WORD COUNT WORD OF VALIDATION DATA IN WCBUF.
- * ACN OF CONNECTION FOR WHICH VALIDATION DATA INTENDED IN ABHBUF.
- * VALIDATION DATA RESIDES IN MSGBUF.
- *
- * EXIT:
- * ONE OF THE FOLLOWING:
- *
- * SUCCESSFUL VALIDATION:
- * CR/RAP/N SM SENT TO OTQ.
- * CR/SWH/R SM SENT TO CTQ.
- * PAAC ENTRY UPDATED WITH VALIDATION INFO.
- * ABAC ACCOUNT MESSAGE ISSUED.
- *
- * UNSUCCESSFUL VALIDATION:
- * CR/RAP/A SM SENT TO CTQ.
- * ABAR ACCOUNT MESSAGE ISSUED.
- * AST ENTRY FOR CALLED APPLICATION UPDATED.
- * DECREMENT FAMILY COUNT CPM CALL ISSUED.
- * APPLICATION DEPARTURE PROCESSING PERFORMED.
- * VCB ORDINAL AND PAAC ENTRY RELEASED.
- #
- #
- **** PROC NVFAVVD XREF LIST
- #
- XREF
- BEGIN
- PROC NVFUMQE; # MAKE QUEUE ENTRY #
- PROC NVFUFVO; # FREE VCB ORDINAL #
- PROC SSTRTS; # SS-RELEASE TABLE SPACE #
- PROC NVFAIAM; # A-A ISSUE ACCOUNT MSG #
- PROC NVFSCAD; # COMPLETE APPL DEPARTURE #
- PROC MOVE; # SS-MOVE WORDS #
- PROC NVFUCRS; # CHECK RQST START STATUS #
- PROC SSCATR; # SS - ACCEPT TIMER REQUEST #
- PROC MESSAGE;
- PROC ABORT;
- PROC SSTAQE; # ACCEPT QUEUE ENTRY #
- PROC NVFCFCE; # FIND CONNECTION ENTRY #
- END
- #
- ****
- #
- #
- * ITEM LIST AND ARRAY DEFINITIONS.
- #
- ITEM NENTRY I; # LOCAL COUNT VAR #
- ITEM PAC I; # PAAC ENTRY INDEX #
- ITEM I I; # LOOP VAR #
- ITEM MTYP I; # TYPE AND COUNT VAR #
- ITEM AORD I; # AST ORDINAL #
- ITEM VCB I; # VCB ORDINAL #
- ITEM ASENTRY I; # NUMBER AST ENTRIES #
- ITEM PAS I; # PRIMARY AST ORDINAL #
- ITEM RAS I; # RETURN AST ORDINAL #
- ITEM STAT I; # RETURN STATUS #
- ITEM ERRCODE I; # CR/RAP/A SM ERROR CODE #
- ITEM CTYP I; # CONNECTION TYPE VARIABLE #
- ITEM ACNN I; # TEMPORARY CONNECTION NUM #
- ITEM AE I; # INDEX TO ACN TABLE #
- ITEM NEWACN B; # TRUE IF ACN NOT FOUND #
- #
- ** VDATBUF - VALIDATION DATA UTILITY ARRAY DEF.
- #
- BASED ARRAY VDATBUF [00:00] S(1);
- BEGIN
- ITEM VDA$WORD U(00,00,60);
- END
- #
- ** T1TEMP - TEMP ARRAY DEFINITION FOR MOVE.
- #
- BASED ARRAY T1TEMP [00:00] S(1);
- BEGIN
- ITEM T1T$WORD U(00,00,60);
- END
- #
- ** T2TEMP - TEMP ARRAY DEFINITION FOR MOVE.
- #
- BASED ARRAY T2TEMP [00:00] S(1);
- BEGIN
- ITEM T2T$WORD U(00,00,60);
- END
- $BEGIN
- #
- * RHFMSG - RHF NVF DEBUG MESSAGE ARRAY.
- #
- ARRAY RHFMSG [00:00] S(4);
- BEGIN
- ITEM RHF$RTN C(00,00,10) = ["NVFAVVD: "];
- ITEM RHF$TEXT C(01,00,30);
- ITEM RHF$ZB U(04,00,60) = [0];
- END
- $END
- #
- ** TMBBUF - TIMER REQUEST BUFFER.
- *
- * TMBBUF IS THE BUFFER USED TO HOLD A TIMER REQUEST.
- #
- ARRAY TMBBUF [00:00] S(TMBSIZ$);
- BEGIN
- ITEM TMB$SMID S:CTQSTAT(00,00,12) = [S"SINA"];
- ITEM TMB$WC U(00,48,12) = [TMBSIZ$];
- ITEM TMB$ABT U(01,00,06) = [APPCMD];
- ITEM TMB$CNUM U(01,18,18);
- ITEM TMB$PFCSFC U(02,00,16) = [FCINA];
- ITEM TMB$ACN U(02,24,12);
- ITEM TMB$DELAY U(03,24,18) = [NETPTIME$];
- ITEM TMB$QNUM U(03,42,18);
- END
- CONTROL EJECT;
- #
- * LOCATE PAAC ENTRY FOR VALIDATION DATA BASED ON THE ACN OF THE
- * VALIDATION DATA.
- #
- NENTRY = PACLNGTH / PAACSIZ$;
- FOR PAC = 0 STEP 1 WHILE ((PA$VCB[PAC] NQ ABHADR[0]) AND
- (PAC LS NENTRY))
- DO
- BEGIN END
- $BEGIN
- IF PAC EQ NENTRY
- THEN
- BEGIN
- RHF$TEXT[0] = "PAAC ENTRY NOT FOUND";
- MESSAGE(RHFMSG,0);
- ABORT;
- END
- $END
- #
- * DETERMINE THE AST ORDINAL OF THE CALLED APPLICATION.
- #
- ASENTRY = (ASTLNGTH/ASTSIZ$);
- FOR AORD = 0 STEP 1 WHILE
- ((AORD LS ASENTRY) AND
- (AST$PANAM[AORD] NQ PA$RAPNM[PAC]))
- DO
- BEGIN
- END
- $BEGIN
- IF AORD EQ ASENTRY
- THEN
- BEGIN
- RHF$TEXT[0] = "AST ENTRY NOT FOUND";
- MESSAGE(RHFMSG,0);
- ABORT;
- END
- $END
- PAS = AORD;
- RAS = AORD;
- #
- * CHECK IF AST ENTRY[AORD] IS PRIMARY OR NOT.
- * IF NOT, LOCATE PRIMARY AST ENTRY.
- #
- IF AST$PANAM[PAS] NQ AST$SANAM[PAS]
- THEN
- BEGIN
- RAS = PAS;
- FOR PAS = 0 STEP 1 WHILE
- ((AST$PANAM[PAS] NQ AST$SANAM[RAS]) AND
- (PAS LS ASENTRY))
- DO
- BEGIN
- END
- $BEGIN
- IF PAS EQ ASENTRY
- THEN
- BEGIN
- RHF$TEXT[0] = "PRI AST NOT FOUND";
- MESSAGE(RHFMSG,0);
- ABORT;
- END
- $END
- END
- #
- * COPY VALIDATION DATA INTO THE PAAC ENTRY.
- #
- P<VDATBUF> = LOC(PA$FWORD[PAC]);
- FOR I = 0 STEP 1 UNTIL (WCB$WC[0] - 3)
- DO
- BEGIN
- VDA$WORD[I] = MSG$WORD[I];
- END
- #
- * PRESET THE ERROR CODE FOR ABNORMAL CASES.
- #
- ERRCODE = RCRA"MMF";
- #
- * CHECK FOR VALIDATION STATUS (SUCCESS OR NOT).
- #
- MTYP = 59 - AST$AWBP[PAS];
- IF ((B<MTYP,1>PA$AAVW[PAC] EQ 1) AND
- (PA$SCINV[PAC] EQ 0) AND ((PA$AAVW[PAC] LAN VAPMASK) NQ 0))
- THEN
- #
- * SUCCESSFUL FAM/USER VALIDATION. CHECK APPLICATION NAME VALIDATION.
- * CALLED APPLICATION NAME CANNOT BE ONE OF THE SUPERVISORY
- * NETWORK PROGRAMS (NVF,NS,CS).
- #
- BEGIN
- IF PA$RAPNM[PAC] NQ "NVF" AND
- PA$RAPNM[PAC] NQ "NS" AND
- PA$RAPNM[PAC] NQ "CS"
- THEN
- BEGIN
- #
- * NOT A SUPERVISORY APPLICATION. CHECK IF CALLED APPLICATION
- * IS REQUEST STARTABLE.
- #
- STAT = CONNOK$;
- IF AST$RS[AORD]
- THEN
- BEGIN
- #
- * REQUEST STARTABLE APPLICATION TYPE. CALL NVFUCRS TO DETERMINE
- * THE STATUS OF THE CALLED APPLICATION.
- * SET THE LOCAL AST ORDINAL TO THE RETURN AST ORDINAL.
- * SET THE PAAC ENTRY REQUESTED APPLICATION NAME & NUMBER.
- #
- CTYP = AACON$;
- NVFUCRS(PAS,RAS,STAT,CTYP);
- PA$RAPNM[PAC] = AST$PANAM[RAS];
- PA$RAPAN[PAC] = AST$AN[RAS];
- END
- IF STAT EQ NETP$
- THEN
- BEGIN
- #
- * WAITING ON CALLED APPLICATION NETON.
- * SET PAAC STATE TO NETON PENDING.
- * SET UP AND ISSUE TIMER REQUEST FOR CONNECTION.
- * RECORD THE TIMER CANCELLATION NUMBER IN THE PAAC ENTRY.
- * SET THE SWITCHED APPLICATION NAME OF THE PAAC ENTRY.
- #
- PA$STATE[PAC] = PAACST"PANETP";
- TMB$ACN[0] = PA$NACN[PAC];
- TMB$QNUM[0] = LOC(P<AAINPQ>);
- SSCATR(TMBBUF[0]);
- PA$CNUM[PAC] = TMB$CNUM[PAC];
- PA$SWAP[PAC] = AST$PANAM[PAS];
- END
- ELSE IF STAT EQ NOCONN$ OR
- STAT EQ MCLIMIT$
- THEN
- #
- * CONNECTION NOT POSSIBLE. SET CR/RAP/A SM REASON CODE.
- #
- ERRCODE = RCRA"ANA";
- ELSE
- BEGIN
- #
- * CONNECTION OK.
- * SET CONNECT TIME IN PAAC ENTRY.
- * ISSUE ACCOUNT MESSAGE.
- * SET SWITCHED APPLICATION NAME AND NUMBER IN PAAC ENTRY.
- * SET STATE OF PAAC ENTRY.
- * SET UP AND SEND CR/RAP/N SM.
- * SET UP AND SEND CR/SWH/R SM TO CONNECTION TRAFFIC QUEUE.
- #
- PA$CNTIME[PAC] = CTM$PDT[0];
- MTYP = ABAC$;
- NVFAIAM(PAC,MTYP);
- PA$SWAP[PAC] = PA$RAPNM[PAC];
- PA$SWAPAN[PAC] = PA$RAPAN[PAC];
- PA$STATE[PAC] = PAACST"PARAP";
- SPMSG0[1] = PA$RAPSM0[PAC];
- SPMSG1[1] = PA$RAPSM1[PAC];
- SPMSG2[1] = PA$RAPSM2[PAC];
- CRICT[1] = CT60TRANS;
- RB[1] = TRUE;
- CRVCB[1] = PA$VCB[PAC];
- NVFUMQE(P<CTQ>,APSM[1],APPPR$,0,LCRRAPN);
- #
- * SEND THE CR/RAP/N SM TO THE OTQ, BYPASSING THE CTQ.
- #
- WCB$WORD[0] =0;
- WCB$WC[0] = LCRRAPN + 2;
- ABHWORD[0] = 0;
- ABHABT[0] = APPCMD;
- ABHADR[0] = 0;
- ABHTLC[0] = LCRRAPN;
- ABHACT[0] = 1;
- SSTAQE (P<OTQ>, WCBUF, ABHBUF, APSM[1]);
- #
- * CHANGE ACN STATE FROM CREATE TO ACTIVE.
- #
- ACNN = PA$NACN[PAC];
- NVFCFCE (ACNN,AE,NEWACN);
- IF NEWACN # COULD NOT FIND ACN ENTRY, SERIOUS PROBLEM #
- THEN
- BEGIN
- $BEGIN
- RHF$TEXT[0] = "COULD NOT FIND ACN ENTRY";
- MESSAGE(RHFMSG,0);
- ABORT;
- $END
- END
- ELSE # AND ENTRY EXIST, UPDATE ITS STATE #
- ACN$STATE[AE] = ACNST"ACTIVE";
- #
- * SEND CR/SWH/R.
- #
- FOR I = 0 STEP 1 UNTIL (MSBFNVL - 1)
- DO
- BEGIN
- MSG$WORD[I] = 0;
- END
- PFCSFC[0] = CRSWH;
- CRNACN[0] = CRNACN[1];
- CRABL[0] = CRRAABL[1];
- CRDT[0] = PA$DT[PAC];
- CRSNAME[0] = " ";
- CRSWHID[0] = PA$URHID[PAC];
- CRSWSL[0] = AASECLEV$;
- CRSWDBZ[0] = CRADBZ[1];
- CRSWUBZ[0] = CRAUBZ[1];
- CRSWAN[0] = PA$SWAPAN[PAC];
- NVFUMQE(P<CTQ>,APSM[0],APPPR$,0,LCRSWH);
- AST$AACN[RAS] = AST$AACN[RAS] + 1;
- IF RAS NQ PAS
- THEN
- BEGIN
- AST$AACN[PAS] = AST$AACN[PAS] + 1;
- END
- END
- END
- END # IF PA$SCINV #
- #
- * IF ERRORS DETECTED VIA STATE OF PAAC ENTRY, THEN ISSUE THE
- * CR/RAP/A SM, ISSUE THE ABAR ACCOUNT MESSAGE, DECREMENT THE
- * NUMBER OF A-A CONNECTIONS FOR THE CALLED APPLICATION, ISSUE
- * A DECREMENT FAMILY COUNT CPM FUNCTION REQUEST IF REQUIRED,
- * COMPLETE APPLICATION DEPARTURE PROCESSING, FREE UP THE VCB
- * ORDINAL AND PAAC ENTRY BEFORE EXIT.
- #
- IF PA$STATE[PAC] NQ PAACST"PARAP" AND
- PA$STATE[PAC] NQ PAACST"PANETP"
- THEN
- BEGIN
- SPMSG0[1] = PA$RAPSM[PAC];
- EB[1] = TRUE;
- CRRRAP[1] = ERRCODE;
- NVFUMQE(P<CTQ>,APSM[1],APPPR$,0,LCRRAPA);
- MTYP = ABAR$;
- NVFAIAM(PAC,MTYP);
- IF PA$UPFCF[PAC]
- THEN
- BEGIN
- P<CRQBUF> = LOC(MSGBUF[0]);
- CRQ$FCWORD[0] = 0;
- CRQ$FWORD[0] = 0;
- CRQ$FC[0] = CPM73B$;
- CRQ$ACN[0] = 0;
- CRQ$FNAM[0] = PA$FAM[PAC];
- MTYP = CRQDSIZ$ * 10;
- NVFUMQE(P<CPMRQ>,CRQBUF[0],APPTTX$,0,MTYP);
- END
- NVFSCAD(PAS);
- IF PAS NQ RAS
- THEN
- NVFSCAD(RAS);
- VCB = PA$VCB[PAC];
- NVFUFVO(VCB);
- PAC = PAC * PAACSIZ$;
- SSTRTS(P<PAAC>,PAC,PAACSIZ$);
- END
- END # NVFAVVD #
- TERM
- *ENDIF
cdc/nos2.source/nam5871/nvfavvd.txt ยท Last modified: 2023/08/05 17:22 by Site Administrator