Ticket #425 - support multiple winsync plugins
https://fedorahosted.org/389/ticket/425
Resolves: Ticket #425
Bug Description: support multiple winsync plugins
Reviewed by: nkinder (Thanks!)
Branch: 389-ds-base-1.2.11
Fix Description: Instead of a single WinsyncAPI pointer, use a CList to
store a list of APIs. Added API version 3 - the new function is a
precedence callback so the API can report back the plugin precedence to
order multiple winsync plugins. Since each API may have a different
cookie per agreement, changed the cookie to be a list of cookies indexed
by the API pointer. The old slapi_apib interface stored multiple APIs
per GUID, but did not allow plugins to retrieve them. I added another
slapi_apib function which allows the plugin to retrieve all of the APIs
for a given GUID.
I also move the test winsync code from the public header into the
windows_private.c code and compiled it by default. This will allow us to
easily enable the plugin for testing, and also exercises the compiler in
case we make an incompatible change to the public API.
Platforms tested: RHEL6 x86_64
Flag Day: Yes - public header file change
Doc impact: Yes - document the new behavior and precedence