RPC

Section: C Library Functions (3)
索引 jman

BSD mandoc
 

索引

名称

rpc - リモートプロシージャコール用ライブラリルーチン  

索引

ライブラリ

Lb libc  

索引

書式

In rpc/rpc.h

関数の説明については Sx 解説 を参照してください。  

索引

解説

このルーチンでは、C プログラムを使用して、 ネットワークを通して別のマシンでプロシージャ呼び出しを実行できます。 まずクライアントがプロシージャを呼び出し、 データパケットをサーバに送信します。 パケットを受け取ったサーバは、ディスパッチルーチンを呼び出し、 要求されたサービスを実行してから応答を送り返します。 最後に、プロシージャ呼び出しがクライアントに戻ります。

Secure RPC ( DES 認証) に使用するルーチンについては、 rpc_secure3 で説明します。 Secure RPCDES 暗号化が使用できる場合にのみ使用できます。

Ft void
Fn auth_destroy AUTH *auth

Fa auth に関連する認証情報を破壊するマクロです。 一般的に、破壊にはプライベートデータ構造の解放も含まれます。 Fn auth_destroy を呼び出した後で Fa auth を使用した結果は不定になります。

Ft AUTH *
Fn authnone_create

各リモートプロシージャコールで使用できない認証情報を渡す RPC 認証ハンドルを作成して戻します。 RPC は、この認証をデフォルトで使用します。

Ft AUTH *
Fn authunix_create char *host int uid int gid int len int *aup_gids

認証情報を含む RPC UNIX 認証ハンドルを作成して戻します。 パラメータ Fa host は、情報を作成するマシンの名前です。 Fa uid は、ユーザのユーザ ID です。 Fa gid は、ユーザの現行グループ ID です。 Fa len と Fa aup_gids は、ユーザが属するグループの配列を表します。 あるユーザになりすますことが容易です。

Ft AUTH *
Fn authunix_create_default

適切なパラメータで Fn authunix_create を呼び出します。

Fo callrpc Fa char *host Fa u_long prognum Fa u_long versnum Fa u_long procnum Fa xdrproc_t inproc Fa char *in Fa xdrproc_t outproc Fa char *out Fc

マシン 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 を参照してください。 このルーチンを使用した場合、タイムアウトや認証は制御できません。

Ft enum clnt_stat
Fo clnt_broadcast Fa u_long prognum Fa u_long versnum Fa u_long procnum Fa xdrproc_t inproc Fa char *in Fa xdrproc_t outproc Fa char *out Fa bool_t (*eachresult)(caddr_t, struct sockaddr_in *) Fc

ローカルで接続されているすべてのブロードキャストネットに 呼び出しメッセージがブロードキャストされることを除けば、 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 は次の応答を待ちます。

0 を戻さない場合は、適切なステータスで戻ります。

警告: ブロードキャストソケットのサイズは、 データリンクの最大転送単位に制限されています。 イーサネットの場合、この値は 1500 バイトです。

Ft enum clnt_stat
Fo clnt_call Fa CLIENT *clnt Fa u_long procnum Fa xdrproc_t inproc Fa char *in Fa xdrproc_t outproc Fa char *out Fa struct timeval tout Fc

Fn clnt_create などの RPC クライアント作成ルーチンで入手した、クライアントハンドル Fa clnt に関連するリモートプロシージャ Fa procnum を呼び出すマクロです。 パラメータ Fa in はプロシージャの引数のアドレスで、 Fa out は結果を配置するアドレスです。 Fa inproc はプロシージャのパラメータのデコードに使用し、 Fa outproc はプロシージャの結果のデコードに使用します。 Fa tout は、結果が戻るまでの時間です。

Ft void Fn clnt_destroy CLIENT *clnt

クライアントの RPC ハンドルを破壊するマクロです。 通常の場合、破壊には、 Fa clnt も含めたプライベートデータ構造の解放も含まれます。 Fn clnt_destroy を呼び出した後で Fa clnt を使用した結果は不定になります。 RPC ライブラリが関連ソケットを開いた場合はそれも閉じます。 関連ソケットを開いていない場合、ソケットは開いたまま残ります。

Ft CLIENT *
Fn clnt_create char *host u_long prog u_long vers char *proto

