*DECK FFSRPNR 
USETEXT TEXTFFS                      # FS  SYSTEM DEFINITIONS         # 
PROC FFSRPNR (CCT$, EVENT); 
*CALL COPYRITE
# TITLE FFSRPNR - TCP PROCESS NORMAL REPLIES.                         # 
  
      BEGIN                          # FFSRPNR #
  
# 
**    FFSRPNR - TCP PROCESS NORMAL REPLIES. 
* 
*     CMP   02/88 
* 
*     'FFSRPNR' PROCESSES NORMAL REPLIES FROM THE TCP GATEWAY IN
*     RESPONSE TO A PREVIOUSLY ISSUED TCP REQUEST.  NOTE THAT REPLIES 
*     FOR OPEN SAP AND OPEN CONNECTION REQUESTS ARE HANDLED IN
*     FFSLTIP.
* 
*     ENTRY (CCT$)       = CONNECTION CONTROL ENTRY NUMBER. 
*           (EVENT)      = EVENT GENERATED BY THE REPLY.
*           (DN$T$IDENT) = INDEX INTO PRIMITIVE TABLE OF REPLY HDDR.
* 
* 
*     DESCRIPTION.
* 
*     THE ACTION TO BE TAKEN DEPENDS ON THE TYPE OF REPLY HEADER
*     RECEIVED. 
* 
*     RETURN. 
# 
  
      XREF
        BEGIN 
        PROC ABORT;                  # NOS ABORT MACRO                # 
        PROC MESSAGE;                # NOS MESSAGE MACRO              # 
        END 
  
      ITEM CCT$       U;           # CN CONTROL ENTRY NUMBER          # 
      ITEM EVENT      U;           # EVENT GENERATED                  # 
  
  
      ARRAY INTRNL [00:00] S(4);     # INTERNAL ERROR MESSAGE         # 
        BEGIN 
        ITEM INTNL   C(00,00,30) =
          [" FFSRPNR - TCP INTERNAL ERROR "]; 
        ITEM INTZB   U(03,00,60) = [0]; 
        END 
  
      SWITCH REPLY : TCI$ID  # TCP REPLY SWITCH                       # 
         ALLOCATE  : TCI$A, 
         INVALID   : TCI$AC,
         ABORTCON  : TCI$ACC, 
         CLOSESAP  : TCI$CS,
         DISCONNCT : TCI$D, 
         INVALID   : TCI$OS,
         INVALID   : TCI$PC,
         STATUSRQ  : TCI$S, 
         SENDDATA  : TCI$SD,
         INVALID   : TCI$ABI, 
         INVALID   : TCI$CI,
         INVALID   : TCI$CSI, 
         INVALID   : TCI$DC,
         INVALID   : TCI$DI,
         INVALID   : TCI$EI,
         INVALID   : TCI$FCI, 
         INVALID   : TCI$R, 
         INVALID   : TCI$END; 
  
  
                                                         CONTROL EJECT; 
  
      P<GW$HEADER> = IND$ADDR[INAMTCP$];
  
# 
*     CASE REPLY OF 
# 
  
      GOTO REPLY [DN$T$IDENT];
  
INVALID:  
  
# 
*     ABORT THE APPLICATION.
# 
  
      MESSAGE(INTRNL, 0); 
      ABORT;
  
  
STATUSRQ: 
  
# 
*     IGNORE... 
# 
  
      GOTO END$CASE;
  
  
ABORTCON: 
  
# 
*     SET CONNECTION TYPE IN INDICATION BLOCK.
*     FALL THRU TO CLOSESAP TO CLEAR OUT CCT VALUES.
# 
  
      IND$CTYPE[ITCPCM$] = CCT$;
  
CLOSESAP: 
  
# 
*     CLEAR OUT CCT ENTRY VALUES. 
# 
  
      IF DN$T$IDENT EQ TCI$ID"TCI$CS" 
      THEN
        BEGIN 
        ACN$TSAPID[CCT$] = 0; 
        ACN$CSAPID[CCT$] = 0; 
        ACN$CCEPID[CCT$] = 0; 
        END 
      ELSE
        BEGIN 
        ACN$DIPFIU[CCT$] = IP$FIUSTAT"NONE";
        ACN$DIPNET[CCT$] = 0; 
        ACN$DIPHST[CCT$] = 0; 
        IF EPTFLAG EQ FTPC$ 
        THEN
          BEGIN                      # CLIENT CONN. - CLEAR SRCE PORT # 
          ACN$STCPRT[CCT$] = 0; 
          ACN$STCPIU[CCT$] = FALSE; 
          END 
        ELSE
          BEGIN                      # SERVER CONN. - CLEAR DEST PORT # 
          ACN$DTCPRT[CCT$] = 0; 
          ACN$DTCPIU[CCT$] = FALSE; 
          END 
        END 
      ACN$TCEPID[CCT$] = 0; 
      ACN$TURGNT[CCT$] = FALSE; 
  
      GOTO END$CASE;
  
  
SENDDATA: 
ALLOCATE: 
DISCONNCT:  
  
# 
*     NO OPERATION.  THESE REPLIES HAVE NO PARAMETERS OTHER 
*     THAN THE REPLY STATUS.
# 
  
END$CASE: 
  
# 
*     END CASE OF REPLY 
# 
  
      DN$T$ITTID = ACN$ACN[CCT$]; 
  
      RETURN; 
  
      END                            # FFSRPNR #
  
      TERM
