Provided by: manpages-ja-dev_0.5.0.0.20131015+dfsg-2_all bug

名前

       rpc - 遠隔手続き呼び出し(RPC)のためのライブラリ・ルーティン

書式と説明

       これらのルーティンは  C プログラムでネットワークを通して 他のマシンにアクセスするプロシジャを作成すること
       を可能にする。 最初にクライアントはデータパケットをサーバに送るために  プロシジャを呼び出す。  サーバはパ
       ケットを受け取ると、配分ルーチンを呼び出して   要求されたサービスに実行し、返答を送り返す。  最後にプロシ
       ジャ・コールはクライアントへと戻る。

       これらのルーティンを使用するには、ヘッダファイル <rpc/rpc.h> をインクルードすること。

       下記のプロトタイプでは次の型を使用している。

           typedef int bool_t;

           typedef bool_t (*xdrproc_t) (XDR *, void *, ...);

           typedef bool_t (*resultproc_t) (caddr_t resp,
                                           struct sockaddr_in *raddr);AUTH, CLIENT, SVCXPRT, XDR の宣言についてはヘッダファイルを参照。

       void auth_destroy(AUTH *auth);

              このマクロは auth に関連付けられた認証情報を破壊する。破壊は通常は私的なデータ構造の  破棄を含んで
              いる。 auth_destroy() を呼び出した後に auth を使用することは未定義である。

       AUTH *authnone_create(void);

              各リモート・プロシジャ・コールで使用できない仮の認証情報として渡される  RPC 認証ハンドルを作成して
              返す。 これは RPC で使用されるデフォルトの認証である。

       AUTH *authunix_create(char *host, int uid, int gid,
                             int len, int *aup_gids);

              認証情報を含んだ RPC 認証ハンドルを作成して返す。 host  パラメーターは情報が作成されたマシンの名前
              である。  uid  はそのユーザのユーザ  ID  、  gid  はそのユーザの現在のグループ  ID である。 lenaup_gids はそのユーザが所属するグループの配列を参照している。 他のユーザになりすますことは簡単であ
              る。

       AUTH *authunix_create_default(void);

              適切なパラメーターで authunix_create()  を呼び出す。

       int callrpc(char *host, unsigned long prognum,
                   unsigned long versnum, unsigned long procnum,
                   xdrproc_t inproc, char *in,
                   xdrproc_t outproc, char *out);

              マシン host 上で prognum, versnum, procnum  に関連付けられたリモート・プロシジャを呼び出す。  パラ
              メーター  in はプロシジャの引き数のアドレスであり out は結果を格納するアドレスである。 inproc はプ
              ロシジャのパラメーターをエンコードするのに使用され、 outproc  は結果をデコードするのに使用される。
              このルーティンは成功した場合にはゼロを返す。失敗した場合には enum clnt_stat を整数にキャストした値
              を返す。 clnt_perrno()  ルーティンが失敗の状態をメッセージに変換するのに使用できる。

              警告: このルーティンでリモート・プロシジャを呼び出すと通信には UDP/IP が使用される。この際の制限に
              ついては clntudp_create()  を参照すること。このルーティンを使用して認証や時間切れの制御を すること
              はできない。

       enum clnt_stat clnt_broadcast(unsigned long prognum,
                            unsigned long versnum, unsigned long procnum,
                            xdrproc_t inproc, char *in,
                            xdrproc_t outproc, char *out,
                            resultproc_t eachresult);

              callrpc()   と同様であるが、メッセージがローカルのブロードキャスト・ネットワーク  全体へとブロード
              キャストされる点が異っている。回答を受け取る度に このルーティンは以下の形式の eachresult()  を呼び
              出す。

                  eachresult(char *out, struct sockaddr_in *addr);

              ここで outclnt_broadcast()  に渡される out  と同じであるが、リモート・プロシジャからの出力がデ
              コードされている    点のみが異っている。   addr   は結果を送って来たマシンのアドレスを指している。
              eachresult()  がゼロを返した場合、 clnt_broadcast() はさらなる回答を待つ。そうでなければ適切な状態
              で終了する。

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

       enum clnt_stat clnt_call(CLIENT *clnt, unsigned long procnum,
                           xdrproc_t inproc, char *in,
                           xdrproc_t outproc, char *out,
                           struct timeval tout);

              このマクロはクライアント・ハンドル  clnt に関連付けられた procnum リモート・プロシジャを呼び出す。
              クライアント・ハンドルは clnt_create()  のような RPC  クライアント作成ルーティンによって得られる。
              パタメータ  in はプロシジャの引き数のアドレスである。 out はプロシジャの返り値を格納するアドレスで
              ある。 inproc はプロシジャのパラメーターをエンコードするのに使用される。 outproc  はプロシジャの返
              り値をデコードするのに使用される。 tout は結果が返されるのを待つ時間である。

       clnt_destroy(CLIENT *clnt);

              このマクロはクライアントの  RPC ハンドルを破壊する。破壊には通常は clnt 自身も含めて私的なデータ構
              造体の破棄が含まれている。 clnt_destroy()   の呼び出しの後に  clnt  を使用することは未定義である。
              RPC   ライブラリが関連するソケットをオープンした場合には、  それも閉じられる。それ以外の場合にはソ
              ケットはオープンされたままである。

       CLIENT *clnt_create(char *host, unsigned long prog,
                           unsigned long vers, char *proto);

              一般的なクライアントの作成ルーティンである。  host  はサーバのあるリモートホストの名前を指定する。
              proto  どのような通信プロトコルを使用するかを指定する。現在ここに 使用できる値は “udp” と “tcp” で
              ある。 デフォルトの時間切れが設定されるが、 clnt_control()  を使用して変更可能である。

              警告: UDP を使用した場合には欠点がある。 UDP に基づいた RPC メッセージは 最大でも 8  KByte  のエン
              コードデータしか保持する ことができないため、大きな引き数や巨大な結果を取るプロシジャに は使用する
              ことができない。

       bool_t clnt_control(CLIENT *cl, int req, char *info);

              このマクロは各種クライアントについて情報を変更したり、取得したり するのに使用する。 req は操作の種
              類を指定する。  info  は情報へのポインターである。  UDP  と  TCP どちらの場合も使用可能な req の値
              と、その引き数の型、およびその内容は以下の通りである:

                  CLSET_TIMEOUT  struct timeval // 時間切れを設定する
                  CLGET_TIMEOUT  struct timeval // 時間切れを取得する

              注意: clnt_control()  を使用して時間切れを設定した場合にはそれ以後は clnt_call()  に渡される時間切
              れパラメーターは全て無視される。

                  CLGET_SERVER_ADDR  struct sockaddr_in  // サーバアドレスを取得する

              以下の操作は UDP の場合にのみ有効である:

                  CLSET_RETRY_TIMEOUT  struct timeval // 再送間隔を設定する
                  CLGET_RETRY_TIMEOUT  struct timeval // 再送間隔を取得する

              再送間隔は次に要求を再送する前に "UDP RPC" がサーバの回答を待つ時間である。

       clnt_freeres(CLIENT * clnt, xdrproc_t outproc, char *out);

              このマクロは RPC 呼び出しの結果のデコードの際に RPC/XDR システムによって割当てられたデータを解放す
              る。 パラメーター out は結果のアドレスである。 outproc は結果を記述している XDR ルーティンである。
              このルーティンは結果の解放に成功した場合には 1 を返す。 失敗した場合にはゼロを返す。

       void clnt_geterr(CLIENT *clnt, struct rpc_err *errp);

              このマクロはクライアント・ハンドルのエラー構造体を errp アドレスで指定された構造体へコピーする。

       void clnt_pcreateerror(char *s);

              標準エラー出力に、なぜクライアント RPC ハンドルの作成が できなかったかについてのメッセージを表示す
              る。   メッセージの前に文字列   s   とコロン(:)が表示される。   clnt_create(),   clntraw_create(),
              clnttcp_create(), clntudp_create()  の呼び出しが失敗した時に使用すること。

       void clnt_perrno(enum clnt_stat stat);

              標準エラー出力に stat によって指示されるエラー状態に対応するメッセージを表示する。 callrpc()  の後
              に使用すること。

       clnt_perror(CLIENT *clnt, char *s);

              標準エラー出力に、なぜ RPC 呼び出しが失敗したかについてのメッセージを表示する。 clnt  はコールに使
              用したハンドルである。  メッセージの前に文字列 s とコロン(:)が表示される。 clnt_call()  が失敗した
              後に使用すること。

       char *clnt_spcreateerror(char *s);

              clnt_pcreateerror()  と同様であるが、標準エラー出力へ表示するかわりに文字列を返す点が異っている。

              バグ: 静的な領域へのポインターを返すため、呼び出しごとに上書きされる。

       char *clnt_sperrno(enum clnt_stat stat);

              clnt_perrno()  と同じ引き数を取るが、なぜ RPC 呼び出しが失敗したかについてのメッセージを標準エラー
              出力に表示する かわりに、メッセージを格納している文字列へのポインターを返す。 文字列は  NEWLINE(改
              行) で終っている。

              clnt_sperrno()  はプログラムが標準エラー出力を持っていない場合(プログラムがサーバとし て走っている
              場合にはよくありえる)や、プログラマーがメッセージを     printf(3)     で出力することを望まない場合
              や、メッセージの形式が clnt_perrno()  がサポートするものとは異っている場合などに clnt_perrno()  の
              かわりに使用される。 注意: clnt_sperror()  や clnt_spcreaterror()  とは違って clnt_sperrno()  は静
              的データへのポインターを返す。しかし呼び出しごとに上書きされることはない。

       char *clnt_sperror(CLIENT *rpch, char *s);

              clnt_perror()   と同様であるが、標準エラー出力に表示する代りに (clnt_sperrno()  のように) 文字列へ
              のポインターを返す点が異っている。

              バグ: 静的な領域へのポインターを返すため、呼び出しごとに上書きされる。

       CLIENT *clntraw_create(unsigned long prognum, unsigned long versnum);

              このルーティンはリモート・プログラム prognum、 バージョン versnum のための擬似 RPC  クライアントを
              作成する。メッセージをサービスに渡すために使用する  通信は実際にはそのプロセスのアドレス空間にある
              バッファーである。   それで、対応する    RPC    サーバが同じアドレス空間の中にいなければならない。
              svcraw_create()   を参照すること。 これにより RPC のシミュレーションや、カーネル・インターフェース
              に影響されずに 応答時間などの  RPC  オーバヘッドの獲得ができる。  失敗した場合にはこのルーティンは
              NULL を返す。

       CLIENT *clnttcp_create(struct sockaddr_in *addr,
                       unsigned long prognum, unsigned long versnum,
                       int *sockp, unsigned int sendsz, unsigned int recvsz);

              このルーティンはリモート・プログラム  prognum、 バージョン versnum のための RPC クライアントを作成
              する。クライアントは通信に   TCP/IP   を使用する。リモート・プログラムはインターネット・アドレスの
              *addr にある。 addr->sin_port がゼロならば、実際にリモート・プログラムが listen しているポートが設
              定される。(この情報のためにリモートの  portmap サービスが利用される。) パラメーター sockp はソケッ
              トである。もしこれが RPC_ANYSOCK  に設定されている場合は、このルーティンが新しいソケットをオープン
              して  sockp  に設定する。 TCP に基づいた RPC はバッファされた I/O を使用するため、ユーザはパラメー
              ター sendszrecvsz を使用して送信バッファと受信バッファのサイズを指定することができる。  ゼロを
              指定した場合には適切なデフォルトが選択される。 このルーティンは失敗した場合は NULL を返す。

       CLIENT *clntudp_create(struct sockaddr_in *addr,
                       unsigned long prognum, unsigned long versnum,
                       struct timeval wait, int *sockp);

              このルーティンはリモート・プログラム  prognum、 バージョン versnum のための RPC クライアントを作成
              する。クライアントは通信に   UDP/IP   を使用する。リモート・プログラムはインターネット・アドレスの
              *addr にある。 addr->sin_port がゼロならば、実際にリモート・プログラムが listen しているポートが設
              定される。(この情報のためにリモートの  portmap サービスが利用される。) パラメーター sockp はソケッ
              トである。もしこれが RPC_ANYSOCK  に設定されている場合は、このルーティンが新しいソケットをオープン
              して sockp に設定する。 UDP 通信は回答があるか、時間切れが起こるまで wait 間隔で呼び出しメッセージ
              を再送する。時間切れが起こるまでの合計時間は clnt_call()  で指定する。

              警告:  UDP に基づいた RPC メッセージは最大でも 8 Kbyte までのエンコードされたデータしか 保持できな
              いため、この通信は大きな引き数や巨大な結果を取る プロシジャには使用できない。

       CLIENT *clntudp_bufcreate(struct sockaddr_in *addr,
                   unsigned long prognum, unsigned long versnum,
                   struct timeval wait, int *sockp,
                   unsigned int sendsize, unsigned int recosize);

              このルーティンはリモート・プログラム prognum、 バージョン versnum のための RPC  クライアントを作成
              する。クライアントは通信に   UDP/IP   を使用する。リモート・プログラムはインターネット・アドレスの
              *addr にある。 addr->sin_port がゼロならば、実際にリモート・プログラムが listen しているポートが設
              定される。(この情報のためにリモートの portmap サービスが利用される。) パラメーター sockp  はソケッ
              トである。もしこれが  RPC_ANYSOCK に設定されている場合は、このルーティンが新しいソケットをオープン
              して sockp に設定する。 UDP 通信は回答があるか、時間切れが起こるまで wait 間隔で呼び出しメッセージ
              を再送する。時間切れが起こるまでの合計時間は clnt_call()  で指定する。

              これを使用すると UDP に基づいた RPC メッセージにおいて送信パケットや  受信パケットの最大サイズを指
              定することが可能になる。

       void get_myaddress(struct sockaddr_in *addr);

              このマシンの  IP  アドレスを  *addr に格納する。 /etc/hosts を扱うライブラリ・ルーティンは使用しな
              い。ポート番号は常に htons(PMAPPORT) に設定される。

       struct pmaplist *pmap_getmaps(struct sockaddr_in *addr);

              portmap サービスのためのユーザインターフェースであり、 IP アドレス *addr にあるホストの現在の  RPC
              プログラムからポート番号へのマッピングの一覧を返す。   このルーティンが   NULL  を返す場合もある。
              `rpcinfo -p' コマンドはこのルーティンを使用している。

       unsigned short pmap_getport(struct sockaddr_in *addr,
                           unsigned long prognum, unsigned long versnum,
                           unsigned int protocol);

              portmap サービスのためのユーザ・インターフェースで、 プログラム番号 prognum、 バージョン versnum、
              関連付けられた通信プロトコル     protocol     をサポートするサービスが待っているポート番号を返す。
              protocol の値はほとんどの場合 IPPROTO_UDP か IPPROTO_TCP である。 返り値ゼロはマッピングが存在しな
              いか、 RPC システムがリモートの portmap サービスの参照に失敗したことを意味する。後者の場合は大域変
              数 rpc_createerr が RPC 状態を保持している。

       enum clnt_stat pmap_rmtcall(struct sockaddr_in *addr,
                           unsigned long prognum, unsigned long versnum,
                           unsigned long procnum,
                           xdrproc_t inproc, char *in,
                           xdrproc_t outproc, char *out,
                           struct timeval tout, unsigned long *portp);

              portmap サービスのためのユーザ・インターフェースで、 IP アドレス *addr のホストの portmap を参照し
              て、 RPC 呼び出しを生成し、そのホスト上のプロシジャを呼び出す。 パラメーター *portp はプロシジャが
              成功した場合にはプログラムのポート番号に修正される。   他のパラメーターの定義については  callrpc()
              や clnt_call()  で説明してある。 このプロシジャは “ping” のみに使用すべきである。 clnt_broadcast()
              も参照すること。

       bool_t pmap_set(unsigned long prognum, unsigned long versnum,
                       unsigned int protocol, unsigned short port);

              portmap  サービスのためのユーザ・インターフェースで、  [prognum,versnum,protocol]   の組み合わせと
              port  との間のマッピングを、そのマシン上の  portmap サービスに登録する。 protocol はほとんどの場合
              IPPROTO_UDPIPPROTO_TCP のどちらかである。 このルーティンは成功した場合には 1  を返す。失敗した
              場合にはゼロを返す。 svc_register()  によって自動的に実行される。

       bool_t pmap_unset(unsigned long prognum, unsigned long versnum);

              portmap サービスのためのユーザ・インターフェースで、 [prognum,versnum,*] の組み合わせと ports の間
              のマッピングをそのマシン上の  portmap  サービスから削除する。このルーティンは成功した場合は 1 を返
              す。 失敗した場合には 0 を返す。

       int registerrpc(unsigned long prognum, unsigned long versnum,
                       unsigned long procnum, char *(*procname)(char *),
                       xdrproc_t inproc, xdrproc_t outproc);

              RPC サービスパッケージを使用して procname  プロシジャを登録する。プログラム  prognum、  バージョン
              versnum、  プロシジャ procnum への要求が届いた場合、 procname がパラメーターへのポインターを持って
              呼び出される。 progname は静的な結果へのポインターを返す必要がある。 inproc はパラメーターをデコー
              ドするために使用される。 outproc は結果をエンコードするために使用される。 このルーティンは登録に成
              功した場合にはゼロを返す。 失敗した場合には -1 を返す。

              警告:     この形式で登録されたリモート・プロシジャは     UDP/IP     通信を使用する。制限に関しては
              svcudp_create() を参照すること。

       struct rpc_createerr rpc_createerr;

              成功しなかった RPC クライアント生成ルーティンによって設定される大域変数。 clnt_pcreateerror() ルー
              ティンが理由を表示するために使用する。

       void svc_destroy(SVCXPRT *xprt);

              このマクロは通信ハンドル  xprt の RPC サービスを破壊する。破壊には通常、 xprt を含めて、私的なデー
              タ構造体の破棄が含まれている。 このルーティンを呼び出した後に xprt を使用することは未定義である。

       fd_set svc_fdset;

              RPC  サービス側のファイル・ディスクリプターのビットマスクを反映した大域変数。  select(2)  システム
              コールのパラメーターのために利用できる。これは サービスの実装者が svc_run() を呼び出さなずに、独自
              の非同期イベント処理を用いる場合にのみ意味がある。 この変数は読み込み専用で (そのまま select(2) へ
              渡してはならない!)、 svc_getreqset()  呼び出しや生成ルーティンの後に変更されているかもしれない。

       int svc_fds;

              svc_fdset  に似ているが、32 ディスクリプターに制限されている。 このインターフェースは svc_fdset に
              よって置き換えられた。

       svc_freeargs(SVCXPRT *xprt, xdrproc_t inproc, char *in);

              このマクロはサービス・プロシジャが svc_getargs()  を使用して引き数をデコードした時に RPC/XDR  シス
              テムによって割り当てられたデータを解放する。  このルーティンは解放に成功した場合には 1 を返す。 失
              敗した場合にはゼロを返す。

       svc_getargs(SVCXPRT *xprt, xdrproc_t inproc, char *in);

              このマクロは RPC サービス通信ハンドル xprt に関連付けられた  RPC  要求の引き数をデコードする。パラ
              メーター  in は引き数の格納されたアドレスである。 inproc は引き数をデコードするための XDR ルーティ
              ンである。 このルーティンはデコードに成功した場合は 1 を返す。 失敗した場合はゼロを返す。

       struct sockaddr_in *svc_getcaller(SVCXPRT *xprt);

              RPC サービス通信ハンドル xprt に関連付けられたプロシジャの呼び出し元のネットワーク・アドレスを  取
              得するための標準的な手段。

       void svc_getreqset(fd_set *rdfds);

              このルーティンはサービスの実装者が svc_run()  を呼び出さず、独自の非同期イベント処理を実装する場合
              にのみ意味がある。  これは select(2)  システムコールが RPC ソケットに RPC 要求が到着したと返した場
              合にのみ呼び出される。 rdfds は結果の読み込みファイル・ディスクリプターのビットマスクである。 この
              ルーティンは rdfds の値に関連付けられた全てのソケットのサービスが行なわれた時に 返ってくる。

       void svc_getreq(int rdfds);

              svc_getreqset()  に似ているがディスクリプターの数が 32  に制限されている。  このインターフェースは
              svc_getreqset()  によって置き換えられた。

       bool_t svc_register(SVCXPRT *xprt, unsigned long prognum,
                           unsigned long versnum,
                           void (*dispatch)(svc_req *, SVCXPRT *),
                           unsigned long protocol);

              prognumversnum をサービス配分プロシジャ dispatch で関連付ける。 protocol がゼロの場合、サービ
              スは portmap サービスには登録されない。 protocol がゼロ以外の場合、 [prognum,versnum,protocol]  の
              組み合わせと   xprt->xp_port  とのマッピングがローカルの  portmap  サービスに登録される。(一般的に
              protocol はゼロ、 IPPROTO_UDPIPPROTO_TCP のどれかである。)  プロシジャ dispatch  は以下の形式で
              ある:

                  dispatch(struct svc_req *request, SVCXPRT *xprt);

              svc_register()  ルーティンは成功した場合は 1 を返す。失敗した場合はゼロを返す。

       void svc_run(void);

              このルーティンは戻ってこない。これは  RPC 要求の到着を待ち、どれかが届いた場合に svc_getreq() を使
              用して適切なサービス・プロシジャを呼び出す。 このプロシジャは通常は select(2)   システムコールから
              返るのを待っている。

       bool_t svc_sendreply(SVCXPRT *xprt, xdrproc_t outproc, char *out);

              RPC サービス配分ルーティンによってリモート・プロシジャ・コールの結果を 返すために呼び出される。 パ
              ラメーター  xprt はその要求に関連付けられた通信ハンドルである。 outproc は結果をエンコードするため
              に使用する XDR ルーティンである。 out は結果のアドレスである。このルーティンは成功した場合は 1  を
              返す。 失敗した場合はゼロを返す。

       void svc_unregister(unsigned long prognum, unsigned long versnum);

              配分ルーティンから [prognum,versnum] および [prognum,versnum,*] の組み合わせからポート番号へのマッ
              ピングを全て削除する。

       void svcerr_auth(SVCXPRT *xprt, enum auth_stat why);

              認証エラーによりリモート・プロシジャ・コールの実行を拒否された  場合にサービス配分ルーティンによっ
              て呼び出される。

       void svcerr_decode(SVCXPRT *xprt);

              パラメータのデコードに失敗した場合に  サービス配分ルーティンによって呼び出される。   svc_getargs()
              も参照すること。

       void svcerr_noproc(SVCXPRT *xprt);

              要求のあったプロシジャ番号が実装されていない場合に サービス配分ルーティンより呼び出される。

       void svcerr_noprog(SVCXPRT *xprt);

              RPC   パッケージに要求されたプログラムが登録されていない場合に呼び出される。  サービスの実装には通
              常、このルーティンは必要ない。

       void svcerr_progvers(SVCXPRT *xprt);

              RPC パッケージに要求されたバージョンのプログラムが登録されていない場合に  呼び出される。サービスの
              実装には通常、このルーティンは必要ない。

       void svcerr_systemerr(SVCXPRT *xprt);

              特定のプロトコルによってカバーされていなシステム・エラーが  検出された場合にサービス配分ルーティン
              によって呼び出される。 例えば、サービスがそれ以上、記憶装置を割り当てることができない場合には この
              ルーティンが呼び出されるかもしれない。

       void svcerr_weakauth(SVCXPRT *xprt);

              認証パラメータが足りないためにリモート・プロシジャ・コールの実行を    拒否された場合にサービス配分
              ルーティンによって呼び出される。 このルーティンは svcerr_auth(xprt, AUTH_TOOWEAK) を呼び出す。

       SVCXPRT *svcfd_create(int fd, unsigned int sendsize,
                             unsigned int recvsize);

              任意のオープンされたディスクリプター上にサービスを作成する。 典型的に、ディスクリプターは TCP のよ
              うなストリーム・プロトコルで接続されたソケットである。 sendsizerecvsize には送信バッファと受信
              バッファの大きさを指定する。もしゼロが指定された 場合は適切なデフォルトが選択される。

       SVCXPRT *svcraw_create(void);

              このルーティンは擬似 RPC サービス通信を生成して、そのポインターを返す。 通信は実際にはそのプロセス
              のアドレス空間にあるバッファなので  対応する  RPC クライアントは同じアドレス空間にいる必要がある。
              clntraw_create()  を参照すること。 このルーティンで  RPC  のシミュレーションや、カーネル・インター
              フェースに影響されずに応答時間などの  RPC オーバヘッドを取得ができる。このルーティンは失敗した場合
              は NULL を返す。

       SVCXPRT *svctcp_create(int sock, unsigned int send_buf_size,
                              unsigned int recv_buf_size);

              このルーティンは TCP/IP に基づく RPC サービス通信を作成し、それへのポインターを返す。 通信はソケッ
              ト sock に結びつけられる。 sockRPC_ANYSOCK でも良い。この場合は新しいソケットが作成される。 も
              しソケットがローカルな TCP ポートに bind されていない場合は、 このルーティンが適当なポートに  bind
              する。 補完された場合、xprt->xp_sock には通信のソケット・ ディスクリプターが、xprt->xp_port には通
              信のポート番号が  設定される。  このルーティンは失敗した場合は NULL を返す。 TCP に基づいた RPC は
              バッファされた I/O を使用するため、 ユーザはバッファの大きさを指定できる。  ゼロを指定した場合は適
              切なデフォルトが選択される。

       SVCXPRT *svcudp_bufcreate(int sock, unsigned int sendsize,
                                 unsigned int recosize);

              このルーティンは UDP/IP に基づいた RPC サービス通信を作成し、 そのポインターを返す。通信はソケット
              sock  に関連付けられる。  sockRPC_ANYSOCK でも良い。この場合は新しいソケットが作成される。 ソ
              ケットがローカルの UDP ポートに bind されていない場合には このルーティンは適当なポートに  bind  す
              る。  補完された場合、xprt->xp_sock  に通信のソケットの ディスクリプターが、xprt->xp_port に通信の
              ポート番号が 設定される。このルーティンは失敗した場合には NULL を返す。

              これを使用すると UDP に基づいた RPC メッセージにおいて送信パケットや  受信パケットの最大サイズを指
              定することが可能になる。

       SVCXPRT *svcudp_create(int sock);

              送信パケットと受信パケットのサイズを同じデフォルトの値  SZ に指定した svcudp_bufcreate(sock,SZ,SZ)
              と等価である。

       bool_t xdr_accepted_reply(XDR *xdrs, struct accepted_reply *ar);

              RPC 応答メッセージをエンコードするのに使用する。このルーティンは RPC パッケージを用いずに RPC-形式
              のメッセージを作成しようとする場合に便利である。

       bool_t xdr_authunix_parms(XDR *xdrs, struct authunix_parms *aupp);

              UNIX 形式の証明書を記述するために使用する。このルーティンは RPC 認証パッケージを使用せずにこれらの
              証明書を作成しようとする場合に便利である。

       void xdr_callhdr(XDR *xdrs, struct rpc_msg *chdr);

              RPC 呼び出しのヘッダー・メッセージを記述するために使用する。 このルーティンは RPC パッケージを使用
              せずに RPC-形式のメッセージを作成しようとする場合に便利である。

       bool_t xdr_callmsg(XDR *xdrs, struct rpc_msg *cmsg);

              RPC 呼び出しメッセージを記述するのに使用する。 このルーティンは RPC パッケージを使用せずに  RPC-形
              式のメッセージを作成しようとする場合に便利である。

       bool_t xdr_opaque_auth(XDR *xdrs, struct opaque_auth *ap);

              PRC   認証情報メッセージを記述するために使用する。   このルーティンは  RPC  パッケージを使用せずに
              RPC-形式のメッセージを作成しようとする場合に便利である。

       bool_t xdr_pmap(XDR *xdrs, struct pmap *regs);

              各種の portmap プロシジャへのパラメーターを外部的に記述するために使用する。 このルーティンは  pmap
              インターフェースを使用せずに、これらのパラメーターを 作成したい場合に便利である。

       bool_t xdr_pmaplist(XDR *xdrs, struct pmaplist **rp);

              ポートのマッピングのリストを外部的に記述するために使用する。  このルーティンは pmap インターフェー
              スを使用せずに、これらのパラメーターを 作成したい場合に便利である。

       bool_t xdr_rejected_reply(XDR *xdrs, struct rejected_reply *rr);

              RPC 応答メッセージを記述するために使用する。このルーティンは RPC パッケージを使用せずに、 RPC-形式
              のメッセージを作成したい場合に便利である。

       bool_t xdr_replymsg(XDR *xdrs, struct rpc_msg *rmsg);

              RPC 応答メッセージを記述するために使用する。 このルーティンは RPC パッケージを使用せずに、 RPC  形
              式のメッセージを作成したい場合に便利である。

       void xprt_register(SVCXPRT *xprt);

              RPC  サービス通信ハンドルを生成した後に、それら自身を  RPC  サービス・パッケージに登録する必要があ
              る。 このルーティンは大域変数  svc_fds  を修正する。サービスの実装者は通常、このルーティンは必要な
              い。

       void xprt_unregister(SVCXPRT *xprt);

              RPC サービス通信ハンドルを破壊する前に、それを RPC 通信パッケージから登録解除する必要がある。 この
              ルーティンは大域変数 svc_fds を修正する。サービスの実装者は通常、このルーティンは必要ない。

関連項目

       xdr(3)

       以下のマニュアル:
              Remote Procedure Calls: Protocol Specification
              Remote Procedure Call Programming Guide
              rpcgen Programming Guide

       RPC: Remote Procedure Call Protocol Specification, RFC 1050, Sun Microsystems, Inc., USC-ISI.

この文書について

       この man ページは Linux man-pages プロジェクトのリリース 3.54 の一部 である。プロジェクトの説明とバグ報告
       に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。

                                                   2008-07-17                                             RPC(3)