ONC+ 開発ガイド

portmap の操作

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

PMAPPROC_NULL

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

PMAPPROC_SET

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

PMAPPROC_UNSET

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

PMAPPROC_GETPORT

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

PMAPPROC_DUMP

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

PMAPPROC_CALLIT

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

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

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