[an error occurred while processing this directive]

HP OpenVMS Systems Documentation

Content starts here

HP OpenVMS Cluster Systems


Previous Contents Index

D.5.3 Assemble and Link the Program

Use the following command procedure to assemble and link the program:


$ @LAVC$BUILD.COM LAVC$FAILURE_ANALYSIS.MAR

Make the edits necessary to fix the assembly or link errors, such as errors caused by mistyping component labels in the path description. Assemble the program again.

D.5.4 Modify Startup Files

Before you execute the LAVC$FAILURE_ANALYSIS.EXE procedure, modify the startup files to run the procedure only on the node for which you supplied data.

Example: To execute the program on node OMEGA, you would modify the startup files in SYS$COMMON:[SYSMGR] to include the following conditional statement:


$ If F$GETSYI ("nodename").EQS."OMEGA" 
$ THEN 
$   RUN SYS$MANAGER:LAVC$FAILURE_ANALYSIS.EXE 
$ ENDIF 

D.5.5 Execute the Program

To run the LAVC$FAILURE_ANALYSIS.EXE program, follow these steps:

Step Action
1 Use an account that has the PHY_IO privilege.
2 Execute the program on each of the nodes that will perform the network failure analysis:
$ RUN SYS$MANAGER:LAVC$FAILURE_ANALYSIS.EXE

After it executes, the program displays the approximate amount of nonpaged pool required for the network description. The display is similar to the following:


Non-paged Pool Usage:  ~ 10004 bytes 

D.5.6 Modify MODPARAMS.DAT

On each system running the network failure analysis, modify the file SYS$SPECIFIC:[SYSEXE]MODPARAMS.DAT to include the following lines, replacing value with the value that was displayed for nonpaged pool usage:


ADD_NPAGEDYN = value
ADD_NPAGEVIR = value

Run AUTOGEN on each system for which you modified MODPARAMS.DAT.

D.5.7 Test the Program

Test the program by causing a failure. For example, disconnect a transceiver cable or ThinWire segment, or cause a power failure on a bridge, a DELNI interconnect, or a DEMPR repeater. Then check the OPCOM messages to see whether LAVC$FAILURE_ANALYSIS reports the failed component correctly. If it does not report the failure, check your edits to the network failure analysis program.

D.5.8 Display Suspect Components

When an OpenVMS Cluster network component failure occurs, OPCOM displays a list of suspected components. Displaying the list through OPCOM allows the system manager to enable and disable selectively the display of these messages.

The following are sample displays:


%%%%%%%%%%%  OPCOM   1-JAN-1994 14:16:13.30  %%%%%%%%%%%    
(from node BETA at 1-JAN-1994 14:15:55.38) 
Message from user SYSTEM on BETA LAVC-W-PSUSPECT, component_name 
 
%%%%%%%%%%%  OPCOM   1-JAN-1994 14:16:13.41  %%%%%%%%%%%    
(from node BETA at 1-JAN-1994 14:15:55.49) 
Message from user SYSTEM on BETA %LAVC-W-PSUSPECT, component_name 
 
%%%%%%%%%%%  OPCOM   1-JAN-1994 14:16:13.50  %%%%%%%%%%%    
(from node BETA at 1-JAN-1994 14:15:55.58) 
Message from user SYSTEM on BETA %LAVC-I-ASUSPECT, component_name 

The OPCOM display of suspected failures uses the following prefixes to list suspected failures:

  • %LAVC-W-PSUSPECT---Primary suspects
  • %LAVC-I-ASUSPECT---Secondary or additional suspects
  • %LAVC-S-WORKING---Suspect component is now working

The text following the message prefix is the description of the network component you supplied when you edited LAVC$FAILURE_ANALYSIS.MAR.


Appendix E
Subroutines for LAN Control

E.1 Introduction

In addition to the sample programs described in Appendix D, a number of subroutines are provided as a way of extending the capabilities of the sample programs. Table E-1 describes the subroutines.

