*DECK IPINITH
USETEXT TEXTIPL
PROC IPINITH;
*CALL COPYRITE CDCNET - COPYRIGHT CONTROL DATA. 1992.
# TITLE IPINITH - IP NAM INPUT TRAFFIC HANDLER. #
BEGIN # IPINITH #
#
**** IPINITH IP NAM INPUT TRAFFIC HANDLER.
*
* THIS PROCEDURE HANDLES ALL INPUT THROUGH THE AIP NAM INTERFACE.
*
* PROC IPINITH
*
* ENTRY NSUP = NAM SUPERVISORY WORD
*
* EXIT INPBUF = ARRAY CONTAINING SUPERVISORY/DATA MESSAGE
* P<ABH> = PTR TO INPUT APPLICATION BLOCK HEADER.
*
* METHOD CALL NETGETL FOR EITHER SUPERVISORY MESSAGES OR DATA.
* IF A SUPERVISORY MESSAGE IS OBTAINED THEN *IPISPSM*
* IS CALLED, IF DATA IS OBTAINED THE *IPIPIDB* IS CALLED.
* IF NO NAM INPUT IS AVAILABLE NETWAIT IS CALLED.
* RELEASE THE DEBUG LOG FILE IF MESSAGE COUNT EXPIRED.
#
#
**** PROC IPINITH - XREF LIST
#
XREF
BEGIN
PROC IPIPIDB; # PROCESS INPUT DATA BLOCK #
PROC IPISPSM; # PROCESS SUPERVISORY MESSAGE #
PROC NETGETL; # GET NEXT BLOCK ON SPECIFIED LIST #
PROC NETREL; # RELEASE LOG FILE #
PROC NETWAIT; # SUSPEND NETWORK APPLICATION #
END
#
**
#
ITEM GETMLIST U = DATA$; # LIST TO GET TRAFFIC FROM #
SWITCH GETTRAFFIC # SWITCH TO GET TRAFFIC FROM NAM#
S0D0G0, # NO DATA AVAILABLE #
S0D0G1, # NO DATA AVAILABLE #
S0D1G0, # GET DATA (LIST 1) #
S0D1G1, # GET DATA (LIST 1) #
S1D0G0, # GET SM (LIST 0) #
S1D0G1, # GET SM (LIST 0) #
S1D1G0, # GET DATA (LIST 1) #
S1D1G1; # GET SM (LIST 0) #
CONTROL EJECT;
#
**** START OF *IPINITH*
#
#
**** IF NO NAM INPUT IS AVAILABLE CALL NETWAIT.
* IF TRAFFIC IS AVAILABLE, ISSUE A NETGETL ON EITHER THE
* SUPERVISORY MESSAGE LIST OR THE DATA LIST, ROTATING BETWEEN THE
* TWO MESSAGE TYPE. CALL THE APPROPRIATE PROCESSOR.
#
P<ABH> = LOC(IABH);
GOTO GETTRAFFIC[NSUP$SU[0]*4+NSUP$DU[0]*2+GETMLIST];
S0D0G0: # NO TRAFFIC AVAILABLE #
S0D0G1:
IF BLOCK
THEN
BEGIN
NETWAIT(NORMWAIT$, 0);
END
ELSE
BEGIN
NETWAIT(NOWAIT$, 0);
END
GOTO NTHEND; # GO TO COMMON END OF PROCEDURE #
S1D0G0: # GET SUPERVISORY MESSAGE #
S1D0G1:
S1D1G1:
GETMLIST = SM$; # SET GET MESSAGE TYPE TO SM #
NETGETL (GETMLIST, IABH, INPBUF, INPSIZE$); # INPUT THE MESSAGE #
IF ABHABT [0] NQ 0 # NOT A NULL BLOCK FROM NAM #
AND ABHIBU [0] EQ 0 # AND A BLOCK WAS DELIVERED #
THEN
BEGIN
IPISPSM; # PROCESS SUPERVISORY MESSAGE #
END
GOTO NTHEND; # GO TO COMMON END OF PROCEDURE #
S0D1G0: # GET DATA MESSAGE #
S0D1G1:
S1D1G0:
GETMLIST = DATA$; # SET GET MESSAGE TYPE TO DATA #
NETGETL (GETMLIST, IABH, # GET CONNECTION TRAFFIC #
INPBUF, INPSIZE$);
IF ABHABT [0] NQ 0 # NOT A NULL BLOCK FROM NAM #
AND ABHIBU [0] EQ 0 # AND A BLOCK WAS DELIVERED #
THEN
BEGIN
IPIPIDB; # PROCESS DATA BLOCK #
END
GOTO NTHEND; # GO TO COMMON END OF PROCEDURE #
NTHEND: # COMMON END #
IF (IPMC NQ 0) AND
(NSUP$MC GQ IPMC)
THEN
NETREL (NDLFILE, 0, 0); # RELEASE *ZZZZZDN* FILE #
RETURN; # RETURN TO CALLER #
END # IPINITH #
TERM