日本語 man コマンド類 (ja-man-1.1j_5) と日本語 man ドキュメント (ja-man-doc-5.4 (5.4-RELEASE 用) など) をインストールすると、以下のような man コマンド閲覧、キーワード検索が コンソールからできるようになります。
4.11-RELEASE-K, 5.4-RELEASE-K, 5.5-RELEASE-K, 6.0-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K, 12.1-RELEASE-K は、 プライベート版 (小金丸が編集してまとめたもの) ですが、 より多くの翻訳したファイルが含まれています。 (5.4-RELEASE-K から 6.4-RELEASE-K, 7.0-RELEASE-K から 7.4-RELEASE-K, 8.0-RELEASE-K から 8.4-RELEASE-K, 9.0-RELEASE-K から 9.3-RELEASE-K, 10.0-RELEASE-K から 10.3-RELEASE-K, 11.0-RELEASE-K から 11.4-RELEASE-K, 12.0-RELEASE-K から 12.4-RELEASE-K, 13.0-RELEASE-K から 13.3-RELEASE-K, 14.0-RELEASE-K から 14.1-RELEASE-K は、全翻訳済み)
13.3-STABLE-K, 15.0-CURRENT-K は現在、作成中で日々更新されています。
Table of Contents
RPC(3) FreeBSD ライブラリ関数マニュアル RPC(3)
名称
rpc -- リモートプロシージャコールのためのライブラリルーチン
ライブラリ
標準 C ライブラリ (libc, -lc)
書式
#include <rpc/rpc.h>
#include <netconfig.h>
解説
これらのルーチンは、C 言語プログラムがネットワークの向こう側の他のマシン
でプロシージャ呼び出しを行なえるようにします。最初に、クライアントは、リ
クエスト (要求) をサーバに送ります。リクエスト (要求) の受け取りにおい
て、サーバは、要求されたサービスを実行するためにディスパッチルーチンを呼
び出し、次に、応答を送り返します。
すべての RPC ルーチンは、ヘッダ <rpc/rpc.h> を必要とします。struct
netconfig を必要とするルーチンは、また、<netconfig.h> が含まれることを必
要とします。
ネットタイプ (nettype)
ハイレベルな RPC インタフェースルーチンのいくつかは、引数の 1 つ (例え
ば、clnt_create(), svc_create(), rpc_reg(), rpc_call()) として nettype 文
字列を取ります。この文字列は、特別のアプリケーションで使用することができ
るトランスポートのクラスを定義します。
nettype 引数は、次の 1 つです:
netpath NETPATH 環境変数でそれらのトークン名によって示された転送を選
びます。NETPATH は、設定されていないか NULL です、そのデフォ
ルトは、"visible" です。"netpath" は、デフォルトの nettype で
す。
visible /etc/netconfig ファイルの中に visible フラグ (v) に設定した転
送を選びます。
circuit_v /etc/netconfig ファイルのエントリから接続指向の転送 (セマン
ティック (意味) "tpi_cots" または "tpi_cots_ord") のみで選ば
れたものを除いてこれは、"visible" と同じです。
datagram_v /etc/netconfig コネクションレス型データグラム転送 (セマン
ティック (意味) "tpi_clts") のみで選ばれたものを除いてこれ
は、"visible" と同じです。
circuit_n 接続指向のデータグラム転送 (セマンティック (意味) "tpi_cots"
または "tpi_cots_ord") のみで選ばれたものを除いてこれは、
"netpath" と同じです。
datagram_n コネクションレス型データグラム転送 (セマンティック (意味)
"tpi_clts") のみで選ばれたものを除いてこれは、"netpath" と同
じです。
udp これは、インターネット UDP のバージョン 4 と 6 の両方について
参照します
tcp これは、インターネット TCP のバージョン 4 と 6 の両方について
参照します
nettype が NULL であるなら、それは、"netpath" をデフォルトとします。転送
は、NETPATH 変数で左から右の順か、/etc/netconfig ファイルで上から下の順に
試みられます。
派生タイプ (derived types)
RPC インタフェースで使用される派生タイプは、次のように定義されます:
typedef uint32_t rpcprog_t;
typedef uint32_t rpcvers_t;
typedef uint32_t rpcproc_t;
typedef uint32_t rpcprot_t;
typedef uint32_t rpcport_t;
typedef int32_t rpc_inline_t;
データ構造体
RPC パッケージによって使用されるデータ構造体のいくつかは、以下に示されま
す。
AUTH 構造体
/*
* 認証インフォメーション。クライアントには、不透明です。
*/
struct opaque_auth {
enum_t oa_flavor; /* auth (認証) のフレイバ */
caddr_t oa_base; /* より多くの auth スタッフのアドレス */
u_int oa_length; /* MAX_AUTH_BYTES を超えない */
};
/*
* auth ハンドル、クライアント側認証符号へのインタフェース。
*/
typedef struct {
struct opaque_auth ah_cred;
struct opaque_auth ah_verf;
struct auth_ops {
void (*ah_nextverf)();
int (*ah_marshal)(); /* nextverf & シリアライズ */
int (*ah_validate)(); /* 検証を認証する */
int (*ah_refresh)(); /* 証明書をリフレッシュする */
void (*ah_destroy)(); /* この構造体を破壊する */
} *ah_ops;
caddr_t ah_private;
} AUTH;
CLIENT 構造体
/*
* クライアント rpc ハンドル。
* 個々の実装によって作成。
* クライアントは、初期値設定 auth に責任があります。
*/
typedef struct {
AUTH *cl_auth; /* 認証 */
struct clnt_ops {
enum clnt_stat (*cl_call)(); /* リモート手続きを呼び出す */
void (*cl_abort)(); /* 呼び出しを中断 */
void (*cl_geterr)(); /* 指定したエラーコードを取得 */
bool_t (*cl_freeres)(); /* 結果を解放する */
void (*cl_destroy)(); /* この構造体を破壊する */
bool_t (*cl_control)(); /* rcp の ioctl() */
} *cl_ops;
caddr_t cl_private; /* プライベートスタッフ */
char *cl_netid; /* ネットワーク識別子 */
char *cl_tp; /* デバイス名 */
} CLIENT;
SVCXPRT 構造体
enum xprt_stat {
XPRT_DIED,
XPRT_MOREREQS,
XPRT_IDLE
};
/*
* サーバ側転送ハンドル
*/
typedef struct {
int xp_fd; /* サーバハンドルのためのファイル記述子 */
u_short xp_port; /* 廃止 */
const struct xp_ops {
bool_t (*xp_recv)(); /* 着信要求を受信 */
enum xprt_stat (*xp_stat)(); /* 転送状態を取得 */
bool_t (*xp_getargs)(); /* 引数を取得 */
bool_t (*xp_reply)(); /* 応答送信 */
bool_t (*xp_freeargs)(); /* 引数のために割り付けたメモリを
解放 */
void (*xp_destroy)(); /* この構造体を破壊する */
} *xp_ops;
int xp_addrlen; /* リモートアドレスの長さ. 廃止 */
struct sockaddr_in xp_raddr; /* 廃止 */
const struct xp_ops2 {
bool_t (*xp_control)(); /* すべての関数で捕獲 */
} *xp_ops2;
char *xp_tp; /* 転送プロバイダデバイス名 */
char *xp_netid; /* ネットワーク識別子 */
struct netbuf xp_ltaddr; /* ローカル転送アドレス */
struct netbuf xp_rtaddr; /* リモート転送アドレス */
struct opaque_auth xp_verf; /* raw 転送検証 */
caddr_t xp_p1; /* プライベート: svc ops によって使用 */
caddr_t xp_p2; /* プライベート: svc ops によって使用 */
caddr_t xp_p3; /* プライベート: svc lib によって使用 */
int xp_type /* 転送タイプ */
} SVCXPRT;
svc_reg 構造体
struct svc_req {
rpcprog_t rq_prog; /* サービスプログラム番号 */
rpcvers_t rq_vers; /* サービスプロトコルバージョン */
rpcproc_t rq_proc; /* 望みの手続き */
struct opaque_auth rq_cred; /* 配線からの raw creds */
caddr_t rq_clntcred; /* リードオンリ cooked cred */
SVCXPRT *rq_xprt; /* 関連転送 */
};
XDR 構造体
/*
* XDR 操作。
* XDR_ENCODE は、タイプをストリーム中にコード化させます。
* XDR_DECODE は、ストリームからタイプを抽出させます。
* XDR_FREE は、XDR_DECODE 要求で割り付けられた空間を解放するためにを使用す
* ることができます。
*/
enum xdr_op {
XDR_ENCODE=0,
XDR_DECODE=1,
XDR_FREE=2
};
/*
* これは、外部データのユニット毎のバイト数です。
*/
#define BYTES_PER_XDR_UNIT (4)
#define RNDUP(x) ((((x) + BYTES_PER_XDR_UNIT - 1) /
BYTES_PER_XDR_UNIT) \ * BYTES_PER_XDR_UNIT)
/*
* xdrproc_t は、コード化されるか復号化される各データタイプに存在して
* います。
* xdrproc_t への 2 番目の引数は、不透明なポインタへのポインタです。
* 一般的に、不透明なポインタは、復号化されるためのデータタイプの
* 構造体を指します。
* これが 0 を指すなら、タイプルーチンは、適切なサイズの動的記憶域
* を割り付けて、それを返すべきです。
* bool_t (*xdrproc_t)(XDR *, caddr_t *);
*/
typedef bool_t (*xdrproc_t)();
/*
* XDR ハンドル。
* ストリームに適用されている操作、特定の実装のための操作
* ベクトルを含む
*/
typedef struct {
enum xdr_op x_op; /* 操作; 早い追加パラメータ */
struct xdr_ops {
bool_t (*x_getlong)(); /* 基本的なストリームから long を
取得 */
bool_t (*x_putlong)(); /* 基本的なストリームへ long を
出力 */
bool_t (*x_getbytes)(); /* 基本的なストリームから複数バイト
を取得 */
bool_t (*x_putbytes)(); /* 基本的なストリームへ複数バイトを
出力 */
u_int (*x_getpostn)(); /* 始めからのバイトオフセットを返す */
bool_t (*x_setpostn)(); /* ストリームを再配置させる */
long * (*x_inline)(); /* バッファリングされたデータへの
バッファの迅速なポインタ */
void (*x_destroy)(); /* この xdr_stream のプライベートを
解放 */
} *x_ops;
caddr_t x_public; /* ユーザのデータ */
caddr_t x_private; /* プライベートデータへのポインタ */
caddr_t x_base; /* 位置情報のためにプライベートで使用 */
u_int x_handy; /* 特別のプライベート単語 */
} XDR;
/*
* netbuf 構造体。この構造体は、SysV システムで <xti.h> で定義されますが、
* NetBSD / FreeBSD は、XTI を使用しません。
*
* 通常、buf は、struct sockaddr を指し、そして、len と maxlen は、
* それぞれそのソケットアドレスの長さと最大長を含みます。
*
*/
struct netbuf {
unsigned int maxlen;
unsigned int len;
void *buf;
};
/*
* アドレスの形式と XTI t_bind 呼び出しのオプション引数。
* 互換性に提供しているだけであって、svc_tli_create() への引数を
* 除いて、使用するべきではありません。
*/
struct t_bind {
struct netbuf addr;
unsigned int qlen;
};
ルーチンの索引
次のテーブルは、RPC ルーチンとそれらが説明されるマニュアル参照ページをリ
ストしています:
RPC ルーチン マニュアル参照ページ
auth_destroy() rpc_clnt_auth(3)
authdes_create() rpc_soc(3)
authnone_create() rpc_clnt_auth(3)
authsys_create() rpc_clnt_auth(3)
authsys_create_default() rpc_clnt_auth(3)
authunix_create() rpc_soc(3)
authunix_create_default() rpc_soc(3)
callrpc() rpc_soc(3)
clnt_broadcast() rpc_soc(3)
clnt_call() rpc_clnt_calls(3)
clnt_control() rpc_clnt_create(3)
clnt_create() rpc_clnt_create(3)
clnt_create_timed() rpc_clnt_create(3)
clnt_create_vers() rpc_clnt_create(3)
clnt_create_vers_timed() rpc_clnt_create(3)
clnt_destroy() rpc_clnt_create(3)
clnt_dg_create() rpc_clnt_create(3)
clnt_freeres() rpc_clnt_calls(3)
clnt_geterr() rpc_clnt_calls(3)
clnt_pcreateerror() rpc_clnt_create(3)
clnt_perrno() rpc_clnt_calls(3)
clnt_perror() rpc_clnt_calls(3)
clnt_raw_create() rpc_clnt_create(3)
clnt_spcreateerror() rpc_clnt_create(3)
clnt_sperrno() rpc_clnt_calls(3)
clnt_sperror() rpc_clnt_calls(3)
clnt_tli_create() rpc_clnt_create(3)
clnt_tp_create() rpc_clnt_create(3)
clnt_tp_create_timed() rpc_clnt_create(3)
clnt_udpcreate() rpc_soc(3)
clnt_vc_create() rpc_clnt_create(3)
clntraw_create() rpc_soc(3)
clnttcp_create() rpc_soc(3)
clntudp_bufcreate() rpc_soc(3)
get_myaddress() rpc_soc(3)
pmap_getmaps() rpc_soc(3)
pmap_getport() rpc_soc(3)
pmap_rmtcall() rpc_soc(3)
pmap_set() rpc_soc(3)
pmap_unset() rpc_soc(3)
registerrpc() rpc_soc(3)
rpc_broadcast() rpc_clnt_calls(3)
rpc_broadcast_exp() rpc_clnt_calls(3)
rpc_call() rpc_clnt_calls(3)
rpc_reg() rpc_svc_calls(3)
svc_create() rpc_svc_create(3)
svc_destroy() rpc_svc_create(3)
svc_dg_create() rpc_svc_create(3)
svc_dg_enablecache() rpc_svc_calls(3)
svc_fd_create() rpc_svc_create(3)
svc_fds() rpc_soc(3)
svc_freeargs() rpc_svc_reg(3)
svc_getargs() rpc_svc_reg(3)
svc_getcaller() rpc_soc(3)
svc_getreq() rpc_soc(3)
svc_getreqset() rpc_svc_calls(3)
svc_getrpccaller() rpc_svc_calls(3)
svc_kerb_reg() kerberos_rpc(3)
svc_raw_create() rpc_svc_create(3)
svc_reg() rpc_svc_calls(3)
svc_register() rpc_soc(3)
svc_run() rpc_svc_reg(3)
svc_sendreply() rpc_svc_reg(3)
svc_tli_create() rpc_svc_create(3)
svc_tp_create() rpc_svc_create(3)
svc_unreg() rpc_svc_calls(3)
svc_unregister() rpc_soc(3)
svc_vc_create() rpc_svc_create(3)
svcerr_auth() rpc_svc_err(3)
svcerr_decode() rpc_svc_err(3)
svcerr_noproc() rpc_svc_err(3)
svcerr_noprog() rpc_svc_err(3)
svcerr_progvers() rpc_svc_err(3)
svcerr_systemerr() rpc_svc_err(3)
svcerr_weakauth() rpc_svc_err(3)
svcfd_create() rpc_soc(3)
svcraw_create() rpc_soc(3)
svctcp_create() rpc_soc(3)
svcudp_bufcreate() rpc_soc(3)
svcudp_create() rpc_soc(3)
xdr_accepted_reply() rpc_xdr(3)
xdr_authsys_parms() rpc_xdr(3)
xdr_authunix_parms() rpc_soc(3)
xdr_callhdr() rpc_xdr(3)
xdr_callmsg() rpc_xdr(3)
xdr_opaque_auth() rpc_xdr(3)
xdr_rejected_reply() rpc_xdr(3)
xdr_replymsg() rpc_xdr(3)
xprt_register() rpc_svc_calls(3)
xprt_unregister() rpc_svc_calls(3)
関連ファイル
/etc/netconfig
関連項目
getnetconfig(3), getnetpath(3), rpc_clnt_auth(3), rpc_clnt_calls(3),
rpc_clnt_create(3), rpc_svc_calls(3), rpc_svc_create(3), rpc_svc_err(3),
rpc_svc_reg(3), rpc_xdr(3), rpcbind(3), xdr(3), netconfig(5)
FreeBSD 13.2 May 7, 1993 FreeBSD 13.2