一般的なクライアント作成ルーチンです。 Fa host は、サーバが配置されているリモートホストの名前を指定します。 Fa proto は、使用する転送プロトコルの種類を指定します。 このフィールドで現在サポートされている値は、 Qq Li udp と Qq Li tcp です。 タイムアウトはデフォルトが設定されていますが、 Fn clnt_control を使用して修正できます。

警告: UDP の使用には短所があります。 UDP ベースの RPC メッセージは、

8 キロバイトのエンコード済みデータまでしか維持できないので、 大きな引数を取るプロシージャや、 大きな結果を戻すプロシージャでは使用できません。

Ft bool_t
Fn clnt_control CLIENT *cl u_int req char *info

クライアントオブジェクトのさまざまな情報の変更や取り出しを行うマクロです。 Fa req はオペレーションのタイプを指定し、 Fa info は情報のポインタです。 UDPTCP の両方でサポートされている Fa req の値、引数タイプ、実行内容は以下の通りです。

CLSET_TIMEOUT Ta Vt struct timeval Ta 総タイムアウトの設定
CLGET_TIMEOUT Ta Vt struct timeval Ta 総タイムアウトの入手

注意: タイムアウトを Fn clnt_control で設定すると、 Fn clnt_call に渡されるタイムアウトパラメータは、 後のすべての呼び出しで無視されます。

CLGET_SERVER_ADDR Ta Vt struct sockaddr_in Ta get server's address

以下のオペレーションは UDP のみで有効です。

CLSET_RETRY_TIMEOUT Ta Vt struct timeval Ta 再試行タイムアウトの設定
CLGET_RETRY_TIMEOUT Ta Vt struct timeval Ta 再試行タイムアウトの入手
CLSET_CONNECT Ta Vt int Ta connect(2)
を使用

再試行タイムアウトは、サーバが応答してから要求を再送することを UDP RPC が待機する時間です。

Ft bool_t Fn clnt_freeres CLIENT *clnt xdrproc_t outproc char *out

RPC/XDR システムが RPC 呼び出しの結果をデコードする場合に割り振ったデータを解放するマクロです。 パラメータ Fa out は結果のアドレスで、 Fa outproc は結果を記述する XDR ルーチンです。 このルーチンは、結果が問題なく解放された場合は 1 を戻し、 問題が発生した場合は 0 を戻します。

Ft void
Fn clnt_geterr CLIENT *clnt struct rpc_err *errp

クライアントハンドルのエラー構造を、アドレス Fa errp の構造体にコピーするマクロです。

Ft void
Fn clnt_pcreateerror char *s

クライアント RPC ハンドルを作成できない理由を表すメッセージを標準エラーに出力します。 メッセージの最初には、文字列 Fa s とコロンが付きます。 これは、 Fn clnt_create , Fn clntraw_create , Fn clnttcp_create , Fn clntudp_create のいずれかがエラーとなった場合に使用します。

Ft void
Fn clnt_perrno enum clnt_stat stat

Fa stat が示す条件に対応するメッセージを標準エラーに出力します。 Fn callrpc の後で使用してください。

Ft void Fn clnt_perror CLIENT *clnt char *s

RPC 呼び出しがエラーになった理由を示すメッセージを標準エラーに出力します。 Fa clnt は、呼び出しの実行に使用したハンドルです。 メッセージ最初には、文字列 Fa s とコロンが付きます。 Fn clnt_call の後で使用してください。

Ft char *
Fn clnt_spcreateerror char *s

標準エラーに出力する代わりに文字列を戻すことを除けば、 Fn clnt_pcreateerror と同じです。

バグ: 各呼び出しで上書きされた静的データのポインタを戻します。

Ft char *
Fn clnt_sperrno enum clnt_stat stat

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 は静的データのポインタを戻しますが、 結果は各呼び出しで上書きされません。

Ft char *
Fn clnt_sperror CLIENT *rpch char *s

Fn clnt_sperrno と同じように、標準エラーに出力せずに文字列を戻すことを除けば、 Fn clnt_perror と同じです。

バグ: 各呼び出しで上書きされた静的データのポインタを戻します。

Ft CLIENT *
Fn clntraw_create u_long prognum u_long versnum

