*DECK RELLLCB
USETEXT LLCB
USETEXT NHEADER
USETEXT NIPDEF
USETEXT AHEADER
USETEXT AT
USETEXT SUPMSG
USETEXT PARAMS
USETEXT PT
USETEXT TNT
USETEXT KDIS
USETEXT KSTTAB
PRGM RELLLCB;
# DELETE LOGICAL LINK CONTROL BLOCK #
STARTIMS;
#
*1DC RELLLCB
*
* 1. PROC NAME AUTHOR DATE
* RELLLCB E.T. WAN 81/03/28
*
* 2. FUNCTIONAL DESCRIPTION
* THIS ROUTINE RELEASES A LOGICAL LINK CONTROL BLOCK.
*
* 3. METHOD USED
* CALL MGETS TO RELEASE THE LOGICAL LINK CONTROL BLOCK.
* IF ONLY ONE LINK EXISTS FOR THE TERMINAL NODE, CLEAR THE
* TNT ENTRY. IF MORE THAN ONE LINK EXIST, UPDATE ALL AFFECTED
* FORWARD AND BACKWARD POINTERS.
* DECREMENT THE NUMBER OF LOGICAL LINKS IN TNT ENTRY.
* INFORM NVF THAT A LINK WENT DOWN (FOR THE LID/PID MANEGMENT)
*
* 4. ENTRY PARAMETERS
* PARAMS1 NETWORK BLOCK HEADER ADDRESS
* PARAMS2 ADDRESS OF LOGICAL LINK CONTROL BLOCK TO
* BE DELETED.
*
* 5. EXIT PARAMETERS
* NONE
*
* 6. COMDECKS CALLED
* LLCB
* NHEADER
* NIPDEF
* PARAMS
* PT AT
* TNT AHEADER
* KDIS SUPMSG
* OSSIZE
*
* 7. ROUTINES AND OVERLAYS CALLED
* MRELS RELEASE BUFFER SPACE
* XTRACE TRACE CALL
* BLINK LINK A MESSAGE TO APPLICATION
* MGETS GET A BUFFER SPACE
* OSCHAPP SCHEDULE APPLICATION
* KDEL DELETE A LINE FROM STATUS DISPLAY
*
* 8. DAYFILE MESSAGES
* NONE
*
* THIS PROGRAM IS A SECONDARY OVERLAY LOADED BY SUBROUTINE
* OVLCALL. WHEN EXECUTION HAS COMPLETED, A JUMP IS MADE TO
* LOCATION RJMAIN TO RETURN TO THE CALLING PROGRAM.
*
* W A R N I N G - THIS PROGRAM CANNOT EXCEED THE SECONDARY
*CALL OSSIZE
*
* THIS OVERLAY IS CALLED BY NPREGLL, NPREGCP.
*
#
STOPIMS;
#
**** EXTERNAL ENTRY POINTS
#
XREF
BEGIN
PROC MRELS; # RELEASE BUFFER SPACE #
PROC MGETS ;
PROC OSCHAPP ;
PROC BLINK ;
LABEL RJMAIN; # RETURN ADDRESS IN OVLCALL #
PROC XTRACE; # RECORD TRACE #
PROC BLDKWL; # FORMAT KWL TO DELETE LLK ENTRY #
END
#
* LOCAL VARIABLES
#
ITEM IDXTN; # TNT ENTRY INDEX #
ITEM SAVBP; # SAVE LLCB BACKWARD POINTER #
ITEM BUFADDR ;
ITEM SAVFP; # SAVE LLCB FORWARD POINTER #
BEGIN # RELLLCB #
CONTROL IFEQ DEBUG,1 ;
XTRACE("RLLCB") ;
CONTROL FI;
P<LLCB> = PARAMS2; # LOCATION OF LOGICAL LINK CONTROL BLOCK #
IDXTN = LLCBTN[0] ; # INDEX INTO TNT #
IF ATACBA[NVFAN] NQ 0
THEN
BEGIN # NVF ALREADY NETTED ON #
#
GET A BUFFER FOR MESSAGE TO INFORM NVF
#
MGETS( LCRSLL + ABHSIZE + BLKHSIZE , BUFADDR , TRUE ) ;
#
SET UP APPLICATION HEADER
#
P<AHEADER> = BUFADDR + BLKHSIZE ;
ABHABT[0] = APPCMD ;
ABHACT[0] = CT60TRANS ;
ABHTLC[0] = LCRSLL ;
#
SET-UP THE MESSAGE ITSELF
#
P<SUPMSG> = BUFADDR + ABHSIZE + BLKHSIZE ;
# #
PFCSFC[0] = CRSLL ;
P<SMNVF> = P<SUPMSG> ;
# #
CRSLDN [0] = LLCBTN[0] ; # DESTINATION NODE NUMBER #
CRSLSN [0] = LLCBHN[0] ; # SOURCE NODE NUMBER #
CRSLST [0] = 0 ; # LOGICAL LINK DOWN SIGNAL #
#
AND LINK MESSAGE TO NVF
#
BLINK ( BUFADDR,ATACBA[NVFAN]) ; # QUEUE TO NVF #
OSCHAPP (ATACBA[NVFAN]) ;
END # NVF ALREADY NETTED ON #
IF KDST[0]
AND LLCBHN[0] NQ 0 # NOT INTRA-HOST LOGICAL LINK #
AND LLCBTN[0] NQ 0
THEN # DELETE LOGICAL LINK ENTRY FROM STATUS DISPLAY #
BLDKWL(KST"LLK",LLCBKNDX[0],0,KDELIDVALUE);
# #
IF TNTNLL[IDXTN] EQ 1 # ONE LLCB EXISTS #
THEN
BEGIN
MRELS(P<LLCB>); # RELEASE LLCB SPACE #
IF IDXTN NQ 0
THEN
TNTWD[IDXTN] = 0; # CLEAR TNT ENTRY #
ELSE
BEGIN # ZEROETH ENTRY A-A LOGICAL LINK #
TNTNLL[IDXTN] = 0;
TNTLLAD[IDXTN] = 0;
END
END
ELSE
BEGIN
SAVBP = LLCBBP[0]; # SAVE BACKWARD POINTER #
SAVFP = LLCBFP[0]; # SAVE FORWARD POINTER #
MRELS(P<LLCB>); # RELEASE LLCB SPACE #
IF SAVBP EQ 0 # FIRST LLCB TO BE DELETED #
THEN
BEGIN
TNTLLAD[IDXTN] = SAVFP; # UPDATE LLCB ADDRESS IN TNT #
P<LLCB> = SAVFP; # MOVE TO THE FOLLOWING LLCB #
LLCBBP[0] = 0; # CLEAR BACKWARD POINTER #
END
ELSE
BEGIN
IF SAVFP EQ 0 # LAST LLCB TO BE DELETED #
THEN
BEGIN
P<LLCB> = SAVBP; # MOVE TO THE PREVIOUS LLCB #
LLCBFP[0] = 0; # CLEAR FORWARD POINTER #
END
ELSE # NOT FIRST OR LAST LLCB TO BE DELETED #
BEGIN
P<LLCB> = SAVFP; # MOVE TO THE FOLLOWING LLCB #
LLCBBP[0] = SAVBP; # UPDATE BACKWARD POINTER #
P<LLCB> = SAVBP; # MOVE TO THE PREVIOUS LLCB #
LLCBFP[0] = SAVFP; # UPDATE FORWARD POINTER #
END
END
TNTNLL[IDXTN] = TNTNLL[IDXTN] - 1; # DECREMENT LINK NUMBER #
END;
GOTO RJMAIN; # RETURN TO CALLING PROGRAM #
END # RELLLCB #
TERM