Secure RPC ( DES 認証) に使用するルーチンについては、 rpc_secure3 で説明します。 Secure RPC は DES 暗号化が使用できる場合にのみ使用できます。
Fa auth に関連する認証情報を破壊するマクロです。 一般的に、破壊にはプライベートデータ構造の解放も含まれます。 Fn auth_destroy を呼び出した後で Fa auth を使用した結果は不定になります。
各リモートプロシージャコールで使用できない認証情報を渡す RPC 認証ハンドルを作成して戻します。 RPC は、この認証をデフォルトで使用します。
認証情報を含む RPC UNIX 認証ハンドルを作成して戻します。 パラメータ Fa host は、情報を作成するマシンの名前です。 Fa uid は、ユーザのユーザ ID です。 Fa gid は、ユーザの現行グループ ID です。 Fa len と Fa aup_gids は、ユーザが属するグループの配列を表します。 あるユーザになりすますことが容易です。
適切なパラメータで Fn authunix_create を呼び出します。
マシン Fa host で Fa prognum , Fa versnum , Fa procnum に関連するリモートプロシージャを呼び出します。 パラメータ Fa in は、プロシージャの引数アドレスで、 Fa out は結果を配置するアドレスです。 Fa inproc は、プロシージャのパラメータをデコードするために使用し、 Fa outproc は、プロシージャの結果をデコードするために使用します。 このルーチンは、問題がなければ 0 を戻し、 問題がある場合は、 Vt enum clnt_stat を整数にキャストした値を戻します。 エラーステータスをメッセージに変換するには、ルーチン Fn clnt_perrno が便利です。
警告: このルーチンでリモートプロシージャを呼び出す場合は、 UDP/IP がトランスポート層として使用されます。 制限事項については、 Fn clntudp_create を参照してください。 このルーチンを使用した場合、タイムアウトや認証は制御できません。
ローカルで接続されているすべてのブロードキャストネットに 呼び出しメッセージがブロードキャストされることを除けば、 Fn callrpc と同じです。 このルーチンは、応答を受け取るたびに、以下の形式の Fn eachresult を呼び出します。
Ft bool_t Fn eachresult caddr_t out struct sockaddr_in *addr
Fa out は、リモートプロシージャの出力がデコードされることを除けば、 Fn clnt_broadcast に渡される Fa out と同じです。 Fa addr は、結果を送信するマシンのアドレスを指します。 Fn eachresult が 0 を戻す場合、 Fn clnt_broadcast は次の応答を待ちます。
警告: ブロードキャストソケットのサイズは、 データリンクの最大転送単位に制限されています。 イーサネットの場合、この値は 1500 バイトです。
Fn clnt_create などの RPC クライアント作成ルーチンで入手した、クライアントハンドル Fa clnt に関連するリモートプロシージャ Fa procnum を呼び出すマクロです。 パラメータ Fa in はプロシージャの引数のアドレスで、 Fa out は結果を配置するアドレスです。 Fa inproc はプロシージャのパラメータのデコードに使用し、 Fa outproc はプロシージャの結果のデコードに使用します。 Fa tout は、結果が戻るまでの時間です。
クライアントの RPC ハンドルを破壊するマクロです。 通常の場合、破壊には、 Fa clnt も含めたプライベートデータ構造の解放も含まれます。 Fn clnt_destroy を呼び出した後で Fa clnt を使用した結果は不定になります。 RPC ライブラリが関連ソケットを開いた場合はそれも閉じます。 関連ソケットを開いていない場合、ソケットは開いたまま残ります。
一般的なクライアント作成ルーチンです。 Fa host は、サーバが配置されているリモートホストの名前を指定します。 Fa proto は、使用する転送プロトコルの種類を指定します。 このフィールドで現在サポートされている値は、 Qq Li udp と Qq Li tcp です。 タイムアウトはデフォルトが設定されていますが、 Fn clnt_control を使用して修正できます。
警告: UDP の使用には短所があります。 UDP ベースの RPC メッセージは、
クライアントオブジェクトのさまざまな情報の変更や取り出しを行うマクロです。 Fa req はオペレーションのタイプを指定し、 Fa info は情報のポインタです。 UDP と TCP の両方でサポートされている Fa req の値、引数タイプ、実行内容は以下の通りです。
注意: タイムアウトを Fn clnt_control で設定すると、 Fn clnt_call に渡されるタイムアウトパラメータは、 後のすべての呼び出しで無視されます。
以下のオペレーションは UDP のみで有効です。
再試行タイムアウトは、サーバが応答してから要求を再送することを UDP RPC が待機する時間です。
RPC/XDR システムが RPC 呼び出しの結果をデコードする場合に割り振ったデータを解放するマクロです。 パラメータ Fa out は結果のアドレスで、 Fa outproc は結果を記述する XDR ルーチンです。 このルーチンは、結果が問題なく解放された場合は 1 を戻し、 問題が発生した場合は 0 を戻します。
クライアントハンドルのエラー構造を、アドレス Fa errp の構造体にコピーするマクロです。
クライアント RPC ハンドルを作成できない理由を表すメッセージを標準エラーに出力します。 メッセージの最初には、文字列 Fa s とコロンが付きます。 これは、 Fn clnt_create , Fn clntraw_create , Fn clnttcp_create , Fn clntudp_create のいずれかがエラーとなった場合に使用します。
Fa stat が示す条件に対応するメッセージを標準エラーに出力します。 Fn callrpc の後で使用してください。
RPC 呼び出しがエラーになった理由を示すメッセージを標準エラーに出力します。 Fa clnt は、呼び出しの実行に使用したハンドルです。 メッセージ最初には、文字列 Fa s とコロンが付きます。 Fn clnt_call の後で使用してください。
標準エラーに出力する代わりに文字列を戻すことを除けば、 Fn clnt_pcreateerror と同じです。
バグ: 各呼び出しで上書きされた静的データのポインタを戻します。
Fn clnt_perrno と同じ引数を取りますが、 RPC 呼び出しがエラーになった理由を示すメッセージを標準エラーに送信する代わりに、 メッセージを含む文字列のポインタを戻します。 文字列は改行 (`\n' ) で終わります。
プログラムに標準エラーがない場合 (サーバとして実行しているプログラムには標準エラーがないことが多い)、 またはメッセージを Fn printf で出力する必要がない場合、 あるいは Fn clnt_perrno がサポートするもの以外のメッセージフォーマットを使用する場合は、 Fn clnt_perrno の代わりに Fn clnt_sperrno を使用します。
注意: Fn clnt_sperror と Fn clnt_spcreaterror とは異なり、 Fn clnt_sperrno は静的データのポインタを戻しますが、 結果は各呼び出しで上書きされません。
Fn clnt_sperrno と同じように、標準エラーに出力せずに文字列を戻すことを除けば、 Fn clnt_perror と同じです。
バグ: 各呼び出しで上書きされた静的データのポインタを戻します。
リモートプログラム Fa prognum バージョン Fa versnum のトイ RPC クライアントを作成します。 サービスにメッセージを渡す実際のトランスポートは、 プロセスのアドレススペース内にあるバッファなので、 対応する RPC サーバは同じアドレススペースに存在する必要があります。 Fn svcraw_create を参照してください。 これにより、 RPC のシミュレーション、およびラウンドトリップタイムなど、 RPC オーバヘッドの取得をカーネルの干渉なしに実行できます。 このルーチンは、エラーが発生すると NULL を戻します。
リモートプログラム Fa prognum バージョン Fa versnum の RPC クライアントを作成します。 クライアントは、トランスポートとして TCP/IP を使用します。 リモートプログラムは、インターネットアドレス Fa addr にあります。 Fa addr->sin_port が 0 である場合は、 リモートプログラムが注意を向ける実際のポートに設定されます ( portmap(8) サービスはこの情報で調べられます)。 パラメータ Fa sockp はソケットです。このパラメータが RPC_ANYSOCK である場合、このルーチンは新しいソケットを開いて Fa sockp を設定します。 TCP ベースの RPC はバッファによる I/O を使用するので、ユーザはパラメータ Fa sendsz と Fa recvsz で送信バッファと受信バッファのサイズを指定できます。 値を 0 にすると、適切なデフォルトが選択されます。 このルーチンは、エラーになると NULL を戻します。
リモートプログラム Fa prognum バージョン Fa versnum の RPC クライアントを作成します。 クライアントは、トランスポートとして UDP/IP を使用します。 リモートプログラムは、インターネットアドレス Fa addr にあります。 Fa addr->sin_port が 0 である場合は、 リモートプログラムが注意を向ける実際のポートに設定されます (リモート portmap(8) サービスは、この情報で調べられます)。 パラメータ Fa sockp はソケットです。 このパラメータが RPC_ANYSOCK である場合、このルーチンは新しいソケットを開いて Fa sockp を設定します。 UDP トランスポートは、応答を受け取るまで、 または呼び出しがタイムアウトになるまで、 Fa wait 時間間隔で呼び出しメッセージを再送信します。 呼び出しがタイムアウトとなる時間は、 で指定します。
警告: UDP ベースの RPC メッセージは、
リモートプログラム Fa prognum バージョン Fa versnum の RPC クライアントを作成します。 クライアントは、トランスポートとして UDP/IP を使用します。 リモートプログラムは、インターネットアドレス Fa addr にあります。 Fa addr->sin_port が 0 である場合は、 リモートプログラムが注意を向ける実際のポートに設定されます (リモート portmap(8) サービスは、この情報で調べられます)。 パラメータ Fa sockp はソケットです。このパラメータが RPC_ANYSOCK である場合、このルーチンは新しいソケットを開いて Fa sockp を設定します。 UDP トランスポートは、応答を受け取るまで、 または呼び出しがタイムアウトになるまで Fa wait 時間間隔で呼び出しメッセージを再送信します。 呼び出しがタイムアウトになる時間は、 Fn clnt_call で指定します。
ユーザは、 UDP ベースの RPC メッセージの送受信を行う、最大パケットサイズを指定できます。
/etc/hosts を処理するライブラリルーチンを参考にせず、マシンの IP アドレスを Fa addr に入れます。ポート番号は、常に Fn htons PMAPPORT に設定されます。 問題がない場合は 0 を戻し、問題がある場合は 0 以外を戻します。
portmap(8) サービスのユーザインタフェースで、 IP アドレス Fa addr にあるホストの RPC プログラムとポートの現行のマッピングのリストを戻します。 このルーチンは NULL を戻すことがあります。 コマンド ``rpcinfo -p '' はこのルーチンを使用します。
portmap(8) サービスのユーザインタフェースで、 プログラム番号 Fa prognum バージョン Fa versnum をサポートするサービスを待ち、 Fa protocol に関連する転送プロトコルを表すポート番号を戻します。 Fa protocol の値は、ほとんどの場合 IPPROTO_UDP か IPPROTO_TCP です。マッピングが存在しない場合、または RPC システムがリモート portmap(8) サービスと接触できない場合、戻り値は 0 になります。 後者の場合、 rpc_createerr には RPC ステータスが入ります。
portmap(8) サービスのユーザインタフェースで、 IP アドレス Fa addr のホストのプロシージャを RPC 呼び出しにするように、そのホストの portmap(8) に命令します。 プロシージャで問題が発生しない場合、パラメータ Fa portp はプログラムのポート番号に修正されます。 その他のパラメータについては、 Fn callrpc と Fn clnt_call を参照してください。 このプロシージャは、 ``ping'' 以外で使用することはありません。 Fn clnt_broadcast も参照してください。
portmap(8) サービスのユーザインタフェースで、 (Fa prognum , versnum , protocol ) の 3 つ、およびマシンの portmap(8) サービスでの Fa port の間にマッピングを確立します。 Fa protocol の値は、ほとんどの場合 IPPROTO_UDP か IPPROTO_TCP です。 このルーチンは問題がないと 1 を戻し、問題がある場合は 0 を戻します。 これは、 Fn svc_register で自動的に実行されます。
portmap(8) サービスのユーザインタフェースで、 (Fa prognum , versnum , ) の 3 つ、および portmap(8) サービスでの Fa port の間に存在するマッピングをすべて破壊します。 このルーチンは、問題がなければ 1 を戻し、問題がある場合は 0 を戻します。
RPC サービスパッケージでプロシージャ Fa procname を登録します。 プログラム Fa prognum バージョン Fa versnum プロシージャ Fa procnum が要求されると、パラメータのポインタで Fa procname が呼び出されます。 Fa progname は、静的結果のポインタを戻します。 Fa inproc はパラメータのデコードに使用され、 Fa outproc は結果のエンコードに使用されます。 このルーチンは、登録で問題が発生しなければ 0 を戻し、 問題が発生したら -1 を戻します。
警告: この形式で登録されたリモートプロシージャは、 UDP/IP トランスポートでアクセスされます。 制限事項については Fn svcudp_create を参照してください。
エラーになった RPC クライアント作成ルーチンで値が設定されるグローバル変数です。 エラーの原因を出力するには、ルーチン Fn clnt_pcreateerror を使用します。
RPC サービス転送ハンドル Fa xprt を破壊するマクロです。 一般的に破壊処理には、 Fa xprt も含むプライベートデータ構造の解放も含まれます。 このルーチンを呼び出した後で Fa xprt を使用した結果は不定となります。
RPC サービスサイドの読み込みファイル記述子ビットマスクを表すグローバル変数です。 select(2) システムコールのテンプレートパラメータとして最適です。 サービスの設計者が Fn svc_run を呼び出さず、非同期のイベント処理を行う場合のみに重要です。 この変数は読み込み専用ですが (アドレスを select(2) に渡しませんが)、 Fn svc_getreqset か作成ルーチンを呼び出した後で変更できます。 FD_SETSIZE を越える記述子の制限がプロセスにある場合、この変数は FD_SETSIZE 記述子でしか使用できないことに注意してください。
svc_fdset に似ていますが、32 個の記述子に制限されています。 このインタフェースは svc_fdset で置き換えられました。
RPC/XDR システムが Fn svc_getargs を使用して引数をサービスプロシージャにデコードした場合に 割り振ったデータを解放するマクロです。 このルーチンは、結果が問題なく解放されると 1 を戻し、 問題が発生した場合は 0 を戻します。
RPC サービス転送ハンドル Fa xprt RPC 要求の引数をデコードするマクロです。 パラメータ Fa in は、引数を配置する場所のアドレスです。 Fa inproc は、引数をデコードする XDR ルーチンです。 このルーチンは、デコードで問題が発生しなければ 1 を戻し、 問題が発生した場合は 0 を戻します。
RPC サービス転送ハンドル Fa xprt に関連するプロシージャの呼び出し側の ネットワークアドレスを入手する確実な方法です。
このルーチンは、サービスの設計者が Fn svc_run を呼び出さず、独自の非同期イベント処理を実現する場合にのみ重要です。 RPC 要求が RPC ソケットに到着したと select(2) システムコールが判断した場合に呼び出されます。 Fa rdfds は、作成された読み込み記述子ビットマスクです。 このルーチンは、 Fa rdfds の値に関連したすべてのソケットサービスを受けた場合に戻ります。
Fn svc_getreqset , に似ていますが、32 個の記述子に制限されています。 このインタフェースは Fn svc_getreqset で置き換えられました。
Fa prognum と Fa versnum をサービスディスパッチプロシージャ Fn dispatch に関連付けます。 Fa protocol が 0 である場合、サービスは portmap(8) サービスで登録されません。 Fa protocol が 0 以外である場合、 (Fa prognum , versnum , protocol ) の 3 つと Fa xprt->xp_port のマッピングがローカル portmap(8) サービスで確立されます (一般的に Fa protocol は 0 か IPPROTO_UDP か IPPROTO_TCP です)。 プロシージャ Fn dispatch の形式は以下の通りです。
Fn bool_t Fn dispatch struct svc_req *request SVCXPRT *xprt
Fn svc_register ルーチンは、問題がなければ 1 を戻し、問題がある場合は 0 を戻します。
このルーチンは戻りません。 RPC 要求の到着を待ち、到着すると Fn svc_getreq を使用して適切なサービスプロシージャを呼び出します。 通常の場合、このプロシージャは、 select(2) システムコールが戻るのを待ちます。
RPC サービスのディスパッチルーチンで呼び出され、 リモートプロシージャコールの結果を送信します。 パラメータ Fa xprt は要求の関連転送ハンドルです。 Fa outproc は、結果のエンコードに使用する XDR ルーチンです。 Fa out は結果のアドレスです。 このルーチンは、問題がなければ 1 を戻し、問題がある場合は 0 を戻します。
(Fa prognum , versnum ) の 2 つとディスパッチルーチンのマッピング、および (Fa prognum , versnum , ) の 3 つとポート番号のマッチングをすべて削除します。
認証エラーのために、リモートプロシージャコールの実行を拒否する サービスディスパッチルーチンが呼び出します。
パラメータを問題なくデコードできない サービスディスパッチルーチンが呼び出します。 Fn svc_getargs も参照してください。
呼び出し側が要求したプロシージャ番号を 実現しないサービスディスパッチルーチンが呼び出します。
目的のプログラムが RPC パッケージで登録されていない場合に呼び出されます。 サービスの設計者には、通常の場合このルーチンは必要ありません。
プログラムの目的のバージョンが RPC パッケージで登録されていない場合に呼び出されます。 サービスの設計者には、通常の場合このルーチンは必要ありません。
サービスディスパッチルーチンが、 特定プロトコルでカバーされていないシステムエラーを検出した場合に呼び出します。 たとえばサービスが記憶域を割り振れない場合は、 このルーチンが呼び出されます。
認証パラメータが足りないために、 リモートプロシージャコールの実行を拒否する サービスディスパッチルーチンが呼び出します。 このルーチンは、 Fn svcerr_auth xprt AUTH_TOOWEAK を呼び出します。
ポインタを戻すためのトイ RPC クライアントを作成します。 実際のトランスポートは、 プロセスのアドレススペース内にあるバッファなので、対応する RPC クライアントは同じアドレススペースに存在する必要があります。 Fn clntraw_create を参照してください。 このルーチンにより、 RPC のシミュレーション、およびラウンドトリップタイムなど、 RPC オーバヘッドの取得をカーネルの干渉なしに実行できます。 このルーチンは、エラーが発生すると NULL を戻します。
ポインタを戻す、 TCP/IP ベースの RPC サービストランスポートを作成します。 トランスポートにはソケット Fa sock が関連します。ソケットが RPC_ANYSOCK である場合は、新しいソケットが作成されます。 ソケットがローカル TCP ポートに結合していない場合、 このルーチンはソケットを任意のポートに結合します。処理が終わると、 Fa xprt->xp_sock はトランスポートのソケット記述子になり、 Fa xprt->xp_port はトランスポートのポート番号になります。 このルーチンは、エラーが発生すると NULL を戻します。 TCP ベースの RPC はバッファによる I/O を使用するので、ユーザはバッファサイズを指定できます。 値を 0 にすると、適切なデフォルトが選択されます。
開いている記述子の最上位にサービスを作成します。 一般的にこの記述子は、 TCP などのストリームプロトコルの接続済みソケットです。 Fa sendsize と Fa recvsize は、送信バッファと受信バッファのサイズを指定します。 このサイズが 0 である場合は、適切なデフォルトが選択されます。
ポインタを戻す UDP/IP ベースの RPC サービストランスポートを作成します。 トランスポートにはソケット Fa sock が関連します。ソケットが RPC_ANYSOCK である場合は、新しいソケットが作成されます。 ソケットがローカル UDP ポートに結合していない場合、 このルーチンはソケットを任意のポートに結合します。 処理が終わると、 Fa xprt->xp_sock はトランスポートのソケット記述子になり、 Fa xprt->xp_port はトランスポートのポート番号になります。 このルーチンは、エラーが発生すると NULL を戻します。
これにより、ユーザは、 UDP ベースの送信 RPC メッセージと受信メッセージの最大パケットサイズを指定できます。
RPC 応答メッセージのエンコードに使用します。 このルーチンでは、 RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。
UNIX 証明書の記述に使用します。 このルーチンは、 RPC 認証パッケージを使用せずに、証明書を作成する場合に便利です。
RPC コールヘッダメッセージの記述に使用します。 このルーチンでは、 RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。
RPC コールメッセージの記述に使用します。 このルーチンは、 RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。
RPC 認証情報メッセージの記述に使用します。 このルーチンでは、 RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。
さまざまな portmap(8) プロシージャのパラメータの記述に外部的に使用します。 このルーチンは、 Fn pmap_* インタフェースを使用せずに、このパラメータを作成する場合に便利です。
ポートマッピングのリストの記述に外部的に使用します。 このルーチンは、 Fn pmap_* インタフェースを使用せずに、このパラメータを作成する場合に便利です。
RPC 応答メッセージの記述に使用します。 このルーチンは RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。
RPC 応答メッセージの記述に使用します。 このルーチンは RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。
RPC サービストランスポートハンドルが作成されたら、 RPC サービスパッケージで登録する必要があります。 このルーチンは、グローバル変数 svc_fds を修正します。サービスの設計者には、 通常の場合このルーチンは必要ありません。
RPC サービストランスポートハンドルを破壊する前には、 RPC サービスパッケージで登録を解除する必要があります。 このルーチンは、グローバル変数 svc_fds を修正します。サービスの設計者には、 通常の場合このルーチンは必要ありません。