summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/conf_macros.m413
-rw-r--r--src/sss_client/common.c10
2 files changed, 23 insertions, 0 deletions
diff --git a/src/conf_macros.m4 b/src/conf_macros.m4
index df9d1ddf8..027490e52 100644
--- a/src/conf_macros.m4
+++ b/src/conf_macros.m4
@@ -708,6 +708,19 @@ AC_ARG_ENABLE([dbus-tests],
[build_dbus_tests=yes])
AM_CONDITIONAL([BUILD_DBUS_TESTS], [test x$build_dbus_tests = xyes])
+AC_ARG_ENABLE([sss-default-nss-plugin],
+ [AS_HELP_STRING([--enable-sss-default-nss-plugin],
+ [This option change standard behaviour of sss nss
+ plugin. If this option is enabled the sss nss
+ plugin will behave as it was not in
+ nsswitch.conf when sssd is not running.
+ [default=no]])],
+ [enable_sss_default_nss_plugin=$enableval],
+ [enable_sss_default_nss_plugin=no])
+AS_IF([test x$enable_sss_default_nss_plugin = xyes],
+ AC_DEFINE_UNQUOTED([NONSTANDARD_SSS_NSS_BEHAVIOUR], [1],
+ [whether to build sssd nss plugin with nonstandard glibc behaviour]))
+
AC_DEFUN([WITH_NFS],
[ AC_ARG_WITH([nfsv4-idmapd-plugin],
[AC_HELP_STRING([--with-nfsv4-idmapd-plugin],
diff --git a/src/sss_client/common.c b/src/sss_client/common.c
index ebe783aba..7c4bb7ab8 100644
--- a/src/sss_client/common.c
+++ b/src/sss_client/common.c
@@ -724,7 +724,12 @@ enum nss_status sss_nss_make_request(enum sss_cli_command cmd,
ret = sss_cli_check_socket(errnop, SSS_NSS_SOCKET_NAME);
if (ret != SSS_STATUS_SUCCESS) {
+#ifdef NONSTANDARD_SSS_NSS_BEHAVIOUR
+ errno = 0;
+ return NSS_STATUS_NOTFOUND;
+#else
return NSS_STATUS_UNAVAIL;
+#endif
}
ret = sss_cli_make_request_nochecks(cmd, rd, repbuf, replen, errnop);
@@ -735,7 +740,12 @@ enum nss_status sss_nss_make_request(enum sss_cli_command cmd,
return NSS_STATUS_SUCCESS;
case SSS_STATUS_UNAVAIL:
default:
+#ifdef NONSTANDARD_SSS_NSS_BEHAVIOUR
+ errno = 0;
+ return NSS_STATUS_NOTFOUND;
+#else
return NSS_STATUS_UNAVAIL;
+#endif
}
}