Initial import
[samba] / docs / htmldocs / Samba3-Developers-Guide / rpc-plugin.html
1 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Chapter 9. RPC Pluggable Modules</title><link rel="stylesheet" href="samba.css" type="text/css"><meta name="generator" content="DocBook XSL Stylesheets V1.68.1"><link rel="start" href="index.html" title="SAMBA Developers Guide"><link rel="up" href="pt03.html" title="Part III. Samba Subsystems"><link rel="prev" href="pt03.html" title="Part III. Samba Subsystems"><link rel="next" href="vfs.html" title="Chapter 10. VFS Modules"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Chapter 9. RPC Pluggable Modules</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="pt03.html">Prev</a> </td><th width="60%" align="center">Part III. Samba Subsystems</th><td width="20%" align="right"> <a accesskey="n" href="vfs.html">Next</a></td></tr></table><hr></div><div class="chapter" lang="en"><div class="titlepage"><div><div><h2 class="title"><a name="rpc-plugin"></a>Chapter 9. RPC Pluggable Modules</h2></div><div><div class="author"><h3 class="author"><span class="firstname">Anthony</span> <span class="surname">Liguori</span></h3><div class="affiliation"><span class="orgname">IBM<br></span><div class="address"><p><code class="email">&lt;<a href="mailto:aliguor@us.ibm.com">aliguor@us.ibm.com</a>&gt;</code></p></div></div></div></div><div><div class="author"><h3 class="author"><span class="firstname">Jelmer</span> <span class="surname">Vernooij</span></h3><div class="affiliation"><span class="orgname">Samba Team<br></span><div class="address"><p><code class="email">&lt;<a href="mailto:jelmer@samba.org">jelmer@samba.org</a>&gt;</code></p></div></div></div></div><div><p class="pubdate">January 2003</p></div></div></div><div class="toc"><p><b>Table of Contents</b></p><dl><dt><span class="sect1"><a href="rpc-plugin.html#id2525129">About</a></span></dt><dt><span class="sect1"><a href="rpc-plugin.html#id2525145">General Overview</a></span></dt></dl></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2525129"></a>About</h2></div></div></div><p>
2 This document describes how to make use the new RPC Pluggable Modules features
3 of Samba 3.0.  This architecture was added to increase the maintainability of
4 Samba allowing RPC Pipes to be worked on separately from the main CVS branch.
5 The RPM architecture will also allow third-party vendors to add functionality
6 to Samba through plug-ins.
7 </p></div><div class="sect1" lang="en"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="id2525145"></a>General Overview</h2></div></div></div><p>
8 When an RPC call is sent to smbd, smbd tries to load a shared library by the
9 name <code class="filename">librpc_&lt;pipename&gt;.so</code> to handle the call if
10 it doesn't know how to handle the call internally.  For instance, LSA calls
11 are handled by <code class="filename">librpc_lsass.so</code>..
12 These shared libraries should be located in the <code class="filename">&lt;sambaroot&gt;/lib/rpc</code>.  smbd then attempts to call the init_module function within
13 the shared library. Check the chapter on modules for more information.
14 </p><p>
15 In the init_module function, the library should call 
16 rpc_pipe_register_commands().  This function takes the following arguments:
17 </p><pre class="programlisting">
18 NTSTATUS rpc_pipe_register_commands(int version, const char *clnt, const char *srv,
19                                const struct api_struct *cmds, int size);
20 </pre><div class="variablelist"><dl><dt><span class="term">version</span></dt><dd><p>Version number of the RPC interface. Use the define <span class="emphasis"><em>SMB_RPC_INTERFACE_VERSION</em></span> for this 
21 argument.</p></dd><dt><span class="term">clnt</span></dt><dd><p>the Client name of the named pipe</p></dd><dt><span class="term">srv</span></dt><dd><p>the Server name of the named pipe</p></dd><dt><span class="term">cmds</span></dt><dd><p>a list of api_structs that map RPC ordinal numbers to function calls</p></dd><dt><span class="term">size</span></dt><dd><p>the number of api_structs contained in cmds</p></dd></dl></div><p>
22 See rpc_server/srv_reg.c and rpc_server/srv_reg_nt.c for a small example of
23 how to use this library.
24 </p></div></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="pt03.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="pt03.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="vfs.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Part III. Samba Subsystems </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Chapter 10. VFS Modules</td></tr></table></div></body></html>