summaryrefslogtreecommitdiff
path: root/docs/devel/rpc_plugin.xml
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2004-04-07 10:15:11 +0000
committerGerald W. Carter <jerry@samba.org>2008-04-23 08:45:43 -0500
commit992f1e6b8f86b346fddd266b04d29cde69585633 (patch)
tree878573999a6831aa14cd6b8072263eb5d5910aa4 /docs/devel/rpc_plugin.xml
parent65c0fd59203a3d9c4cb685e3a739f29f6f0c4fd6 (diff)
downloadsamba-992f1e6b8f86b346fddd266b04d29cde69585633.tar.gz
samba-992f1e6b8f86b346fddd266b04d29cde69585633.tar.bz2
samba-992f1e6b8f86b346fddd266b04d29cde69585633.zip
Add all the source files from the old CVS tree,
add the 5 missing chapters from the HOWTO and add jht's Samba by Example book. (This used to be commit 9fb5bcb93e57c5162b3ee6f9c7d777dc0269d100)
Diffstat (limited to 'docs/devel/rpc_plugin.xml')
-rw-r--r--docs/devel/rpc_plugin.xml88
1 files changed, 88 insertions, 0 deletions
diff --git a/docs/devel/rpc_plugin.xml b/docs/devel/rpc_plugin.xml
new file mode 100644
index 0000000000..287e35b0be
--- /dev/null
+++ b/docs/devel/rpc_plugin.xml
@@ -0,0 +1,88 @@
+<chapter id="rpc-plugin">
+<chapterinfo>
+ <author>
+ <firstname>Anthony</firstname><surname>Liguori</surname>
+ <affiliation>
+ <orgname>IBM</orgname>
+ <address><email>aliguor@us.ibm.com</email></address>
+ </affiliation>
+ </author>
+ <author>
+ <firstname>Jelmer</firstname><surname>Vernooij</surname>
+ <affiliation>
+ <orgname>Samba Team</orgname>
+ <address><email>jelmer@samba.org</email></address>
+ </affiliation>
+ </author>
+ <pubdate>January 2003</pubdate>
+</chapterinfo>
+
+<title>RPC Pluggable Modules</title>
+
+<sect1>
+<title>About</title>
+
+<para>
+This document describes how to make use the new RPC Pluggable Modules features
+of Samba 3.0. This architecture was added to increase the maintainability of
+Samba allowing RPC Pipes to be worked on separately from the main CVS branch.
+The RPM architecture will also allow third-party vendors to add functionality
+to Samba through plug-ins.
+</para>
+
+</sect1>
+
+<sect1>
+<title>General Overview</title>
+
+<para>
+When an RPC call is sent to smbd, smbd tries to load a shared library by the
+name <filename>librpc_&lt;pipename&gt;.so</filename> to handle the call if
+it doesn't know how to handle the call internally. For instance, LSA calls
+are handled by <filename>librpc_lsass.so</filename>..
+These shared libraries should be located in the <filename>&lt;sambaroot&gt;/lib/rpc</filename>. smbd then attempts to call the init_module function within
+the shared library. Check the chapter on modules for more information.
+</para>
+
+<para>
+In the init_module function, the library should call
+rpc_pipe_register_commands(). This function takes the following arguments:
+</para>
+
+<para><programlisting>
+NTSTATUS rpc_pipe_register_commands(int version, const char *clnt, const char *srv,
+ const struct api_struct *cmds, int size);
+</programlisting></para>
+
+<variablelist>
+
+<varlistentry><term>version</term>
+<listitem><para>Version number of the RPC interface. Use the define <emphasis>SMB_RPC_INTERFACE_VERSION</emphasis> for this
+argument.</para></listitem>
+</varlistentry>
+
+<varlistentry><term>clnt</term>
+<listitem><para>the Client name of the named pipe</para></listitem>
+</varlistentry>
+
+<varlistentry><term>srv</term>
+<listitem><para>the Server name of the named pipe</para></listitem>
+</varlistentry>
+
+<varlistentry><term>cmds</term>
+<listitem><para>a list of api_structs that map RPC ordinal numbers to function calls</para></listitem>
+</varlistentry>
+
+<varlistentry><term>size</term>
+<listitem><para>the number of api_structs contained in cmds</para></listitem>
+</varlistentry>
+
+</variablelist>
+
+<para>
+See rpc_server/srv_reg.c and rpc_server/srv_reg_nt.c for a small example of
+how to use this library.
+</para>
+
+</sect1>
+</chapter>