ISDND(8)

名称
isdnd - isdn4bsd ISDN 接続管理デーモン

書式
isdnd [-c configfile] [-d debuglevel] [-f] [-F] [-l] [-L logfile] [-P] [-r device] [-s facility] [-t terminaltype] [-u charging unit length] [-m]

解説
isdnd ユーティリティは isdn4bsd パッケージのデーモンであり、 このパッケージがサポートする ISDN デバイスのすべての ISDN 関連の接続や切断を管理します。

オプションは以下の通りです:

-c  デフォルトのファイル /etc/isdn/isdnd.rc の代わりに、 configfile を isdnd の実行時設定ファイル名として用います。

-d  isdnd がデバッグ機能をサポートするようにコンパイルされている場合に、 このオプションを使ってデバッグレベルを指定し、 どの種類のデバッグメッセージを表示するかを設定します。 デバッグレベルには次の値の和を指定します:

    0x001
        一般的なデバッグ。
    0x002
        料金計算。
    0x004
        タイミング計算。
    0x008
        状態移行。
    0x010
        再試行操作。
    0x020
        ダイヤル。
    0x040
        プロセス操作。
    0x080
        isdn4bsd カーネルの入出力呼び出し。
    0x100
        コントローラとチャネルのビジー/フリーメッセージ。
    0x200
        設定ファイル isdnd.rc の処理。
    0x400
        発呼の予算処理。
    0x800
        有効なキーワードと休日ファイルの処理。

    この値の指定に際して、 sscanf(3) ライブラリルーチンがサポートする基数のどれでも使用できます。

    さらに、このオプションでは引数として文字「n」を与えて、 全画面表示にデバッグメッセージを表示させないようにもできます。

-f  このオプションを指定すると、 isdnd は全画面モードでの操作に切り替わります。このモードで操作する場合、 制御文字 Control-L を入力すると表示を更新します。また、 復帰文字 (Carriage-Return) または Enter でコマンドウィンドウを表示します。 isdnd ユーティリティは コマンドウィンドウが開いている間はメッセージを受け付けないので、 5 秒間どのコマンドキーも押されなければ、 このコマンドウィンドウは自動的に閉じます。

    コマンドウィンドウが開いている時は、 タブ か スペース で次のメニュー項目へ進みます。コマンドを実行するには、 ハイライト表示されたメニュー項目に対し Return か Enter を入力するか、実行する項目に対応する数字を入力するか、 メニュー項目記述の大文字を入力して下さい。

-l  このオプションが指定されると、ログは syslogd(8) ファシリティ経由ではなく、ファイルに追加書きされます。

-L  オプション -l が指定されている時に使用されるログファイルの名前を指定します。 isdnd.rc(5) のシステムセクションのキーワード rotatesuffix も参照してください。

-P  このオプションは、解析され有効になった isdnd の設定を isdnd.rc ファイルと同じ書式で出力します。 この出力は isdnd.rc ファイルとして利用できます。 isdnd.rc をデバッグする際に、 isdnd.rc 入力ファイル中で設定していないオプションのデフォルトの設定は 何かを調べる場合、この機能は特に有用です。

    出力を終えると、 isdnd は終了します。

-F  このオプションは、 isdnd が制御端末から離れてデーモンにならないようにします。

-r  -t オプションとともに用いられ、 device で端末デバイスを指定します。これが isdnd の制御端末となり、ここに全画面モードの出力が表示されるようになります。

-s  syslog(3) によるログが設定されていて、 デフォルトの LOCAL0 ファシリティ以外のファシリティを使いたい場合に、 このオプションを用いてログファシリティを指定できます。 ファシリティは 0-11 または 16-23 の範囲の整数で指定します (ファイル /usr/include/syslog.h を参照)。

-t  オプション -f と -r と共に用いられ、 isdnd の全画面出力に使われるデバイスの端末タイプか termcap エントリ名 (vt220 など) を terminaltype で指定します。 このオプションは、環境変数 TERM が存在しない、未使用の (getty が動いていない) tty 回線を 全画面出力に使う場合に有用です。

