ONC+ 開発ガイド

portmap の操作

portmap が現在サポートしているプロトコルは 2 つ (TCP/IP と UDP/IP) です。portmap にアクセスするには、どちらかのプロトコルで割り当てられたポート番号 111 (SUNRPC (5)) と通信します。次の節ではポートマッパーの各手続きを説明します。

PMAPPROC_NULL

この手続きは何もしない手続きです。習慣的に、どのプロトコルでも手続き 0 は引数も戻り値もない手続きにします。

PMAPPROC_SET

プログラムは、マシン上で最初に使用可能になるとローカルのポートマッププログラムに自分自身を登録します。プログラムは、プログラム番号 prog、バージョン番号 vers、トランスポートプロトコル番号 prot、サービス要求を受信するポート port を引き渡します。この手続きは、指定したポートに既にマッピングが存在していて結合されていれば、マッピングの設定を拒絶します。マッピングが存在していてポートが未結合の場合は、ポートを登録解除し、要求されたマッピングを設定します。PMAPPROC_SET 手続きは、割り当てが正しく設定されれば TRUE を、設定されない場合は FALSE を返します。 rpc_soc(3NSL) のマニュアルページの pmap_set() 関数も参照してください。

PMAPPROC_UNSET

プログラムが使用不可能になれば、同一マシン上のポートマッパープログラムで自身の登録を解除しなければなりません。PMAPPROC_UNSET の引数と戻り値は PMAPPROC_SET の引数と戻り値と同一の意味を持ちます。引数のうち、プロトコルとポート番号のフィールドは無視されます。rpc_soc(3NSL) のマニュアルページの pmap_unset() 関数も参照してください。

PMAPPROC_GETPORT

プログラム番号 prog、バージョン番号 vers、とトランスポートプロトコル番号 prot を、PMAPPROC_GETPORT 手続きに引き渡すと、そのプログラムが呼び出し要求を待っているポート番号が返されます。ポート番号 0 が返された場合は、そのプログラムが登録されていないことを示します。引数の port フィールドは無視されます。rpc_soc(3NSL) のマニュアルページの pmap_getport() 関数も参照してください。

PMAPPROC_DUMP

PMAPPROC_DUMP 手続きはポートマッパーのデータベース内のすべてのエントリを列挙します。この手続きへの引数はなく、返されるのは、プログラム、バージョン、プロトコル、ポート番号のリストです。rpc_soc(3NSL) のマニュアルページの pmap_getmaps() 関数も参照してください。

PMAPPROC_CALLIT

PMAPPROC_CALLIT 手続きを使用すると、呼び出し側がリモートプロシージャのポート番号がわからなくても、同一マシン上にあるリモートプロシージャを呼び出すことができます。この手続きは、既知のポートマッパーのポートを使用して、任意のリモートプログラムへのブロードキャスト通信をサポートします。引数の progversprocargs はそれぞれプログラム番号、バージョン番号、手続き番号、リモートプロシージャへの引数です。rpc_soc(3NSL) のマニュアルページの pmap_rmtcall() 関数も参照してください。

この手続きは正常終了したときだけ応答を返し、異常終了したときは応答を返しません。また、リモートプログラムのポート番号と、リモートプロシージャからの戻り値を返します。

ポートマッパーがリモートプログラムとの通信に使用できるのは UDP/IP だけです。