第9章 RPC着脱可能なモジュール

Anthony Liguori

Jelmer Vernooij

Samba Team

January 2003

目次

はじめに
概要

はじめに

この文書は、どのようにSamba3.0用の新しいRPC着脱可能なモジュール機能を使えるように するかについて説明している。このアーキテクチャは、メインのCVSブランチから分かれて 作業されることをRPCパイプについて許可しているSambaの維持管理性を向上させることを 付加する。RPMアーキテクチャはまた、サードパーティベンダーに対して、プラグインを通して、 Sambaに対して機能を追加する事も認めている。

概要

RPC呼び出しがsmbdに送られる時、smbdは、もしもその呼び出しを内部的に処理する方法が 無い場合、それを処理するための、librpc_<pipename>.so という名前の共有ライブラリをロードしようとする。例えば、LSA呼び出しは librpc_lsass.soによって処理される。これらの共有ライブラリは、 <sambaroot>/lib/rpc中に配置されるべきである。 smbdは次に共有ライブラリ内のinit_module関数を呼び出そうとする。詳細はモジュールの 章を参照のこと。

init_module関数内で、ライブラリはrpc_pipe_register_commands()を呼び出すべきである。 この関数は以下の引数を取る:

NTSTATUS rpc_pipe_register_commands(int version, const char *clnt, const char *srv,
                               const struct api_struct *cmds, int size);
version

RPCインタフェースのバージョン番号。この引数に対しては、 SMB_RPC_INTERFACE_VERSIONという定義を使うこと。

clnt

名前付きパイプのクライアント名

srv

名前付きパイプのサーバー名

cmds

RPC ordinal番号を関数呼び出しにマップするapi構造体のリスト

size

cmd中に含まれるapi_structsの数

どのようにこのライブラリを使うかについての小さな例については、 rpc_server/srv_reg.c と rpc_server/srv_reg_nt.cを参照。