*DECK IPISPSM 
USETEXT TEXTIPL 
      PROC IPISPSM; 
*CALL COPYRITE          CDCNET - COPYRIGHT CONTROL DATA. 1992.
# TITLE IPISPSM - PROCESS SUPERVISORY MESSAGE.                         #
  
      BEGIN                            # IPISPSM                       #
# 
****  IPISPSM  PROCESS SUPERVISORY MESSAGE. 
* 
*     THIS PROCEDURE PROCESSES ALL SUPERVISORY MESSAGES RECEIVED BY 
*     THE NAM INPUT TRAFFIC HANDLER.  THE MESSAGE IS VALIDATED AND
*     THEN THE PROPER PROSESSING PROCEDURE IS INVOKED.
* 
*     PROC IPISPSM
* 
*     ENTRY    INPBUF = ARRAY CONTAINING SUPERVISORY MESSAGE. 
*              P<ABH> = PTR TO INPUT APPLICATION BLOCK HEADER.
* 
*     EXIT     SUPERVISORY MESSAGE PROCESSED. 
*              P<ABH> AND P<APSM> MAY POINT TO OUTGOING INFORMATION.
* 
*     METHOD   THE PRIMARY AND SECONDARY FUNCTION CODES ARE EXAMINED
*              TO DETERMINE WHICH SUPERVISORY MESSAGE WAS RECEIVED. 
*              BASED ON THE MESSAGE, THE REQUIRED ACTION IS TAKEN.
*              SOME SUPERVISORY MESSAGES ARE IGNORED AS THEY HAVE NO
*              EFFECT ON THE APPLICATIONS OPERATION.
* 
# 
  
# 
****  PROC IPISPSM - XREF LIST
# 
      XREF
        BEGIN 
        PROC IPIAIPA;    # ABORT THE IP APPLICATION                    #
        PROC IPISPCA;    # PROCESS APPLICATION CONNECTION REJECT       #
        PROC IPISPCB;    # PROCESS CONNECTION BROKEN                   #
        PROC IPISPCE;    # PROCESS CONNECTION END                      #
        PROC IPISPCR;    # PROCESS CONNECTION REQUEST                  #
        PROC IPISPEL;    # PROCESS ERROR LOGICAL                       #
        PROC IPISPFA;    # PROCESS BLOCK ACKNOWLEGMENT                 #
        PROC IPISPFI;    # PROCESS CONNECTION INITIALIZED              #
        PROC IPISPHO;    # PROCESS HOST OPERATOR REQUEST               #
        PROC IPISPSI;    # PROCESS SHUTDOWN REQUEST                    #
        PROC MESSAGE;    # DISPLAY AND DAYFILE A MESSAGE               #
        PROC XWOD;       # CONVERT WORD TO OCTAL DISPLAY               #
        END 
# 
**
# 
      ITEM SMPFCSFC      U;            # PRIMARY/SECONDARY FUNCTION    #
  
# 
****  ARRAYS FOR INVALID SUPERVISORY MESSAGE
# 
  
      ARRAY INVALIDSM [00:00] S(4); 
        BEGIN 
        ITEM INV$TXT1    C(00,00,24)   = ["IPP-INVALID SUPERVISORY "];
        ITEM INV$TXT2    C(02,24,08)   = ["MESSAGE."];
        ITEM INV$ZBYTE   U(03,12,48)   = [0]; 
        END 
  
      CONTROL EJECT;
      PROC SMERROR; 
      BEGIN                            # SMERROR                       #
# 
**
# 
      ITEM I             U;            # LOOP COUNTER                  #
      ITEM K             U;            # LOOP COUNTER                  #
# 
**
# 
      ARRAY SUPMSGTXT [00:00] S(3); 
        BEGIN 
        ITEM SUP$TEXT    C(00,00,20); 
        ITEM SUP$ZBYTE   U(02,00,60)   = [0]; 
        END 
  