Table E-1 Subroutines for LAN Control
Subroutine Description
To manage LAN adapters:
SYS$LAVC_START_BUS Directs PEDRIVER to start the NISCA protocol on a specific LAN adapter.
SYS$LAVC_STOP_BUS Directs PEDRIVER to stop the NISCA protocol on a specific LAN adapter.
To control the network failure analysis system:
SYS$LAVC_DEFINE_NET_COMPONENT Creates a representation of a physical network component.
SYS$LAVC_DEFINE_NET_PATH Creates a directed list of network components between two network nodes.
SYS$LAVC_ENABLE_ANALYSIS Enables the network failure analysis, which makes it possible to analyze future channel failures.
SYS$LAVC_DISABLE_ANALYSIS Stops the network failure analysis and deallocates the memory used for the physical network description.

E.1.1 Purpose of the Subroutines

The subroutines described in this appendix are used by the LAN control programs, LAVC$FAILURE_ANALYSIS.MAR, LAVC$START_BUS.MAR, and LAVC$STOP_BUS.MAR. Although these programs are sufficient for controlling LAN networks, you may also find it helpful to use the LAN control subroutines to further manage LAN adapters.

E.2 Starting the NISCA Protocol

The SYS$LAVC_START_BUS subroutine starts the NISCA protocol on a specified LAN adapter. To use the routine SYS$LAVC_START_BUS, specify the following parameter:
Parameter Description
BUS_NAME String descriptor representing the LAN adapter name buffer, passed by reference. The LAN adapter name must consist of 15 characters or fewer.

Example: The following Fortran sample program uses SYS$LAVC_START_BUS to start the NISCA protocol on the LAN adapter XQA:


PROGRAM START_BUS 
 
EXTERNAL SYS$LAVC_START_BUS 
INTEGER*4 SYS$LAVC_START_BUS 
INTEGER*4 STATUS 
 
STATUS = SYS$LAVC_START_BUS ( 'XQA0:' ) 
 
CALL SYS$EXIT ( %VAL ( STATUS )) 
 
END 

E.2.1 Status

The SYS$LAVC_START_BUS subroutine returns a status value in register R0, as described in Table E-2.

Table E-2 SYS$LAVC_START_BUS Status
Status Result
Success Indicates that PEDRIVER is attempting to start the NISCA protocol on the specified adapter.
Failure Indicates that PEDRIVER cannot start the protocol on the specified LAN adapter.

E.2.2 Error Messages

SYS$LAVC_START_BUS can return the error condition codes shown in the following table.

Condition Code Description
SS$_ACCVIO This status is returned for the following conditions:
  • No access to the argument list
  • No access to the LAN adapter name buffer descriptor
  • No access to the LAN adapter name buffer
SS$_DEVACTIVE Bus already exists. PEDRIVER is already trying to use this LAN adapter for the NISCA protocol.
SS$_INSFARG Not enough arguments supplied.
SS$_INSFMEM Insufficient nonpaged pool to create the bus data structure.
SS$_INVBUSNAM Invalid bus name specified. The device specified does not represent a LAN adapter that can be used for the protocol.
SS$_IVBUFLEN This status value is returned under the following conditions:
  • The LAN adapter name contains no characters (length = 0).
  • The LAN adapter name contains more than 15 characters.
SS$_NOSUCHDEV This status value is returned under the following conditions:
  • The LAN adapter name specified does not correspond to a LAN device available to PEDRIVER on this system.
  • No LAN drivers are loaded in this system; the value for NET$AR_LAN_VECTOR is 0.
  • PEDRIVER is not initialized; PEDRIVER's PORT structure is not available.

Note: By calling this routine, an error-log message may be generated.

SS$_NOTNETDEV PEDRIVER does not support the specified LAN device.
SS$_SYSVERDIF The specified LAN device's driver does not support the VCI interface version required by PEDRIVER.

PEDRIVER can return additional errors that indicate it has failed to create the connection to the specified LAN adapter.

E.3 Stopping the NISCA Protocol

The SYS$LAVC_STOP_BUS routine stops the NISCA protocol on a specific LAN adapter.

Caution: Stopping the NISCA protocol on all LAN adapters causes satellites to hang and could cause cluster systems to fail with a CLUEXIT bugcheck.

