diff options
-rw-r--r-- | Makefile.am | 6 | ||||
-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 |
6 files changed, 83 insertions, 13 deletions
diff --git a/Makefile.am b/Makefile.am index d23913b0f..390e58938 100644 --- a/Makefile.am +++ b/Makefile.am @@ -1799,6 +1799,7 @@ sss_idmap_tests_LDADD = \ responder_socket_access_tests_SOURCES = \ src/tests/responder_socket_access-tests.c \ + src/responder/common/negcache.c \ src/responder/common/responder_common.c \ src/responder/common/responder_packet.c \ src/responder/common/responder_cmd.c @@ -1974,13 +1975,14 @@ pam_srv_tests_LDADD = \ EXTRA_responder_get_domains_tests_DEPENDENCIES = \ $(ldblib_LTLIBRARIES) responder_get_domains_tests_SOURCES = \ - src/responder/common/responder_get_domains.c \ + $(SSSD_RESPONDER_OBJ) \ src/tests/cmocka/test_responder_common.c \ src/tests/cmocka/common_mock_resp.c responder_get_domains_tests_CFLAGS = \ $(AM_CFLAGS) responder_get_domains_tests_LDFLAGS = \ - -Wl,-wrap,sss_parse_name_for_domains + -Wl,-wrap,sss_parse_name_for_domains \ + -Wl,-wrap,sss_ncache_reset_repopulate_permanent responder_get_domains_tests_LDADD = \ $(CMOCKA_LIBS) \ $(SSSD_LIBS) \ 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 \ |