diff options
author | Jakub Hrozek <jhrozek@redhat.com> | 2013-06-17 18:32:53 +0200 |
---|---|---|
committer | Jakub Hrozek <jhrozek@redhat.com> | 2013-06-28 22:22:20 +0200 |
commit | ebc6ab564dc2a0a2b08c42d727fc403dde4a2dc9 (patch) | |
tree | 0d7a30b8897abf90c2ac7a965d81cbe7a20a77f2 /src/providers/ad/ad_init.c | |
parent | 7ed4988618decf0a8efa0dedd722a84d748bf868 (diff) | |
download | sssd-ebc6ab564dc2a0a2b08c42d727fc403dde4a2dc9.tar.gz sssd-ebc6ab564dc2a0a2b08c42d727fc403dde4a2dc9.tar.xz sssd-ebc6ab564dc2a0a2b08c42d727fc403dde4a2dc9.zip |
AD: decouple ad_id_ctx initialization
The IPA subdomain code will perform lookups on its own in the server
mode. For this, the AD provider must offer a way to initialize the
ad_id_ctx for external consumers.
Subtask of:
https://fedorahosted.org/sssd/ticket/1962
Diffstat (limited to 'src/providers/ad/ad_init.c')
-rw-r--r-- | src/providers/ad/ad_init.c | 30 |
1 files changed, 9 insertions, 21 deletions
diff --git a/src/providers/ad/ad_init.c b/src/providers/ad/ad_init.c index 5c6b6f5c8..5efe05e64 100644 --- a/src/providers/ad/ad_init.c +++ b/src/providers/ad/ad_init.c @@ -109,7 +109,6 @@ sssm_ad_id_init(struct be_ctx *bectx, { errno_t ret; struct ad_id_ctx *ad_ctx; - struct sdap_id_ctx *sdap_ctx; const char *hostname; const char *ad_domain; struct ad_srv_plugin_ctx *srv_ctx; @@ -128,26 +127,14 @@ sssm_ad_id_init(struct be_ctx *bectx, return EOK; } - ad_ctx = talloc_zero(ad_options, struct ad_id_ctx); + + ad_ctx = ad_id_ctx_init(ad_options, bectx); if (ad_ctx == NULL) { return ENOMEM; } - ad_ctx->ad_options = ad_options; ad_options->id_ctx = ad_ctx; - sdap_ctx = sdap_id_ctx_new(ad_options, bectx, ad_options->service->sdap); - if (sdap_ctx == NULL) { - return ENOMEM; - } - ad_ctx->sdap_id_ctx = sdap_ctx; - ad_ctx->ldap_ctx = sdap_ctx->conn; - - ad_ctx->gc_ctx = sdap_id_ctx_conn_add(sdap_ctx, ad_options->service->gc); - if (ad_ctx->gc_ctx == NULL) { - return ENOMEM; - } - - ret = ad_dyndns_init(sdap_ctx->be, ad_options); + ret = ad_dyndns_init(ad_ctx->sdap_id_ctx->be, ad_options); if (ret != EOK) { DEBUG(SSSDBG_MINOR_FAILURE, ("Failure setting up automatic DNS update\n")); @@ -165,22 +152,23 @@ sssm_ad_id_init(struct be_ctx *bectx, /* Set up various SDAP options */ ret = ad_get_id_options(ad_options, bectx->cdb, bectx->conf_path, - &sdap_ctx->opts); + &ad_ctx->sdap_id_ctx->opts); if (ret != EOK) { goto done; } - ret = sdap_id_setup_tasks(sdap_ctx); + ret = sdap_id_setup_tasks(ad_ctx->sdap_id_ctx); if (ret != EOK) { goto done; } /* Set up the ID mapping object */ - ret = sdap_idmap_init(sdap_ctx, sdap_ctx, &sdap_ctx->opts->idmap_ctx); + ret = sdap_idmap_init(ad_ctx->sdap_id_ctx, ad_ctx->sdap_id_ctx, + &ad_ctx->sdap_id_ctx->opts->idmap_ctx); if (ret != EOK) goto done; - ret = setup_tls_config(sdap_ctx->opts->basic); + ret = setup_tls_config(ad_ctx->sdap_id_ctx->opts->basic); if (ret != EOK) { DEBUG(SSSDBG_CRIT_FAILURE, ("setup_tls_config failed [%s]\n", strerror(ret))); @@ -217,7 +205,7 @@ sssm_ad_id_init(struct be_ctx *bectx, ret = be_refresh_add_cb(bectx->refresh_ctx, BE_REFRESH_TYPE_NETGROUPS, sdap_refresh_netgroups_send, sdap_refresh_netgroups_recv, - sdap_ctx); + ad_ctx->sdap_id_ctx); if (ret != EOK && ret != EEXIST) { DEBUG(SSSDBG_MINOR_FAILURE, ("Periodical refresh of netgroups " "will not work [%d]: %s\n", ret, strerror(ret))); |