summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichal Židek <mzidek@redhat.com>2017-10-19 16:39:27 +0200
committerJakub Hrozek <jhrozek@redhat.com>2017-10-24 15:13:15 +0200
commit878b0d42aca5839fdc1d97a68ce181e280f1ed7b (patch)
tree926c8465059da1d7569a2a348697bf6a74e075e8
parent90503ff5aa1b2ba9f265ec5f9526539c9c377ca7 (diff)
downloadsssd-878b0d42aca5839fdc1d97a68ce181e280f1ed7b.tar.gz
sssd-878b0d42aca5839fdc1d97a68ce181e280f1ed7b.tar.xz
sssd-878b0d42aca5839fdc1d97a68ce181e280f1ed7b.zip
NSS: Move memcache setup to separate function
Related: https://pagure.io/SSSD/sssd/issue/3496 Reviewed-by: Sumit Bose <sbose@redhat.com> Reviewed-by: Pavel Březina <pbrezina@redhat.com> Reviewed-by: Fabiano Fidêncio <fidencio@redhat.com> Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
-rw-r--r--src/responder/nss/nsssrv.c91
1 files changed, 51 insertions, 40 deletions
diff --git a/src/responder/nss/nsssrv.c b/src/responder/nss/nsssrv.c
index d67b9fac8..21dd19822 100644
--- a/src/responder/nss/nsssrv.c
+++ b/src/responder/nss/nsssrv.c
@@ -252,6 +252,56 @@ static void nss_dp_reconnect_init(struct sbus_connection *conn,
/* nss_shutdown(rctx); */
}
+static int setup_memcaches(struct nss_ctx *nctx)
+{
+ int ret;
+ int memcache_timeout;
+
+ /* Remove the CLEAR_MC_FLAG file if exists. */
+ ret = unlink(SSS_NSS_MCACHE_DIR"/"CLEAR_MC_FLAG);
+ if (ret != 0 && errno != ENOENT) {
+ ret = errno;
+ DEBUG(SSSDBG_CRIT_FAILURE,
+ "Failed to unlink file [%s]. This can cause memory cache to "
+ "be purged when next log rotation is requested. %d: %s\n",
+ SSS_NSS_MCACHE_DIR"/"CLEAR_MC_FLAG, ret, strerror(ret));
+ }
+
+ ret = confdb_get_int(nctx->rctx->cdb,
+ CONFDB_NSS_CONF_ENTRY,
+ CONFDB_MEMCACHE_TIMEOUT,
+ 300, &memcache_timeout);
+ if (ret != EOK) {
+ DEBUG(SSSDBG_FATAL_FAILURE,
+ "Failed to get 'memcache_timeout' option from confdb.\n");
+ return ret;
+ }
+
+ /* TODO: read cache sizes from configuration */
+ ret = sss_mmap_cache_init(nctx, "passwd", SSS_MC_PASSWD,
+ SSS_MC_CACHE_ELEMENTS, (time_t)memcache_timeout,
+ &nctx->pwd_mc_ctx);
+ if (ret) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "passwd mmap cache is DISABLED\n");
+ }
+
+ ret = sss_mmap_cache_init(nctx, "group", SSS_MC_GROUP,
+ SSS_MC_CACHE_ELEMENTS, (time_t)memcache_timeout,
+ &nctx->grp_mc_ctx);
+ if (ret) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "group mmap cache is DISABLED\n");
+ }
+
+ ret = sss_mmap_cache_init(nctx, "initgroups", SSS_MC_INITGROUPS,
+ SSS_MC_CACHE_ELEMENTS, (time_t)memcache_timeout,
+ &nctx->initgr_mc_ctx);
+ if (ret) {
+ DEBUG(SSSDBG_CRIT_FAILURE, "initgroups mmap cache is DISABLED\n");
+ }
+
+ return EOK;
+}
+
int nss_process_init(TALLOC_CTX *mem_ctx,
struct tevent_context *ev,
struct confdb_ctx *cdb)
@@ -260,7 +310,6 @@ int nss_process_init(TALLOC_CTX *mem_ctx,
struct sss_cmd_table *nss_cmds;
struct be_conn *iter;
struct nss_ctx *nctx;
- int memcache_timeout;
int ret, max_retries;
enum idmap_error_code err;
int fd_limit;
@@ -330,49 +379,11 @@ int nss_process_init(TALLOC_CTX *mem_ctx,
goto fail;
}
- /* create mmap caches */
- /* Remove the CLEAR_MC_FLAG file if exists. */
- ret = unlink(SSS_NSS_MCACHE_DIR"/"CLEAR_MC_FLAG);
- if (ret != 0 && errno != ENOENT) {
- ret = errno;
- DEBUG(SSSDBG_CRIT_FAILURE,
- "Failed to unlink file [%s]. This can cause memory cache to "
- "be purged when next log rotation is requested. %d: %s\n",
- SSS_NSS_MCACHE_DIR"/"CLEAR_MC_FLAG, ret, strerror(ret));
- }
-
- ret = confdb_get_int(nctx->rctx->cdb,
- CONFDB_NSS_CONF_ENTRY,
- CONFDB_MEMCACHE_TIMEOUT,
- 300, &memcache_timeout);
+ ret = setup_memcaches(nctx);
if (ret != EOK) {
- DEBUG(SSSDBG_FATAL_FAILURE,
- "Failed to get 'memcache_timeout' option from confdb.\n");
goto fail;
}
- /* TODO: read cache sizes from configuration */
- ret = sss_mmap_cache_init(nctx, "passwd", SSS_MC_PASSWD,
- SSS_MC_CACHE_ELEMENTS, (time_t)memcache_timeout,
- &nctx->pwd_mc_ctx);
- if (ret) {
- DEBUG(SSSDBG_CRIT_FAILURE, "passwd mmap cache is DISABLED\n");
- }
-
- ret = sss_mmap_cache_init(nctx, "group", SSS_MC_GROUP,
- SSS_MC_CACHE_ELEMENTS, (time_t)memcache_timeout,
- &nctx->grp_mc_ctx);
- if (ret) {
- DEBUG(SSSDBG_CRIT_FAILURE, "group mmap cache is DISABLED\n");
- }
-
- ret = sss_mmap_cache_init(nctx, "initgroups", SSS_MC_INITGROUPS,
- SSS_MC_CACHE_ELEMENTS, (time_t)memcache_timeout,
- &nctx->initgr_mc_ctx);
- if (ret) {
- DEBUG(SSSDBG_CRIT_FAILURE, "initgroups mmap cache is DISABLED\n");
- }
-
/* Set up file descriptor limits */
ret = confdb_get_int(nctx->rctx->cdb,
CONFDB_NSS_CONF_ENTRY,