diff options
author | Petr Cech <pcech@redhat.com> | 2016-05-02 09:55:47 -0400 |
---|---|---|
committer | Lukas Slebodnik <lslebodn@redhat.com> | 2016-05-11 13:42:58 +0200 |
commit | 56c9f8731173eae841a05f31bb03d311076a8485 (patch) | |
tree | d944d85ee9544b2c8adebfbaa98a8f01a84faa13 /src | |
parent | 4f87f99f95891ebc0814e4566fa2defb4359b008 (diff) | |
download | sssd-56c9f8731173eae841a05f31bb03d311076a8485.tar.gz sssd-56c9f8731173eae841a05f31bb03d311076a8485.tar.xz sssd-56c9f8731173eae841a05f31bb03d311076a8485.zip |
RESPONDERS: Negcache in resp_ctx preparing
Preparation for initialization of negative cache in common responder.
Reviewed-by: Pavel Březina <pbrezina@redhat.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/responder/common/responder.h | 2 | ||||
-rw-r--r-- | src/responder/common/responder_common.c | 47 | ||||
-rw-r--r-- | src/tests/cmocka/common_mock_resp.c | 6 | ||||
-rw-r--r-- | src/tests/cmocka/test_responder_common.c | 34 | ||||
-rw-r--r-- | src/tests/cwrap/Makefile.am | 1 |
5 files changed, 79 insertions, 11 deletions
diff --git a/src/responder/common/responder.h b/src/responder/common/responder.h index 56ff2b3ec..d3f5c8d94 100644 --- a/src/responder/common/responder.h +++ b/src/responder/common/responder.h @@ -92,6 +92,8 @@ struct resp_ctx { const char *sock_name; const char *priv_sock_name; + struct sss_nc_ctx *ncache; + struct sbus_connection *mon_conn; struct be_conn *be_conns; diff --git a/src/responder/common/responder_common.c b/src/responder/common/responder_common.c index 639356749..4f620f7d9 100644 --- a/src/responder/common/responder_common.c +++ b/src/responder/common/responder_common.c @@ -756,6 +756,47 @@ static int sss_responder_ctx_destructor(void *ptr) return 0; } +static errno_t responder_init_ncache(TALLOC_CTX *mem_ctx, + struct confdb_ctx *cdb, + struct sss_nc_ctx **ncache) +{ + uint32_t neg_timeout; + int tmp_value; + int ret; + + /* neg_timeout */ + ret = confdb_get_int(cdb, CONFDB_NSS_CONF_ENTRY, + CONFDB_NSS_ENTRY_NEG_TIMEOUT, + 15, &tmp_value); + if (ret != EOK) { + DEBUG(SSSDBG_FATAL_FAILURE, + "Fatal failure of setup negative cache timeout.\n"); + ret = ENOENT; + goto done; + } + + if (tmp_value < 0) { + ret = EINVAL; + goto done; + } + + neg_timeout = tmp_value; + ret = EOK; + + /* negative cache init */ + ret = sss_ncache_init(mem_ctx, neg_timeout, ncache); + if (ret != EOK) { + DEBUG(SSSDBG_FATAL_FAILURE, + "Fatal failure of initializing negative cache.\n"); + goto done; + } + + ret = EOK; + +done: + return ret; +} + int sss_process_init(TALLOC_CTX *mem_ctx, struct tevent_context *ev, struct confdb_ctx *cdb, @@ -913,6 +954,12 @@ int sss_process_init(TALLOC_CTX *mem_ctx, goto fail; } + ret = responder_init_ncache(rctx, rctx->cdb, &rctx->ncache); + if (ret != EOK) { + DEBUG(SSSDBG_CRIT_FAILURE, "fatal error initializing negcache\n"); + goto fail; + } + DEBUG(SSSDBG_TRACE_FUNC, "Responder Initialization complete\n"); *responder_ctx = rctx; diff --git a/src/tests/cmocka/common_mock_resp.c b/src/tests/cmocka/common_mock_resp.c index 767d4d7e1..8bcf18b80 100644 --- a/src/tests/cmocka/common_mock_resp.c +++ b/src/tests/cmocka/common_mock_resp.c @@ -42,6 +42,12 @@ mock_rctx(TALLOC_CTX *mem_ctx, return NULL; } + ret = sss_ncache_init(rctx, 10, &rctx->ncache); + if (ret != EOK) { + talloc_free(rctx); + return NULL; + } + rctx->ev = ev; rctx->domains = domains; rctx->pvt_ctx = pvt_ctx; diff --git a/src/tests/cmocka/test_responder_common.c b/src/tests/cmocka/test_responder_common.c index 48e0e91a3..b25f8a8ef 100644 --- a/src/tests/cmocka/test_responder_common.c +++ b/src/tests/cmocka/test_responder_common.c @@ -35,16 +35,28 @@ #define NAME "username" +/* register_cli_protocol_version is required in test since it links with + * responder_common.c module + */ +struct cli_protocol_version *register_cli_protocol_version(void) +{ + static struct cli_protocol_version responder_test_cli_protocol_version[] = { + { 0, NULL, NULL } + }; + + return responder_test_cli_protocol_version; +} + static void mock_sss_dp_done(struct tevent_context *ev, struct tevent_immediate *imm, void *pvt); errno_t -sss_dp_issue_request(TALLOC_CTX *mem_ctx, struct resp_ctx *rctx, - const char *strkey, struct sss_domain_info *dom, - dbus_msg_constructor msg_create, void *pvt, - struct tevent_req *nreq) +__wrap_sss_dp_issue_request(TALLOC_CTX *mem_ctx, struct resp_ctx *rctx, + const char *strkey, struct sss_domain_info *dom, + dbus_msg_constructor msg_create, void *pvt, + struct tevent_req *nreq) { struct tevent_immediate *imm; @@ -69,11 +81,11 @@ mock_sss_dp_done(struct tevent_context *ev, } errno_t -sss_dp_req_recv(TALLOC_CTX *mem_ctx, - struct tevent_req *sidereq, - dbus_uint16_t *dp_err, - dbus_uint32_t *dp_ret, - char **err_msg) +__wrap_sss_dp_req_recv(TALLOC_CTX *mem_ctx, + struct tevent_req *sidereq, + dbus_uint16_t *dp_err, + dbus_uint32_t *dp_ret, + char **err_msg) { return EOK; } @@ -271,8 +283,8 @@ struct sss_nc_ctx { struct parse_inp_test_ctx *pctx; }; -errno_t sss_ncache_reset_repopulate_permanent(struct resp_ctx *rctx, - struct sss_nc_ctx *dummy_ncache_ptr) +errno_t __wrap_sss_ncache_reset_repopulate_permanent(struct resp_ctx *rctx, + struct sss_nc_ctx *dummy_ncache_ptr) { test_ev_done(dummy_ncache_ptr->pctx->tctx, EOK); return EOK; diff --git a/src/tests/cwrap/Makefile.am b/src/tests/cwrap/Makefile.am index ee9970667..a5afb8c02 100644 --- a/src/tests/cwrap/Makefile.am +++ b/src/tests/cwrap/Makefile.am @@ -106,6 +106,7 @@ usertools_tests_LDADD = \ responder_common_tests_SOURCES =\ test_responder_common.c \ + ../../../src/responder/common/negcache.c \ ../../../src/responder/common/responder_common.c \ ../../../src/responder/common/responder_packet.c \ ../../../src/responder/common/responder_cmd.c \ |