summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJakub Hrozek <jhrozek@redhat.com>2014-01-28 13:59:44 +0100
committerJakub Hrozek <jhrozek@redhat.com>2014-01-29 17:27:55 +0100
commit8c127026dccada5b00b84829236914219b538f22 (patch)
treedff9f9768ae3ffb66ee12711c63c52617b3e8b80 /src
parentc5ae054095bed216cb70f3b929b3ac5497bc260a (diff)
downloadsssd-8c127026dccada5b00b84829236914219b538f22.tar.gz
sssd-8c127026dccada5b00b84829236914219b538f22.tar.xz
sssd-8c127026dccada5b00b84829236914219b538f22.zip
AD: Enumerate users from GC, other entities from LDAP
Diffstat (limited to 'src')
-rw-r--r--src/providers/ad/ad_id.c20
1 files changed, 17 insertions, 3 deletions
diff --git a/src/providers/ad/ad_id.c b/src/providers/ad/ad_id.c
index 99383c13b..a47aa4f75 100644
--- a/src/providers/ad/ad_id.c
+++ b/src/providers/ad/ad_id.c
@@ -526,6 +526,7 @@ ad_enumeration_master_done(struct tevent_req *subreq)
char *flat_name;
char *master_sid;
char *forest;
+ struct sdap_id_conn_ctx *user_conn;
ret = ad_master_domain_recv(subreq, state,
&flat_name, &master_sid, &forest);
@@ -544,8 +545,21 @@ ad_enumeration_master_done(struct tevent_req *subreq)
return;
}
- subreq = sdap_dom_enum_send(state, state->ev, state->id_ctx->sdap_id_ctx,
- state->sdom, state->id_ctx->ldap_ctx);
+ if (dp_opt_get_bool(state->id_ctx->ad_options->basic, AD_ENABLE_GC)) {
+ user_conn = state->id_ctx->gc_ctx;
+ } else {
+ user_conn = state->id_ctx->ldap_ctx;
+ }
+
+ /* Groups are searched for in LDAP, users in GC. Services (if present,
+ * which is unlikely in AD) from LDAP as well
+ */
+ subreq = sdap_dom_enum_ex_send(state, state->ev,
+ state->id_ctx->sdap_id_ctx,
+ state->sdom,
+ user_conn, /* Users */
+ state->id_ctx->ldap_ctx, /* Groups */
+ state->id_ctx->ldap_ctx); /* Services */
if (subreq == NULL) {
/* The ptask API will reschedule the enumeration on its own on
* failure */
@@ -566,7 +580,7 @@ ad_enumeration_done(struct tevent_req *subreq)
struct ad_enumeration_state *state = tevent_req_data(req,
struct ad_enumeration_state);
- ret = sdap_dom_enum_recv(subreq);
+ ret = sdap_dom_enum_ex_recv(subreq);
talloc_zfree(subreq);
if (ret != EOK) {
DEBUG(SSSDBG_OP_FAILURE,