mirror of
https://git.openldap.org/openldap/openldap.git
synced 2024-12-15 03:01:09 +08:00
More fixes for NT support:
liblutil/ntservice.c change registry key path used for non-default service names. slapd/Makefile.in change to generate slapd.syms dynamically slapd/daemon.c fix to make NT service ignore SIGBREAK slapd/main.c fix to allow NT to retrieve listening url from registry slapd/nt_svc.c fix for exported symbols slapd/result.c change use of strerror to sock_errstr slapd/slapd.syms no longer needed
This commit is contained in:
parent
643864c569
commit
2e5e4c3f20
@ -46,7 +46,8 @@ void (*stopfunc)(int);
|
||||
/* in nt_err.c */
|
||||
char *GetLastErrorString( void );
|
||||
|
||||
int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
|
||||
int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszDisplayName,
|
||||
LPCTSTR lpszBinaryPathName, BOOL auto_start)
|
||||
{
|
||||
HKEY hKey;
|
||||
DWORD dwValue, dwDisposition;
|
||||
@ -58,10 +59,10 @@ int srv_install(LPCTSTR lpszServiceName, LPCTSTR lpszBinaryPathName)
|
||||
if ((schService = CreateService(
|
||||
schSCManager,
|
||||
lpszServiceName,
|
||||
TEXT("OpenLDAP Directory Service"),
|
||||
SC_MANAGER_CREATE_SERVICE,
|
||||
lpszDisplayName,
|
||||
SERVICE_ALL_ACCESS,
|
||||
SERVICE_WIN32_OWN_PROCESS,
|
||||
SERVICE_DEMAND_START,
|
||||
auto_start ? SERVICE_AUTO_START : SERVICE_DEMAND_START,
|
||||
SERVICE_ERROR_NORMAL,
|
||||
lpszBinaryPathName,
|
||||
NULL, NULL, NULL, NULL, NULL)) != NULL)
|
||||
@ -292,8 +293,8 @@ void *getRegParam( char *svc, char *value )
|
||||
static char vValue[1024];
|
||||
DWORD valLen = sizeof( vValue );
|
||||
|
||||
if ( svc != NULL )
|
||||
sprintf ( path, "SOFTWARE\\OpenLDAP\\%s\\Parameters", svc );
|
||||
if ( svc && strcmp(svc, SERVICE_NAME) )
|
||||
sprintf ( path, "SOFTWARE\\%s", svc );
|
||||
else
|
||||
strcpy (path, "SOFTWARE\\OpenLDAP\\Parameters" );
|
||||
|
||||
|
@ -52,46 +52,113 @@ BUILD_SRV = @BUILD_SLAPD@
|
||||
|
||||
all-local-srv: all-cffiles
|
||||
|
||||
NT_GEN_DEFS = -DLIBLUTIL_DECL=dllexport -DLIBAVL_DECL=dllexport \
|
||||
-DLIBLDBM_DECL=dllexport -DLIBLDIF_DECL=dllexport
|
||||
|
||||
NT_DYN_DEFS = -DLIBLBER_DECL=dllimport -DLIBLDAP_DECL=dllimport
|
||||
|
||||
DEFINES = $(@PLAT@_@LIB_LINKAGE@_DEFS)
|
||||
|
||||
slapd.def: slapd.syms
|
||||
( \
|
||||
echo EXPORTS > $@; \
|
||||
_hint=1; \
|
||||
for symbol in `cat $<`; do \
|
||||
echo " $$symbol @ $$_hint ; " >> $@; \
|
||||
_hint=`expr 1 + $$_hint`; \
|
||||
done \
|
||||
)
|
||||
|
||||
slapd.base: version.o
|
||||
$(LTLINK) -o slapd $(OBJS) version.o $(LIBS) $(WRAP_LIBS) \
|
||||
-Wl,--base-file,$@
|
||||
rm -f slapd
|
||||
|
||||
slapd.exp: slapd.def slapd.base
|
||||
dlltool --dllname slapd.exe --def slapd.def --base-file slapd.base \
|
||||
--output-exp $@
|
||||
|
||||
libslapd.a: slapd.def
|
||||
dlltool --dllname slapd.exe --def $< --output-lib $@
|
||||
# The tricky part about building slapd in NT is that it will export symbols
|
||||
# like a DLL. The symbols that it exports should be representative of all
|
||||
# of the static symbols that it knows about.
|
||||
|
||||
NT_EXP = slapd.exp
|
||||
NT_IMP_LIB = libslapd.a
|
||||
NT_IMPLIB = libslapd.a
|
||||
NT_DUMMY = symdummy.o
|
||||
|
||||
slapd: $(@PLAT@_IMP_LIB) libbackends.a version.o $(@PLAT@_EXP)
|
||||
$(LTLINK) -o $@ $(OBJS) version.o $(LIBS) $(WRAP_LIBS) $(@PLAT@_EXP)
|
||||
# Add extra def targets here
|
||||
EXTRA_DEFS =
|
||||
|
||||
# NT needs this if libltdl is built statically. You'll have to fix the path
|
||||
# to point to where libltdl was built, then put ltdl.def in EXTRA_DEFS
|
||||
ltdl.def: ../../../libtool/libltdl/*.o
|
||||
dlltool --export-all-symbols --output-def $@ $^
|
||||
|
||||
DYNAMIC_DEFS = liblber.def libldap_r.def
|
||||
|
||||
STATIC_DEFS = libavl.def libldbm.def libldif.def liblutil.def slapd.def \
|
||||
$(EXTRA_DEFS)
|
||||
|
||||
libavl.def: $(LDAP_LIBDIR)/libavl/*.o
|
||||
dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
|
||||
|
||||
liblber.def: $(LDAP_LIBDIR)/liblber/*.o
|
||||
dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
|
||||
|
||||
libldap_r.def: $(LDAP_LIBDIR)/libldap_r/*.o
|
||||
dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
|
||||
|
||||
libldbm.def: $(LDAP_LIBDIR)/libldbm/*.o
|
||||
dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
|
||||
|
||||
libldif.def: $(LDAP_LIBDIR)/libldif/*.o
|
||||
dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
|
||||
|
||||
liblutil.def: $(LDAP_LIBDIR)/liblutil/*.o
|
||||
dlltool --export-all-symbols --output-def $@ `ls $^ | grep -v test`
|
||||
|
||||
slapd.def: $(OBJS) version.o
|
||||
dlltool --export-all-symbols --exclude-symbols main,ServiceMain@8 --output-def $@ `ls $^ | grep -v test`
|
||||
|
||||
# We don't want to include symbols from dynamic libraries.
|
||||
all.def: $(STATIC_DEFS) $(DYNAMIC_DEFS)
|
||||
cat $(STATIC_DEFS) | grep " @ " | sed -e 's/ @ [0-9]*//' > $@
|
||||
if [ "@LIB_LINKAGE@" != "DYN" ] ; \
|
||||
then \
|
||||
cat $(DYNAMIC_DEFS) | grep " @ " | sed -e 's/ @ [0-9]*//' >> $@; \
|
||||
fi
|
||||
echo EXPORTS > tmp.def
|
||||
sort $@ >> tmp.def
|
||||
rm -f $@
|
||||
dlltool --input-def tmp.def --output-def $@
|
||||
rm -f tmp.def
|
||||
|
||||
DUMMYTMP = symdummytmp.c
|
||||
|
||||
symdummy.c: all.def $(ALL_DEFS)
|
||||
rm -f $@
|
||||
echo "static void never_called() {" > $(DUMMYTMP)
|
||||
cat $< | grep " @ " | while read line; \
|
||||
do \
|
||||
set dummy $$line; \
|
||||
case $$# in \
|
||||
5) \
|
||||
echo "int $$2();" >> $@; \
|
||||
echo "$$2();" >> $(DUMMYTMP); \
|
||||
;; \
|
||||
6) \
|
||||
echo "extern int $$2;" >> $@; \
|
||||
echo "$$2 = 0;" >> $(DUMMYTMP); \
|
||||
;; \
|
||||
esac; \
|
||||
done
|
||||
echo "" >> $@
|
||||
echo "}" >> $(DUMMYTMP)
|
||||
cat $(DUMMYTMP) >> $@
|
||||
rm -f $(DUMMYTMP)
|
||||
|
||||
symdummy.o: symdummy.c
|
||||
$(CC) $(CFLAGS) -c $<
|
||||
|
||||
SLAPD_OBJS = $(OBJS) version.o symdummy.o
|
||||
|
||||
slapd.exp: libbackends.a all.def $(SLAPD_OBJS)
|
||||
$(LTLINK) -o slapd $(SLAPD_OBJS) $(LIBS) $(WRAP_LIBS) -Wl,--base-file,slapd.base
|
||||
rm -f slapd.exe
|
||||
dlltool --dllname slapd.exe --input-def all.def --base-file slapd.base --output-exp $@
|
||||
$(LTLINK) -o slapd $(SLAPD_OBJS) $(LIBS) $(WRAP_LIBS) $@ -Wl,--base-file,slapd.base
|
||||
rm -f slapd.exe
|
||||
dlltool --dllname slapd.exe --input-def all.def --base-file slapd.base --output-exp $@
|
||||
|
||||
libslapd.a: all.def
|
||||
dlltool --dllname slapd.exe --input-def $< --output-lib $@
|
||||
|
||||
slapd: libbackends.a version.o $(@PLAT@_EXP) $(@PLAT@_DUMMY)
|
||||
$(LTLINK) -o $@ $(@PLAT@_EXP) $(@PLAT@_DUMMY) $(OBJS) version.o $(LIBS) $(WRAP_LIBS)
|
||||
(cd tools; $(MAKE) $(MFLAGS) all)
|
||||
|
||||
sslapd: version.o
|
||||
$(LTLINK) -static -o $@ $(OBJS) version.o $(LIBS) $(WRAP_LIBS)
|
||||
|
||||
.backend: FORCE
|
||||
.backend: $(@PLAT@_IMPLIB) FORCE
|
||||
@for i in back-*; do \
|
||||
if [ -d $$i ]; then \
|
||||
echo " "; echo " cd $$i; $(MAKE) $(MFLAGS) all"; \
|
||||
@ -123,7 +190,7 @@ libbackends.a: .backend
|
||||
fi
|
||||
@ls -l libbackends.a
|
||||
|
||||
version.c: libbackends.a $(OBJS) $(SLAPD_LIBDEPEND)
|
||||
version.c: $(OBJS) $(SLAPD_LIBDEPEND)
|
||||
@-$(RM) $@
|
||||
$(MKVERSION) -s -n Versionstr slapd > $@
|
||||
|
||||
@ -137,7 +204,7 @@ depend-local-srv: FORCE
|
||||
@echo ""
|
||||
|
||||
clean-local:
|
||||
rm -f *.exp *.def *.base *.a
|
||||
rm -f *.exp *.def *.base *.a *.objs symdummy.c
|
||||
|
||||
clean-local-srv: FORCE
|
||||
@for i in back-* shell-backends tools; do \
|
||||
|
@ -74,6 +74,7 @@ do { if (w) tcp_write( wake_sds[1], "0", 1 ); } while(0)
|
||||
#ifdef HAVE_NT_SERVICE_MANAGER
|
||||
/* in nt_main.c */
|
||||
extern ldap_pvt_thread_cond_t started_event;
|
||||
extern int is_NT_Service;
|
||||
#endif
|
||||
|
||||
#ifndef HAVE_WINSOCK
|
||||
@ -999,6 +1000,13 @@ slapd_daemon_task(
|
||||
0, 0, 0 );
|
||||
|
||||
} else if ( slapd_shutdown < 0 ) {
|
||||
#ifdef HAVE_NT_SERVICE_MANAGER
|
||||
if (slapd_shutdown == -1)
|
||||
Debug( LDAP_DEBUG_TRACE,
|
||||
"daemon: shutdown initiated by Service Manager.\n",
|
||||
0, 0, 0);
|
||||
else
|
||||
#endif
|
||||
Debug( LDAP_DEBUG_TRACE,
|
||||
"daemon: abnormal condition, shutdown initiated.\n",
|
||||
0, 0, 0 );
|
||||
@ -1134,7 +1142,22 @@ static int sockdestroy(void)
|
||||
RETSIGTYPE
|
||||
slap_sig_shutdown( int sig )
|
||||
{
|
||||
Debug(LDAP_DEBUG_TRACE, "slap_sig_shutdown: signal %d\n", sig, 0, 0);
|
||||
|
||||
/*
|
||||
* If the NT Service Manager is controlling the server, we don't
|
||||
* want SIGBREAK to kill the server. For some strange reason,
|
||||
* SIGBREAK is generated when a user logs out.
|
||||
*/
|
||||
|
||||
#if HAVE_NT_SERVICE_MANAGER && SIGBREAK
|
||||
if (is_NT_Service && sig == SIGBREAK)
|
||||
Debug(LDAP_DEBUG_TRACE, "slap_sig_shutdown: SIGBREAK ignored.\n",
|
||||
0, 0, 0);
|
||||
else
|
||||
#endif
|
||||
slapd_shutdown = sig;
|
||||
|
||||
WAKE_LISTENER(1);
|
||||
|
||||
/* reinstall self */
|
||||
|
@ -171,18 +171,32 @@ int main( int argc, char **argv )
|
||||
{
|
||||
int *i;
|
||||
char *newConfigFile;
|
||||
char *newUrls;
|
||||
|
||||
if ( is_NT_Service ) {
|
||||
NTservice = argv[0];
|
||||
CommenceStartupProcessing( NTservice, slap_sig_shutdown );
|
||||
}
|
||||
|
||||
i = (int*)getRegParam( NULL, "DebugLevel" );
|
||||
i = (int*)getRegParam( NTservice, "DebugLevel" );
|
||||
if ( i != NULL )
|
||||
{
|
||||
slap_debug = *i;
|
||||
Debug( LDAP_DEBUG_ANY, "new debug level from registry is: %d\n", slap_debug, 0, 0 );
|
||||
}
|
||||
newConfigFile = (char*)getRegParam( NULL, "ConfigFile" );
|
||||
|
||||
newUrls = (char *) getRegParam(NTservice, "Urls");
|
||||
if (newUrls)
|
||||
{
|
||||
if (urls)
|
||||
ch_free(urls);
|
||||
|
||||
urls = ch_strdup(newUrls);
|
||||
Debug(LDAP_DEBUG_ANY, "new urls from registry: %s\n",
|
||||
urls, 0, 0);
|
||||
}
|
||||
|
||||
newConfigFile = (char*)getRegParam( NTservice, "ConfigFile" );
|
||||
if ( newConfigFile != NULL )
|
||||
{
|
||||
configfile = newConfigFile;
|
||||
@ -352,7 +366,13 @@ int main( int argc, char **argv )
|
||||
|
||||
#ifdef HAVE_TLS
|
||||
ldap_pvt_tls_init();
|
||||
ldap_pvt_tls_init_def_ctx();
|
||||
|
||||
if (ldap_pvt_tls_init_def_ctx() != 0)
|
||||
{
|
||||
rc = 1;
|
||||
SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 20 );
|
||||
goto destroy;
|
||||
}
|
||||
#endif
|
||||
|
||||
(void) SIGNAL( LDAP_SIGUSR1, slap_sig_wake );
|
||||
@ -384,7 +404,7 @@ int main( int argc, char **argv )
|
||||
|
||||
if ( slap_startup( NULL ) != 0 ) {
|
||||
rc = 1;
|
||||
SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 20 );
|
||||
SERVICE_EXIT( ERROR_SERVICE_SPECIFIC_ERROR, 21 );
|
||||
goto shutdown;
|
||||
}
|
||||
|
||||
@ -412,6 +432,7 @@ int main( int argc, char **argv )
|
||||
}
|
||||
|
||||
#ifdef HAVE_NT_EVENT_LOG
|
||||
if (is_NT_Service)
|
||||
LogSlapdStartedEvent( NTservice, slap_debug, configfile, urls );
|
||||
#endif
|
||||
|
||||
@ -439,6 +460,7 @@ destroy:
|
||||
|
||||
stop:
|
||||
#ifdef HAVE_NT_EVENT_LOG
|
||||
if (is_NT_Service)
|
||||
LogSlapdStoppedEvent( NTservice );
|
||||
#endif
|
||||
|
||||
|
@ -9,38 +9,14 @@
|
||||
#include <ac/string.h>
|
||||
#include "slap.h"
|
||||
|
||||
static void stubs()
|
||||
{
|
||||
ldap_abandon(NULL, 0);
|
||||
ldap_add_s(NULL, NULL, NULL);
|
||||
ldap_bind_s(NULL, NULL, NULL, 0);
|
||||
ldap_delete_s(NULL, NULL);
|
||||
ldap_first_attribute(NULL, NULL, NULL);
|
||||
ldap_first_entry(NULL, NULL);
|
||||
ldap_get_dn(NULL, NULL);
|
||||
ldap_get_option(NULL, 0, NULL);
|
||||
ldap_get_values_len(NULL, NULL, NULL);
|
||||
ldap_init(NULL, 0);
|
||||
ldap_modify_s(NULL, NULL, NULL);
|
||||
ldap_modrdn_s(NULL, NULL, NULL);
|
||||
ldap_msgfree(NULL);
|
||||
ldap_next_attribute(NULL, NULL, NULL);
|
||||
ldap_result(NULL, 0, 0, NULL, NULL);
|
||||
ldap_search(NULL, NULL, 0, NULL, NULL, 0);
|
||||
ldap_unbind(NULL);
|
||||
}
|
||||
|
||||
#ifdef HAVE_NT_SERVICE_MANAGER
|
||||
|
||||
ldap_pvt_thread_cond_t started_event, stopped_event;
|
||||
ldap_pvt_thread_t start_status_tid, stop_status_tid;
|
||||
|
||||
|
||||
/* in main.c */
|
||||
void WINAPI ServiceMain( DWORD argc, LPTSTR *argv );
|
||||
|
||||
/* in ntservice.c */
|
||||
int srv_install( char* service, char* filename );
|
||||
int srv_install( char* service, char * displayName, char* filename,
|
||||
BOOL auto_start );
|
||||
int srv_remove ( char* service, char* filename );
|
||||
|
||||
int main( int argc, LPTSTR *argv )
|
||||
@ -49,8 +25,17 @@ int main( int argc, LPTSTR *argv )
|
||||
char filename[MAX_PATH], *fname_start;
|
||||
extern int is_NT_Service;
|
||||
|
||||
/*
|
||||
* Because the service was registered as SERVICE_WIN32_OWN_PROCESS,
|
||||
* the lpServiceName element of the SERVICE_TABLE_ENTRY will be
|
||||
* ignored. Since we don't even know the name of the service at
|
||||
* this point (since it could have been installed under a name
|
||||
* different than SERVICE_NAME), we might as well just provide
|
||||
* the parameter as "".
|
||||
*/
|
||||
|
||||
SERVICE_TABLE_ENTRY DispatchTable[] = {
|
||||
{ SERVICE_NAME, (LPSERVICE_MAIN_FUNCTION) ServiceMain },
|
||||
{ "", (LPSERVICE_MAIN_FUNCTION) ServiceMain },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
@ -67,14 +52,24 @@ int main( int argc, LPTSTR *argv )
|
||||
if ( _stricmp( "install", argv[1] ) == 0 )
|
||||
{
|
||||
char *svcName = SERVICE_NAME;
|
||||
char *displayName = "OpenLDAP Directory Service";
|
||||
BOOL auto_start = FALSE;
|
||||
|
||||
if ( (argc > 2) && (argv[2] != NULL) )
|
||||
svcName = argv[2];
|
||||
|
||||
if ( argc > 3 && argv[3])
|
||||
displayName = argv[3];
|
||||
|
||||
if ( argc > 4 && stricmp(argv[4], "auto") == 0)
|
||||
auto_start = TRUE;
|
||||
|
||||
if ( (length = GetModuleFileName(NULL, filename, sizeof( filename ))) == 0 )
|
||||
{
|
||||
fputs( "unable to retrieve file name for the service.\n", stderr );
|
||||
return EXIT_FAILURE;
|
||||
}
|
||||
if ( !srv_install(svcName, filename) )
|
||||
if ( !srv_install(svcName, displayName, filename, auto_start) )
|
||||
{
|
||||
fputs( "service failed installation ...\n", stderr );
|
||||
return EXIT_FAILURE;
|
||||
|
@ -217,7 +217,7 @@ static long send_ldap_ber(
|
||||
*/
|
||||
|
||||
Debug( LDAP_DEBUG_CONNS, "ber_flush failed errno=%d reason=\"%s\"\n",
|
||||
err, STRERROR(err), 0 );
|
||||
err, sock_errstr(err), 0 );
|
||||
|
||||
if ( err != EWOULDBLOCK && err != EAGAIN ) {
|
||||
connection_closing( conn );
|
||||
|
@ -1,339 +0,0 @@
|
||||
access2str
|
||||
access_allowed
|
||||
acl_check_modlist
|
||||
active_threads
|
||||
active_threads_cond
|
||||
active_threads_mutex
|
||||
attrs_dup
|
||||
attrs_free
|
||||
attr_delete
|
||||
attr_dup
|
||||
attr_find
|
||||
attr_free
|
||||
attr_index_config
|
||||
attr_index_destroy
|
||||
attr_masks
|
||||
attr_merge
|
||||
attr_merge_fast
|
||||
attr_normalize
|
||||
attr_syntax
|
||||
attr_syntax_config
|
||||
at_add
|
||||
at_append_to_list
|
||||
at_canonical_name
|
||||
at_delete_from_list
|
||||
at_fake_if_needed
|
||||
at_find
|
||||
at_find_in_list
|
||||
at_schema_info
|
||||
ava_free
|
||||
backendDB
|
||||
backendInfo
|
||||
backend_add
|
||||
backend_connection_destroy
|
||||
backend_connection_init
|
||||
backend_db_init
|
||||
backend_destroy
|
||||
backend_group
|
||||
backend_info
|
||||
backend_init
|
||||
backend_num
|
||||
backend_shutdown
|
||||
backend_startup
|
||||
backend_subschemasubentry
|
||||
backend_unbind
|
||||
ber_bvfree
|
||||
ber_free
|
||||
be_db_close
|
||||
be_entry_release_rw
|
||||
be_isroot
|
||||
be_isroot_pw
|
||||
be_issuffix
|
||||
be_root_dn
|
||||
build_new_dn
|
||||
cache_add_entry_rw
|
||||
cache_delete_entry
|
||||
cache_find_entry_dn2id
|
||||
cache_find_entry_id
|
||||
cache_release_all
|
||||
cache_return_entry_rw
|
||||
cache_update_entry
|
||||
case_ignore_normalize
|
||||
charray2str
|
||||
charray_add
|
||||
charray_dup
|
||||
charray_free
|
||||
charray_inlist
|
||||
charray_merge
|
||||
ch_calloc
|
||||
ch_free
|
||||
ch_malloc
|
||||
ch_realloc
|
||||
ch_strdup
|
||||
config_info
|
||||
connections_destroy
|
||||
connections_init
|
||||
connections_nextid
|
||||
connections_shutdown
|
||||
connections_timeout_idle
|
||||
connection_closing
|
||||
connection_done
|
||||
connection_first
|
||||
connection_init
|
||||
connection_next
|
||||
connection_read
|
||||
connection_state2str
|
||||
connection_state_closing
|
||||
connection_write
|
||||
default_referral
|
||||
defsize
|
||||
deftime
|
||||
deref_internal_r
|
||||
dn2entry_rw
|
||||
dn2id
|
||||
dn2idl
|
||||
dn2id_add
|
||||
dn2id_delete
|
||||
dn_issuffix
|
||||
dn_normalize
|
||||
dn_parent
|
||||
dn_rdn
|
||||
dn_subtree
|
||||
dn_validate
|
||||
do_abandon
|
||||
do_add
|
||||
do_bind
|
||||
do_compare
|
||||
do_delete
|
||||
do_extended
|
||||
do_modify
|
||||
do_modrdn
|
||||
do_search
|
||||
do_unbind
|
||||
dscompare
|
||||
dtblsize
|
||||
entry2str
|
||||
entry2str_mutex
|
||||
entry_cmp
|
||||
entry_destroy
|
||||
entry_dn_cmp
|
||||
entry_free
|
||||
entry_id_cmp
|
||||
filter_candidates
|
||||
filter_free
|
||||
filter_print
|
||||
first_word
|
||||
get_ava
|
||||
get_ctrls
|
||||
get_entry_referrals
|
||||
get_filter
|
||||
get_manageDSAit
|
||||
global_acl
|
||||
global_default_access
|
||||
global_idletimeout
|
||||
global_lastmod
|
||||
global_readonly
|
||||
global_realm
|
||||
global_schemacheck
|
||||
gmtime_mutex
|
||||
g_argc
|
||||
g_argv
|
||||
has_children
|
||||
id2entry_add
|
||||
id2entry_delete
|
||||
id2entry_rw
|
||||
idl_allids
|
||||
idl_alloc
|
||||
idl_delete_key
|
||||
idl_fetch
|
||||
idl_firstid
|
||||
idl_free
|
||||
idl_insert
|
||||
idl_insert_key
|
||||
idl_intersection
|
||||
idl_nextid
|
||||
idl_notin
|
||||
idl_union
|
||||
index_add_entry
|
||||
index_add_mods
|
||||
index_change_values
|
||||
index_read
|
||||
is_entry_objectclass
|
||||
ldap_abandon
|
||||
ldap_add_s
|
||||
ldap_bind_s
|
||||
ldap_delete_s
|
||||
ldap_first_attribute
|
||||
ldap_first_entry
|
||||
ldap_get_dn
|
||||
ldap_get_option
|
||||
ldap_get_values_len
|
||||
ldap_init
|
||||
ldap_modify_s
|
||||
ldap_modrdn_s
|
||||
ldap_msgfree
|
||||
ldap_next_attribute
|
||||
ldap_pvt_str2upper
|
||||
ldap_pvt_thread_mutex_init
|
||||
ldap_pvt_thread_mutex_lock
|
||||
ldap_pvt_thread_mutex_trylock
|
||||
ldap_pvt_thread_mutex_unlock
|
||||
ldap_pvt_thread_yield
|
||||
ldap_result
|
||||
ldap_search
|
||||
ldap_srvtab
|
||||
ldap_syslog
|
||||
ldap_unbind
|
||||
ldbm_back_abandon
|
||||
ldbm_back_add
|
||||
ldbm_back_bind
|
||||
ldbm_back_close
|
||||
ldbm_back_compare
|
||||
ldbm_back_db_close
|
||||
ldbm_back_db_config
|
||||
ldbm_back_db_destroy
|
||||
ldbm_back_db_init
|
||||
ldbm_back_db_open
|
||||
ldbm_back_delete
|
||||
ldbm_back_destroy
|
||||
ldbm_back_entry_release_rw
|
||||
ldbm_back_group
|
||||
ldbm_back_initialize
|
||||
ldbm_back_modify
|
||||
ldbm_back_modrdn
|
||||
ldbm_back_open
|
||||
ldbm_back_search
|
||||
ldbm_back_unbind
|
||||
ldbm_cache_close
|
||||
ldbm_cache_delete
|
||||
ldbm_cache_fetch
|
||||
ldbm_cache_flush_all
|
||||
ldbm_cache_open
|
||||
ldbm_cache_really_close
|
||||
ldbm_cache_store
|
||||
ldbm_close
|
||||
ldbm_datum_free
|
||||
ldbm_delete
|
||||
ldbm_fetch
|
||||
ldbm_firstkey
|
||||
ldbm_initialize
|
||||
ldbm_modify_internal
|
||||
ldbm_nextkey
|
||||
ldbm_open
|
||||
ldbm_store
|
||||
ldbm_sync
|
||||
ldbm_tool_entry_close
|
||||
ldbm_tool_entry_first
|
||||
ldbm_tool_entry_get
|
||||
ldbm_tool_entry_next
|
||||
ldbm_tool_entry_open
|
||||
ldbm_tool_entry_put
|
||||
ldbm_tool_index_attr
|
||||
ldbm_tool_index_change
|
||||
ldbm_tool_sync
|
||||
lock_fclose
|
||||
lock_fopen
|
||||
lutil_debug
|
||||
main
|
||||
module_load
|
||||
module_path
|
||||
monitor_info
|
||||
mrule_defs
|
||||
mr_add
|
||||
mr_find
|
||||
nBackendDB
|
||||
nBackendInfo
|
||||
next_id
|
||||
next_id_get
|
||||
next_id_write
|
||||
next_word
|
||||
num_bytes_sent
|
||||
num_conns
|
||||
num_entries_sent
|
||||
num_ops_completed
|
||||
num_ops_initiated
|
||||
num_ops_mutex
|
||||
num_pdu_sent
|
||||
num_refs_sent
|
||||
num_sent_mutex
|
||||
oc_add
|
||||
oc_check_no_usermod_attr
|
||||
oc_check_operational_attr
|
||||
oc_check_usermod_attr
|
||||
oc_find
|
||||
oc_schema_check
|
||||
parse_acl
|
||||
parse_at
|
||||
parse_oc
|
||||
parse_oc_old
|
||||
parse_oidm
|
||||
phonetic
|
||||
rdn_attr_type
|
||||
rdn_attr_value
|
||||
rdn_validate
|
||||
read_config
|
||||
register_matching_rule
|
||||
register_syntax
|
||||
replog
|
||||
replogfile
|
||||
replog_mutex
|
||||
root_dse_info
|
||||
sasl_destroy
|
||||
sasl_init
|
||||
schema_info
|
||||
schema_init
|
||||
scherr2str
|
||||
select_backend
|
||||
send_ldap_disconnect
|
||||
send_ldap_result
|
||||
send_search_entry
|
||||
send_search_reference
|
||||
send_search_result
|
||||
slapd_args_file
|
||||
slapd_clr_read
|
||||
slapd_clr_write
|
||||
slapd_daemon
|
||||
slapd_daemon_destroy
|
||||
slapd_daemon_init
|
||||
slapd_pid_file
|
||||
slapd_remove
|
||||
slapd_set_read
|
||||
slapd_set_write
|
||||
slapd_shutdown
|
||||
slapMode
|
||||
slap_debug
|
||||
slap_destroy
|
||||
slap_get_time
|
||||
slap_init
|
||||
slap_listeners
|
||||
slap_op_add
|
||||
slap_op_alloc
|
||||
slap_op_free
|
||||
slap_op_pop
|
||||
slap_op_remove
|
||||
slap_shutdown
|
||||
slap_sig_shutdown
|
||||
slap_sig_wake
|
||||
slap_startup
|
||||
starttime
|
||||
str2access
|
||||
str2charray
|
||||
str2entry
|
||||
str2filter
|
||||
str2result
|
||||
suffix_alias
|
||||
supportedControls
|
||||
supportedExtensions
|
||||
supportedSASLMechanisms
|
||||
syntax_defs
|
||||
syn_add
|
||||
syn_find
|
||||
syn_find_desc
|
||||
test_filter
|
||||
value_add
|
||||
value_add_fast
|
||||
value_cmp
|
||||
value_find
|
||||
value_normalize
|
||||
Versionstr
|
||||
word_dup
|
Loading…
Reference in New Issue
Block a user