summaryrefslogtreecommitdiff
path: root/docs
diff options
context:
space:
mode:
authorJelmer Vernooij <jelmer@samba.org>2003-02-01 19:30:03 +0000
committerJelmer Vernooij <jelmer@samba.org>2003-02-01 19:30:03 +0000
commitb6f1cfdffb2bdd25e2561434bc6dcf1379e68ac5 (patch)
tree974433c568b2fd58a7b641c5eedbc80729255612 /docs
parent229e45603270a88bf60d31856429fdaaeb45ed2a (diff)
downloadsamba-b6f1cfdffb2bdd25e2561434bc6dcf1379e68ac5.tar.gz
samba-b6f1cfdffb2bdd25e2561434bc6dcf1379e68ac5.tar.bz2
samba-b6f1cfdffb2bdd25e2561434bc6dcf1379e68ac5.zip
Convert Anthony's RPC doc to SGML/XML
(This used to be commit 5a6f79b4a0d72371957b6bbb9dcfeaeb8779af70)
Diffstat (limited to 'docs')
-rw-r--r--docs/docbook/devdoc/dev-doc.sgml2
-rw-r--r--docs/docbook/devdoc/rpc_plugin.sgml76
2 files changed, 78 insertions, 0 deletions
diff --git a/docs/docbook/devdoc/dev-doc.sgml b/docs/docbook/devdoc/dev-doc.sgml
index e256dbe3a2..b5c934b1c8 100644
--- a/docs/docbook/devdoc/dev-doc.sgml
+++ b/docs/docbook/devdoc/dev-doc.sgml
@@ -12,6 +12,7 @@
<!ENTITY wins SYSTEM "wins.sgml">
<!ENTITY sam SYSTEM "sam.sgml">
<!ENTITY encryption SYSTEM "encryption.sgml">
+<!ENTITY rpc-plugin SYSTEM "rpc_plugin.sgml">
]>
<book id="Samba-Developers-Guide">
@@ -66,5 +67,6 @@ url="http://www.fsf.org/licenses/gpl.txt">http://www.fsf.org/licenses/gpl.txt</u
&wins;
&sam;
&encryption;
+&rpc-plugin;
</book>
diff --git a/docs/docbook/devdoc/rpc_plugin.sgml b/docs/docbook/devdoc/rpc_plugin.sgml
new file mode 100644
index 0000000000..21582a011d
--- /dev/null
+++ b/docs/docbook/devdoc/rpc_plugin.sgml
@@ -0,0 +1,76 @@
+<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>
+ <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 rpc_pipe_init function within
+the shared library.
+</para>
+
+<para>
+In the rpc_pipe_init function, the library should call
+rpc_pipe_register_commands(). This function takes the following arguments:
+</para>
+
+<para><programlisting>
+int rpc_pipe_register_commands(const char *clnt, const char *srv,
+ const struct api_struct *cmds, int size);
+</programlisting></para>
+
+<variablelist>
+
+<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>