On Mon, May 11, 2015 at 09:12:38AM +0200, Lukas Slebodnik wrote: > On (06/05/15 16:25), Sumit Bose wrote: > >Hi, > > > >with Samba-4.2.x libwbclient has a new interface version because new > >calls were added which have an opaque context as an argument to allow > >threaded applications to send multiple requests to winbind in parallel. > > > >This patch adds the new interface but so far does not implement any calls. > > > >We have a similar issue in SSSD, all applications either single all > >multi-threaded use a single file-descriptor to talk to the SSSD > >responders and the requests are serialized. Originally the only clients > >were the NSS and PAM client code where there was no way around it > >because the PAM and NSS interface do not provide a way to pass a > >thread-local context. > > > >Nowadays there are applications like 389ds running on a FreeIPA server > >which want to get data exclusively from SSSD which can use more enhanced > >interface. So I think it would make sense to consider an enhancement to > >the low-level client communication code similar to the changes done in > >Samba so that threads can get an individual file-descriptors to talk to > >the responders. When this is done the new context aware libwbclient > >calls can be implemented (as long as it is possible). > > > >bye, > >Sumit > > >From 137f33cdb7429ec4aeafd8ca4856bc1527e30443 Mon Sep 17 00:00:00 2001 > >From: Sumit Bose <[email protected]> > >Date: Wed, 6 May 2015 13:07:54 +0200 > >Subject: [PATCH] libwbclient-sssd: update interface to version 0.12 > > > >This patch adds the new interface version 0.12 to libwbclient-sssd. The > >old version can still be generated with the --with-libwbclient-011 > >configure option. > > > >This patch does not add an implementation of the new calls because first > >the SSSD client code has to be made thread friendly similar to Samba's > >libwbclient. > >--- > > Makefile.am | 30 +- > > configure.ac | 1 + > > src/conf_macros.m4 | 26 + > > src/sss_client/libwbclient/wbc_ctx_sssd.c | 396 ++++++++++ > > .../{wbclient.exports => wbclient-0.11.exports} | 4 +- > > src/sss_client/libwbclient/wbclient.exports | 62 +- > > .../{wbclient_sssd.h => wbclient_sssd-0.11.h} | 0 > > src/sss_client/libwbclient/wbclient_sssd.h | 853 > > ++++++++++++++++++--- > > src/sss_client/libwbclient/wbclient_sssd.pc.in | 2 +- > > 9 files changed, 1267 insertions(+), 107 deletions(-) > > create mode 100644 src/sss_client/libwbclient/wbc_ctx_sssd.c > > copy src/sss_client/libwbclient/{wbclient.exports => wbclient-0.11.exports} > > (98%) > > copy src/sss_client/libwbclient/{wbclient_sssd.h => wbclient_sssd-0.11.h} > > (100%) > > > >diff --git a/Makefile.am b/Makefile.am > >index > >0aad222c1276b76607ec2d0e5c6b411d3b17b0a7..ce83e2ecd9151179e05ad37cbfe5aee86d384741 > > 100644 > >--- a/Makefile.am > >+++ b/Makefile.am > >@@ -887,7 +887,10 @@ libwbclient_LTLIBRARIES = libwbclient.la > > pkgconfig_DATA += src/sss_client/libwbclient/wbclient_sssd.pc > > > > EXTRA_libwbclient_la_DEPENDENCIES = \ > >- src/sss_client/libwbclient/wbclient.exports > >+ src/sss_client/libwbclient/wbclient.exports \ > >+ src/sss_client/libwbclient/wbclient-0.11.exports \ > >+ $(NULL) > >+ > > libwbclient_la_SOURCES = \ > > src/sss_client/libwbclient/wbc_guid.c \ > > src/sss_client/libwbclient/wbc_idmap_common.c \ > >@@ -900,17 +903,34 @@ libwbclient_la_SOURCES = \ > > src/sss_client/libwbclient/wbc_sid_sssd.c \ > > src/sss_client/libwbclient/wbc_sssd_internal.h \ > > src/sss_client/libwbclient/wbc_util_common.c \ > >- src/sss_client/libwbclient/wbc_util_sssd.c > >+ src/sss_client/libwbclient/wbc_util_sssd.c \ > >+ src/sss_client/libwbclient/wbc_ctx_sssd.c \ > >+ $(NULL) > > libwbclient_la_LIBADD = \ > > libsss_nss_idmap.la \ > >- $(CLIENT_LIBS) > >+ $(CLIENT_LIBS) \ > >+ $(NULL) > >+ > >+if BUILD_LIBWBCLIENT_011 > > libwbclient_la_LDFLAGS = \ > >- > >-Wl,--version-script,$(srcdir)/src/sss_client/libwbclient/wbclient.exports \ > >+ > >-Wl,--version-script,$(srcdir)/src/sss_client/libwbclient/wbclient-0.11.exports > > \ > > -version-info 11:0:11 > > > >-dist_noinst_DATA += src/sss_client/libwbclient/wbclient.exports > >+include_HEADERS += src/sss_client/libwbclient/wbclient_sssd-0.11.h > >+dist_noinst_HEADERS += src/sss_client/libwbclient/wbclient_sssd.h > >+else #BUILD_LIBWBCLIENT_011 > >+libwbclient_la_LDFLAGS = \ > >+ > >-Wl,--version-script,$(srcdir)/src/sss_client/libwbclient/wbclient.exports \ > >+ -version-info 12:0:12 > > > > include_HEADERS += src/sss_client/libwbclient/wbclient_sssd.h > >+dist_noinst_HEADERS += src/sss_client/libwbclient/wbclient_sssd-0.11.h > >+endif > >+ > >+dist_noinst_DATA += src/sss_client/libwbclient/wbclient.exports \ > >+ src/sss_client/libwbclient/wbclient-0.11.exports \ > >+ $(NULL) > >+ > > endif #BUILD_LIBWBCLIENT > > > > if BUILD_IFP > >diff --git a/configure.ac b/configure.ac > >index > >1f9c6f86772890bb0e269287d58aa6ea46e59ee1..15b421515aab4dc6e9f5a9e29670bdbe76313e0c > > 100644 > >--- a/configure.ac > >+++ b/configure.ac > >@@ -137,6 +137,7 @@ WITH_SAMBA > > WITH_NFS > > WITH_NFS_LIB_PATH > > WITH_LIBWBCLIENT > >+WITH_LIBWBCLIENT_011 > > WITH_SSSD_USER > > > > m4_include([src/external/pkg.m4]) > >diff --git a/src/conf_macros.m4 b/src/conf_macros.m4 > >index > >9ed0a4c44c209e88fc896d0cd3040cb572b358c9..728da445282d76d4048ef2a105b45954a961cbdb > > 100644 > >--- a/src/conf_macros.m4 > >+++ b/src/conf_macros.m4 > >@@ -698,10 +698,36 @@ AC_DEFUN([WITH_LIBWBCLIENT], > > > > if test x"$with_libwbclient" = xyes; then > > AC_DEFINE(BUILD_LIBWBCLIENT, 1, [whether to build SSSD > > implementation of libwbclient]) > >+ > >+ libwbclient_version="0.12" > >+ AC_SUBST(libwbclient_version) > > fi > > AM_CONDITIONAL([BUILD_LIBWBCLIENT], [test x"$with_libwbclient" = xyes]) > >+ AM_CONDITIONAL([BUILD_LIBWBCLIENT_011], [test x = y]) > > ]) > > > >+AC_DEFUN([WITH_LIBWBCLIENT_011], > >+ [ AC_ARG_WITH([libwbclient_011], > >+ [AC_HELP_STRING([--with-libwbclient-0.11], > >+ [Whether to build version 0.11 of SSSD > >implementation of libwbclient [no]] > >+ ) > >+ ], > >+ [with_libwbclient_011=$withval], > >+ with_libwbclient_011=no > >+ ) > >+ > >+ if test x"$with_libwbclient_011" = xyes; then > >+ AC_DEFINE(BUILD_LIBWBCLIENT, 1, [whether to build SSSD > >implementation of libwbclient]) > >+ AC_DEFINE(BUILD_LIBWBCLIENT_011, 1, [whether to build version 0.11 > >of SSSD implementation of libwbclient]) > >+ > >+ libwbclient_version="0.11" > >+ AC_SUBST(libwbclient_version) > >+ fi > >+ AM_CONDITIONAL([BUILD_LIBWBCLIENT], [test x"$with_libwbclient" = xyes]) > >+ AM_CONDITIONAL([BUILD_LIBWBCLIENT_011], [test x"$with_libwbclient_011" > >= xyes]) > >+ ]) > >+ > >+ > > I would prefer to keep it simple. > > libwbclient.so.0.12 is backward compatible with libwbclient.so.0.11. > Just new functions were added. > > It means that each program which was compiled with libwbclient.so.0.11 will > work with libwbclient.so.0.12 as well. We needn't complicate our life with two > versions of libwbclient.
In general I agree. But my intend was to make it easy for distributions and other integrators to build and use libwbclient-sssd for older samba versions using 0.11 without irritating the users. So I would prefer to do it this way for a start and try to get some experience and feedback if it is needed by other and switch to a different scheme later, because I agree that was cannot do this for ever. bye, Sumit > We would need to do it in case of soname bump libwbclient.so.1.0 > > BTW. Functions from version 0.11 are not used by samba either > > [root@7d9680173b99 /]# rpm -q --requires samba-winbind | grep -i wbclient > [root@7d9680173b99 /]# rpm -q --requires samba-winbind-modules | grep -i > wbclient > libwbclient = 2:4.2.1-7.fc23 > libwbclient.so.0()(64bit) > libwbclient.so.0(WBCLIENT_0.9)(64bit) > [root@7d9680173b99 /]# rpm -q --requires samba-winbind-clients | grep -i > wbclient > libwbclient = 2:4.2.1-7.fc23 > libwbclient.so.0()(64bit) > libwbclient.so.0(WBCLIENT_0.10)(64bit) > libwbclient.so.0(WBCLIENT_0.9)(64bit) > > [root@7d9680173b99 /]# objdump -p > /usr/lib64/sssd/modules/libwbclient.so.0.11.0 | grep -A7 "Version > definitions:" > Version definitions: > 1 0x01 0x08faa220 libwbclient.so.0 > 2 0x00 0x0d90a3c9 WBCLIENT_0.9 > 3 0x00 0x090a3c90 WBCLIENT_0.10 > WBCLIENT_0.9 > 4 0x00 0x090a3c91 WBCLIENT_0.11 > > Version References: > [root@7d9680173b99 /]# objdump -p > /usr/lib64/samba/wbclient/libwbclient.so.0.12 | grep -A9 "Version > definitions:" > Version definitions: > 1 0x01 0x08faa220 libwbclient.so.0 > 2 0x00 0x0d90a3c9 WBCLIENT_0.9 > 3 0x00 0x090a3c90 WBCLIENT_0.10 > WBCLIENT_0.9 > 4 0x02 0x090a3c91 WBCLIENT_0.11 > WBCLIENT_0.10 > 5 0x00 0x090a3c92 WBCLIENT_0.12 > > Version References: > > LS > _______________________________________________ > sssd-devel mailing list > [email protected] > https://lists.fedorahosted.org/mailman/listinfo/sssd-devel _______________________________________________ sssd-devel mailing list [email protected] https://lists.fedorahosted.org/mailman/listinfo/sssd-devel