# 
****  START SMERROR 
# 
  
      FOR I = 0 STEP 1 UNTIL (ABHTLC [0] - 1) DO
        BEGIN                          # CONVERT WORD OF SM FOR DAYFILE#
        XWOD (INP$WORD [I] ,SUPMSGTXT); 
        MESSAGE (SUPMSGTXT, 0); 
        END                            # CONVERT WORD OF SM FOR DAYFILE#
      RETURN; 
      END                              # SMERROR                       #
  
      CONTROL EJECT;
  
# 
****  START MAIN PROCEDURE
# 
  
      P<APSM>  = LOC(INPBUF);          # BASE SUPERVISORY MESSAGE      #
      SMPFCSFC = PFCSFC[0];            # PRIMARY/SECONDARY FUNCTION    #
  
# 
****  CON/ACRQ/A SUPERVISORY MESSAGE
# 
  
      IF SMPFCSFC EQ CONACRA
      THEN
        BEGIN                          # PROCESS CON/ACRQ/A            #
        IPISPCA;
        END 
  
# 
****  CON/CB SUPERVISORY MESSAGE
# 
  
      ELSE IF SMPFCSFC EQ CONCB 
      THEN
        BEGIN                          # PROCESS CONNECTION BROKEN     #
        IPISPCB;
        END 
  
# 
****  CON/END/N SUPERVISORY MESSAGE 
# 
  
      ELSE IF SMPFCSFC EQ CONENDN 
      THEN
        BEGIN                          # PROCESS CONNECTION ENDED      #
        IPISPCE;
        END 
  
# 
****  CON/REQ/R SUPERVISORY MESSAGE 
# 
  
      ELSE IF SMPFCSFC EQ CONREQ
      THEN
        BEGIN                          # PROCESS CONNECTION REQUEST    #
        IPISPCR;
        END 
  
# 
****  FC/ACK SUPERVISORY MESSAGE
# 
  
      ELSE IF SMPFCSFC EQ FCACK 
      THEN
        BEGIN                          # PROCESS BLOCK DELIVERED       #
        IPISPFA;
        END 
  
# 
****  FC/INA SUPERVISORY MESSAGE
# 
  
      ELSE IF SMPFCSFC EQ FCINA 
      THEN
        BEGIN                          # IGNORE CONNECTION INACTIVE    #
        END 
  
# 
****  FC/INIT SUPERVISORY MESSAGE 
# 
  
      ELSE IF SMPFCSFC EQ FCINIT
      THEN
        BEGIN                          # PROCESS CONNECTION INITIALIZED#
        IPISPFI;
        END 
  
# 
****  FC/NAK SUPERVISORY MESSAGE
# 
  
      ELSE IF SMPFCSFC EQ FCNAK 
      THEN
        BEGIN                          # PROCESS BLOCK NOT DELIVERED   #
        IPIAIPA (NAKERR$);             # NAM PROTOCOL ERROR            #
        RETURN; 
        END 
  
# 
****  ERR/LGL SUPERVISORY MESSAGE 
# 
  
      ELSE IF SMPFCSFC EQ ERRLGL
      THEN
        BEGIN                          # PROCESS ERROR LOGICAL         #
        SMERROR;                       # ISSUE ERROR TO DAYFILE        #
        IPIAIPA (ERRLGL$);             # NAM PROTOCOL ERROR            #
        RETURN; 
        END 
  
# 
****  SHUT/INSD SUPERVISORY MESSAGE 
# 
  
      ELSE IF SMPFCSFC EQ SHUINS
      THEN
        BEGIN                          # PROCESS SHUTDOWN REQUEST      #
        IPISPSI;
        END 
  
# 
****  HOP SUPERVISORY MESSAGE 
# 
  
      ELSE IF PFC [0] EQ HOP
      THEN
        BEGIN                          # PROCESS HOST OPERATOR REQUEST #
        IPISPHO;
        END 
  
# 
****  ALL OTHER SUPERVISORY MESSAGES
# 
  
      ELSE
        BEGIN                          # PROCESS OTHER TYPES           #
        MESSAGE (INVALIDSM, 0);        # DAYFILE INVALID SM MESSAGE    #
        SMERROR;                       # ISSUE ERROR TO DAYFILE        #
        END 
  
      RETURN;                          # RETURN TO CALLER              #
  
      END                              # IPISPSM                       #
  
      TERM
