ネットワークインタフェース

プロトコルに依存しない処理に関する指針

XTI/TLI が提供する一連のサービスは、多くのトランスポートプロトコルに共通であり、XTI/TLI を使用すると、アプリケーションはプロトコルに依存しない処理が可能になります。しかし、すべてのトランスポートプロトコルが XTI/TLI をサポートしているわけではありません。ソフトウェアをさまざまなプロトコル環境で実行する必要がある場合は、共通のサービスだけを使用してください。なお、次に示すサービスはすべてのトランスポートプロトコルに共通とは限らないので、注意が必要です。

  1. コネクションモードのサービスでは、すべてのトランスポートプロバイダで転送サービスデータ単位 (TSDU) がサポートされるとは限りません。接続の際に論理的なデータ境界が保たれることを前提としてはなりません。

  2. プロトコルおよび実装に固有のサービス範囲は、t_open(3NSL) および t_getinfo(3NSL) の各ルーチンによって返されます。これらの範囲に基づいて、バッファーを割り当て、プロトコルに固有のトランスポートアドレスおよびオプションを格納します。

  3. ユーザーデータは、t_connect(3NSL) および t_snddis(3NSL) などの接続要求や切断要求を使用して送信してはなりません。すべてのトランスポートプロトコルがこのような方法で機能するとは限りません。

  4. t_listen(3NSL) に使用する t_call 構造体に含まれるバッファーには、接続確立時にクライントが送信するデータを格納できるだけの大きさが必要です。t_alloc(3NSL)T_ALL 引数を使用して、最大バッファーサイズを設定し、現在のトランスポートプロバイダのアドレス、オプションおよびユーザーデータを格納します。

  5. t_bind(3NSL) に指定するプロトコルアドレスは、クライアント側のエンドポイントで指定してはなりません。トランスポートエンドポイントへの適切なアドレスの割り当ては、トランスポートプロバイダに任せます。サーバーは、トランスポートプロバイダの名前空間を知らなくても、t_bind(3NSL) のプロトコルアドレスを取り込むことができなければなりません。

  6. トランスポートアドレスの形式を仮定してはなりません。また、トランスポートアドレスをプログラム内で定数としてはなりません。この詳細については、第 4 章「トランスポート選択と名前からアドレスへのマッピング」を参照してください。

  7. t_rcvdis(3NSL) に関連付けられた理由コードは、プロトコルに依存します。プロトコルからの独立性が重要な問題となる場合は、この情報を使用してはなりません。

  8. t_rcvuderr(3NSL) のエラーコードは、プロトコルに依存します。プロトコルからの独立性が問題となる場合は、この情報を使用してはなりません。

  9. プログラム内にデバイス名をコーディングしてはなりません。デバイスノードは、特定のトランスポートプロバイダを指定し、プロトコルに依存します。詳細については、第 4 章「トランスポート選択と名前からアドレスへのマッピング」を参照してください。

  10. 複数のプロトコル環境で実行されるプログラムでは、t_sndrel(3NSL) および t_rcvrel(3NSL) のコネクションモードサービスで提供される、オプションの正常型解放機能を使用してはなりません。正常型解放機能は、すべてのコネクション型トランスポートプロトコルでサポートされているわけではありません。この機能を使用すると、解放型システムと正常に通信できなくなることがあります。