ECodeCenter を利用したデバッグの効率化 するプログラムはそれほど多くなく、たいていは入出力 などに時間がかかります。そのため、インタープリタを 使用しても、実用的な時間で作業ができます。それで も、大規模なプログラムのすべてのファイルをインター プリタで実行するには、無理があります。 CodeCenter ではこの点に対処するために、大規模なプログラムをデ バッグする場合には、すべてのファイルをオプジェク ト・コード (. 。形式のファイル ) でロードし、注目したい ファイルだけソースコード (. c 形式のファイル ) にする デバッグ方法をとっています。オプジェクト・コードの 部分はインタープリタで実行しないので、欠点である実 行速度の低下という問題を抑えられます。 多人数で開発するときの環境の悪さ プロジェクトが大きくなり、 1 つのアプリケーション を複数のプログラマーで開発することがあります。この ような場合、担当する部分は、個々のプログラマーがそ れぞれデバッグをおこないます。このときプログラマー は、自分の担当した部分をテストするためのダミープロ グラムを作成します。なぜなら、 C 言語によるプログラ ミングではかならす main 関数が必要で、アプリケーシ ョンは完全にリンクされた状態でなければ実行できない からです。 こで関数単体の動作チェックがおこなえたならど うでしようか。わざわざダミープログラムを作らなくて もすむため、プログラマーの負担がかなり軽減されます。 前節で説明した CodeCenter のインクリメンタル・リン 力には、もう 1 っ特徴があります。それは新しくモジュ ールを定義した場合に、そのモジュールのファイルを口 ードしてただちに実行、テストがおこなえることです。 たとえば、冪乗を求める関数を定義した場合、 int , Ⅱ ; power(num, Ⅱ ) int ー > sh cat POW ・ C i nt result ; for ( result = result * = ; return result ; 1 ; n 32 0 ; というように、関数単体の pow. c というファイルを口 ードし、即座に実行してチェックできます。 さらに CodeCenter では、インタープリタを利用した 対話的実行がおこなえます。プログラマーがキーポード から CodeCenter と対話する場所は、ワークスペースと 呼は・れています。ワークスペースでは、 CodeCenter の コマンドだけでなく、 C 言語の文の入力も可能です。つ まり、 if や for などの制御文、変数や関数の定義や宣言 が使えるのです。とくに、 X ウインドウのアプリケーシ ョンの開発では、見た目を細かく制御しなくてはならな ー > load pov. c Loading : pow ・ c ー > power(12,3) ; (int) 1728 プログラムの解析かしにくい 学習もできるでしよう。 場合によっては、この対話的な実行を使って C 言語の にチェックがおこなえます ( リスト 1 、図 8 ) 。 いので、 CodeCenter のインタープリタを使うと、簡単 UNIX MAGAZINE 1993.4 CodeCenter にロードしているモジュールの情報を ・プロジェクト・プラウザ す。これには、以下の 2 不鶤頁があります。 る、アプリケーションを視覚的に解析する機能がありま CodeCenter には、グラフィカル・プラウサと呼ばれ ューザー・インターフェイスが必要になります。 ラフィカルに表示し、マウスなどを使った操作が可能な このような場合に簡単に対処できるように、構造をグ ん。 も捜したい関数をその場で確認できるわけではありませ grep や ctags などのコマンドを使います。しかし、これ 関数が定義されているのかを調べる場合、 UNIX では ている関数がどのファイルにあるか、ファイルにどんな では、関数全体のつながりが分かりません。また、捜し で、関数の呼出しを行ごとに区切って表示します。これ ツールがあります。このツールは、テキストべースなの (System V 系 ) には cxref という参照関係を表示する 見づらいと解析しにくいものです。たとえば、 UNIX アプリケーションの解析をおこなう場合、その結果が
連載 /UNIX Communcation N0tes—⑩ なく、この優先度による選択もできるようになっていま す。 preference は 0 ~ 255 の整数て表され、値が小さい はど優先度が高いことを未します。 gated ではます preference による評価を終えてから、 メトリックによる面をおこないます。あるネットワーク に対する糸各を評価する場合、最小の preference をもつ 情報を優先します。もしも複数の情報が同し preference をもっている場合には、最小のメトリックをもつ情報を優 先します。つまり、 preference がメトリックによる詔面 よりも優先されるわけです。 52 gated の挙動によって指定を変える必要があります。 を指定しておけはいいでしよう。もちろん、トレースする traceoptions general rip update ーー搬的には、 ます。表 1 に指定可能なオプションをまとめておきます。 かな設定により必要なトレース情報だけをとることができ では、トレースにいくつかのクラスを作っており、き田 こでは実際にトレースするものを指定します。 gated traceoptions 〃 0 れ .. オーバーライトします。 た場合には、ファイル川 e れ。 me に対してトレース出力を て (append) いきます。一方、 replace を最後に指定し 出力は、指定されたファイル filename に対して書き足し トレースを出力するファイルを指定します。トレース tracefile " 五厄れ me " [replace] , ( 1 ) トレース機能の指定 これには、次のようなものが用意されています。 あとで詳細を説明します ) 。 する必要があります ( コマンド・オプションについては、 は、 gated の起重加寺にコマンド・オプションに一 t を指定 スとして何を出力するかを指定します。トレースをとるに gated に対する指定としては、 gated の動作のトレー Gated に対する指定 います。 gated がさまざまな場面で使われる理由の 1 っとなって 況での経路制御の自由度を高めています。このことも、 gated では、 preference の機構によって、複雑な状 表 1 traceoptions て寸諚できるオプション オプション all external nostamp mark task route kernel bgp egp rl P hello lcmp snmp protocol update general internal timer lex parse config 機能 nostamp 以外のすべてのオプションを扣疋 した場合と同し internal 、 external 、 route を孑旨定した場合 と同し gated の内部的な問題によるエラーに関する メッセージ 外自的な原因によるエラーメッセージ 日駭ー報 ( タイムスタンフ ) を出力メッセー ジに付けない syslog の mark と同じ機能で、 10 う爿隔で 日骸引青報を出力する gated 内部のタスク・スケジューラについて gated 内部のタイマー・スケジューラについ て窈青報 gated. conf の字旬角斤 ; のトレース gated. conf のキ冓文角斤 ; のトレース gated か第冗み込んだコンフィギュレーション・ ファイルが正しく解析されているかをチェッ クするのに有用 gated 内部で管理される経路情報テープルの トレース情報 UNIX カーネル内で管理されている経路情報 テープルの変更に対するトレース情報 BGP についての清報 EGP についての情報 RIP についての情報 HELLO についての清報 ICMP についての情報 SNMP についての情報 BGP 、 EGP を使っているときの状態崟移に ついてク月青報 受信したバケットについての情報 gated が出力するトレース情報はきわめて細かく、そのう え膨大な量になります。トレースのオプションク旨定は、目的 を慎重に考慮して決めましよう。 all を指定した出力は大変な もので、必要な情報を捜しだすのもひと仕事です。 (2)Gated の乍オプション options 0 〃 0 れ s ・ noinstall と gendefault カゞ、 0 〃 0 れ s として孑日疋で きます。これは、以下のような処理をおこないます。 ・ noinstall このオプションを指定した場合、 gated は処理を実行 します。ただし、その結られた経路情報は、カーネ ル内の経路情報テープルには反映されません。つまり、 経路制御デーモンとしての動作のチェックに有効で、と UNIX MAGAZINE 1993.4
部分文字列になっている場合などには間題が生しそうだ が、さしあたり大丈夫だろう。大文字と小文字は区別される。 From : 行の処理が終ったら、もうそのファイルは用済み close (ARGV) ; の行でクローズしてしまう。そうすると次のループでは、 引数で指定した次のファイルの処理が始まる。 なので、 ② # uget くくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくく format STDOUT dbmopen(UDB, $db = 'userdb' , undef) Ⅱ die "$db: $ ! \ Ⅱ " $logname , shift (@address) くくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくくく shift (@address) for $logname (@ARGV ? @ARGV : keys %UDB) { warn("$logname : not found in database\n") , next unless $UDB{$10gname} ; @address split ( ' , , , $UDB{$10gname}) ; shift(@address) ; write ; ( 2 ) は、データベースを検索して指定されたログイン名と のように、引数にログイン名を指定すると次の結果が得ら % uget utashiro る。 メールアドレスの組を表示するプログラム uget の例であ れる。 utashiro utashiro@sra. CO . JP utashiro@InterTech . COM もちろん、対応するメールアドレスが 1 つしかなければ 1 行しか表示されない。 実装はしつに簡単で、ます uset と同様にデータベース・ ファイルをオープンする。ただし、このときは作成する必 要はないので、 3 番目の引数は undef にしておく。 あとは、 @ARGV で指定されたユーサー名ごとに対応す る % UDB のエントリが存在すれは、それを表示するだけ である。表示には前号で説明した format 機能を使用し た。 format STD 〇 UT の 2 行目では、 @address という 配列の要素がなくなるまでその内容を出力することを指定 している。 @ARGV が 1 つもなかった場合、つまり引数が指定さ れなかったときには、データベースの内容をすべて表示す るようにしてある。キーのリストを得るために、 134 # 最初の要素は飛ばす keys %UDB UNIX MAGAZINE 1993.4 ていることが多い。 テキスト形式のデータと dbm のデータの両方が用意され てしまうことだろうか。実際に曲 m が使われる場面では、 ので、 UNIX の標準的なツールではアクセスできなくなっ 間題になりそうなのは、データがテキスト形式ではない ので、プログラムの構造もシンプルになる。 データの登録と検索はたんなるデータの参照でおこなえる 方の問題が同時に解決できるというわけである。しかも、 量がそれぞれ問題になる。 dbm を使うことにより、この両 オーバーヘッドが、後者では連想配列が使用するメモリの 想配列にすべてのデータを読み込む。前者の場合は検索の サー名を捜しながらファイルをスキャンするか、最初に連 述しておくことになる。 uget では、引数で与えられたユー 普通のテキストファイルにログイン名とアドレスの組を記 だろうか。 uset と uget を曲 m を使わすに作るとしたら、 これで、すこしは具体的なイメージを擱んでいただけた データではないのでかまわないだろう。 each を使うのが望ましい。今回の場合はそれほど大きな タベースになるとこの式の出力は膨大な量になるので、 という方法を使っているが、前述したように、大きなデー
使い方の簡単な dbx. el のほうから説明しましよう。 GNU Emacs のなかで dbx. el により提供される機能を 使うには、最初にこの Emacs Lisp のファイルを読み 込まなければなりません。そのためには、 GNU Emacs の上で次のコマンドを実行します 1 。 M—x load-library すると、読み込むライプラリ名を訊いてくるので、 Load library : dbx と入力します。これで、ライプラリ ( 機能拡張用のファ イル ) か読み込まれます。この状態で dbx 関連の操作 を GNU Emacs のなかから実行できます。次に M-x run—dbx とすると、デバッグするファイル名を訊かれたあとに新 たなバッフアが開かれ、そこで dbx か起動されます。 dbx 用に作られたバッフアで、基本的にはこれまで に紹介したのと同し方法で dbx を利用するのですが、 dbx. el ではたんに dbx を GNU Emacs のなかから 実行するだけでなく、デバッグ中のプログラムのソー スコードを別のバッフアで表示し、現在 dbx で実行し ているソースコードの場所が表示できます。このため には、 dbx—trace—mode (C—c C—t) コマンド 2 を実行してトレースモードにします。する と、プログラムの実行が始まった段階でソースファイ ルのバッフアが開かれ、注目している行の先頭には、 という表示が出ます。 このあと、 step サプコマンドや next サプコマンドを実行すると、この矢印は実行の流 れに沿って移動し、注目している行を表示し続けます。 トレースモードにしていなくても、 dbx—where (C—c w) というコマンドを実行すると、注目している行が同様に 表示されます。ただしこの場合は、 dbx のサプコマンド 1 M-x はメタキーに続いて x を入力することを表します。 2 括弧内は対応するキーバインドを示します。 c ーは、コントロールキー 116 を表します。 で注目する行が移動しても、画面の表示は dbx-where を発行したときのまま変化しません。 もう 1 つ準備されているコマンドは、ソースファイ ルのなかで用いるもので、特定の行で、 dbx—stop—at (C—c C—@) というコマンドを実行すると、カーソルがある行にプ レークポイントを設定します。こうすると、画面上で 見て設定したい位置を確認できるので、行番号などを 調べる必要はありません。 一方、 gdb. el は、 dbx. el にくらべるとより多くの機 能か準備されています。こちらもその起動方法から説明 します。 gdb を GNU Emacs のなかから起動するには ( そのサイトの設定にもよりますが ) 、 M—x gdb と入力します ( 設定によっては、 dbx. el と同様に load- library の実行が必要な場合もあります ) 。すると、デ バッグするファイル名を訊かれたあとに新たなバッファ カ鯛かれ、そこで gdb か起動されます。 新しく gdb 用に作られたバッフアのなかで、 gdb を そのまま使うこともできますが、 dbx のときのように 実行に合わせたソースファイルの表示ができます。 dbx ではコマンドを実行しないと表示されませんが、 gdb の 場合は、プログラムの実行を開始するだけでソースファ イルが表示されます。このときも、知頁に という記号カ咐けられて注目している行が示されます。 ソースファイルのなかで、 dbx と同様にプレークポ イントを設定するコマンドも用意されています。 gdb-break (C—@) コマンドを実行すると、現在カーソルがある行にプレー クポイントか設定できます。 こまでは dbx の場合とほとんど同しです。このほ かに gdb には、簡単なキー入力だけでサプコマンドを 実行する機能が備わっています ( 表 1 ) 。 これ以外にも、簡単に gdb のサプコマンドをキーに マップする機能や、よく使う式を簡単に入力するコマ ンドなどか準備されています。 backtrace (dbx では UNIX MAGAZINE 1993.4
連載続ウインドウ・システムについて一① 図 4 使用されている色の範罠或念 BLUE 255 RGB 値の範囲空間 255 RED 255 間に位置しているにもかかわらす、たった 1 画素だけが RGB 値空間を均等に分割すると、グレースケール刎列 とても遠いところにあると、結果として得られる範囲領域 でも示したように、原画像の色の傾向によっては画質がか はかなり大きなものになってしまう。したがって、この範 なり悪くなる。カラーでも原画像で使用されている色の範 囲領域を等分に分割しても、そのほとんどの点カイ吏われな 囲のみを 256 に分割したはうか効冫勺だ。そのためには、 いことになる。 8 ピット PseudoCoIor のディスプレイ ます原画像が使用している色の範囲を RGB の 3 次元空 で、最大限画質を低下させすに色数を圧縮するには、原画 間内で特定する必要がある。これには、原画像のすべての 像の色の傾向を効果的に活用しなければならない。 画素について R 、 G 、 B それぞれの最高輝度値と最低輝度 値を求め、それらで囲まれる直方体を、使用されている色 こで、最大限画質を系財寺しつつ、しかも上交的高速 の範囲領域とするガ去がある。図 4 にこの様子を示す。 に処理できる色数圧縮方法を紹介しておこう。それは、 X でさまざまな画像を簡単に扱えるフリー・ソフトウェア ー殳にこのように定めると、色の範囲領域を表す直方体 xloadimage で、 Pseud0C010r のディスプレイにイメ の各辺の長さは異なる。図 4 でいうと、図中の範囲領域は ージを表示する際に利用されているアルゴリズムである。 RED 軸中に占める割合がもっとも少なく、 GREEN 軸中 に占める割合がもっとも多くなっている。このような状況 xloadimage では、扱う画像はかならす独自の内部デー では、 RGB 各軸を均等に分割する ( それぞれの軸につい タ・フォーマットに変換される。この内部データ・フォー て 6 階調に分割 ) ことの是非を考えるべきである。図のよ マットは、 1 つの画像力イ吏用しているすべての RGB 値の うな場合は、 RGB 各軸を 6X7X6 、または 5X7X7 程度 組合をを列挙した RGB マップと、そのマッフ。へのイン に分割したほうがよりよい画質カ碍られる可能性か高い。 デックス値を各画素のピクセノ直としてもつイメージデー タからなる。これは、 PseudoColor の考え方とほとんど 高速て果的な色縮 同しだが、 RGB マップのエントリ数に制限がなく、原 画象に含まれている色数ぶんのエントリを含められる点が こまで説明してきたガ去は、理言勺にきわめて正確か 異なる 6 。このようなフォーマットでイ尉寺されている画像 っ素直で、結果として正しい表示カ碍られる。しかし、輝 データを、 8 ピット PseudoCoIor のディスプレイに表示 度値の変換やデータの変換などの処理がかなり煩雑で、高 する場合、 RGB マップ内の色数 7 を調べ 256 以なら 速処理は望めない。また、原画像の使用する色空間全体を 等分に分割してしまうので、原画像のデータの傾向によっ 5 xloadimage は、 Jim Frost によってイさオびこフリー・ソフトウェ アで、 X11R5 の contrib ディストリピューションに含まれている。 ては得られる画廣か物端に低下することもある。 6 実際ま、まったく同し内容をもっェントリが、重複していても正しく処理 たとえば、原画象の使用する色空間を - E のような単純 される。したがって、原可象に含まれている色別リ」 :. のマップエントリが あってもかまわない。 な直方体領域として定めた場合、ほとんどの画素カ啾い空 66 UNIX MAGAZINE 1993.4
連載 /UNIX Communication Notes—⑩ プロトコルに対するオプションを指定する場合には、さ らにプロックを付加して記述していきます。オプションと しては、以下のものが用意されています。 preference P RIP によって得られた経路情報の preference を P に 設定します。何も指定しない場合、 RIP から得られた 経路・情報の preference は 100 に設定されます。この 値を変更したい場合にこれを用います。 defaultmetric ル・ このオプションはめったに使うことはないでしよう。 gated において RIP 以外のプロトコルと併せて使用す る場合に用います。他のプロトコルから得られた糸習青 報を RIP でアナウンスする場合に、その経路情報に対 するメトリックをルに設定します。何も指定しない場 合は 16 がメトリックとして使われます。 interface addr norlpin interface addr noripout interface addr noriplll noripout RIP を送信しないインターフェイスや受信しないイン ターフェイスを指定します。祠に指定されたイン ターフェイスに対して noripin を付けた場合には、 そのインターフェイスからは RIP を受信しません。 noripout を付けた場合には、そのインターフェイス に対して RIP を送信することはありません。 両方を同時に指定することもできます。また複数のイン ターフェイスを指定したいときには、靃市の部分にイ ンターフェイス・アドレスを空白で区切って並べます。 このオプションは ISDN による IP 接続をする際に その回線に対して RIP を流さないような指定をしたい ときに便利です。 trustedgateways 9 〃 st ・ 信頼できるゲートウェイを指定します。ここで指定し たゲートウェイから送られてきた RIP メッセージは採 用し、それ以外から送られてきた RIP メッセージは無 視します。複数のゲートウェイを指定したいときには、 9 騰 t にゲートウェイのアドレスを空白で区切って並 べます。 この指定がないと、すべてのホストから送られてきた RIP メッセージを処理します。 54 sourcegateways 4 〃 s ・ モードとして pointopoint を選択した場合には、 に指定されたゲートウェイとのみ経路情報の交換をおこ ないます。複数のゲートウェイの指定は、 gwlist にゲー トウェイのアドレスを空白で区切って並べます。 static { 述をします。 次に青知勺糸翻殳定をおこないます。これは次のような記 青鎚勺経路設定 UNIX MAGAZINE 1993.4 ガ去があります。これらは混在させて言当できます。 accept を用いて指定します。この言己には次の 3 不頁の 受信した RIP メッセージをどのように処理するかは、 受信した RIP メッセージの里 を記述します。 送信する RIP メッセージの処理のカ 1 去 ・受信した RIP メッセージの処理のガ去 最後に経路情報の取扱いについて、 経路情報の取扱いの指定 れます。 静的に設定された経路情報の preference は 50 に設定さ どちらの記述でも preference を指定しない場合には、 おこなうこともできるのです。 ドレスを割り当て、その間の糸各制御を gated を用いて えば、 1 本の Ethernet に対して 2 つのネットワーク・ア トワーク・アドレスをサポートするときに使います。たと で、 1 つのネットワーク・インターフェイスで複数のネッ 2 番目の記述方法はインターフェイスを指定するもの ます。 定します。必要ならば preference を設定することもでき スト赤靃 r に対するゲートウェイとして協 d 市を指 イを指定するものです。つまり、目的のネットワーク / ホ 最初のガ去が通常よく使われるもので、ゲートウェ 青勺経路を設定する言当ガ去は 2 つあります。 dstaddT ・ interface 佖 d 市・ [preference P] ・ dstaddr gateway gwad 市、 [preference ;
連載 . / UN Ⅸ Communcation Notes nolisten addT 、・ 送信する RIP メッセージをどのように処理するかは 送信する RIP メッセージの里 なわち、より詳しく書かれているものを優先します。 ごとの記述、一殳的なの順番でおこなわれます。す 評価は、ゲートウェイごとの言当インターフェイス 3. accept によるか複数ある場合 カ甘旨定されていると仮定します。 nolisten a11 ; gat ed は取に 2. ルに 1 つでも指定された場合 カ甘旨定されているものと考えます。 listen a11 ; gat ed は、 1. ル st が何も指定されていない場合 accept の言当ではいくつかの注意が必要です。 すべてのアドレスを指定します。 a11 よって除去することが - 可能です。 ネットに関する糸各情報か送られてきたとき、マスクに マスクした結果を処理します。たとえは闕係のないサプ net に指定されたアドレスに対して、 mask によって net mask m ん れ et にネットワーク・アドレスを指定します。 靃市・の指定には 3 不亟頁のガ去があります。 されます。 佖 d 市・に指定されたアドレスについての糸習各情報は無視 56 すべてに関する処理を指定します。 この言当をおこなった場合、送信する RIP メッセー propagate proto rip { ( 1 ) →殳的な言謎 以下の 3 不頁の方法があります。 propagate を用いて指定します。 propagate の記述に ( 2 ) インターフェイスごとの記述 propagate p て 0t0 rip interface 2 ガな [metric M] { ツ角 s ロこ指定されたインターフェイスから送られる RIP メッセージに関する処理を言当します。 にはインターフェイス・アドレスを指定します。 複数のインターフェイスを指定する場合には、空白で区切 りながらインターフェイス・アドレスを並べます。送ら れる RIP メッセージのメトリックを指定することも可能 で、これを記述した場合には、指定されたインターフェイ スから送られる RIP メッセージに含まれる経路情報のメ トリックを M に設定します。 ( 3 ) ケートウェイごとの記述 propagate p て 0t0 rip gateway 市 [metric M] { 市に指定されたゲートウェイに対して送られる RIP メッセージに関する処理を記述します。 9 騰 t には、 RIP メッセージを送るゲートウェイのア ドレスを指定します。複数のゲートウェイを指定する場合 には、空白で区切りながらゲートウェイのアドレスを並べ ます。送られる RIP メッセージのメトリックを指定する ことも可能です。これをした場合は、指定されたゲー トウェイに送られる RIP メッセージに含まれる糸青報 のメトリックを M に設定します。 送信する RIP メッセージをどのように構成するかを指 定するのが騰 t です。なとしては次の構文が用意され ています。 proto 0 [metric M] [ { proto 0 interface 乞ガな [metric M] [ { proto のリ gateway gwslist[metric M] [ { UNIX MAGAZINE 1993.4
rip yes accept proto rip nolisten N; listen a11 accept proto rip listen N nolisten a11 連載 /UNIX Communication Notes . 2 { . 3 { リスト 7 ミ尺的なリンク吏用 gateway gateway 133. 1 . 192 133. 1 . 192 通信には、セキュリティの面からホスト B からのリンク だけを使い、ほかの通信はすべてホスト A を経由させる ということはしばしはあることでしよう。 このときの gated. conf はリスト 7 のように記述する ことができます。 gated. conf の記述上のラも こで gated. conf を記述する場合の注意点を示して おきます。 1. 経路制御でしなければならないことをよく考える なぜ gated を使用するのかを十分に考え、目的を明確 にしておくことが重要です。 2. ネットワークの状況を正しく理解する たとえは、デフォルト経路を生成するような設定をし た場合、それがほかのネットワークに及ばす影響につ いて理解しておかねはなりません。さらに、どのような ネットワークカ甘妾続されているのか、どのネットワーク を利用できるのか、隣接するゲートウェイはどんなセッ トアッフになっているのか、ということの理解も必要 です。 3. 方針を決める gated を利用して複雑な糸登各制御をおこなう場合には、 ネットワーク全体として整合性をとる必要があるので方 針を決めなくてはなりません。関係するネットワークや ゲートウェイでもその方針に合致した管理を依頼しなけ ればなりません。 4 ・ gated ・ conf の言当は性善説か匪悪説か accept の記述は、、無視するものを記述する " 方法と、 、、受け入れるものを記述する " という 2 つのアプローチ があります。前者の方法が制限の緩い当になります。 どちらの方法を選ぶかで、 gated ・ conf の記述量と管 理に及はす景彡響も違ってきます。 60 5. preference は最後の手段 preference による経路↑青報の選択的な利用はとても便 利です。しかしながら、 RIP を用いる場合はメトリッ クによる評価が基準です。メトリックによる評価では うまくいかない場合にかぎり preference を使うべきで Gated の起動と管理 こでは gated の起動方法と管理について説明します。 Gated の起動 gated ・ conf の言当ができたら gated を起動します。 gated には以下のようなコマンド・オプションが用意さ れています。 コンフィギュレーション・ファイルの去チェックを おこない、結果をファイルにダンプして終了します。ダ ンプされるファイルは、通常 /usr/tmp/gated-dump です。 複雑な gated. conf を記述した場合の、第 1 段階の チェックとして重宝します。 実際の経路情報の交換を、謝妾するゲートウェイとおこ ないます。しかしながら、 UNIX カーネル内部の経路 情報テープルには、処理結果を斑央させません。このオ プションは、言当した gated ・ conf が実際の環境に対 応できるかをチェックするときに有用です。 ー t0 な gated をトレースモードで動かします。トレースファイ ルは、 gated のコマンド引数にファイル名を言当して指 定します。たとえば、 # gated —t /usr/tmp/gated—trace のように指定すれば、 /usr/tmp/gated-trace にト レース情報が出力されます。ファイルを指定しなけれ ば、 tracefile に指定したファイルに対して出力をおこ ないます。また、ファイルの指定がない場合には、ト レース情報は標準出力に対して出力されます。 UNIX MAGAZINE 1993.4
ワークステーションの基礎知識 ( 4 ) 図 5 ハードディスクの SCSI Host Bus Read/Write Con 01 SCSI lnterface SCSI lnterface SCSI host Adapter Access Arm Control Hard Disk Controler lnterface Circu1t SCSI Adapter SpindIe M0tor Control 、 vorkstation Hard Disk Bare Drive SCSI Hard Disk Device 付いているコントローラ基板に ) 納める方式か主流になり つまり、、、セクタサイズ 512 バイト " というのか物理 ました。 フォーマットであり、ある物理フォーマットに従ってディ このようにハードディスク・コントローラを内蔵する スクにセクタ ID を書き込んでゆくことを、、フォーマッ トする " といいます。現在出荷されているディスクはほと ディスクドライプを、エンべディッド (embedded) ・ディ スクと呼びます。 SCSI の場合は、エンべディッド SCSI んどがフォーマット済みであり、ユーザーか再度フォー ディスクと呼びます 4 。 マットする必要はありません。 ューサーがフォーマットする必喫があるのは、以下のよ SCSI ディスクを接続する場合、 WS 側にも SCSI ア うな場合です。 タフ。タが必要ですが、現在の WS はははすべてが SCSI アダブタを内蔵していますから追加購入の必要はありませ ・工場出荷と異なるセクタサイズで使用する場合 ん。ただ、接続するディスクの台数が多いときや、高い生 512 バイト / セクタのディスクがはとんどなので UNIX 能を要求される場合には、 2 つ目 3 つ目の SCSI アタブタ で必要になることは稀です。 を WS に追加する必喫か生しることもあります。 ・ディスクのセクタ ID か消えるような事故か起きたとき ・ディスクに使用不能領域ができたとき ディスクのフォーマット フォーマット操作でもう 1 度 ID を書き直せは使える場 合があります。また、物理的に損傷して使用不能になっ た領域を避けて使うための措置の一環として、フォー マットすることもあります。 ・ディスクの設置方向を変えたとき 縦置きから横置きに、あるいは逆にディスクの設置方向 を変えた場合には、再フォーマットするように指示され ることがあります。個々のディスクのマニュアルなど を参照してください。 筆者の個人的見解ですが、ハードディスクのフォーマ ットは必要に迫られたとき以外はしないほうがいいようで フォーマットという言葉の指す範囲と format コマン ドでできることには、かなりの幅があります。ここでは、 簡単に整理します。 物理フォーマット UNIX でハードディスクのフォーマットというと、通 常は物理フォーマットを指します。 4 PC (IBM PC/AT) の世界では、 IDE というエンべディッド・ディ スクが代表的てす。これは IBM PC/AT の内部バスにほとんどそのま ま孑Æできるもので、 IBM PC 用にノードディスク刎瑟種を作っても引 き合うはどの市場があることの証左ですれ 83 UNIX MAGAZINE 1993.4
連載 /UNIX Communication Notes—O くに複雑なコンフィギュレーションをしたときに トレースと組み合わせて使うと便利でしよう。 ・ gendefault デフォルト糸登各を生成します。デフォルト経路はワイ ルドカード指定の糸各です。前号でも説明したように カーネル内の糸各情報テープルを検索して目的のネット ワークやホストに対する糸習剳青報がない場合、デフォル ト経各て指定された経路を用いて IP データグラムをル ーティングします。デフォルト糸各を生成するホスト は、たいていのネットワークではある特定のホストに 設定されています。したがって、このオプションを指 定する場合は注意が必要です。 ( 3 ) インターフェイスに対するオプション interface tflist 0 〃 0 れ s ・ こではインターフェイスに対するオプションを指定し ます。次のものか指定できます。 metric ル 指定したインターフェイスのメトリックをルに設疋し ます。 preference P このインターフェイスから得られた経路情報の優先度 (preference) を P に設定します。 passlve この指定をしたインターフェイスについては、どのよう な状態でも正常に重川信していると仮定します。前号でも 説明しましたが、 RIP におけるポイント・ツー・ポイ ント型のインターフェイスでは、相手側のゲートウェイ と定期的に RIP メッセージを交換して、インターフェ イスが、、生きている " かどうかの判定に利用していまし た。 passive を指定したインターフェイスでは、 RIP メッセージが 1 つも到着しなくても、そのインターフェ イスは利用可能だと仮定して処理するわけです。 ( 4 ) 無視するアドレスの列挙 martians { 佖 d 市・ ; addl 、 ; 靃市・には、処理上っねに無視するネットワーク・アドレ スやホストアドレスを指定します。複数のアドレスを指定 UNIX MAGAZINE 1993.4 表 2 プロトコルに対する諚て尺できるモード pointopoint モード yes Ⅱ 0 off quiet supplier 機能 RIP を用いて糸各制御をおこなうことを表 す。この場合、ルーフ。バック以、タ V ) ネット ワーク・インターフェイスが 1 つしかない システムでは、 RIP メッセージをネットワ ークに出力しない。一方、ネットワーク・イ ンターフェイスか数ある場合は RIP メ ッセージを出力し、隣接するゲートウェイ と経路情報の交換をおこなう yes と同し RIP は用いないことを表す Ⅱ 0 と同じ 複数のネットワーク・インターフェイスが あっても、 RIP メッセージを出力しない。 いわゆる、 quiet" モードて新川する quiet とは逆に、ネットワーク・インター フェイスの数に関係なく RIP メッセージ を生成してネットワークに送信する これがモードとして指定された場合には、 sourcegateways に指定したゲートウェ イに対してのみ RIP メッセージを送信す る する場合は、アドレスをセミコロンで区切って並べます。 ここて指定されたアドレスについては、たとえ情報か渡さ れても、 gated はいっさいの処理をおこないません。 プロトコルに対する指定 プロトコルに対する指定では、 gated が扱えるプロトコ ルごとに、各プロトコル特有の指定をします。 gated では HELLO 、 BGP 、 EGP なども扱えるので、それらに対 する指定方法もありますが、今回は RIP についての記述 ガ去を示します。 rip mode [ { preference P ・ defaultmetric 〃・ interface 佖 d 市、 [noripin] trustedgateways gwlist ・ sourcegateways gw 〃 s め・ [noripout] 最初が mode の指定です。ここに拓疋できるモードを 表 2 にまとめます。 通常は yes を指定します。また supplier は、ネット ワーク・インターフェイスが 1 つしかないホストで、静 的に設定した経路情報をアナウンスしたい場合などに使い ます。 53