diff options
author | Sumit Bose <sbose@redhat.com> | 2016-07-12 17:09:00 +0200 |
---|---|---|
committer | Lukas Slebodnik <lslebodn@redhat.com> | 2016-11-08 08:33:20 +0100 |
commit | 3bea6818a3432a349a9901a84fd517c052b19f69 (patch) | |
tree | 4f0a7f6cb8e8dba34afa4877a10e17d7c7fbd00b | |
parent | 27e38ce07c3f2bb9682e2219ac2ac78e855d43b5 (diff) | |
download | sssd-3bea6818a3432a349a9901a84fd517c052b19f69.tar.gz sssd-3bea6818a3432a349a9901a84fd517c052b19f69.tar.xz sssd-3bea6818a3432a349a9901a84fd517c052b19f69.zip |
IPA: make ipa_resolve_user_list_{send|recv} public and allow AD users
Reviewed-by: Jakub Hrozek <jhrozek@redhat.com>
(cherry picked from commit f2e8a7c3230fac11175c0bd17c14c66a8e9b25ad)
-rw-r--r-- | src/providers/ipa/ipa_id.c | 21 | ||||
-rw-r--r-- | src/providers/ipa/ipa_id.h | 9 |
2 files changed, 25 insertions, 5 deletions
diff --git a/src/providers/ipa/ipa_id.c b/src/providers/ipa/ipa_id.c index dff4b2358..c79dca6dc 100644 --- a/src/providers/ipa/ipa_id.c +++ b/src/providers/ipa/ipa_id.c @@ -190,7 +190,7 @@ struct ipa_resolve_user_list_state { static errno_t ipa_resolve_user_list_get_user_step(struct tevent_req *req); static void ipa_resolve_user_list_get_user_done(struct tevent_req *subreq); -static struct tevent_req * +struct tevent_req * ipa_resolve_user_list_send(TALLOC_CTX *memctx, struct tevent_context *ev, struct be_req *be_req, struct ipa_id_ctx *ipa_ctx, @@ -253,8 +253,14 @@ static errno_t ipa_resolve_user_list_get_user_step(struct tevent_req *req) DEBUG(SSSDBG_TRACE_ALL, "Trying to resolve user [%s].\n", ar->filter_value); - subreq = ipa_id_get_account_info_send(state, state->ev, state->ipa_ctx, - state->be_req, ar); + if (strcasecmp(state->domain_name, + state->ipa_ctx->sdap_id_ctx->be->domain->name) != 0) { + subreq = ipa_subdomain_account_send(state, state->ev, state->ipa_ctx, + state->be_req, ar); + } else { + subreq = ipa_id_get_account_info_send(state, state->ev, state->ipa_ctx, + state->be_req, ar); + } if (subreq == NULL) { DEBUG(SSSDBG_OP_FAILURE, "sdap_handle_acct_req_send failed.\n"); return ENOMEM; @@ -273,7 +279,12 @@ static void ipa_resolve_user_list_get_user_done(struct tevent_req *subreq) struct ipa_resolve_user_list_state); int ret; - ret = ipa_id_get_account_info_recv(subreq, &state->dp_error); + if (strcasecmp(state->domain_name, + state->ipa_ctx->sdap_id_ctx->be->domain->name) != 0) { + ret = ipa_subdomain_account_recv(subreq, &state->dp_error); + } else { + ret = ipa_id_get_account_info_recv(subreq, &state->dp_error); + } talloc_zfree(subreq); if (ret != EOK) { DEBUG(SSSDBG_OP_FAILURE, "sdap_handle_acct request failed: %d\n", ret); @@ -304,7 +315,7 @@ done: return; } -static int ipa_resolve_user_list_recv(struct tevent_req *req, int *dp_error) +int ipa_resolve_user_list_recv(struct tevent_req *req, int *dp_error) { struct ipa_resolve_user_list_state *state = tevent_req_data(req, struct ipa_resolve_user_list_state); diff --git a/src/providers/ipa/ipa_id.h b/src/providers/ipa/ipa_id.h index 91a941153..c9b56b3e1 100644 --- a/src/providers/ipa/ipa_id.h +++ b/src/providers/ipa/ipa_id.h @@ -120,4 +120,13 @@ ipa_initgr_get_overrides_send(TALLOC_CTX *memctx, struct ldb_message **groups, const char *groups_id_attr); int ipa_initgr_get_overrides_recv(struct tevent_req *req, int *dp_error); + +struct tevent_req * +ipa_resolve_user_list_send(TALLOC_CTX *memctx, struct tevent_context *ev, + struct be_req *be_req, + struct ipa_id_ctx *ipa_ctx, + const char *domain_name, + struct ldb_message_element *users); +int ipa_resolve_user_list_recv(struct tevent_req *req, int *dp_error); + #endif |