リモートプログラム Fa prognum バージョン Fa versnum のトイ RPC クライアントを作成します。 サービスにメッセージを渡す実際のトランスポートは、 プロセスのアドレススペース内にあるバッファなので、 対応する RPC サーバは同じアドレススペースに存在する必要があります。 Fn svcraw_create を参照してください。 これにより、 RPC のシミュレーション、およびラウンドトリップタイムなど、 RPC オーバヘッドの取得をカーネルの干渉なしに実行できます。 このルーチンは、エラーが発生すると NULL を戻します。

Ft CLIENT *
Fo clnttcp_create Fa struct sockaddr_in *addr Fa u_long prognum Fa u_long versnum Fa int *sockp Fa u_int sendsz Fa u_int recvsz Fc

リモートプログラム 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 を戻します。

Ft CLIENT *
Fo clntudp_create Fa struct sockaddr_in *addr Fa u_long prognum Fa u_long versnum Fa struct timeval wait Fa int *sockp Fc

リモートプログラム 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 メッセージは、

8 キロバイトのエンコード済みデータまでしか維持できないので、 大きな引数を取るプロシージャや 大きな結果を戻すプロシージャでは使用できません。

Ft CLIENT *
Fo clntudp_bufcreate Fa struct sockaddr_in *addr Fa u_long prognum Fa u_long versnum Fa struct timeval wait Fa int *sockp Fa unsigned int sendsize Fa unsigned int recosize Fc

リモートプログラム 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 メッセージの送受信を行う、最大パケットサイズを指定できます。

Ft int
Fn get_myaddress struct sockaddr_in *addr

/etc/hosts を処理するライブラリルーチンを参考にせず、マシンの IP アドレスを Fa addr に入れます。ポート番号は、常に Fn htons PMAPPORT に設定されます。 問題がない場合は 0 を戻し、問題がある場合は 0 以外を戻します。

Ft struct pmaplist *
Fn pmap_getmaps struct sockaddr_in *addr

portmap(8) サービスのユーザインタフェースで、 IP アドレス Fa addr にあるホストの RPC プログラムとポートの現行のマッピングのリストを戻します。 このルーチンは NULL を戻すことがあります。 コマンド ``rpcinfo -p '' はこのルーチンを使用します。

Ft u_short
Fo pmap_getport Fa struct sockaddr_in *addr Fa u_long prognum Fa u_long versnum Fa u_long protocol Fc

portmap(8) サービスのユーザインタフェースで、 プログラム番号 Fa prognum バージョン Fa versnum をサポートするサービスを待ち、 Fa protocol に関連する転送プロトコルを表すポート番号を戻します。 Fa protocol の値は、ほとんどの場合 IPPROTO_UDPIPPROTO_TCP です。マッピングが存在しない場合、または RPC システムがリモート portmap(8) サービスと接触できない場合、戻り値は 0 になります。 後者の場合、 rpc_createerr には RPC ステータスが入ります。

Ft enum clnt_stat
Fo pmap_rmtcall Fa struct sockaddr_in *addr Fa u_long prognum Fa u_long versnum Fa u_long procnum Fa xdrproc_t inproc Fa char *in Fa xdrproc_t outproc Fa char *out Fa struct timeval tout Fa u_long *portp Fc

portmap(8) サービスのユーザインタフェースで、 IP アドレス Fa addr のホストのプロシージャを RPC 呼び出しにするように、そのホストの portmap(8) に命令します。 プロシージャで問題が発生しない場合、パラメータ Fa portp はプログラムのポート番号に修正されます。 その他のパラメータについては、 Fn callrpc と Fn clnt_call を参照してください。 このプロシージャは、 ``ping'' 以外で使用することはありません。 Fn clnt_broadcast も参照してください。

Ft bool_t Fn pmap_set u_long prognum u_long versnum u_long protocol u_short port

portmap(8) サービスのユーザインタフェースで、 (Fa prognum , versnum , protocol ) の 3 つ、およびマシンの portmap(8) サービスでの Fa port の間にマッピングを確立します。 Fa protocol の値は、ほとんどの場合 IPPROTO_UDPIPPROTO_TCP です。 このルーチンは問題がないと 1 を戻し、問題がある場合は 0 を戻します。 これは、 Fn svc_register で自動的に実行されます。

Ft bool_t Fn pmap_unset u_long prognum u_long versnum

portmap(8) サービスのユーザインタフェースで、 (Fa prognum , versnum , ) の 3 つ、および portmap(8) サービスでの Fa port の間に存在するマッピングをすべて破壊します。 このルーチンは、問題がなければ 1 を戻し、問題がある場合は 0 を戻します。

