# Compaq OpenVMS
OpenVMS Cluster システム

前へ | 次へ | 目次 | 索引

## D.5.7 プログラムのテスト

障害を発生させて，プログラムをテストします。たとえば，トランシーバ・ケーブルや ThinWire セグメントを切断したり，ブリッジ，DELNI インターコネクト，DEMPR リピータで電源障害を発生させます。その後，OPCOM メッセージを調べて， LAVC$FAILURE_ANALYSIS が障害のあるコンポーネントを正しく報告しているかどうか確認します。障害を報告していない場合は， Network Failure Analysis Program に対して行った編集を確認します。

## D.5.8 問題のあるコンポーネントの表示

OpenVMS Cluster ネットワーク・コンポーネントで障害が発生すると， OPCOM は疑いのあるコンポーネントの一覧を表示します。OPCOM を使用して一覧を表示することにより，システム管理者は，これらのメッセージの表示を選択的に有効および無効に設定できます。

以下に表示の例を示します。

    %%%%%%%%%%%  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

障害の疑いのあるコンポーネントを示す OPCOM 表示では，障害を示すために以下の接頭辞が使用されます。

- %LAVC-W-PSUSPECT---最も疑いのあるコンポーネント

- %LAVC-I-ASUSPECT---次に疑いのあるコンポーネント

- %LAVC-S-WORKING---疑いのあるコンポーネントは現在動作している

メッセージ接頭辞の後のテキストは， LAVC$FAILURE_ANALYSIS.MAR を編集するときに指定したネットワーク・コンポーネントの記述です。

# 付録 E
LAN 制御のためのサブルーチン

# E.1 はじめに

付録 D で説明したサンプル・プログラムの他に，サンプル・プログラムの機能を拡張するための方法として，多くのサブルーチンが提供されます。 表 E-1 では，これらのサブルーチンについて説明しています。

表 E-1 LAN 制御のためのサブルーチン
サブルーチン | 説明
--- | ---
LAN アダプタの管理:
SYS$LAVC_START_BUS | PEDRIVER に対して，特定の LAN アダプタで NISCA プロトコルを起動するように要求する。
SYS$LAVC_STOP_BUS | PEDRIVER に対して，特定の LAN アダプタで NISCA プロトコルを停止するように要求する。
ネットワーク障害分析システムの制御:
SYS$LAVC_DEFINE_NET_COMPONENT | 物理ネットワーク・コンポーネントの表現を作成する。
SYS$LAVC_DEFINE_NET_PATH | 2 つのネットワーク・ノード間のネットワーク・コンポーネントの一覧を作成する。
SYS$LAVC_ENABLE_ANALYSIS | ネットワーク障害分析を有効に設定する。この結果，将来のチャネル障害を分析することが可能になる。
SYS$LAVC_DISABLE_ANALYSIS | ネットワーク障害分析を停止し，物理ネットワーク記述のために使用されていたメモリの割り当てを解除する。

## E.1.1 サブルーチンの目的

この付録で説明するサブルーチンは，LAN 制御プログラムである LAVC$FAILURE_ANALYSIS.MAR，LAVC$START_BUS.MAR， LAVC$STOP_BUS.MAR で使用されます。これらのプログラムは， LAN ネットワークを制御できるだけの十分な機能を備えていますが， LAN 制御サブルーチンを使用すると，さらに LAN アダプタを管理するのに役立ちます。

# E.2 NISCA プロトコルの起動

SYS$LAVC_START_BUS サブルーチンは，指定された LAN アダプタで NISCA プロトコルを起動します。SYS$LAVC_START_BUS ルーチンを使用するには，以下のパラメータを指定します。

パラメータ | 説明
--- | ---
BUS_NAME | 参照によって渡される LAN アダプタ名バッファを表現する文字列記述子。 LAN アダプタ名は 15 文字以内でなければならない。

例: 以下の Fortran サンプル・プログラムでは， SYS$LAVC_START_BUS を使用して， LAN アダプタ XQA で NISCA プロトコルを起動します。

    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 状態

