Provided by: manpages-ja-dev_0.5.0.0.20140515+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.65 の一部 である。プロジェクト
       の説明とバグ報告に関する情報は http://www.kernel.org/doc/man-pages/ に書かれている。

                                            2013-09-26                                     RPC(3)