Trailing-Edge
-
PDP-10 Archives
-
bb-l014t-bm_tops20_v7_0_atpch20
-
autopatch/nebmac.x20
There is 1 other file named nebmac.x20 in the archive. Click here to see a list.
UNIVER NEBMAC ;PARAMETER FILE FOR NEBULA
SUBTTL Preliminaries
; COPYRIGHT (c) DIGITAL EQUIPMENT CORPORATION 1988.
; ALL RIGHTS RESERVED.
;
; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
; TRANSFERRED.
;
; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
; CORPORATION.
;
; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
; SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY DIGITAL.
SEARCH GLXMAC ;CHECK GALAXY LIBRARY
SEARCH QSRMAC ;CHECK QUASARS LIBRARY
SEARCH ORNMAC ;CHECK ORIONS LIBRARY
SEARCH GALCNF ;GET CONFIGURATION DATA
SEARCH MONSYM ;CHECK THE MONITOR'S SYMBOLS
SALL ;MAKE CLEAN LISTINGS
IF1,<PRINTX BUILDING A GALAXY-20 NEBMAC>
NMCMAN==:16
NMCDEV==:15
VERSIN(NMC)
NMCWHO==0
NMCVER==6
NMCMIN==0
Subttl Table of Contents
; Table of Contents for NEBMAC
;
; Section Page
;
;
; 1. Revision history . . . . . . . . . . . . . . . . . . . 3
; 2. SYMBOLS DERIVED FROM GALCNF . . . . . . . . . . . . . 4
; 3. NODE TABLE (NODTBL) . . . . . . . . . . . . . . . . . 5
; 4. LISTENER DATA BASE DEFINITIONS . . . . . . . . . . . . 6
; 5. SENDER DATA BASE DEFINITIONS . . . . . . . . . . . . . 9
; 6. TABLE OF PREVIOUSLY AND CURRENTLY KNOWN NODES . . . . 12
; 7. TIMER LIST . . . . . . . . . . . . . . . . . . . . . . 13
; 8. MESSAGE QUEUE (MSGQUE) . . . . . . . . . . . . . . . . 14
; 9. REMOTE QUEUE (REMQUE) . . . . . . . . . . . . . . . . 15
; 10. IN BEHALF OF QUEUE (IBOQUE) . . . . . . . . . . . . . 16
; 11. NODE NAME BLOCK . . . . . . . . . . . . . . . . . . . 17
; 12. REMOTE DISMOUNT MESSAGE . . . . . . . . . . . . . . . 18
; 13. TO NEBULA DISMOUNT MESSAGE . . . . . . . . . . . . . . 19
; 14. FROM NEBULA DISMOUNT MESSAGE . . . . . . . . . . . . . 20
; 15. FROM NEBULA DISMOUNT ACK MESSAGE . . . . . . . . . . . 21
; 16. TO NEBULA DISMOUNT ACK MESSAGE . . . . . . . . . . . . 22
; 17. NEBULA CANCEL DISMOUNT MESSAGE . . . . . . . . . . . . 23
; 18. TO NEBULA MOUNT MESSAGE . . . . . . . . . . . . . . . 24
; 19. FROM NEBULA MOUNT MESSAGE . . . . . . . . . . . . . . 25
; 20. NEBULA SHOW MESSAGES' CODES . . . . . . . . . . . . . 26
; 21. RESPONSE TO EXEC CANCEL MESSAGE . . . . . . . . . . . 27
; 22. (TO NEBULA) SHOW OPERATORS MESSAGE . . . . . . . . . . 28
; 23. (TO NEBULA) SHOW MESSAGE . . . . . . . . . . . . . . . 29
; 24. SHOW CLUSTER-GALAXY-LINK-STATUS MESSAGE . . . . . . . 30
; 25. REMOTE SHOW ACK MESSAGE . . . . . . . . . . . . . . . 31
; 26. SHOW CLUSTER-GALAXY-LINK-STATUS MESSAGE . . . . . . . 32
; 27. DISABLE REPORT-CONNECTION-FAILURES MESSAGE . . . . . . 33
; 28. ENABLE REPORT-CONNECTION-FAILURES MESSAGE . . . . . . 34
; 29. DISABLE DECNET-CONNECTION-ATTEMPTS MESSAGE . . . . . . 35
; 30. ENABLE DECNET-CONNECTION-ATTEMPTS MESSAGE . . . . . . 36
; 31. NEBULA ACK / NEBULA ACK RESPONSE MESSAGES . . . . . . 37
; 32. NEBULA MESSAGE CODES . . . . . . . . . . . . . . . . . 38
; 33. NEBULA ERROR CODES . . . . . . . . . . . . . . . . . . 39
SUBTTL Revision history
COMMENT \
***** Release 6.0 -- begin development edits *****
1 6.1077 15-Nov-87
Move to the GALAXY 6 development area.
2 6.1080 16-Nov-87
Add symbol .NBMSG as the minimum message code value of a message
that involves NEBULA processing.
3 6.1084 18-Nov-87
Add REMOTE SHOW ACK message definition.
4 6.1138 13-Dec-87
Increase the listener's stack size, increase the listener's SRV:
device name storage size, increase the sender's DCN: device name storage
size and add error code E$IFM.
5 6.1145 17-Dec-87
Define debugging blocks for private world DCN: and SRV: Decnet
device names.
6 6.1142 17-Dec-87
Add message code definitions for SHOW STATUS DISK and SHOW STATUS
TAPE messages
7 6.1146 17-Dec-87
Add message code definition for SHOW STATUS STRUCTURE
10 6.1175 7-Feb-88
Add word .IQPID to the in behalf of queue entry definition, add word
.MQPID to the message queue entry definition and define message type .NMTXT,
all in support of the EXEC commands INFORMATION OUTPUT/DESTINATION and
CANCEL PRINT/DESTINATION.
11 6.1183 16-Feb-88
Remove the Cluster GALAXY option definition from NEBMAC.
12 6.1193 23-Feb-88
Add message codes for the NEBULA ACK and NEBULA ACK RESPONSE messages.
Also, place all the message code definitions together for easier updating.
13 6.1203 29-Feb-88
Define error code INS.
14 6.1225 8-Mar-88
Update copyright notice.
15 6.1247 5-May-88
Define message codes .NMSSN and .MNSPN in support of the SHOW STATUS
NETWORK-NODE and SHOW PARAMETERS NETWORK-NODE commands.
16 6.1269 18-Oct-88
1. Add a bit, NN%PAS==1B10 in the node data base to specify whether it is Field
Image Galaxy or Post FI. This is to determine whether that node is capable of
executing the new OPR commands.
2. Add a word in the in behalf of queue (IBOQUE) to remember how many response
to sent back for this command.
\ ;End of revision history
SUBTTL SYMBOLS DERIVED FROM GALCNF
XP N$ACKO,G.NEBA ;[12]NEBULA ACK MESSAGE OPTION
SUBTTL NODE TABLE (NODTBL)
COMMENT \
The node table describes remote nodes in the cluster. For
each remote node in the cluster known to NEBULA, there will be an
entry for that node in the node table. The format of a node
table entry is:
!=======================================================!
! SIXBIT Node Name ! .NNNAM
!-------------------------------------------------------!
! NS.STA ! NS.NUM ! .NNSTA
!-------------------------------------------------------!
! Status of the Sender ! .NSSTA
!-------------------------------------------------------!
! Status of the Listener ! .NLSTA
!-------------------------------------------------------!
! INFO% error counter ! .NIERC
!-------------------------------------------------------!
! INFO% error timeout ! .NIETM
!-------------------------------------------------------!
! Time DECnet Messages Were Sent List ! .NTIML
!-------------------------------------------------------!
! Remote Queue Link List Header Word For This Node ! .NRQLH
!-------------------------------------------------------!
! Remote Queue Link List Trailer Word For This Node ! .NRQLT
!-------------------------------------------------------!
! Address of the First Page of the Sender Block ! .NNSBA
!-------------------------------------------------------!
! Address of the First Page of the Listener Block ! .NNLBA
!=======================================================!
Note: Word .NNSTA is only modified by NEBULA's top fork. It is read by
the listener and sender. Word .NSSTA can be written by both the top
fork and by the sender. This implies that there must be a protocol that
is followed by the top fork and the sender to ensure that what is written
by both is not lost due to simultaneous updating. The protocol that
is used is:
1. The top fork turns on bit NS%WHR before it starts the sender. Once it
starts the sender it will not modify word .NSSTA until the sender
has a connection.
2. When the sender successfully completes a DECnet connection, it turns
on bit NS%NRH and informs the top fork. It does not modify the word
.NSSTA again.
3. The top fork will then turn off bits NS%WHR and NS%NRH and turn on
bit NS%HEL.
4. If the sender detects a fatal error, then it turns on bit NS%SFC
and crashes. Since this is an unplanned event, it is possible that the
top fork may be modifying word .NSSTA while the sender is attempting
to turn this bit on. However, in this case, it does not matter since
when the sender crashes, the top fork will be interrupted and it will
be able to determine which sender crashed by the RFSTS% JSYS.
Word .NLSTA can also be modified by both the top fork and, in this case,
the listener. Consequently, a protocol must also be observed between the
top fork and the listener.
1. The top fork turns on bit NL%WHL before it starts the listener. It does
not modify word .NLSTA until the listener has accepted a connection.
2. The listener turns on bit NL%NRH when it has accepted a connection
and then informs the top fork of the connection. It does not modify
word .NLSTA again.
3. The top fork, when it notices that bit NL%NRH is turned on, will then
turn off bits NL%NRH and NL%WHL and turn on bit NL%HEL.
4. If the listener detects a fatal error, then it turns on bit NL%LFC
and crashes. Since this is an unplanned event, it is possible that the
top fork may be modifying word .NLSTA while the listener is attempting
to turn this bit on. However, in this case, it does not matter since
when the listener crashes, the top fork will be interrupted and it will
be able to determine which listener crashed by the RFSTS% JSYS.
\
PHASE 0
.NNNAM: BLOCK 1 ;SIXBIT REMOTE NEBULA'S NODE NAME
.NNSTA: BLOCK 1 ;STATUS INFORMATION.
NS.STA==-1,,0 ;STATUS OF THE NODE
NN%OKS==1B0 ;O.K. TO SEND MESSAGES TO THIS NODE
NN%COI==1B1 ;INFO% NOT ABLE TO GET S.W. ENVMENT
NN%DCN==1B2 ;DECNET NOT INSTALLED
NN%REL==1B3 ;MONITOR VERSION LESS THAN 7
NN%SCS==1B4 ;SCS DETECTED NODE LEFT CLUSTER
NN%SHO==1B5 ;SENDER DOES NOT HAVE A CONNECTION
NN%LHO==1B6 ;LISTENER DOESN'T HAVE A CONNECTION
NN%IFC==1B7 ;KILL THE INFERIOR FORKS
NN%DCO==1B8 ;DON'T NOTIFY ORION IF CAN'T
; OBTAIN A DECNET CONNECTION
NN%CCA==1B9 ;CEASE DECNET CONNECTION ATTEMPTS
;**;[16] At NN%CCA==1B9 + 1L add 1 line JYCW Oct-18-88
NN%PAS==1B10 ;[16]NEW MESSAGE FORMAT ACCEPTED
NNLOW==POS(NN%COI) ;LOWEST ERROR BIT NUMBER
;**;[16]At NNLOW==POS change 1 line JYCW Oct-18-88
NNHIGH==POS(NN%PAS) ;[16]HIGHEST ERROR BIT NUMBER
NS.NUM==0,,-1 ;CFS NODE NUMBER
.NSSTA: BLOCK 1 ;STATUS OF THE SENDER
NS%HEL==1B0 ;SENDER SUCCESSFULLY SENT HELLO MSG
NS%WHR==1B1 ;WAITING FOR HELLO RESPONSE
NS%HRJ==1B2 ;HELLO MESSAGE REJECTED
NS%SFC==1B3 ;SENDER FORK CRASHED
NS%NRH==1B4 ;NOTIFY TOP FORK RECEIVED HELLO RSP
.NLSTA: BLOCK 1 ;STATUS OF THE LISTENER
NL%HEL==1B0 ;LISTENER RECEIVED HELLO MESSAGE
NL%WHL==1B1 ;WAITING FOR A HELLO MESSAGE
NL%HMR==1B2 ;HELLO MSG RECEIVED FROM NON-NEBULA
NL%LFC==1B3 ;LISTENER FORK CRASHED
NL%NRH==1B4 ;NOTIFY TOP FORK RECD HELLO MSG
.NIERC: BLOCK 1 ;[12]INFO% ERROR COUNTER
.NIETM: BLOCK 1 ;[12]INFO% ERROR TIMER
.NTIML: BLOCK 1 ;LIST OF TIMES MESSAGES SENT
.NRQLH: BLOCK 1 ;REMOTE QUEUE LINK LIST HEADER WORD
.NRQLT: BLOCK 1 ;REMOTE QUEUE LINK LIST TRAILER WORD
.NNSBA: BLOCK 1 ;ADR OF FIRST PAGE OF SENDER BLOCK
.NNLBA: BLOCK 1 ;ADR OF FIRST PG OF LISTENER BLOCK
.NNNSZ: ;SIZE OF A NODE TABLE ENTRY
DEPHASE
SUBTTL LISTENER DATA BASE DEFINITIONS
COMMENT \
Each listener has a two page listener block. The listener
block is shared between the top fork and the listener. The first page
has the following format:
!=======================================================!
! Message Buffer Address ! .LSMSG
!-------------------------------------------------------!
! Node Table Entry Address ! .LSNTA
!-------------------------------------------------------!
! SIXBIT Remote Node Name ! .LSNME
!-------------------------------------------------------!
! !
/ ASCIZ Remote Node Name / .LSANN
! !
!-------------------------------------------------------!
! !
/ /
/ Remote Sender Name / .LSUSR
/ /
! !
!-------------------------------------------------------!
! !
/ /
/ DECnet Remote Sender Name / .LSSNE
/ /
! !
!-------------------------------------------------------!
! !
/ /
/ DECnet Remote Sender Optional Data / .LSOPT
/ /
! !
!-------------------------------------------------------!
! Listener Message Queue Header Word ! .LSHWD
!-------------------------------------------------------!
! Listener Message Queue Trailer Word ! .LSTWD
!-------------------------------------------------------!
! Number of Messages in the Listener Message Queue ! .LSUSM
!-------------------------------------------------------!
! DECnet Link Status ! .LSLNK
!-------------------------------------------------------!
! Listener Has a Message for NEBULA ! .LSAVA
!-------------------------------------------------------!
! !
/ /
/ Listener AC Save Area / .LSREG
/ /
! !
!-------------------------------------------------------!
Continued on the next page.
Continued from the previous page.
!-------------------------------------------------------!
! !
/ /
/ Listener Stack / .LSPDL
/ /
! !
!-------------------------------------------------------!
! Listener's Fork Handle ! .LSHND
!-------------------------------------------------------!
! DECnet Link JFN ! .LSJFN
!-------------------------------------------------------!
! !
/ /
/ Listener's DECnet Device Name (SRV:) / .LSSRV
/ /
! !
!-------------------------------------------------------!
! !
/ /
/ Debugging User Name / .LSDBW
/ /
! /
!-------------------------------------------------------!
! Byte Pointer for $TEXT ! .LSBTP
!-------------------------------------------------------!
! !
/ /
/ GLXLIB Initialization Block / .LSIBK
/ /
! !
!-------------------------------------------------------!
! !
/ /
/ PID Initialization Block / .LSPIB
/ /
! !
!-------------------------------------------------------!
! !
/ Interrupt Level Table / .LSLEV
! !
!-------------------------------------------------------!
! Interrupt Level 1 PC Save Block ! .LS1PC
!-------------------------------------------------------!
! Interrupt Level 2 PC Save Block ! .LS2PC
!-------------------------------------------------------!
! Interrupt Level 3 PC Save Block ! .LS3PC
!-------------------------------------------------------!
Continued on the next page
Continued from the previous page
!-------------------------------------------------------!
! !
/ /
/ MUTIL% JSYS Argument Block / .LSMUT
/ /
! !
!-------------------------------------------------------!
! !
/ Stopcode Processing Save Block / .LSERR
! !
!=======================================================!
\
;LISTENER DATA BASE DEFINITIONS
PHASE 0
.LSMSG:! BLOCK 1 ;ADDRESS OF MESSAGE BUFFER
.LSNTA:! BLOCK 1 ;NODE TABLE ENTRY ADDRESS
.LSNME:! BLOCK 1 ;SIXBIT REMOTE NODE NAME
.LSANN:! BLOCK 2 ;ASCIZ REMOTE NODE NAME
.LSUSR:! BLOCK ^D8 ;REMOTE SENDER NAME
.LSSNE:! BLOCK 4 ;DECNET SENDER NAME
.LSOPT:! BLOCK 4 ;DECNET SENDER OPTIONAL DATA
.LSHWD:! BLOCK 1 ;LISTENER MESSAGE QUEUE HEADER WORD
.LSTWD:! BLOCK 1 ;LISTENER MESSAGE QUEUE TRAILER WORD
.LSUSM:! BLOCK 1 ;NUMBER OF MESSAGE QUEUE ENTRIES
.LSLNK:! BLOCK 1 ;STATUS OF THE DECNET LINK
.LSAVA:! BLOCK 1 ;MESSAGE AVAILABLE FLAG
.LSREG:! BLOCK 20 ;LISTENER AC SAVE AREA
.LSPDL:! BLOCK ^D200 ;[4]LISTENER CONTEXT PDL.
.LSHND:! BLOCK 1 ;LISTENER'S PROCESS HANDLE
.LSJFN:! BLOCK 1 ;DECNET LOGICAL LINK JFN
.LSSRV:! BLOCK 6 ;[4]DECNET DEVICE NAME
.LSDBW:! BLOCK 8 ;[5]DEBUG USER NAME
.LSBTP:! BLOCK 1 ;BYTE POINTER FOR $TEXT
.LSIBK:! BLOCK IB.SZ ;GLXLIB INITIALIZATION BLOCK
.LSPIB:! BLOCK PB.MNS ;PID INITIALIZATION BLOCK
.LSLEV:! BLOCK 3 ;INTERRUPT LEVEL TABLE
.LS1PC:! BLOCK 1 ;INTERRUPT LEVEL 1 PC SAVE BLOCK
.LS2PC:! BLOCK 1 ;INTERRUPT LEVEL 2 PC SAVE BLOCK
.LS3PC:! BLOCK 1 ;INTERRUPT LEVEL 3 PC SAVE BLOCK
.LSMUT:! BLOCK 3 ;MUTIL% ARGUMENT BLOCK
.LSERR:! BLOCK 2 ;STOPCODE PROCESSING SAVE BLOCK
DBLED:! ;END OF DEFINED LISTENER DATA BASE
DEPHASE
SUBTTL SENDER DATA BASE DEFINITIONS
COMMENT \
Each sender has a two page sender block. The sender
block is shared between the top fork and the sender. The first page
has the following format:
!=======================================================!
! Message Buffer Address ! .SNMSG
!-------------------------------------------------------!
! Node Table Entry Address ! .SNNTA
!-------------------------------------------------------!
! Remote Node Name ! .SNNME
!-------------------------------------------------------!
! Message Queue Link List Header Word ! .SNHWD
!-------------------------------------------------------!
! Message Queue Link List Trailer Word ! .SNTWD
!-------------------------------------------------------!
! Number of Unsent Messages ! .SNUSM
!-------------------------------------------------------!
! Status of the DECnet Link ! .SNLNK
!-------------------------------------------------------!
! Free to Send a Message to the Listener ! .SNFRE
!-------------------------------------------------------!
! !
/ /
/ Sender AC Save Area / .SNREG
/ /
! !
!-------------------------------------------------------!
! !
/ /
/ Sender Stack / .SNPDL
/ /
! !
!-------------------------------------------------------/
! Sender's Fork Handle ! .SNHND
!-------------------------------------------------------!
! DECnet Link JFN ! .SNJFN
!-------------------------------------------------------!
! !
/ /
/ DECnet DCN: Device Name / .SNDCN
/ /
! !
!-------------------------------------------------------!
Continued on the next page.
Continued from the previous page.
!-------------------------------------------------------!
! !
/ /
/ Debugging User Name / .SNDBW
/ /
! /
!-------------------------------------------------------!
! Byte Pointer for $TEXT ! .SNBTP
!-------------------------------------------------------!
! !
/ /
/ GLXLIB Initialization Block / .SNIBK
/ /
! !
!-------------------------------------------------------!
! !
/ /
/ PID Initialization Block / .SNPIB
/ /
! !
!-------------------------------------------------------!
! !
/ Interrupt Level Table / .SNLEV
! !
!-------------------------------------------------------!
! Interrupt Level 1 PC Save Block ! .SN1PC
!-------------------------------------------------------!
! Interrupt Level 2 PC Save Block ! .SN2PC
!-------------------------------------------------------!
! Interrupt Level 3 PC Save Block ! .SN3PC
!-------------------------------------------------------!
! Time Between DECnet Connection Attempts ! .SNTIM
!-------------------------------------------------------!
! !
/ /
/ MUTIL% JSYS Argument Block / .SNMUT
/ /
! !
!-------------------------------------------------------!
! Checksum Enable/Disable Flag ! .SNCHS
!-------------------------------------------------------!
! !
/ Stopcode Processing Save Block / .SNERR
! !
!=======================================================!
\
;SENDER DATA BASE DEFINITIONS
PHASE 0
.SNMSG:! BLOCK 1 ;ADDRESS OF MESSAGE BUFFER
.SNNTA:! BLOCK 1 ;NODE TABLE ENTRY ADDRESS
.SNNME:! BLOCK 1 ;REMOTE NODE NAME
.SNHWD:! BLOCK 1 ;MESSAGE QUEUE LINK LIST HEADER WORD
.SNTWD:! BLOCK 1 ;MESSAGE QUEUE LINK LISTS TRAILER WORD
.SNUSM:! BLOCK 1 ;NUMBER OF MESSAGES IN MESSAGE QUEUE
.SNLNK:! BLOCK 1 ;STATUS OF THE DECNET LINK
.SNFRE:! BLOCK 1 ;MESSAGE AVAILABLE FLAG
.SNREG:! BLOCK 20 ;SENDER AC SAVE AREA
.SNPDL:! BLOCK ^D200 ;SENDER CONTEXT PDL.
.SNHND:! BLOCK 1 ;SENDER'S PROCESS HANDLE
.SNJFN:! BLOCK 1 ;DECNET LOGICAL LINK JFN
.SNDCN:! BLOCK ^D20 ;[4]DECNET DEVICE NAME
.SNDBW:! BLOCK 8 ;[5]DEBUG USER NAME
.SNBTP:! BLOCK 1 ;BYTE POINTER FOR $TEXT
.SNIBK:! BLOCK IB.SZ ;GLXLIB INITIALIZATION BLOCK
.SNPIB:! BLOCK PB.MNS ;PID INITIALIZATION BLOCK
.SNLEV:! BLOCK 3 ;INTERRUPT LEVEL TABLE
.SN1PC:! BLOCK 1 ;INTERRUPT LEVEL 1 PC SAVE BLOCK
.SN2PC:! BLOCK 1 ;INTERRUPT LEVEL 2 PC SAVE BLOCK
.SN3PC:! BLOCK 1 ;INTERRUPT LEVEL 3 PC SAVE BLOCK
.SNTIM:! BLOCK 1 ;TIME BETWEEN DECNET CONNECTION ATTEMPTS
.SNMUT:! BLOCK 3 ;MUTIL% ARGUMENT BLOCK
.SNCKS:! BLOCK 1 ;CHECKSUM ENABLE/DISABLE FLAG
.SNERR:! BLOCK 2 ;STOPCODE PROCESSING SAVE BLOCK
DBSED:! ;END OF DEFINED SENDER DATA BASE
DEPHASE
SUBTTL TABLE OF PREVIOUSLY AND CURRENTLY KNOWN NODES
COMMENT \
The table of previously and currently known (remote) nodes (PACKN) is used
to support the following OPR commands:
1. SHOW CLUSTER-GALAXY-LINK-STATUS
2. ENABLE/DISABLE DECNET-CONNECTION-ATTEMPTS
3. ENABLE/DISABLE REPORT-CONNECTION-FAILURES
Every remote node that has ever been known to NEBULA has an
entry in this table. The DECnet link status of the sender and listener is
kept in this table as well as whether the reporting of the sender's attempt
to obtain a DECnet connection should be reported to ORION or not and also
whether the sender should continue to attempt to obtain a DECnet connection
or not.
!=======================================================!
! SIXBIT node name ! .NDNAM
!-------------------------------------------------------!
! DECnet Connection Status Word ! .LKSTS
!=======================================================!
\
PHASE 0
.NDNAM: BLOCK 1 ;SIXBIT REMOTE NODE NAME
.LKSTS: BLOCK 1 ;SENDER/LISTENER DECNET STATUS
LK%DIS==1B0 ;DISABLE LINK ATTEMPT REPORTING
LK%CCA==1B1 ;DISABLE OBTAINING A LINK
LK%SEN==1B2 ;SENDER HAS (OR HAS HAD) A CONNECTION
LK%LIS==1B3 ;LISTENER HAS (OR HAS HAD) A CONNECTION
.NDLSZ: ;SIZE OF A PACKN ENTRY
DEPHASE
SUBTTL TIMER LIST
COMMENT \
A timer is set for every message that is sent to a remote node and for
which a response is expected. If the timer goes off and there has been no
response, then it is assumed that communication with the remote node
has been lost. However, if a response is received from the remote node
before the timer has gone off, then the timer is turned off.
In order to identify the response with the original message, the ACK
code (.MSCOD) of the original message is kept on the timer list for that
node. In addition, the time at which the timer goes off is also kept so
that if the response is received before the timer goes off, then the timer
can be turned off using the saved time by means of the timer function .TIMDD
!=======================================================!
! ACK Code of the Message ! .TMACK
!-------------------------------------------------------!
! Time the Timer is Set to Go Off ! .TMUDT
!=======================================================!
\
PHASE 0
.TMACK: BLOCK 1 ;ACK CODE (.MSCOD) OF MESSAGE
.TMUDT: BLOCK 1 ;TIME THE TIMER IS TO GO OFF
.TMSIZ: ;SIZE OF THE TIME LIST ENTRY
DEPHASE
SUBTTL MESSAGE QUEUE (MSGQUE)
COMMENT \
NEBULA queues IPCF messages that are to be forwarded to remote
nodes in the cluster on the message queue. A message queue entry
has the following format:
!=======================================================!
! MQ.OFF ! MQ.NEA ! .MQBLK
!-------------------------------------------------------!
/ /
/ /
/ /
!-------------------------------------------------------!
! MQ.OFF ! MQ.NEA ! .MQBLK
!-------------------------------------------------------!
!FLAGS! MQ.NUM ! MQ.ADR ! .MQNOM
!-------------------------------------------------------!
!FLAGS! MQ.LEN ! MQ.PTR ! .MQMEM
!-------------------------------------------------------!
! PID of the EXEC sender ! .MQPID
!=======================================================!
Each node that the message is to be sent to will have the
message in that node's message queue. Words .MQBLK are link
list words for each node the message is to be sent to.
Note: If bit MQ%PAG is turned on, then this indicates that the
message plus entry size is greater than a page. Therefore, the
message is allocated a page of memory and it is not in general
contiguous to the message queue entry. If bit MQ%PAG is not turned on,
then this indicates that the message plus queue entry size
is less than or equal to a page in length which means that the
message and message queue entry are located contiguously in memory.
\
PHASE 0
.MQBLK:! BLOCK 1 ;MESSAGE QUEUE LINK LIST WORD
MQ.OFF==-1,,0 ;WORD OFFSET TO WORD .MQNOM
MQ.NEA==0,,-1 ;ADDRESS OF NEXT MESSAGE QUEUE ENTRY
; FOR THIS SENDER
.MQBSZ:! ;MESSAGE QUEUE LINK LIST WORD SIZE
DEPHASE
PHASE 0
.MQNOM:! BLOCK 1 ;NUMBER OF NODES/MESSAGE ADDRESS
MQ.FLG==7B2 ;MESSAGE ATTRIBUTE INFORMATION
MQ%IBH==1B0 ;MSG IS RESPONSE TO IN BEHALF OF MSG
MQ%REM==1B1 ;MSG HAS AN ENTRY IN THE REMOTE QUEUE
MQ%EXE==1B2 ;MESSAGE IS FROM THE EXEC
MQ.NUM==77777B17 ;NUMBER OF NODES THE MESSAGE STILL
;NEEDS TO BE SENT TO
MQ.ADR==0,,-1 ;ADDRESS OF THE MESSAGE
.MQMEM:! BLOCK 1 ;GLXMEM MEMORY MANAGEMENT INFORMATION
MQ%PAG==1B0 ;THE MESSAGE OCCUPIES A PAGE
MQ.LEN==377777B17 ;LENGTH OF GLXMEM BLOCK SIZE
MQ.PTR==0,,-1 ;ADDRESS OF GLXMEM BLOCK SIZE
.MQPID:! BLOCK 1 ;[10]PID OF AN EXEC SENDER
.MQISZ:! ;INVARIANT BLOCK SIZE
DEPHASE
SUBTTL REMOTE QUEUE (REMQUE)
COMMENT \
The remote queue contains entries that correspond to
"remote" messages whose responses from a remote NEBULA must be
evaluated by NEBULA. When such a message is received by NEBULA,
in addition to placing the message on the message queue, NEBULA
also creates a remote queue entry for the message. Currently,
there is only one type of remote queue entry. This entry
corresponds to REMOTE DISMOUNT messages. The format of a remote
queue entry is:
!=======================================================!
! RQ.OFF ! RQ.NEA ! .RQBLK
!-------------------------------------------------------!
/ /
/ /
/ /
!-------------------------------------------------------!
! RQ.OFF ! RQ.NEA ! .RQBLK
!-------------------------------------------------------!
! RQ.PRE ! RQ.NXT ! .RQLNK
!-------------------------------------------------------!
! RQ.LEN ! RQ.ADR ! .RQMEM
!-------------------------------------------------------!
! Time Stamp Message Was Received ! .RQTSP
!-------------------------------------------------------!
! Message Type ! .RQMST
!-------------------------------------------------------!
! SIXBIT Structure Name ! .RQSTN
!-------------------------------------------------------!
! MOUNTR ACK Code ! .RQACK
!-------------------------------------------------------!
! Status Word ! .RQSTS
!-------------------------------------------------------!
! RQ.NTS ! RQ.NOR ! .RQNUM
!=======================================================!
! RQ.SOM ! RQ.ERR ! .RQNST
!-------------------------------------------------------!
! SIXBIT Node Name ! .RQNDN
!=======================================================!
/ /
/ /
/ /
!=======================================================!
! RQ.SOM ! RQ.ERR ! .RQNST
!-------------------------------------------------------!
! SIXBIT Node Name ! .RQNDN
!=======================================================!
\
PHASE 0
.RQBLK:! BLOCK 1 ;NODE REMOTE QUEUE LINK LIST WORD
RQ.OFF==-1,,0 ;WORD OFFSET TO WORD .RQLNK
RQ.NEA==0,,-1 ;ADDRESS OF NEXT REMOTE QUEUE ENTRY
; FOR THIS NODE
.RQBSZ:! ;NODE REMOTE QUEUE LINK LIST WORD SIZE
DEPHASE
PHASE 0
.RQLNK:! BLOCK 1 ;GLOBAL REMOTE QUEUE LINK LIST WORD
RQ.PRE==-1,,0 ;POINTER TO PREVIOUS GLOBAL REMOTE QE
RQ.NXT==0,,-1 ;POINTER TO NEXT GLOBAL REMOTE QE
.RQMEM:! BLOCK 1 ;GLXMEM MEMORY MANAGEMENT INFORMATION
RQ.LEN==-1,,0 ;LENGTH OF GLXMEM BLOCK SIZE
RQ.ADR==0,,-1 ;ADDRESS OF GLXMEM BLOCK SIZE
.RQTSP:! BLOCK 1 ;TIME REMOTE MESSAGE RECEIVED
.RQMST:! BLOCK 1 ;MESSAGE TYPE
; .NRDSM==300001 ;REMOTE DISMOUNT MESSAGE
.RQSTN:! BLOCK 1 ;SIXBIT NAME OF STRUCTURE TO DISMOUNT
.RQACK:! BLOCK 1 ;ACK CODE FROM REMOTE DISMOUNT MESSAGE
.RQSTS:! BLOCK 1 ;STATUS OF THE REQUEST
RQ%CAN==1B0 ;DISMOUNT REQUEST CANCELED
RQ%SEC==1B1 ;SET STRUCTURE EXCLUSIVE CANCELLED
RQ%SEX==1B2 ;DISMOUNT DUE SET STRUCTURE EXCLUSIVE
RQ%DIS==1B3 ;DISMOUNT DUE DISMOUNT/REMOVAL
.RQNUM:! BLOCK 1 ;NUMBER OF NODES/OUTSTANDING RESPONSES
RQ.NTS==-1,,0 ;NUMBER OF NODES IN REMOTE QUEUE ENTRY
RQ.NOR==0,,-1 ;NUMBER OF OUTSTANDING RESPONSES
.RQNIZ:! ;INVARIANT BLOCK SIZE
DEPHASE
COMMENT \
For each node that the REMOTE DISMOUNT message was sent to,
there is a two-word block in the remote queue entry. The first word,
.RQNST, contains the status of the response for the REMOTE DISMOUNT
message in its left half. If bit RQ%TER, RQ%OER, RQ%QER, RQ%NEB
or RQ%MER is turned on, then the right half of word .RQNST contains
an error code. (Note: before a response is received from the node
the right half of word .RQNST contains the address of the preceding
Remote Queue entry for that node.)
The second word, .RQNDN, contains the SIXBIT node name that the message
was sent to.
\
PHASE 0
.RQNST:! BLOCK 1 ;STATUS OF MESSAGE SENT TO NODE
RQ.SOM==-1,,0 ;STATUS OF THE MESSAGE
RQ%SNR==1B0 ;RESPONSE NOT YET RECEIVED FROM NODE
RQ%SSD==1B1 ;STRUCTURE SUCCESSFULLY DISMOUNTED
RQ%SNH==1B2 ;SENDER WAITING FOR HELLO RESPONSE
RQ%LNH==1B3 ;LISTENER HAS NOT RECEIVED HELLO MSG
RQ%SLD==1B4 ;SENDER AND/OR LISTENER HAVE CRASHED
RQ%NSN==1B5 ;NO SUCH NODE
RQ%PSM==1B6 ;PRE-RELEASE 7 MONITOR
RQ%NDC==1B7 ;DECNET NOT ENABLED
RQ%SCS==1B8 ;SCS% DETECTED NODE LEFT THE CLUSTER
RQ%COI==1B9 ;INFO% UNABLE OBTAIN SOFTWARE ENVIRMENT
RQ%CIT==1B10 ;DISMOUNT CANCELLED IN TIME
RQ%TER==1B11 ;MONITOR ERROR DISMOUNTING STRUCTURE
RQ%OER==1B12 ;ORION ERROR
RQ%QER==1B13 ;QUASAR ERROR
RQ%NER==1B14 ;NEBULA ERROR
RQ%MER==1B15 ;MOUNTR ERROR
RQ.ERR==0,,-1 ;ERROR CODE OR ADR OF PRECEDING RQE
.RQNDN:! BLOCK 1 ;SIXBIT NODE NAME THAT MSG WAS SENT TO
.RQNSZ:! ;REMOTE NODE ENTRY SIZE
DEPHASE
SUBTTL IN BEHALF OF QUEUE (IBOQUE)
COMMENT \
The in behalf of queue is used by NEBULA to correlate an in
behalf of message response with the original "remote" request
that came from a remote NEBULA. The in behalf of queue entry has
the following format:
!=======================================================!
! IQ.PRE ! IQ.NXT ! .IQLNK
!-------------------------------------------------------!
! Remote NEBULA ACK ! .IQRNA
!-------------------------------------------------------!
! Local NEBULA ACK ! .IQLNA
!-------------------------------------------------------!
! SIXBIT "In Behalf Of" Node Name ! .IQNEN
!-------------------------------------------------------!
! PID of the EXEC sender ! .IQPID
!-------------------------------------------------------!
! Number of Expected Replies ! .IQNUM
!=======================================================!
\
PHASE 0
.IQLNK:! BLOCK 1 ;LINK LIST WORD
IQ.PRE==-1,,0 ;ADDRESS OF PREVIOUS ENTRY
IQ.NXT==0,,-1 ;ADDRESS OF NEXT ENTRY
.IQRNA:! BLOCK 1 ;ORIGINAL ACK CODE FROM REMOTE MSG
.IQLNA:! BLOCK 1 ;ACK CODE FROM IN BEHALF OF MSG
.IQNEN:! BLOCK 1 ;SIXBIT NODE NAME THAT SENT REMOTE MSG
.IQPID:! BLOCK 1 ;[10]PID OF THE EXEC SENDER
.IQNUM:! BLOCK 1 ;[16]NUMBER OF EXPECTED REPLIES
.IQSIZ:! ;IN BEHALF OF QUEUE ENTRY SIZE
DEPHASE
SUBTTL NODE NAME BLOCK
COMMENT \
The messages of type "remote" have a node name (.NDENM) block.
message block, the .NDENM block. This block specifies the remote
node the message is to be sent to. (If the node name field contains
-1, then this indicates that the mesage is to be forwarded to
all the remote nodes in the cluster.)
!=======================================================!
! BLOCK SIZE ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
where
ARG.HD==0 is the block header word. The left half contains the
size of the block and the right half contains the
block type code, .NDENM==30002.
ARG.DA==1 is the block data word. This block contains the SIXBIT
node name that the message is to be forwarded to.
\
.NDENM==30002 ;BLOCK TYPE CODE
.NDESZ==2 ;SIZE OF THE NODE BLOCK
SUBTTL REMOTE DISMOUNT MESSAGE
COMMENT \
This message is sent by MOUNTR to ORION to dismount a structure with
NO-REMOVAL from one or more remote nodes.
!=======================================================!
! Message Length ! .NRDSM ! .MSTYP
!-------------------------------------------------------!
!MF.NEB ! .MSFLG
!-------------------------------------------------------!
! MOUNTR's Acknowledgement code ! .MSCOD
!=======================================================!
!.DMSIS or .DMSEX ! .OFLAG
!-------------------------------------------------------!
! Argument Count Word ! .OARGC
!=======================================================!
! AR.LEN ! .STRDV ! ARG.HD
!-------------------------------------------------------!
! ASCIZ Structure name ! ARG.DA
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
/ /
/ /
/ /
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
The .MSFLG word has the following bit set:
MF.NEB==1B5 The "NEBULA" bit. This bit turned on indicates to the
remote QUASAR (and remote MOUNTR) that this dismount
request came from NEBULA (i.e., is a remote dismount
request). This bit is turned on in flag word .MSFLG.
The .OFLAG word has one of the following bits set:
.DMSEX==1B5 Message result of a SET STRUCTURE EXCLUSIVE
.DMDIS==1B6 Message result of a DISMOUNT/REMOVAL
.STRDV==20002 Structure name block. The ASCIZ name of the structure
that is to be dismounted.
.NDENM==30002 Node name block. This block contains the SIXBIT node
name of a remote node that the structure is to be
dismounted from. There will be one such block for each node
the structure is to be dismounted from.
.NDESZ==2 Size of the node name block
\
.DMSEX==1B5 ;MESSAGE DUE SET STRUCTURE EXCLUSIVE
.DMDIS==1B6 ;MESSAGE DUE DISMOUNT/REMOVAL
SUBTTL TO NEBULA DISMOUNT MESSAGE
COMMENT \
This message is sent by ORION on behalf of MOUNTR to NEBULA to dismount
with no removal the structure indicated in the message from the nodes
indicated in the message.
!=======================================================!
! Message Length ! .NTDSM ! .MSTYP
!-------------------------------------------------------!
!MF.NEB ! .MSFLG
!-------------------------------------------------------!
! MOUNTR's Acknowledgement code ! .MSCOD
!=======================================================!
!.DMSIS or .DMSEX ! .OFLAG
!-------------------------------------------------------!
! Argument Count Word ! .OARGC
!=======================================================!
! AR.LEN ! .STRDV ! ARG.HD
!-------------------------------------------------------!
! ASCIZ Structure name ! ARG.DA
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
/ /
/ /
/ /
!=======================================================!
! 2 ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
.STRDV Structure name block. This block contains the ASCIZ
structure name of the structure to be dismounted.
.NDENM Node name block. This block contains the SIXBIT node
name of a remote node that the structure is to be
dismounted from. There is one such block for each node
the structure is to be dismounted from.
\
SUBTTL FROM NEBULA DISMOUNT MESSAGE
COMMENT \
NEBULA forwards this message to the nodes indicated by the
.NDENM blocks. Before it does this, however, it deletes all the
node name blocks and replaces them with a single node name block
which contains the local node name (i.e., the node name of the
node requesting the dismount.) It also changes the message code to
FROM NEBULA DISMOUNT message. The format of this message is:
!=======================================================!
! Message Length ! .NFDSM ! .MSTYP
!-------------------------------------------------------!
!MF.NEB ! .MSFLG
!-------------------------------------------------------!
! MOUNTR's Acknowledgement code ! .MSCOD
!=======================================================!
! 0 ! .OFLAG
!-------------------------------------------------------!
! 2 ! .OARGC
!=======================================================!
! 2 ! .STRDV ! ARG.HD
!-------------------------------------------------------!
! ASCIZ Structure name ! ARG.DA
!=======================================================!
! 2 ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT node name of the requesting node ! ARG.DA
!=======================================================!
.STRDV Structure block name. The ASCIZ name of the structure
that is to be dismounted.
.NDENM Node name block. This block contains the SIXBIT node name
of the node that the dismount request originated from.
\
SUBTTL FROM NEBULA DISMOUNT ACK MESSAGE
COMMENT \
MOUNTR, after processing a (remote) dismount message, sends
to ORION a message of type FROM NEBULA DISMOUNT ACK message. (Note:
the ACK code in word .MSCOD is the same one NEBULA used in its FROM
NEBULA DISMOUNT message.) If the dismount was successful, then the FROM
NEBULA DISMOUNT ACK message has the following format:
!=======================================================!
! Message Length ! .NFDAK ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! NEBULA's Acknowledgement code ! .MSCOD
!=======================================================!
!SU%NOE ! .OFLAG
!-------------------------------------------------------!
! 0 ! .OARGC
!=======================================================!
SU%NOE==1B0 This bit set indicates that MOUNTR successfully
dismounted the structure.
There are no argument blocks.
\
SU%NOE==1B0 ;STRUCTURE SUCCESSFULLY DISMOUNTED
COMMENT \
If the dismount was unsuccessful, then the FROM NEBULA DISMOUNT
ACK message has the following format:
!=======================================================!
! Message Length ! .NFDAK ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! NEBULA's Acknowledgement code ! .MSCOD
!=======================================================!
! Error Indication ! .OFLAG
!-------------------------------------------------------!
! 1 ! .OARGC
!=======================================================!
! 2 ! .ERRBK ! ARG.HD
!-------------------------------------------------------!
! error code ! ARG.DA
!=======================================================!
Word .OFLAG indicates the error:
FA%TER==1B1 This bit turned on indicates that the dismount failed
due to a monitor error.
FA%MER==1B2 This bit turned on indicates that the dismount failed
due to a MOUNTR error.
(Note: It may turn out that (the remote) QUASAR, ORION or NEBULA
may detect an error while processing a DISMOUNT request. In these
cases, the component detecting the error sends to the remote
NEBULA a FROM NEBULA DISMOUNT ACK message (in the case of the remote
QUASAR, the remote QUASAR sends the message to the remote ORION
which forwards the message to the remote NEBULA). The .OFLAG word
indicates which component detected the error as follows:
FA%OER==1B3 This bit turned on indicates that the dismount failed
due to an ORION error.
FA%QER==1B4 This bit turned on indicates that the dismount failed
due to a QUASAR error.
FA%NER==1B5 This bit turned on indicates that the dismount failed
due to a NEBULA error.
.ERRBK==30001 Error block. This block returns the error code of
the remote GALAXY component that detected the error.
.ERRSZ==2 Size of the error block
o The remote ORION forwards this message without any
changes to the remote NEBULA.
o The remote NEBULA replaces the ACK code with MOUNTR's
original ACK code. The remote NEBULA then forwards the
message to NEBULA.
\
;WORD .OFLAG INDICATES THE ERROR
NF.VER==77B5 ;ERROR BIT FIELD
FA%TER==1B1 ;REMOTE MONITOR ERROR
FA%MER==1B2 ;REMOTE MOUNTR ERROR
FA%OER==1B3 ;REMOTE ORION ERROR
FA%QER==1B4 ;REMOTE QUASAR ERROR
FA%NER==1B5 ;REMOTE NEBULA ERROR
.ERRBK==30001 ;MESSAGE CODE
.ERRSZ==2 ;ERROR BLOCK CODE
SUBTTL TO NEBULA DISMOUNT ACK MESSAGE
Comment \
NEBULA, after all the FROM NEBULA DISMOUNT ACKS have been
received, builds a TO NEBULA DISMOUNT ACK message. The TO NEBULA
DISMOUNT ACK message has the following format:
!=======================================================!
! Message Length ! .NTDAK ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! MOUNTR's Acknowledgement code ! .MSCOD
!=======================================================!
! Status of the Dismount Request ! .OFLAG
!-------------------------------------------------------!
! Argument Count Word ! .OARGC
!=======================================================!
! .STRLN ! .STRNM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Structure Name ! ARG.DA
!=======================================================!
! Status Block Length ! .STSBK ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node Name ! .STNNE
!-------------------------------------------------------!
! ST.SOM ! ST.ERR ! .STNST
!-------------------------------------------------------!
/ /
/ /
/ /
!-------------------------------------------------------!
! SIXBIT Node Name ! .STNNE
!-------------------------------------------------------!
! ST.SOM ! ST.ERR ! .STNST
!=======================================================!
The .OFLAG can have the following bits turned on:
DS%CAN==1B0 The DISMOUNT request was cancelled
DS%SEC==1B1 The SET EXCLUSIVE was cancelled
DS%SUC==1B2 The structure was successfully dismounted from all remote nodes
DS%FAI==1B3 The structure was not dismounted from one or more nodes
DS%SEX==1B4 The DISMOUNT was due to a SET STRUCTURE EXCLUSIVE
DS%DIS==1B5 The DISMOUNT was due to a DISMOUNT/REMOVAL
.STRNM SIXBIT structure name block. This block contains the SIXBIT
name of the structure whose dismount was attempted
.STSBK Status block. This block gives the result of the
dismount request for each node the dismount request was
given for.
ORION forwards the TO NEBULA DISMOUNT ACK message to MOUNTR
but changes the message code to REMOTE DISMOUNT ACK
(.NRDAK==300006).
\
;THE .OFLAG WORD CAN HAVE THE FOLLOWING BITS TURNED ON:
DS%CAN==1B0 ;THE DISMOUNT REQUEST WAS CANCELLED
DS%SEC==1B1 ;THE SET EXCLUSIVE WAS CANCELLED
DS%SUC==1B2 ;STRUCTURE SUCCESSFULLY DISMOUNTED
DS%FAI==1B3 ;STRUCTURE NOT DISMOUNTED FROM ALL NODES
DS%SEX==1B4 ;DISMOUNT DUE TO SET STRUCTURE EXCLUSIVE
DS%DIS==1B5 ;DISMOUNT DUE TO A DISMOUNT/REMOVAL
.STRNM==30001 ;SIXBIT STRUCTURE NAME BLOCK
.STRLN==2 ;LENGTH OF THE SIXBIT NAME BLOCK
.STSBK==30003 ;STATUS BLOCK CODE
PHASE 0
.STNNE: BLOCK 1 ;SIXBIT NODE NAME
.STNST: BLOCK 1 ;STATUS BLOCK
ST.SOM=-1,,0 ;STATUS FIELD
ST%SSD==1B1 ;STRUCTURE SUCCESSFULLY DISMOUNTED
ST%SNH==1B2 ;SENDER HAS NOT SENT HELLO MESSAGE
ST%LNH==1B3 ;LISTENER HAS NOT RECEIVED HELLO MSG
ST%SLD==1B4 ;SENDER/LISTENER ARE CRASHED
ST%NSN==1B5 ;NO SUCH NODE
ST%PSM==1B6 ;PRE-RELEASE 7 MONITOR
ST%NDC==1B7 ;DECNET NOT ENABLED
ST%SCS==1B8 ;NODE CRASHED AND CAME BACK
ST%COI==1B9 ;INFO% CAN'T OBTAIN SOFTWARE ENVIRONMENT
ST%CAN==1B10 ;DISMOUNT CANCELLED IN TIME
ST%TER==1B11 ;MONITOR ERROR DISMOUNTING STRUCTURE
ST%OER==1B12 ;ORION ERROR
ST%QER==1B13 ;QUASAR ERROR
ST%NER==1B14 ;NEBULA ERROR
ST%MER==1B15 ;MOUNTR ERROR
ST.ERR=0,,-1 ;ERROR CODE
.STSLN: ;LENGTH OF A STATUS BLOCK FIELD
DEPHASE
SUBTTL NEBULA CANCEL DISMOUNT MESSAGE
Comment \
This message is sent by MOUNTR to ORION to cancel a REMOTE
DISMOUNT message or as a result of setting a structure shared that was
in the process of being SET EXCLUSIVE. ORION forwards this message,
as is, to NEBULA. The format of the message is:
!=======================================================!
! Message Length ! .NCDSM ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! MOUNTR's Acknowledgement code ! .MSCOD
!=======================================================!
! 0 ! .OFLAG
!-------------------------------------------------------!
! Argument Count Word ! .OARGC
!=======================================================!
Word .OFLAG has one of the following bits turned on:
NC%CDM==1B0 Cancel a dismount
NC%CSE==1B1 Cancel a SET STRUCTURE EXCLUSIVE
o The ACK code is the same as the one that MOUNTR
orginally sent in its REMOTE DISMOUNT message.
o Bit NC%CSE is set if the NEBULA CANCEL DISMOUNT is a
consequence of processing an OPR>SET STRUCTURE SHARED
command.
o These bits must correspond in value to those of the .RQSTS word
of the remote queue entry.
\
NC%CDM==1B0 ;CANCEL A DISMOUNT
NC%CSE==1B1 ;CANCEL A SET STRUCTURE EXCLUSIVE
SUBTTL TO NEBULA MOUNT MESSAGE
COMMENT \
This message is sent by ORION to NEBULA when ORION receives a
message that resulted from a OPR>MOUNT STRUCTURE FOO:/NODE:BAR command.
The format of the message is:
!=======================================================!
! Message Length ! .NTMTS ! .MSTYP
!-------------------------------------------------------!
!MF.NEB!MF.WTO ! .MSFLG
!-------------------------------------------------------!
! Acknowledgement code ! .MSCOD
!=======================================================!
! .MTSID ! .OFLAG
!-------------------------------------------------------!
! .TNNMB ! .OARGC
!=======================================================!
! n ! .STALS ! ARG.HD
!-------------------------------------------------------!
! ASCIZ alias name ! ARG.DA
!=======================================================!
! n ! .STRDV ! ARG.HD
!-------------------------------------------------------!
! ASCIZ Structure name ! ARG.DA
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT node name ! ARG.DA
!=======================================================!
.TNNMB Number of argument blocks
.STALS Alias block. This block contains the structure alias
name in ASCIZ.
.STRDV Structure block. This block will be optional and will be
present only if the operator typed in /STRUCTURE-ID:.
This bloc contains the structure name in ASCIZ.
.NDENM Node name block. This block will contain the SIXBIT node
name of the node that the structure is to be mounted on.
If the operator typed in /STRUCTURE-ID:, then the flag word .OFLAG has
the following bit set:
.MTSID==1B4 Command included /STRUCTURE-ID:
n is the block size in words, including the header word ARG.HD.
\
.TNNMB==3 ;NUMBER OF ARGUMENT BLOCKS
SUBTTL FROM NEBULA MOUNT MESSAGE
COMMENT \
NEBULA forwards the TO NEBULA MOUNT message to the remote
NEBULA indicated by the node block. NEBULA places the local node
name in the node name block and changes the message code to FROM
NEBULA MOUNT. This message has the same format as the .ODMTS
message that ORION normally sends to QUASAR. The format of the message is:
!=======================================================!
! Message Length ! .NFMTS ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! Acknowledgement code ! .MSCOD
!=======================================================!
! .MTSID ! .OFLAG
!-------------------------------------------------------!
! .FNNMB ! .OARGC
!=======================================================!
! n ! .STALS ! ARG.HD
!-------------------------------------------------------!
! ASCIZ alias name ! ARG.DA
!=======================================================!
! n ! .STRDV ! ARG.HD
!-------------------------------------------------------!
! ASCIZ Structure name ! ARG.DA
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT node name ! ARG.DA
!=======================================================!
.FNNMB Number of argument blocks
.STALS Alias block. This block contains the structure alias
name in ASCIZ.
.STRDV Structure block. This block is optional and is
present only if the operator typed in /STRUCTURE-ID:.
This block contains the structure name in ASCIZ.
If the operator typed in /STRUCTURE-ID:, then the flag word .OFLAG has
the following bit set:
.MTSID==1B4 Command included /STRUCTURE-ID:
n is the block size in words, including the header word ARG.HD.
.NDENM This block contains the node name of the node that originated
the mount request.
\
.FNNMB==3 ;NUMBER OF ARGUMENT BLOCKS
SUBTTL NEBULA SHOW MESSAGES' CODES
COMMENT \
If ORION receives an OPR SHOW message that was specified with the
/CLUSTER-NODE: switch, then it formats the message into the format expected
by (the remote) QUASAR or ORION. In addition, however, ORION appends
a node (.NDNME) block that specifies the node the message is to be
forwarded to. If the SHOW command was given with /CLUSTER-NODE:*,
then the node block contains -1 as its node name. In this case, the
SHOW message is sent to all remote nodes in the cluster and is also
processed locally.
.NMSHS - SHOW STATUS (.OMSHS)
.NDSCD - SHOW CONFIGURATION (.ODSCD)
.NMSHQ - SHOW QUEUES (.OMSHQ)
.NMSHP - SHOW PARAMETERS (.OMSHP)
.NMSHR - SHOW ROUTE (.OMSHR)
.NDSHT - [6]SHOW STATUS TAPE (.ODSHT)
.NDSHD - [6]SHOW STATUS DISK (.ODSHD)
.NDSTR - [7]SHOW STATUS STRUCTURE (.ODSTR)
\ ;End of comment
SUBTTL RESPONSE TO EXEC CANCEL MESSAGE
COMMENT \
The response to an EXEC CANCEL PRINT/DESTINATION request from a remote
QUASAR must have a different message code than .OMTXT so that the
requestor's NEBULA can distinquish the response from an operator's
request so that it can forward the response to the EXEC rather than to
ORION.
.NMTXT - [10]RESPONSE TO EXEC KILL REQUEST
\ ;End fo comment
SUBTTL (TO NEBULA) SHOW OPERATORS MESSAGE
COMMENT \
This message is sent by ORION to NEBULA if ORION receives a SHOW message
(.OMSHS) from an OPR with keyword OPERATORS (.KYOPR) and a node switch
block (.SWNOD). The format of the message is:
!=======================================================!
! Message Length ! .NSHOP ! .MSTYP
!-------------------------------------------------------!
!MF.NEB ! .MSFLG
!-------------------------------------------------------!
! PID of OPR That Sent This Message ! .MSCOD
!=======================================================!
! 0 ! .OFLAG
!-------------------------------------------------------!
! Argument Count Word ! .OARGC
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
.NDENM==30002 Node name block. This block contains the SIXBIT node
name of the node that the message is to be forwarded to.
If the data field of the .NDENM block contains a -1, then the message
is to be routed to all remote nodes (and also processed locally).
\ ;End of Comment
SUBTTL (TO NEBULA) SHOW MESSAGE
COMMENT \
This message is sent by ORION to NEBULA if ORION receives
a SHOW message (.OMSHS) from OPR with keyword MESSAGES (.KYMSG) and a
node switch block (.SWNOD). The format of the message is:
!=======================================================!
! Message Length ! .NMESS ! .MSTYP
!-------------------------------------------------------!
!MF.NEB ! .MSFLG
!-------------------------------------------------------!
! PID Of OPR That Sent This Message ! .MSCOD
!=======================================================!
! 0 ! .OFLAG
!-------------------------------------------------------!
! Argument Count Word ! .OARGC
!=======================================================!
! 2 ! .ORSEQ ! ARG.HD
!-------------------------------------------------------!
! Message Number ! ARG.DA
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
.NMESS==300017 message code
.NDENM==30002 Node name block. This block contains the SIXBIT node
name of the node that the message is to be forwarded to.
.ORSEQ==103 The sequence number block. If the operator specified
a message number, then this block contains
that number.
If the data field of the .NDENM block contains -1, then the message is to
be routed to all the remote nodes in the cluster (and is also processed
locally).
\ ;End of comment
SUBTTL SHOW CLUSTER-GALAXY-LINK-STATUS MESSAGE
COMMENT \
This message is sent by ORION to NEBULA when ORION receives
a SHOW message (.OMSHS) from OPR with the keyword CLUSTERS (.KYCLU).
The format of the message is:
!=======================================================!
! Message Length ! .NSCLU ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! PID Of OPR That Sent This Message ! .MSCOD
!=======================================================!
! 0 ! .OFLAG
!-------------------------------------------------------!
! Argument Block Count ! .OARGC
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
.NSCLU==300024 Message code
The node block (.NDENM) is present only if the command was
given with the /NODE: switch.
\ ;End of comment
SUBTTL REMOTE SHOW ACK MESSAGE
COMMENT \
In response to a SHOW message, the remote QUASAR or ORION builds a
SHOW ACK message that is similar to the QUASAR SHOW ACK (.OMACS) message
but includes an additional display (.ORDSP) blank which indicates the
node the message was created on.
!=======================================================!
! Message Length ! .NMACS ! .MSTYP
!-------------------------------------------------------!
!MF.NEB ! .MSFLG
!-------------------------------------------------------!
! ACK code supplied by the Remote NEBULA ! .MSCOD
!=======================================================!
!WT.SJI!WT.NFO ! .OFLAG
!-------------------------------------------------------!
! 3 ! .OARGC
!=======================================================!
! Block Length ! .ORDSP ! ARG.HD
!-------------------------------------------------------!
! Blank !
!Received Message From FOO:: ! ARG.DA
!=======================================================!
! Block Length ! .ORDSP ! ARG.HD
!-------------------------------------------------------!
! Universal Date and Time !
/ ASCIZ Text of Header / ARG.HD
! !
!=======================================================!
! Block Length ! .CMTXT ! ARG.HD
!-------------------------------------------------------!
! !
/ /
/ ASCIZ Message Text / ARG.DA
/ /
!=======================================================!
\
SUBTTL SHOW CLUSTER-GALAXY-LINK-STATUS MESSAGE
COMMENT \
If the SHOW CLUSTER-GALAXY-LINK-STATUS command was given with the
the /CLUSTER-NODE switch, then the the following message is sent to
NEBULA:
!=======================================================!
! Message Length ! .NSRCL ! .MSTYP
!-------------------------------------------------------!
!MF.NEB ! .MSFLG
!-------------------------------------------------------!
! PID Of OPR That Sent This Message ! .MSCOD
!=======================================================!
! 0 ! .OFLAG
!-------------------------------------------------------!
! Argument Block Count ! .OARGC
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
.NSRCL==300025 Message code
\ ;End of comment
SUBTTL DISABLE REPORT-CONNECTION-FAILURES MESSAGE
COMMENT \
This message is sent by ORION to NEBULA if ORION receives a
DISABLE (.OMDIS) message from OPR with keyword REPORT-CONNECTION-FAILURES
(.KYRCF). The format of the message is:
!=======================================================!
! Message Length ! .NDRCF ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! PID Of OPR That Sent This Message ! .MSCOD
!=======================================================!
! 0 ! .OFLAG
!-------------------------------------------------------!
! Number of Argument Blocks ! .OARGC
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
If the node block is present, then only that node's reporting of
DECnet connection failures is disabled.
\ ;End of comment
SUBTTL ENABLE REPORT-CONNECTION-FAILURES MESSAGE
COMMENT \
This message is sent by ORION to NEBULA if ORION receives an
ENABLE (.OMENA) message from OPR with keyword REPORT-CONNECTION-FAILURES
(.KYRCF). The format of the message is:
!=======================================================!
! Message Length ! .NDRCF ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! PID of OPR That Sent This Message ! .MSCOD
!=======================================================!
!ND%ENA ! .OFLAG
!-------------------------------------------------------!
! Number of Argument Blocks ! .OARGC
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
In word .OFLAG:
ND%ENA==1B0 This is an ENABLE message
If the node block is present, then only that node's reporting of
DECnet connection failures is enabled.
\ ;End of comment
;IN WORD .OFLAG THE FOLLOWING BIT IS SET
ND%ENA==1B0 ;ENABLE REPORT-CONNECTION-FAILURES
SUBTTL DISABLE DECNET-CONNECTION-ATTEMPTS MESSAGE
COMMENT \
This message is sent by ORION to NEBULA if ORION receives a
DISABLE (.OMDIS) message from OPR with keyword DECNET-CONNECTION-ATTEMPTS
(.KYDCA). The format of the message is:
!=======================================================!
! Message Length ! .NDDCA ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! PID Of OPR That Sent This Message ! .MSCOD
!=======================================================!
! 0 ! .OFLAG
!-------------------------------------------------------!
! Number of Argument Blocks ! .OARGC
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
If the node block is present, then only that node's attempts to
obtain a DECnet connection is disabled.
\ ;End of comment
SUBTTL ENABLE DECNET-CONNECTION-ATTEMPTS MESSAGE
COMMENT \
This message is sent by ORION to NEBULA if ORION receives an
ENABLE (.OMENA) message from OPR with keyword DECNET-CONNECTION-ATTEMPTS
(.KYDCA). The format of the message is:
!=======================================================!
! Message Length ! .NDDCA ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! PID Of OPR That Sent This Message ! .MSCOD
!=======================================================!
!ND%ENA ! .OFLAG
!-------------------------------------------------------!
! Number of Argument Blocks ! .OARGC
!=======================================================!
! .NDESZ ! .NDENM ! ARG.HD
!-------------------------------------------------------!
! SIXBIT Node name ! ARG.DA
!=======================================================!
.NDDCA==300032 message code
In word .OFLAG:
ND%ENA==1B0 This is an ENABLE message
If the node block is present, then only that node's attempts to
obtain a DECnet connection is enabled.
\ ;End of comment
SUBTTL NEBULA ACK / NEBULA ACK RESPONSE MESSAGES
COMMENT \
The sending of these messages is a GALGEN option. The intent of these messages
is to ensure that NEBULA does indeed have communication with those nodes that
it believes it is in communication with. This is essentially to cover the case
where a remote node in the cluster has its NI reloaded. When this happens, the
local NEBULA is not interrupted to inform it of this fact and the remote node
is not able to establish communication with any other nodes in the cluster.
NEBULA sends a NEBULA ACK message every TIMOUT minutes to nodes in the cluster
it believes it has communication with. As with other messages NEBULA sends, a
timer is set for TIMOUT minutes. If a NEBULA ACK RESPONSE is not received
from each node a NEBULA ACK message was sent to when the appropriate timer
goes off, then NEBULA assumes that communication to that node has been lost.
The NEBULA ACK message has the following format:
!=======================================================!
! 5 ! .NACKM ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! 0 ! .MSCOD
!=======================================================!
! 0 ! .OFLAG
!-------------------------------------------------------!
! 0 ! .OARGC
!=======================================================!
The NEBULA ACK RESPONSE message has the following format:
!=======================================================!
! 5 ! .NACKR ! .MSTYP
!-------------------------------------------------------!
! 0 ! .MSFLG
!-------------------------------------------------------!
! 0 ! .MSCOD
!=======================================================!
! 0 ! .OFLAG
!-------------------------------------------------------!
! 0 ! .OARGC
!=======================================================!
\ ;End of comment
SUBTTL NEBULA MESSAGE CODES
.NBMSG==300000 ;MINIMUM NEBULA MESSAGE CODE
.NRDSM==300001 ;REMOTE DISMOUNT MESSAGE CODE
.NTDSM==300002 ;TO NEBULA DISMOUNT MESSAGE CODE
.NFDSM==300003 ;NEBULA DISMOUNT MESSAGE CODE
.NFDAK==300004 ;FROM NEBULA DISMOUNT ACK MESSAGE CODE
.NTDAK==300005 ;TO NEBULA DISMOUNT ACK MESSAGE CODE
.NRDAK==300006 ;REMOTE DISMOUNT ACK MESSAGE CODE
.NTMTS==300007 ;TO NEBULA MOUNT MESSAGE CODE
.NFMTS==300010 ;FROM NEBULA MOUNT MESSAGE CODE
.NMSHS==300011 ;SHOW STATUS (.OMSHS) MESSAGE CODE
.NDSCD==300012 ;SHOW CONFIGURATION (.ODSCD) MSG CODE
.NMSHQ==300013 ;SHOW QUEUES (.OMSHQ) MESSAGE CODE
.NMSHP==300014 ;SHOW PARAMETERS (.OMSHP) MESSAGE CODE
.NMSHR==300015 ;SHOW ROUTE (.OMSHR) MESSAGE CODE
.NSCLU==300016 ;SHOW CLUSTER/NODE: MESSAGE CODE
.NSRCL==300017 ;SHOW CLUSTER/CLUSTER-NODE: MSG CODE
.NCDSM==300020 ;NEBULA CANCEL DISMOUNT MESSAGE CODE
.NMESS==300021 ;(TO NEBULA) SHOW MESSAGE MESSAGE CODE
.NSHOP==300022 ;(TO NEBULA) SHOW OPERATORS MSG CODE
.NDRCF==300023 ;ENABLE REPORT-CONNECTION-FAILURES
.NDDCA==300024 ;DISABLE DECNET-CONNECTION ATTEMPTS
.NMACS==300025 ;REMOTE SHOW ACK MESSAGE CODE
.NDSHT==300026 ;SHOW STATUS TAPE (.ODSHT) MESSAGE CODE
.NDSHD==300027 ;SHOW STATUS DISK (.ODSHD) MESSAGE CODE
.NDSTR==300030 ;SHOW STATUS STRUCTURE (.ODSTR) MSG CODE
.NMTXT==300031 ;RESPONSE TO EXEC KILL REQUEST MSG CODE
.NACKM==300032 ;NEBULA ACK MESSAGE CODE
.NACKR==300033 ;NEBULA ACK RESPONSE MESSAGE CODE
.NMSSN==300034 ;[16]SHOW STATUS (.OMSSN) NETWORK-NODE
.NMSPN==300035 ;[16]SHOW PARAMETERS (.OMSPN) NETWORK
.NMAXC==.NMSPN ;[16]MAXIMUM NEBULA MESSAGE CODE
SUBTTL NEBULA ERROR CODES
;The following macros define the types of errors that NEBULA reports to
;an operator upon processing a message from that operator. These macros
;are used by NEBULA to send an ACK message (.OMACK) to ORION.
;ARGUMENTS USED ARE
; X 'SUFFIX' , 'TEXT' , 'ERROR SEVERITY'
;DEFINE THE ERROR CODES THAT ARE ASSOCIATED WITH INVARIANT TEXT
DEFINE ERRCDS,<
XLIST
X IAC,<Invalid Argument Count>
X IBT,<Invalid Block Type>
X IML,<Invalid Message Length>
X IFW,<Invalid Flag (.MSFLG) word>
X NNF,<Node Block Not Found In SHOW Message>
X NRN,<There are no reachable remote nodes in the cluster>
X IFM,<Illegally formatted message> ;[4]
X XXX,<This is a text buffer for messages built on the fly. MAX 70 characters>
LIST
SALL> ;END OF DEFINITIONS OF INVARIANT TEXT ERRORS
;DEFINE THE ERROR CODES THAT ARE ASSOCIATED WITH VARIABLE TEXT
DEFINE ERRTXT,<
XLIST
X NSN,<Node ^N/G$ARG1/ is not known to be in the cluster>
X INS,<Cannot specify the local node name ^N/G$ARG1/> ;;[13]
X USN,<Message not sent to node ^N/G$ARG1/ ^T/@G$ARG2/>
X INN,<Illegal number of nodes, ^D/G$ARG1/, specified in message>
X NSM,<Communication to node ^N/G$ARG1/ lost. Message not sent>
LIST
SALL> ;END OF DEFINITIONS OF VARIABLE TEXT ERRORS
END