SYS$LAVC_START_BUS サブルーチンは， 表 E-2 に示すように，レジスタ R0 に状態値を返します。

表 E-2 SYS$LAVC_START_BUS の状態
状態 | 結果
--- | ---
Success | PEDRIVER が指定されたアダプタで NISCA プロトコルを起動しようとしていることを示す。
Failure | PEDRIVER が指定された LAN アダプタでプロトコルを起動できないことを示す。

## E.2.2 エラー・メッセージ

SYS$LAVC_START_BUS は，以下の表に示すエラー状態コードを返すことがあります。

状態コード | 説明
--- | ---
SS$_ACCVIO | この状態は以下の場合に返される。 引数リストにアクセスできない。 LAN アダプタ名バッファ記述子にアクセスできない。 LAN アダプタ名バッファにアクセスできない。
SS$_DEVACTIVE | バスがすでに存在する。PEDRIVER は，NISCA プロトコルのためにすでにこの LAN アダプタを使用しようとしている。
SS$_INSFARG | 指定された引数の数が不足している。
SS$_INSFMEM | バス・データ構造を作成するのに必要な非ページング・プールが不足している。
SS$_INVBUSNAM | 指定されたバス名が不正である。指定されたデバイスは，プロトコルに対して使用できる LAN アダプタでない。
SS$_IVBUFLEN | この状態値は以下の場合に返される。 LAN アダプタ名に文字が含まれていない (長さ = 0)。 LAN アダプタ名が 15 文字より長い。
SS$_NOSUCHDEV | この状態値は以下の場合に返される。 指定された LAN アダプタ名が，このシステムで PEDRIVER から使用できる LAN デバイスに対応していない。 LAN ドライバがシステムにロードされていない。 NET$AR_LAN_VECTOR の値が 0 である。 PEDRIVER が初期化されていない。PEDRIVER の PORT 構造を使用できない。 注意: このルーチンを呼び出すことにより，エラー・ログ・メッセージが作成されることがある。
SS$_NOTNETDEV | PEDRIVER が指定された LAN デバイスをサポートしない。
SS$_SYSVERDIF | 指定された LAN デバイスのドライバは，PEDRIVER で必要とされている VCI インタフェース・バージョンをサポートしない。

PEDRIVER は，指定された LAN アダプタへの接続を作成できなかったことを示す他のエラーを返すことがあります。

# E.3 NISCA プロトコルの停止

SYS$LAVC_STOP_BUS ルーチンは，指定された LAN アダプタで NISCA プロトコルを停止します。

警告: すべての LAN アダプタで NISCA プロトコルを停止すると，サテライトがハング状態になり，クラスタ・システムが CLUEXIT バグチェックで異常終了することがあります。

このルーチンを使用するには，以下の表に示すパラメータを指定します。

パラメータ | 説明
--- | ---
BUS_NAME | 参照によって渡される LAN アダプタ名バッファを表す文字列記述子。 LAN アダプタ名は 15 文字以内でなければならない。

例: 以下の Fortran サンプル・プログラムでは，SYS$LAVC_STOP_BUS を使用して，LAN アダプタ XQB で NISCA プロトコルを停止する方法を示しています。

    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 状態

SYS$LAVC_STOP_BUS サブルーチンは， 表 E-3 に示すように，レジスタ R0 に状態値を返します。

表 E-3 SYS$LAVC_STOP_BUS から返される状態
状態 | 結果
--- | ---
Success | PEDRIVER が，指定されたアダプタで NISCA プロトコルをシャットダウンしようとしていることを示す。
Failure | PEDRIVER が，指定された LAN ドライバでプロトコルをシャットダウンできないことを示す。しかし，PEDRIVER はシャットダウンを非同期的に実行するため，他の理由で PEDRIVER がシャットダウンを完了できないことがある。

LAVC$STOP_BUS モジュールが正常に実行されると，以下のデバイス・アテンション・エントリがシステム・エラー・ログに書き込まれます。

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

