From 410b045c45006ae9c3f2bbcafb07d6ac8c615a56 Mon Sep 17 00:00:00 2001 From: Andreas Schneider Date: Mon, 28 Jan 2013 16:16:42 +0100 Subject: [PATCH 1/3] Rename pdb_ldap to pdb_ldapsam This patch moves pdb_ldap to pdb_ldapsam unconditionally and makes possible to load ldapsam.so dynamically Reviewed-by: Alexander Bokovoy --- source3/passdb/pdb_ipa.c | 2 +- source3/passdb/pdb_ldap.c | 12 +++++++++--- source3/passdb/pdb_ldap.h | 4 ++-- source3/passdb/pdb_nds.c | 2 +- source3/passdb/wscript_build | 6 +++--- source3/wscript | 2 +- 6 files changed, 17 insertions(+), 11 deletions(-) diff --git a/source3/passdb/pdb_ipa.c b/source3/passdb/pdb_ipa.c index d31b37f..a699aab 100644 --- a/source3/passdb/pdb_ipa.c +++ b/source3/passdb/pdb_ipa.c @@ -1446,7 +1446,7 @@ static NTSTATUS pdb_init_IPA_ldapsam(struct pdb_methods **pdb_method, const char struct ldapsam_privates *ldap_state; NTSTATUS status; - status = pdb_init_ldapsam(pdb_method, location); + status = pdb_ldapsam_init_common(pdb_method, location); if (!NT_STATUS_IS_OK(status)) { return status; } diff --git a/source3/passdb/pdb_ldap.c b/source3/passdb/pdb_ldap.c index ca35ef7..7ae9056 100644 --- a/source3/passdb/pdb_ldap.c +++ b/source3/passdb/pdb_ldap.c @@ -6462,7 +6462,8 @@ static NTSTATUS pdb_init_ldapsam_common(struct pdb_methods **pdb_method, const c Initialise the normal mode for pdb_ldap *********************************************************************/ -NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location) +NTSTATUS pdb_ldapsam_init_common(struct pdb_methods **pdb_method, + const char *location) { NTSTATUS nt_status; struct ldapsam_privates *ldap_state = NULL; @@ -6611,11 +6612,16 @@ NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location) return NT_STATUS_OK; } -NTSTATUS pdb_ldap_init(void) +NTSTATUS pdb_ldapsam_init(void) { NTSTATUS nt_status; - if (!NT_STATUS_IS_OK(nt_status = smb_register_passdb(PASSDB_INTERFACE_VERSION, "ldapsam", pdb_init_ldapsam))) + + nt_status = smb_register_passdb(PASSDB_INTERFACE_VERSION, + "ldapsam", + pdb_ldapsam_init_common); + if (!NT_STATUS_IS_OK(nt_status)) { return nt_status; + } /* Let pdb_nds register backends */ pdb_nds_init(); diff --git a/source3/passdb/pdb_ldap.h b/source3/passdb/pdb_ldap.h index 1372f33..0420314 100644 --- a/source3/passdb/pdb_ldap.h +++ b/source3/passdb/pdb_ldap.h @@ -29,8 +29,8 @@ /* The following definitions come from passdb/pdb_ldap.c */ const char** get_userattr_list( TALLOC_CTX *mem_ctx, int schema_ver ); -NTSTATUS pdb_init_ldapsam(struct pdb_methods **pdb_method, const char *location); -NTSTATUS pdb_ldap_init(void); +NTSTATUS pdb_ldapsam_init_common(struct pdb_methods **pdb_method, const char *location); +NTSTATUS pdb_ldapsam_init(void); int ldapsam_search_suffix_by_name(struct ldapsam_privates *ldap_state, const char *user, LDAPMessage ** result, diff --git a/source3/passdb/pdb_nds.c b/source3/passdb/pdb_nds.c index cce4937..d7c16da 100644 --- a/source3/passdb/pdb_nds.c +++ b/source3/passdb/pdb_nds.c @@ -878,7 +878,7 @@ static NTSTATUS pdb_init_NDS_ldapsam_common(struct pdb_methods **pdb_method, con static NTSTATUS pdb_init_NDS_ldapsam(struct pdb_methods **pdb_method, const char *location) { - NTSTATUS nt_status = pdb_init_ldapsam(pdb_method, location); + NTSTATUS nt_status = pdb_ldapsam_init_common(pdb_method, location); (*pdb_method)->name = "NDS_ldapsam"; diff --git a/source3/passdb/wscript_build b/source3/passdb/wscript_build index 03a0df4..a6620cd 100644 --- a/source3/passdb/wscript_build +++ b/source3/passdb/wscript_build @@ -13,13 +13,13 @@ bld.SAMBA3_MODULE('pdb_tdbsam', internal_module=bld.SAMBA3_IS_STATIC_MODULE('pdb_tdbsam'), enabled=bld.SAMBA3_IS_ENABLED_MODULE('pdb_tdbsam')) -bld.SAMBA3_MODULE('pdb_ldap', +bld.SAMBA3_MODULE('pdb_ldapsam', subsystem='pdb', deps='smbldap smbldaphelper', source=PDB_LDAP_SRC, init_function='', - internal_module=bld.SAMBA3_IS_STATIC_MODULE('pdb_ldap'), - enabled=bld.SAMBA3_IS_ENABLED_MODULE('pdb_ldap') and bld.CONFIG_SET('HAVE_LDAP')) + internal_module=bld.SAMBA3_IS_STATIC_MODULE('pdb_ldapsam'), + enabled=bld.SAMBA3_IS_ENABLED_MODULE('pdb_ldapsam') and bld.CONFIG_SET('HAVE_LDAP')) bld.SAMBA3_MODULE('pdb_smbpasswd', subsystem='pdb', diff --git a/source3/wscript b/source3/wscript index 097cd83..34fccb1 100644 --- a/source3/wscript +++ b/source3/wscript @@ -1734,7 +1734,7 @@ main() { default_shared_modules.extend(TO_LIST('vfs_aio_linux')) if conf.CONFIG_SET('HAVE_LDAP'): - default_static_modules.extend(TO_LIST('pdb_ldap idmap_ldap')) + default_static_modules.extend(TO_LIST('pdb_ldapsam idmap_ldap')) if conf.CONFIG_SET('DARWINOS'): default_static_modules.extend(TO_LIST('charset_macosxfs')) -- 1.8.1.2 From 8c7b0ab9b3ae07574c6b5c5ba5888c3f329c9e02 Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy Date: Wed, 6 Feb 2013 10:43:16 +0200 Subject: [PATCH 2/3] source3/wscript: support 'pdb_ldap' module in configure While PASSDB module ldapsam is called pdb_ldapsam internally, support specifying 'pdb_ldap' during configure step. This should make transition to pdb_ldapsam transparent to distributions. Reviewed-by: Andreas Schneider --- source3/wscript | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/source3/wscript b/source3/wscript index 34fccb1..194d712 100644 --- a/source3/wscript +++ b/source3/wscript @@ -1745,6 +1745,19 @@ main() { explicit_shared_modules = TO_LIST(Options.options.shared_modules, delimiter=',') explicit_static_modules = TO_LIST(Options.options.static_modules, delimiter=',') + def replace_list_item(lst, item, value): + try: + idx = lst.index(item) + lst[idx] = value + except: + pass + # PDB module file name should have the same name as module registers itself + # In Autoconf build we export LDAP passdb module as ldapsam but WAF build + # was always exporting pdb_ldap. In order to support existing packages + # allow referring to pdb_ldapsam as pdb_ldap but use proper name internally. + replace_list_item(explicit_shared_modules, 'pdb_ldap', 'pdb_ldapsam') + replace_list_item(explicit_static_modules, 'pdb_ldap', 'pdb_ldapsam') + final_static_modules = default_static_modules final_shared_modules = default_shared_modules -- 1.8.1.2 From 2b070b226926798fc544f6867721f57a5ec7075c Mon Sep 17 00:00:00 2001 From: Alexander Bokovoy Date: Wed, 6 Feb 2013 12:22:12 +0200 Subject: [PATCH 3/3] autoconf: rename pdb_ldap module to pdb_ldapsam Reviewed-by: Andreas Schneider Autobuild-User(master): Alexander Bokovoy Autobuild-Date(master): Wed Feb 6 13:32:53 CET 2013 on sn-devel-104 --- source3/configure.in | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/source3/configure.in b/source3/configure.in index d0c2a48..a4e0763 100644 --- a/source3/configure.in +++ b/source3/configure.in @@ -3276,7 +3276,7 @@ if test x"$with_ldap_support" != x"no"; then if test x"$ac_cv_lib_ext_ldap_ldap_init" = x"yes"; then AC_DEFINE(HAVE_LDAP,1,[Whether ldap is available]) CPPFLAGS="$CPPFLAGS -DLDAP_DEPRECATED" - default_static_modules="$default_static_modules pdb_ldap idmap_ldap"; + default_static_modules="$default_static_modules pdb_ldapsam idmap_ldap"; default_shared_modules="$default_shared_modules"; SMBLDAP="lib/smbldap.o" with_ldap_support=yes @@ -6353,13 +6353,18 @@ AC_ARG_WITH(shared-modules, done fi ]) +# additionally, support pdb_ldap -> pdb_ldapsam replacement +if test x"$MODULE_pdb_ldap" != x ; then + MODULE_pdb_ldapsam="$MODULE_pdb_ldap" +fi + if test x"$MODULE_DEFAULT_vfs_notify_fam" = xSTATIC -o \ x"$MODULE_vfs_notify_fam" = xSTATIC ; then SMBD_FAM_LIBS="$SMB_FAM_LIBS" AC_SUBST(SMBD_FAM_LIBS) fi -SMB_MODULE(pdb_ldap, passdb/pdb_ldap.o passdb/pdb_nds.o passdb/pdb_ipa.o passdb/pdb_ldap_util.o, +SMB_MODULE(pdb_ldapsam, passdb/pdb_ldap.o passdb/pdb_nds.o passdb/pdb_ipa.o passdb/pdb_ldap_util.o, "bin/ldapsam.$SHLIBEXT", PDB, [ PASSDB_LIBS="$PASSDB_LIBS $LDAP_LIBS" ] ) SMB_MODULE(pdb_smbpasswd, passdb/pdb_smbpasswd.o, "bin/smbpasswd.$SHLIBEXT", PDB) -- 1.8.1.2