*DECK IPISPFI
USETEXT TEXTIPL
PROC IPISPFI;
*CALL COPYRITE CDCNET - COPYRIGHT CONTROL DATA. 1992.
# TITLE IPISPFI - PROCESS FC/INIT SUPERVISORY MESSAGE. #
BEGIN # IPISPFI #
#
**** IPISPFI PROCESS FC/INIT SUPERVISORY MESSAGE.
*
* THIS PROCEDURE PROCESSES A FC/INIT SUPERVISORY MESSAGE.
*
* PROC IPISPFI
*
* ENTRY P<APSM> = PTR TO THE INPUT SUPERVISORY MESSAGE (*INBUF*).
*
* EXIT P<APSM> = PTR TO OUTPUT SUPERVISORY MESSAGE (*OUTBUF*).
* ISS$STATUS = SET TO *OK* IF ACN MATCH.
* ACN$STATTE = SET TO *OPEN*.
*
* METHOD IF THE CONNECTION STATE IS NOT *CONNECTED* OR *CLOSING*,
* THEN, TREAT IT AS A NAM PROTOCOL ERROR.
*
* IF THE CONNECTION STATE IS *CONNECTED*, CHANGE THE ACN
* STATE TO ACTIVE AND SEND THE FC/INIT/N SUPERVISORY
* MESSAGE.
*
* IF THE CONNECTION STATE IS *CLOSING*, THEN IGNORE THE
* MESSAGE.
*
#
#
**** PROC IPISPFI - XREF LIST
#
XREF
BEGIN
PROC IPIAIPA; # ABORT THE IP APPLICATION #
PROC IPIDOSM; # DISPATCH OUTPUT SUPERVISORY MESSAGE #
END
#
**
#
CONTROL EJECT;
#
**** START MAIN PROCEDURE
#
CURACN = FCACN [0];
#
**** IF THE CONNECTION STATE IS NOT *CONNECTED* OR *CLOSING* THEN
* TREAT AS A NAM PROTOCOL ERROR.
#
IF (ACN$STATE [CURACN] NQ S"CONNECTED")
AND (ACN$STATE [CURACN] NQ S"CLOSING")
THEN
BEGIN
IPIAIPA (NFCINIT$);
RETURN;
END
#
**** IF CONNECT STATE IS *CONNECTED*, SEND FC/INIT/N SUPERVISORY
* MESSAGE AND SET THE CONNECTION STATE TO *OPEN*. IF APPLICATION
* INITIATED CONNECTION, UPDATE THE SOCKET STATUS ENTRY FOR IPINITH.
#
IF ACN$STATE [CURACN] EQ S"CONNECTED"
THEN
BEGIN
IF ISS$ACN [0] EQ CURACN
THEN
BEGIN # APPLICATION INIT CONNECTION #
ISS$STATUS [0] = SOCKSTAT"OK";
END
ACN$STATE [CURACN] = S"OPEN"; # CONNECTION STATE NOW *OPEN* #
P<APSM> = LOC (OUTBUF); # BASE SUPERVISORY MESSAGE PTR #
SPMSG0[0] = 0; # CLEAR FIRST WORD #
FCACN [0] = CURACN; # SET CONNECTION NUMBER #
IPIDOSM (FCINITN, LFCINTN); # FORMAT AND SEND FC/INIT/N SM #
END
RETURN; # RETURN TO CALLER #
END # IPISPFI #
TERM