To use this routine, specify the parameter described in the following table.

Parameter Description
BUS_NAME String descriptor representing the LAN adapter name buffer, passed by reference. The LAN adapter name must consist of 15 characters or fewer.

Example: The following Fortran sample program shows how SYS$LAVC_STOP_BUS is used to stop the NISCA protocol on the LAN adapter XQB:


PROGRAM STOP_BUS 
 
EXTERNAL SYS$LAVC_STOP_BUS 
INTEGER*4 SYS$LAVC_STOP_BUS 
INTEGER*4 STATUS 
 
STATUS = SYS$LAVC_STOP_BUS ( 'XQB' ) 
 
CALL SYS$EXIT ( %VAL ( STATUS )) 
 
END 

E.3.1 Status

The SYS$LAVC_STOP_BUS subroutine returns a status value in register R0, as described in Table E-3.

Table E-3 SYS$LAVC_STOP_BUS Status
Status Result
Success Indicates that PEDRIVER is attempting to shut down the NISCA protocol on the specified adapter.
Failure Indicates that PEDRIVER cannot shut down the protocol on the specified LAN adapter. However, PEDRIVER performs the shutdown asynchronously, and there could be other reasons why PEDRIVER is unable to complete the shutdown.

When the LAVC$STOP_BUS module executes successfully, the following device-attention entry is written to the system error log:


DEVICE ATTENTION...
NI-SCS SUB-SYSTEM...
FATAL ERROR DETECTED BY DATALINK...

In addition, the following hexadecimal values are written to the STATUS field of the entry:

First longword (00000001)
Second longword (00001201)

This error-log entry indicates expected behavior and can be ignored. However, if the first longword of the STATUS field contains a value other than hexadecimal value 00000001, an error has occurred and further investigation may be necessary.

E.3.2 Error Messages

SYS$LAVC_STOP_BUS can return the error condition codes shown in the following table.

Condition Code Description
SS$_ACCVIO This status is returned for the following conditions:
  • No access to the argument list
  • No access to the LAN adapter name buffer descriptor
  • No access to the LAN adapter name buffer
SS$_INVBUSNAM Invalid bus name specified. The device specified does not represent a LAN adapter that can be used for the NISCA protocol.
SS$_IVBUFLEN This status value is returned under the following conditions:
  • The LAN adapter name contains no characters (length = 0).
  • The LAN adapter name has more than 15 characters.
SS$_NOSUCHDEV This status value is returned under the following conditions:
  • The LAN adapter name specified does not correspond to a LAN device that is available to PEDRIVER on this system.
  • No LAN drivers are loaded in this system. NET$AR_LAN_VECTOR is zero.
  • PEDRIVER is not initialized. PEDRIVER's PORT structure is not available.

E.4 Creating a Representation of a Network Component

The SYS$LAVC_DEFINE_NET_COMPONENT subroutine creates a representation for a physical network component.

Use the following format to specify the parameters:

STATUS = SYS$LAVC_DEFINE_NET_COMPONENT (
component_description,
nodename_length,
component_type,
lan_hardware_addr,
lan_decnet_addr,
component_id_value )

Table E-4 describes the SYS$LAVC_DEFINE_NET_COMPONENT parameters.

Table E-4 SYS$LAVC_DEFINE_NET_COMPONENT Parameters
Parameter Description
component_description Address of a string descriptor representing network component name buffer. The length of the network component name must be less than or equal to the number of COMP$C_MAX_NAME_LEN characters.
nodename_length Address of the length of the node name. This address is located at the beginning of the network component name buffer for COMP$C_NODE types. You should use zero for other component types.
component_type Address of the component type. These values are defined by $PEMCOMPDEF, found in SYS$LIBRARY:LIB.MLB.
lan_hardware_addr Address of a string descriptor of a buffer containing the component's LAN hardware address (6 bytes). You must specify this value for COMP$C_ADAPTER types. For other component types, this value is optional.
lan_decnet_addr String descriptor of a buffer containing the component's LAN DECnet address (6 bytes). This is an optional parameter for all component types.
component_id_value Address of a longword that is written with the component ID value.