さらに，以下の 16 進数がエントリの STATUS フィールドに書き込まれます。

> 最初のロングワード (00000001)
> 2 番目のロングワード (00001201)

このエラー・ログ・エントリは，期待される動作を示すもので，無視してもかまいません。しかし，STATUS フィールドの最初のロングワードが 16 進数の 00000001 以外の値の場合は，エラーが発生しているため，さらに調査が必要になることがあります。

## E.3.2 エラー・メッセージ

SYS$LAVC_STOP_BUS は，以下の表に示すエラー状態コードを返すことがあります。

状態コード | 説明
--- | ---
SS$_ACCVIO | この状態は以下の場合に返される。 引数リストにアクセスできない。 LAN アダプタ名バッファ記述子にアクセスできない。 LAN アダプタ名バッファにアクセスできない。
SS$_INVBUSNAM | 指定されたバス名が不正である。指定されたデバイスは， NISCA プロトコルに対して使用できる LAN アダプタでない。
SS$_IVBUFLEN | この状態値は以下の場合に返される。 LAN アダプタ名に文字が含まれていない (長さ = 0)。 LAN アダプタ名の長さが 15 文字より長い。
SS$_NOSUCHDEV | この状態値は以下の場合に返される。 指定された LAN アダプタ名が，このシステムの PEDRIVER から使用できる LAN デバイスに対応していない。 LAN ドライバがこのシステムにロードされていない。 NET$AR_LAN_VECTOR が 0 である。 PEDRIVER が初期化されていない。PEDRIVER の PORT 構造を使用できない。

# E.4 ネットワーク・コンポーネントの表現の作成

SYS$LAVC_DEFINE_NET_COMPONENT サブルーチンは，物理ネットワーク・コンポーネントの表現を作成します。

パラメータを指定するには，以下の形式を使用します。

    STATUS = SYS$LAVC_DEFINE_NET_COMPONENT (

                      component_description,

                      nodename_length,

                      component_type,

                      lan_hardware_addr,

                      lan_decnet_addr,

                      component_id_value )

表 E-4 は， SYS$LAVC_DEFINE_NET_COMPONENT のパラメータについて説明しています。

表 E-4 SYS$LAVC_DEFINE_NET_COMPONENT のパラメータ
パラメータ | 説明
--- | ---
component_description | ネットワーク・コンポーネント名バッファを表す文字列記述子のアドレス。ネットワーク・コンポーネント名の長さは， COMP$C_MAX_NAME_LEN に指定した文字数以下でなければならない。
nodename_length | ノード名の長さのアドレス。このアドレスは，COMP$C_NODE タイプの場合は，ネットワーク・コンポーネント名バッファの先頭である。他のコンポーネント・タイプの場合は，0 を使用しなければならない。
component_type | コンポーネント・タイプのアドレス。これらの値は， SYS$LIBRARY:LIB.MLB にある $PEMCOMPDEF によって定義される。
lan_hardware_addr | コンポーネントの LAN ハードウェア・アドレス (6 バイト) を格納しているバッファの文字列記述子のアドレス。 COMP$C_ADAPTER タイプの場合は，この値を指定しなければならない。他のコンポーネント・タイプの場合は，この値は省略可能である。
lan_decnet_addr | コンポーネントの LAN DECnet アドレス (6 バイト) を格納しているバッファの文字列記述子。これはすべてのコンポーネント・タイプで省略可能なパラメータである。
component_id_value | コンポーネント ID 値が書き込まれるロングワードのアドレス。

## E.4.1 状態

正常終了すると， SYS$LAVC_DEFINE_NET_COMPONENT サブルーチンは COMP データ構造を作成し，ID 値を返します。このサブルーチンは，ユーザ指定パラメータをデータ構造にコピーし，参照カウントを 0 に設定します。

