[15844] in Kerberos_V5_Development
Re: design choices for a loadable module interface
daemon@ATHENA.MIT.EDU (Zhanna Tsitkova)
Wed May 26 11:17:14 2010
Message-Id: <06103CC3-4C57-4C5E-8B1A-9647A6F6075A@mit.edu>
From: Zhanna Tsitkova <tsitkova@mit.edu>
To: Tom Yu <tlyu@mit.edu>
In-Reply-To: <ldv1vcyu3gw.fsf@cathode-dark-space.mit.edu>
Mime-Version: 1.0 (Apple Message framework v930.3)
Date: Wed, 26 May 2010 11:17:09 -0400
Cc: "krbdev@mit.edu" <krbdev@mit.edu>,
Nicolas Williams <nicolas.williams@oracle.com>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: krbdev-bounces@mit.edu
dynamic plugins - two cases:
1. plugin itself is built-in, but loads a shared library. Example
here would be say, "audit plugin" that dynamically loads some
"libaudit_bogus.so". For this case I suggested to have "separate
symbol for each interface function". (yesterday I meant this case
when I was talking about the dynamic libs). The benefit of this kind
of plugin is the pain-free shared library. i.e. libaudit_bogus.so,
updates.
2. plugin itself is a dynamic lib: This one should be very similar to
what we have for static plugins in the new plugin architecture. Plugin
impl would be
a shared lib. Here one has two options. One is to build just a very
small library say, "plugin_XXX.so" that knows everything about
underlying
functionality of, say, "libaudit_bogus.so". Alternatively, we can
statically link plugin_XXX with libaudit_bogus.so and treat it as a
new
dynamically loadable plugin. Obviously, the only interface this plugin
would have is plugin_XXX_create. Trick here is to pass the ref info
to plugin_manager.
Thanks,
Zhanna
On May 26, 2010, at 10:45 AM, Tom Yu wrote:
> Nicolas Williams <Nicolas.Williams@oracle.com> writes:
>
>> On Wed, May 26, 2010 at 10:00:24AM -0400, Greg Hudson wrote:
>
>>> If by the above statement you mean "dynamically load every plugin
>>> implementation, with no builtins," that's a possibility, I
>>> suppose. It
>>
>> I didn't. What's a builtin?
>
> By built-in, I mean that the plugin module is part of the library
> shared object or program executable that calls the module. I'll
> update the wiki page.
> _______________________________________________
> krbdev mailing list krbdev@mit.edu
> https://mailman.mit.edu/mailman/listinfo/krbdev
Zhanna Tsitkova
tsitkova@mit.edu
_______________________________________________
krbdev mailing list krbdev@mit.edu
https://mailman.mit.edu/mailman/listinfo/krbdev