*DECK RELCONN 
USETEXT LLCB
USETEXT NCNB
USETEXT NCNT
USETEXT NIPDEF
USETEXT PARAMS
USETEXT SUPMSG
PROC RELCONN(LLCBA,TRIGER); 
#     RELEASE ALL CONNECTIONS ON A LOGICAL LINK                        #
  
 STARTIMS;
 #
*1DC  RELCONN 
* 
*     1. PROC NAME           AUTHOR              DATE 
*        RELCONN             E.T. WAN            81/05/26 
* 
*     2. FUNCTIONAL DESCRIPTION 
*        THIS ROUTINE TERMINATES ALL CONNECTIONS ON A LOGICAL LINK. 
* 
*     3. METHOD USED
*        FOR EACH ACTIVE CONNECTION ON THE LOGICAL LINK, CALL NETWORK 
*        CONNECTION STATE TABLE PROCESSOR TO TERMINATE THE CONNECTION.
* 
*     4. ENTRY PARAMETERS 
*        LLCBA       ADDRESS OF LLCB
*        TRIGER      TRIGER TO STATE TABLE PROCESSOR
* 
*     5. EXIT PARAMETERS
*        NONE 
* 
*     6. COMDECKS CALLED
*        LLCB 
*        NCNT 
*        NIPDEF 
* 
*     7. ROUTINES AND OVERLAYS CALLED 
*        NCSTTP              NETWORK CONNECTION STATE TABLE PROCESSOR 
*        XTRACE              TRACE CALLS
* 
*     8. DAYFILE MESSAGES 
*        NONE 
* 
* 
 #
 STOPIMS; 
  
# 
****  EXTERNAL ENTRY POINTS 
# 
  
      XREF
        BEGIN 
        LABEL RJMAIN;        # RETURN ADDRESS IN OVLCALL               #
        PROC NCSTTP;         # NETWORK CONNECTION STATE TABLE PROCESSOR#
        PROC XTRACE;         # TRACE CALLS                             #
        END 
  
# 
*     LOCAL VARIABLES 
# 
  
      ITEM CONN;             # CONNECTION NUMBER                       #
      ITEM FIRSTCN;          # FIRST CONNECTION NUMBER IN A NCNT       #
      ITEM I;                # LOOP CONTROL VARIABLE                   #
      ITEM J;                # LOOP CONTROL VARIABLE                   #
      ITEM NNCNTE;           # NUMBER OF ENTRIES IN NCNT               #
      ITEM LLCBA  ;          # LLCB ADDRESS                            #
      ITEM TRIGER ;          # TRIGER TO STATE TABLE PROCESSOR         #
  
#**********************************************************************#
  
  
  
  
  
      BEGIN #RELCONN# 
      CONTROL IFEQ DEBUG,1; 
        XTRACE("RCONN") ; 
      CONTROL FI; 
  
      P<LLCB> = LLCBA ;      # LLCB                                    #
      NNCNTE = NCNTSIZE - NCNTHSIZE;  # NUMBER OF ENTRIES IN NCNT      #
      FOR I = LLCBHSIZE STEP 1 UNTIL LLCBSIZE - LLCBHSIZE - 1 
      DO                     # CHECK EACH NCNT ADDRESS IN LLCB         #
        BEGIN 
        P<NCNT> = LLCBNCNT[I];  # NCNT ADDRESS                         #
        IF P<NCNT> NQ 0      # NCNT EXISTS                             #
        THEN
          BEGIN 
          FIRSTCN = NCNTCI[0] * NNCNTE; # FIRST CONN NUMBER IN NCNT    #
          FOR J = NCNTHSIZE STEP 1 WHILE J LQ NNCNTE AND
          LLCBNCNT[I] NQ 0
          DO                 # CHECK EACH NCNB ADDRESS IN NCNT         #
            BEGIN 
            IF NCNTNCNB[J] NQ 0  # NCNB EXISTS                         #
            THEN
              BEGIN 
  
              # IF THIS IS A PRU CONNECTION, SET THE NCNTREL BIT SO    #
              # THE CONNECTION WILL BE RELEASED WHEN PIP SENDS NIP A   #
              # RESPONSE WORKLIST (OP=3).                              #
  
              P<NCNB> = NCNTNCNB[J];
              IF (NCNBID[0] EQ PCNBIDVALUE) OR
                 (NCNBID[0] EQ LCNBIDVALUE) 
              THEN
                BEGIN 
                NCNTREL[J] = TRUE;       # SET THE TO-BE-RELEASED FLAG #
                END 
  
              CONN = FIRSTCN + J - NCNTHSIZE ;  # CONNECTION NUMBER    #
  
# 
*     CALL NETWORK CONNECTION STATE TABLE PROCESSOR TO TERMINATE
*     CONNECTION. TRIGGER IS 'LOGICAL LINK FAIL'. 
# 
  
              NCSTTP(P<LLCB>,CONN,TRIGER,0);
              END 
  
            END 
  
          END 
  
        END 
  
  
      END # RELCONN # 
  
TERM