Ft bool_t Fo registerrpc Fa u_long prognum Fa u_long versnum Fa u_long procnum Fa char *(*procname)(void) Fa xdrproc_t inproc Fa xdrproc_t outproc Fc

RPC サービスパッケージでプロシージャ Fa procname を登録します。 プログラム Fa prognum バージョン Fa versnum プロシージャ Fa procnum が要求されると、パラメータのポインタで Fa procname が呼び出されます。 Fa progname は、静的結果のポインタを戻します。 Fa inproc はパラメータのデコードに使用され、 Fa outproc は結果のエンコードに使用されます。 このルーチンは、登録で問題が発生しなければ 0 を戻し、 問題が発生したら -1 を戻します。

警告: この形式で登録されたリモートプロシージャは、 UDP/IP トランスポートでアクセスされます。 制限事項については Fn svcudp_create を参照してください。

Vt struct rpc_createerr rpc_createerr ;

エラーになった RPC クライアント作成ルーチンで値が設定されるグローバル変数です。 エラーの原因を出力するには、ルーチン Fn clnt_pcreateerror を使用します。

Ft bool_t Fn svc_destroy SVCXPRT * xprt

RPC サービス転送ハンドル Fa xprt を破壊するマクロです。 一般的に破壊処理には、 Fa xprt も含むプライベートデータ構造の解放も含まれます。 このルーチンを呼び出した後で Fa xprt を使用した結果は不定となります。

Vt fd_set svc_fdset ;

RPC サービスサイドの読み込みファイル記述子ビットマスクを表すグローバル変数です。 select(2) システムコールのテンプレートパラメータとして最適です。 サービスの設計者が Fn svc_run を呼び出さず、非同期のイベント処理を行う場合のみに重要です。 この変数は読み込み専用ですが (アドレスを select(2) に渡しませんが)、 Fn svc_getreqset か作成ルーチンを呼び出した後で変更できます。 FD_SETSIZE を越える記述子の制限がプロセスにある場合、この変数は FD_SETSIZE 記述子でしか使用できないことに注意してください。

Vt int svc_fds ;

svc_fdset に似ていますが、32 個の記述子に制限されています。 このインタフェースは svc_fdset で置き換えられました。

Ft bool_t Fn svc_freeargs SVCXPRT *xprt xdrproc_t inproc char *in

RPC/XDR システムが Fn svc_getargs を使用して引数をサービスプロシージャにデコードした場合に 割り振ったデータを解放するマクロです。 このルーチンは、結果が問題なく解放されると 1 を戻し、 問題が発生した場合は 0 を戻します。

Ft bool_t Fn svc_getargs SVCXPRT *xprt xdrproc_t inproc char *in

RPC サービス転送ハンドル Fa xprt RPC 要求の引数をデコードするマクロです。 パラメータ Fa in は、引数を配置する場所のアドレスです。 Fa inproc は、引数をデコードする XDR ルーチンです。 このルーチンは、デコードで問題が発生しなければ 1 を戻し、 問題が発生した場合は 0 を戻します。

Ft struct sockaddr_in *
Fn svc_getcaller SVCXPRT *xprt

RPC サービス転送ハンドル Fa xprt に関連するプロシージャの呼び出し側の ネットワークアドレスを入手する確実な方法です。

Ft void Fn svc_getreqset fd_set *rdfds

このルーチンは、サービスの設計者が Fn svc_run を呼び出さず、独自の非同期イベント処理を実現する場合にのみ重要です。 RPC 要求が RPC ソケットに到着したと select(2) システムコールが判断した場合に呼び出されます。 Fa rdfds は、作成された読み込み記述子ビットマスクです。 このルーチンは、 Fa rdfds の値に関連したすべてのソケットサービスを受けた場合に戻ります。

Ft void Fn svc_getreq int rdfds

Fn svc_getreqset , に似ていますが、32 個の記述子に制限されています。 このインタフェースは Fn svc_getreqset で置き換えられました。

Ft bool_t Fo svc_register Fa SVCXPRT *xprt Fa u_long prognum Fa u_long versnum Fa void (*dispatch)(struct svc_req *, SVCXPRT *) Fa int protocol Fc

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_UDPIPPROTO_TCP です)。 プロシージャ Fn dispatch の形式は以下の通りです。