E.4.1 Status

If successful, the SYS$LAVC_DEFINE_NET_COMPONENT subroutine creates a COMP data structure and returns its ID value. This subroutine copies user-specified parameters into the data structure and sets the reference count to zero.

The component ID value is a 32-bit value that has a one-to-one association with a network component. Lists of these component IDs are passed to SYS$LAVC_DEFINE_NET_PATH to specify the components used when a packet travels from one node to another.

E.4.2 Error Messages

SYS$LAVC_DEFINE_NET_COMPONENT can return the error condition codes shown in the following table.

Condition Code Description
SS$_ACCVIO This status is returned for the following conditions:
  • No access to the network component name buffer descriptor
  • No access to the network component name buffer
  • No access to the component's LAN hardware address if a nonzero value was specified
  • No access to the component's LAN DECnet address if a nonzero value was specified
  • No access to the lan_hardware_addr string descriptor
  • No access to the lan_decnet_addr string descriptor
  • No write access to the component_id_value address
  • No access to the component_type address
  • No access to the nodename_length address
  • No access to the argument list
SS$_DEVACTIVE Analysis program already running. You must stop the analysis by calling the SYS$LAVC_DISABLE_ANALYSIS before you define the network components and the network component lists.
SS$_INSFARG Not enough arguments supplied.
SS$_INVCOMPTYPE The component type is either 0 or greater than or equal to COMP$C_INVALID.
SS$_IVBUFLEN This status value is returned under the following conditions:
  • The component name has no characters (length = 0).
  • Length of the component name is greater than COMP$C_MAX_NAME_LEN.
  • The node name has no characters (length = 0) and the component type is COMP$C_NODE.
  • The node name has more than 8 characters and the component type is COMP$C_NODE.
  • The lan_hardware_addr string descriptor has fewer than 6 characters.
  • The lan_decnet_addr has fewer than 6 characters.

E.5 Creating a Network Component List

The SYS$LAVC_DEFINE_NET_PATH subroutine creates a directed list of network components between two network nodes. A directed list is a list of all the components through which a packet passes as it travels from the failure analysis node to other nodes in the cluster network.

Use the following format to specify the parameters:

STATUS = SYS$LAVC_DEFINE_NET_PATH (
network_component_list,
used_for_analysis_status,
bad_component_id )

Table E-5 describes the SYS$LAVC_DEFINE_NET_PATH parameters.

Table E-5 SYS$LAVC_DEFINE_NET_PATH Parameters
Parameter Description
network_component_list Address of a string descriptor for a buffer containing the component ID values for each of the components in the path. List the component ID values in the order in which a network message travels through them. Specify components in the following order:
  1. Local node
  2. Local LAN adapter
  3. Intermediate network components
  4. Remote network LAN adapter
  5. Remote node

You must list two nodes and two LAN adapters in the network path. The buffer length must be greater than 15 bytes and less than 509 bytes.

used_for_analysis_status Address of a longword status value that is written. This status indicates whether this network path has any value for the network failure analysis.
bad_component_id Address of a longword value that contains the erroneous component ID if an error is detected while processing the component list.

E.5.1 Status

This subroutine creates a directed list of network components that describe a specific network path. If SYS$LAVC_DEFINE_NET_PATH is successful, it creates a CLST data structure. If one node is the local node, then this data structure is associated with a PEDRIVER channel. In addition, the reference count for each network component in the list is incremented. If neither node is the local node, then the used_for_analysis_status address contains an error status.

The SYS$LAVC_DEFINE_NET_PATH subroutine returns a status value in register R0, as described in Table E-6, indicating whether the network component list has the correct construction.

Table E-6 SYS$LAVC_DEFINE_NET_PATH Status
Status Result
Success The used_for_analysis_status value indicates whether the network path is useful for network analysis performed on the local node.
Failure If a failure status returned in R0 is SS$_INVCOMPID, the bad_component_id address contains the value of the bad_component_id found in the buffer.


Previous Next Contents Index