コンポーネント ID 値は 32 ビットの値であり，ネットワーク・コンポーネントとの間に 1 対 1 の対応関係があります。これらのコンポーネント ID の一覧は，パケットがあるノードから別のノードに転送されるときに使用されるコンポーネントを指定するために，SYS$LAVC_DEFINE_NET_PATH に渡されます。

## E.4.2 エラー・メッセージ

SYS$LAVC_DEFINE_NET_COMPONENT は，以下の表に示すエラー状態コードを返すことがあります。

状態コード | 説明
--- | ---
SS$_ACCVIO | この状態は以下の場合に返される。 ネットワーク・コンポーネント名バッファ記述子にアクセスできない。 ネットワーク・コンポーネント名バッファにアクセスできない。 0 以外の値が指定された場合，コンポーネントの LAN ハードウェア・アドレスにアクセスできない。 0 以外の値が指定された場合，コンポーネントの LAN DECnet アドレスにアクセスできない。 lan_hardware_addr 文字列記述子にアクセスできない。 lan_decnet_addr 文字列記述子にアクセスできない。 component_id_value アドレスに書き込みアクセスできない。 component_type アドレスにアクセスできない。 nodename_length アドレスにアクセスできない。 引数リストにアクセスできない。
SS$_DEVACTIVE | 分析プログラムはすでに実行されている。ネットワーク・コンポーネントおよびネットワーク・コンポーネント・リストを定義する前に， SYS$LAVC_DISABLE_ANALYSIS を呼び出すことにより，分析を停止しなければならない。
SS$_INSFARG | 指定された引数の数が不足している。
SS$_INVCOMPTYPE | コンポーネント・タイプが 0 であるか，または COMP$C_INVALID 以上の値である。
SS$_IVBUFLEN | この状態値は以下の場合に返される。 コンポーネント名に文字が指定されていない (長さ = 0)。 コンポーネント名の長さが COMP$C_MAX_NAME_LEN より長い。 ノード名に文字が含まれておらず (長さ = 0)，コンポーネント・タイプが COMP$C_NODE である。 ノード名の長さが 8 文字より長く，コンポーネント・タイプが COMP$C_NODE である。 lan_hardware_addr 文字列記述子の長さが 6 文字未満である。 lan_decnet_addr の長さが 6 文字未満である。

# E.5 ネットワーク・コンポーネント・リストの作成

SYS$LAVC_DEFINE_NET_PATH サブルーチンは， 2 つのネットワーク・ノード間にネットワーク・コンポーネントの方向付きリストを指定します。方向付きリスト とは，パケットがクラスタ・ネットワーク内で，障害分析ノードから他のノードに移動するときに通過するすべてのコンポーネントのリストです。

パラメータを指定するには，以下の形式を使用します。

    STATUS = SYS$LAVC_DEFINE_NET_PATH (

                      network_component_list,

                      used_for_analysis_status,

                      bad_component_id )

表 E-5 は， SYS$LAVC_DEFINE_NET_PATH のパラメータについて説明しています。

表 E-5 SYS$LAVC_DEFINE_NET_PATH のパラメータ
パラメータ | 説明
--- | ---
network_component_list | パス内の各コンポーネントのコンポーネント ID 値を格納しているバッファの文字列記述子のアドレス。ネットワーク・メッセージが通過する順に，コンポーネント ID 値を指定する。コンポーネントは以下の順に指定する。 ローカル・ノード ローカル LAN アダプタ 中間のネットワーク・コンポーネント リモート・ネットワーク LAN アダプタ リモート・ノード ネットワーク・パス内の 2 つのノードと 2 つの LAN アダプタを指定しなければならない。バッファ長は 15〜509 バイトの範囲でなければならない。
used_for_analysis_status | 書き込まれるロングワード状態値のアドレス。この状態は，このネットワーク・パスがネットワーク障害分析を行う価値があるかどうかを示す。
bad_component_id | コンポーネント・リストを処理しているときにエラーが検出された場合，エラーのあるコンポーネント ID が格納されるロングワード値のアドレス。

前へ | 次へ | 目次 | 索引