Fn bool_t Fn dispatch struct svc_req *request SVCXPRT *xprt

Fn svc_register ルーチンは、問題がなければ 1 を戻し、問題がある場合は 0 を戻します。

Fn svc_run

このルーチンは戻りません。 RPC 要求の到着を待ち、到着すると Fn svc_getreq を使用して適切なサービスプロシージャを呼び出します。 通常の場合、このプロシージャは、 select(2) システムコールが戻るのを待ちます。

Ft bool_t Fn svc_sendreply SVCXPRT *xprt xdrproc_t outproc char *out

RPC サービスのディスパッチルーチンで呼び出され、 リモートプロシージャコールの結果を送信します。 パラメータ Fa xprt は要求の関連転送ハンドルです。 Fa outproc は、結果のエンコードに使用する XDR ルーチンです。 Fa out は結果のアドレスです。 このルーチンは、問題がなければ 1 を戻し、問題がある場合は 0 を戻します。

Ft void
Fn svc_unregister u_long prognum u_long versnum

(Fa prognum , versnum ) の 2 つとディスパッチルーチンのマッピング、および (Fa prognum , versnum , ) の 3 つとポート番号のマッチングをすべて削除します。

Ft void
Fn svcerr_auth SVCXPRT *xprt enum auth_stat why

認証エラーのために、リモートプロシージャコールの実行を拒否する サービスディスパッチルーチンが呼び出します。

Ft void
Fn svcerr_decode SVCXPRT *xprt

パラメータを問題なくデコードできない サービスディスパッチルーチンが呼び出します。 Fn svc_getargs も参照してください。

Ft void
Fn svcerr_noproc SVCXPRT *xprt

呼び出し側が要求したプロシージャ番号を 実現しないサービスディスパッチルーチンが呼び出します。

Ft void
Fn svcerr_noprog SVCXPRT *xprt

目的のプログラムが RPC パッケージで登録されていない場合に呼び出されます。 サービスの設計者には、通常の場合このルーチンは必要ありません。

Ft void
Fn svcerr_progvers SVCXPRT *xprt u_long low_vers u_long high_vers

プログラムの目的のバージョンが RPC パッケージで登録されていない場合に呼び出されます。 サービスの設計者には、通常の場合このルーチンは必要ありません。

Ft void
Fn svcerr_systemerr SVCXPRT *xprt

サービスディスパッチルーチンが、 特定プロトコルでカバーされていないシステムエラーを検出した場合に呼び出します。 たとえばサービスが記憶域を割り振れない場合は、 このルーチンが呼び出されます。

Ft void
Fn svcerr_weakauth SVCXPRT *xprt

認証パラメータが足りないために、 リモートプロシージャコールの実行を拒否する サービスディスパッチルーチンが呼び出します。 このルーチンは、 Fn svcerr_auth xprt AUTH_TOOWEAK を呼び出します。

Ft SVCXPRT *
Fn svcraw_create void

ポインタを戻すためのトイ RPC クライアントを作成します。 実際のトランスポートは、 プロセスのアドレススペース内にあるバッファなので、対応する RPC クライアントは同じアドレススペースに存在する必要があります。 Fn clntraw_create を参照してください。 このルーチンにより、 RPC のシミュレーション、およびラウンドトリップタイムなど、 RPC オーバヘッドの取得をカーネルの干渉なしに実行できます。 このルーチンは、エラーが発生すると NULL を戻します。

Ft SVCXPRT *
Fn svctcp_create int sock u_int send_buf_size u_int recv_buf_size

ポインタを戻す、 TCP/IP ベースの RPC サービストランスポートを作成します。 トランスポートにはソケット Fa sock が関連します。ソケットが RPC_ANYSOCK である場合は、新しいソケットが作成されます。 ソケットがローカル TCP ポートに結合していない場合、 このルーチンはソケットを任意のポートに結合します。処理が終わると、 Fa xprt->xp_sock はトランスポートのソケット記述子になり、 Fa xprt->xp_port はトランスポートのポート番号になります。 このルーチンは、エラーが発生すると NULL を戻します。 TCP ベースの RPC はバッファによる I/O を使用するので、ユーザはバッファサイズを指定できます。 値を 0 にすると、適切なデフォルトが選択されます。