-u  設定ファイルのエントリキーワード unitlenghtsrc が cmdl に設定されている場合に、課金単位の長さを指定します。

-m  isdn デーモンが、ローカル監視またはリモート監視を サポートしてコンパイルされていれば、 このオプションは監視アクセスをすべて無効にします。 これは設定ファイルのオプション monitor-allowed よりも優先されます。

カーネルとのやりとり
isdnd ユーティリティは isdn4bsd のカーネル部分と通信して、 状態やイベントメッセージを受けとったり (デバイス /dev/i4b から read(2) します)、 コマンドや応答を送ります (デバイス /dev/i4b から ioctl(2) します)。

メッセージおよびメッセージパラメータは、インクルードファイル /usr/include/machine/i4b_ioctl.h に記述されています。

カーネルへのコマンドと応答メッセージ (ioctl) は次のものがサポートされています:
I4B_CDID_REQ
    交換局とのローカル D チャネルの単一のやりとりを一意に識別する 呼記述識別子 (CDID: Call Description IDentifier) を要求します。
I4B_CONNECT_REQ
    呼設定 (call setup) をリモート ISDN 加入者 (subscriber) に能動的に要求します。
I4B_CONNECT_RESP
    着呼 (incoming call) に対し、受け入れ、拒否、または無視すると応答します。
I4B_DISCONNECT_REQ
    能動的に呼を終了させます。
I4B_CTRL_INFO_REQ
    設置されている ISDN コントローラカードについての情報を要求します。
I4B_DIALOUT_RESP
    ダイヤルアウトを要求してきたドライバに対し、 呼設定に関する情報を与えます。
I4B_TIMEOUT_UPD
    動的に計算されるショートホールドモードのタイミングが変わった場合に、 カーネルのタイムアウト値を更新します。
I4B_UPDOWN_IND
    カーネルのユーザランドドライバにインタフェースのソフト的 アップ/ダウン状態変化を知らせます。
I4B_CTRL_DOWNLOAD
    アクティブなカードにファームウェアをダウンロードします。
I4B_ACTIVE_DIAGNOSTIC
    アクティブなカードからの診断情報を返します。

カーネルから送られる状態メッセージとイベントメッセージは、 次のものがサポートされています:
MSG_CONNECT_IND
    リモートの ISDN ユーザからの着呼を示します。
MSG_CONNECT_ACTIVE_IND
    着呼がローカルで受け入れられた後、 あるいは発呼 (outgoing call) がリモートに受け入れられた後で、 交換局がアクティブ接続を通知しました。 対応する B チャネルが交換されます。
MSG_DISCONNECT_IND
    呼は終了しました。
MSG_DIALOUT_IND
    ユーザランドインタフェースドライバがデーモンに ダイヤルアウトするよう要求します (典型的には、ネットワークインタフェースの送信キューにパケットが届く時です)。
MSG_IDLE_TIMEOUT_IND
    B チャネルのアイドルタイムアウトが起こったために、 isdn4bsd カーネルドライバが呼を終了させました。
MSG_ACCT_IND
    ネットワークドライバからのアカウンティング情報です。
MSG_CHARGING_IND
    カーネルからの課金情報です。

  発呼
現在のところ、発呼を起こす唯一の可能性は、 isdn4bsd ネットワークドライバ (ipr<n>) が MSG_DIALOUT_IND を isdnd ユーティリティに送ることです。

デーモンは ioctl メッセージ I4B_CDID_REQ を用いて、カーネルから新しい CDID を要求します。 以後この CDID は、切断が起こるまで、カーネルとのやりとりすべてにおいて、 この単一の呼を識別するのに使われます。

CDID を取得した後、 デーモンはその接続に対応する設定のエントリセクションから 追加情報をいくつか調べ、ioctl メッセージ I4B_CONNECT_REQ をカーネルに発行します。 ここでカーネルはリモート側へダイヤルし、 リモート側が呼を受け入れると、カーネルはデーモンへ MSG_CONNECT_ACTIVE_IND を送ります。

