E    トークン・リング・ドライバの開発に関連する情報

この付録では Tru64 UNIX オペレーティング・システムのトークン・リング・ドライバの開発に関連する次の情報について説明します。

E.1    ソース・ルーティング

ソース・ルーティングはトークン・リング・ローカル・エリア・ネットワーク (LAN) 上のシステムが,相互接続しているトークン・リング LAN 上の他のシステムにメッセージを送信する際に使用するブリッジ機構です。 この機構では,メッセージのソースであるシステムはルート・ディスカバー・プロセスを使用してトークン・リング LAN 上の最適なルートを判別し,デスティネーション・システムにブリッジします。

トークン・リング・ソース・ルーティング・モジュールを使用するためにカーネル構成ファイルに TRSRCF オプションを追加する必要があります。 TRSRCF オプションを追加するには,次のように doconfig -c コマンドを使用します。

  1. スーパユーザのプロンプト (#) から doconfig -c HOSTNAME コマンドを入力する。

    HOSTNAME にはシステムの名前を大文字で指定します。 たとえば,システム名が host1 の場合,

    # doconfig -c HOST1
    

    と入力します。

  2. カーネル構成ファイルに TRSRCF オプションを追加する。

    カーネル構成ファイルを編集するかどうかについての質問に y と応答します。 doconfig コマンドでは ed エディタを使用して構成ファイルを編集することができます。 ed エディタの詳細についてはリファレンス・ページの ed(1) を参照してください。

    次のコードは ed エディタを使用して host1 のカーネル構成ファイルに TRSRCF オプションを追加する例です。 追加する行の番号はカーネル構成ファイルによって異なります。

    *** KERNEL CONFIGURATION AND BUILD PROCEDURE ***
     
    Saving /sys/conf/HOST1 as /sys/conf/HOST1.bck
     
    Do you want to edit the configuration file? (y/n) [n]: y
     
    Using ed to edit the configuration file.  Press return when ready,
    or type 'quit' to skip the editing session: 
    2153
     
    48a
    options         TRSRCF
    .
    1,$w
    2185
    q
     
    *** PERFORMING KERNEL BUILD ***
     
    

  3. doconfig コマンドで作成された新しいカーネルをルート・ディレクトリ (/) に移動し,システムをリブートする。

カーネルの再構築および doconfig コマンドに関する詳細は『システム管理ガイド』を参照してください。

トークン・リング・ソース・ルーティング機能は trn_units 変数が 1 以上の場合に初期化されます。 trn_units 変数はシステム上で初期化されたトークン・リング・アダプタの数を表わします。

ドライバは次のように trn_units を宣言する必要があります。

extern int trn_units;
 

attach ルーチンの最後でドライバは次のように trn_units をインクリメントする必要があります。

trn_units++;
 

ソース・ルーティング管理については『ネットワーク管理ガイド:接続編』を参照してください。

E.2    キャノニカル・アドレス

トークン・リング・ドライバがアドレスをドライバより上層に渡している間,メディア・アクセス・コントロール (MAC) ヘッダ・ファイルのデスティネーション・アドレス (DA) とソース・アドレス (SA) はキャノニカル形式であることが要求されます。

キャノニカル・フォームは最下位ビット (LSB) 形式とも呼ばれます。 キャノニカル・フォームは,最上位ビット (MSB) を最初に転送するノンキャノニカル・フォーム (または MSB 形式) と異なり,LSB を最初に転送します。 また両者には各オクテット内のビットの順序が逆であるという相違があります。

次のアドレスはノンキャノニカル・フォームの例です。

10:00:d4:f0:22:c4
 

上記のアドレスはキャノニカル・フォームでは次のようになります。

08-00-2b-0f-44-23
 

ハードウェアが MAC ヘッダのアドレスがキャノニカル・アドレスのドライバを提供していない場合,アドレスを上層に渡す前に,アドレスをキャノニカル・フォームに変換する必要があります。 次のフォーマットを含む haddr_convert カーネル・ルーチンを使用してキャノニカル・アドレスからノンキャノニカル・アドレスへの変換またはその反対の変換を行なうことができます。

haddr_convert( addr)
        unsigned char *addr

addr 変数は変換を必要とする 6 バイトのアドレスへのポインタです。 変換されたアドレスは同じバッファに返されます。

E.3    データの境界合わせ

ドライバが受信するフレームは,ルーティング情報フィールド (RIF) とデータをインクルードするメディア・アクセス・コントロール (MAC) ヘッダで構成されます。 RIF の長さは 0 バイトから 18 バイトまでの間で変化するので,RIF の後のデータがロングワードの境界に揃わないことがあります。 性能の低下を防ぐために,RIF フィールドの埋め込みを行ない,データが常にロングワード境界から開始されるようにすることをお勧めします。

図 E-1 は MCA ヘッダのコンポーネントと典型的なフレームのデータの関係を示した概念図です。

図 E-1:  典型的なフレーム

E.4    ドライバの softc 構造体のフィールドの設定

softc 構造体にはドライバに特有の情報が含まれています。

ドライバの attach ルーチンで softc 構造体の次のフィールドを設定する必要があります。

sc->isac.ac_arphrd=ARPHRD_802;

scsoftc 構造体のポインタで,ARPHRD_802 はこのインタフェースから送られたアドレス解決プロトコル (ARP) パケットで使用されるハードウェア・タイプの値です。 ARPHRD_802 の値が 6 の場合 IEEE 802 ネットワークを示します。