Ft SVCXPRT *
Fn svcfd_create int fd u_int sendsize u_int recvsize

開いている記述子の最上位にサービスを作成します。 一般的にこの記述子は、 TCP などのストリームプロトコルの接続済みソケットです。 Fa sendsize と Fa recvsize は、送信バッファと受信バッファのサイズを指定します。 このサイズが 0 である場合は、適切なデフォルトが選択されます。

Ft SVCXPRT *
Fn svcudp_bufcreate int sock u_int sendsize u_int recvsize

ポインタを戻す UDP/IP ベースの RPC サービストランスポートを作成します。 トランスポートにはソケット Fa sock が関連します。ソケットが RPC_ANYSOCK である場合は、新しいソケットが作成されます。 ソケットがローカル UDP ポートに結合していない場合、 このルーチンはソケットを任意のポートに結合します。 処理が終わると、 Fa xprt->xp_sock はトランスポートのソケット記述子になり、 Fa xprt->xp_port はトランスポートのポート番号になります。 このルーチンは、エラーが発生すると NULL を戻します。

これにより、ユーザは、 UDP ベースの送信 RPC メッセージと受信メッセージの最大パケットサイズを指定できます。

Ft bool_t Fn xdr_accepted_reply XDR *xdrs struct accepted_reply *ar

RPC 応答メッセージのエンコードに使用します。 このルーチンでは、 RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。

Ft bool_t Fn xdr_authunix_parms XDR *xdrs struct authunix_parms *aupp

UNIX 証明書の記述に使用します。 このルーチンは、 RPC 認証パッケージを使用せずに、証明書を作成する場合に便利です。

Ft void
Ft bool_t Fn xdr_callhdr XDR *xdrs struct rpc_msg *chdr

RPC コールヘッダメッセージの記述に使用します。 このルーチンでは、 RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。

Ft bool_t Fn xdr_callmsg XDR *xdrs struct rpc_msg *cmsg

RPC コールメッセージの記述に使用します。 このルーチンは、 RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。

Ft bool_t Fn xdr_opaque_auth XDR *xdrs struct opaque_auth *ap

RPC 認証情報メッセージの記述に使用します。 このルーチンでは、 RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。

Vt struct pmap ;
Ft bool_t Fn xdr_pmap XDR *xdrs struct pmap *regs

さまざまな portmap(8) プロシージャのパラメータの記述に外部的に使用します。 このルーチンは、 Fn pmap_* インタフェースを使用せずに、このパラメータを作成する場合に便利です。

Ft bool_t Fn xdr_pmaplist XDR *xdrs struct pmaplist **rp

ポートマッピングのリストの記述に外部的に使用します。 このルーチンは、 Fn pmap_* インタフェースを使用せずに、このパラメータを作成する場合に便利です。

Ft bool_t Fn xdr_rejected_reply XDR *xdrs struct rejected_reply *rr

RPC 応答メッセージの記述に使用します。 このルーチンは RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。

Ft bool_t Fn xdr_replymsg XDR *xdrs struct rpc_msg *rmsg

RPC 応答メッセージの記述に使用します。 このルーチンは RPC パッケージを使用せずに、 RPC スタイルのメッセージを作成する場合に便利です。

Ft void
Fn xprt_register SVCXPRT *xprt

RPC サービストランスポートハンドルが作成されたら、 RPC サービスパッケージで登録する必要があります。 このルーチンは、グローバル変数 svc_fds を修正します。サービスの設計者には、 通常の場合このルーチンは必要ありません。

Ft void
Fn xprt_unregister SVCXPRT *xprt

RPC サービストランスポートハンドルを破壊する前には、 RPC サービスパッケージで登録を解除する必要があります。 このルーチンは、グローバル変数 svc_fds を修正します。サービスの設計者には、 通常の場合このルーチンは必要ありません。

 

索引

関連項目

rpc_secure3, xdr(3)
"Remote Procedure Calls: Protocol Specification"
"Remote Procedure Call Programming Guide"
"rpcgen Programming Guide"
"RPC: Remote Procedure Call Protocol Specification" RFC1050 "Sun Microsystems, Inc., USC-ISI"


 

索引

Index

名称
ライブラリ
書式
解説
関連項目

jman



Time: 07:07:06 GMT, January 12, 2009