ローカルサイトがタイムアウトするかリモート側が接続を切る、 あるいはローカル側が能動的に ioctl メッセージ I4B_DISCONNECT_REQ を送ることで、呼は終了します。 いずれのイベントも、カーネルが I4B_DISCONNECT_IND メッセージを送って isdnd に通知されます。また、その呼に対応する CDID は無効になります。

  着呼
着呼は、カーネルが MSG_CONNECT_IND メッセージを送って isdnd に通知します。

isdnd は、このメッセージに含まれる情報を使って 設定データベースのエントリセクションを探し、 マッチした場合にはその呼を受け入れる、または拒否し、 マッチしなかった場合にはその呼を無視します。 いずれの場合にも ioctl メッセージ I4B_CONNECT_RESP に適切なパラメータを指定して、カーネルに発行します。

デーモンが呼の受け入れを決めた場合、カーネルは MSG_CONNECT_ACTIVE_IND メッセージをデーモンに送って、このことを通知します。

ローカルサイトがタイムアウトするかリモート側が接続を切る、 あるいはローカル側が能動的に ioctl メッセージ I4B_DISCONNECT_REQ を送ることで、呼は終了します。 いずれのイベントも、カーネルが I4B_DISCONNECT_IND メッセージを送って isdnd に通知されます。また、その呼に対応する CDID は無効になります。

シグナル
HUP シグナルを isdnd に送ると、開いている接続をすべて終了させ、設定ファイルを読み直します。 エイリアスファイル操作が有効な場合、エイリアスファイルも読み直します。

USR1 シグナルを isdnd に送ると、アカウンティングファイルと ( syslog(3) ファシリティ経由のログの代わりにファイルへログが送られる場合は) ログファイルがクローズされ、再オープンされて、ログファイルの 交換を可能とします。

環境変数
次の環境変数が isdnd の実行に影響します:

TERM
    全画面表示モードで実行される時の端末タイプです。 より詳しくは environ(7) を参照して下さい。

関連ファイル

/dev/i4b
    カーネルの ISDN ドライバサブシステムと通信するためのデバイスファイル。

/var/log/messages
    syslogd ログがサポートされている時の動作記録。

/var/log/isdnd.acct
    デフォルトのアカウンティング情報ファイル名 (アカウンティングが設定されている場合)。

/var/log/isdnd.log
    デフォルトのログファイル名 (ファイルへのログに設定されている場合)。

/var/run/isdnd.pid
    isdn デーモンのプロセス ID (isdnd では "lockfile" とも呼ばれ、多重に呼び出されるのを防ぎます)。

/usr/local/lib/isdn

/etc/isdn
    留守番電話をサポートするための補助的なデータファイルやプログラムが 置かれていることを isdnd が期待するディレクトリ。

/etc/isdn/isdnd.rc
    デフォルトの実行時設定ファイル。

/etc/isdn/isdnd.rates
    デフォルトの課金単位料金記述ファイル。

/etc/isdn/isdntel.alias
    (エイリアスが有効な場合) 電話番号を通話者の名前に変換するデフォルトの表。

使用例
最初に試されるときは、設定をうまくデバッグするために、 次のコマンドを実行して isdnd をフォアグラウンドモードで起動するのが良いでしょう:

    isdnd -d0xf9 -F

このコマンドは、isdnd を妥当なデバッグ設定で起動し、 現在の端末に出力を生成します。 isdnd ユーティリティはその後 Control-C の入力で終了できます。

別の例として、コマンド:

    isdnd -d0xf9 -f -r /dev/ttyv3 -t vt100

は、妥当なデバッグメッセージを有効にし、全画面モードの動作、 全画面表示は /dev/ttyv3 にリダイレクト、その表示には vt100 用の termcap エントリを使って isdnd を起動します。

診断
終了ステータスは成功時には 0、エラー時には 1 です。

関連項目
i4bing(4), i4bipr(4), i4bisppp(4), isdnd.rates(5), isdnd.rc(5), isdntel(8), isdntrace(8), syslogd(8)

バグ
まだ 1 つ以上残っています。

作者
isdnd ユーティリティと本マニュアルページは Hellmuth Michaelis <hm@freebsd.org> が作成しました。